git.delta.rocks / unique-network / refs/commits / 63cdcd63f549

difftreelog

merge develop

Igor Kozyrev2022-06-21parents: #0911475 #3a0da55.patch.diff
in: master

91 files changed

modified.envdiffbeforeafterboth
1RUST_TOOLCHAIN=nightly-2022-05-111RUST_TOOLCHAIN=nightly-2022-05-11
2RUST_C=1.62.0-nightly2RUST_C=1.62.0-nightly
3POLKA_VERSION=release-v0.9.223POLKA_VERSION=release-v0.9.23
4UNIQUE_BRANCH=develop4UNIQUE_BRANCH=develop
5USER=***5USER=***
6PASS=***6PASS=***
modifiedCargo.lockdiffbeforeafterboth
68source = "registry+https://github.com/rust-lang/crates.io-index"68source = "registry+https://github.com/rust-lang/crates.io-index"
69checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"69checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
70dependencies = [70dependencies = [
71 "getrandom 0.2.6",71 "getrandom 0.2.7",
72 "once_cell",72 "once_cell",
73 "version_check",73 "version_check",
74]74]
9999
100[[package]]100[[package]]
101name = "anyhow"101name = "anyhow"
102version = "1.0.57"102version = "1.0.58"
103source = "registry+https://github.com/rust-lang/crates.io-index"103source = "registry+https://github.com/rust-lang/crates.io-index"
104checksum = "08f9b8508dccb7687a1d6c4ce66b2b0ecef467c94667de27d8d7fe1f8d2a9cdc"104checksum = "bb07d2053ccdbe10e2af2995a2f116c1330396493dc1269f6a91d0ae82e19704"
105105
106[[package]]106[[package]]
107name = "approx"107name = "approx"
188188
189[[package]]189[[package]]
190name = "async-global-executor"190name = "async-global-executor"
191version = "2.1.0"191version = "2.2.0"
192source = "registry+https://github.com/rust-lang/crates.io-index"192source = "registry+https://github.com/rust-lang/crates.io-index"
193checksum = "fd8b508d585e01084059b60f06ade4cb7415cd2e4084b71dd1cb44e7d3fb9880"193checksum = "5262ed948da60dd8956c6c5aca4d4163593dddb7b32d73267c93dab7b2e98940"
194dependencies = [194dependencies = [
195 "async-channel",195 "async-channel",
196 "async-executor",196 "async-executor",
197 "async-io",197 "async-io",
198 "async-lock",198 "async-lock",
199 "blocking",199 "blocking",
200 "futures-lite",200 "futures-lite",
201 "num_cpus",
201 "once_cell",202 "once_cell",
202]203]
203204
248249
249[[package]]250[[package]]
250name = "async-std"251name = "async-std"
251version = "1.11.0"252version = "1.12.0"
252source = "registry+https://github.com/rust-lang/crates.io-index"253source = "registry+https://github.com/rust-lang/crates.io-index"
253checksum = "52580991739c5cdb36cde8b2a516371c0a3b70dda36d916cc08b82372916808c"254checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d"
254dependencies = [255dependencies = [
255 "async-attributes",256 "async-attributes",
256 "async-channel",257 "async-channel",
267 "kv-log-macro",268 "kv-log-macro",
268 "log",269 "log",
269 "memchr",270 "memchr",
270 "num_cpus",
271 "once_cell",271 "once_cell",
272 "pin-project-lite 0.2.9",272 "pin-project-lite 0.2.9",
273 "pin-utils",273 "pin-utils",
371checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1"371checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1"
372dependencies = [372dependencies = [
373 "futures-core",373 "futures-core",
374 "getrandom 0.2.6",374 "getrandom 0.2.7",
375 "instant",375 "instant",
376 "pin-project-lite 0.2.9",376 "pin-project-lite 0.2.9",
377 "rand 0.8.5",377 "rand 0.8.5",
429[[package]]429[[package]]
430name = "beefy-gadget"430name = "beefy-gadget"
431version = "4.0.0-dev"431version = "4.0.0-dev"
432source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"432source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
433dependencies = [433dependencies = [
434 "beefy-primitives",434 "beefy-primitives",
435 "fnv",435 "fnv",
436 "futures 0.3.21",436 "futures 0.3.21",
437 "futures-timer",437 "futures-timer",
438 "hex",438 "hex",
439 "log",439 "log",
440 "parity-scale-codec 3.1.2",440 "parity-scale-codec 3.1.5",
441 "parking_lot 0.12.1",441 "parking_lot 0.12.1",
442 "sc-chain-spec",442 "sc-chain-spec",
443 "sc-client-api",443 "sc-client-api",
463[[package]]463[[package]]
464name = "beefy-gadget-rpc"464name = "beefy-gadget-rpc"
465version = "4.0.0-dev"465version = "4.0.0-dev"
466source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"466source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
467dependencies = [467dependencies = [
468 "beefy-gadget",468 "beefy-gadget",
469 "beefy-primitives",469 "beefy-primitives",
470 "futures 0.3.21",470 "futures 0.3.21",
471 "jsonrpsee",471 "jsonrpsee",
472 "log",472 "log",
473 "parity-scale-codec 3.1.2",473 "parity-scale-codec 3.1.5",
474 "parking_lot 0.12.1",474 "parking_lot 0.12.1",
475 "sc-rpc",475 "sc-rpc",
476 "sc-utils",476 "sc-utils",
483[[package]]483[[package]]
484name = "beefy-merkle-tree"484name = "beefy-merkle-tree"
485version = "4.0.0-dev"485version = "4.0.0-dev"
486source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"486source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
487487
488[[package]]488[[package]]
489name = "beefy-primitives"489name = "beefy-primitives"
490version = "4.0.0-dev"490version = "4.0.0-dev"
491source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"491source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
492dependencies = [492dependencies = [
493 "parity-scale-codec 3.1.2",493 "parity-scale-codec 3.1.5",
494 "scale-info",494 "scale-info",
495 "sp-api",495 "sp-api",
496 "sp-application-crypto",496 "sp-application-crypto",
695 "bp-runtime",695 "bp-runtime",
696 "finality-grandpa",696 "finality-grandpa",
697 "frame-support",697 "frame-support",
698 "parity-scale-codec 3.1.2",698 "parity-scale-codec 3.1.5",
699 "scale-info",699 "scale-info",
700 "serde",700 "serde",
701 "sp-core",701 "sp-core",
711dependencies = [711dependencies = [
712 "bp-runtime",712 "bp-runtime",
713 "frame-support",713 "frame-support",
714 "parity-scale-codec 3.1.2",714 "parity-scale-codec 3.1.5",
715 "scale-info",715 "scale-info",
716 "sp-std",716 "sp-std",
717]717]
726 "frame-support",726 "frame-support",
727 "frame-system",727 "frame-system",
728 "impl-trait-for-tuples",728 "impl-trait-for-tuples",
729 "parity-scale-codec 3.1.2",729 "parity-scale-codec 3.1.5",
730 "scale-info",730 "scale-info",
731 "serde",731 "serde",
732 "sp-core",732 "sp-core",
742 "bp-runtime",742 "bp-runtime",
743 "frame-support",743 "frame-support",
744 "frame-system",744 "frame-system",
745 "parity-scale-codec 3.1.2",745 "parity-scale-codec 3.1.5",
746 "scale-info",746 "scale-info",
747 "sp-api",747 "sp-api",
748 "sp-core",748 "sp-core",
760 "bp-polkadot-core",760 "bp-polkadot-core",
761 "bp-runtime",761 "bp-runtime",
762 "frame-support",762 "frame-support",
763 "parity-scale-codec 3.1.2",763 "parity-scale-codec 3.1.5",
764 "smallvec",764 "smallvec",
765 "sp-api",765 "sp-api",
766 "sp-runtime",766 "sp-runtime",
776 "frame-support",776 "frame-support",
777 "hash-db",777 "hash-db",
778 "num-traits",778 "num-traits",
779 "parity-scale-codec 3.1.2",779 "parity-scale-codec 3.1.5",
780 "scale-info",780 "scale-info",
781 "sp-core",781 "sp-core",
782 "sp-io",782 "sp-io",
794 "bp-header-chain",794 "bp-header-chain",
795 "ed25519-dalek",795 "ed25519-dalek",
796 "finality-grandpa",796 "finality-grandpa",
797 "parity-scale-codec 3.1.2",797 "parity-scale-codec 3.1.5",
798 "sp-application-crypto",798 "sp-application-crypto",
799 "sp-finality-grandpa",799 "sp-finality-grandpa",
800 "sp-runtime",800 "sp-runtime",
810 "bp-polkadot-core",810 "bp-polkadot-core",
811 "bp-rococo",811 "bp-rococo",
812 "bp-runtime",812 "bp-runtime",
813 "parity-scale-codec 3.1.2",813 "parity-scale-codec 3.1.5",
814 "sp-api",814 "sp-api",
815 "sp-runtime",815 "sp-runtime",
816 "sp-std",816 "sp-std",
831 "pallet-bridge-grandpa",831 "pallet-bridge-grandpa",
832 "pallet-bridge-messages",832 "pallet-bridge-messages",
833 "pallet-transaction-payment",833 "pallet-transaction-payment",
834 "parity-scale-codec 3.1.2",834 "parity-scale-codec 3.1.5",
835 "scale-info",835 "scale-info",
836 "sp-api",836 "sp-api",
837 "sp-core",837 "sp-core",
10671067
1068[[package]]1068[[package]]
1069name = "clap"1069name = "clap"
1070version = "3.1.18"1070version = "3.2.5"
1071source = "registry+https://github.com/rust-lang/crates.io-index"1071source = "registry+https://github.com/rust-lang/crates.io-index"
1072checksum = "d2dbdf4bdacb33466e854ce889eee8dfd5729abf7ccd7664d0a2d60cd384440b"1072checksum = "d53da17d37dba964b9b3ecb5c5a1f193a2762c700e6829201e645b9381c99dc7"
1073dependencies = [1073dependencies = [
1074 "atty",1074 "atty",
1075 "bitflags",1075 "bitflags",
1076 "clap_derive",1076 "clap_derive",
1077 "clap_lex",1077 "clap_lex",
1078 "indexmap",1078 "indexmap",
1079 "lazy_static",1079 "once_cell",
1080 "strsim",1080 "strsim",
1081 "termcolor",1081 "termcolor",
1082 "textwrap",1082 "textwrap",
1083]1083]
10841084
1085[[package]]1085[[package]]
1086name = "clap_derive"1086name = "clap_derive"
1087version = "3.1.18"1087version = "3.2.5"
1088source = "registry+https://github.com/rust-lang/crates.io-index"1088source = "registry+https://github.com/rust-lang/crates.io-index"
1089checksum = "25320346e922cffe59c0bbc5410c8d8784509efb321488971081313cb1e1a33c"1089checksum = "c11d40217d16aee8508cc8e5fde8b4ff24639758608e5374e731b53f85749fb9"
1090dependencies = [1090dependencies = [
1091 "heck 0.4.0",1091 "heck 0.4.0",
1092 "proc-macro-error",1092 "proc-macro-error",
10971097
1098[[package]]1098[[package]]
1099name = "clap_lex"1099name = "clap_lex"
1100version = "0.2.0"1100version = "0.2.2"
1101source = "registry+https://github.com/rust-lang/crates.io-index"1101source = "registry+https://github.com/rust-lang/crates.io-index"
1102checksum = "a37c35f1112dad5e6e0b1adaff798507497a18fceeb30cceb3bae7d1427b9213"1102checksum = "5538cd660450ebeb4234cfecf8f2284b844ffc4c50531e66d584ad5b91293613"
1103dependencies = [1103dependencies = [
1104 "os_str_bytes",1104 "os_str_bytes",
1105]1105]
12971297
1298[[package]]1298[[package]]
1299name = "crossbeam-channel"1299name = "crossbeam-channel"
1300version = "0.5.4"1300version = "0.5.5"
1301source = "registry+https://github.com/rust-lang/crates.io-index"1301source = "registry+https://github.com/rust-lang/crates.io-index"
1302checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53"1302checksum = "4c02a4d71819009c192cf4872265391563fd6a84c81ff2c0f2a7026ca4c1d85c"
1303dependencies = [1303dependencies = [
1304 "cfg-if 1.0.0",1304 "cfg-if 1.0.0",
1305 "crossbeam-utils",1305 "crossbeam-utils",
13181318
1319[[package]]1319[[package]]
1320name = "crossbeam-epoch"1320name = "crossbeam-epoch"
1321version = "0.9.8"1321version = "0.9.9"
1322source = "registry+https://github.com/rust-lang/crates.io-index"1322source = "registry+https://github.com/rust-lang/crates.io-index"
1323checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c"1323checksum = "07db9d94cbd326813772c968ccd25999e5f8ae22f4f8d1b11effa37ef6ce281d"
1324dependencies = [1324dependencies = [
1325 "autocfg",1325 "autocfg",
1326 "cfg-if 1.0.0",1326 "cfg-if 1.0.0",
1327 "crossbeam-utils",1327 "crossbeam-utils",
1328 "lazy_static",
1329 "memoffset",1328 "memoffset",
1329 "once_cell",
1330 "scopeguard",1330 "scopeguard",
1331]1331]
13321332
13421342
1343[[package]]1343[[package]]
1344name = "crossbeam-utils"1344name = "crossbeam-utils"
1345version = "0.8.8"1345version = "0.8.9"
1346source = "registry+https://github.com/rust-lang/crates.io-index"1346source = "registry+https://github.com/rust-lang/crates.io-index"
1347checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38"1347checksum = "8ff1f980957787286a554052d03c7aee98d99cc32e09f6d45f0a814133c87978"
1348dependencies = [1348dependencies = [
1349 "cfg-if 1.0.0",1349 "cfg-if 1.0.0",
1350 "lazy_static",1350 "once_cell",
1351]1351]
13521352
1353[[package]]1353[[package]]
1431[[package]]1431[[package]]
1432name = "cumulus-client-cli"1432name = "cumulus-client-cli"
1433version = "0.1.0"1433version = "0.1.0"
1434source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1434source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
1435dependencies = [1435dependencies = [
1436 "clap",1436 "clap",
1437 "sc-cli",1437 "sc-cli",
1442[[package]]1442[[package]]
1443name = "cumulus-client-collator"1443name = "cumulus-client-collator"
1444version = "0.1.0"1444version = "0.1.0"
1445source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1445source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
1446dependencies = [1446dependencies = [
1447 "cumulus-client-consensus-common",1447 "cumulus-client-consensus-common",
1448 "cumulus-client-network",1448 "cumulus-client-network",
1449 "cumulus-primitives-core",1449 "cumulus-primitives-core",
1450 "cumulus-relay-chain-interface",1450 "cumulus-relay-chain-interface",
1451 "futures 0.3.21",1451 "futures 0.3.21",
1452 "parity-scale-codec 3.1.2",1452 "parity-scale-codec 3.1.5",
1453 "parking_lot 0.12.1",1453 "parking_lot 0.12.1",
1454 "polkadot-node-primitives",1454 "polkadot-node-primitives",
1455 "polkadot-node-subsystem",1455 "polkadot-node-subsystem",
1466[[package]]1466[[package]]
1467name = "cumulus-client-consensus-aura"1467name = "cumulus-client-consensus-aura"
1468version = "0.1.0"1468version = "0.1.0"
1469source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1469source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
1470dependencies = [1470dependencies = [
1471 "async-trait",1471 "async-trait",
1472 "cumulus-client-consensus-common",1472 "cumulus-client-consensus-common",
1473 "cumulus-primitives-core",1473 "cumulus-primitives-core",
1474 "futures 0.3.21",1474 "futures 0.3.21",
1475 "parity-scale-codec 3.1.2",1475 "parity-scale-codec 3.1.5",
1476 "sc-client-api",1476 "sc-client-api",
1477 "sc-consensus",1477 "sc-consensus",
1478 "sc-consensus-aura",1478 "sc-consensus-aura",
1495[[package]]1495[[package]]
1496name = "cumulus-client-consensus-common"1496name = "cumulus-client-consensus-common"
1497version = "0.1.0"1497version = "0.1.0"
1498source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1498source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
1499dependencies = [1499dependencies = [
1500 "async-trait",1500 "async-trait",
1501 "cumulus-relay-chain-interface",1501 "cumulus-relay-chain-interface",
1502 "dyn-clone",1502 "dyn-clone",
1503 "futures 0.3.21",1503 "futures 0.3.21",
1504 "parity-scale-codec 3.1.2",1504 "parity-scale-codec 3.1.5",
1505 "polkadot-primitives",1505 "polkadot-primitives",
1506 "sc-client-api",1506 "sc-client-api",
1507 "sc-consensus",1507 "sc-consensus",
1516[[package]]1516[[package]]
1517name = "cumulus-client-network"1517name = "cumulus-client-network"
1518version = "0.1.0"1518version = "0.1.0"
1519source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1519source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
1520dependencies = [1520dependencies = [
1521 "async-trait",1521 "async-trait",
1522 "cumulus-relay-chain-interface",1522 "cumulus-relay-chain-interface",
1523 "derive_more",1523 "derive_more",
1524 "futures 0.3.21",1524 "futures 0.3.21",
1525 "futures-timer",1525 "futures-timer",
1526 "parity-scale-codec 3.1.2",1526 "parity-scale-codec 3.1.5",
1527 "parking_lot 0.12.1",1527 "parking_lot 0.12.1",
1528 "polkadot-node-primitives",1528 "polkadot-node-primitives",
1529 "polkadot-parachain",1529 "polkadot-parachain",
1541[[package]]1541[[package]]
1542name = "cumulus-client-pov-recovery"1542name = "cumulus-client-pov-recovery"
1543version = "0.1.0"1543version = "0.1.0"
1544source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1544source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
1545dependencies = [1545dependencies = [
1546 "cumulus-primitives-core",1546 "cumulus-primitives-core",
1547 "cumulus-relay-chain-interface",1547 "cumulus-relay-chain-interface",
1548 "futures 0.3.21",1548 "futures 0.3.21",
1549 "futures-timer",1549 "futures-timer",
1550 "parity-scale-codec 3.1.2",1550 "parity-scale-codec 3.1.5",
1551 "polkadot-node-primitives",1551 "polkadot-node-primitives",
1552 "polkadot-node-subsystem",1552 "polkadot-node-subsystem",
1553 "polkadot-overseer",1553 "polkadot-overseer",
1565[[package]]1565[[package]]
1566name = "cumulus-client-service"1566name = "cumulus-client-service"
1567version = "0.1.0"1567version = "0.1.0"
1568source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1568source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
1569dependencies = [1569dependencies = [
1570 "cumulus-client-cli",1570 "cumulus-client-cli",
1571 "cumulus-client-collator",1571 "cumulus-client-collator",
1572 "cumulus-client-consensus-common",1572 "cumulus-client-consensus-common",
1573 "cumulus-client-pov-recovery",1573 "cumulus-client-pov-recovery",
1574 "cumulus-primitives-core",1574 "cumulus-primitives-core",
1575 "cumulus-relay-chain-interface",1575 "cumulus-relay-chain-interface",
1576 "parity-scale-codec 3.1.2",1576 "parity-scale-codec 3.1.5",
1577 "parking_lot 0.12.1",1577 "parking_lot 0.12.1",
1578 "polkadot-overseer",1578 "polkadot-overseer",
1579 "polkadot-primitives",1579 "polkadot-primitives",
1595[[package]]1595[[package]]
1596name = "cumulus-pallet-aura-ext"1596name = "cumulus-pallet-aura-ext"
1597version = "0.1.0"1597version = "0.1.0"
1598source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1598source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
1599dependencies = [1599dependencies = [
1600 "frame-executive",1600 "frame-executive",
1601 "frame-support",1601 "frame-support",
1602 "frame-system",1602 "frame-system",
1603 "pallet-aura",1603 "pallet-aura",
1604 "parity-scale-codec 3.1.2",1604 "parity-scale-codec 3.1.5",
1605 "scale-info",1605 "scale-info",
1606 "serde",1606 "serde",
1607 "sp-application-crypto",1607 "sp-application-crypto",
1613[[package]]1613[[package]]
1614name = "cumulus-pallet-dmp-queue"1614name = "cumulus-pallet-dmp-queue"
1615version = "0.1.0"1615version = "0.1.0"
1616source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1616source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
1617dependencies = [1617dependencies = [
1618 "cumulus-primitives-core",1618 "cumulus-primitives-core",
1619 "frame-support",1619 "frame-support",
1620 "frame-system",1620 "frame-system",
1621 "log",1621 "log",
1622 "parity-scale-codec 3.1.2",1622 "parity-scale-codec 3.1.5",
1623 "scale-info",1623 "scale-info",
1624 "sp-io",1624 "sp-io",
1625 "sp-runtime",1625 "sp-runtime",
1631[[package]]1631[[package]]
1632name = "cumulus-pallet-parachain-system"1632name = "cumulus-pallet-parachain-system"
1633version = "0.1.0"1633version = "0.1.0"
1634source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1634source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
1635dependencies = [1635dependencies = [
1636 "cumulus-pallet-parachain-system-proc-macro",1636 "cumulus-pallet-parachain-system-proc-macro",
1637 "cumulus-primitives-core",1637 "cumulus-primitives-core",
1642 "impl-trait-for-tuples",1642 "impl-trait-for-tuples",
1643 "log",1643 "log",
1644 "pallet-balances",1644 "pallet-balances",
1645 "parity-scale-codec 3.1.2",1645 "parity-scale-codec 3.1.5",
1646 "polkadot-parachain",1646 "polkadot-parachain",
1647 "scale-info",1647 "scale-info",
1648 "serde",1648 "serde",
1661[[package]]1661[[package]]
1662name = "cumulus-pallet-parachain-system-proc-macro"1662name = "cumulus-pallet-parachain-system-proc-macro"
1663version = "0.1.0"1663version = "0.1.0"
1664source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1664source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
1665dependencies = [1665dependencies = [
1666 "proc-macro-crate",1666 "proc-macro-crate",
1667 "proc-macro2",1667 "proc-macro2",
1672[[package]]1672[[package]]
1673name = "cumulus-pallet-xcm"1673name = "cumulus-pallet-xcm"
1674version = "0.1.0"1674version = "0.1.0"
1675source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1675source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
1676dependencies = [1676dependencies = [
1677 "cumulus-primitives-core",1677 "cumulus-primitives-core",
1678 "frame-support",1678 "frame-support",
1679 "frame-system",1679 "frame-system",
1680 "parity-scale-codec 3.1.2",1680 "parity-scale-codec 3.1.5",
1681 "scale-info",1681 "scale-info",
1682 "serde",1682 "serde",
1683 "sp-io",1683 "sp-io",
1689[[package]]1689[[package]]
1690name = "cumulus-pallet-xcmp-queue"1690name = "cumulus-pallet-xcmp-queue"
1691version = "0.1.0"1691version = "0.1.0"
1692source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1692source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
1693dependencies = [1693dependencies = [
1694 "cumulus-primitives-core",1694 "cumulus-primitives-core",
1695 "frame-support",1695 "frame-support",
1696 "frame-system",1696 "frame-system",
1697 "log",1697 "log",
1698 "parity-scale-codec 3.1.2",1698 "parity-scale-codec 3.1.5",
1699 "rand_chacha 0.3.1",1699 "rand_chacha 0.3.1",
1700 "scale-info",1700 "scale-info",
1701 "sp-runtime",1701 "sp-runtime",
1707[[package]]1707[[package]]
1708name = "cumulus-primitives-core"1708name = "cumulus-primitives-core"
1709version = "0.1.0"1709version = "0.1.0"
1710source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1710source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
1711dependencies = [1711dependencies = [
1712 "frame-support",1712 "frame-support",
1713 "parity-scale-codec 3.1.2",1713 "parity-scale-codec 3.1.5",
1714 "polkadot-core-primitives",1714 "polkadot-core-primitives",
1715 "polkadot-parachain",1715 "polkadot-parachain",
1716 "polkadot-primitives",1716 "polkadot-primitives",
1723[[package]]1723[[package]]
1724name = "cumulus-primitives-parachain-inherent"1724name = "cumulus-primitives-parachain-inherent"
1725version = "0.1.0"1725version = "0.1.0"
1726source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1726source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
1727dependencies = [1727dependencies = [
1728 "async-trait",1728 "async-trait",
1729 "cumulus-primitives-core",1729 "cumulus-primitives-core",
1730 "cumulus-relay-chain-interface",1730 "cumulus-relay-chain-interface",
1731 "cumulus-test-relay-sproof-builder",1731 "cumulus-test-relay-sproof-builder",
1732 "parity-scale-codec 3.1.2",1732 "parity-scale-codec 3.1.5",
1733 "sc-client-api",1733 "sc-client-api",
1734 "scale-info",1734 "scale-info",
1735 "sp-api",1735 "sp-api",
1746[[package]]1746[[package]]
1747name = "cumulus-primitives-timestamp"1747name = "cumulus-primitives-timestamp"
1748version = "0.1.0"1748version = "0.1.0"
1749source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1749source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
1750dependencies = [1750dependencies = [
1751 "cumulus-primitives-core",1751 "cumulus-primitives-core",
1752 "futures 0.3.21",1752 "futures 0.3.21",
1753 "parity-scale-codec 3.1.2",1753 "parity-scale-codec 3.1.5",
1754 "sp-inherents",1754 "sp-inherents",
1755 "sp-std",1755 "sp-std",
1756 "sp-timestamp",1756 "sp-timestamp",
1759[[package]]1759[[package]]
1760name = "cumulus-primitives-utility"1760name = "cumulus-primitives-utility"
1761version = "0.1.0"1761version = "0.1.0"
1762source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1762source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
1763dependencies = [1763dependencies = [
1764 "cumulus-primitives-core",1764 "cumulus-primitives-core",
1765 "frame-support",1765 "frame-support",
1766 "parity-scale-codec 3.1.2",1766 "parity-scale-codec 3.1.5",
1767 "polkadot-core-primitives",1767 "polkadot-core-primitives",
1768 "polkadot-parachain",1768 "polkadot-parachain",
1769 "polkadot-primitives",1769 "polkadot-primitives",
1776[[package]]1776[[package]]
1777name = "cumulus-relay-chain-inprocess-interface"1777name = "cumulus-relay-chain-inprocess-interface"
1778version = "0.1.0"1778version = "0.1.0"
1779source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1779source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
1780dependencies = [1780dependencies = [
1781 "async-trait",1781 "async-trait",
1782 "cumulus-primitives-core",1782 "cumulus-primitives-core",
1807[[package]]1807[[package]]
1808name = "cumulus-relay-chain-interface"1808name = "cumulus-relay-chain-interface"
1809version = "0.1.0"1809version = "0.1.0"
1810source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1810source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
1811dependencies = [1811dependencies = [
1812 "async-trait",1812 "async-trait",
1813 "cumulus-primitives-core",1813 "cumulus-primitives-core",
1814 "derive_more",1814 "derive_more",
1815 "futures 0.3.21",1815 "futures 0.3.21",
1816 "jsonrpsee-core",1816 "jsonrpsee-core",
1817 "parity-scale-codec 3.1.2",1817 "parity-scale-codec 3.1.5",
1818 "parking_lot 0.12.1",1818 "parking_lot 0.12.1",
1819 "polkadot-overseer",1819 "polkadot-overseer",
1820 "polkadot-service",1820 "polkadot-service",
1831[[package]]1831[[package]]
1832name = "cumulus-relay-chain-rpc-interface"1832name = "cumulus-relay-chain-rpc-interface"
1833version = "0.1.0"1833version = "0.1.0"
1834source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1834source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
1835dependencies = [1835dependencies = [
1836 "async-trait",1836 "async-trait",
1837 "backoff",1837 "backoff",
1840 "futures 0.3.21",1840 "futures 0.3.21",
1841 "futures-timer",1841 "futures-timer",
1842 "jsonrpsee",1842 "jsonrpsee",
1843 "parity-scale-codec 3.1.2",1843 "parity-scale-codec 3.1.5",
1844 "parking_lot 0.12.1",1844 "parking_lot 0.12.1",
1845 "polkadot-service",1845 "polkadot-service",
1846 "sc-client-api",1846 "sc-client-api",
1857[[package]]1857[[package]]
1858name = "cumulus-test-relay-sproof-builder"1858name = "cumulus-test-relay-sproof-builder"
1859version = "0.1.0"1859version = "0.1.0"
1860source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"1860source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
1861dependencies = [1861dependencies = [
1862 "cumulus-primitives-core",1862 "cumulus-primitives-core",
1863 "parity-scale-codec 3.1.2",1863 "parity-scale-codec 3.1.5",
1864 "polkadot-primitives",1864 "polkadot-primitives",
1865 "sp-runtime",1865 "sp-runtime",
1866 "sp-state-machine",1866 "sp-state-machine",
21152115
2116[[package]]2116[[package]]
2117name = "dyn-clone"2117name = "dyn-clone"
2118version = "1.0.5"2118version = "1.0.6"
2119source = "registry+https://github.com/rust-lang/crates.io-index"2119source = "registry+https://github.com/rust-lang/crates.io-index"
2120checksum = "21e50f3adc76d6a43f5ed73b698a87d0760ca74617f60f7c3b879003536fdd28"2120checksum = "140206b78fb2bc3edbcfc9b5ccbd0b30699cfe8d348b8b31b330e47df5291a5a"
21212121
2122[[package]]2122[[package]]
2123name = "ecdsa"2123name = "ecdsa"
2286 "ethereum-types",2286 "ethereum-types",
2287 "hash-db",2287 "hash-db",
2288 "hash256-std-hasher",2288 "hash256-std-hasher",
2289 "parity-scale-codec 3.1.2",2289 "parity-scale-codec 3.1.5",
2290 "rlp",2290 "rlp",
2291 "rlp-derive",2291 "rlp-derive",
2292 "scale-info",2292 "scale-info",
2329 "evm-gasometer",2329 "evm-gasometer",
2330 "evm-runtime",2330 "evm-runtime",
2331 "log",2331 "log",
2332 "parity-scale-codec 3.1.2",2332 "parity-scale-codec 3.1.5",
2333 "primitive-types",2333 "primitive-types",
2334 "rlp",2334 "rlp",
2335 "scale-info",2335 "scale-info",
2368version = "0.35.0"2368version = "0.35.0"
2369source = "git+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.23#e9252ed42dc26fc85b6703b1ba50660a08209e55"2369source = "git+https://github.com/uniquenetwork/evm?branch=unique-polkadot-v0.9.23#e9252ed42dc26fc85b6703b1ba50660a08209e55"
2370dependencies = [2370dependencies = [
2371 "parity-scale-codec 3.1.2",2371 "parity-scale-codec 3.1.5",
2372 "primitive-types",2372 "primitive-types",
2373 "scale-info",2373 "scale-info",
2374 "serde",2374 "serde",
2504 "fp-storage",2504 "fp-storage",
2505 "kvdb-rocksdb",2505 "kvdb-rocksdb",
2506 "parity-db",2506 "parity-db",
2507 "parity-scale-codec 3.1.2",2507 "parity-scale-codec 3.1.5",
2508 "parking_lot 0.12.1",2508 "parking_lot 0.12.1",
2509 "sc-client-db",2509 "sc-client-db",
2510 "sp-core",2510 "sp-core",
2546 "jsonrpsee",2546 "jsonrpsee",
2547 "libsecp256k1",2547 "libsecp256k1",
2548 "log",2548 "log",
2549 "lru 0.7.6",2549 "lru 0.7.7",
2550 "parity-scale-codec 3.1.2",2550 "parity-scale-codec 3.1.5",
2551 "prometheus",2551 "prometheus",
2552 "rand 0.8.5",2552 "rand 0.8.5",
2553 "rlp",2553 "rlp",
2623 "futures-timer",2623 "futures-timer",
2624 "log",2624 "log",
2625 "num-traits",2625 "num-traits",
2626 "parity-scale-codec 3.1.2",2626 "parity-scale-codec 3.1.5",
2627 "parking_lot 0.11.2",2627 "parking_lot 0.11.2",
2628 "scale-info",2628 "scale-info",
2629]2629]
2682[[package]]2682[[package]]
2683name = "fork-tree"2683name = "fork-tree"
2684version = "3.0.0"2684version = "3.0.0"
2685source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"2685source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
2686dependencies = [2686dependencies = [
2687 "parity-scale-codec 3.1.2",2687 "parity-scale-codec 3.1.5",
2688]2688]
26892689
2690[[package]]2690[[package]]
2703source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.23#29adc958b0541466d564c781aa70fb7e3ef263a2"2703source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.23#29adc958b0541466d564c781aa70fb7e3ef263a2"
2704dependencies = [2704dependencies = [
2705 "ethereum",2705 "ethereum",
2706 "parity-scale-codec 3.1.2",2706 "parity-scale-codec 3.1.5",
2707 "sp-core",2707 "sp-core",
2708 "sp-runtime",2708 "sp-runtime",
2709 "sp-std",2709 "sp-std",
2717 "evm",2717 "evm",
2718 "frame-support",2718 "frame-support",
2719 "impl-trait-for-tuples",2719 "impl-trait-for-tuples",
2720 "parity-scale-codec 3.1.2",2720 "parity-scale-codec 3.1.5",
2721 "serde",2721 "serde",
2722 "sp-core",2722 "sp-core",
2723 "sp-std",2723 "sp-std",
2740 "ethereum",2740 "ethereum",
2741 "ethereum-types",2741 "ethereum-types",
2742 "fp-evm",2742 "fp-evm",
2743 "parity-scale-codec 3.1.2",2743 "parity-scale-codec 3.1.5",
2744 "scale-info",2744 "scale-info",
2745 "sp-api",2745 "sp-api",
2746 "sp-core",2746 "sp-core",
2756dependencies = [2756dependencies = [
2757 "ethereum",2757 "ethereum",
2758 "frame-support",2758 "frame-support",
2759 "parity-scale-codec 3.1.2",2759 "parity-scale-codec 3.1.5",
2760 "parity-util-mem",2760 "parity-util-mem",
2761 "scale-info",2761 "scale-info",
2762 "serde",2762 "serde",
2770version = "2.0.0"2770version = "2.0.0"
2771source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.23#29adc958b0541466d564c781aa70fb7e3ef263a2"2771source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.23#29adc958b0541466d564c781aa70fb7e3ef263a2"
2772dependencies = [2772dependencies = [
2773 "parity-scale-codec 3.1.2",2773 "parity-scale-codec 3.1.5",
2774]2774]
27752775
2776[[package]]2776[[package]]
2777name = "frame-benchmarking"2777name = "frame-benchmarking"
2778version = "4.0.0-dev"2778version = "4.0.0-dev"
2779source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"2779source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
2780dependencies = [2780dependencies = [
2781 "frame-support",2781 "frame-support",
2782 "frame-system",2782 "frame-system",
2783 "linregress",2783 "linregress",
2784 "log",2784 "log",
2785 "parity-scale-codec 3.1.2",2785 "parity-scale-codec 3.1.5",
2786 "paste",2786 "paste",
2787 "scale-info",2787 "scale-info",
2788 "serde",2788 "serde",
2798[[package]]2798[[package]]
2799name = "frame-benchmarking-cli"2799name = "frame-benchmarking-cli"
2800version = "4.0.0-dev"2800version = "4.0.0-dev"
2801source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"2801source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
2802dependencies = [2802dependencies = [
2803 "Inflector",2803 "Inflector",
2804 "chrono",2804 "chrono",
2816 "linked-hash-map",2816 "linked-hash-map",
2817 "log",2817 "log",
2818 "memory-db",2818 "memory-db",
2819 "parity-scale-codec 3.1.2",2819 "parity-scale-codec 3.1.5",
2820 "rand 0.8.5",2820 "rand 0.8.5",
2821 "rand_pcg 0.3.1",2821 "rand_pcg 0.3.1",
2822 "sc-block-builder",2822 "sc-block-builder",
2848[[package]]2848[[package]]
2849name = "frame-election-provider-solution-type"2849name = "frame-election-provider-solution-type"
2850version = "4.0.0-dev"2850version = "4.0.0-dev"
2851source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"2851source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
2852dependencies = [2852dependencies = [
2853 "proc-macro-crate",2853 "proc-macro-crate",
2854 "proc-macro2",2854 "proc-macro2",
2859[[package]]2859[[package]]
2860name = "frame-election-provider-support"2860name = "frame-election-provider-support"
2861version = "4.0.0-dev"2861version = "4.0.0-dev"
2862source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"2862source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
2863dependencies = [2863dependencies = [
2864 "frame-election-provider-solution-type",2864 "frame-election-provider-solution-type",
2865 "frame-support",2865 "frame-support",
2866 "frame-system",2866 "frame-system",
2867 "parity-scale-codec 3.1.2",2867 "parity-scale-codec 3.1.5",
2868 "scale-info",2868 "scale-info",
2869 "sp-arithmetic",2869 "sp-arithmetic",
2870 "sp-npos-elections",2870 "sp-npos-elections",
2875[[package]]2875[[package]]
2876name = "frame-executive"2876name = "frame-executive"
2877version = "4.0.0-dev"2877version = "4.0.0-dev"
2878source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"2878source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
2879dependencies = [2879dependencies = [
2880 "frame-support",2880 "frame-support",
2881 "frame-system",2881 "frame-system",
2882 "parity-scale-codec 3.1.2",2882 "parity-scale-codec 3.1.5",
2883 "scale-info",2883 "scale-info",
2884 "sp-core",2884 "sp-core",
2885 "sp-io",2885 "sp-io",
2895checksum = "df6bb8542ef006ef0de09a5c4420787d79823c0ed7924225822362fd2bf2ff2d"2895checksum = "df6bb8542ef006ef0de09a5c4420787d79823c0ed7924225822362fd2bf2ff2d"
2896dependencies = [2896dependencies = [
2897 "cfg-if 1.0.0",2897 "cfg-if 1.0.0",
2898 "parity-scale-codec 3.1.2",2898 "parity-scale-codec 3.1.5",
2899 "scale-info",2899 "scale-info",
2900 "serde",2900 "serde",
2901]2901]
29022902
2903[[package]]2903[[package]]
2904name = "frame-support"2904name = "frame-support"
2905version = "4.0.0-dev"2905version = "4.0.0-dev"
2906source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"2906source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
2907dependencies = [2907dependencies = [
2908 "bitflags",2908 "bitflags",
2909 "frame-metadata",2909 "frame-metadata",
2912 "k256",2912 "k256",
2913 "log",2913 "log",
2914 "once_cell",2914 "once_cell",
2915 "parity-scale-codec 3.1.2",2915 "parity-scale-codec 3.1.5",
2916 "paste",2916 "paste",
2917 "scale-info",2917 "scale-info",
2918 "serde",2918 "serde",
2933[[package]]2933[[package]]
2934name = "frame-support-procedural"2934name = "frame-support-procedural"
2935version = "4.0.0-dev"2935version = "4.0.0-dev"
2936source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"2936source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
2937dependencies = [2937dependencies = [
2938 "Inflector",2938 "Inflector",
2939 "frame-support-procedural-tools",2939 "frame-support-procedural-tools",
2945[[package]]2945[[package]]
2946name = "frame-support-procedural-tools"2946name = "frame-support-procedural-tools"
2947version = "4.0.0-dev"2947version = "4.0.0-dev"
2948source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"2948source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
2949dependencies = [2949dependencies = [
2950 "frame-support-procedural-tools-derive",2950 "frame-support-procedural-tools-derive",
2951 "proc-macro-crate",2951 "proc-macro-crate",
2957[[package]]2957[[package]]
2958name = "frame-support-procedural-tools-derive"2958name = "frame-support-procedural-tools-derive"
2959version = "3.0.0"2959version = "3.0.0"
2960source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"2960source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
2961dependencies = [2961dependencies = [
2962 "proc-macro2",2962 "proc-macro2",
2963 "quote",2963 "quote",
2967[[package]]2967[[package]]
2968name = "frame-system"2968name = "frame-system"
2969version = "4.0.0-dev"2969version = "4.0.0-dev"
2970source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"2970source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
2971dependencies = [2971dependencies = [
2972 "frame-support",2972 "frame-support",
2973 "log",2973 "log",
2974 "parity-scale-codec 3.1.2",2974 "parity-scale-codec 3.1.5",
2975 "scale-info",2975 "scale-info",
2976 "serde",2976 "serde",
2977 "sp-core",2977 "sp-core",
2984[[package]]2984[[package]]
2985name = "frame-system-benchmarking"2985name = "frame-system-benchmarking"
2986version = "4.0.0-dev"2986version = "4.0.0-dev"
2987source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"2987source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
2988dependencies = [2988dependencies = [
2989 "frame-benchmarking",2989 "frame-benchmarking",
2990 "frame-support",2990 "frame-support",
2991 "frame-system",2991 "frame-system",
2992 "parity-scale-codec 3.1.2",2992 "parity-scale-codec 3.1.5",
2993 "scale-info",2993 "scale-info",
2994 "sp-core",2994 "sp-core",
2995 "sp-runtime",2995 "sp-runtime",
2999[[package]]2999[[package]]
3000name = "frame-system-rpc-runtime-api"3000name = "frame-system-rpc-runtime-api"
3001version = "4.0.0-dev"3001version = "4.0.0-dev"
3002source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"3002source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
3003dependencies = [3003dependencies = [
3004 "parity-scale-codec 3.1.2",3004 "parity-scale-codec 3.1.5",
3005 "sp-api",3005 "sp-api",
3006]3006]
30073007
3008[[package]]3008[[package]]
3009name = "frame-try-runtime"3009name = "frame-try-runtime"
3010version = "0.10.0-dev"3010version = "0.10.0-dev"
3011source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"3011source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
3012dependencies = [3012dependencies = [
3013 "frame-support",3013 "frame-support",
3014 "sp-api",3014 "sp-api",
32253225
3226[[package]]3226[[package]]
3227name = "getrandom"3227name = "getrandom"
3228version = "0.2.6"3228version = "0.2.7"
3229source = "registry+https://github.com/rust-lang/crates.io-index"3229source = "registry+https://github.com/rust-lang/crates.io-index"
3230checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad"3230checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6"
3231dependencies = [3231dependencies = [
3232 "cfg-if 1.0.0",3232 "cfg-if 1.0.0",
3233 "libc",3233 "libc",
3234 "wasi 0.10.0+wasi-snapshot-preview1",3234 "wasi 0.11.0+wasi-snapshot-preview1",
3235]3235]
32363236
3237[[package]]3237[[package]]
32633263
3264[[package]]3264[[package]]
3265name = "globset"3265name = "globset"
3266version = "0.4.8"3266version = "0.4.9"
3267source = "registry+https://github.com/rust-lang/crates.io-index"3267source = "registry+https://github.com/rust-lang/crates.io-index"
3268checksum = "10463d9ff00a2a068db14231982f5132edebad0d7660cd956a1c30292dbcbfbd"3268checksum = "0a1e17342619edbc21a964c2afbeb6c820c6a2560032872f397bb97ea127bd0a"
3269dependencies = [3269dependencies = [
3270 "aho-corasick",3270 "aho-corasick",
3271 "bstr",3271 "bstr",
35553555
3556[[package]]3556[[package]]
3557name = "if-watch"3557name = "if-watch"
3558version = "1.0.0"3558version = "1.1.0"
3559source = "registry+https://github.com/rust-lang/crates.io-index"3559source = "registry+https://github.com/rust-lang/crates.io-index"
3560checksum = "ae8f4a3c3d4c89351ca83e120c1c00b27df945d38e05695668c9d4b4f7bc52f3"3560checksum = "774d59367a3d26965d21ac70a86fcb697d83405d1c4312d1d8a6855296af0cf7"
3561dependencies = [3561dependencies = [
3562 "async-io",3562 "async-io",
3563 "core-foundation",3563 "core-foundation",
3577source = "registry+https://github.com/rust-lang/crates.io-index"3577source = "registry+https://github.com/rust-lang/crates.io-index"
3578checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f"3578checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f"
3579dependencies = [3579dependencies = [
3580 "parity-scale-codec 3.1.2",3580 "parity-scale-codec 3.1.5",
3581]3581]
35823582
3583[[package]]3583[[package]]
36113611
3612[[package]]3612[[package]]
3613name = "indexmap"3613name = "indexmap"
3614version = "1.8.2"3614version = "1.9.0"
3615source = "registry+https://github.com/rust-lang/crates.io-index"3615source = "registry+https://github.com/rust-lang/crates.io-index"
3616checksum = "e6012d540c5baa3589337a98ce73408de9b5a25ec9fc2c6fd6be8f0d39e0ca5a"3616checksum = "6c6392766afd7964e2531940894cffe4bd8d7d17dbc3c1c4857040fd4b33bdb3"
3617dependencies = [3617dependencies = [
3618 "autocfg",3618 "autocfg",
3619 "hashbrown 0.11.2",3619 "hashbrown 0.12.1",
3620 "serde",3620 "serde",
3621]3621]
36223622
37063706
3707[[package]]3707[[package]]
3708name = "js-sys"3708name = "js-sys"
3709version = "0.3.57"3709version = "0.3.58"
3710source = "registry+https://github.com/rust-lang/crates.io-index"3710source = "registry+https://github.com/rust-lang/crates.io-index"
3711checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397"3711checksum = "c3fac17f7123a73ca62df411b1bf727ccc805daa070338fda671c86dac1bdc27"
3712dependencies = [3712dependencies = [
3713 "wasm-bindgen",3713 "wasm-bindgen",
3714]3714]
3927 "pallet-vesting",3927 "pallet-vesting",
3928 "pallet-xcm",3928 "pallet-xcm",
3929 "pallet-xcm-benchmarks",3929 "pallet-xcm-benchmarks",
3930 "parity-scale-codec 3.1.2",3930 "parity-scale-codec 3.1.5",
3931 "polkadot-primitives",3931 "polkadot-primitives",
3932 "polkadot-runtime-common",3932 "polkadot-runtime-common",
3933 "polkadot-runtime-parachains",3933 "polkadot-runtime-parachains",
4074 "bytes 1.1.0",4074 "bytes 1.1.0",
4075 "futures 0.3.21",4075 "futures 0.3.21",
4076 "futures-timer",4076 "futures-timer",
4077 "getrandom 0.2.6",4077 "getrandom 0.2.7",
4078 "instant",4078 "instant",
4079 "lazy_static",4079 "lazy_static",
4080 "libp2p-autonat",4080 "libp2p-autonat",
4245 "libp2p-core",4245 "libp2p-core",
4246 "libp2p-swarm",4246 "libp2p-swarm",
4247 "log",4247 "log",
4248 "lru 0.7.6",4248 "lru 0.7.7",
4249 "prost 0.9.0",4249 "prost 0.9.0",
4250 "prost-build",4250 "prost-build",
4251 "smallvec",4251 "smallvec",
47104710
4711[[package]]4711[[package]]
4712name = "lru"4712name = "lru"
4713version = "0.7.6"4713version = "0.7.7"
4714source = "registry+https://github.com/rust-lang/crates.io-index"4714source = "registry+https://github.com/rust-lang/crates.io-index"
4715checksum = "8015d95cb7b2ddd3c0d32ca38283ceb1eea09b4713ee380bceb942d85a244228"4715checksum = "c84e6fe5655adc6ce00787cf7dcaf8dc4f998a0565d23eafc207a8b08ca3349a"
4716dependencies = [4716dependencies = [
4717 "hashbrown 0.11.2",4717 "hashbrown 0.11.2",
4718]4718]
48994899
4900[[package]]4900[[package]]
4901name = "mio"4901name = "mio"
4902version = "0.8.3"4902version = "0.8.4"
4903source = "registry+https://github.com/rust-lang/crates.io-index"4903source = "registry+https://github.com/rust-lang/crates.io-index"
4904checksum = "713d550d9b44d89174e066b7a6217ae06234c10cb47819a88290d2b353c31799"4904checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf"
4905dependencies = [4905dependencies = [
4906 "libc",4906 "libc",
4907 "log",4907 "log",
51525152
5153[[package]]5153[[package]]
5154name = "num-complex"5154name = "num-complex"
5155version = "0.4.1"5155version = "0.4.2"
5156source = "registry+https://github.com/rust-lang/crates.io-index"5156source = "registry+https://github.com/rust-lang/crates.io-index"
5157checksum = "97fbc387afefefd5e9e39493299f3069e14a140dd34dc19b4c1c1a8fddb6a790"5157checksum = "7ae39348c8bc5fbd7f40c727a9925f03517afd2ab27d46702108b6a7e5414c19"
5158dependencies = [5158dependencies = [
5159 "num-traits",5159 "num-traits",
5160]5160]
52505250
5251[[package]]5251[[package]]
5252name = "opal-runtime"5252name = "opal-runtime"
5253version = "0.9.22"5253version = "0.9.23"
5254dependencies = [5254dependencies = [
5255 "cumulus-pallet-aura-ext",5255 "cumulus-pallet-aura-ext",
5256 "cumulus-pallet-dmp-queue",5256 "cumulus-pallet-dmp-queue",
5299 "pallet-transaction-payment-rpc-runtime-api",5299 "pallet-transaction-payment-rpc-runtime-api",
5300 "pallet-treasury",5300 "pallet-treasury",
5301 "pallet-unique",5301 "pallet-unique",
5302 "pallet-unq-scheduler",5302 "pallet-unique-scheduler",
5303 "pallet-xcm",5303 "pallet-xcm",
5304 "parachain-info",5304 "parachain-info",
5305 "parity-scale-codec 3.1.2",5305 "parity-scale-codec 3.1.5",
5306 "polkadot-parachain",5306 "polkadot-parachain",
5307 "rmrk-rpc",5307 "rmrk-rpc",
5308 "scale-info",5308 "scale-info",
5393dependencies = [5393dependencies = [
5394 "frame-support",5394 "frame-support",
5395 "frame-system",5395 "frame-system",
5396 "parity-scale-codec 3.1.2",5396 "parity-scale-codec 3.1.5",
5397 "scale-info",5397 "scale-info",
5398 "serde",5398 "serde",
5399 "sp-io",5399 "sp-io",
5419[[package]]5419[[package]]
5420name = "pallet-aura"5420name = "pallet-aura"
5421version = "4.0.0-dev"5421version = "4.0.0-dev"
5422source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5422source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
5423dependencies = [5423dependencies = [
5424 "frame-support",5424 "frame-support",
5425 "frame-system",5425 "frame-system",
5426 "pallet-timestamp",5426 "pallet-timestamp",
5427 "parity-scale-codec 3.1.2",5427 "parity-scale-codec 3.1.5",
5428 "scale-info",5428 "scale-info",
5429 "sp-application-crypto",5429 "sp-application-crypto",
5430 "sp-consensus-aura",5430 "sp-consensus-aura",
5435[[package]]5435[[package]]
5436name = "pallet-authority-discovery"5436name = "pallet-authority-discovery"
5437version = "4.0.0-dev"5437version = "4.0.0-dev"
5438source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5438source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
5439dependencies = [5439dependencies = [
5440 "frame-support",5440 "frame-support",
5441 "frame-system",5441 "frame-system",
5442 "pallet-session",5442 "pallet-session",
5443 "parity-scale-codec 3.1.2",5443 "parity-scale-codec 3.1.5",
5444 "scale-info",5444 "scale-info",
5445 "sp-application-crypto",5445 "sp-application-crypto",
5446 "sp-authority-discovery",5446 "sp-authority-discovery",
5451[[package]]5451[[package]]
5452name = "pallet-authorship"5452name = "pallet-authorship"
5453version = "4.0.0-dev"5453version = "4.0.0-dev"
5454source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5454source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
5455dependencies = [5455dependencies = [
5456 "frame-support",5456 "frame-support",
5457 "frame-system",5457 "frame-system",
5458 "impl-trait-for-tuples",5458 "impl-trait-for-tuples",
5459 "parity-scale-codec 3.1.2",5459 "parity-scale-codec 3.1.5",
5460 "scale-info",5460 "scale-info",
5461 "sp-authorship",5461 "sp-authorship",
5462 "sp-runtime",5462 "sp-runtime",
5466[[package]]5466[[package]]
5467name = "pallet-babe"5467name = "pallet-babe"
5468version = "4.0.0-dev"5468version = "4.0.0-dev"
5469source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5469source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
5470dependencies = [5470dependencies = [
5471 "frame-benchmarking",5471 "frame-benchmarking",
5472 "frame-support",5472 "frame-support",
5475 "pallet-authorship",5475 "pallet-authorship",
5476 "pallet-session",5476 "pallet-session",
5477 "pallet-timestamp",5477 "pallet-timestamp",
5478 "parity-scale-codec 3.1.2",5478 "parity-scale-codec 3.1.5",
5479 "scale-info",5479 "scale-info",
5480 "sp-application-crypto",5480 "sp-application-crypto",
5481 "sp-consensus-babe",5481 "sp-consensus-babe",
5490[[package]]5490[[package]]
5491name = "pallet-bags-list"5491name = "pallet-bags-list"
5492version = "4.0.0-dev"5492version = "4.0.0-dev"
5493source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5493source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
5494dependencies = [5494dependencies = [
5495 "frame-benchmarking",5495 "frame-benchmarking",
5496 "frame-election-provider-support",5496 "frame-election-provider-support",
5497 "frame-support",5497 "frame-support",
5498 "frame-system",5498 "frame-system",
5499 "log",5499 "log",
5500 "pallet-balances",5500 "pallet-balances",
5501 "parity-scale-codec 3.1.2",5501 "parity-scale-codec 3.1.5",
5502 "scale-info",5502 "scale-info",
5503 "sp-core",5503 "sp-core",
5504 "sp-io",5504 "sp-io",
5510[[package]]5510[[package]]
5511name = "pallet-balances"5511name = "pallet-balances"
5512version = "4.0.0-dev"5512version = "4.0.0-dev"
5513source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5513source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
5514dependencies = [5514dependencies = [
5515 "frame-benchmarking",5515 "frame-benchmarking",
5516 "frame-support",5516 "frame-support",
5517 "frame-system",5517 "frame-system",
5518 "log",5518 "log",
5519 "parity-scale-codec 3.1.2",5519 "parity-scale-codec 3.1.5",
5520 "scale-info",5520 "scale-info",
5521 "sp-runtime",5521 "sp-runtime",
5522 "sp-std",5522 "sp-std",
5530 "fp-evm",5530 "fp-evm",
5531 "frame-support",5531 "frame-support",
5532 "frame-system",5532 "frame-system",
5533 "parity-scale-codec 3.1.2",5533 "parity-scale-codec 3.1.5",
5534 "scale-info",5534 "scale-info",
5535 "serde",5535 "serde",
5536 "sp-core",5536 "sp-core",
5540[[package]]5540[[package]]
5541name = "pallet-beefy"5541name = "pallet-beefy"
5542version = "4.0.0-dev"5542version = "4.0.0-dev"
5543source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5543source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
5544dependencies = [5544dependencies = [
5545 "beefy-primitives",5545 "beefy-primitives",
5546 "frame-support",5546 "frame-support",
5547 "frame-system",5547 "frame-system",
5548 "pallet-session",5548 "pallet-session",
5549 "parity-scale-codec 3.1.2",5549 "parity-scale-codec 3.1.5",
5550 "scale-info",5550 "scale-info",
5551 "serde",5551 "serde",
5552 "sp-runtime",5552 "sp-runtime",
5556[[package]]5556[[package]]
5557name = "pallet-beefy-mmr"5557name = "pallet-beefy-mmr"
5558version = "4.0.0-dev"5558version = "4.0.0-dev"
5559source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5559source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
5560dependencies = [5560dependencies = [
5561 "beefy-merkle-tree",5561 "beefy-merkle-tree",
5562 "beefy-primitives",5562 "beefy-primitives",
5567 "pallet-beefy",5567 "pallet-beefy",
5568 "pallet-mmr",5568 "pallet-mmr",
5569 "pallet-session",5569 "pallet-session",
5570 "parity-scale-codec 3.1.2",5570 "parity-scale-codec 3.1.5",
5571 "scale-info",5571 "scale-info",
5572 "serde",5572 "serde",
5573 "sp-core",5573 "sp-core",
5579[[package]]5579[[package]]
5580name = "pallet-bounties"5580name = "pallet-bounties"
5581version = "4.0.0-dev"5581version = "4.0.0-dev"
5582source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5582source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
5583dependencies = [5583dependencies = [
5584 "frame-benchmarking",5584 "frame-benchmarking",
5585 "frame-support",5585 "frame-support",
5586 "frame-system",5586 "frame-system",
5587 "log",5587 "log",
5588 "pallet-treasury",5588 "pallet-treasury",
5589 "parity-scale-codec 3.1.2",5589 "parity-scale-codec 3.1.5",
5590 "scale-info",5590 "scale-info",
5591 "sp-core",5591 "sp-core",
5592 "sp-io",5592 "sp-io",
5604 "frame-support",5604 "frame-support",
5605 "frame-system",5605 "frame-system",
5606 "log",5606 "log",
5607 "parity-scale-codec 3.1.2",5607 "parity-scale-codec 3.1.5",
5608 "scale-info",5608 "scale-info",
5609 "sp-core",5609 "sp-core",
5610 "sp-runtime",5610 "sp-runtime",
5624 "frame-system",5624 "frame-system",
5625 "log",5625 "log",
5626 "num-traits",5626 "num-traits",
5627 "parity-scale-codec 3.1.2",5627 "parity-scale-codec 3.1.5",
5628 "scale-info",5628 "scale-info",
5629 "serde",5629 "serde",
5630 "sp-finality-grandpa",5630 "sp-finality-grandpa",
5646 "frame-system",5646 "frame-system",
5647 "log",5647 "log",
5648 "num-traits",5648 "num-traits",
5649 "parity-scale-codec 3.1.2",5649 "parity-scale-codec 3.1.5",
5650 "scale-info",5650 "scale-info",
5651 "serde",5651 "serde",
5652 "sp-core",5652 "sp-core",
5657[[package]]5657[[package]]
5658name = "pallet-child-bounties"5658name = "pallet-child-bounties"
5659version = "4.0.0-dev"5659version = "4.0.0-dev"
5660source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5660source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
5661dependencies = [5661dependencies = [
5662 "frame-benchmarking",5662 "frame-benchmarking",
5663 "frame-support",5663 "frame-support",
5664 "frame-system",5664 "frame-system",
5665 "log",5665 "log",
5666 "pallet-bounties",5666 "pallet-bounties",
5667 "pallet-treasury",5667 "pallet-treasury",
5668 "parity-scale-codec 3.1.2",5668 "parity-scale-codec 3.1.5",
5669 "scale-info",5669 "scale-info",
5670 "sp-core",5670 "sp-core",
5671 "sp-io",5671 "sp-io",
5676[[package]]5676[[package]]
5677name = "pallet-collective"5677name = "pallet-collective"
5678version = "4.0.0-dev"5678version = "4.0.0-dev"
5679source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5679source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
5680dependencies = [5680dependencies = [
5681 "frame-benchmarking",5681 "frame-benchmarking",
5682 "frame-support",5682 "frame-support",
5683 "frame-system",5683 "frame-system",
5684 "log",5684 "log",
5685 "parity-scale-codec 3.1.2",5685 "parity-scale-codec 3.1.5",
5686 "scale-info",5686 "scale-info",
5687 "sp-core",5687 "sp-core",
5688 "sp-io",5688 "sp-io",
5702 "frame-system",5702 "frame-system",
5703 "pallet-evm",5703 "pallet-evm",
5704 "pallet-evm-coder-substrate",5704 "pallet-evm-coder-substrate",
5705 "parity-scale-codec 3.1.2",5705 "parity-scale-codec 3.1.5",
5706 "scale-info",5706 "scale-info",
5707 "serde",5707 "serde",
5708 "sp-core",5708 "sp-core",
5714[[package]]5714[[package]]
5715name = "pallet-democracy"5715name = "pallet-democracy"
5716version = "4.0.0-dev"5716version = "4.0.0-dev"
5717source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5717source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
5718dependencies = [5718dependencies = [
5719 "frame-benchmarking",5719 "frame-benchmarking",
5720 "frame-support",5720 "frame-support",
5721 "frame-system",5721 "frame-system",
5722 "parity-scale-codec 3.1.2",5722 "parity-scale-codec 3.1.5",
5723 "scale-info",5723 "scale-info",
5724 "serde",5724 "serde",
5725 "sp-io",5725 "sp-io",
5730[[package]]5730[[package]]
5731name = "pallet-election-provider-multi-phase"5731name = "pallet-election-provider-multi-phase"
5732version = "4.0.0-dev"5732version = "4.0.0-dev"
5733source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5733source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
5734dependencies = [5734dependencies = [
5735 "frame-benchmarking",5735 "frame-benchmarking",
5736 "frame-election-provider-support",5736 "frame-election-provider-support",
5737 "frame-support",5737 "frame-support",
5738 "frame-system",5738 "frame-system",
5739 "log",5739 "log",
5740 "parity-scale-codec 3.1.2",5740 "parity-scale-codec 3.1.5",
5741 "rand 0.7.3",5741 "rand 0.7.3",
5742 "scale-info",5742 "scale-info",
5743 "sp-arithmetic",5743 "sp-arithmetic",
5753[[package]]5753[[package]]
5754name = "pallet-election-provider-support-benchmarking"5754name = "pallet-election-provider-support-benchmarking"
5755version = "4.0.0-dev"5755version = "4.0.0-dev"
5756source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5756source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
5757dependencies = [5757dependencies = [
5758 "frame-benchmarking",5758 "frame-benchmarking",
5759 "frame-election-provider-support",5759 "frame-election-provider-support",
5760 "frame-system",5760 "frame-system",
5761 "parity-scale-codec 3.1.2",5761 "parity-scale-codec 3.1.5",
5762 "sp-npos-elections",5762 "sp-npos-elections",
5763 "sp-runtime",5763 "sp-runtime",
5764]5764]
57655765
5766[[package]]5766[[package]]
5767name = "pallet-elections-phragmen"5767name = "pallet-elections-phragmen"
5768version = "5.0.0-dev"5768version = "5.0.0-dev"
5769source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5769source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
5770dependencies = [5770dependencies = [
5771 "frame-benchmarking",5771 "frame-benchmarking",
5772 "frame-support",5772 "frame-support",
5773 "frame-system",5773 "frame-system",
5774 "log",5774 "log",
5775 "parity-scale-codec 3.1.2",5775 "parity-scale-codec 3.1.5",
5776 "scale-info",5776 "scale-info",
5777 "sp-core",5777 "sp-core",
5778 "sp-io",5778 "sp-io",
5800 "log",5800 "log",
5801 "pallet-evm",5801 "pallet-evm",
5802 "pallet-timestamp",5802 "pallet-timestamp",
5803 "parity-scale-codec 3.1.2",5803 "parity-scale-codec 3.1.5",
5804 "rlp",5804 "rlp",
5805 "scale-info",5805 "scale-info",
5806 "serde",5806 "serde",
5825 "impl-trait-for-tuples",5825 "impl-trait-for-tuples",
5826 "log",5826 "log",
5827 "pallet-timestamp",5827 "pallet-timestamp",
5828 "parity-scale-codec 3.1.2",5828 "parity-scale-codec 3.1.5",
5829 "primitive-types",5829 "primitive-types",
5830 "rlp",5830 "rlp",
5831 "scale-info",5831 "scale-info",
5848 "frame-system",5848 "frame-system",
5849 "pallet-ethereum",5849 "pallet-ethereum",
5850 "pallet-evm",5850 "pallet-evm",
5851 "parity-scale-codec 3.1.2",5851 "parity-scale-codec 3.1.5",
5852 "scale-info",5852 "scale-info",
5853 "sp-core",5853 "sp-core",
5854 "sp-std",5854 "sp-std",
5867 "pallet-common",5867 "pallet-common",
5868 "pallet-evm",5868 "pallet-evm",
5869 "pallet-evm-coder-substrate",5869 "pallet-evm-coder-substrate",
5870 "parity-scale-codec 3.1.2",5870 "parity-scale-codec 3.1.5",
5871 "scale-info",5871 "scale-info",
5872 "sp-core",5872 "sp-core",
5873 "sp-runtime",5873 "sp-runtime",
5885 "frame-support",5885 "frame-support",
5886 "frame-system",5886 "frame-system",
5887 "pallet-evm",5887 "pallet-evm",
5888 "parity-scale-codec 3.1.2",5888 "parity-scale-codec 3.1.5",
5889 "scale-info",5889 "scale-info",
5890 "sp-core",5890 "sp-core",
5891 "sp-io",5891 "sp-io",
5903 "frame-system",5903 "frame-system",
5904 "pallet-ethereum",5904 "pallet-ethereum",
5905 "pallet-evm",5905 "pallet-evm",
5906 "parity-scale-codec 3.1.2",5906 "parity-scale-codec 3.1.5",
5907 "scale-info",5907 "scale-info",
5908 "sp-core",5908 "sp-core",
5909 "sp-io",5909 "sp-io",
5925 "pallet-evm",5925 "pallet-evm",
5926 "pallet-evm-coder-substrate",5926 "pallet-evm-coder-substrate",
5927 "pallet-structure",5927 "pallet-structure",
5928 "parity-scale-codec 3.1.2",5928 "parity-scale-codec 3.1.5",
5929 "scale-info",5929 "scale-info",
5930 "sp-core",5930 "sp-core",
5931 "sp-runtime",5931 "sp-runtime",
5936[[package]]5936[[package]]
5937name = "pallet-gilt"5937name = "pallet-gilt"
5938version = "4.0.0-dev"5938version = "4.0.0-dev"
5939source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5939source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
5940dependencies = [5940dependencies = [
5941 "frame-benchmarking",5941 "frame-benchmarking",
5942 "frame-support",5942 "frame-support",
5943 "frame-system",5943 "frame-system",
5944 "parity-scale-codec 3.1.2",5944 "parity-scale-codec 3.1.5",
5945 "scale-info",5945 "scale-info",
5946 "sp-arithmetic",5946 "sp-arithmetic",
5947 "sp-runtime",5947 "sp-runtime",
5951[[package]]5951[[package]]
5952name = "pallet-grandpa"5952name = "pallet-grandpa"
5953version = "4.0.0-dev"5953version = "4.0.0-dev"
5954source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5954source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
5955dependencies = [5955dependencies = [
5956 "frame-benchmarking",5956 "frame-benchmarking",
5957 "frame-support",5957 "frame-support",
5958 "frame-system",5958 "frame-system",
5959 "log",5959 "log",
5960 "pallet-authorship",5960 "pallet-authorship",
5961 "pallet-session",5961 "pallet-session",
5962 "parity-scale-codec 3.1.2",5962 "parity-scale-codec 3.1.5",
5963 "scale-info",5963 "scale-info",
5964 "sp-application-crypto",5964 "sp-application-crypto",
5965 "sp-core",5965 "sp-core",
5974[[package]]5974[[package]]
5975name = "pallet-identity"5975name = "pallet-identity"
5976version = "4.0.0-dev"5976version = "4.0.0-dev"
5977source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5977source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
5978dependencies = [5978dependencies = [
5979 "enumflags2",5979 "enumflags2",
5980 "frame-benchmarking",5980 "frame-benchmarking",
5981 "frame-support",5981 "frame-support",
5982 "frame-system",5982 "frame-system",
5983 "parity-scale-codec 3.1.2",5983 "parity-scale-codec 3.1.5",
5984 "scale-info",5984 "scale-info",
5985 "sp-io",5985 "sp-io",
5986 "sp-runtime",5986 "sp-runtime",
5990[[package]]5990[[package]]
5991name = "pallet-im-online"5991name = "pallet-im-online"
5992version = "4.0.0-dev"5992version = "4.0.0-dev"
5993source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"5993source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
5994dependencies = [5994dependencies = [
5995 "frame-benchmarking",5995 "frame-benchmarking",
5996 "frame-support",5996 "frame-support",
5997 "frame-system",5997 "frame-system",
5998 "log",5998 "log",
5999 "pallet-authorship",5999 "pallet-authorship",
6000 "parity-scale-codec 3.1.2",6000 "parity-scale-codec 3.1.5",
6001 "scale-info",6001 "scale-info",
6002 "sp-application-crypto",6002 "sp-application-crypto",
6003 "sp-core",6003 "sp-core",
6010[[package]]6010[[package]]
6011name = "pallet-indices"6011name = "pallet-indices"
6012version = "4.0.0-dev"6012version = "4.0.0-dev"
6013source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6013source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6014dependencies = [6014dependencies = [
6015 "frame-benchmarking",6015 "frame-benchmarking",
6016 "frame-support",6016 "frame-support",
6017 "frame-system",6017 "frame-system",
6018 "parity-scale-codec 3.1.2",6018 "parity-scale-codec 3.1.5",
6019 "scale-info",6019 "scale-info",
6020 "sp-core",6020 "sp-core",
6021 "sp-io",6021 "sp-io",
6034 "pallet-balances",6034 "pallet-balances",
6035 "pallet-randomness-collective-flip",6035 "pallet-randomness-collective-flip",
6036 "pallet-timestamp",6036 "pallet-timestamp",
6037 "parity-scale-codec 3.1.2",6037 "parity-scale-codec 3.1.5",
6038 "scale-info",6038 "scale-info",
6039 "serde",6039 "serde",
6040 "sp-core",6040 "sp-core",
6046[[package]]6046[[package]]
6047name = "pallet-membership"6047name = "pallet-membership"
6048version = "4.0.0-dev"6048version = "4.0.0-dev"
6049source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6049source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6050dependencies = [6050dependencies = [
6051 "frame-benchmarking",6051 "frame-benchmarking",
6052 "frame-support",6052 "frame-support",
6053 "frame-system",6053 "frame-system",
6054 "log",6054 "log",
6055 "parity-scale-codec 3.1.2",6055 "parity-scale-codec 3.1.5",
6056 "scale-info",6056 "scale-info",
6057 "sp-core",6057 "sp-core",
6058 "sp-io",6058 "sp-io",
6063[[package]]6063[[package]]
6064name = "pallet-mmr"6064name = "pallet-mmr"
6065version = "4.0.0-dev"6065version = "4.0.0-dev"
6066source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6066source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6067dependencies = [6067dependencies = [
6068 "ckb-merkle-mountain-range",6068 "ckb-merkle-mountain-range",
6069 "frame-benchmarking",6069 "frame-benchmarking",
6070 "frame-support",6070 "frame-support",
6071 "frame-system",6071 "frame-system",
6072 "parity-scale-codec 3.1.2",6072 "parity-scale-codec 3.1.5",
6073 "scale-info",6073 "scale-info",
6074 "sp-core",6074 "sp-core",
6075 "sp-io",6075 "sp-io",
6081[[package]]6081[[package]]
6082name = "pallet-mmr-rpc"6082name = "pallet-mmr-rpc"
6083version = "3.0.0"6083version = "3.0.0"
6084source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6084source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6085dependencies = [6085dependencies = [
6086 "jsonrpsee",6086 "jsonrpsee",
6087 "parity-scale-codec 3.1.2",6087 "parity-scale-codec 3.1.5",
6088 "serde",6088 "serde",
6089 "sp-api",6089 "sp-api",
6090 "sp-blockchain",6090 "sp-blockchain",
6096[[package]]6096[[package]]
6097name = "pallet-multisig"6097name = "pallet-multisig"
6098version = "4.0.0-dev"6098version = "4.0.0-dev"
6099source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6099source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6100dependencies = [6100dependencies = [
6101 "frame-benchmarking",6101 "frame-benchmarking",
6102 "frame-support",6102 "frame-support",
6103 "frame-system",6103 "frame-system",
6104 "parity-scale-codec 3.1.2",6104 "parity-scale-codec 3.1.5",
6105 "scale-info",6105 "scale-info",
6106 "sp-io",6106 "sp-io",
6107 "sp-runtime",6107 "sp-runtime",
6111[[package]]6111[[package]]
6112name = "pallet-nicks"6112name = "pallet-nicks"
6113version = "4.0.0-dev"6113version = "4.0.0-dev"
6114source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6114source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6115dependencies = [6115dependencies = [
6116 "frame-support",6116 "frame-support",
6117 "frame-system",6117 "frame-system",
6118 "parity-scale-codec 3.1.2",6118 "parity-scale-codec 3.1.5",
6119 "scale-info",6119 "scale-info",
6120 "sp-io",6120 "sp-io",
6121 "sp-runtime",6121 "sp-runtime",
6125[[package]]6125[[package]]
6126name = "pallet-nomination-pools"6126name = "pallet-nomination-pools"
6127version = "1.0.0"6127version = "1.0.0"
6128source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6128source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6129dependencies = [6129dependencies = [
6130 "frame-support",6130 "frame-support",
6131 "frame-system",6131 "frame-system",
6132 "log",6132 "log",
6133 "parity-scale-codec 3.1.2",6133 "parity-scale-codec 3.1.5",
6134 "scale-info",6134 "scale-info",
6135 "sp-core",6135 "sp-core",
6136 "sp-runtime",6136 "sp-runtime",
6141[[package]]6141[[package]]
6142name = "pallet-nomination-pools-benchmarking"6142name = "pallet-nomination-pools-benchmarking"
6143version = "1.0.0"6143version = "1.0.0"
6144source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6144source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6145dependencies = [6145dependencies = [
6146 "frame-benchmarking",6146 "frame-benchmarking",
6147 "frame-election-provider-support",6147 "frame-election-provider-support",
6150 "pallet-bags-list",6150 "pallet-bags-list",
6151 "pallet-nomination-pools",6151 "pallet-nomination-pools",
6152 "pallet-staking",6152 "pallet-staking",
6153 "parity-scale-codec 3.1.2",6153 "parity-scale-codec 3.1.5",
6154 "scale-info",6154 "scale-info",
6155 "sp-runtime",6155 "sp-runtime",
6156 "sp-staking",6156 "sp-staking",
6170 "pallet-evm",6170 "pallet-evm",
6171 "pallet-evm-coder-substrate",6171 "pallet-evm-coder-substrate",
6172 "pallet-structure",6172 "pallet-structure",
6173 "parity-scale-codec 3.1.2",6173 "parity-scale-codec 3.1.5",
6174 "scale-info",6174 "scale-info",
6175 "sp-core",6175 "sp-core",
6176 "sp-runtime",6176 "sp-runtime",
6182[[package]]6182[[package]]
6183name = "pallet-offences"6183name = "pallet-offences"
6184version = "4.0.0-dev"6184version = "4.0.0-dev"
6185source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6185source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6186dependencies = [6186dependencies = [
6187 "frame-support",6187 "frame-support",
6188 "frame-system",6188 "frame-system",
6189 "log",6189 "log",
6190 "pallet-balances",6190 "pallet-balances",
6191 "parity-scale-codec 3.1.2",6191 "parity-scale-codec 3.1.5",
6192 "scale-info",6192 "scale-info",
6193 "serde",6193 "serde",
6194 "sp-runtime",6194 "sp-runtime",
6199[[package]]6199[[package]]
6200name = "pallet-offences-benchmarking"6200name = "pallet-offences-benchmarking"
6201version = "4.0.0-dev"6201version = "4.0.0-dev"
6202source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6202source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6203dependencies = [6203dependencies = [
6204 "frame-benchmarking",6204 "frame-benchmarking",
6205 "frame-election-provider-support",6205 "frame-election-provider-support",
6212 "pallet-offences",6212 "pallet-offences",
6213 "pallet-session",6213 "pallet-session",
6214 "pallet-staking",6214 "pallet-staking",
6215 "parity-scale-codec 3.1.2",6215 "parity-scale-codec 3.1.5",
6216 "scale-info",6216 "scale-info",
6217 "sp-runtime",6217 "sp-runtime",
6218 "sp-staking",6218 "sp-staking",
6222[[package]]6222[[package]]
6223name = "pallet-preimage"6223name = "pallet-preimage"
6224version = "4.0.0-dev"6224version = "4.0.0-dev"
6225source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6225source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6226dependencies = [6226dependencies = [
6227 "frame-benchmarking",6227 "frame-benchmarking",
6228 "frame-support",6228 "frame-support",
6229 "frame-system",6229 "frame-system",
6230 "parity-scale-codec 3.1.2",6230 "parity-scale-codec 3.1.5",
6231 "scale-info",6231 "scale-info",
6232 "sp-core",6232 "sp-core",
6233 "sp-io",6233 "sp-io",
6238[[package]]6238[[package]]
6239name = "pallet-proxy"6239name = "pallet-proxy"
6240version = "4.0.0-dev"6240version = "4.0.0-dev"
6241source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6241source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6242dependencies = [6242dependencies = [
6243 "frame-benchmarking",6243 "frame-benchmarking",
6244 "frame-support",6244 "frame-support",
6245 "frame-system",6245 "frame-system",
6246 "parity-scale-codec 3.1.2",6246 "parity-scale-codec 3.1.5",
6247 "scale-info",6247 "scale-info",
6248 "sp-io",6248 "sp-io",
6249 "sp-runtime",6249 "sp-runtime",
6253[[package]]6253[[package]]
6254name = "pallet-randomness-collective-flip"6254name = "pallet-randomness-collective-flip"
6255version = "4.0.0-dev"6255version = "4.0.0-dev"
6256source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6256source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6257dependencies = [6257dependencies = [
6258 "frame-support",6258 "frame-support",
6259 "frame-system",6259 "frame-system",
6260 "parity-scale-codec 3.1.2",6260 "parity-scale-codec 3.1.5",
6261 "safe-mix",6261 "safe-mix",
6262 "scale-info",6262 "scale-info",
6263 "sp-runtime",6263 "sp-runtime",
6267[[package]]6267[[package]]
6268name = "pallet-recovery"6268name = "pallet-recovery"
6269version = "4.0.0-dev"6269version = "4.0.0-dev"
6270source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6270source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6271dependencies = [6271dependencies = [
6272 "frame-benchmarking",6272 "frame-benchmarking",
6273 "frame-support",6273 "frame-support",
6274 "frame-system",6274 "frame-system",
6275 "parity-scale-codec 3.1.2",6275 "parity-scale-codec 3.1.5",
6276 "scale-info",6276 "scale-info",
6277 "sp-io",6277 "sp-io",
6278 "sp-runtime",6278 "sp-runtime",
6289 "pallet-common",6289 "pallet-common",
6290 "pallet-evm",6290 "pallet-evm",
6291 "pallet-structure",6291 "pallet-structure",
6292 "parity-scale-codec 3.1.2",6292 "parity-scale-codec 3.1.5",
6293 "scale-info",6293 "scale-info",
6294 "sp-core",6294 "sp-core",
6295 "sp-runtime",6295 "sp-runtime",
6310 "pallet-evm",6310 "pallet-evm",
6311 "pallet-nonfungible",6311 "pallet-nonfungible",
6312 "pallet-structure",6312 "pallet-structure",
6313 "parity-scale-codec 3.1.2",6313 "parity-scale-codec 3.1.5",
6314 "rmrk-traits",6314 "rmrk-traits",
6315 "scale-info",6315 "scale-info",
6316 "sp-core",6316 "sp-core",
6330 "pallet-evm",6330 "pallet-evm",
6331 "pallet-nonfungible",6331 "pallet-nonfungible",
6332 "pallet-rmrk-core",6332 "pallet-rmrk-core",
6333 "parity-scale-codec 3.1.2",6333 "parity-scale-codec 3.1.5",
6334 "rmrk-traits",6334 "rmrk-traits",
6335 "scale-info",6335 "scale-info",
6336 "sp-core",6336 "sp-core",
6342[[package]]6342[[package]]
6343name = "pallet-scheduler"6343name = "pallet-scheduler"
6344version = "4.0.0-dev"6344version = "4.0.0-dev"
6345source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6345source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6346dependencies = [6346dependencies = [
6347 "frame-benchmarking",6347 "frame-benchmarking",
6348 "frame-support",6348 "frame-support",
6349 "frame-system",6349 "frame-system",
6350 "log",6350 "log",
6351 "parity-scale-codec 3.1.2",6351 "parity-scale-codec 3.1.5",
6352 "scale-info",6352 "scale-info",
6353 "sp-io",6353 "sp-io",
6354 "sp-runtime",6354 "sp-runtime",
6358[[package]]6358[[package]]
6359name = "pallet-session"6359name = "pallet-session"
6360version = "4.0.0-dev"6360version = "4.0.0-dev"
6361source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6361source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6362dependencies = [6362dependencies = [
6363 "frame-support",6363 "frame-support",
6364 "frame-system",6364 "frame-system",
6365 "impl-trait-for-tuples",6365 "impl-trait-for-tuples",
6366 "log",6366 "log",
6367 "pallet-timestamp",6367 "pallet-timestamp",
6368 "parity-scale-codec 3.1.2",6368 "parity-scale-codec 3.1.5",
6369 "scale-info",6369 "scale-info",
6370 "sp-core",6370 "sp-core",
6371 "sp-io",6371 "sp-io",
6379[[package]]6379[[package]]
6380name = "pallet-session-benchmarking"6380name = "pallet-session-benchmarking"
6381version = "4.0.0-dev"6381version = "4.0.0-dev"
6382source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6382source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6383dependencies = [6383dependencies = [
6384 "frame-benchmarking",6384 "frame-benchmarking",
6385 "frame-support",6385 "frame-support",
6395[[package]]6395[[package]]
6396name = "pallet-society"6396name = "pallet-society"
6397version = "4.0.0-dev"6397version = "4.0.0-dev"
6398source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6398source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6399dependencies = [6399dependencies = [
6400 "frame-support",6400 "frame-support",
6401 "frame-system",6401 "frame-system",
6402 "parity-scale-codec 3.1.2",6402 "parity-scale-codec 3.1.5",
6403 "rand_chacha 0.2.2",6403 "rand_chacha 0.2.2",
6404 "scale-info",6404 "scale-info",
6405 "sp-runtime",6405 "sp-runtime",
6409[[package]]6409[[package]]
6410name = "pallet-staking"6410name = "pallet-staking"
6411version = "4.0.0-dev"6411version = "4.0.0-dev"
6412source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6412source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6413dependencies = [6413dependencies = [
6414 "frame-benchmarking",6414 "frame-benchmarking",
6415 "frame-election-provider-support",6415 "frame-election-provider-support",
6418 "log",6418 "log",
6419 "pallet-authorship",6419 "pallet-authorship",
6420 "pallet-session",6420 "pallet-session",
6421 "parity-scale-codec 3.1.2",6421 "parity-scale-codec 3.1.5",
6422 "rand_chacha 0.2.2",6422 "rand_chacha 0.2.2",
6423 "scale-info",6423 "scale-info",
6424 "serde",6424 "serde",
6432[[package]]6432[[package]]
6433name = "pallet-staking-reward-curve"6433name = "pallet-staking-reward-curve"
6434version = "4.0.0-dev"6434version = "4.0.0-dev"
6435source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6435source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6436dependencies = [6436dependencies = [
6437 "proc-macro-crate",6437 "proc-macro-crate",
6438 "proc-macro2",6438 "proc-macro2",
6443[[package]]6443[[package]]
6444name = "pallet-staking-reward-fn"6444name = "pallet-staking-reward-fn"
6445version = "4.0.0-dev"6445version = "4.0.0-dev"
6446source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6446source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6447dependencies = [6447dependencies = [
6448 "log",6448 "log",
6449 "sp-arithmetic",6449 "sp-arithmetic",
6458 "frame-system",6458 "frame-system",
6459 "pallet-common",6459 "pallet-common",
6460 "pallet-evm",6460 "pallet-evm",
6461 "parity-scale-codec 3.1.2",6461 "parity-scale-codec 3.1.5",
6462 "scale-info",6462 "scale-info",
6463 "sp-std",6463 "sp-std",
6464 "up-data-structs",6464 "up-data-structs",
6467[[package]]6467[[package]]
6468name = "pallet-sudo"6468name = "pallet-sudo"
6469version = "4.0.0-dev"6469version = "4.0.0-dev"
6470source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6470source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6471dependencies = [6471dependencies = [
6472 "frame-support",6472 "frame-support",
6473 "frame-system",6473 "frame-system",
6474 "parity-scale-codec 3.1.2",6474 "parity-scale-codec 3.1.5",
6475 "scale-info",6475 "scale-info",
6476 "sp-io",6476 "sp-io",
6477 "sp-runtime",6477 "sp-runtime",
6488 "frame-system",6488 "frame-system",
6489 "pallet-balances",6489 "pallet-balances",
6490 "pallet-transaction-payment",6490 "pallet-transaction-payment",
6491 "parity-scale-codec 3.1.2",6491 "parity-scale-codec 3.1.5",
6492 "scale-info",6492 "scale-info",
6493 "serde",6493 "serde",
6494 "sp-core",6494 "sp-core",
6501[[package]]6501[[package]]
6502name = "pallet-timestamp"6502name = "pallet-timestamp"
6503version = "4.0.0-dev"6503version = "4.0.0-dev"
6504source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6504source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6505dependencies = [6505dependencies = [
6506 "frame-benchmarking",6506 "frame-benchmarking",
6507 "frame-support",6507 "frame-support",
6508 "frame-system",6508 "frame-system",
6509 "log",6509 "log",
6510 "parity-scale-codec 3.1.2",6510 "parity-scale-codec 3.1.5",
6511 "scale-info",6511 "scale-info",
6512 "sp-inherents",6512 "sp-inherents",
6513 "sp-io",6513 "sp-io",
6519[[package]]6519[[package]]
6520name = "pallet-tips"6520name = "pallet-tips"
6521version = "4.0.0-dev"6521version = "4.0.0-dev"
6522source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6522source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6523dependencies = [6523dependencies = [
6524 "frame-benchmarking",6524 "frame-benchmarking",
6525 "frame-support",6525 "frame-support",
6526 "frame-system",6526 "frame-system",
6527 "log",6527 "log",
6528 "pallet-treasury",6528 "pallet-treasury",
6529 "parity-scale-codec 3.1.2",6529 "parity-scale-codec 3.1.5",
6530 "scale-info",6530 "scale-info",
6531 "serde",6531 "serde",
6532 "sp-core",6532 "sp-core",
6538[[package]]6538[[package]]
6539name = "pallet-transaction-payment"6539name = "pallet-transaction-payment"
6540version = "4.0.0-dev"6540version = "4.0.0-dev"
6541source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6541source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6542dependencies = [6542dependencies = [
6543 "frame-support",6543 "frame-support",
6544 "frame-system",6544 "frame-system",
6545 "parity-scale-codec 3.1.2",6545 "parity-scale-codec 3.1.5",
6546 "scale-info",6546 "scale-info",
6547 "serde",6547 "serde",
6548 "sp-core",6548 "sp-core",
6554[[package]]6554[[package]]
6555name = "pallet-transaction-payment-rpc"6555name = "pallet-transaction-payment-rpc"
6556version = "4.0.0-dev"6556version = "4.0.0-dev"
6557source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6557source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6558dependencies = [6558dependencies = [
6559 "jsonrpsee",6559 "jsonrpsee",
6560 "pallet-transaction-payment-rpc-runtime-api",6560 "pallet-transaction-payment-rpc-runtime-api",
6561 "parity-scale-codec 3.1.2",6561 "parity-scale-codec 3.1.5",
6562 "sp-api",6562 "sp-api",
6563 "sp-blockchain",6563 "sp-blockchain",
6564 "sp-core",6564 "sp-core",
6569[[package]]6569[[package]]
6570name = "pallet-transaction-payment-rpc-runtime-api"6570name = "pallet-transaction-payment-rpc-runtime-api"
6571version = "4.0.0-dev"6571version = "4.0.0-dev"
6572source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6572source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6573dependencies = [6573dependencies = [
6574 "pallet-transaction-payment",6574 "pallet-transaction-payment",
6575 "parity-scale-codec 3.1.2",6575 "parity-scale-codec 3.1.5",
6576 "sp-api",6576 "sp-api",
6577 "sp-runtime",6577 "sp-runtime",
6578]6578]
65796579
6580[[package]]6580[[package]]
6581name = "pallet-treasury"6581name = "pallet-treasury"
6582version = "4.0.0-dev"6582version = "4.0.0-dev"
6583source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6583source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6584dependencies = [6584dependencies = [
6585 "frame-benchmarking",6585 "frame-benchmarking",
6586 "frame-support",6586 "frame-support",
6587 "frame-system",6587 "frame-system",
6588 "impl-trait-for-tuples",6588 "impl-trait-for-tuples",
6589 "pallet-balances",6589 "pallet-balances",
6590 "parity-scale-codec 3.1.2",6590 "parity-scale-codec 3.1.5",
6591 "scale-info",6591 "scale-info",
6592 "serde",6592 "serde",
6593 "sp-runtime",6593 "sp-runtime",
6607 "pallet-evm",6607 "pallet-evm",
6608 "pallet-evm-coder-substrate",6608 "pallet-evm-coder-substrate",
6609 "pallet-nonfungible",6609 "pallet-nonfungible",
6610 "parity-scale-codec 3.1.2",6610 "parity-scale-codec 3.1.5",
6611 "scale-info",6611 "scale-info",
6612 "serde",6612 "serde",
6613 "sp-core",6613 "sp-core",
6618]6618]
66196619
6620[[package]]6620[[package]]
6621name = "pallet-unq-scheduler"6621name = "pallet-unique-scheduler"
6622version = "0.1.0"6622version = "0.1.0"
6623dependencies = [6623dependencies = [
6624 "frame-benchmarking",6624 "frame-benchmarking",
6625 "frame-support",6625 "frame-support",
6626 "frame-system",6626 "frame-system",
6627 "log",6627 "log",
6628 "parity-scale-codec 3.1.2",6628 "parity-scale-codec 3.1.5",
6629 "scale-info",6629 "scale-info",
6630 "serde",6630 "serde",
6631 "sp-core",6631 "sp-core",
6639[[package]]6639[[package]]
6640name = "pallet-utility"6640name = "pallet-utility"
6641version = "4.0.0-dev"6641version = "4.0.0-dev"
6642source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6642source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6643dependencies = [6643dependencies = [
6644 "frame-benchmarking",6644 "frame-benchmarking",
6645 "frame-support",6645 "frame-support",
6646 "frame-system",6646 "frame-system",
6647 "parity-scale-codec 3.1.2",6647 "parity-scale-codec 3.1.5",
6648 "scale-info",6648 "scale-info",
6649 "sp-core",6649 "sp-core",
6650 "sp-io",6650 "sp-io",
6655[[package]]6655[[package]]
6656name = "pallet-vesting"6656name = "pallet-vesting"
6657version = "4.0.0-dev"6657version = "4.0.0-dev"
6658source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"6658source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
6659dependencies = [6659dependencies = [
6660 "frame-benchmarking",6660 "frame-benchmarking",
6661 "frame-support",6661 "frame-support",
6662 "frame-system",6662 "frame-system",
6663 "log",6663 "log",
6664 "parity-scale-codec 3.1.2",6664 "parity-scale-codec 3.1.5",
6665 "scale-info",6665 "scale-info",
6666 "sp-runtime",6666 "sp-runtime",
6667 "sp-std",6667 "sp-std",
6675 "frame-support",6675 "frame-support",
6676 "frame-system",6676 "frame-system",
6677 "log",6677 "log",
6678 "parity-scale-codec 3.1.2",6678 "parity-scale-codec 3.1.5",
6679 "scale-info",6679 "scale-info",
6680 "serde",6680 "serde",
6681 "sp-core",6681 "sp-core",
6694 "frame-support",6694 "frame-support",
6695 "frame-system",6695 "frame-system",
6696 "log",6696 "log",
6697 "parity-scale-codec 3.1.2",6697 "parity-scale-codec 3.1.5",
6698 "scale-info",6698 "scale-info",
6699 "sp-runtime",6699 "sp-runtime",
6700 "sp-std",6700 "sp-std",
6705[[package]]6705[[package]]
6706name = "parachain-info"6706name = "parachain-info"
6707version = "0.1.0"6707version = "0.1.0"
6708source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#e5889f1d71975a192c98fa43b1c18c94ffda3bbd"6708source = "git+https://github.com/paritytech/cumulus?branch=polkadot-v0.9.23#9c1470893c6bd5f33ad8eb104d159177c6847df5"
6709dependencies = [6709dependencies = [
6710 "cumulus-primitives-core",6710 "cumulus-primitives-core",
6711 "frame-support",6711 "frame-support",
6712 "frame-system",6712 "frame-system",
6713 "parity-scale-codec 3.1.2",6713 "parity-scale-codec 3.1.5",
6714 "scale-info",6714 "scale-info",
6715 "serde",6715 "serde",
6716]6716]
67506750
6751[[package]]6751[[package]]
6752name = "parity-scale-codec"6752name = "parity-scale-codec"
6753version = "3.1.2"6753version = "3.1.5"
6754source = "registry+https://github.com/rust-lang/crates.io-index"6754source = "registry+https://github.com/rust-lang/crates.io-index"
6755checksum = "e8b44461635bbb1a0300f100a841e571e7d919c81c73075ef5d152ffdb521066"6755checksum = "9182e4a71cae089267ab03e67c99368db7cd877baf50f931e5d6d4b71e195ac0"
6756dependencies = [6756dependencies = [
6757 "arrayvec 0.7.2",6757 "arrayvec 0.7.2",
6758 "bitvec 1.0.0",6758 "bitvec 1.0.0",
6759 "byte-slice-cast",6759 "byte-slice-cast",
6760 "impl-trait-for-tuples",6760 "impl-trait-for-tuples",
6761 "parity-scale-codec-derive 3.1.2",6761 "parity-scale-codec-derive 3.1.3",
6762 "serde",6762 "serde",
6763]6763]
67646764
67766776
6777[[package]]6777[[package]]
6778name = "parity-scale-codec-derive"6778name = "parity-scale-codec-derive"
6779version = "3.1.2"6779version = "3.1.3"
6780source = "registry+https://github.com/rust-lang/crates.io-index"6780source = "registry+https://github.com/rust-lang/crates.io-index"
6781checksum = "c45ed1f39709f5a89338fab50e59816b2e8815f5bb58276e7ddf9afd495f73f8"6781checksum = "9299338969a3d2f491d65f140b00ddec470858402f888af98e8642fb5e8965cd"
6782dependencies = [6782dependencies = [
6783 "proc-macro-crate",6783 "proc-macro-crate",
6784 "proc-macro2",6784 "proc-macro2",
6802 "ethereum-types",6802 "ethereum-types",
6803 "hashbrown 0.12.1",6803 "hashbrown 0.12.1",
6804 "impl-trait-for-tuples",6804 "impl-trait-for-tuples",
6805 "lru 0.7.6",6805 "lru 0.7.7",
6806 "parity-util-mem-derive",6806 "parity-util-mem-derive",
6807 "parking_lot 0.12.1",6807 "parking_lot 0.12.1",
6808 "primitive-types",6808 "primitive-types",
7086 "derive_more",7086 "derive_more",
7087 "fatality",7087 "fatality",
7088 "futures 0.3.21",7088 "futures 0.3.21",
7089 "lru 0.7.6",7089 "lru 0.7.7",
7090 "parity-scale-codec 3.1.2",7090 "parity-scale-codec 3.1.5",
7091 "polkadot-erasure-coding",7091 "polkadot-erasure-coding",
7092 "polkadot-node-network-protocol",7092 "polkadot-node-network-protocol",
7093 "polkadot-node-primitives",7093 "polkadot-node-primitives",
7108dependencies = [7108dependencies = [
7109 "fatality",7109 "fatality",
7110 "futures 0.3.21",7110 "futures 0.3.21",
7111 "lru 0.7.6",7111 "lru 0.7.7",
7112 "parity-scale-codec 3.1.2",7112 "parity-scale-codec 3.1.5",
7113 "polkadot-erasure-coding",7113 "polkadot-erasure-coding",
7114 "polkadot-node-network-protocol",7114 "polkadot-node-network-protocol",
7115 "polkadot-node-primitives",7115 "polkadot-node-primitives",
7213version = "0.9.23"7213version = "0.9.23"
7214source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"7214source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"
7215dependencies = [7215dependencies = [
7216 "parity-scale-codec 3.1.2",7216 "parity-scale-codec 3.1.5",
7217 "parity-util-mem",7217 "parity-util-mem",
7218 "scale-info",7218 "scale-info",
7219 "sp-core",7219 "sp-core",
7229 "derive_more",7229 "derive_more",
7230 "fatality",7230 "fatality",
7231 "futures 0.3.21",7231 "futures 0.3.21",
7232 "lru 0.7.6",7232 "lru 0.7.7",
7233 "parity-scale-codec 3.1.2",7233 "parity-scale-codec 3.1.5",
7234 "polkadot-erasure-coding",7234 "polkadot-erasure-coding",
7235 "polkadot-node-network-protocol",7235 "polkadot-node-network-protocol",
7236 "polkadot-node-primitives",7236 "polkadot-node-primitives",
7249version = "0.9.23"7249version = "0.9.23"
7250source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"7250source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"
7251dependencies = [7251dependencies = [
7252 "parity-scale-codec 3.1.2",7252 "parity-scale-codec 3.1.5",
7253 "polkadot-node-primitives",7253 "polkadot-node-primitives",
7254 "polkadot-primitives",7254 "polkadot-primitives",
7255 "reed-solomon-novelpoly",7255 "reed-solomon-novelpoly",
7287 "async-trait",7287 "async-trait",
7288 "bytes 1.1.0",7288 "bytes 1.1.0",
7289 "futures 0.3.21",7289 "futures 0.3.21",
7290 "parity-scale-codec 3.1.2",7290 "parity-scale-codec 3.1.5",
7291 "parking_lot 0.12.1",7291 "parking_lot 0.12.1",
7292 "polkadot-node-network-protocol",7292 "polkadot-node-network-protocol",
7293 "polkadot-node-subsystem",7293 "polkadot-node-subsystem",
7305source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"7305source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"
7306dependencies = [7306dependencies = [
7307 "futures 0.3.21",7307 "futures 0.3.21",
7308 "parity-scale-codec 3.1.2",7308 "parity-scale-codec 3.1.5",
7309 "polkadot-erasure-coding",7309 "polkadot-erasure-coding",
7310 "polkadot-node-primitives",7310 "polkadot-node-primitives",
7311 "polkadot-node-subsystem",7311 "polkadot-node-subsystem",
7327 "futures 0.3.21",7327 "futures 0.3.21",
7328 "futures-timer",7328 "futures-timer",
7329 "kvdb",7329 "kvdb",
7330 "lru 0.7.6",7330 "lru 0.7.7",
7331 "merlin",7331 "merlin",
7332 "parity-scale-codec 3.1.2",7332 "parity-scale-codec 3.1.5",
7333 "polkadot-node-jaeger",7333 "polkadot-node-jaeger",
7334 "polkadot-node-primitives",7334 "polkadot-node-primitives",
7335 "polkadot-node-subsystem",7335 "polkadot-node-subsystem",
7355 "futures 0.3.21",7355 "futures 0.3.21",
7356 "futures-timer",7356 "futures-timer",
7357 "kvdb",7357 "kvdb",
7358 "parity-scale-codec 3.1.2",7358 "parity-scale-codec 3.1.5",
7359 "polkadot-erasure-coding",7359 "polkadot-erasure-coding",
7360 "polkadot-node-primitives",7360 "polkadot-node-primitives",
7361 "polkadot-node-subsystem",7361 "polkadot-node-subsystem",
7407dependencies = [7407dependencies = [
7408 "async-trait",7408 "async-trait",
7409 "futures 0.3.21",7409 "futures 0.3.21",
7410 "parity-scale-codec 3.1.2",7410 "parity-scale-codec 3.1.5",
7411 "polkadot-node-core-pvf",7411 "polkadot-node-core-pvf",
7412 "polkadot-node-primitives",7412 "polkadot-node-primitives",
7413 "polkadot-node-subsystem",7413 "polkadot-node-subsystem",
7441 "futures 0.3.21",7441 "futures 0.3.21",
7442 "futures-timer",7442 "futures-timer",
7443 "kvdb",7443 "kvdb",
7444 "parity-scale-codec 3.1.2",7444 "parity-scale-codec 3.1.5",
7445 "polkadot-node-primitives",7445 "polkadot-node-primitives",
7446 "polkadot-node-subsystem",7446 "polkadot-node-subsystem",
7447 "polkadot-node-subsystem-util",7447 "polkadot-node-subsystem-util",
7458 "fatality",7458 "fatality",
7459 "futures 0.3.21",7459 "futures 0.3.21",
7460 "kvdb",7460 "kvdb",
7461 "lru 0.7.6",7461 "lru 0.7.7",
7462 "parity-scale-codec 3.1.2",7462 "parity-scale-codec 3.1.5",
7463 "polkadot-node-primitives",7463 "polkadot-node-primitives",
7464 "polkadot-node-subsystem",7464 "polkadot-node-subsystem",
7465 "polkadot-node-subsystem-util",7465 "polkadot-node-subsystem-util",
7515 "async-std",7515 "async-std",
7516 "futures 0.3.21",7516 "futures 0.3.21",
7517 "futures-timer",7517 "futures-timer",
7518 "parity-scale-codec 3.1.2",7518 "parity-scale-codec 3.1.5",
7519 "pin-project 1.0.10",7519 "pin-project 1.0.10",
7520 "polkadot-core-primitives",7520 "polkadot-core-primitives",
7521 "polkadot-node-subsystem-util",7521 "polkadot-node-subsystem-util",
7577 "lazy_static",7577 "lazy_static",
7578 "log",7578 "log",
7579 "mick-jaeger",7579 "mick-jaeger",
7580 "parity-scale-codec 3.1.2",7580 "parity-scale-codec 3.1.5",
7581 "parking_lot 0.12.1",7581 "parking_lot 0.12.1",
7582 "polkadot-node-primitives",7582 "polkadot-node-primitives",
7583 "polkadot-primitives",7583 "polkadot-primitives",
7595 "futures 0.3.21",7595 "futures 0.3.21",
7596 "futures-timer",7596 "futures-timer",
7597 "log",7597 "log",
7598 "parity-scale-codec 3.1.2",7598 "parity-scale-codec 3.1.5",
7599 "polkadot-primitives",7599 "polkadot-primitives",
7600 "prioritized-metered-channel",7600 "prioritized-metered-channel",
7601 "sc-cli",7601 "sc-cli",
7614 "derive_more",7614 "derive_more",
7615 "fatality",7615 "fatality",
7616 "futures 0.3.21",7616 "futures 0.3.21",
7617 "parity-scale-codec 3.1.2",7617 "parity-scale-codec 3.1.5",
7618 "polkadot-node-jaeger",7618 "polkadot-node-jaeger",
7619 "polkadot-node-primitives",7619 "polkadot-node-primitives",
7620 "polkadot-primitives",7620 "polkadot-primitives",
7621 "rand 0.8.5",7621 "rand 0.8.5",
7622 "sc-authority-discovery",7622 "sc-authority-discovery",
7623 "sc-network",7623 "sc-network",
7624 "strum 0.24.0",7624 "strum 0.24.1",
7625 "thiserror",7625 "thiserror",
7626 "tracing-gum",7626 "tracing-gum",
7627]7627]
7633dependencies = [7633dependencies = [
7634 "bounded-vec",7634 "bounded-vec",
7635 "futures 0.3.21",7635 "futures 0.3.21",
7636 "parity-scale-codec 3.1.2",7636 "parity-scale-codec 3.1.5",
7637 "polkadot-parachain",7637 "polkadot-parachain",
7638 "polkadot-primitives",7638 "polkadot-primitives",
7639 "schnorrkel",7639 "schnorrkel",
7688 "futures 0.3.21",7688 "futures 0.3.21",
7689 "itertools",7689 "itertools",
7690 "kvdb",7690 "kvdb",
7691 "lru 0.7.6",7691 "lru 0.7.7",
7692 "parity-db",7692 "parity-db",
7693 "parity-scale-codec 3.1.2",7693 "parity-scale-codec 3.1.5",
7694 "parity-util-mem",7694 "parity-util-mem",
7695 "parking_lot 0.11.2",7695 "parking_lot 0.11.2",
7696 "pin-project 1.0.10",7696 "pin-project 1.0.10",
7717dependencies = [7717dependencies = [
7718 "futures 0.3.21",7718 "futures 0.3.21",
7719 "futures-timer",7719 "futures-timer",
7720 "lru 0.7.6",7720 "lru 0.7.7",
7721 "orchestra",7721 "orchestra",
7722 "parity-util-mem",7722 "parity-util-mem",
7723 "parking_lot 0.12.1",7723 "parking_lot 0.12.1",
7739dependencies = [7739dependencies = [
7740 "derive_more",7740 "derive_more",
7741 "frame-support",7741 "frame-support",
7742 "parity-scale-codec 3.1.2",7742 "parity-scale-codec 3.1.5",
7743 "parity-util-mem",7743 "parity-util-mem",
7744 "polkadot-core-primitives",7744 "polkadot-core-primitives",
7745 "scale-info",7745 "scale-info",
7772 "bitvec 1.0.0",7772 "bitvec 1.0.0",
7773 "frame-system",7773 "frame-system",
7774 "hex-literal",7774 "hex-literal",
7775 "parity-scale-codec 3.1.2",7775 "parity-scale-codec 3.1.5",
7776 "parity-util-mem",7776 "parity-util-mem",
7777 "polkadot-core-primitives",7777 "polkadot-core-primitives",
7778 "polkadot-parachain",7778 "polkadot-parachain",
7879 "pallet-utility",7879 "pallet-utility",
7880 "pallet-vesting",7880 "pallet-vesting",
7881 "pallet-xcm",7881 "pallet-xcm",
7882 "parity-scale-codec 3.1.2",7882 "parity-scale-codec 3.1.5",
7883 "polkadot-primitives",7883 "polkadot-primitives",
7884 "polkadot-runtime-common",7884 "polkadot-runtime-common",
7885 "polkadot-runtime-constants",7885 "polkadot-runtime-constants",
7938 "pallet-transaction-payment",7938 "pallet-transaction-payment",
7939 "pallet-treasury",7939 "pallet-treasury",
7940 "pallet-vesting",7940 "pallet-vesting",
7941 "parity-scale-codec 3.1.2",7941 "parity-scale-codec 3.1.5",
7942 "polkadot-primitives",7942 "polkadot-primitives",
7943 "polkadot-runtime-parachains",7943 "polkadot-runtime-parachains",
7944 "rustc-hex",7944 "rustc-hex",
7977source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"7977source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"
7978dependencies = [7978dependencies = [
7979 "bs58",7979 "bs58",
7980 "parity-scale-codec 3.1.2",7980 "parity-scale-codec 3.1.5",
7981 "polkadot-primitives",7981 "polkadot-primitives",
7982 "sp-std",7982 "sp-std",
7983 "sp-tracing",7983 "sp-tracing",
8003 "pallet-staking",8003 "pallet-staking",
8004 "pallet-timestamp",8004 "pallet-timestamp",
8005 "pallet-vesting",8005 "pallet-vesting",
8006 "parity-scale-codec 3.1.2",8006 "parity-scale-codec 3.1.5",
8007 "polkadot-primitives",8007 "polkadot-primitives",
8008 "polkadot-runtime-metrics",8008 "polkadot-runtime-metrics",
8009 "rand 0.8.5",8009 "rand 0.8.5",
8040 "kusama-runtime",8040 "kusama-runtime",
8041 "kvdb",8041 "kvdb",
8042 "kvdb-rocksdb",8042 "kvdb-rocksdb",
8043 "lru 0.7.6",8043 "lru 0.7.7",
8044 "pallet-babe",8044 "pallet-babe",
8045 "pallet-im-online",8045 "pallet-im-online",
8046 "pallet-staking",8046 "pallet-staking",
8138 "fatality",8138 "fatality",
8139 "futures 0.3.21",8139 "futures 0.3.21",
8140 "indexmap",8140 "indexmap",
8141 "parity-scale-codec 3.1.2",8141 "parity-scale-codec 3.1.5",
8142 "polkadot-node-network-protocol",8142 "polkadot-node-network-protocol",
8143 "polkadot-node-primitives",8143 "polkadot-node-primitives",
8144 "polkadot-node-subsystem",8144 "polkadot-node-subsystem",
8155version = "0.9.23"8155version = "0.9.23"
8156source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"8156source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"
8157dependencies = [8157dependencies = [
8158 "parity-scale-codec 3.1.2",8158 "parity-scale-codec 3.1.5",
8159 "polkadot-primitives",8159 "polkadot-primitives",
8160 "sp-core",8160 "sp-core",
8161]8161]
8190 "pallet-transaction-payment-rpc-runtime-api",8190 "pallet-transaction-payment-rpc-runtime-api",
8191 "pallet-vesting",8191 "pallet-vesting",
8192 "pallet-xcm",8192 "pallet-xcm",
8193 "parity-scale-codec 3.1.2",8193 "parity-scale-codec 3.1.5",
8194 "polkadot-parachain",8194 "polkadot-parachain",
8195 "polkadot-primitives",8195 "polkadot-primitives",
8196 "polkadot-runtime-common",8196 "polkadot-runtime-common",
83838383
8384[[package]]8384[[package]]
8385name = "proc-macro2"8385name = "proc-macro2"
8386version = "1.0.39"8386version = "1.0.40"
8387source = "registry+https://github.com/rust-lang/crates.io-index"8387source = "registry+https://github.com/rust-lang/crates.io-index"
8388checksum = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f"8388checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7"
8389dependencies = [8389dependencies = [
8390 "unicode-ident",8390 "unicode-ident",
8391]8391]
85148514
8515[[package]]8515[[package]]
8516name = "quartz-runtime"8516name = "quartz-runtime"
8517version = "0.9.22"8517version = "0.9.23"
8518dependencies = [8518dependencies = [
8519 "cumulus-pallet-aura-ext",8519 "cumulus-pallet-aura-ext",
8520 "cumulus-pallet-dmp-queue",8520 "cumulus-pallet-dmp-queue",
8528 "fp-evm-mapping",8528 "fp-evm-mapping",
8529 "fp-rpc",8529 "fp-rpc",
8530 "fp-self-contained",8530 "fp-self-contained",
8531 "frame-benchmarking",
8531 "frame-executive",8532 "frame-executive",
8532 "frame-support",8533 "frame-support",
8533 "frame-system",8534 "frame-system",
8535 "frame-system-benchmarking",
8534 "frame-system-rpc-runtime-api",8536 "frame-system-rpc-runtime-api",
8535 "frame-try-runtime",8537 "frame-try-runtime",
8538 "hex-literal",
8536 "log",8539 "log",
8537 "orml-vesting",8540 "orml-vesting",
8538 "pallet-aura",8541 "pallet-aura",
8560 "pallet-transaction-payment-rpc-runtime-api",8563 "pallet-transaction-payment-rpc-runtime-api",
8561 "pallet-treasury",8564 "pallet-treasury",
8562 "pallet-unique",8565 "pallet-unique",
8563 "pallet-unq-scheduler",8566 "pallet-unique-scheduler",
8564 "pallet-xcm",8567 "pallet-xcm",
8565 "parachain-info",8568 "parachain-info",
8566 "parity-scale-codec 3.1.2",8569 "parity-scale-codec 3.1.5",
8567 "polkadot-parachain",8570 "polkadot-parachain",
8568 "rmrk-rpc",8571 "rmrk-rpc",
8569 "scale-info",8572 "scale-info",
86108613
8611[[package]]8614[[package]]
8612name = "quote"8615name = "quote"
8613version = "1.0.18"8616version = "1.0.20"
8614source = "registry+https://github.com/rust-lang/crates.io-index"8617source = "registry+https://github.com/rust-lang/crates.io-index"
8615checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1"8618checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804"
8616dependencies = [8619dependencies = [
8617 "proc-macro2",8620 "proc-macro2",
8618]8621]
8689source = "registry+https://github.com/rust-lang/crates.io-index"8692source = "registry+https://github.com/rust-lang/crates.io-index"
8690checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"8693checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
8691dependencies = [8694dependencies = [
8692 "getrandom 0.2.6",8695 "getrandom 0.2.7",
8693]8696]
86948697
8695[[package]]8698[[package]]
8774source = "registry+https://github.com/rust-lang/crates.io-index"8777source = "registry+https://github.com/rust-lang/crates.io-index"
8775checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"8778checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
8776dependencies = [8779dependencies = [
8777 "getrandom 0.2.6",8780 "getrandom 0.2.7",
8778 "redox_syscall",8781 "redox_syscall",
8779 "thiserror",8782 "thiserror",
8780]8783]
8864[[package]]8867[[package]]
8865name = "remote-externalities"8868name = "remote-externalities"
8866version = "0.10.0-dev"8869version = "0.10.0-dev"
8867source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"8870source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
8868dependencies = [8871dependencies = [
8869 "env_logger",8872 "env_logger",
8870 "jsonrpsee",8873 "jsonrpsee",
8871 "log",8874 "log",
8872 "parity-scale-codec 3.1.2",8875 "parity-scale-codec 3.1.5",
8873 "serde",8876 "serde",
8874 "serde_json",8877 "serde_json",
8875 "sp-core",8878 "sp-core",
8967name = "rmrk-traits"8970name = "rmrk-traits"
8968version = "0.1.0"8971version = "0.1.0"
8969dependencies = [8972dependencies = [
8970 "parity-scale-codec 3.1.2",8973 "parity-scale-codec 3.1.5",
8971 "scale-info",8974 "scale-info",
8972 "serde",8975 "serde",
8973]8976]
9028 "pallet-transaction-payment-rpc-runtime-api",9031 "pallet-transaction-payment-rpc-runtime-api",
9029 "pallet-utility",9032 "pallet-utility",
9030 "pallet-xcm",9033 "pallet-xcm",
9031 "parity-scale-codec 3.1.2",9034 "parity-scale-codec 3.1.5",
9032 "polkadot-parachain",9035 "polkadot-parachain",
9033 "polkadot-primitives",9036 "polkadot-primitives",
9034 "polkadot-runtime-common",9037 "polkadot-runtime-common",
91819184
9182[[package]]9185[[package]]
9183name = "rustversion"9186name = "rustversion"
9184version = "1.0.6"9187version = "1.0.7"
9185source = "registry+https://github.com/rust-lang/crates.io-index"9188source = "registry+https://github.com/rust-lang/crates.io-index"
9186checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f"9189checksum = "a0a5f7c728f5d284929a1cccb5bc19884422bfe6ef4d6c409da2c41838983fcf"
91879190
9188[[package]]9191[[package]]
9189name = "rw-stream-sink"9192name = "rw-stream-sink"
9232[[package]]9235[[package]]
9233name = "sc-allocator"9236name = "sc-allocator"
9234version = "4.1.0-dev"9237version = "4.1.0-dev"
9235source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9238source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9236dependencies = [9239dependencies = [
9237 "log",9240 "log",
9238 "sp-core",9241 "sp-core",
9243[[package]]9246[[package]]
9244name = "sc-authority-discovery"9247name = "sc-authority-discovery"
9245version = "0.10.0-dev"9248version = "0.10.0-dev"
9246source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9249source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9247dependencies = [9250dependencies = [
9248 "async-trait",9251 "async-trait",
9249 "futures 0.3.21",9252 "futures 0.3.21",
9250 "futures-timer",9253 "futures-timer",
9251 "ip_network",9254 "ip_network",
9252 "libp2p",9255 "libp2p",
9253 "log",9256 "log",
9254 "parity-scale-codec 3.1.2",9257 "parity-scale-codec 3.1.5",
9255 "prost 0.10.4",9258 "prost 0.10.4",
9256 "prost-build",9259 "prost-build",
9257 "rand 0.7.3",9260 "rand 0.7.3",
9270[[package]]9273[[package]]
9271name = "sc-basic-authorship"9274name = "sc-basic-authorship"
9272version = "0.10.0-dev"9275version = "0.10.0-dev"
9273source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9276source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9274dependencies = [9277dependencies = [
9275 "futures 0.3.21",9278 "futures 0.3.21",
9276 "futures-timer",9279 "futures-timer",
9277 "log",9280 "log",
9278 "parity-scale-codec 3.1.2",9281 "parity-scale-codec 3.1.5",
9279 "sc-block-builder",9282 "sc-block-builder",
9280 "sc-client-api",9283 "sc-client-api",
9281 "sc-proposer-metrics",9284 "sc-proposer-metrics",
9293[[package]]9296[[package]]
9294name = "sc-block-builder"9297name = "sc-block-builder"
9295version = "0.10.0-dev"9298version = "0.10.0-dev"
9296source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9299source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9297dependencies = [9300dependencies = [
9298 "parity-scale-codec 3.1.2",9301 "parity-scale-codec 3.1.5",
9299 "sc-client-api",9302 "sc-client-api",
9300 "sp-api",9303 "sp-api",
9301 "sp-block-builder",9304 "sp-block-builder",
9309[[package]]9312[[package]]
9310name = "sc-chain-spec"9313name = "sc-chain-spec"
9311version = "4.0.0-dev"9314version = "4.0.0-dev"
9312source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9315source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9313dependencies = [9316dependencies = [
9314 "impl-trait-for-tuples",9317 "impl-trait-for-tuples",
9315 "memmap2 0.5.4",9318 "memmap2 0.5.4",
9316 "parity-scale-codec 3.1.2",9319 "parity-scale-codec 3.1.5",
9317 "sc-chain-spec-derive",9320 "sc-chain-spec-derive",
9318 "sc-network",9321 "sc-network",
9319 "sc-telemetry",9322 "sc-telemetry",
9326[[package]]9329[[package]]
9327name = "sc-chain-spec-derive"9330name = "sc-chain-spec-derive"
9328version = "4.0.0-dev"9331version = "4.0.0-dev"
9329source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9332source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9330dependencies = [9333dependencies = [
9331 "proc-macro-crate",9334 "proc-macro-crate",
9332 "proc-macro2",9335 "proc-macro2",
9337[[package]]9340[[package]]
9338name = "sc-cli"9341name = "sc-cli"
9339version = "0.10.0-dev"9342version = "0.10.0-dev"
9340source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9343source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9341dependencies = [9344dependencies = [
9342 "chrono",9345 "chrono",
9343 "clap",9346 "clap",
9347 "libp2p",9350 "libp2p",
9348 "log",9351 "log",
9349 "names",9352 "names",
9350 "parity-scale-codec 3.1.2",9353 "parity-scale-codec 3.1.5",
9351 "rand 0.7.3",9354 "rand 0.7.3",
9352 "regex",9355 "regex",
9353 "rpassword",9356 "rpassword",
9376[[package]]9379[[package]]
9377name = "sc-client-api"9380name = "sc-client-api"
9378version = "4.0.0-dev"9381version = "4.0.0-dev"
9379source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9382source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9380dependencies = [9383dependencies = [
9381 "fnv",9384 "fnv",
9382 "futures 0.3.21",9385 "futures 0.3.21",
9383 "hash-db",9386 "hash-db",
9384 "log",9387 "log",
9385 "parity-scale-codec 3.1.2",9388 "parity-scale-codec 3.1.5",
9386 "parking_lot 0.12.1",9389 "parking_lot 0.12.1",
9387 "sc-executor",9390 "sc-executor",
9388 "sc-transaction-pool-api",9391 "sc-transaction-pool-api",
9404[[package]]9407[[package]]
9405name = "sc-client-db"9408name = "sc-client-db"
9406version = "0.10.0-dev"9409version = "0.10.0-dev"
9407source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9410source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9408dependencies = [9411dependencies = [
9409 "hash-db",9412 "hash-db",
9410 "kvdb",9413 "kvdb",
9413 "linked-hash-map",9416 "linked-hash-map",
9414 "log",9417 "log",
9415 "parity-db",9418 "parity-db",
9416 "parity-scale-codec 3.1.2",9419 "parity-scale-codec 3.1.5",
9417 "parking_lot 0.12.1",9420 "parking_lot 0.12.1",
9418 "sc-client-api",9421 "sc-client-api",
9419 "sc-state-db",9422 "sc-state-db",
9429[[package]]9432[[package]]
9430name = "sc-consensus"9433name = "sc-consensus"
9431version = "0.10.0-dev"9434version = "0.10.0-dev"
9432source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9435source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9433dependencies = [9436dependencies = [
9434 "async-trait",9437 "async-trait",
9435 "futures 0.3.21",9438 "futures 0.3.21",
9453[[package]]9456[[package]]
9454name = "sc-consensus-aura"9457name = "sc-consensus-aura"
9455version = "0.10.0-dev"9458version = "0.10.0-dev"
9456source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9459source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9457dependencies = [9460dependencies = [
9458 "async-trait",9461 "async-trait",
9459 "futures 0.3.21",9462 "futures 0.3.21",
9460 "log",9463 "log",
9461 "parity-scale-codec 3.1.2",9464 "parity-scale-codec 3.1.5",
9462 "sc-block-builder",9465 "sc-block-builder",
9463 "sc-client-api",9466 "sc-client-api",
9464 "sc-consensus",9467 "sc-consensus",
9482[[package]]9485[[package]]
9483name = "sc-consensus-babe"9486name = "sc-consensus-babe"
9484version = "0.10.0-dev"9487version = "0.10.0-dev"
9485source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9488source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9486dependencies = [9489dependencies = [
9487 "async-trait",9490 "async-trait",
9488 "fork-tree",9491 "fork-tree",
9492 "num-bigint",9495 "num-bigint",
9493 "num-rational 0.2.4",9496 "num-rational 0.2.4",
9494 "num-traits",9497 "num-traits",
9495 "parity-scale-codec 3.1.2",9498 "parity-scale-codec 3.1.5",
9496 "parking_lot 0.12.1",9499 "parking_lot 0.12.1",
9497 "rand 0.7.3",9500 "rand 0.7.3",
9498 "retain_mut",9501 "retain_mut",
9525[[package]]9528[[package]]
9526name = "sc-consensus-babe-rpc"9529name = "sc-consensus-babe-rpc"
9527version = "0.10.0-dev"9530version = "0.10.0-dev"
9528source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9531source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9529dependencies = [9532dependencies = [
9530 "futures 0.3.21",9533 "futures 0.3.21",
9531 "jsonrpsee",9534 "jsonrpsee",
9547[[package]]9550[[package]]
9548name = "sc-consensus-epochs"9551name = "sc-consensus-epochs"
9549version = "0.10.0-dev"9552version = "0.10.0-dev"
9550source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9553source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9551dependencies = [9554dependencies = [
9552 "fork-tree",9555 "fork-tree",
9553 "parity-scale-codec 3.1.2",9556 "parity-scale-codec 3.1.5",
9554 "sc-client-api",9557 "sc-client-api",
9555 "sc-consensus",9558 "sc-consensus",
9556 "sp-blockchain",9559 "sp-blockchain",
9560[[package]]9563[[package]]
9561name = "sc-consensus-manual-seal"9564name = "sc-consensus-manual-seal"
9562version = "0.10.0-dev"9565version = "0.10.0-dev"
9563source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9566source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9564dependencies = [9567dependencies = [
9565 "assert_matches",9568 "assert_matches",
9566 "async-trait",9569 "async-trait",
9567 "futures 0.3.21",9570 "futures 0.3.21",
9568 "jsonrpsee",9571 "jsonrpsee",
9569 "log",9572 "log",
9570 "parity-scale-codec 3.1.2",9573 "parity-scale-codec 3.1.5",
9571 "sc-client-api",9574 "sc-client-api",
9572 "sc-consensus",9575 "sc-consensus",
9573 "sc-consensus-aura",9576 "sc-consensus-aura",
9594[[package]]9597[[package]]
9595name = "sc-consensus-slots"9598name = "sc-consensus-slots"
9596version = "0.10.0-dev"9599version = "0.10.0-dev"
9597source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9600source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9598dependencies = [9601dependencies = [
9599 "async-trait",9602 "async-trait",
9600 "futures 0.3.21",9603 "futures 0.3.21",
9601 "futures-timer",9604 "futures-timer",
9602 "log",9605 "log",
9603 "parity-scale-codec 3.1.2",9606 "parity-scale-codec 3.1.5",
9604 "sc-client-api",9607 "sc-client-api",
9605 "sc-consensus",9608 "sc-consensus",
9606 "sc-telemetry",9609 "sc-telemetry",
9619[[package]]9622[[package]]
9620name = "sc-consensus-uncles"9623name = "sc-consensus-uncles"
9621version = "0.10.0-dev"9624version = "0.10.0-dev"
9622source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9625source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9623dependencies = [9626dependencies = [
9624 "sc-client-api",9627 "sc-client-api",
9625 "sp-authorship",9628 "sp-authorship",
9630[[package]]9633[[package]]
9631name = "sc-executor"9634name = "sc-executor"
9632version = "0.10.0-dev"9635version = "0.10.0-dev"
9633source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9636source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9634dependencies = [9637dependencies = [
9635 "lazy_static",9638 "lazy_static",
9636 "lru 0.7.6",9639 "lru 0.7.7",
9637 "parity-scale-codec 3.1.2",9640 "parity-scale-codec 3.1.5",
9638 "parking_lot 0.12.1",9641 "parking_lot 0.12.1",
9639 "sc-executor-common",9642 "sc-executor-common",
9640 "sc-executor-wasmi",9643 "sc-executor-wasmi",
9657[[package]]9660[[package]]
9658name = "sc-executor-common"9661name = "sc-executor-common"
9659version = "0.10.0-dev"9662version = "0.10.0-dev"
9660source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9663source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9661dependencies = [9664dependencies = [
9662 "environmental",9665 "environmental",
9663 "parity-scale-codec 3.1.2",9666 "parity-scale-codec 3.1.5",
9664 "sc-allocator",9667 "sc-allocator",
9665 "sp-maybe-compressed-blob",9668 "sp-maybe-compressed-blob",
9666 "sp-sandbox",9669 "sp-sandbox",
9674[[package]]9677[[package]]
9675name = "sc-executor-wasmi"9678name = "sc-executor-wasmi"
9676version = "0.10.0-dev"9679version = "0.10.0-dev"
9677source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9680source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9678dependencies = [9681dependencies = [
9679 "log",9682 "log",
9680 "parity-scale-codec 3.1.2",9683 "parity-scale-codec 3.1.5",
9681 "sc-allocator",9684 "sc-allocator",
9682 "sc-executor-common",9685 "sc-executor-common",
9683 "sp-runtime-interface",9686 "sp-runtime-interface",
9689[[package]]9692[[package]]
9690name = "sc-executor-wasmtime"9693name = "sc-executor-wasmtime"
9691version = "0.10.0-dev"9694version = "0.10.0-dev"
9692source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9695source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9693dependencies = [9696dependencies = [
9694 "cfg-if 1.0.0",9697 "cfg-if 1.0.0",
9695 "libc",9698 "libc",
9696 "log",9699 "log",
9697 "parity-scale-codec 3.1.2",9700 "parity-scale-codec 3.1.5",
9698 "parity-wasm 0.42.2",9701 "parity-wasm 0.42.2",
9699 "sc-allocator",9702 "sc-allocator",
9700 "sc-executor-common",9703 "sc-executor-common",
9707[[package]]9710[[package]]
9708name = "sc-finality-grandpa"9711name = "sc-finality-grandpa"
9709version = "0.10.0-dev"9712version = "0.10.0-dev"
9710source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9713source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9711dependencies = [9714dependencies = [
9712 "ahash",9715 "ahash",
9713 "async-trait",9716 "async-trait",
9718 "futures-timer",9721 "futures-timer",
9719 "hex",9722 "hex",
9720 "log",9723 "log",
9721 "parity-scale-codec 3.1.2",9724 "parity-scale-codec 3.1.5",
9722 "parking_lot 0.12.1",9725 "parking_lot 0.12.1",
9723 "rand 0.8.5",9726 "rand 0.8.5",
9724 "sc-block-builder",9727 "sc-block-builder",
9747[[package]]9750[[package]]
9748name = "sc-finality-grandpa-rpc"9751name = "sc-finality-grandpa-rpc"
9749version = "0.10.0-dev"9752version = "0.10.0-dev"
9750source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9753source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9751dependencies = [9754dependencies = [
9752 "finality-grandpa",9755 "finality-grandpa",
9753 "futures 0.3.21",9756 "futures 0.3.21",
9754 "jsonrpsee",9757 "jsonrpsee",
9755 "log",9758 "log",
9756 "parity-scale-codec 3.1.2",9759 "parity-scale-codec 3.1.5",
9757 "sc-client-api",9760 "sc-client-api",
9758 "sc-finality-grandpa",9761 "sc-finality-grandpa",
9759 "sc-rpc",9762 "sc-rpc",
9768[[package]]9771[[package]]
9769name = "sc-informant"9772name = "sc-informant"
9770version = "0.10.0-dev"9773version = "0.10.0-dev"
9771source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9774source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9772dependencies = [9775dependencies = [
9773 "ansi_term",9776 "ansi_term",
9774 "futures 0.3.21",9777 "futures 0.3.21",
9785[[package]]9788[[package]]
9786name = "sc-keystore"9789name = "sc-keystore"
9787version = "4.0.0-dev"9790version = "4.0.0-dev"
9788source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9791source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9789dependencies = [9792dependencies = [
9790 "async-trait",9793 "async-trait",
9791 "hex",9794 "hex",
9800[[package]]9803[[package]]
9801name = "sc-network"9804name = "sc-network"
9802version = "0.10.0-dev"9805version = "0.10.0-dev"
9803source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9806source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9804dependencies = [9807dependencies = [
9805 "async-trait",9808 "async-trait",
9806 "asynchronous-codec",9809 "asynchronous-codec",
9818 "linked-hash-map",9821 "linked-hash-map",
9819 "linked_hash_set",9822 "linked_hash_set",
9820 "log",9823 "log",
9821 "lru 0.7.6",9824 "lru 0.7.7",
9822 "parity-scale-codec 3.1.2",9825 "parity-scale-codec 3.1.5",
9823 "parking_lot 0.12.1",9826 "parking_lot 0.12.1",
9824 "pin-project 1.0.10",9827 "pin-project 1.0.10",
9825 "prost 0.10.4",9828 "prost 0.10.4",
9852[[package]]9855[[package]]
9853name = "sc-network-common"9856name = "sc-network-common"
9854version = "0.10.0-dev"9857version = "0.10.0-dev"
9855source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9858source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9856dependencies = [9859dependencies = [
9857 "futures 0.3.21",9860 "futures 0.3.21",
9858 "libp2p",9861 "libp2p",
9859 "parity-scale-codec 3.1.2",9862 "parity-scale-codec 3.1.5",
9860 "prost-build",9863 "prost-build",
9861 "sc-peerset",9864 "sc-peerset",
9862 "smallvec",9865 "smallvec",
9865[[package]]9868[[package]]
9866name = "sc-network-gossip"9869name = "sc-network-gossip"
9867version = "0.10.0-dev"9870version = "0.10.0-dev"
9868source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9871source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9869dependencies = [9872dependencies = [
9870 "ahash",9873 "ahash",
9871 "futures 0.3.21",9874 "futures 0.3.21",
9872 "futures-timer",9875 "futures-timer",
9873 "libp2p",9876 "libp2p",
9874 "log",9877 "log",
9875 "lru 0.7.6",9878 "lru 0.7.7",
9876 "sc-network",9879 "sc-network",
9877 "sp-runtime",9880 "sp-runtime",
9878 "substrate-prometheus-endpoint",9881 "substrate-prometheus-endpoint",
9882[[package]]9885[[package]]
9883name = "sc-network-light"9886name = "sc-network-light"
9884version = "0.10.0-dev"9887version = "0.10.0-dev"
9885source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9888source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9886dependencies = [9889dependencies = [
9887 "futures 0.3.21",9890 "futures 0.3.21",
9888 "libp2p",9891 "libp2p",
9889 "log",9892 "log",
9890 "parity-scale-codec 3.1.2",9893 "parity-scale-codec 3.1.5",
9891 "prost 0.10.4",9894 "prost 0.10.4",
9892 "prost-build",9895 "prost-build",
9893 "sc-client-api",9896 "sc-client-api",
9902[[package]]9905[[package]]
9903name = "sc-network-sync"9906name = "sc-network-sync"
9904version = "0.10.0-dev"9907version = "0.10.0-dev"
9905source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9908source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9906dependencies = [9909dependencies = [
9907 "bitflags",9910 "bitflags",
9908 "either",9911 "either",
9909 "fork-tree",9912 "fork-tree",
9910 "futures 0.3.21",9913 "futures 0.3.21",
9911 "libp2p",9914 "libp2p",
9912 "log",9915 "log",
9913 "lru 0.7.6",9916 "lru 0.7.7",
9914 "parity-scale-codec 3.1.2",9917 "parity-scale-codec 3.1.5",
9915 "prost 0.10.4",9918 "prost 0.10.4",
9916 "prost-build",9919 "prost-build",
9917 "sc-client-api",9920 "sc-client-api",
9931[[package]]9934[[package]]
9932name = "sc-offchain"9935name = "sc-offchain"
9933version = "4.0.0-dev"9936version = "4.0.0-dev"
9934source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9937source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9935dependencies = [9938dependencies = [
9936 "bytes 1.1.0",9939 "bytes 1.1.0",
9937 "fnv",9940 "fnv",
9942 "hyper-rustls",9945 "hyper-rustls",
9943 "num_cpus",9946 "num_cpus",
9944 "once_cell",9947 "once_cell",
9945 "parity-scale-codec 3.1.2",9948 "parity-scale-codec 3.1.5",
9946 "parking_lot 0.12.1",9949 "parking_lot 0.12.1",
9947 "rand 0.7.3",9950 "rand 0.7.3",
9948 "sc-client-api",9951 "sc-client-api",
9959[[package]]9962[[package]]
9960name = "sc-peerset"9963name = "sc-peerset"
9961version = "4.0.0-dev"9964version = "4.0.0-dev"
9962source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9965source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9963dependencies = [9966dependencies = [
9964 "futures 0.3.21",9967 "futures 0.3.21",
9965 "libp2p",9968 "libp2p",
9972[[package]]9975[[package]]
9973name = "sc-proposer-metrics"9976name = "sc-proposer-metrics"
9974version = "0.10.0-dev"9977version = "0.10.0-dev"
9975source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9978source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9976dependencies = [9979dependencies = [
9977 "log",9980 "log",
9978 "substrate-prometheus-endpoint",9981 "substrate-prometheus-endpoint",
9981[[package]]9984[[package]]
9982name = "sc-rpc"9985name = "sc-rpc"
9983version = "4.0.0-dev"9986version = "4.0.0-dev"
9984source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"9987source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
9985dependencies = [9988dependencies = [
9986 "futures 0.3.21",9989 "futures 0.3.21",
9987 "hash-db",9990 "hash-db",
9988 "jsonrpsee",9991 "jsonrpsee",
9989 "log",9992 "log",
9990 "parity-scale-codec 3.1.2",9993 "parity-scale-codec 3.1.5",
9991 "parking_lot 0.12.1",9994 "parking_lot 0.12.1",
9992 "sc-block-builder",9995 "sc-block-builder",
9993 "sc-chain-spec",9996 "sc-chain-spec",
10011[[package]]10014[[package]]
10012name = "sc-rpc-api"10015name = "sc-rpc-api"
10013version = "0.10.0-dev"10016version = "0.10.0-dev"
10014source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10017source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10015dependencies = [10018dependencies = [
10016 "futures 0.3.21",10019 "futures 0.3.21",
10017 "jsonrpsee",10020 "jsonrpsee",
10018 "log",10021 "log",
10019 "parity-scale-codec 3.1.2",10022 "parity-scale-codec 3.1.5",
10020 "parking_lot 0.12.1",10023 "parking_lot 0.12.1",
10021 "sc-chain-spec",10024 "sc-chain-spec",
10022 "sc-transaction-pool-api",10025 "sc-transaction-pool-api",
10034[[package]]10037[[package]]
10035name = "sc-rpc-server"10038name = "sc-rpc-server"
10036version = "4.0.0-dev"10039version = "4.0.0-dev"
10037source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10040source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10038dependencies = [10041dependencies = [
10039 "futures 0.3.21",10042 "futures 0.3.21",
10040 "jsonrpsee",10043 "jsonrpsee",
10047[[package]]10050[[package]]
10048name = "sc-service"10051name = "sc-service"
10049version = "0.10.0-dev"10052version = "0.10.0-dev"
10050source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10053source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10051dependencies = [10054dependencies = [
10052 "async-trait",10055 "async-trait",
10053 "directories",10056 "directories",
10057 "hash-db",10060 "hash-db",
10058 "jsonrpsee",10061 "jsonrpsee",
10059 "log",10062 "log",
10060 "parity-scale-codec 3.1.2",10063 "parity-scale-codec 3.1.5",
10061 "parity-util-mem",10064 "parity-util-mem",
10062 "parking_lot 0.12.1",10065 "parking_lot 0.12.1",
10063 "pin-project 1.0.10",10066 "pin-project 1.0.10",
10112[[package]]10115[[package]]
10113name = "sc-state-db"10116name = "sc-state-db"
10114version = "0.10.0-dev"10117version = "0.10.0-dev"
10115source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10118source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10116dependencies = [10119dependencies = [
10117 "log",10120 "log",
10118 "parity-scale-codec 3.1.2",10121 "parity-scale-codec 3.1.5",
10119 "parity-util-mem",10122 "parity-util-mem",
10120 "parity-util-mem-derive",10123 "parity-util-mem-derive",
10121 "parking_lot 0.12.1",10124 "parking_lot 0.12.1",
10126[[package]]10129[[package]]
10127name = "sc-sync-state-rpc"10130name = "sc-sync-state-rpc"
10128version = "0.10.0-dev"10131version = "0.10.0-dev"
10129source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10132source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10130dependencies = [10133dependencies = [
10131 "jsonrpsee",10134 "jsonrpsee",
10132 "parity-scale-codec 3.1.2",10135 "parity-scale-codec 3.1.5",
10133 "sc-chain-spec",10136 "sc-chain-spec",
10134 "sc-client-api",10137 "sc-client-api",
10135 "sc-consensus-babe",10138 "sc-consensus-babe",
10145[[package]]10148[[package]]
10146name = "sc-sysinfo"10149name = "sc-sysinfo"
10147version = "6.0.0-dev"10150version = "6.0.0-dev"
10148source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10151source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10149dependencies = [10152dependencies = [
10150 "futures 0.3.21",10153 "futures 0.3.21",
10151 "libc",10154 "libc",
10164[[package]]10167[[package]]
10165name = "sc-telemetry"10168name = "sc-telemetry"
10166version = "4.0.0-dev"10169version = "4.0.0-dev"
10167source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10170source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10168dependencies = [10171dependencies = [
10169 "chrono",10172 "chrono",
10170 "futures 0.3.21",10173 "futures 0.3.21",
10182[[package]]10185[[package]]
10183name = "sc-tracing"10186name = "sc-tracing"
10184version = "4.0.0-dev"10187version = "4.0.0-dev"
10185source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10188source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10186dependencies = [10189dependencies = [
10187 "ansi_term",10190 "ansi_term",
10188 "atty",10191 "atty",
10213[[package]]10216[[package]]
10214name = "sc-tracing-proc-macro"10217name = "sc-tracing-proc-macro"
10215version = "4.0.0-dev"10218version = "4.0.0-dev"
10216source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10219source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10217dependencies = [10220dependencies = [
10218 "proc-macro-crate",10221 "proc-macro-crate",
10219 "proc-macro2",10222 "proc-macro2",
10224[[package]]10227[[package]]
10225name = "sc-transaction-pool"10228name = "sc-transaction-pool"
10226version = "4.0.0-dev"10229version = "4.0.0-dev"
10227source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10230source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10228dependencies = [10231dependencies = [
10229 "futures 0.3.21",10232 "futures 0.3.21",
10230 "futures-timer",10233 "futures-timer",
10231 "linked-hash-map",10234 "linked-hash-map",
10232 "log",10235 "log",
10233 "parity-scale-codec 3.1.2",10236 "parity-scale-codec 3.1.5",
10234 "parity-util-mem",10237 "parity-util-mem",
10235 "parking_lot 0.12.1",10238 "parking_lot 0.12.1",
10236 "retain_mut",10239 "retain_mut",
10251[[package]]10254[[package]]
10252name = "sc-transaction-pool-api"10255name = "sc-transaction-pool-api"
10253version = "4.0.0-dev"10256version = "4.0.0-dev"
10254source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10257source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10255dependencies = [10258dependencies = [
10256 "futures 0.3.21",10259 "futures 0.3.21",
10257 "log",10260 "log",
10264[[package]]10267[[package]]
10265name = "sc-utils"10268name = "sc-utils"
10266version = "4.0.0-dev"10269version = "4.0.0-dev"
10267source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10270source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10268dependencies = [10271dependencies = [
10269 "futures 0.3.21",10272 "futures 0.3.21",
10270 "futures-timer",10273 "futures-timer",
10283 "bitvec 1.0.0",10286 "bitvec 1.0.0",
10284 "cfg-if 1.0.0",10287 "cfg-if 1.0.0",
10285 "derive_more",10288 "derive_more",
10286 "parity-scale-codec 3.1.2",10289 "parity-scale-codec 3.1.5",
10287 "scale-info-derive",10290 "scale-info-derive",
10288 "serde",10291 "serde",
10289]10292]
10630source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"10633source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.23#a7e188cd9665c735f4b9d5a58cdbc4dd1850eae0"
10631dependencies = [10634dependencies = [
10632 "enumn",10635 "enumn",
10633 "parity-scale-codec 3.1.2",10636 "parity-scale-codec 3.1.5",
10634 "paste",10637 "paste",
10635 "sp-runtime",10638 "sp-runtime",
10636 "sp-std",10639 "sp-std",
10703[[package]]10706[[package]]
10704name = "sp-api"10707name = "sp-api"
10705version = "4.0.0-dev"10708version = "4.0.0-dev"
10706source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10709source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10707dependencies = [10710dependencies = [
10708 "hash-db",10711 "hash-db",
10709 "log",10712 "log",
10710 "parity-scale-codec 3.1.2",10713 "parity-scale-codec 3.1.5",
10711 "sp-api-proc-macro",10714 "sp-api-proc-macro",
10712 "sp-core",10715 "sp-core",
10713 "sp-runtime",10716 "sp-runtime",
10720[[package]]10723[[package]]
10721name = "sp-api-proc-macro"10724name = "sp-api-proc-macro"
10722version = "4.0.0-dev"10725version = "4.0.0-dev"
10723source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10726source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10724dependencies = [10727dependencies = [
10725 "blake2",10728 "blake2",
10726 "proc-macro-crate",10729 "proc-macro-crate",
10732[[package]]10735[[package]]
10733name = "sp-application-crypto"10736name = "sp-application-crypto"
10734version = "6.0.0"10737version = "6.0.0"
10735source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10738source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10736dependencies = [10739dependencies = [
10737 "parity-scale-codec 3.1.2",10740 "parity-scale-codec 3.1.5",
10738 "scale-info",10741 "scale-info",
10739 "serde",10742 "serde",
10740 "sp-core",10743 "sp-core",
10745[[package]]10748[[package]]
10746name = "sp-arithmetic"10749name = "sp-arithmetic"
10747version = "5.0.0"10750version = "5.0.0"
10748source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10751source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10749dependencies = [10752dependencies = [
10750 "integer-sqrt",10753 "integer-sqrt",
10751 "num-traits",10754 "num-traits",
10752 "parity-scale-codec 3.1.2",10755 "parity-scale-codec 3.1.5",
10753 "scale-info",10756 "scale-info",
10754 "serde",10757 "serde",
10755 "sp-debug-derive",10758 "sp-debug-derive",
10760[[package]]10763[[package]]
10761name = "sp-authority-discovery"10764name = "sp-authority-discovery"
10762version = "4.0.0-dev"10765version = "4.0.0-dev"
10763source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10766source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10764dependencies = [10767dependencies = [
10765 "parity-scale-codec 3.1.2",10768 "parity-scale-codec 3.1.5",
10766 "scale-info",10769 "scale-info",
10767 "sp-api",10770 "sp-api",
10768 "sp-application-crypto",10771 "sp-application-crypto",
10773[[package]]10776[[package]]
10774name = "sp-authorship"10777name = "sp-authorship"
10775version = "4.0.0-dev"10778version = "4.0.0-dev"
10776source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10779source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10777dependencies = [10780dependencies = [
10778 "async-trait",10781 "async-trait",
10779 "parity-scale-codec 3.1.2",10782 "parity-scale-codec 3.1.5",
10780 "sp-inherents",10783 "sp-inherents",
10781 "sp-runtime",10784 "sp-runtime",
10782 "sp-std",10785 "sp-std",
10785[[package]]10788[[package]]
10786name = "sp-block-builder"10789name = "sp-block-builder"
10787version = "4.0.0-dev"10790version = "4.0.0-dev"
10788source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10791source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10789dependencies = [10792dependencies = [
10790 "parity-scale-codec 3.1.2",10793 "parity-scale-codec 3.1.5",
10791 "sp-api",10794 "sp-api",
10792 "sp-inherents",10795 "sp-inherents",
10793 "sp-runtime",10796 "sp-runtime",
10797[[package]]10800[[package]]
10798name = "sp-blockchain"10801name = "sp-blockchain"
10799version = "4.0.0-dev"10802version = "4.0.0-dev"
10800source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10803source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10801dependencies = [10804dependencies = [
10802 "futures 0.3.21",10805 "futures 0.3.21",
10803 "log",10806 "log",
10804 "lru 0.7.6",10807 "lru 0.7.7",
10805 "parity-scale-codec 3.1.2",10808 "parity-scale-codec 3.1.5",
10806 "parking_lot 0.12.1",10809 "parking_lot 0.12.1",
10807 "sp-api",10810 "sp-api",
10808 "sp-consensus",10811 "sp-consensus",
10815[[package]]10818[[package]]
10816name = "sp-consensus"10819name = "sp-consensus"
10817version = "0.10.0-dev"10820version = "0.10.0-dev"
10818source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10821source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10819dependencies = [10822dependencies = [
10820 "async-trait",10823 "async-trait",
10821 "futures 0.3.21",10824 "futures 0.3.21",
10822 "futures-timer",10825 "futures-timer",
10823 "log",10826 "log",
10824 "parity-scale-codec 3.1.2",10827 "parity-scale-codec 3.1.5",
10825 "sp-core",10828 "sp-core",
10826 "sp-inherents",10829 "sp-inherents",
10827 "sp-runtime",10830 "sp-runtime",
10834[[package]]10837[[package]]
10835name = "sp-consensus-aura"10838name = "sp-consensus-aura"
10836version = "0.10.0-dev"10839version = "0.10.0-dev"
10837source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10840source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10838dependencies = [10841dependencies = [
10839 "async-trait",10842 "async-trait",
10840 "parity-scale-codec 3.1.2",10843 "parity-scale-codec 3.1.5",
10841 "scale-info",10844 "scale-info",
10842 "sp-api",10845 "sp-api",
10843 "sp-application-crypto",10846 "sp-application-crypto",
10852[[package]]10855[[package]]
10853name = "sp-consensus-babe"10856name = "sp-consensus-babe"
10854version = "0.10.0-dev"10857version = "0.10.0-dev"
10855source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10858source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10856dependencies = [10859dependencies = [
10857 "async-trait",10860 "async-trait",
10858 "merlin",10861 "merlin",
10859 "parity-scale-codec 3.1.2",10862 "parity-scale-codec 3.1.5",
10860 "scale-info",10863 "scale-info",
10861 "serde",10864 "serde",
10862 "sp-api",10865 "sp-api",
10875[[package]]10878[[package]]
10876name = "sp-consensus-slots"10879name = "sp-consensus-slots"
10877version = "0.10.0-dev"10880version = "0.10.0-dev"
10878source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10881source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10879dependencies = [10882dependencies = [
10880 "parity-scale-codec 3.1.2",10883 "parity-scale-codec 3.1.5",
10881 "scale-info",10884 "scale-info",
10882 "serde",10885 "serde",
10883 "sp-arithmetic",10886 "sp-arithmetic",
10889[[package]]10892[[package]]
10890name = "sp-consensus-vrf"10893name = "sp-consensus-vrf"
10891version = "0.10.0-dev"10894version = "0.10.0-dev"
10892source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10895source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10893dependencies = [10896dependencies = [
10894 "parity-scale-codec 3.1.2",10897 "parity-scale-codec 3.1.5",
10895 "scale-info",10898 "scale-info",
10896 "schnorrkel",10899 "schnorrkel",
10897 "sp-core",10900 "sp-core",
10902[[package]]10905[[package]]
10903name = "sp-core"10906name = "sp-core"
10904version = "6.0.0"10907version = "6.0.0"
10905source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10908source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10906dependencies = [10909dependencies = [
10907 "base58",10910 "base58",
10908 "bitflags",10911 "bitflags",
10920 "log",10923 "log",
10921 "merlin",10924 "merlin",
10922 "num-traits",10925 "num-traits",
10923 "parity-scale-codec 3.1.2",10926 "parity-scale-codec 3.1.5",
10924 "parity-util-mem",10927 "parity-util-mem",
10925 "parking_lot 0.12.1",10928 "parking_lot 0.12.1",
10926 "primitive-types",10929 "primitive-types",
10948[[package]]10951[[package]]
10949name = "sp-core-hashing"10952name = "sp-core-hashing"
10950version = "4.0.0"10953version = "4.0.0"
10951source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10954source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10952dependencies = [10955dependencies = [
10953 "blake2",10956 "blake2",
10954 "byteorder",10957 "byteorder",
10962[[package]]10965[[package]]
10963name = "sp-core-hashing-proc-macro"10966name = "sp-core-hashing-proc-macro"
10964version = "5.0.0"10967version = "5.0.0"
10965source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10968source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10966dependencies = [10969dependencies = [
10967 "proc-macro2",10970 "proc-macro2",
10968 "quote",10971 "quote",
10973[[package]]10976[[package]]
10974name = "sp-database"10977name = "sp-database"
10975version = "4.0.0-dev"10978version = "4.0.0-dev"
10976source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10979source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10977dependencies = [10980dependencies = [
10978 "kvdb",10981 "kvdb",
10979 "parking_lot 0.12.1",10982 "parking_lot 0.12.1",
10982[[package]]10985[[package]]
10983name = "sp-debug-derive"10986name = "sp-debug-derive"
10984version = "4.0.0"10987version = "4.0.0"
10985source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10988source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10986dependencies = [10989dependencies = [
10987 "proc-macro2",10990 "proc-macro2",
10988 "quote",10991 "quote",
10992[[package]]10995[[package]]
10993name = "sp-externalities"10996name = "sp-externalities"
10994version = "0.12.0"10997version = "0.12.0"
10995source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"10998source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
10996dependencies = [10999dependencies = [
10997 "environmental",11000 "environmental",
10998 "parity-scale-codec 3.1.2",11001 "parity-scale-codec 3.1.5",
10999 "sp-std",11002 "sp-std",
11000 "sp-storage",11003 "sp-storage",
11001]11004]
1100211005
11003[[package]]11006[[package]]
11004name = "sp-finality-grandpa"11007name = "sp-finality-grandpa"
11005version = "4.0.0-dev"11008version = "4.0.0-dev"
11006source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11009source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11007dependencies = [11010dependencies = [
11008 "finality-grandpa",11011 "finality-grandpa",
11009 "log",11012 "log",
11010 "parity-scale-codec 3.1.2",11013 "parity-scale-codec 3.1.5",
11011 "scale-info",11014 "scale-info",
11012 "serde",11015 "serde",
11013 "sp-api",11016 "sp-api",
11021[[package]]11024[[package]]
11022name = "sp-inherents"11025name = "sp-inherents"
11023version = "4.0.0-dev"11026version = "4.0.0-dev"
11024source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11027source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11025dependencies = [11028dependencies = [
11026 "async-trait",11029 "async-trait",
11027 "impl-trait-for-tuples",11030 "impl-trait-for-tuples",
11028 "parity-scale-codec 3.1.2",11031 "parity-scale-codec 3.1.5",
11029 "sp-core",11032 "sp-core",
11030 "sp-runtime",11033 "sp-runtime",
11031 "sp-std",11034 "sp-std",
11035[[package]]11038[[package]]
11036name = "sp-io"11039name = "sp-io"
11037version = "6.0.0"11040version = "6.0.0"
11038source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11041source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11039dependencies = [11042dependencies = [
11040 "futures 0.3.21",11043 "futures 0.3.21",
11041 "hash-db",11044 "hash-db",
11042 "libsecp256k1",11045 "libsecp256k1",
11043 "log",11046 "log",
11044 "parity-scale-codec 3.1.2",11047 "parity-scale-codec 3.1.5",
11045 "parking_lot 0.12.1",11048 "parking_lot 0.12.1",
11046 "secp256k1",11049 "secp256k1",
11047 "sp-core",11050 "sp-core",
11060[[package]]11063[[package]]
11061name = "sp-keyring"11064name = "sp-keyring"
11062version = "6.0.0"11065version = "6.0.0"
11063source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11066source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11064dependencies = [11067dependencies = [
11065 "lazy_static",11068 "lazy_static",
11066 "sp-core",11069 "sp-core",
11071[[package]]11074[[package]]
11072name = "sp-keystore"11075name = "sp-keystore"
11073version = "0.12.0"11076version = "0.12.0"
11074source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11077source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11075dependencies = [11078dependencies = [
11076 "async-trait",11079 "async-trait",
11077 "futures 0.3.21",11080 "futures 0.3.21",
11078 "merlin",11081 "merlin",
11079 "parity-scale-codec 3.1.2",11082 "parity-scale-codec 3.1.5",
11080 "parking_lot 0.12.1",11083 "parking_lot 0.12.1",
11081 "schnorrkel",11084 "schnorrkel",
11082 "serde",11085 "serde",
11088[[package]]11091[[package]]
11089name = "sp-maybe-compressed-blob"11092name = "sp-maybe-compressed-blob"
11090version = "4.1.0-dev"11093version = "4.1.0-dev"
11091source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11094source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11092dependencies = [11095dependencies = [
11093 "thiserror",11096 "thiserror",
11094 "zstd",11097 "zstd",
11097[[package]]11100[[package]]
11098name = "sp-mmr-primitives"11101name = "sp-mmr-primitives"
11099version = "4.0.0-dev"11102version = "4.0.0-dev"
11100source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11103source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11101dependencies = [11104dependencies = [
11102 "log",11105 "log",
11103 "parity-scale-codec 3.1.2",11106 "parity-scale-codec 3.1.5",
11104 "serde",11107 "serde",
11105 "sp-api",11108 "sp-api",
11106 "sp-core",11109 "sp-core",
11112[[package]]11115[[package]]
11113name = "sp-npos-elections"11116name = "sp-npos-elections"
11114version = "4.0.0-dev"11117version = "4.0.0-dev"
11115source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11118source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11116dependencies = [11119dependencies = [
11117 "parity-scale-codec 3.1.2",11120 "parity-scale-codec 3.1.5",
11118 "scale-info",11121 "scale-info",
11119 "serde",11122 "serde",
11120 "sp-arithmetic",11123 "sp-arithmetic",
11126[[package]]11129[[package]]
11127name = "sp-offchain"11130name = "sp-offchain"
11128version = "4.0.0-dev"11131version = "4.0.0-dev"
11129source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11132source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11130dependencies = [11133dependencies = [
11131 "sp-api",11134 "sp-api",
11132 "sp-core",11135 "sp-core",
11136[[package]]11139[[package]]
11137name = "sp-panic-handler"11140name = "sp-panic-handler"
11138version = "4.0.0"11141version = "4.0.0"
11139source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11142source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11140dependencies = [11143dependencies = [
11141 "backtrace",11144 "backtrace",
11142 "lazy_static",11145 "lazy_static",
11146[[package]]11149[[package]]
11147name = "sp-rpc"11150name = "sp-rpc"
11148version = "6.0.0"11151version = "6.0.0"
11149source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11152source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11150dependencies = [11153dependencies = [
11151 "rustc-hash",11154 "rustc-hash",
11152 "serde",11155 "serde",
11156[[package]]11159[[package]]
11157name = "sp-runtime"11160name = "sp-runtime"
11158version = "6.0.0"11161version = "6.0.0"
11159source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11162source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11160dependencies = [11163dependencies = [
11161 "either",11164 "either",
11162 "hash256-std-hasher",11165 "hash256-std-hasher",
11163 "impl-trait-for-tuples",11166 "impl-trait-for-tuples",
11164 "log",11167 "log",
11165 "parity-scale-codec 3.1.2",11168 "parity-scale-codec 3.1.5",
11166 "parity-util-mem",11169 "parity-util-mem",
11167 "paste",11170 "paste",
11168 "rand 0.7.3",11171 "rand 0.7.3",
11178[[package]]11181[[package]]
11179name = "sp-runtime-interface"11182name = "sp-runtime-interface"
11180version = "6.0.0"11183version = "6.0.0"
11181source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11184source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11182dependencies = [11185dependencies = [
11183 "impl-trait-for-tuples",11186 "impl-trait-for-tuples",
11184 "parity-scale-codec 3.1.2",11187 "parity-scale-codec 3.1.5",
11185 "primitive-types",11188 "primitive-types",
11186 "sp-externalities",11189 "sp-externalities",
11187 "sp-runtime-interface-proc-macro",11190 "sp-runtime-interface-proc-macro",
11195[[package]]11198[[package]]
11196name = "sp-runtime-interface-proc-macro"11199name = "sp-runtime-interface-proc-macro"
11197version = "5.0.0"11200version = "5.0.0"
11198source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11201source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11199dependencies = [11202dependencies = [
11200 "Inflector",11203 "Inflector",
11201 "proc-macro-crate",11204 "proc-macro-crate",
11207[[package]]11210[[package]]
11208name = "sp-sandbox"11211name = "sp-sandbox"
11209version = "0.10.0-dev"11212version = "0.10.0-dev"
11210source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11213source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11211dependencies = [11214dependencies = [
11212 "log",11215 "log",
11213 "parity-scale-codec 3.1.2",11216 "parity-scale-codec 3.1.5",
11214 "sp-core",11217 "sp-core",
11215 "sp-io",11218 "sp-io",
11216 "sp-std",11219 "sp-std",
11221[[package]]11224[[package]]
11222name = "sp-serializer"11225name = "sp-serializer"
11223version = "4.0.0-dev"11226version = "4.0.0-dev"
11224source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11227source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11225dependencies = [11228dependencies = [
11226 "serde",11229 "serde",
11227 "serde_json",11230 "serde_json",
11230[[package]]11233[[package]]
11231name = "sp-session"11234name = "sp-session"
11232version = "4.0.0-dev"11235version = "4.0.0-dev"
11233source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11236source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11234dependencies = [11237dependencies = [
11235 "parity-scale-codec 3.1.2",11238 "parity-scale-codec 3.1.5",
11236 "scale-info",11239 "scale-info",
11237 "sp-api",11240 "sp-api",
11238 "sp-core",11241 "sp-core",
11244[[package]]11247[[package]]
11245name = "sp-staking"11248name = "sp-staking"
11246version = "4.0.0-dev"11249version = "4.0.0-dev"
11247source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11250source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11248dependencies = [11251dependencies = [
11249 "parity-scale-codec 3.1.2",11252 "parity-scale-codec 3.1.5",
11250 "scale-info",11253 "scale-info",
11251 "sp-runtime",11254 "sp-runtime",
11252 "sp-std",11255 "sp-std",
11255[[package]]11258[[package]]
11256name = "sp-state-machine"11259name = "sp-state-machine"
11257version = "0.12.0"11260version = "0.12.0"
11258source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11261source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11259dependencies = [11262dependencies = [
11260 "hash-db",11263 "hash-db",
11261 "log",11264 "log",
11262 "num-traits",11265 "num-traits",
11263 "parity-scale-codec 3.1.2",11266 "parity-scale-codec 3.1.5",
11264 "parking_lot 0.12.1",11267 "parking_lot 0.12.1",
11265 "rand 0.7.3",11268 "rand 0.7.3",
11266 "smallvec",11269 "smallvec",
11277[[package]]11280[[package]]
11278name = "sp-std"11281name = "sp-std"
11279version = "4.0.0"11282version = "4.0.0"
11280source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11283source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
1128111284
11282[[package]]11285[[package]]
11283name = "sp-storage"11286name = "sp-storage"
11284version = "6.0.0"11287version = "6.0.0"
11285source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11288source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11286dependencies = [11289dependencies = [
11287 "impl-serde",11290 "impl-serde",
11288 "parity-scale-codec 3.1.2",11291 "parity-scale-codec 3.1.5",
11289 "ref-cast",11292 "ref-cast",
11290 "serde",11293 "serde",
11291 "sp-debug-derive",11294 "sp-debug-derive",
11295[[package]]11298[[package]]
11296name = "sp-tasks"11299name = "sp-tasks"
11297version = "4.0.0-dev"11300version = "4.0.0-dev"
11298source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11301source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11299dependencies = [11302dependencies = [
11300 "log",11303 "log",
11301 "sp-core",11304 "sp-core",
11308[[package]]11311[[package]]
11309name = "sp-timestamp"11312name = "sp-timestamp"
11310version = "4.0.0-dev"11313version = "4.0.0-dev"
11311source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11314source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11312dependencies = [11315dependencies = [
11313 "async-trait",11316 "async-trait",
11314 "futures-timer",11317 "futures-timer",
11315 "log",11318 "log",
11316 "parity-scale-codec 3.1.2",11319 "parity-scale-codec 3.1.5",
11317 "sp-api",11320 "sp-api",
11318 "sp-inherents",11321 "sp-inherents",
11319 "sp-runtime",11322 "sp-runtime",
11324[[package]]11327[[package]]
11325name = "sp-tracing"11328name = "sp-tracing"
11326version = "5.0.0"11329version = "5.0.0"
11327source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11330source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11328dependencies = [11331dependencies = [
11329 "parity-scale-codec 3.1.2",11332 "parity-scale-codec 3.1.5",
11330 "sp-std",11333 "sp-std",
11331 "tracing",11334 "tracing",
11332 "tracing-core",11335 "tracing-core",
11336[[package]]11339[[package]]
11337name = "sp-transaction-pool"11340name = "sp-transaction-pool"
11338version = "4.0.0-dev"11341version = "4.0.0-dev"
11339source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11342source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11340dependencies = [11343dependencies = [
11341 "sp-api",11344 "sp-api",
11342 "sp-runtime",11345 "sp-runtime",
11345[[package]]11348[[package]]
11346name = "sp-transaction-storage-proof"11349name = "sp-transaction-storage-proof"
11347version = "4.0.0-dev"11350version = "4.0.0-dev"
11348source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11351source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11349dependencies = [11352dependencies = [
11350 "async-trait",11353 "async-trait",
11351 "log",11354 "log",
11352 "parity-scale-codec 3.1.2",11355 "parity-scale-codec 3.1.5",
11353 "scale-info",11356 "scale-info",
11354 "sp-core",11357 "sp-core",
11355 "sp-inherents",11358 "sp-inherents",
11361[[package]]11364[[package]]
11362name = "sp-trie"11365name = "sp-trie"
11363version = "6.0.0"11366version = "6.0.0"
11364source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11367source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11365dependencies = [11368dependencies = [
11366 "hash-db",11369 "hash-db",
11367 "memory-db",11370 "memory-db",
11368 "parity-scale-codec 3.1.2",11371 "parity-scale-codec 3.1.5",
11369 "scale-info",11372 "scale-info",
11370 "sp-core",11373 "sp-core",
11371 "sp-std",11374 "sp-std",
11377[[package]]11380[[package]]
11378name = "sp-version"11381name = "sp-version"
11379version = "5.0.0"11382version = "5.0.0"
11380source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11383source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11381dependencies = [11384dependencies = [
11382 "impl-serde",11385 "impl-serde",
11383 "parity-scale-codec 3.1.2",11386 "parity-scale-codec 3.1.5",
11384 "parity-wasm 0.42.2",11387 "parity-wasm 0.42.2",
11385 "scale-info",11388 "scale-info",
11386 "serde",11389 "serde",
11394[[package]]11397[[package]]
11395name = "sp-version-proc-macro"11398name = "sp-version-proc-macro"
11396version = "4.0.0-dev"11399version = "4.0.0-dev"
11397source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11400source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11398dependencies = [11401dependencies = [
11399 "parity-scale-codec 3.1.2",11402 "parity-scale-codec 3.1.5",
11400 "proc-macro2",11403 "proc-macro2",
11401 "quote",11404 "quote",
11402 "syn",11405 "syn",
11405[[package]]11408[[package]]
11406name = "sp-wasm-interface"11409name = "sp-wasm-interface"
11407version = "6.0.0"11410version = "6.0.0"
11408source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11411source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11409dependencies = [11412dependencies = [
11410 "impl-trait-for-tuples",11413 "impl-trait-for-tuples",
11411 "log",11414 "log",
11412 "parity-scale-codec 3.1.2",11415 "parity-scale-codec 3.1.5",
11413 "sp-std",11416 "sp-std",
11414 "wasmi",11417 "wasmi",
11415 "wasmtime",11418 "wasmtime",
1151111514
11512[[package]]11515[[package]]
11513name = "strum"11516name = "strum"
11514version = "0.24.0"11517version = "0.24.1"
11515source = "registry+https://github.com/rust-lang/crates.io-index"11518source = "registry+https://github.com/rust-lang/crates.io-index"
11516checksum = "e96acfc1b70604b8b2f1ffa4c57e59176c7dbb05d556c71ecd2f5498a1dee7f8"11519checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f"
11517dependencies = [11520dependencies = [
11518 "strum_macros 0.24.0",11521 "strum_macros 0.24.0",
11519]11522]
11560[[package]]11563[[package]]
11561name = "substrate-build-script-utils"11564name = "substrate-build-script-utils"
11562version = "3.0.0"11565version = "3.0.0"
11563source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11566source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11564dependencies = [11567dependencies = [
11565 "platforms",11568 "platforms",
11566]11569]
1156711570
11568[[package]]11571[[package]]
11569name = "substrate-frame-rpc-system"11572name = "substrate-frame-rpc-system"
11570version = "4.0.0-dev"11573version = "4.0.0-dev"
11571source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11574source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11572dependencies = [11575dependencies = [
11573 "frame-system-rpc-runtime-api",11576 "frame-system-rpc-runtime-api",
11574 "futures 0.3.21",11577 "futures 0.3.21",
11575 "jsonrpsee",11578 "jsonrpsee",
11576 "log",11579 "log",
11577 "parity-scale-codec 3.1.2",11580 "parity-scale-codec 3.1.5",
11578 "sc-client-api",11581 "sc-client-api",
11579 "sc-rpc-api",11582 "sc-rpc-api",
11580 "sc-transaction-pool-api",11583 "sc-transaction-pool-api",
11589[[package]]11592[[package]]
11590name = "substrate-prometheus-endpoint"11593name = "substrate-prometheus-endpoint"
11591version = "0.10.0-dev"11594version = "0.10.0-dev"
11592source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11595source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11593dependencies = [11596dependencies = [
11594 "futures-util",11597 "futures-util",
11595 "hyper",11598 "hyper",
11602[[package]]11605[[package]]
11603name = "substrate-state-trie-migration-rpc"11606name = "substrate-state-trie-migration-rpc"
11604version = "4.0.0-dev"11607version = "4.0.0-dev"
11605source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11608source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11606dependencies = [11609dependencies = [
11607 "jsonrpsee",11610 "jsonrpsee",
11608 "log",11611 "log",
11609 "parity-scale-codec 3.1.2",11612 "parity-scale-codec 3.1.5",
11610 "sc-client-api",11613 "sc-client-api",
11611 "sc-rpc-api",11614 "sc-rpc-api",
11612 "scale-info",11615 "scale-info",
11623[[package]]11626[[package]]
11624name = "substrate-test-client"11627name = "substrate-test-client"
11625version = "2.0.1"11628version = "2.0.1"
11626source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11629source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11627dependencies = [11630dependencies = [
11628 "async-trait",11631 "async-trait",
11629 "futures 0.3.21",11632 "futures 0.3.21",
11630 "hex",11633 "hex",
11631 "parity-scale-codec 3.1.2",11634 "parity-scale-codec 3.1.5",
11632 "sc-client-api",11635 "sc-client-api",
11633 "sc-client-db",11636 "sc-client-db",
11634 "sc-consensus",11637 "sc-consensus",
11649[[package]]11652[[package]]
11650name = "substrate-test-utils"11653name = "substrate-test-utils"
11651version = "4.0.0-dev"11654version = "4.0.0-dev"
11652source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11655source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11653dependencies = [11656dependencies = [
11654 "futures 0.3.21",11657 "futures 0.3.21",
11655 "substrate-test-utils-derive",11658 "substrate-test-utils-derive",
11659[[package]]11662[[package]]
11660name = "substrate-test-utils-derive"11663name = "substrate-test-utils-derive"
11661version = "0.10.0-dev"11664version = "0.10.0-dev"
11662source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11665source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11663dependencies = [11666dependencies = [
11664 "proc-macro-crate",11667 "proc-macro-crate",
11665 "proc-macro2",11668 "proc-macro2",
11670[[package]]11673[[package]]
11671name = "substrate-wasm-builder"11674name = "substrate-wasm-builder"
11672version = "5.0.0-dev"11675version = "5.0.0-dev"
11673source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"11676source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
11674dependencies = [11677dependencies = [
11675 "ansi_term",11678 "ansi_term",
11676 "build-helper",11679 "build-helper",
1169111694
11692[[package]]11695[[package]]
11693name = "syn"11696name = "syn"
11694version = "1.0.96"11697version = "1.0.98"
11695source = "registry+https://github.com/rust-lang/crates.io-index"11698source = "registry+https://github.com/rust-lang/crates.io-index"
11696checksum = "0748dd251e24453cb8717f0354206b91557e4ec8703673a4b30208f2abaf1ebf"11699checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd"
11697dependencies = [11700dependencies = [
11698 "proc-macro2",11701 "proc-macro2",
11699 "quote",11702 "quote",
11799 "pallet-timestamp",11802 "pallet-timestamp",
11800 "pallet-transaction-payment",11803 "pallet-transaction-payment",
11801 "pallet-unique",11804 "pallet-unique",
11802 "parity-scale-codec 3.1.2",11805 "parity-scale-codec 3.1.5",
11803 "scale-info",11806 "scale-info",
11804 "sp-core",11807 "sp-core",
11805 "sp-io",11808 "sp-io",
1202812031
12029[[package]]12032[[package]]
12030name = "tower-service"12033name = "tower-service"
12031version = "0.3.1"12034version = "0.3.2"
12032source = "registry+https://github.com/rust-lang/crates.io-index"12035source = "registry+https://github.com/rust-lang/crates.io-index"
12033checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6"12036checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
1203412037
12035[[package]]12038[[package]]
12036name = "tracing"12039name = "tracing"
12107 "ahash",12110 "ahash",
12108 "lazy_static",12111 "lazy_static",
12109 "log",12112 "log",
12110 "lru 0.7.6",12113 "lru 0.7.7",
12111 "tracing-core",12114 "tracing-core",
12112]12115]
1211312116
12228[[package]]12231[[package]]
12229name = "try-runtime-cli"12232name = "try-runtime-cli"
12230version = "0.10.0-dev"12233version = "0.10.0-dev"
12231source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#6cbe1772bf258793fa9845daa8f43ea0cadee596"12234source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.23#76522d7937ba94ff1becef4e4e3ca78e3e1de341"
12232dependencies = [12235dependencies = [
12233 "clap",12236 "clap",
12234 "jsonrpsee",12237 "jsonrpsee",
12235 "log",12238 "log",
12236 "parity-scale-codec 3.1.2",12239 "parity-scale-codec 3.1.5",
12237 "remote-externalities",12240 "remote-externalities",
12238 "sc-chain-spec",12241 "sc-chain-spec",
12239 "sc-cli",12242 "sc-cli",
12282 "jsonrpsee",12285 "jsonrpsee",
12283 "pallet-common",12286 "pallet-common",
12284 "pallet-evm",12287 "pallet-evm",
12285 "parity-scale-codec 3.1.2",12288 "parity-scale-codec 3.1.5",
12286 "rmrk-rpc",12289 "rmrk-rpc",
12287 "sp-api",12290 "sp-api",
12288 "sp-blockchain",12291 "sp-blockchain",
1232912332
12330[[package]]12333[[package]]
12331name = "unicode-ident"12334name = "unicode-ident"
12332version = "1.0.0"12335version = "1.0.1"
12333source = "registry+https://github.com/rust-lang/crates.io-index"12336source = "registry+https://github.com/rust-lang/crates.io-index"
12334checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee"12337checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c"
1233512338
12336[[package]]12339[[package]]
12337name = "unicode-normalization"12340name = "unicode-normalization"
1236212365
12363[[package]]12366[[package]]
12364name = "unique-node"12367name = "unique-node"
12365version = "0.9.22"12368version = "0.9.23"
12366dependencies = [12369dependencies = [
12367 "clap",12370 "clap",
12368 "cumulus-client-cli",12371 "cumulus-client-cli",
12392 "pallet-ethereum",12395 "pallet-ethereum",
12393 "pallet-transaction-payment-rpc",12396 "pallet-transaction-payment-rpc",
12394 "pallet-transaction-payment-rpc-runtime-api",12397 "pallet-transaction-payment-rpc-runtime-api",
12395 "parity-scale-codec 3.1.2",12398 "parity-scale-codec 3.1.5",
12396 "parking_lot 0.11.2",12399 "parking_lot 0.11.2",
12397 "polkadot-cli",12400 "polkadot-cli",
12398 "polkadot-parachain",12401 "polkadot-parachain",
1249912502
12500[[package]]12503[[package]]
12501name = "unique-runtime"12504name = "unique-runtime"
12502version = "0.9.22"12505version = "0.9.23"
12503dependencies = [12506dependencies = [
12504 "cumulus-pallet-aura-ext",12507 "cumulus-pallet-aura-ext",
12505 "cumulus-pallet-dmp-queue",12508 "cumulus-pallet-dmp-queue",
12548 "pallet-transaction-payment-rpc-runtime-api",12551 "pallet-transaction-payment-rpc-runtime-api",
12549 "pallet-treasury",12552 "pallet-treasury",
12550 "pallet-unique",12553 "pallet-unique",
12551 "pallet-unq-scheduler",12554 "pallet-unique-scheduler",
12552 "pallet-xcm",12555 "pallet-xcm",
12553 "parachain-info",12556 "parachain-info",
12554 "parity-scale-codec 3.1.2",12557 "parity-scale-codec 3.1.5",
12555 "polkadot-parachain",12558 "polkadot-parachain",
12556 "rmrk-rpc",12559 "rmrk-rpc",
12557 "scale-info",12560 "scale-info",
1258112584
12582[[package]]12585[[package]]
12583name = "unique-runtime-common"12586name = "unique-runtime-common"
12584version = "0.9.22"12587version = "0.9.23"
12585dependencies = [12588dependencies = [
12586 "evm-coder",12589 "evm-coder",
12587 "fp-rpc",12590 "fp-rpc",
12593 "pallet-nonfungible",12596 "pallet-nonfungible",
12594 "pallet-refungible",12597 "pallet-refungible",
12595 "pallet-unique",12598 "pallet-unique",
12596 "parity-scale-codec 3.1.2",12599 "pallet-unique-scheduler",
12600 "parity-scale-codec 3.1.5",
12597 "rmrk-rpc",12601 "rmrk-rpc",
12598 "scale-info",12602 "scale-info",
12599 "sp-consensus-aura",12603 "sp-consensus-aura",
12640 "frame-support",12644 "frame-support",
12641 "frame-system",12645 "frame-system",
12642 "pallet-evm",12646 "pallet-evm",
12643 "parity-scale-codec 3.1.2",12647 "parity-scale-codec 3.1.5",
12644 "rmrk-traits",12648 "rmrk-traits",
12645 "scale-info",12649 "scale-info",
12646 "serde",12650 "serde",
12656dependencies = [12660dependencies = [
12657 "pallet-common",12661 "pallet-common",
12658 "pallet-evm",12662 "pallet-evm",
12659 "parity-scale-codec 3.1.2",12663 "parity-scale-codec 3.1.5",
12660 "sp-api",12664 "sp-api",
12661 "sp-core",12665 "sp-core",
12662 "sp-runtime",12666 "sp-runtime",
1276512769
12766[[package]]12770[[package]]
12767name = "wasm-bindgen"12771name = "wasm-bindgen"
12768version = "0.2.80"12772version = "0.2.81"
12769source = "registry+https://github.com/rust-lang/crates.io-index"12773source = "registry+https://github.com/rust-lang/crates.io-index"
12770checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad"12774checksum = "7c53b543413a17a202f4be280a7e5c62a1c69345f5de525ee64f8cfdbc954994"
12771dependencies = [12775dependencies = [
12772 "cfg-if 1.0.0",12776 "cfg-if 1.0.0",
12773 "wasm-bindgen-macro",12777 "wasm-bindgen-macro",
12774]12778]
1277512779
12776[[package]]12780[[package]]
12777name = "wasm-bindgen-backend"12781name = "wasm-bindgen-backend"
12778version = "0.2.80"12782version = "0.2.81"
12779source = "registry+https://github.com/rust-lang/crates.io-index"12783source = "registry+https://github.com/rust-lang/crates.io-index"
12780checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4"12784checksum = "5491a68ab4500fa6b4d726bd67408630c3dbe9c4fe7bda16d5c82a1fd8c7340a"
12781dependencies = [12785dependencies = [
12782 "bumpalo",12786 "bumpalo",
12783 "lazy_static",12787 "lazy_static",
1279012794
12791[[package]]12795[[package]]
12792name = "wasm-bindgen-futures"12796name = "wasm-bindgen-futures"
12793version = "0.4.30"12797version = "0.4.31"
12794source = "registry+https://github.com/rust-lang/crates.io-index"12798source = "registry+https://github.com/rust-lang/crates.io-index"
12795checksum = "6f741de44b75e14c35df886aff5f1eb73aa114fa5d4d00dcd37b5e01259bf3b2"12799checksum = "de9a9cec1733468a8c657e57fa2413d2ae2c0129b95e87c5b72b8ace4d13f31f"
12796dependencies = [12800dependencies = [
12797 "cfg-if 1.0.0",12801 "cfg-if 1.0.0",
12798 "js-sys",12802 "js-sys",
1280212806
12803[[package]]12807[[package]]
12804name = "wasm-bindgen-macro"12808name = "wasm-bindgen-macro"
12805version = "0.2.80"12809version = "0.2.81"
12806source = "registry+https://github.com/rust-lang/crates.io-index"12810source = "registry+https://github.com/rust-lang/crates.io-index"
12807checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5"12811checksum = "c441e177922bc58f1e12c022624b6216378e5febc2f0533e41ba443d505b80aa"
12808dependencies = [12812dependencies = [
12809 "quote",12813 "quote",
12810 "wasm-bindgen-macro-support",12814 "wasm-bindgen-macro-support",
12811]12815]
1281212816
12813[[package]]12817[[package]]
12814name = "wasm-bindgen-macro-support"12818name = "wasm-bindgen-macro-support"
12815version = "0.2.80"12819version = "0.2.81"
12816source = "registry+https://github.com/rust-lang/crates.io-index"12820source = "registry+https://github.com/rust-lang/crates.io-index"
12817checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b"12821checksum = "7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048"
12818dependencies = [12822dependencies = [
12819 "proc-macro2",12823 "proc-macro2",
12820 "quote",12824 "quote",
1282512829
12826[[package]]12830[[package]]
12827name = "wasm-bindgen-shared"12831name = "wasm-bindgen-shared"
12828version = "0.2.80"12832version = "0.2.81"
12829source = "registry+https://github.com/rust-lang/crates.io-index"12833source = "registry+https://github.com/rust-lang/crates.io-index"
12830checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744"12834checksum = "6a89911bd99e5f3659ec4acf9c4d93b0a90fe4a2a11f15328472058edc5261be"
1283112835
12832[[package]]12836[[package]]
12833name = "wasm-gc-api"12837name = "wasm-gc-api"
1306513069
13066[[package]]13070[[package]]
13067name = "web-sys"13071name = "web-sys"
13068version = "0.3.57"13072version = "0.3.58"
13069source = "registry+https://github.com/rust-lang/crates.io-index"13073source = "registry+https://github.com/rust-lang/crates.io-index"
13070checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283"13074checksum = "2fed94beee57daf8dd7d51f2b15dc2bcde92d7a72304cdf662a4371008b71b90"
13071dependencies = [13075dependencies = [
13072 "js-sys",13076 "js-sys",
13073 "wasm-bindgen",13077 "wasm-bindgen",
13157 "pallet-vesting",13161 "pallet-vesting",
13158 "pallet-xcm",13162 "pallet-xcm",
13159 "pallet-xcm-benchmarks",13163 "pallet-xcm-benchmarks",
13160 "parity-scale-codec 3.1.2",13164 "parity-scale-codec 3.1.5",
13161 "polkadot-parachain",13165 "polkadot-parachain",
13162 "polkadot-primitives",13166 "polkadot-primitives",
13163 "polkadot-runtime-common",13167 "polkadot-runtime-common",
1325213256
13253[[package]]13257[[package]]
13254name = "windows"13258name = "windows"
13255version = "0.29.0"13259version = "0.34.0"
13256source = "registry+https://github.com/rust-lang/crates.io-index"13260source = "registry+https://github.com/rust-lang/crates.io-index"
13257checksum = "aac7fef12f4b59cd0a29339406cc9203ab44e440ddff6b3f5a41455349fa9cf3"13261checksum = "45296b64204227616fdbf2614cefa4c236b98ee64dfaaaa435207ed99fe7829f"
13258dependencies = [13262dependencies = [
13259 "windows_aarch64_msvc 0.29.0",13263 "windows_aarch64_msvc 0.34.0",
13260 "windows_i686_gnu 0.29.0",13264 "windows_i686_gnu 0.34.0",
13261 "windows_i686_msvc 0.29.0",13265 "windows_i686_msvc 0.34.0",
13262 "windows_x86_64_gnu 0.29.0",13266 "windows_x86_64_gnu 0.34.0",
13263 "windows_x86_64_msvc 0.29.0",13267 "windows_x86_64_msvc 0.34.0",
13264]13268]
1326513269
13266[[package]]13270[[package]]
1327813282
13279[[package]]13283[[package]]
13280name = "windows_aarch64_msvc"13284name = "windows_aarch64_msvc"
13281version = "0.29.0"13285version = "0.34.0"
13282source = "registry+https://github.com/rust-lang/crates.io-index"13286source = "registry+https://github.com/rust-lang/crates.io-index"
13283checksum = "c3d027175d00b01e0cbeb97d6ab6ebe03b12330a35786cbaca5252b1c4bf5d9b"13287checksum = "17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881d"
1328413288
13285[[package]]13289[[package]]
13286name = "windows_aarch64_msvc"13290name = "windows_aarch64_msvc"
1329013294
13291[[package]]13295[[package]]
13292name = "windows_i686_gnu"13296name = "windows_i686_gnu"
13293version = "0.29.0"13297version = "0.34.0"
13294source = "registry+https://github.com/rust-lang/crates.io-index"13298source = "registry+https://github.com/rust-lang/crates.io-index"
13295checksum = "8793f59f7b8e8b01eda1a652b2697d87b93097198ae85f823b969ca5b89bba58"13299checksum = "2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688ed"
1329613300
13297[[package]]13301[[package]]
13298name = "windows_i686_gnu"13302name = "windows_i686_gnu"
1330213306
13303[[package]]13307[[package]]
13304name = "windows_i686_msvc"13308name = "windows_i686_msvc"
13305version = "0.29.0"13309version = "0.34.0"
13306source = "registry+https://github.com/rust-lang/crates.io-index"13310source = "registry+https://github.com/rust-lang/crates.io-index"
13307checksum = "8602f6c418b67024be2996c512f5f995de3ba417f4c75af68401ab8756796ae4"13311checksum = "9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956"
1330813312
13309[[package]]13313[[package]]
13310name = "windows_i686_msvc"13314name = "windows_i686_msvc"
1331413318
13315[[package]]13319[[package]]
13316name = "windows_x86_64_gnu"13320name = "windows_x86_64_gnu"
13317version = "0.29.0"13321version = "0.34.0"
13318source = "registry+https://github.com/rust-lang/crates.io-index"13322source = "registry+https://github.com/rust-lang/crates.io-index"
13319checksum = "f3d615f419543e0bd7d2b3323af0d86ff19cbc4f816e6453f36a2c2ce889c354"13323checksum = "cfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4"
1332013324
13321[[package]]13325[[package]]
13322name = "windows_x86_64_gnu"13326name = "windows_x86_64_gnu"
1332613330
13327[[package]]13331[[package]]
13328name = "windows_x86_64_msvc"13332name = "windows_x86_64_msvc"
13329version = "0.29.0"13333version = "0.34.0"
13330source = "registry+https://github.com/rust-lang/crates.io-index"13334source = "registry+https://github.com/rust-lang/crates.io-index"
13331checksum = "11d95421d9ed3672c280884da53201a5c46b7b2765ca6faf34b0d71cf34a3561"13335checksum = "d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9"
1333213336
13333[[package]]13337[[package]]
13334name = "windows_x86_64_msvc"13338name = "windows_x86_64_msvc"
13379 "derivative",13383 "derivative",
13380 "impl-trait-for-tuples",13384 "impl-trait-for-tuples",
13381 "log",13385 "log",
13382 "parity-scale-codec 3.1.2",13386 "parity-scale-codec 3.1.5",
13383 "scale-info",13387 "scale-info",
13384 "xcm-procedural",13388 "xcm-procedural",
13385]13389]
13393 "frame-system",13397 "frame-system",
13394 "log",13398 "log",
13395 "pallet-transaction-payment",13399 "pallet-transaction-payment",
13396 "parity-scale-codec 3.1.2",13400 "parity-scale-codec 3.1.5",
13397 "polkadot-parachain",13401 "polkadot-parachain",
13398 "scale-info",13402 "scale-info",
13399 "sp-arithmetic",13403 "sp-arithmetic",
13413 "frame-support",13417 "frame-support",
13414 "impl-trait-for-tuples",13418 "impl-trait-for-tuples",
13415 "log",13419 "log",
13416 "parity-scale-codec 3.1.2",13420 "parity-scale-codec 3.1.5",
13417 "sp-arithmetic",13421 "sp-arithmetic",
13418 "sp-core",13422 "sp-core",
13419 "sp-io",13423 "sp-io",
modifiedMakefilediffbeforeafterboth
5959
60.PHONY: _bench60.PHONY: _bench
61_bench:61_bench:
62 cargo run --release --features runtime-benchmarks,unique-runtime -- \62 cargo run --release --features runtime-benchmarks,$(RUNTIME) -- \
63 benchmark pallet --pallet pallet-$(PALLET) \63 benchmark pallet --pallet pallet-$(if $(PALLET),$(PALLET),$(error Must set PALLET)) \
64 --wasm-execution compiled --extrinsic '*' \64 --wasm-execution compiled --extrinsic '*' \
65 --template .maintain/frame-weight-template.hbs --steps=50 --repeat=200 --heap-pages=4096 \65 --template .maintain/frame-weight-template.hbs --steps=50 --repeat=80 --heap-pages=4096 \
66 --output=./pallets/$(PALLET)/src/weights.rs66 --output=./pallets/$(if $(PALLET_DIR),$(PALLET_DIR),$(PALLET))/src/weights.rs
6767
68.PHONY: bench-evm-migration68.PHONY: bench-evm-migration
69bench-evm-migration:69bench-evm-migration:
93bench-structure:93bench-structure:
94 make _bench PALLET=structure94 make _bench PALLET=structure
95
96.PHONY: bench-scheduler
97bench-scheduler:
98 make _bench PALLET=unique-scheduler PALLET_DIR=scheduler
9599
96.PHONY: bench-rmrk-core100.PHONY: bench-rmrk-core
97bench-rmrk-core:101bench-rmrk-core:
98 make _bench PALLET=proxy-rmrk-core102 make _bench PALLET=proxy-rmrk-core
103
104.PHONY: bench-rmrk-equip
105bench-rmrk-equip:
106 make _bench PALLET=proxy-rmrk-equip
99107
100.PHONY: bench108.PHONY: bench
101bench: bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-rmrk-core109bench: bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-scheduler bench-rmrk-core bench-rmrk-equip
102110
modifiednode/cli/Cargo.tomldiffbeforeafterboth
291license = 'GPLv3'291license = 'GPLv3'
292name = 'unique-node'292name = 'unique-node'
293repository = 'https://github.com/UniqueNetwork/unique-chain'293repository = 'https://github.com/UniqueNetwork/unique-chain'
294version = '0.9.22'294version = '0.9.23'
295295
296[[bin]]296[[bin]]
297name = 'unique-collator'297name = 'unique-collator'
323[features]323[features]
324default = []324default = []
325runtime-benchmarks = [325runtime-benchmarks = [
326 'unique-runtime/runtime-benchmarks',326 'unique-runtime?/runtime-benchmarks',
327 'quartz-runtime?/runtime-benchmarks',
328 'opal-runtime/runtime-benchmarks',
327 'polkadot-service/runtime-benchmarks',329 'polkadot-service/runtime-benchmarks',
328]330]
329try-runtime = []331try-runtime = []
modifiednode/cli/src/chain_spec.rsdiffbeforeafterboth
26use unique_runtime_common::types::*;26use unique_runtime_common::types::*;
2727
28#[cfg(feature = "unique-runtime")]28#[cfg(feature = "unique-runtime")]
29use unique_runtime as default_runtime;29pub use unique_runtime as default_runtime;
3030
31#[cfg(all(not(feature = "unique-runtime"), feature = "quartz-runtime"))]31#[cfg(all(not(feature = "unique-runtime"), feature = "quartz-runtime"))]
32use quartz_runtime as default_runtime;32pub use quartz_runtime as default_runtime;
3333
34#[cfg(all(not(feature = "unique-runtime"), not(feature = "quartz-runtime")))]34#[cfg(all(not(feature = "unique-runtime"), not(feature = "quartz-runtime")))]
35use opal_runtime as default_runtime;35pub use opal_runtime as default_runtime;
3636
37/// The `ChainSpec` parameterized for the unique runtime.37/// The `ChainSpec` parameterized for the unique runtime.
38#[cfg(feature = "unique-runtime")]38#[cfg(feature = "unique-runtime")]
modifiednode/cli/src/command.rsdiffbeforeafterboth
3434
35use crate::{35use crate::{
36 chain_spec::{self, RuntimeId, RuntimeIdentification, ServiceId, ServiceIdentification},36 chain_spec::{
37 self, RuntimeId, RuntimeIdentification, ServiceId, ServiceIdentification, default_runtime,
38 },
37 cli::{Cli, RelayChainCli, Subcommand},39 cli::{Cli, RelayChainCli, Subcommand},
38 service::{new_partial, start_node, start_dev_node},40 service::{new_partial, start_node, start_dev_node},
44#[cfg(feature = "quartz-runtime")]46#[cfg(feature = "quartz-runtime")]
45use crate::service::QuartzRuntimeExecutor;47use crate::service::QuartzRuntimeExecutor;
4648
47use crate::service::OpalRuntimeExecutor;49use crate::service::{OpalRuntimeExecutor, DefaultRuntimeExecutor};
4850
49use codec::Encode;51use codec::Encode;
50use cumulus_primitives_core::ParaId;52use cumulus_primitives_core::ParaId;
371373
372 Ok(())374 Ok(())
373 }375 }
374 #[cfg(feature = "unique-runtime")]
375 Some(Subcommand::Benchmark(cmd)) => {376 Some(Subcommand::Benchmark(cmd)) => {
376 use frame_benchmarking_cli::{BenchmarkCmd, SUBSTRATE_REFERENCE_HARDWARE};377 use frame_benchmarking_cli::{BenchmarkCmd, SUBSTRATE_REFERENCE_HARDWARE};
377 let runner = cli.create_runner(cmd)?;378 let runner = cli.create_runner(cmd)?;
378 // Switch on the concrete benchmark sub-command-379 // Switch on the concrete benchmark sub-command-
379 match cmd {380 match cmd {
380 BenchmarkCmd::Pallet(cmd) => {381 BenchmarkCmd::Pallet(cmd) => {
381 if cfg!(feature = "runtime-benchmarks") {382 if cfg!(feature = "runtime-benchmarks") {
382 runner.sync_run(|config| cmd.run::<Block, UniqueRuntimeExecutor>(config))383 runner.sync_run(|config| cmd.run::<Block, DefaultRuntimeExecutor>(config))
383 } else {384 } else {
384 Err("Benchmarking wasn't enabled when building the node. \385 Err("Benchmarking wasn't enabled when building the node. \
385 You can enable it with `--features runtime-benchmarks`."386 You can enable it with `--features runtime-benchmarks`."
388 }389 }
389 BenchmarkCmd::Block(cmd) => runner.sync_run(|config| {390 BenchmarkCmd::Block(cmd) => runner.sync_run(|config| {
390 let partials = new_partial::<391 let partials = new_partial::<
391 unique_runtime::RuntimeApi,392 default_runtime::RuntimeApi,
392 UniqueRuntimeExecutor,393 DefaultRuntimeExecutor,
393 _,394 _,
394 >(&config, crate::service::parachain_build_import_queue)?;395 >(&config, crate::service::parachain_build_import_queue)?;
395 cmd.run(partials.client)396 cmd.run(partials.client)
396 }),397 }),
397 BenchmarkCmd::Storage(cmd) => runner.sync_run(|config| {398 BenchmarkCmd::Storage(cmd) => runner.sync_run(|config| {
398 let partials = new_partial::<399 let partials = new_partial::<
399 unique_runtime::RuntimeApi,400 default_runtime::RuntimeApi,
400 UniqueRuntimeExecutor,401 DefaultRuntimeExecutor,
401 _,402 _,
402 >(&config, crate::service::parachain_build_import_queue)?;403 >(&config, crate::service::parachain_build_import_queue)?;
403 let db = partials.backend.expose_db();404 let db = partials.backend.expose_db();
411 BenchmarkCmd::Overhead(_) => Err("Unsupported benchmarking command".into()),412 BenchmarkCmd::Overhead(_) => Err("Unsupported benchmarking command".into()),
412 }413 }
413 }414 }
414 #[cfg(not(feature = "unique-runtime"))]
415 Some(Subcommand::Benchmark(..)) => {
416 Err("benchmarking is only available with unique runtime enabled".into())
417 }
418 Some(Subcommand::TryRuntime(cmd)) => {415 Some(Subcommand::TryRuntime(cmd)) => {
419 if cfg!(feature = "try-runtime") {416 if cfg!(feature = "try-runtime") {
420 let runner = cli.create_runner(cmd)?;417 let runner = cli.create_runner(cmd)?;
modifiednode/cli/src/service.rsdiffbeforeafterboth
83/// Opal native executor instance.82/// Opal native executor instance.
84pub struct OpalRuntimeExecutor;83pub struct OpalRuntimeExecutor;
84
85#[cfg(feature = "unique-runtime")]
86pub type DefaultRuntimeExecutor = UniqueRuntimeExecutor;
87
88#[cfg(all(not(feature = "unique-runtime"), feature = "quartz-runtime"))]
89pub type DefaultRuntimeExecutor = QuartzRuntimeExecutor;
90
91#[cfg(all(not(feature = "unique-runtime"), not(feature = "quartz-runtime")))]
92pub type DefaultRuntimeExecutor = OpalRuntimeExecutor;
8593
86#[cfg(feature = "unique-runtime")]94#[cfg(feature = "unique-runtime")]
87impl NativeExecutionDispatch for UniqueRuntimeExecutor {95impl NativeExecutionDispatch for UniqueRuntimeExecutor {
modifiednode/rpc/Cargo.tomldiffbeforeafterboth
63[features]63[features]
64default = []64default = []
65std = []65std = []
66unique-runtime = []
6667
modifiednode/rpc/src/lib.rsdiffbeforeafterboth
169 Eth, EthApiServer, EthDevSigner, EthFilter, EthFilterApiServer, EthPubSub,169 Eth, EthApiServer, EthDevSigner, EthFilter, EthFilterApiServer, EthPubSub,
170 EthPubSubApiServer, EthSigner, Net, NetApiServer, Web3, Web3ApiServer,170 EthPubSubApiServer, EthSigner, Net, NetApiServer, Web3, Web3ApiServer,
171 };171 };
172 use uc_rpc::{UniqueApiServer, Unique, RmrkApiServer, Rmrk};172 use uc_rpc::{UniqueApiServer, Unique};
173
174 #[cfg(not(feature = "unique-runtime"))]
175 use uc_rpc::{RmrkApiServer, Rmrk};
176
173 // use pallet_contracts_rpc::{Contracts, ContractsApi};177 // use pallet_contracts_rpc::{Contracts, ContractsApi};
174 use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApiServer};178 use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApiServer};
224228
225 io.merge(Unique::new(client.clone()).into_rpc())?;229 io.merge(Unique::new(client.clone()).into_rpc())?;
230
231 #[cfg(not(feature = "unique-runtime"))]
226 io.merge(Rmrk::new(client.clone()).into_rpc())?;232 io.merge(Rmrk::new(client.clone()).into_rpc())?;
227233
228 if let Some(filter_pool) = filter_pool {234 if let Some(filter_pool) = filter_pool {
modifiedpallets/common/src/benchmarking.rsdiffbeforeafterboth
96 permissions: Some(CollectionPermissions {96 permissions: Some(CollectionPermissions {
97 nesting: Some(NestingPermissions {97 nesting: Some(NestingPermissions {
98 token_owner: false,98 token_owner: false,
99 admin: false,99 collection_admin: false,
100 restricted: None,100 restricted: None,
101 permissive: true,101 permissive: true,
102 }),102 }),
103 mint_mode: Some(true),
103 ..Default::default()104 ..Default::default()
104 }),105 }),
105 ..Default::default()106 ..Default::default()
modifiedpallets/common/src/erc.rsdiffbeforeafterboth
22pub use pallet_evm::{PrecompileOutput, PrecompileResult, PrecompileHandle, account::CrossAccountId};22pub use pallet_evm::{PrecompileOutput, PrecompileResult, PrecompileHandle, account::CrossAccountId};
23use pallet_evm_coder_substrate::dispatch_to_evm;23use pallet_evm_coder_substrate::dispatch_to_evm;
24use sp_std::vec::Vec;24use sp_std::vec::Vec;
25use up_data_structs::{Property, SponsoringRateLimit, OwnerRestrictedSet, AccessMode};25use up_data_structs::{
26 Property, SponsoringRateLimit, OwnerRestrictedSet, AccessMode, CollectionPermissions,
27};
26use alloc::format;28use alloc::format;
2729
28use crate::{Pallet, CollectionHandle, Config, CollectionProperties};30use crate::{Pallet, CollectionHandle, Config, CollectionProperties};
4749
48#[solidity_interface(name = "Collection")]50#[solidity_interface(name = "Collection")]
49impl<T: Config> CollectionHandle<T>51impl<T: Config> CollectionHandle<T>
50// where52where
51// T::AccountId: From<H256>53 T::AccountId: From<[u8; 32]>,
52{54{
53 fn set_collection_property(&mut self, caller: caller, key: string, value: bytes) -> Result<()> {55 fn set_collection_property(
56 &mut self,
57 caller: caller,
58 key: string,
59 value: bytes,
60 ) -> Result<void> {
54 let caller = T::CrossAccountId::from_eth(caller);61 let caller = T::CrossAccountId::from_eth(caller);
55 let key = <Vec<u8>>::from(key)62 let key = <Vec<u8>>::from(key)
56 .try_into()63 .try_into()
83 }90 }
8491
85 fn set_collection_sponsor(&mut self, caller: caller, sponsor: address) -> Result<void> {92 fn set_collection_sponsor(&mut self, caller: caller, sponsor: address) -> Result<void> {
86 check_is_owner(caller, self)?;93 check_is_owner_or_admin(caller, self)?;
8794
88 let sponsor = T::CrossAccountId::from_eth(sponsor);95 let sponsor = T::CrossAccountId::from_eth(sponsor);
89 self.set_sponsor(sponsor.as_sub().clone())96 self.set_sponsor(sponsor.as_sub().clone())
97 .confirm_sponsorship(caller.as_sub())104 .confirm_sponsorship(caller.as_sub())
98 .map_err(dispatch_to_evm::<T>)?105 .map_err(dispatch_to_evm::<T>)?
99 {106 {
100 return Err(Error::Revert("Caller is not set as sponsor".into()));107 return Err("caller is not set as sponsor".into());
101 }108 }
102 save(self)109 save(self)
103 }110 }
104111
105 #[solidity(rename_selector = "setCollectionLimit")]112 #[solidity(rename_selector = "setCollectionLimit")]
106 fn set_int_limit(&mut self, caller: caller, limit: string, value: uint32) -> Result<void> {113 fn set_int_limit(&mut self, caller: caller, limit: string, value: uint32) -> Result<void> {
107 check_is_owner(caller, self)?;114 check_is_owner_or_admin(caller, self)?;
108 let mut limits = self.limits.clone();115 let mut limits = self.limits.clone();
109116
110 match limit.as_str() {117 match limit.as_str() {
128 }135 }
129 _ => {136 _ => {
130 return Err(Error::Revert(format!(137 return Err(Error::Revert(format!(
131 "Unknown integer limit \"{}\"",138 "unknown integer limit \"{}\"",
132 limit139 limit
133 )))140 )))
134 }141 }
140147
141 #[solidity(rename_selector = "setCollectionLimit")]148 #[solidity(rename_selector = "setCollectionLimit")]
142 fn set_bool_limit(&mut self, caller: caller, limit: string, value: bool) -> Result<void> {149 fn set_bool_limit(&mut self, caller: caller, limit: string, value: bool) -> Result<void> {
143 check_is_owner(caller, self)?;150 check_is_owner_or_admin(caller, self)?;
144 let mut limits = self.limits.clone();151 let mut limits = self.limits.clone();
145152
146 match limit.as_str() {153 match limit.as_str() {
155 }162 }
156 _ => {163 _ => {
157 return Err(Error::Revert(format!(164 return Err(Error::Revert(format!(
158 "Unknown boolean limit \"{}\"",165 "unknown boolean limit \"{}\"",
159 limit166 limit
160 )))167 )))
161 }168 }
169 Ok(crate::eth::collection_id_to_address(self.id))176 Ok(crate::eth::collection_id_to_address(self.id))
170 }177 }
171178
172 // fn add_admin_substrate(&self, caller: caller, new_admin: uint256) -> Result<void> {179 fn add_collection_admin_substrate(&self, caller: caller, new_admin: uint256) -> Result<void> {
173 // let mut new_admin_h256 = H256::default();180 let caller = T::CrossAccountId::from_eth(caller);
181 let mut new_admin_arr: [u8; 32] = Default::default();
174 // new_admin.to_little_endian(&mut new_admin_h256.0);182 new_admin.to_big_endian(&mut new_admin_arr);
175 // let account_id = T::AccountId::from(new_admin_h256);183 let account_id = T::AccountId::from(new_admin_arr);
176 // let caller = T::CrossAccountId::from_eth(caller);184 let new_admin = T::CrossAccountId::from_sub(account_id);
177 // let new_admin = T::CrossAccountId::from_sub(account_id);
178 // <Pallet<T>>::toggle_admin(&self, &caller, &new_admin, true)185 <Pallet<T>>::toggle_admin(self, &caller, &new_admin, true).map_err(dispatch_to_evm::<T>)?;
179 // .map_err(dispatch_to_evm::<T>)?;
180 // Ok(())186 Ok(())
181 // }187 }
182188
183 // fn remove_admin_substrate(&self, caller: caller, new_admin: uint256) -> Result<void> {189 fn remove_collection_admin_substrate(
190 &self,
191 caller: caller,
192 new_admin: uint256,
193 ) -> Result<void> {
184 // let mut new_admin_h256 = H256::default();194 let caller = T::CrossAccountId::from_eth(caller);
195 let mut new_admin_arr: [u8; 32] = Default::default();
185 // new_admin.to_little_endian(&mut new_admin_h256.0);196 new_admin.to_big_endian(&mut new_admin_arr);
186 // let account_id = T::AccountId::from(new_admin_h256);197 let account_id = T::AccountId::from(new_admin_arr);
187 // let caller = T::CrossAccountId::from_eth(caller);198 let new_admin = T::CrossAccountId::from_sub(account_id);
188 // let new_admin = T::CrossAccountId::from_sub(account_id);
189 // <Pallet<T>>::toggle_admin(&self, &caller, &new_admin, false)199 <Pallet<T>>::toggle_admin(self, &caller, &new_admin, false)
190 // .map_err(dispatch_to_evm::<T>)?;200 .map_err(dispatch_to_evm::<T>)?;
191 // Ok(())201 Ok(())
192 // }202 }
193203
194 fn add_collection_admin(&self, caller: caller, new_admin: address) -> Result<void> {204 fn add_collection_admin(&self, caller: caller, new_admin: address) -> Result<void> {
195 let caller = T::CrossAccountId::from_eth(caller);205 let caller = T::CrossAccountId::from_eth(caller);
196 self.check_is_owner_or_admin(&caller)
197 .map_err(dispatch_to_evm::<T>)?;
198 let new_admin = T::CrossAccountId::from_eth(new_admin);206 let new_admin = T::CrossAccountId::from_eth(new_admin);
199 <Pallet<T>>::toggle_admin(&self, &caller, &new_admin, true)207 <Pallet<T>>::toggle_admin(self, &caller, &new_admin, true).map_err(dispatch_to_evm::<T>)?;
200 .map_err(dispatch_to_evm::<T>)?;
201 Ok(())208 Ok(())
202 }209 }
203210
204 fn remove_collection_admin(&self, caller: caller, admin: address) -> Result<void> {211 fn remove_collection_admin(&self, caller: caller, admin: address) -> Result<void> {
205 let caller = T::CrossAccountId::from_eth(caller);212 let caller = T::CrossAccountId::from_eth(caller);
206 self.check_is_owner_or_admin(&caller)
207 .map_err(dispatch_to_evm::<T>)?;
208 let admin = T::CrossAccountId::from_eth(admin);213 let admin = T::CrossAccountId::from_eth(admin);
209 <Pallet<T>>::toggle_admin(&self, &caller, &admin, false).map_err(dispatch_to_evm::<T>)?;214 <Pallet<T>>::toggle_admin(self, &caller, &admin, false).map_err(dispatch_to_evm::<T>)?;
210 Ok(())215 Ok(())
211 }216 }
212217
213 #[solidity(rename_selector = "setCollectionNesting")]218 #[solidity(rename_selector = "setCollectionNesting")]
214 fn set_nesting_bool(&mut self, caller: caller, enable: bool) -> Result<void> {219 fn set_nesting_bool(&mut self, caller: caller, enable: bool) -> Result<void> {
215 let caller = T::CrossAccountId::from_eth(caller);220 check_is_owner_or_admin(caller, self)?;
216 self.check_is_owner_or_admin(&caller)
217 .map_err(dispatch_to_evm::<T>)?;
218221
219 let mut permissions = self.collection.permissions.clone();222 let mut permissions = self.collection.permissions.clone();
220 let mut nesting = permissions.nesting().clone();223 let mut nesting = permissions.nesting().clone();
240 collections: Vec<address>,243 collections: Vec<address>,
241 ) -> Result<void> {244 ) -> Result<void> {
242 if collections.is_empty() {245 if collections.is_empty() {
243 return Err("No addresses provided".into());246 return Err("no addresses provided".into());
244 }247 }
245 let caller = T::CrossAccountId::from_eth(caller);248 check_is_owner_or_admin(caller, self)?;
246 self.check_is_owner_or_admin(&caller)
247 .map_err(dispatch_to_evm::<T>)?;
248249
249 let mut permissions = self.collection.permissions.clone();250 let mut permissions = self.collection.permissions.clone();
250 match enable {251 match enable {
280 }281 }
281282
282 fn set_collection_access(&mut self, caller: caller, mode: uint8) -> Result<void> {283 fn set_collection_access(&mut self, caller: caller, mode: uint8) -> Result<void> {
283 let caller = T::CrossAccountId::from_eth(caller);284 check_is_owner_or_admin(caller, self)?;
284 self.check_is_owner_or_admin(&caller)285 let permissions = CollectionPermissions {
285 .map_err(dispatch_to_evm::<T>)?;286 access: Some(match mode {
286 self.collection.permissions.access = Some(match mode {
287 0 => AccessMode::Normal,287 0 => AccessMode::Normal,
288 1 => AccessMode::AllowList,288 1 => AccessMode::AllowList,
289 _ => return Err("Not supported access mode".into()),289 _ => return Err("not supported access mode".into()),
290 });290 }),
291 ..Default::default()
292 };
291 save(self)?;293 self.collection.permissions = <Pallet<T>>::clamp_permissions(
294 self.collection.mode.clone(),
295 &self.collection.permissions,
296 permissions,
297 )
298 .map_err(dispatch_to_evm::<T>)?;
299
292 Ok(())300 save(self)
293 }301 }
294302
295 fn add_to_collection_allow_list(&self, caller: caller, user: address) -> Result<void> {303 fn add_to_collection_allow_list(&self, caller: caller, user: address) -> Result<void> {
296 let caller = check_is_owner_or_admin(caller, self)?;304 let caller = T::CrossAccountId::from_eth(caller);
297 let user = T::CrossAccountId::from_eth(user);305 let user = T::CrossAccountId::from_eth(user);
298 <Pallet<T>>::toggle_allowlist(self, &caller, &user, true).map_err(dispatch_to_evm::<T>)?;306 <Pallet<T>>::toggle_allowlist(self, &caller, &user, true).map_err(dispatch_to_evm::<T>)?;
299 Ok(())307 Ok(())
300 }308 }
301309
302 fn remove_from_collection_allow_list(&self, caller: caller, user: address) -> Result<void> {310 fn remove_from_collection_allow_list(&self, caller: caller, user: address) -> Result<void> {
303 let caller = check_is_owner_or_admin(caller, self)?;311 let caller = T::CrossAccountId::from_eth(caller);
304 let user = T::CrossAccountId::from_eth(user);312 let user = T::CrossAccountId::from_eth(user);
305 <Pallet<T>>::toggle_allowlist(self, &caller, &user, false).map_err(dispatch_to_evm::<T>)?;313 <Pallet<T>>::toggle_allowlist(self, &caller, &user, false).map_err(dispatch_to_evm::<T>)?;
306 Ok(())314 Ok(())
307 }315 }
308316
309 fn set_collection_mint_mode(&mut self, caller: caller, mode: bool) -> Result<void> {317 fn set_collection_mint_mode(&mut self, caller: caller, mode: bool) -> Result<void> {
310 check_is_owner_or_admin(caller, self)?;318 check_is_owner_or_admin(caller, self)?;
311 self.collection.permissions.mint_mode = Some(mode);319 let permissions = CollectionPermissions {
320 mint_mode: Some(mode),
321 ..Default::default()
322 };
323 self.collection.permissions = <Pallet<T>>::clamp_permissions(
324 self.collection.mode.clone(),
312 save(self)?;325 &self.collection.permissions,
326 permissions,
327 )
328 .map_err(dispatch_to_evm::<T>)?;
329
313 Ok(())330 save(self)
314 }331 }
315}
316
317fn check_is_owner<T: Config>(caller: caller, collection: &CollectionHandle<T>) -> Result<void> {
318 let caller = T::CrossAccountId::from_eth(caller);
319 collection
320 .check_is_owner(&caller)
321 .map_err(pallet_evm_coder_substrate::dispatch_to_evm::<T>)?;
322 Ok(())
323}332}
324333
325fn check_is_owner_or_admin<T: Config>(334fn check_is_owner_or_admin<T: Config>(
modifiedpallets/common/src/lib.rsdiffbeforeafterboth
74 RmrkPropertyInfo,74 RmrkPropertyInfo,
75 RmrkBaseInfo,75 RmrkBaseInfo,
76 RmrkPartType,76 RmrkPartType,
77 RmrkTheme,77 RmrkBoundedTheme,
78 RmrkNftChild,78 RmrkNftChild,
79 CollectionPermissions,79 CollectionPermissions,
80 SchemaVersion,80 SchemaVersion,
148 .saturating_mul(writes),148 .saturating_mul(writes),
149 ))149 ))
150 }150 }
151 pub fn save(self) -> Result<(), DispatchError> {151 pub fn save(self) -> DispatchResult {
152 <CollectionById<T>>::insert(self.id, self.collection);152 <CollectionById<T>>::insert(self.id, self.collection);
153 Ok(())153 Ok(())
154 }154 }
543 RmrkPropertyInfo,543 RmrkPropertyInfo,
544 RmrkBaseInfo<T::AccountId>,544 RmrkBaseInfo<T::AccountId>,
545 RmrkPartType,545 RmrkPartType,
546 RmrkTheme,546 RmrkBoundedTheme,
547 RmrkNftChild,547 RmrkNftChild,
548 )>,548 )>,
549 ),549 ),
1019 }1019 }
10201020
1021 #[transactional]1021 #[transactional]
1022 pub fn set_property_permissions(1022 pub fn set_token_property_permissions(
1023 collection: &CollectionHandle<T>,1023 collection: &CollectionHandle<T>,
1024 sender: &T::CrossAccountId,1024 sender: &T::CrossAccountId,
1025 property_permissions: Vec<PropertyKeyPermission>,1025 property_permissions: Vec<PropertyKeyPermission>,
1164 old_limit: &CollectionLimits,1164 old_limit: &CollectionLimits,
1165 mut new_limit: CollectionLimits,1165 mut new_limit: CollectionLimits,
1166 ) -> Result<CollectionLimits, DispatchError> {1166 ) -> Result<CollectionLimits, DispatchError> {
1167 let limits = old_limit;
1167 limit_default!(old_limit, new_limit,1168 limit_default!(old_limit, new_limit,
1168 account_token_ownership_limit => ensure!(1169 account_token_ownership_limit => ensure!(
1169 new_limit <= MAX_TOKEN_OWNERSHIP,1170 new_limit <= MAX_TOKEN_OWNERSHIP,
1190 ),1191 ),
1191 sponsor_approve_timeout => {},1192 sponsor_approve_timeout => {},
1192 owner_can_transfer => ensure!(1193 owner_can_transfer => ensure!(
1194 !limits.owner_can_transfer_instaled() ||
1193 old_limit || !new_limit,1195 old_limit || !new_limit,
1194 <Error<T>>::OwnerPermissionsCantBeReverted,1196 <Error<T>>::OwnerPermissionsCantBeReverted,
1195 ),1197 ),
1210 limit_default_clone!(old_limit, new_limit,1212 limit_default_clone!(old_limit, new_limit,
1211 access => {},1213 access => {},
1212 mint_mode => {},1214 mint_mode => {},
1213 nesting => ensure!(1215 nesting => {
1216 #[cfg(not(feature = "runtime-benchmarks"))]
1217 ensure!(
1214 // Permissive is only allowed for tests and internal usage of chain for now1218 // Permissive is only allowed for tests and internal usage of chain for now
1215 old_limit.permissive || !new_limit.permissive,1219 old_limit.permissive || !new_limit.permissive,
1216 <Error<T>>::NoPermission,1220 <Error<T>>::NoPermission,
1217 ),1221 )
1222 },
1218 );1223 );
1219 Ok(new_limit)1224 Ok(new_limit)
1220 }1225 }
1237 fn delete_collection_properties(amount: u32) -> Weight;1242 fn delete_collection_properties(amount: u32) -> Weight;
1238 fn set_token_properties(amount: u32) -> Weight;1243 fn set_token_properties(amount: u32) -> Weight;
1239 fn delete_token_properties(amount: u32) -> Weight;1244 fn delete_token_properties(amount: u32) -> Weight;
1240 fn set_property_permissions(amount: u32) -> Weight;1245 fn set_token_property_permissions(amount: u32) -> Weight;
1241 fn transfer() -> Weight;1246 fn transfer() -> Weight;
1242 fn approve() -> Weight;1247 fn approve() -> Weight;
1243 fn transfer_from() -> Weight;1248 fn transfer_from() -> Weight;
1316 token_id: TokenId,1321 token_id: TokenId,
1317 property_keys: Vec<PropertyKey>,1322 property_keys: Vec<PropertyKey>,
1318 ) -> DispatchResultWithPostInfo;1323 ) -> DispatchResultWithPostInfo;
1319 fn set_property_permissions(1324 fn set_token_property_permissions(
1320 &self,1325 &self,
1321 sender: &T::CrossAccountId,1326 sender: &T::CrossAccountId,
1322 property_permissions: Vec<PropertyKeyPermission>,1327 property_permissions: Vec<PropertyKeyPermission>,
modifiedpallets/evm-migration/src/weights.rsdiffbeforeafterboth
3//! Autogenerated weights for pallet_evm_migration3//! Autogenerated weights for pallet_evm_migration
4//!4//!
5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
6//! DATE: 2022-03-01, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`6//! DATE: 2022-06-15, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`
7//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 10247//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
88
9// Executed Command:9// Executed Command:
10// target/release/unique-collator10// target/release/unique-collator
11// benchmark11// benchmark
12// pallet
12// --pallet13// --pallet
13// pallet-evm-migration14// pallet-evm-migration
14// --wasm-execution15// --wasm-execution
44 // Storage: System Account (r:1 w:0)45 // Storage: System Account (r:1 w:0)
45 // Storage: EVM AccountCodes (r:1 w:0)46 // Storage: EVM AccountCodes (r:1 w:0)
46 fn begin() -> Weight {47 fn begin() -> Weight {
47 (6_441_000 as Weight)48 (6_914_000 as Weight)
48 .saturating_add(T::DbWeight::get().reads(3 as Weight))49 .saturating_add(T::DbWeight::get().reads(3 as Weight))
49 .saturating_add(T::DbWeight::get().writes(1 as Weight))50 .saturating_add(T::DbWeight::get().writes(1 as Weight))
50 }51 }
51 // Storage: EvmMigration MigrationPending (r:1 w:0)52 // Storage: EvmMigration MigrationPending (r:1 w:0)
52 // Storage: EVM AccountStorages (r:0 w:1)53 // Storage: EVM AccountStorages (r:0 w:1)
53 fn set_data(b: u32, ) -> Weight {54 fn set_data(b: u32, ) -> Weight {
54 (3_424_000 as Weight)55 (2_875_000 as Weight)
55 // Standard Error: 056 // Standard Error: 0
56 .saturating_add((973_000 as Weight).saturating_mul(b as Weight))57 .saturating_add((794_000 as Weight).saturating_mul(b as Weight))
57 .saturating_add(T::DbWeight::get().reads(1 as Weight))58 .saturating_add(T::DbWeight::get().reads(1 as Weight))
58 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(b as Weight)))59 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(b as Weight)))
59 }60 }
60 // Storage: EvmMigration MigrationPending (r:1 w:1)61 // Storage: EvmMigration MigrationPending (r:1 w:1)
61 // Storage: EVM AccountCodes (r:0 w:1)62 // Storage: EVM AccountCodes (r:0 w:1)
62 fn finish(b: u32, ) -> Weight {63 fn finish(b: u32, ) -> Weight {
63 (4_702_000 as Weight)64 (6_320_000 as Weight)
64 // Standard Error: 065 // Standard Error: 0
65 .saturating_add((2_000 as Weight).saturating_mul(b as Weight))66 .saturating_add((2_000 as Weight).saturating_mul(b as Weight))
66 .saturating_add(T::DbWeight::get().reads(1 as Weight))67 .saturating_add(T::DbWeight::get().reads(1 as Weight))
74 // Storage: System Account (r:1 w:0)75 // Storage: System Account (r:1 w:0)
75 // Storage: EVM AccountCodes (r:1 w:0)76 // Storage: EVM AccountCodes (r:1 w:0)
76 fn begin() -> Weight {77 fn begin() -> Weight {
77 (6_441_000 as Weight)78 (6_914_000 as Weight)
78 .saturating_add(RocksDbWeight::get().reads(3 as Weight))79 .saturating_add(RocksDbWeight::get().reads(3 as Weight))
79 .saturating_add(RocksDbWeight::get().writes(1 as Weight))80 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
80 }81 }
81 // Storage: EvmMigration MigrationPending (r:1 w:0)82 // Storage: EvmMigration MigrationPending (r:1 w:0)
82 // Storage: EVM AccountStorages (r:0 w:1)83 // Storage: EVM AccountStorages (r:0 w:1)
83 fn set_data(b: u32, ) -> Weight {84 fn set_data(b: u32, ) -> Weight {
84 (3_424_000 as Weight)85 (2_875_000 as Weight)
85 // Standard Error: 086 // Standard Error: 0
86 .saturating_add((973_000 as Weight).saturating_mul(b as Weight))87 .saturating_add((794_000 as Weight).saturating_mul(b as Weight))
87 .saturating_add(RocksDbWeight::get().reads(1 as Weight))88 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
88 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(b as Weight)))89 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(b as Weight)))
89 }90 }
90 // Storage: EvmMigration MigrationPending (r:1 w:1)91 // Storage: EvmMigration MigrationPending (r:1 w:1)
91 // Storage: EVM AccountCodes (r:0 w:1)92 // Storage: EVM AccountCodes (r:0 w:1)
92 fn finish(b: u32, ) -> Weight {93 fn finish(b: u32, ) -> Weight {
93 (4_702_000 as Weight)94 (6_320_000 as Weight)
94 // Standard Error: 095 // Standard Error: 0
95 .saturating_add((2_000 as Weight).saturating_mul(b as Weight))96 .saturating_add((2_000 as Weight).saturating_mul(b as Weight))
96 .saturating_add(RocksDbWeight::get().reads(1 as Weight))97 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
modifiedpallets/fungible/src/common.rsdiffbeforeafterboth
72 072 0
73 }73 }
7474
75 fn set_property_permissions(_amount: u32) -> Weight {75 fn set_token_property_permissions(_amount: u32) -> Weight {
76 // Error76 // Error
77 077 0
78 }78 }
302 fail!(<Error<T>>::SettingPropertiesNotAllowed)302 fail!(<Error<T>>::SettingPropertiesNotAllowed)
303 }303 }
304304
305 fn set_property_permissions(305 fn set_token_property_permissions(
306 &self,306 &self,
307 _sender: &T::CrossAccountId,307 _sender: &T::CrossAccountId,
308 _property_permissions: Vec<PropertyKeyPermission>,308 _property_permissions: Vec<PropertyKeyPermission>,
modifiedpallets/fungible/src/erc.rsdiffbeforeafterboth
152 via("CollectionHandle<T>", common_mut, Collection)152 via("CollectionHandle<T>", common_mut, Collection)
153 )153 )
154)]154)]
155impl<T: Config> FungibleHandle<T> {}155impl<T: Config> FungibleHandle<T> where T::AccountId: From<[u8; 32]> {}
156156
157generate_stubgen!(gen_impl, UniqueFungibleCall<()>, true);157generate_stubgen!(gen_impl, UniqueFungibleCall<()>, true);
158generate_stubgen!(gen_iface, UniqueFungibleCall<()>, false);158generate_stubgen!(gen_iface, UniqueFungibleCall<()>, false);
159159
160impl<T: Config> CommonEvmHandler for FungibleHandle<T> {160impl<T: Config> CommonEvmHandler for FungibleHandle<T>
161where
162 T::AccountId: From<[u8; 32]>,
163{
161 const CODE: &'static [u8] = include_bytes!("./stubs/UniqueFungible.raw");164 const CODE: &'static [u8] = include_bytes!("./stubs/UniqueFungible.raw");
162165
modifiedpallets/fungible/src/weights.rsdiffbeforeafterboth
3//! Autogenerated weights for pallet_fungible3//! Autogenerated weights for pallet_fungible
4//!4//!
5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
6//! DATE: 2022-03-01, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`6//! DATE: 2022-06-15, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`
7//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 10247//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
88
9// Executed Command:9// Executed Command:
10// target/release/unique-collator10// target/release/unique-collator
11// benchmark11// benchmark
12// pallet
12// --pallet13// --pallet
13// pallet-fungible14// pallet-fungible
14// --wasm-execution15// --wasm-execution
18// --template19// --template
19// .maintain/frame-weight-template.hbs20// .maintain/frame-weight-template.hbs
20// --steps=5021// --steps=50
21// --repeat=20022// --repeat=80
22// --heap-pages=409623// --heap-pages=4096
23// --output=./pallets/fungible/src/weights.rs24// --output=./pallets/fungible/src/weights.rs
2425
47 // Storage: Fungible TotalSupply (r:1 w:1)48 // Storage: Fungible TotalSupply (r:1 w:1)
48 // Storage: Fungible Balance (r:1 w:1)49 // Storage: Fungible Balance (r:1 w:1)
49 fn create_item() -> Weight {50 fn create_item() -> Weight {
50 (14_407_000 as Weight)51 (17_828_000 as Weight)
51 .saturating_add(T::DbWeight::get().reads(2 as Weight))52 .saturating_add(T::DbWeight::get().reads(2 as Weight))
52 .saturating_add(T::DbWeight::get().writes(2 as Weight))53 .saturating_add(T::DbWeight::get().writes(2 as Weight))
53 }54 }
54 // Storage: Fungible TotalSupply (r:1 w:1)55 // Storage: Fungible TotalSupply (r:1 w:1)
55 // Storage: Fungible Balance (r:4 w:4)56 // Storage: Fungible Balance (r:4 w:4)
56 fn create_multiple_items_ex(b: u32, ) -> Weight {57 fn create_multiple_items_ex(b: u32, ) -> Weight {
57 (13_030_000 as Weight)58 (17_574_000 as Weight)
58 // Standard Error: 1_00059 // Standard Error: 3_000
59 .saturating_add((3_779_000 as Weight).saturating_mul(b as Weight))60 .saturating_add((4_288_000 as Weight).saturating_mul(b as Weight))
60 .saturating_add(T::DbWeight::get().reads(1 as Weight))61 .saturating_add(T::DbWeight::get().reads(1 as Weight))
61 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))62 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
62 .saturating_add(T::DbWeight::get().writes(1 as Weight))63 .saturating_add(T::DbWeight::get().writes(1 as Weight))
65 // Storage: Fungible TotalSupply (r:1 w:1)66 // Storage: Fungible TotalSupply (r:1 w:1)
66 // Storage: Fungible Balance (r:1 w:1)67 // Storage: Fungible Balance (r:1 w:1)
67 fn burn_item() -> Weight {68 fn burn_item() -> Weight {
68 (15_565_000 as Weight)69 (18_417_000 as Weight)
69 .saturating_add(T::DbWeight::get().reads(2 as Weight))70 .saturating_add(T::DbWeight::get().reads(2 as Weight))
70 .saturating_add(T::DbWeight::get().writes(2 as Weight))71 .saturating_add(T::DbWeight::get().writes(2 as Weight))
71 }72 }
72
73 // Storage: Fungible Balance (r:2 w:2)73 // Storage: Fungible Balance (r:2 w:2)
74 fn transfer() -> Weight {74 fn transfer() -> Weight {
75 (17_713_000 as Weight)75 (20_090_000 as Weight)
76 .saturating_add(T::DbWeight::get().reads(2 as Weight))76 .saturating_add(T::DbWeight::get().reads(2 as Weight))
77 .saturating_add(T::DbWeight::get().writes(2 as Weight))77 .saturating_add(T::DbWeight::get().writes(2 as Weight))
78 }78 }
79 // Storage: Fungible Balance (r:1 w:0)79 // Storage: Fungible Balance (r:1 w:0)
80 // Storage: Fungible Allowance (r:0 w:1)80 // Storage: Fungible Allowance (r:0 w:1)
81 fn approve() -> Weight {81 fn approve() -> Weight {
82 (14_834_000 as Weight)82 (17_532_000 as Weight)
83 .saturating_add(T::DbWeight::get().reads(1 as Weight))83 .saturating_add(T::DbWeight::get().reads(1 as Weight))
84 .saturating_add(T::DbWeight::get().writes(1 as Weight))84 .saturating_add(T::DbWeight::get().writes(1 as Weight))
85 }85 }
86 // Storage: Fungible Allowance (r:1 w:1)86 // Storage: Fungible Allowance (r:1 w:1)
87 // Storage: Fungible Balance (r:2 w:2)87 // Storage: Fungible Balance (r:2 w:2)
88 fn transfer_from() -> Weight {88 fn transfer_from() -> Weight {
89 (25_189_000 as Weight)89 (29_869_000 as Weight)
90 .saturating_add(T::DbWeight::get().reads(3 as Weight))90 .saturating_add(T::DbWeight::get().reads(3 as Weight))
91 .saturating_add(T::DbWeight::get().writes(3 as Weight))91 .saturating_add(T::DbWeight::get().writes(3 as Weight))
92 }92 }
93 // Storage: Fungible Allowance (r:1 w:1)93 // Storage: Fungible Allowance (r:1 w:1)
94 // Storage: Fungible TotalSupply (r:1 w:1)94 // Storage: Fungible TotalSupply (r:1 w:1)
95 // Storage: Fungible Balance (r:1 w:1)95 // Storage: Fungible Balance (r:1 w:1)
96 fn burn_from() -> Weight {96 fn burn_from() -> Weight {
97 (24_065_000 as Weight)97 (27_835_000 as Weight)
98 .saturating_add(T::DbWeight::get().reads(3 as Weight))98 .saturating_add(T::DbWeight::get().reads(3 as Weight))
99 .saturating_add(T::DbWeight::get().writes(3 as Weight))99 .saturating_add(T::DbWeight::get().writes(3 as Weight))
100 }100 }
105 // Storage: Fungible TotalSupply (r:1 w:1)105 // Storage: Fungible TotalSupply (r:1 w:1)
106 // Storage: Fungible Balance (r:1 w:1)106 // Storage: Fungible Balance (r:1 w:1)
107 fn create_item() -> Weight {107 fn create_item() -> Weight {
108 (14_407_000 as Weight)108 (17_828_000 as Weight)
109 .saturating_add(RocksDbWeight::get().reads(2 as Weight))109 .saturating_add(RocksDbWeight::get().reads(2 as Weight))
110 .saturating_add(RocksDbWeight::get().writes(2 as Weight))110 .saturating_add(RocksDbWeight::get().writes(2 as Weight))
111 }111 }
112 // Storage: Fungible TotalSupply (r:1 w:1)112 // Storage: Fungible TotalSupply (r:1 w:1)
113 // Storage: Fungible Balance (r:4 w:4)113 // Storage: Fungible Balance (r:4 w:4)
114 fn create_multiple_items_ex(b: u32, ) -> Weight {114 fn create_multiple_items_ex(b: u32, ) -> Weight {
115 (13_030_000 as Weight)115 (17_574_000 as Weight)
116 // Standard Error: 1_000116 // Standard Error: 3_000
117 .saturating_add((3_779_000 as Weight).saturating_mul(b as Weight))117 .saturating_add((4_288_000 as Weight).saturating_mul(b as Weight))
118 .saturating_add(RocksDbWeight::get().reads(1 as Weight))118 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
119 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))119 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
120 .saturating_add(RocksDbWeight::get().writes(1 as Weight))120 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
123 // Storage: Fungible TotalSupply (r:1 w:1)123 // Storage: Fungible TotalSupply (r:1 w:1)
124 // Storage: Fungible Balance (r:1 w:1)124 // Storage: Fungible Balance (r:1 w:1)
125 fn burn_item() -> Weight {125 fn burn_item() -> Weight {
126 (15_565_000 as Weight)126 (18_417_000 as Weight)
127 .saturating_add(RocksDbWeight::get().reads(2 as Weight))127 .saturating_add(RocksDbWeight::get().reads(2 as Weight))
128 .saturating_add(RocksDbWeight::get().writes(2 as Weight))128 .saturating_add(RocksDbWeight::get().writes(2 as Weight))
129 }129 }
130
131 // Storage: Fungible Balance (r:2 w:2)130 // Storage: Fungible Balance (r:2 w:2)
132 fn transfer() -> Weight {131 fn transfer() -> Weight {
133 (17_713_000 as Weight)132 (20_090_000 as Weight)
134 .saturating_add(RocksDbWeight::get().reads(2 as Weight))133 .saturating_add(RocksDbWeight::get().reads(2 as Weight))
135 .saturating_add(RocksDbWeight::get().writes(2 as Weight))134 .saturating_add(RocksDbWeight::get().writes(2 as Weight))
136 }135 }
137 // Storage: Fungible Balance (r:1 w:0)136 // Storage: Fungible Balance (r:1 w:0)
138 // Storage: Fungible Allowance (r:0 w:1)137 // Storage: Fungible Allowance (r:0 w:1)
139 fn approve() -> Weight {138 fn approve() -> Weight {
140 (14_834_000 as Weight)139 (17_532_000 as Weight)
141 .saturating_add(RocksDbWeight::get().reads(1 as Weight))140 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
142 .saturating_add(RocksDbWeight::get().writes(1 as Weight))141 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
143 }142 }
144 // Storage: Fungible Allowance (r:1 w:1)143 // Storage: Fungible Allowance (r:1 w:1)
145 // Storage: Fungible Balance (r:2 w:2)144 // Storage: Fungible Balance (r:2 w:2)
146 fn transfer_from() -> Weight {145 fn transfer_from() -> Weight {
147 (25_189_000 as Weight)146 (29_869_000 as Weight)
148 .saturating_add(RocksDbWeight::get().reads(3 as Weight))147 .saturating_add(RocksDbWeight::get().reads(3 as Weight))
149 .saturating_add(RocksDbWeight::get().writes(3 as Weight))148 .saturating_add(RocksDbWeight::get().writes(3 as Weight))
150 }149 }
151 // Storage: Fungible Allowance (r:1 w:1)150 // Storage: Fungible Allowance (r:1 w:1)
152 // Storage: Fungible TotalSupply (r:1 w:1)151 // Storage: Fungible TotalSupply (r:1 w:1)
153 // Storage: Fungible Balance (r:1 w:1)152 // Storage: Fungible Balance (r:1 w:1)
154 fn burn_from() -> Weight {153 fn burn_from() -> Weight {
155 (24_065_000 as Weight)154 (27_835_000 as Weight)
156 .saturating_add(RocksDbWeight::get().reads(3 as Weight))155 .saturating_add(RocksDbWeight::get().reads(3 as Weight))
157 .saturating_add(RocksDbWeight::get().writes(3 as Weight))156 .saturating_add(RocksDbWeight::get().writes(3 as Weight))
158 }157 }
modifiedpallets/nonfungible/src/benchmarking.rsdiffbeforeafterboth
147 <Pallet<T>>::set_allowance(&collection, &sender, item, Some(&burner))?;147 <Pallet<T>>::set_allowance(&collection, &sender, item, Some(&burner))?;
148 }: {<Pallet<T>>::burn_from(&collection, &burner, &sender, item, &Unlimited)?}148 }: {<Pallet<T>>::burn_from(&collection, &burner, &sender, item, &Unlimited)?}
149149
150 set_property_permissions {150 set_token_property_permissions {
151 let b in 0..MAX_PROPERTIES_PER_ITEM;151 let b in 0..MAX_PROPERTIES_PER_ITEM;
152 bench_init!{152 bench_init!{
153 owner: sub; collection: collection(owner);153 owner: sub; collection: collection(owner);
161 token_owner: false,161 token_owner: false,
162 },162 },
163 }).collect::<Vec<_>>();163 }).collect::<Vec<_>>();
164 }: {<Pallet<T>>::set_property_permissions(&collection, &owner, perms)?}164 }: {<Pallet<T>>::set_token_property_permissions(&collection, &owner, perms)?}
165165
166 set_token_properties {166 set_token_properties {
167 let b in 0..MAX_PROPERTIES_PER_ITEM;167 let b in 0..MAX_PROPERTIES_PER_ITEM;
177 token_owner: true,177 token_owner: true,
178 },178 },
179 }).collect::<Vec<_>>();179 }).collect::<Vec<_>>();
180 <Pallet<T>>::set_property_permissions(&collection, &owner, perms)?;180 <Pallet<T>>::set_token_property_permissions(&collection, &owner, perms)?;
181 let props = (0..b).map(|k| Property {181 let props = (0..b).map(|k| Property {
182 key: property_key(k as usize),182 key: property_key(k as usize),
183 value: property_value(),183 value: property_value(),
199 token_owner: true,199 token_owner: true,
200 },200 },
201 }).collect::<Vec<_>>();201 }).collect::<Vec<_>>();
202 <Pallet<T>>::set_property_permissions(&collection, &owner, perms)?;202 <Pallet<T>>::set_token_property_permissions(&collection, &owner, perms)?;
203 let props = (0..b).map(|k| Property {203 let props = (0..b).map(|k| Property {
204 key: property_key(k as usize),204 key: property_key(k as usize),
205 value: property_value(),205 value: property_value(),
modifiedpallets/nonfungible/src/common.rsdiffbeforeafterboth
89 <SelfWeightOf<T>>::delete_token_properties(amount)89 <SelfWeightOf<T>>::delete_token_properties(amount)
90 }90 }
9191
92 fn set_property_permissions(amount: u32) -> Weight {92 fn set_token_property_permissions(amount: u32) -> Weight {
93 <SelfWeightOf<T>>::set_property_permissions(amount)93 <SelfWeightOf<T>>::set_token_property_permissions(amount)
94 }94 }
9595
96 fn transfer() -> Weight {96 fn transfer() -> Weight {
242 )242 )
243 }243 }
244244
245 fn set_property_permissions(245 fn set_token_property_permissions(
246 &self,246 &self,
247 sender: &T::CrossAccountId,247 sender: &T::CrossAccountId,
248 property_permissions: Vec<PropertyKeyPermission>,248 property_permissions: Vec<PropertyKeyPermission>,
249 ) -> DispatchResultWithPostInfo {249 ) -> DispatchResultWithPostInfo {
250 let weight =250 let weight =
251 <CommonWeights<T>>::set_property_permissions(property_permissions.len() as u32);251 <CommonWeights<T>>::set_token_property_permissions(property_permissions.len() as u32);
252252
253 with_weight(253 with_weight(
254 <Pallet<T>>::set_property_permissions(self, sender, property_permissions),254 <Pallet<T>>::set_token_property_permissions(self, sender, property_permissions),
255 weight,255 weight,
256 )256 )
257 }257 }
modifiedpallets/nonfungible/src/erc.rsdiffbeforeafterboth
583 TokenProperties,583 TokenProperties,
584 )584 )
585)]585)]
586impl<T: Config> NonfungibleHandle<T> {}586impl<T: Config> NonfungibleHandle<T> where T::AccountId: From<[u8; 32]> {}
587587
588// Not a tests, but code generators588// Not a tests, but code generators
589generate_stubgen!(gen_impl, UniqueNFTCall<()>, true);589generate_stubgen!(gen_impl, UniqueNFTCall<()>, true);
590generate_stubgen!(gen_iface, UniqueNFTCall<()>, false);590generate_stubgen!(gen_iface, UniqueNFTCall<()>, false);
591591
592impl<T: Config> CommonEvmHandler for NonfungibleHandle<T> {592impl<T: Config> CommonEvmHandler for NonfungibleHandle<T>
593where
594 T::AccountId: From<[u8; 32]>,
595{
593 const CODE: &'static [u8] = include_bytes!("./stubs/UniqueNFT.raw");596 const CODE: &'static [u8] = include_bytes!("./stubs/UniqueNFT.raw");
594597
modifiedpallets/nonfungible/src/lib.rsdiffbeforeafterboth
28use up_data_structs::{28use up_data_structs::{
29 AccessMode, CollectionId, CustomDataLimit, TokenId, CreateCollectionData, CreateNftExData,29 AccessMode, CollectionId, CustomDataLimit, TokenId, CreateCollectionData, CreateNftExData,
30 mapping::TokenAddressMapping, budget::Budget, Property, PropertyPermission, PropertyKey,30 mapping::TokenAddressMapping, budget::Budget, Property, PropertyPermission, PropertyKey,
31 PropertyKeyPermission, Properties, PropertyScope, TrySetProperty, TokenChild,31 PropertyKeyPermission, Properties, PropertyScope, TrySetProperty, TokenChild, AuxPropertyValue,
32};32};
33use pallet_evm::{account::CrossAccountId, Pallet as PalletEvm};33use pallet_evm::{account::CrossAccountId, Pallet as PalletEvm};
34use pallet_common::{34use pallet_common::{
124 OnEmpty = up_data_structs::TokenProperties,124 OnEmpty = up_data_structs::TokenProperties,
125 >;125 >;
126
127 #[pallet::storage]
128 #[pallet::getter(fn token_aux_property)]
129 pub type TokenAuxProperties<T: Config> = StorageNMap<
130 Key = (
131 Key<Twox64Concat, CollectionId>,
132 Key<Twox64Concat, TokenId>,
133 Key<Twox64Concat, PropertyScope>,
134 Key<Twox64Concat, PropertyKey>,
135 ),
136 Value = AuxPropertyValue,
137 QueryKind = OptionQuery,
138 >;
126139
127 /// Used to enumerate tokens owned by account140 /// Used to enumerate tokens owned by account
128 #[pallet::storage]141 #[pallet::storage]
294 Ok(())307 Ok(())
295 }308 }
309
310 pub fn try_mutate_token_aux_property<R, E>(
311 collection_id: CollectionId,
312 token_id: TokenId,
313 scope: PropertyScope,
314 key: PropertyKey,
315 f: impl FnOnce(&mut Option<AuxPropertyValue>) -> Result<R, E>,
316 ) -> Result<R, E> {
317 <TokenAuxProperties<T>>::try_mutate((collection_id, token_id, scope, key), f)
318 }
319
320 pub fn remove_token_aux_property(
321 collection_id: CollectionId,
322 token_id: TokenId,
323 scope: PropertyScope,
324 key: PropertyKey,
325 ) {
326 <TokenAuxProperties<T>>::remove((collection_id, token_id, scope, key));
327 }
328
329 pub fn iterate_token_aux_properties(
330 collection_id: CollectionId,
331 token_id: TokenId,
332 scope: PropertyScope,
333 ) -> impl Iterator<Item = (PropertyKey, AuxPropertyValue)> {
334 <TokenAuxProperties<T>>::iter_prefix((collection_id, token_id, scope))
335 }
296336
297 pub fn current_token_id(collection_id: CollectionId) -> TokenId {337 pub fn current_token_id(collection_id: CollectionId) -> TokenId {
298 TokenId(<TokensMinted<T>>::get(collection_id))338 TokenId(<TokensMinted<T>>::get(collection_id))
375 <TokensBurnt<T>>::insert(collection.id, burnt);415 <TokensBurnt<T>>::insert(collection.id, burnt);
376 <TokenData<T>>::remove((collection.id, token));416 <TokenData<T>>::remove((collection.id, token));
377 <TokenProperties<T>>::remove((collection.id, token));417 <TokenProperties<T>>::remove((collection.id, token));
418 <TokenAuxProperties<T>>::remove_prefix((collection.id, token), None);
378 let old_spender = <Allowance<T>>::take((collection.id, token));419 let old_spender = <Allowance<T>>::take((collection.id, token));
379420
380 if let Some(old_spender) = old_spender {421 if let Some(old_spender) = old_spender {
594 <PalletCommon<T>>::delete_collection_properties(collection, sender, property_keys)635 <PalletCommon<T>>::delete_collection_properties(collection, sender, property_keys)
595 }636 }
596637
597 pub fn set_property_permissions(638 pub fn set_token_property_permissions(
598 collection: &CollectionHandle<T>,639 collection: &CollectionHandle<T>,
599 sender: &T::CrossAccountId,640 sender: &T::CrossAccountId,
600 property_permissions: Vec<PropertyKeyPermission>,641 property_permissions: Vec<PropertyKeyPermission>,
601 ) -> DispatchResult {642 ) -> DispatchResult {
602 <PalletCommon<T>>::set_property_permissions(collection, sender, property_permissions)643 <PalletCommon<T>>::set_token_property_permissions(collection, sender, property_permissions)
603 }644 }
604645
605 pub fn set_property_permission(646 pub fn set_property_permission(
1008 nesting_budget,1049 nesting_budget,
1009 )? {1050 )? {
1010 // Pass1051 // Pass
1011 } else if nesting.admin && handle.is_owner_or_admin(&sender) {1052 } else if nesting.collection_admin && handle.is_owner_or_admin(&sender) {
1012 // Pass1053 // Pass
1013 } else {1054 } else {
1014 fail!(<CommonError<T>>::UserIsNotAllowedToNest);1055 fail!(<CommonError<T>>::UserIsNotAllowedToNest);
modifiedpallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth
297 }297 }
298}298}
299
300// Selector: 6aea9834
301contract Collection is Dummy, ERC165 {
302 // Selector: setCollectionProperty(string,bytes) 2f073f66
303 function setCollectionProperty(string memory key, bytes memory value)
304 public
305 {
306 require(false, stub_error);
307 key;
308 value;
309 dummy = 0;
310 }
311
312 // Selector: deleteCollectionProperty(string) 7b7debce
313 function deleteCollectionProperty(string memory key) public {
314 require(false, stub_error);
315 key;
316 dummy = 0;
317 }
318
319 // Throws error if key not found
320 //
321 // Selector: collectionProperty(string) cf24fd6d
322 function collectionProperty(string memory key)
323 public
324 view
325 returns (bytes memory)
326 {
327 require(false, stub_error);
328 key;
329 dummy;
330 return hex"";
331 }
332
333 // Selector: setCollectionSponsor(address) 7623402e
334 function setCollectionSponsor(address sponsor) public {
335 require(false, stub_error);
336 sponsor;
337 dummy = 0;
338 }
339
340 // Selector: confirmCollectionSponsorship() 3c50e97a
341 function confirmCollectionSponsorship() public {
342 require(false, stub_error);
343 dummy = 0;
344 }
345
346 // Selector: setCollectionLimit(string,uint32) 6a3841db
347 function setCollectionLimit(string memory limit, uint32 value) public {
348 require(false, stub_error);
349 limit;
350 value;
351 dummy = 0;
352 }
353
354 // Selector: setCollectionLimit(string,bool) 993b7fba
355 function setCollectionLimit(string memory limit, bool value) public {
356 require(false, stub_error);
357 limit;
358 value;
359 dummy = 0;
360 }
361
362 // Selector: contractAddress() f6b4dfb4
363 function contractAddress() public view returns (address) {
364 require(false, stub_error);
365 dummy;
366 return 0x0000000000000000000000000000000000000000;
367 }
368
369 // Selector: addCollectionAdmin(address) 92e462c7
370 function addCollectionAdmin(address newAdmin) public view {
371 require(false, stub_error);
372 newAdmin;
373 dummy;
374 }
375
376 // Selector: removeCollectionAdmin(address) fafd7b42
377 function removeCollectionAdmin(address admin) public view {
378 require(false, stub_error);
379 admin;
380 dummy;
381 }
382
383 // Selector: setCollectionNesting(bool) 112d4586
384 function setCollectionNesting(bool enable) public {
385 require(false, stub_error);
386 enable;
387 dummy = 0;
388 }
389
390 // Selector: setCollectionNesting(bool,address[]) 64872396
391 function setCollectionNesting(bool enable, address[] memory collections)
392 public
393 {
394 require(false, stub_error);
395 enable;
396 collections;
397 dummy = 0;
398 }
399
400 // Selector: setCollectionAccess(uint8) 41835d4c
401 function setCollectionAccess(uint8 mode) public {
402 require(false, stub_error);
403 mode;
404 dummy = 0;
405 }
406
407 // Selector: addToCollectionAllowList(address) 67844fe6
408 function addToCollectionAllowList(address user) public view {
409 require(false, stub_error);
410 user;
411 dummy;
412 }
413
414 // Selector: removeFromCollectionAllowList(address) 85c51acb
415 function removeFromCollectionAllowList(address user) public view {
416 require(false, stub_error);
417 user;
418 dummy;
419 }
420
421 // Selector: setCollectionMintMode(bool) 00018e84
422 function setCollectionMintMode(bool mode) public {
423 require(false, stub_error);
424 mode;
425 dummy = 0;
426 }
427}
428299
429// Selector: 780e9d63300// Selector: 780e9d63
430contract ERC721Enumerable is Dummy, ERC165 {301contract ERC721Enumerable is Dummy, ERC165 {
459 }330 }
460}331}
332
333// Selector: 7d9262e6
334contract Collection is Dummy, ERC165 {
335 // Selector: setCollectionProperty(string,bytes) 2f073f66
336 function setCollectionProperty(string memory key, bytes memory value)
337 public
338 {
339 require(false, stub_error);
340 key;
341 value;
342 dummy = 0;
343 }
344
345 // Selector: deleteCollectionProperty(string) 7b7debce
346 function deleteCollectionProperty(string memory key) public {
347 require(false, stub_error);
348 key;
349 dummy = 0;
350 }
351
352 // Throws error if key not found
353 //
354 // Selector: collectionProperty(string) cf24fd6d
355 function collectionProperty(string memory key)
356 public
357 view
358 returns (bytes memory)
359 {
360 require(false, stub_error);
361 key;
362 dummy;
363 return hex"";
364 }
365
366 // Selector: setCollectionSponsor(address) 7623402e
367 function setCollectionSponsor(address sponsor) public {
368 require(false, stub_error);
369 sponsor;
370 dummy = 0;
371 }
372
373 // Selector: confirmCollectionSponsorship() 3c50e97a
374 function confirmCollectionSponsorship() public {
375 require(false, stub_error);
376 dummy = 0;
377 }
378
379 // Selector: setCollectionLimit(string,uint32) 6a3841db
380 function setCollectionLimit(string memory limit, uint32 value) public {
381 require(false, stub_error);
382 limit;
383 value;
384 dummy = 0;
385 }
386
387 // Selector: setCollectionLimit(string,bool) 993b7fba
388 function setCollectionLimit(string memory limit, bool value) public {
389 require(false, stub_error);
390 limit;
391 value;
392 dummy = 0;
393 }
394
395 // Selector: contractAddress() f6b4dfb4
396 function contractAddress() public view returns (address) {
397 require(false, stub_error);
398 dummy;
399 return 0x0000000000000000000000000000000000000000;
400 }
401
402 // Selector: addCollectionAdminSubstrate(uint256) 5730062b
403 function addCollectionAdminSubstrate(uint256 newAdmin) public view {
404 require(false, stub_error);
405 newAdmin;
406 dummy;
407 }
408
409 // Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
410 function removeCollectionAdminSubstrate(uint256 newAdmin) public view {
411 require(false, stub_error);
412 newAdmin;
413 dummy;
414 }
415
416 // Selector: addCollectionAdmin(address) 92e462c7
417 function addCollectionAdmin(address newAdmin) public view {
418 require(false, stub_error);
419 newAdmin;
420 dummy;
421 }
422
423 // Selector: removeCollectionAdmin(address) fafd7b42
424 function removeCollectionAdmin(address admin) public view {
425 require(false, stub_error);
426 admin;
427 dummy;
428 }
429
430 // Selector: setCollectionNesting(bool) 112d4586
431 function setCollectionNesting(bool enable) public {
432 require(false, stub_error);
433 enable;
434 dummy = 0;
435 }
436
437 // Selector: setCollectionNesting(bool,address[]) 64872396
438 function setCollectionNesting(bool enable, address[] memory collections)
439 public
440 {
441 require(false, stub_error);
442 enable;
443 collections;
444 dummy = 0;
445 }
446
447 // Selector: setCollectionAccess(uint8) 41835d4c
448 function setCollectionAccess(uint8 mode) public {
449 require(false, stub_error);
450 mode;
451 dummy = 0;
452 }
453
454 // Selector: addToCollectionAllowList(address) 67844fe6
455 function addToCollectionAllowList(address user) public view {
456 require(false, stub_error);
457 user;
458 dummy;
459 }
460
461 // Selector: removeFromCollectionAllowList(address) 85c51acb
462 function removeFromCollectionAllowList(address user) public view {
463 require(false, stub_error);
464 user;
465 dummy;
466 }
467
468 // Selector: setCollectionMintMode(bool) 00018e84
469 function setCollectionMintMode(bool mode) public {
470 require(false, stub_error);
471 mode;
472 dummy = 0;
473 }
474}
461475
462// Selector: d74d154f476// Selector: d74d154f
463contract ERC721UniqueExtensions is Dummy, ERC165 {477contract ERC721UniqueExtensions is Dummy, ERC165 {
modifiedpallets/nonfungible/src/weights.rsdiffbeforeafterboth
3//! Autogenerated weights for pallet_nonfungible3//! Autogenerated weights for pallet_nonfungible
4//!4//!
5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
6//! DATE: 2022-03-01, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`6//! DATE: 2022-06-15, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`
7//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 10247//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
88
9// Executed Command:9// Executed Command:
10// target/release/unique-collator10// target/release/unique-collator
11// benchmark11// benchmark
12// pallet
12// --pallet13// --pallet
13// pallet-nonfungible14// pallet-nonfungible
14// --wasm-execution15// --wasm-execution
18// --template19// --template
19// .maintain/frame-weight-template.hbs20// .maintain/frame-weight-template.hbs
20// --steps=5021// --steps=50
21// --repeat=20022// --repeat=80
22// --heap-pages=409623// --heap-pages=4096
23// --output=./pallets/nonfungible/src/weights.rs24// --output=./pallets/nonfungible/src/weights.rs
2425
42 fn approve() -> Weight;43 fn approve() -> Weight;
43 fn transfer_from() -> Weight;44 fn transfer_from() -> Weight;
44 fn burn_from() -> Weight;45 fn burn_from() -> Weight;
45 fn set_property_permissions(b: u32) -> Weight;46 fn set_token_property_permissions(b: u32, ) -> Weight;
46 fn set_token_properties(b: u32) -> Weight;47 fn set_token_properties(b: u32, ) -> Weight;
47 fn delete_token_properties(b: u32) -> Weight;48 fn delete_token_properties(b: u32, ) -> Weight;
48}49}
55 // Storage: Nonfungible TokenData (r:0 w:1)56 // Storage: Nonfungible TokenData (r:0 w:1)
56 // Storage: Nonfungible Owned (r:0 w:1)57 // Storage: Nonfungible Owned (r:0 w:1)
57 fn create_item() -> Weight {58 fn create_item() -> Weight {
58 (18_450_000 as Weight)59 (24_135_000 as Weight)
59 .saturating_add(T::DbWeight::get().reads(2 as Weight))60 .saturating_add(T::DbWeight::get().reads(2 as Weight))
60 .saturating_add(T::DbWeight::get().writes(4 as Weight))61 .saturating_add(T::DbWeight::get().writes(4 as Weight))
61 }62 }
64 // Storage: Nonfungible TokenData (r:0 w:4)65 // Storage: Nonfungible TokenData (r:0 w:4)
65 // Storage: Nonfungible Owned (r:0 w:4)66 // Storage: Nonfungible Owned (r:0 w:4)
66 fn create_multiple_items(b: u32, ) -> Weight {67 fn create_multiple_items(b: u32, ) -> Weight {
67 (10_228_000 as Weight)68 (21_952_000 as Weight)
68 // Standard Error: 1_00069 // Standard Error: 5_000
69 .saturating_add((4_392_000 as Weight).saturating_mul(b as Weight))70 .saturating_add((4_727_000 as Weight).saturating_mul(b as Weight))
70 .saturating_add(T::DbWeight::get().reads(2 as Weight))71 .saturating_add(T::DbWeight::get().reads(2 as Weight))
71 .saturating_add(T::DbWeight::get().writes(2 as Weight))72 .saturating_add(T::DbWeight::get().writes(2 as Weight))
72 .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(b as Weight)))73 .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(b as Weight)))
76 // Storage: Nonfungible TokenData (r:0 w:4)77 // Storage: Nonfungible TokenData (r:0 w:4)
77 // Storage: Nonfungible Owned (r:0 w:4)78 // Storage: Nonfungible Owned (r:0 w:4)
78 fn create_multiple_items_ex(b: u32, ) -> Weight {79 fn create_multiple_items_ex(b: u32, ) -> Weight {
79 (6_543_000 as Weight)80 (10_432_000 as Weight)
80 // Standard Error: 2_00081 // Standard Error: 6_000
81 .saturating_add((7_175_000 as Weight).saturating_mul(b as Weight))82 .saturating_add((7_383_000 as Weight).saturating_mul(b as Weight))
82 .saturating_add(T::DbWeight::get().reads(1 as Weight))83 .saturating_add(T::DbWeight::get().reads(1 as Weight))
83 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))84 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
84 .saturating_add(T::DbWeight::get().writes(1 as Weight))85 .saturating_add(T::DbWeight::get().writes(1 as Weight))
85 .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(b as Weight)))86 .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(b as Weight)))
86 }87 }
87 // Storage: Nonfungible TokenData (r:1 w:1)88 // Storage: Nonfungible TokenData (r:1 w:1)
89 // Storage: Nonfungible TokenChildren (r:1 w:0)
88 // Storage: Nonfungible TokensBurnt (r:1 w:1)90 // Storage: Nonfungible TokensBurnt (r:1 w:1)
89 // Storage: Nonfungible AccountBalance (r:1 w:1)91 // Storage: Nonfungible AccountBalance (r:1 w:1)
90 // Storage: Nonfungible Allowance (r:1 w:0)92 // Storage: Nonfungible Allowance (r:1 w:0)
91 // Storage: Nonfungible Owned (r:0 w:1)93 // Storage: Nonfungible Owned (r:0 w:1)
94 // Storage: Nonfungible TokenProperties (r:0 w:1)
92 fn burn_item() -> Weight {95 fn burn_item() -> Weight {
93 (24_554_000 as Weight)96 (29_798_000 as Weight)
94 .saturating_add(T::DbWeight::get().reads(4 as Weight))97 .saturating_add(T::DbWeight::get().reads(5 as Weight))
95 .saturating_add(T::DbWeight::get().writes(4 as Weight))98 .saturating_add(T::DbWeight::get().writes(5 as Weight))
96 }99 }
97 // Storage: Nonfungible TokenChildren (r:1 w:0)100 // Storage: Nonfungible TokenChildren (r:1 w:0)
98 // Storage: Nonfungible TokenData (r:1 w:1)101 // Storage: Nonfungible TokenData (r:1 w:1)
102 // Storage: Nonfungible Owned (r:0 w:1)105 // Storage: Nonfungible Owned (r:0 w:1)
103 // Storage: Nonfungible TokenProperties (r:0 w:1)106 // Storage: Nonfungible TokenProperties (r:0 w:1)
104 fn burn_recursively_self_raw() -> Weight {107 fn burn_recursively_self_raw() -> Weight {
105 (86_136_000 as Weight)108 (37_955_000 as Weight)
106 .saturating_add(T::DbWeight::get().reads(5 as Weight))109 .saturating_add(T::DbWeight::get().reads(5 as Weight))
107 .saturating_add(T::DbWeight::get().writes(5 as Weight))110 .saturating_add(T::DbWeight::get().writes(5 as Weight))
108 }111 }
116 // Storage: Common CollectionById (r:1 w:0)119 // Storage: Common CollectionById (r:1 w:0)
117 fn burn_recursively_breadth_plus_self_plus_self_per_each_raw(b: u32, ) -> Weight {120 fn burn_recursively_breadth_plus_self_plus_self_per_each_raw(b: u32, ) -> Weight {
118 (0 as Weight)121 (0 as Weight)
119 // Standard Error: 42_828_000122 // Standard Error: 1_349_000
120 .saturating_add((381_478_000 as Weight).saturating_mul(b as Weight))123 .saturating_add((275_145_000 as Weight).saturating_mul(b as Weight))
121 .saturating_add(T::DbWeight::get().reads(6 as Weight))124 .saturating_add(T::DbWeight::get().reads(7 as Weight))
122 .saturating_add(T::DbWeight::get().reads((4 as Weight).saturating_mul(b as Weight)))125 .saturating_add(T::DbWeight::get().reads((4 as Weight).saturating_mul(b as Weight)))
123 .saturating_add(T::DbWeight::get().writes(5 as Weight))126 .saturating_add(T::DbWeight::get().writes(6 as Weight))
124 .saturating_add(T::DbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))127 .saturating_add(T::DbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))
125 }128 }
126 // Storage: Nonfungible TokenData (r:1 w:1)129 // Storage: Nonfungible TokenData (r:1 w:1)
127 // Storage: Nonfungible AccountBalance (r:2 w:2)130 // Storage: Nonfungible AccountBalance (r:2 w:2)
128 // Storage: Nonfungible Allowance (r:1 w:0)131 // Storage: Nonfungible Allowance (r:1 w:0)
129 // Storage: Nonfungible Owned (r:0 w:2)132 // Storage: Nonfungible Owned (r:0 w:2)
130 fn transfer() -> Weight {133 fn transfer() -> Weight {
131 (28_339_000 as Weight)134 (27_867_000 as Weight)
132 .saturating_add(T::DbWeight::get().reads(4 as Weight))135 .saturating_add(T::DbWeight::get().reads(4 as Weight))
133 .saturating_add(T::DbWeight::get().writes(5 as Weight))136 .saturating_add(T::DbWeight::get().writes(5 as Weight))
134 }137 }
135 // Storage: Nonfungible TokenData (r:1 w:0)138 // Storage: Nonfungible TokenData (r:1 w:0)
136 // Storage: Nonfungible Allowance (r:1 w:1)139 // Storage: Nonfungible Allowance (r:1 w:1)
137 fn approve() -> Weight {140 fn approve() -> Weight {
138 (17_616_000 as Weight)141 (18_824_000 as Weight)
139 .saturating_add(T::DbWeight::get().reads(2 as Weight))142 .saturating_add(T::DbWeight::get().reads(2 as Weight))
140 .saturating_add(T::DbWeight::get().writes(1 as Weight))143 .saturating_add(T::DbWeight::get().writes(1 as Weight))
141 }144 }
144 // Storage: Nonfungible AccountBalance (r:2 w:2)147 // Storage: Nonfungible AccountBalance (r:2 w:2)
145 // Storage: Nonfungible Owned (r:0 w:2)148 // Storage: Nonfungible Owned (r:0 w:2)
146 fn transfer_from() -> Weight {149 fn transfer_from() -> Weight {
147 (32_196_000 as Weight)150 (32_879_000 as Weight)
148 .saturating_add(T::DbWeight::get().reads(4 as Weight))151 .saturating_add(T::DbWeight::get().reads(4 as Weight))
149 .saturating_add(T::DbWeight::get().writes(6 as Weight))152 .saturating_add(T::DbWeight::get().writes(6 as Weight))
150 }153 }
151 // Storage: Nonfungible Allowance (r:1 w:1)154 // Storage: Nonfungible Allowance (r:1 w:1)
152 // Storage: Nonfungible TokenData (r:1 w:1)155 // Storage: Nonfungible TokenData (r:1 w:1)
156 // Storage: Nonfungible TokenChildren (r:1 w:0)
153 // Storage: Nonfungible TokensBurnt (r:1 w:1)157 // Storage: Nonfungible TokensBurnt (r:1 w:1)
154 // Storage: Nonfungible AccountBalance (r:1 w:1)158 // Storage: Nonfungible AccountBalance (r:1 w:1)
155 // Storage: Nonfungible Owned (r:0 w:1)159 // Storage: Nonfungible Owned (r:0 w:1)
160 // Storage: Nonfungible TokenProperties (r:0 w:1)
156 fn burn_from() -> Weight {161 fn burn_from() -> Weight {
157 (27_580_000 as Weight)162 (37_061_000 as Weight)
158 .saturating_add(T::DbWeight::get().reads(4 as Weight))163 .saturating_add(T::DbWeight::get().reads(5 as Weight))
159 .saturating_add(T::DbWeight::get().writes(5 as Weight))164 .saturating_add(T::DbWeight::get().writes(6 as Weight))
160 }165 }
161 // Storage: Common CollectionPropertyPermissions (r:1 w:1)166 // Storage: Common CollectionPropertyPermissions (r:1 w:1)
162 fn set_property_permissions(b: u32, ) -> Weight {167 fn set_token_property_permissions(b: u32, ) -> Weight {
163 (0 as Weight)168 (0 as Weight)
164 // Standard Error: 3_432_000169 // Standard Error: 57_000
165 .saturating_add((126_888_000 as Weight).saturating_mul(b as Weight))170 .saturating_add((15_149_000 as Weight).saturating_mul(b as Weight))
166 .saturating_add(T::DbWeight::get().reads(1 as Weight))171 .saturating_add(T::DbWeight::get().reads(1 as Weight))
167 .saturating_add(T::DbWeight::get().writes(1 as Weight))172 .saturating_add(T::DbWeight::get().writes(1 as Weight))
168 }173 }
171 // Storage: Nonfungible TokenProperties (r:1 w:1)176 // Storage: Nonfungible TokenProperties (r:1 w:1)
172 fn set_token_properties(b: u32, ) -> Weight {177 fn set_token_properties(b: u32, ) -> Weight {
173 (0 as Weight)178 (0 as Weight)
174 // Standard Error: 158_583_000179 // Standard Error: 2_278_000
175 .saturating_add((4_707_700_000 as Weight).saturating_mul(b as Weight))180 .saturating_add((409_613_000 as Weight).saturating_mul(b as Weight))
176 .saturating_add(T::DbWeight::get().reads(3 as Weight))181 .saturating_add(T::DbWeight::get().reads(3 as Weight))
177 .saturating_add(T::DbWeight::get().writes(1 as Weight))182 .saturating_add(T::DbWeight::get().writes(1 as Weight))
178 }183 }
181 // Storage: Nonfungible TokenProperties (r:1 w:1)186 // Storage: Nonfungible TokenProperties (r:1 w:1)
182 fn delete_token_properties(b: u32, ) -> Weight {187 fn delete_token_properties(b: u32, ) -> Weight {
183 (0 as Weight)188 (0 as Weight)
184 // Standard Error: 169_018_000189 // Standard Error: 2_234_000
185 .saturating_add((4_783_967_000 as Weight).saturating_mul(b as Weight))190 .saturating_add((408_185_000 as Weight).saturating_mul(b as Weight))
186 .saturating_add(T::DbWeight::get().reads(3 as Weight))191 .saturating_add(T::DbWeight::get().reads(3 as Weight))
187 .saturating_add(T::DbWeight::get().writes(1 as Weight))192 .saturating_add(T::DbWeight::get().writes(1 as Weight))
188 }193 }
195 // Storage: Nonfungible TokenData (r:0 w:1)200 // Storage: Nonfungible TokenData (r:0 w:1)
196 // Storage: Nonfungible Owned (r:0 w:1)201 // Storage: Nonfungible Owned (r:0 w:1)
197 fn create_item() -> Weight {202 fn create_item() -> Weight {
198 (18_450_000 as Weight)203 (24_135_000 as Weight)
199 .saturating_add(RocksDbWeight::get().reads(2 as Weight))204 .saturating_add(RocksDbWeight::get().reads(2 as Weight))
200 .saturating_add(RocksDbWeight::get().writes(4 as Weight))205 .saturating_add(RocksDbWeight::get().writes(4 as Weight))
201 }206 }
204 // Storage: Nonfungible TokenData (r:0 w:4)209 // Storage: Nonfungible TokenData (r:0 w:4)
205 // Storage: Nonfungible Owned (r:0 w:4)210 // Storage: Nonfungible Owned (r:0 w:4)
206 fn create_multiple_items(b: u32, ) -> Weight {211 fn create_multiple_items(b: u32, ) -> Weight {
207 (10_228_000 as Weight)212 (21_952_000 as Weight)
208 // Standard Error: 1_000213 // Standard Error: 5_000
209 .saturating_add((4_392_000 as Weight).saturating_mul(b as Weight))214 .saturating_add((4_727_000 as Weight).saturating_mul(b as Weight))
210 .saturating_add(RocksDbWeight::get().reads(2 as Weight))215 .saturating_add(RocksDbWeight::get().reads(2 as Weight))
211 .saturating_add(RocksDbWeight::get().writes(2 as Weight))216 .saturating_add(RocksDbWeight::get().writes(2 as Weight))
212 .saturating_add(RocksDbWeight::get().writes((2 as Weight).saturating_mul(b as Weight)))217 .saturating_add(RocksDbWeight::get().writes((2 as Weight).saturating_mul(b as Weight)))
216 // Storage: Nonfungible TokenData (r:0 w:4)221 // Storage: Nonfungible TokenData (r:0 w:4)
217 // Storage: Nonfungible Owned (r:0 w:4)222 // Storage: Nonfungible Owned (r:0 w:4)
218 fn create_multiple_items_ex(b: u32, ) -> Weight {223 fn create_multiple_items_ex(b: u32, ) -> Weight {
219 (6_543_000 as Weight)224 (10_432_000 as Weight)
220 // Standard Error: 2_000225 // Standard Error: 6_000
221 .saturating_add((7_175_000 as Weight).saturating_mul(b as Weight))226 .saturating_add((7_383_000 as Weight).saturating_mul(b as Weight))
222 .saturating_add(RocksDbWeight::get().reads(1 as Weight))227 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
223 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))228 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
224 .saturating_add(RocksDbWeight::get().writes(1 as Weight))229 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
225 .saturating_add(RocksDbWeight::get().writes((3 as Weight).saturating_mul(b as Weight)))230 .saturating_add(RocksDbWeight::get().writes((3 as Weight).saturating_mul(b as Weight)))
226 }231 }
227 // Storage: Nonfungible TokenData (r:1 w:1)232 // Storage: Nonfungible TokenData (r:1 w:1)
233 // Storage: Nonfungible TokenChildren (r:1 w:0)
228 // Storage: Nonfungible TokensBurnt (r:1 w:1)234 // Storage: Nonfungible TokensBurnt (r:1 w:1)
229 // Storage: Nonfungible AccountBalance (r:1 w:1)235 // Storage: Nonfungible AccountBalance (r:1 w:1)
230 // Storage: Nonfungible Allowance (r:1 w:0)236 // Storage: Nonfungible Allowance (r:1 w:0)
231 // Storage: Nonfungible Owned (r:0 w:1)237 // Storage: Nonfungible Owned (r:0 w:1)
238 // Storage: Nonfungible TokenProperties (r:0 w:1)
232 fn burn_item() -> Weight {239 fn burn_item() -> Weight {
233 (24_554_000 as Weight)240 (29_798_000 as Weight)
234 .saturating_add(RocksDbWeight::get().reads(4 as Weight))241 .saturating_add(RocksDbWeight::get().reads(5 as Weight))
235 .saturating_add(RocksDbWeight::get().writes(4 as Weight))242 .saturating_add(RocksDbWeight::get().writes(5 as Weight))
236 }243 }
237 // Storage: Nonfungible TokenChildren (r:1 w:0)244 // Storage: Nonfungible TokenChildren (r:1 w:0)
238 // Storage: Nonfungible TokenData (r:1 w:1)245 // Storage: Nonfungible TokenData (r:1 w:1)
242 // Storage: Nonfungible Owned (r:0 w:1)249 // Storage: Nonfungible Owned (r:0 w:1)
243 // Storage: Nonfungible TokenProperties (r:0 w:1)250 // Storage: Nonfungible TokenProperties (r:0 w:1)
244 fn burn_recursively_self_raw() -> Weight {251 fn burn_recursively_self_raw() -> Weight {
245 (86_136_000 as Weight)252 (37_955_000 as Weight)
246 .saturating_add(RocksDbWeight::get().reads(5 as Weight))253 .saturating_add(RocksDbWeight::get().reads(5 as Weight))
247 .saturating_add(RocksDbWeight::get().writes(5 as Weight))254 .saturating_add(RocksDbWeight::get().writes(5 as Weight))
248 }255 }
256 // Storage: Common CollectionById (r:1 w:0)263 // Storage: Common CollectionById (r:1 w:0)
257 fn burn_recursively_breadth_plus_self_plus_self_per_each_raw(b: u32, ) -> Weight {264 fn burn_recursively_breadth_plus_self_plus_self_per_each_raw(b: u32, ) -> Weight {
258 (0 as Weight)265 (0 as Weight)
259 // Standard Error: 42_828_000266 // Standard Error: 1_349_000
260 .saturating_add((381_478_000 as Weight).saturating_mul(b as Weight))267 .saturating_add((275_145_000 as Weight).saturating_mul(b as Weight))
261 .saturating_add(RocksDbWeight::get().reads(6 as Weight))268 .saturating_add(RocksDbWeight::get().reads(7 as Weight))
262 .saturating_add(RocksDbWeight::get().reads((4 as Weight).saturating_mul(b as Weight)))269 .saturating_add(RocksDbWeight::get().reads((4 as Weight).saturating_mul(b as Weight)))
263 .saturating_add(RocksDbWeight::get().writes(5 as Weight))270 .saturating_add(RocksDbWeight::get().writes(6 as Weight))
264 .saturating_add(RocksDbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))271 .saturating_add(RocksDbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))
265 }272 }
266 // Storage: Nonfungible TokenData (r:1 w:1)273 // Storage: Nonfungible TokenData (r:1 w:1)
267 // Storage: Nonfungible AccountBalance (r:2 w:2)274 // Storage: Nonfungible AccountBalance (r:2 w:2)
268 // Storage: Nonfungible Allowance (r:1 w:0)275 // Storage: Nonfungible Allowance (r:1 w:0)
269 // Storage: Nonfungible Owned (r:0 w:2)276 // Storage: Nonfungible Owned (r:0 w:2)
270 fn transfer() -> Weight {277 fn transfer() -> Weight {
271 (28_339_000 as Weight)278 (27_867_000 as Weight)
272 .saturating_add(RocksDbWeight::get().reads(4 as Weight))279 .saturating_add(RocksDbWeight::get().reads(4 as Weight))
273 .saturating_add(RocksDbWeight::get().writes(5 as Weight))280 .saturating_add(RocksDbWeight::get().writes(5 as Weight))
274 }281 }
275 // Storage: Nonfungible TokenData (r:1 w:0)282 // Storage: Nonfungible TokenData (r:1 w:0)
276 // Storage: Nonfungible Allowance (r:1 w:1)283 // Storage: Nonfungible Allowance (r:1 w:1)
277 fn approve() -> Weight {284 fn approve() -> Weight {
278 (17_616_000 as Weight)285 (18_824_000 as Weight)
279 .saturating_add(RocksDbWeight::get().reads(2 as Weight))286 .saturating_add(RocksDbWeight::get().reads(2 as Weight))
280 .saturating_add(RocksDbWeight::get().writes(1 as Weight))287 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
281 }288 }
284 // Storage: Nonfungible AccountBalance (r:2 w:2)291 // Storage: Nonfungible AccountBalance (r:2 w:2)
285 // Storage: Nonfungible Owned (r:0 w:2)292 // Storage: Nonfungible Owned (r:0 w:2)
286 fn transfer_from() -> Weight {293 fn transfer_from() -> Weight {
287 (32_196_000 as Weight)294 (32_879_000 as Weight)
288 .saturating_add(RocksDbWeight::get().reads(4 as Weight))295 .saturating_add(RocksDbWeight::get().reads(4 as Weight))
289 .saturating_add(RocksDbWeight::get().writes(6 as Weight))296 .saturating_add(RocksDbWeight::get().writes(6 as Weight))
290 }297 }
291 // Storage: Nonfungible Allowance (r:1 w:1)298 // Storage: Nonfungible Allowance (r:1 w:1)
292 // Storage: Nonfungible TokenData (r:1 w:1)299 // Storage: Nonfungible TokenData (r:1 w:1)
300 // Storage: Nonfungible TokenChildren (r:1 w:0)
293 // Storage: Nonfungible TokensBurnt (r:1 w:1)301 // Storage: Nonfungible TokensBurnt (r:1 w:1)
294 // Storage: Nonfungible AccountBalance (r:1 w:1)302 // Storage: Nonfungible AccountBalance (r:1 w:1)
295 // Storage: Nonfungible Owned (r:0 w:1)303 // Storage: Nonfungible Owned (r:0 w:1)
304 // Storage: Nonfungible TokenProperties (r:0 w:1)
296 fn burn_from() -> Weight {305 fn burn_from() -> Weight {
297 (27_580_000 as Weight)306 (37_061_000 as Weight)
298 .saturating_add(RocksDbWeight::get().reads(4 as Weight))307 .saturating_add(RocksDbWeight::get().reads(5 as Weight))
299 .saturating_add(RocksDbWeight::get().writes(5 as Weight))308 .saturating_add(RocksDbWeight::get().writes(6 as Weight))
300 }309 }
301 // Storage: Common CollectionPropertyPermissions (r:1 w:1)310 // Storage: Common CollectionPropertyPermissions (r:1 w:1)
302 fn set_property_permissions(b: u32, ) -> Weight {311 fn set_token_property_permissions(b: u32, ) -> Weight {
303 (0 as Weight)312 (0 as Weight)
304 // Standard Error: 3_432_000313 // Standard Error: 57_000
305 .saturating_add((126_888_000 as Weight).saturating_mul(b as Weight))314 .saturating_add((15_149_000 as Weight).saturating_mul(b as Weight))
306 .saturating_add(RocksDbWeight::get().reads(1 as Weight))315 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
307 .saturating_add(RocksDbWeight::get().writes(1 as Weight))316 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
308 }317 }
311 // Storage: Nonfungible TokenProperties (r:1 w:1)320 // Storage: Nonfungible TokenProperties (r:1 w:1)
312 fn set_token_properties(b: u32, ) -> Weight {321 fn set_token_properties(b: u32, ) -> Weight {
313 (0 as Weight)322 (0 as Weight)
314 // Standard Error: 158_583_000323 // Standard Error: 2_278_000
315 .saturating_add((4_707_700_000 as Weight).saturating_mul(b as Weight))324 .saturating_add((409_613_000 as Weight).saturating_mul(b as Weight))
316 .saturating_add(RocksDbWeight::get().reads(3 as Weight))325 .saturating_add(RocksDbWeight::get().reads(3 as Weight))
317 .saturating_add(RocksDbWeight::get().writes(1 as Weight))326 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
318 }327 }
321 // Storage: Nonfungible TokenProperties (r:1 w:1)330 // Storage: Nonfungible TokenProperties (r:1 w:1)
322 fn delete_token_properties(b: u32, ) -> Weight {331 fn delete_token_properties(b: u32, ) -> Weight {
323 (0 as Weight)332 (0 as Weight)
324 // Standard Error: 169_018_000333 // Standard Error: 2_234_000
325 .saturating_add((4_783_967_000 as Weight).saturating_mul(b as Weight))334 .saturating_add((408_185_000 as Weight).saturating_mul(b as Weight))
326 .saturating_add(RocksDbWeight::get().reads(3 as Weight))335 .saturating_add(RocksDbWeight::get().reads(3 as Weight))
327 .saturating_add(RocksDbWeight::get().writes(1 as Weight))336 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
328 }337 }
modifiedpallets/proxy-rmrk-core/src/benchmarking.rsdiffbeforeafterboth
7 BoundedVec,7 BoundedVec,
8};8};
9
10use crate::{Config, Pallet, Call};9use sp_runtime::Permill;
10
11use up_data_structs::*;
12
13use super::*;
1114
12const SEED: u32 = 1;15const SEED: u32 = 1;
1316
14fn create_data<S: Get<u32>>() -> BoundedVec<u8, S> {17fn create_data<S: Get<u32>>() -> BoundedVec<u8, S> {
18 vec![b'A'; S::get() as usize].try_into().expect("size == S")
19}
20
21fn create_u32_array<S: Get<u32>>() -> BoundedVec<u32, S> {
15 vec![0; S::get() as usize].try_into().expect("size == S")22 vec![0; S::get() as usize].try_into().expect("size == S")
16}23}
24
25fn create_basic_resource() -> RmrkBasicResource {
26 RmrkBasicResource {
27 src: Some(create_data()),
28 metadata: Some(create_data()),
29 license: Some(create_data()),
30 thumb: Some(create_data()),
31 }
32}
33
34fn create_composable_resource() -> RmrkComposableResource {
35 RmrkComposableResource {
36 parts: create_u32_array(),
37 base: 100,
38 src: Some(create_data()),
39 metadata: Some(create_data()),
40 license: Some(create_data()),
41 thumb: Some(create_data()),
42 }
43}
44
45fn create_slot_resource() -> RmrkSlotResource {
46 RmrkSlotResource {
47 base: 100,
48 slot: 200,
49 src: Some(create_data()),
50 metadata: Some(create_data()),
51 license: Some(create_data()),
52 thumb: Some(create_data()),
53 }
54}
55
56fn create_max_resource_types_array<S: Get<u32>>(num: usize) -> BoundedVec<RmrkResourceTypes, S> {
57 vec![RmrkResourceTypes::Composable(create_composable_resource()); num]
58 .try_into()
59 .expect("num <= S")
60}
61
62fn create_max_collection<T: Config>(owner: &T::AccountId) -> DispatchResult {
63 <T as pallet_common::Config>::Currency::deposit_creating(
64 owner,
65 T::CollectionCreationPrice::get(),
66 );
67
68 let metadata = create_data();
69 let max = None;
70 let symbol = create_data();
71
72 <Pallet<T>>::create_collection(
73 RawOrigin::Signed(owner.clone()).into(),
74 metadata,
75 max,
76 symbol,
77 )
78}
79
80fn create_nft<T: Config>(owner: &T::AccountId, collection_id: RmrkCollectionId) -> DispatchResult {
81 let royalty_recipient = Some(owner.clone());
82 let royalty_amount = Some(Permill::from_percent(25));
83 let metadata = create_data();
84 let transferable = true;
85
86 <Pallet<T>>::mint_nft(
87 RawOrigin::Signed(owner.clone()).into(),
88 None,
89 collection_id,
90 royalty_recipient,
91 royalty_amount,
92 metadata,
93 transferable,
94 None,
95 )
96}
97
98struct NftBuilder {
99 collection_id: RmrkCollectionId,
100 current_nft_id: RmrkNftId,
101}
102
103impl NftBuilder {
104 fn new(collection_id: RmrkCollectionId) -> Self {
105 Self {
106 collection_id,
107 current_nft_id: 0,
108 }
109 }
110
111 fn build<T: Config>(&mut self, owner: &T::AccountId) -> Result<RmrkNftId, DispatchError> {
112 create_nft::<T>(owner, self.collection_id)?;
113 self.current_nft_id += 1;
114
115 Ok(self.current_nft_id)
116 }
117
118 fn build_tower<T: Config>(
119 &mut self,
120 owner: &T::AccountId,
121 height: u32,
122 ) -> Result<(RmrkNftId, RmrkNftId), DispatchError> {
123 self.build::<T>(owner)?;
124
125 let root_nft_id = self.current_nft_id;
126 let mut prev_nft_id = root_nft_id;
127
128 for _ in 0..height {
129 self.build::<T>(owner)?;
130
131 let new_owner =
132 <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(
133 self.collection_id,
134 prev_nft_id,
135 );
136
137 <Pallet<T>>::send(
138 RawOrigin::Signed(owner.clone()).into(),
139 self.collection_id,
140 self.current_nft_id,
141 new_owner,
142 )?;
143
144 prev_nft_id = self.current_nft_id;
145 }
146
147 let deepest_nft_id = self.current_nft_id;
148
149 Ok((root_nft_id, deepest_nft_id))
150 }
151
152 fn build_wide_tree<T: Config>(
153 &mut self,
154 owner: &T::AccountId,
155 width: u32,
156 ) -> Result<RmrkNftId, DispatchError> {
157 self.build::<T>(owner)?;
158
159 let root_nft_id = self.current_nft_id;
160
161 let root_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(
162 self.collection_id,
163 root_nft_id,
164 );
165
166 for _ in 0..width {
167 self.build::<T>(owner)?;
168
169 <Pallet<T>>::send(
170 RawOrigin::Signed(owner.clone()).into(),
171 self.collection_id,
172 self.current_nft_id,
173 root_owner.clone(),
174 )?;
175 }
176
177 Ok(root_nft_id)
178 }
179}
17180
18benchmarks! {181benchmarks! {
19 create_collection {182 create_collection {
20 let caller = account("caller", 0, SEED);183 let caller = account("caller", 0, SEED);
21 <T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());184 <T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());
22 let metadata = create_data();185 let metadata = create_data();
23 // TODO: Fix CollectionTokenPrefixLimitExceeded with create_data186 let max = None;
24 let symbol = vec![].try_into().expect("0 <= x");187 let symbol = create_data();
188 }: _(RawOrigin::Signed(caller), metadata, max, symbol)
189
190 destroy_collection {
191 let caller = account("caller", 0, SEED);
192
193 create_max_collection::<T>(&caller)?;
194 let collection_id = 0;
195 }: _(RawOrigin::Signed(caller), collection_id)
196
197 change_collection_issuer {
198 let caller: T::AccountId = account("caller", 0, SEED);
199
200 create_max_collection::<T>(&caller)?;
201 let collection_id = 0;
202
203 let new_owner: T::AccountId = account("new_owner", 0, SEED);
204
205 let new_owner_source = T::Lookup::unlookup(new_owner);
206 }: _(RawOrigin::Signed(caller), collection_id, new_owner_source)
207
208 lock_collection {
209 let caller: T::AccountId = account("caller", 0, SEED);
210
211 create_max_collection::<T>(&caller)?;
212 let collection_id = 0;
213 }: _(RawOrigin::Signed(caller), collection_id)
214
215 mint_nft {
216 let b in 0..100;
217
218 let caller: T::AccountId = account("caller", 0, SEED);
219
220 create_max_collection::<T>(&caller)?;
221 let collection_id = 0;
222 let owner = caller.clone();
223
224 let royalty_recipient = Some(caller.clone());
225 let royalty_amount = Some(Permill::from_percent(25));
226 let metadata = create_data();
227 let transferable = true;
25 }: _(RawOrigin::Signed(caller), metadata, None, symbol)228 }: _(
229 RawOrigin::Signed(caller),
230 None,
231 collection_id,
232 royalty_recipient,
233 royalty_amount,
234 metadata,
235 transferable,
236 Some(create_max_resource_types_array(b as usize))
237 )
238
239 burn_nft {
240 let b in 0..200;
241
242 let caller: T::AccountId = account("caller", 0, SEED);
243 create_max_collection::<T>(&caller)?;
244 let collection_id = 0;
245
246 let mut nft_builder = NftBuilder::new(collection_id);
247 let root_nft_id = nft_builder.build_wide_tree::<T>(&caller, b)?;
248 let max_burns = b + 1;
249 }: _(
250 RawOrigin::Signed(caller),
251 collection_id,
252 root_nft_id,
253 max_burns
254 )
255
256 send {
257 let caller: T::AccountId = account("caller", 0, SEED);
258 create_max_collection::<T>(&caller)?;
259 let collection_id = 0;
260
261 let mut nft_builder = NftBuilder::new(collection_id);
262 let src_nft_id = nft_builder.build::<T>(&caller)?;
263 let (_, target_nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 2)?;
264 }: _(
265 RawOrigin::Signed(caller),
266 collection_id,
267 src_nft_id,
268 <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(collection_id, target_nft_id)
269 )
270
271 accept_nft {
272 let caller: T::AccountId = account("caller", 0, SEED);
273 let sender: T::AccountId = account("sender", 0, SEED);
274
275 create_max_collection::<T>(&sender)?;
276 let src_collection_id = 0;
277
278 create_max_collection::<T>(&caller)?;
279 let target_collection_id = 1;
280
281 let mut src_nft_builder = NftBuilder::new(src_collection_id);
282 let src_nft_id = src_nft_builder.build::<T>(&sender)?;
283
284 let mut target_nft_builder = NftBuilder::new(target_collection_id);
285 let fake_target_nft_id = target_nft_builder.build::<T>(&caller)?;
286 let (_, target_nft_id) = target_nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
287
288 let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(
289 target_collection_id,
290 fake_target_nft_id
291 );
292
293 let actual_new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(
294 target_collection_id,
295 target_nft_id
296 );
297
298 <Pallet<T>>::send(
299 RawOrigin::Signed(sender.clone()).into(),
300 src_collection_id,
301 src_nft_id,
302 new_owner,
303 )?;
304 }: _(
305 RawOrigin::Signed(caller),
306 src_collection_id,
307 src_nft_id,
308 actual_new_owner
309 )
310
311 reject_nft {
312 let caller: T::AccountId = account("caller", 0, SEED);
313 let sender: T::AccountId = account("sender", 0, SEED);
314
315 create_max_collection::<T>(&sender)?;
316 let src_collection_id = 0;
317
318 create_max_collection::<T>(&caller)?;
319 let target_collection_id = 1;
320
321 let mut src_nft_builder = NftBuilder::new(src_collection_id);
322 let (src_root_nft_id, _) = src_nft_builder.build_tower::<T>(&sender, NESTING_BUDGET - 1)?;
323
324 let mut target_nft_builder = NftBuilder::new(target_collection_id);
325 let target_nft_id = target_nft_builder.build::<T>(&caller)?;
326
327 let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(
328 target_collection_id,
329 target_nft_id
330 );
331
332 <Pallet<T>>::send(
333 RawOrigin::Signed(sender.clone()).into(),
334 src_collection_id,
335 src_root_nft_id,
336 new_owner,
337 )?;
338 }: _(
339 RawOrigin::Signed(caller),
340 src_collection_id,
341 src_root_nft_id
342 )
343
344 set_property {
345 let caller: T::AccountId = account("caller", 0, SEED);
346 create_max_collection::<T>(&caller)?;
347 let collection_id = 0;
348
349 let mut nft_builder = NftBuilder::new(collection_id);
350 let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
351
352 let key = create_data();
353 let value = create_data();
354 }: _(
355 RawOrigin::Signed(caller),
356 collection_id,
357 Some(nft_id),
358 key,
359 value
360 )
361
362 set_priority {
363 let caller: T::AccountId = account("caller", 0, SEED);
364 create_max_collection::<T>(&caller)?;
365 let collection_id = 0;
366
367 let mut nft_builder = NftBuilder::new(collection_id);
368 let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
369 let priorities = create_u32_array();
370 }: _(
371 RawOrigin::Signed(caller),
372 collection_id,
373 nft_id,
374 priorities
375 )
376
377 add_basic_resource {
378 let caller: T::AccountId = account("caller", 0, SEED);
379
380 create_max_collection::<T>(&caller)?;
381 let collection_id = 0;
382
383 let mut nft_builder = NftBuilder::new(collection_id);
384 let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
385 let resource = create_basic_resource();
386 }: _(
387 RawOrigin::Signed(caller),
388 collection_id,
389 nft_id,
390 resource
391 )
392
393 add_composable_resource {
394 let caller: T::AccountId = account("caller", 0, SEED);
395
396 create_max_collection::<T>(&caller)?;
397 let collection_id = 0;
398
399 let mut nft_builder = NftBuilder::new(collection_id);
400 let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
401 let resource = create_composable_resource();
402 }: _(
403 RawOrigin::Signed(caller),
404 collection_id,
405 nft_id,
406 resource
407 )
408
409 add_slot_resource {
410 let caller: T::AccountId = account("caller", 0, SEED);
411
412 create_max_collection::<T>(&caller)?;
413 let collection_id = 0;
414
415 let mut nft_builder = NftBuilder::new(collection_id);
416 let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
417 let resource = create_slot_resource();
418 }: _(
419 RawOrigin::Signed(caller),
420 collection_id,
421 nft_id,
422 resource
423 )
424
425 remove_resource {
426 let caller: T::AccountId = account("caller", 0, SEED);
427
428 create_max_collection::<T>(&caller)?;
429 let collection_id = 0;
430
431 let mut nft_builder = NftBuilder::new(collection_id);
432 let (_, nft_id) = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
433 let resource = create_basic_resource();
434
435 <Pallet<T>>::add_basic_resource(
436 RawOrigin::Signed(caller.clone()).into(),
437 collection_id,
438 nft_id,
439 resource
440 )?;
441
442 let resource_id = 0;
443 }: _(
444 RawOrigin::Signed(caller),
445 collection_id,
446 nft_id,
447 resource_id
448 )
449
450 accept_resource {
451 let caller: T::AccountId = account("caller", 0, SEED);
452 let admin: T::AccountId = account("admin", 0, SEED);
453
454 create_max_collection::<T>(&admin)?;
455 let collection_id = 0;
456
457 let mut nft_builder = NftBuilder::new(collection_id);
458 let root_nft_id = 1;
459 let (_, nested_nft_id) = nft_builder.build_tower::<T>(&admin, NESTING_BUDGET - 1)?;
460 let resource = create_basic_resource();
461
462 let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::AccountId(caller.clone());
463
464 <Pallet<T>>::send(
465 RawOrigin::Signed(admin.clone()).into(),
466 collection_id,
467 root_nft_id,
468 new_owner,
469 )?;
470
471 <Pallet<T>>::add_basic_resource(
472 RawOrigin::Signed(admin.clone()).into(),
473 collection_id,
474 nested_nft_id,
475 resource
476 )?;
477
478 let resource_id = 0;
479 }: _(
480 RawOrigin::Signed(caller),
481 collection_id,
482 nested_nft_id,
483 resource_id
484 )
485
486 accept_resource_removal {
487 let caller: T::AccountId = account("caller", 0, SEED);
488 let admin: T::AccountId = account("admin", 0, SEED);
489
490 create_max_collection::<T>(&admin)?;
491 let collection_id = 0;
492
493 let mut nft_builder = NftBuilder::new(collection_id);
494 let root_nft_id = 1;
495 let (_, nested_nft_id) = nft_builder.build_tower::<T>(&admin, NESTING_BUDGET - 1)?;
496 let resource = create_basic_resource();
497
498 <Pallet<T>>::add_basic_resource(
499 RawOrigin::Signed(admin.clone()).into(),
500 collection_id,
501 nested_nft_id,
502 resource
503 )?;
504
505 let resource_id = 0;
506
507 let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::AccountId(caller.clone());
508
509 <Pallet<T>>::send(
510 RawOrigin::Signed(admin.clone()).into(),
511 collection_id,
512 root_nft_id,
513 new_owner,
514 )?;
515
516 <Pallet<T>>::remove_resource(
517 RawOrigin::Signed(admin).into(),
518 collection_id,
519 nested_nft_id,
520 resource_id
521 )?;
522 }: _(
523 RawOrigin::Signed(caller),
524 collection_id,
525 nested_nft_id,
526 resource_id
527 )
26}528}
27529
modifiedpallets/proxy-rmrk-core/src/lib.rsdiffbeforeafterboth
35pub mod benchmarking;35pub mod benchmarking;
36pub mod misc;36pub mod misc;
37pub mod property;37pub mod property;
38pub mod rpc;
38pub mod weights;39pub mod weights;
3940
40pub type SelfWeightOf<T> = <T as Config>::WeightInfo;41pub type SelfWeightOf<T> = <T as Config>::WeightInfo;
4546
46use RmrkProperty::*;47use RmrkProperty::*;
4748
48const NESTING_BUDGET: u32 = 5;49pub const NESTING_BUDGET: u32 = 5;
4950
50#[frame_support::pallet]51#[frame_support::pallet]
51pub mod pallet {52pub mod pallet {
68 pub type UniqueCollectionId<T: Config> =69 pub type UniqueCollectionId<T: Config> =
69 StorageMap<_, Twox64Concat, RmrkCollectionId, CollectionId, ValueQuery>;70 StorageMap<_, Twox64Concat, RmrkCollectionId, CollectionId, ValueQuery>;
7071
71 #[pallet::storage]
72 pub type RmrkInernalCollectionId<T: Config> =
73 StorageMap<_, Twox64Concat, CollectionId, RmrkCollectionId, ValueQuery>;
74
75 #[pallet::pallet]72 #[pallet::pallet]
76 #[pallet::generate_store(pub(super) trait Store)]73 #[pallet::generate_store(pub(super) trait Store)]
77 pub struct Pallet<T>(_);74 pub struct Pallet<T>(_);
158 NftTypeEncodeError,155 NftTypeEncodeError,
159 RmrkPropertyKeyIsTooLong,156 RmrkPropertyKeyIsTooLong,
160 RmrkPropertyValueIsTooLong,157 RmrkPropertyValueIsTooLong,
158 RmrkPropertyIsNotFound,
159 UnableToDecodeRmrkData,
161160
162 /* RMRK compatible events */161 /* RMRK compatible events */
163 CollectionNotEmpty,162 CollectionNotEmpty,
171 CannotSendToDescendentOrSelf,170 CannotSendToDescendentOrSelf,
172 CannotAcceptNonOwnedNft,171 CannotAcceptNonOwnedNft,
173 CannotRejectNonOwnedNft,172 CannotRejectNonOwnedNft,
173 CannotRejectNonPendingNft,
174 ResourceNotPending,174 ResourceNotPending,
175 NoAvailableResourceId,
175 }176 }
176177
177 #[pallet::call]178 #[pallet::call]
202 permissions: Some(CollectionPermissions {203 permissions: Some(CollectionPermissions {
203 nesting: Some(NestingPermissions {204 nesting: Some(NestingPermissions {
204 token_owner: true,205 token_owner: true,
205 admin: false,206 collection_admin: false,
206 restricted: None,207 restricted: None,
207208
208 permissive: false,209 permissive: false,
224 let rmrk_collection_id = <CollectionIndex<T>>::get();225 let rmrk_collection_id = <CollectionIndex<T>>::get();
225226
226 <UniqueCollectionId<T>>::insert(rmrk_collection_id, unique_collection_id);227 <UniqueCollectionId<T>>::insert(rmrk_collection_id, unique_collection_id);
227 <RmrkInernalCollectionId<T>>::insert(unique_collection_id, rmrk_collection_id);
228228
229 <PalletCommon<T>>::set_scoped_collection_property(
230 unique_collection_id,
231 PropertyScope::Rmrk,
232 Self::rmrk_property(RmrkInternalCollectionId, &rmrk_collection_id)?,
233 )?;
234
229 <CollectionIndex<T>>::mutate(|n| *n += 1);235 <CollectionIndex<T>>::mutate(|n| *n += 1);
230236
231 Self::deposit_event(Event::CollectionCreated {237 Self::deposit_event(Event::CollectionCreated {
237 }243 }
238244
239 /// destroy collection245 /// destroy collection
240 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
241 #[transactional]246 #[transactional]
247 #[pallet::weight(<SelfWeightOf<T>>::destroy_collection())]
242 pub fn destroy_collection(248 pub fn destroy_collection(
243 origin: OriginFor<T>,249 origin: OriginFor<T>,
244 collection_id: RmrkCollectionId,250 collection_id: RmrkCollectionId,
269 /// - `origin`: sender of the transaction275 /// - `origin`: sender of the transaction
270 /// - `collection_id`: collection id of the nft to change issuer of276 /// - `collection_id`: collection id of the nft to change issuer of
271 /// - `new_issuer`: Collection's new issuer277 /// - `new_issuer`: Collection's new issuer
272 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
273 #[transactional]278 #[transactional]
279 #[pallet::weight(<SelfWeightOf<T>>::change_collection_issuer())]
274 pub fn change_collection_issuer(280 pub fn change_collection_issuer(
275 origin: OriginFor<T>,281 origin: OriginFor<T>,
276 collection_id: RmrkCollectionId,282 collection_id: RmrkCollectionId,
300 }306 }
301307
302 /// lock collection308 /// lock collection
303 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
304 #[transactional]309 #[transactional]
310 #[pallet::weight(<SelfWeightOf<T>>::lock_collection())]
305 pub fn lock_collection(311 pub fn lock_collection(
306 origin: OriginFor<T>,312 origin: OriginFor<T>,
307 collection_id: RmrkCollectionId,313 collection_id: RmrkCollectionId,
341 /// - `royalty`: Permillage reward from each trade for the Recipient347 /// - `royalty`: Permillage reward from each trade for the Recipient
342 /// - `metadata`: Arbitrary data about an nft, e.g. IPFS hash348 /// - `metadata`: Arbitrary data about an nft, e.g. IPFS hash
343 /// - `transferable`: Ability to transfer this NFT349 /// - `transferable`: Ability to transfer this NFT
344 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
345 #[transactional]350 #[transactional]
351 #[pallet::weight(<SelfWeightOf<T>>::mint_nft(resources.as_ref().map(|r| r.len() as u32).unwrap_or(0)))]
346 pub fn mint_nft(352 pub fn mint_nft(
347 origin: OriginFor<T>,353 origin: OriginFor<T>,
348 owner: T::AccountId,354 owner: Option<T::AccountId>,
349 collection_id: RmrkCollectionId,355 collection_id: RmrkCollectionId,
350 recipient: Option<T::AccountId>,356 recipient: Option<T::AccountId>,
351 royalty_amount: Option<Permill>,357 royalty_amount: Option<Permill>,
352 metadata: RmrkString,358 metadata: RmrkString,
353 transferable: bool,359 transferable: bool,
360 resources: Option<BoundedVec<RmrkResourceTypes, MaxResourcesOnMint>>,
354 ) -> DispatchResult {361 ) -> DispatchResult {
355 let sender = ensure_signed(origin)?;362 let sender = ensure_signed(origin)?;
356 let sender = T::CrossAccountId::from_sub(sender);363 let cross_sender = T::CrossAccountId::from_sub(sender.clone());
364
365 let owner = owner.unwrap_or(sender.clone());
357 let cross_owner = T::CrossAccountId::from_sub(owner.clone());366 let cross_owner = T::CrossAccountId::from_sub(owner.clone());
358367
359 let collection = Self::get_typed_nft_collection(368 let collection = Self::get_typed_nft_collection(
368 });377 });
369378
370 let nft_id = Self::create_nft(379 let nft_id = Self::create_nft(
371 &sender,380 &cross_sender,
372 &cross_owner,381 &cross_owner,
373 &collection,382 &collection,
374 [383 [
378 Self::rmrk_property(RoyaltyInfo, &royalty_info)?,387 Self::rmrk_property(RoyaltyInfo, &royalty_info)?,
379 Self::rmrk_property(Metadata, &metadata)?,388 Self::rmrk_property(Metadata, &metadata)?,
380 Self::rmrk_property(Equipped, &false)?,389 Self::rmrk_property(Equipped, &false)?,
381 Self::rmrk_property(
382 ResourceCollection,
383 &Self::init_collection(
384 sender.clone(),
385 CreateCollectionData {
386 ..Default::default()
387 },
388 [Self::rmrk_property(
389 CollectionType,
390 &misc::CollectionType::Resource,
391 )?]
392 .into_iter(),
393 )?,
394 )?, // todo possibly add limits to the collection if rmrk warrants them
395 Self::rmrk_property(ResourcePriorities, &<Vec<u8>>::new())?,390 Self::rmrk_property(ResourcePriorities, &<Vec<u8>>::new())?,
391 Self::rmrk_property(NextResourceId, &(0 as RmrkResourceId))?,
396 ]392 ]
397 .into_iter(),393 .into_iter(),
398 )394 )
401 err => Self::map_unique_err_to_proxy(err),397 err => Self::map_unique_err_to_proxy(err),
402 })?;398 })?;
403399
400 if let Some(resources) = resources {
401 for resource in resources {
402 Self::resource_add(sender.clone(), collection.id, nft_id, resource)?;
403 }
404 }
405
404 Self::deposit_event(Event::NftMinted {406 Self::deposit_event(Event::NftMinted {
405 owner,407 owner,
406 collection_id,408 collection_id,
411 }413 }
412414
413 /// burn nft415 /// burn nft
414 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
415 #[transactional]416 #[transactional]
417 #[pallet::weight(<SelfWeightOf<T>>::burn_nft(*max_burns))]
416 pub fn burn_nft(418 pub fn burn_nft(
417 origin: OriginFor<T>,419 origin: OriginFor<T>,
418 collection_id: RmrkCollectionId,420 collection_id: RmrkCollectionId,
419 nft_id: RmrkNftId,421 nft_id: RmrkNftId,
422 max_burns: u32,
420 ) -> DispatchResult {423 ) -> DispatchResult {
421 let sender = ensure_signed(origin)?;424 let sender = ensure_signed(origin)?;
422 let cross_sender = T::CrossAccountId::from_sub(sender.clone());425 let cross_sender = T::CrossAccountId::from_sub(sender.clone());
431 cross_sender,434 cross_sender,
432 Self::unique_collection_id(collection_id)?,435 Self::unique_collection_id(collection_id)?,
433 nft_id.into(),436 nft_id.into(),
437 max_burns,
438 <Error<T>>::NoPermission,
434 )439 )
435 .map_err(Self::map_unique_err_to_proxy)?;440 .map_err(|err| Self::map_unique_err_to_proxy(err.error))?;
436441
437 Self::deposit_event(Event::NFTBurned {442 Self::deposit_event(Event::NFTBurned {
438 owner: sender,443 owner: sender,
449 /// - `rmrk_collection_id`: collection id of the nft to be transferred454 /// - `rmrk_collection_id`: collection id of the nft to be transferred
450 /// - `rmrk_nft_id`: nft id of the nft to be transferred455 /// - `rmrk_nft_id`: nft id of the nft to be transferred
451 /// - `new_owner`: new owner of the nft which can be either an account or a NFT456 /// - `new_owner`: new owner of the nft which can be either an account or a NFT
452 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
453 #[transactional]457 #[transactional]
458 #[pallet::weight(<SelfWeightOf<T>>::send())]
454 pub fn send(459 pub fn send(
455 origin: OriginFor<T>,460 origin: OriginFor<T>,
456 rmrk_collection_id: RmrkCollectionId,461 rmrk_collection_id: RmrkCollectionId,
561 /// - `rmrk_nft_id`: nft id of the nft to be accepted566 /// - `rmrk_nft_id`: nft id of the nft to be accepted
562 /// - `new_owner`: either origin's account ID or origin-owned NFT, whichever the NFT was567 /// - `new_owner`: either origin's account ID or origin-owned NFT, whichever the NFT was
563 /// sent to568 /// sent to
564 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
565 #[transactional]569 #[transactional]
570 #[pallet::weight(<SelfWeightOf<T>>::accept_nft())]
566 pub fn accept_nft(571 pub fn accept_nft(
567 origin: OriginFor<T>,572 origin: OriginFor<T>,
568 rmrk_collection_id: RmrkCollectionId,573 rmrk_collection_id: RmrkCollectionId,
636 /// - `origin`: sender of the transaction641 /// - `origin`: sender of the transaction
637 /// - `rmrk_collection_id`: collection id of the nft to be accepted642 /// - `rmrk_collection_id`: collection id of the nft to be accepted
638 /// - `rmrk_nft_id`: nft id of the nft to be accepted643 /// - `rmrk_nft_id`: nft id of the nft to be accepted
639 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
640 #[transactional]644 #[transactional]
645 #[pallet::weight(<SelfWeightOf<T>>::reject_nft())]
641 pub fn reject_nft(646 pub fn reject_nft(
642 origin: OriginFor<T>,647 origin: OriginFor<T>,
643 rmrk_collection_id: RmrkCollectionId,648 rmrk_collection_id: RmrkCollectionId,
653 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;658 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
654 collection.check_is_external()?;659 collection.check_is_external()?;
655660
656 Self::destroy_nft(cross_sender, collection_id, nft_id).map_err(|err| {661 ensure!(
657 if err == <CommonError<T>>::NoPermission.into()662 <TokenData<T>>::get((collection_id, nft_id)).is_some(),
658 || err == <CommonError<T>>::ApprovedValueTooLow.into()
659 {663 <Error<T>>::NoAvailableNftId
660 <Error<T>>::CannotRejectNonOwnedNft.into()
661 } else {
662 Self::map_unique_err_to_proxy(err)
663 }
664 })?;664 );
665665
666 ensure!(
667 Self::get_nft_property_decoded(
668 collection_id,
669 nft_id,
670 RmrkProperty::PendingNftAccept
671 )?,
672 <Error<T>>::CannotRejectNonPendingNft
673 );
674
675 Self::destroy_nft(
676 cross_sender,
677 collection_id,
678 nft_id,
679 NESTING_BUDGET,
680 <Error<T>>::CannotRejectNonOwnedNft,
681 )
682 .map_err(|err| Self::map_unique_err_to_proxy(err.error))?;
683
666 Self::deposit_event(Event::NFTRejected {684 Self::deposit_event(Event::NFTRejected {
667 sender,685 sender,
668 collection_id: rmrk_collection_id,686 collection_id: rmrk_collection_id,
673 }691 }
674692
675 /// accept the addition of a new resource to an existing NFT693 /// accept the addition of a new resource to an existing NFT
676 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
677 #[transactional]694 #[transactional]
695 #[pallet::weight(<SelfWeightOf<T>>::accept_resource())]
678 pub fn accept_resource(696 pub fn accept_resource(
679 origin: OriginFor<T>,697 origin: OriginFor<T>,
680 rmrk_collection_id: RmrkCollectionId,698 rmrk_collection_id: RmrkCollectionId,
681 rmrk_nft_id: RmrkNftId,699 rmrk_nft_id: RmrkNftId,
682 rmrk_resource_id: RmrkResourceId,700 resource_id: RmrkResourceId,
683 ) -> DispatchResult {701 ) -> DispatchResult {
684 let sender = ensure_signed(origin)?;702 let sender = ensure_signed(origin)?;
685 let cross_sender = T::CrossAccountId::from_sub(sender);703 let cross_sender = T::CrossAccountId::from_sub(sender);
691 collection.check_is_external()?;709 collection.check_is_external()?;
692710
693 let nft_id = rmrk_nft_id.into();711 let nft_id = rmrk_nft_id.into();
694 let resource_id = rmrk_resource_id.into();
695712
696 let budget = budget::Value::new(NESTING_BUDGET);713 let budget = budget::Value::new(NESTING_BUDGET);
697714
698 let nft_owner =715 let nft_owner =
699 <PalletStructure<T>>::find_topmost_owner(collection_id, nft_id, &budget)716 <PalletStructure<T>>::find_topmost_owner(collection_id, nft_id, &budget)
700 .map_err(|_| <Error<T>>::ResourceDoesntExist)?;717 .map_err(|_| <Error<T>>::ResourceDoesntExist)?;
701718
702 let resource_collection_id: CollectionId =719 Self::try_mutate_resource_info(collection_id, nft_id, resource_id, |res| {
703 Self::get_nft_property_decoded(collection_id, nft_id, ResourceCollection)720 ensure!(res.pending, <Error<T>>::ResourceNotPending);
704 .map_err(|_| <Error<T>>::ResourceDoesntExist)?;721 ensure!(cross_sender == nft_owner, <Error<T>>::NoPermission);
705722
706 let is_pending: bool = Self::get_nft_property_decoded(723 res.pending = false;
707 resource_collection_id,
708 resource_id,
709 PendingResourceAccept,
710 )
711 .map_err(|_| <Error<T>>::ResourceDoesntExist)?;
712724
713 ensure!(is_pending, <Error<T>>::ResourceNotPending);725 Ok(())
726 })?;
714727
715 ensure!(cross_sender == nft_owner, <Error<T>>::NoPermission);
716
717 <PalletNft<T>>::set_scoped_token_property(
718 resource_collection_id,
719 rmrk_resource_id.into(),
720 PropertyScope::Rmrk,
721 Self::rmrk_property(PendingResourceAccept, &false)?,
722 )?;
723
724 Self::deposit_event(Event::<T>::ResourceAccepted {728 Self::deposit_event(Event::<T>::ResourceAccepted {
725 nft_id: rmrk_nft_id,729 nft_id: rmrk_nft_id,
726 resource_id: rmrk_resource_id,730 resource_id,
727 });731 });
728732
729 Ok(())733 Ok(())
730 }734 }
731735
732 /// accept the removal of a resource of an existing NFT736 /// accept the removal of a resource of an existing NFT
733 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
734 #[transactional]737 #[transactional]
738 #[pallet::weight(<SelfWeightOf<T>>::accept_resource_removal())]
735 pub fn accept_resource_removal(739 pub fn accept_resource_removal(
736 origin: OriginFor<T>,740 origin: OriginFor<T>,
737 rmrk_collection_id: RmrkCollectionId,741 rmrk_collection_id: RmrkCollectionId,
738 rmrk_nft_id: RmrkNftId,742 rmrk_nft_id: RmrkNftId,
739 rmrk_resource_id: RmrkResourceId,743 resource_id: RmrkResourceId,
740 ) -> DispatchResult {744 ) -> DispatchResult {
741 let sender = ensure_signed(origin)?;745 let sender = ensure_signed(origin)?;
742 let cross_sender = T::CrossAccountId::from_sub(sender);746 let cross_sender = T::CrossAccountId::from_sub(sender);
748 collection.check_is_external()?;752 collection.check_is_external()?;
749753
750 let nft_id = rmrk_nft_id.into();754 let nft_id = rmrk_nft_id.into();
751 let resource_id = rmrk_resource_id.into();
752755
753 let budget = budget::Value::new(NESTING_BUDGET);756 let budget = budget::Value::new(NESTING_BUDGET);
754757
758761
759 ensure!(cross_sender == nft_owner, <Error<T>>::NoPermission);762 ensure!(cross_sender == nft_owner, <Error<T>>::NoPermission);
760763
761 let resource_collection_id: CollectionId =764 let resource_id_key = Self::rmrk_property_key(ResourceId(resource_id))?;
762 Self::get_nft_property_decoded(collection_id, nft_id, ResourceCollection)
763 .map_err(|_| <Error<T>>::ResourceDoesntExist)?;
764765
765 let is_pending: bool = Self::get_nft_property_decoded(766 let resource_info = <PalletNft<T>>::token_aux_property((
766 resource_collection_id,767 collection_id,
767 resource_id,768 nft_id,
768 PendingResourceRemoval,769 PropertyScope::Rmrk,
769 )770 resource_id_key.clone(),
770 .map_err(|_| <Error<T>>::ResourceDoesntExist)?;771 ))
772 .ok_or(<Error<T>>::ResourceDoesntExist)?;
771773
772 ensure!(is_pending, <Error<T>>::ResourceNotPending);774 let resource_info: RmrkResourceInfo = Self::decode_property(&resource_info)?;
773775
774 let resource_collection = Self::get_typed_nft_collection(776 ensure!(
775 resource_collection_id,777 resource_info.pending_removal,
776 misc::CollectionType::Resource,778 <Error<T>>::ResourceNotPending
777 )?;779 );
778780
779 <PalletNft<T>>::burn(&resource_collection, &cross_sender, rmrk_resource_id.into())781 <PalletNft<T>>::remove_token_aux_property(
782 collection_id,
783 nft_id,
780 .map_err(Self::map_unique_err_to_proxy)?;784 PropertyScope::Rmrk,
785 resource_id_key,
786 );
781787
782 Self::deposit_event(Event::<T>::ResourceRemovalAccepted {788 Self::deposit_event(Event::<T>::ResourceRemovalAccepted {
783 nft_id: rmrk_nft_id,789 nft_id: rmrk_nft_id,
784 resource_id: rmrk_resource_id,790 resource_id,
785 });791 });
786792
787 Ok(())793 Ok(())
788 }794 }
789795
790 /// set a custom value on an NFT796 /// set a custom value on an NFT
791 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
792 #[transactional]797 #[transactional]
798 #[pallet::weight(<SelfWeightOf<T>>::set_property())]
793 pub fn set_property(799 pub fn set_property(
794 origin: OriginFor<T>,800 origin: OriginFor<T>,
795 #[pallet::compact] rmrk_collection_id: RmrkCollectionId,801 #[pallet::compact] rmrk_collection_id: RmrkCollectionId,
848 }854 }
849855
850 /// set a different order of resource priority856 /// set a different order of resource priority
851 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
852 #[transactional]857 #[transactional]
858 #[pallet::weight(<SelfWeightOf<T>>::set_priority())]
853 pub fn set_priority(859 pub fn set_priority(
854 origin: OriginFor<T>,860 origin: OriginFor<T>,
855 rmrk_collection_id: RmrkCollectionId,861 rmrk_collection_id: RmrkCollectionId,
887 }893 }
888894
889 /// Create basic resource895 /// Create basic resource
890 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
891 #[transactional]896 #[transactional]
897 #[pallet::weight(<SelfWeightOf<T>>::add_basic_resource())]
892 pub fn add_basic_resource(898 pub fn add_basic_resource(
893 origin: OriginFor<T>,899 origin: OriginFor<T>,
894 rmrk_collection_id: RmrkCollectionId,900 rmrk_collection_id: RmrkCollectionId,
906 sender,912 sender,
907 collection_id,913 collection_id,
908 nft_id.into(),914 nft_id.into(),
909 [915 RmrkResourceTypes::Basic(resource),
910 Self::rmrk_property(TokenType, &NftType::Resource)?,
911 Self::rmrk_property(ResourceType, &misc::ResourceType::Basic)?,
912 Self::rmrk_property(Src, &resource.src)?,
913 Self::rmrk_property(Metadata, &resource.metadata)?,
914 Self::rmrk_property(License, &resource.license)?,
915 Self::rmrk_property(Thumb, &resource.thumb)?,
916 ]
917 .into_iter(),
918 )?;916 )?;
919917
920 Self::deposit_event(Event::ResourceAdded {918 Self::deposit_event(Event::ResourceAdded {
925 }923 }
926924
927 /// Create composable resource925 /// Create composable resource
928 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
929 #[transactional]926 #[transactional]
927 #[pallet::weight(<SelfWeightOf<T>>::add_composable_resource())]
930 pub fn add_composable_resource(928 pub fn add_composable_resource(
931 origin: OriginFor<T>,929 origin: OriginFor<T>,
932 rmrk_collection_id: RmrkCollectionId,930 rmrk_collection_id: RmrkCollectionId,
933 nft_id: RmrkNftId,931 nft_id: RmrkNftId,
934 _resource_id: RmrkBoundedResource,
935 resource: RmrkComposableResource,932 resource: RmrkComposableResource,
936 ) -> DispatchResult {933 ) -> DispatchResult {
937 let sender = ensure_signed(origin.clone())?;934 let sender = ensure_signed(origin.clone())?;
945 sender,942 sender,
946 collection_id,943 collection_id,
947 nft_id.into(),944 nft_id.into(),
948 [945 RmrkResourceTypes::Composable(resource),
949 Self::rmrk_property(TokenType, &NftType::Resource)?,
950 Self::rmrk_property(ResourceType, &misc::ResourceType::Composable)?,
951 Self::rmrk_property(Parts, &resource.parts)?,
952 Self::rmrk_property(Base, &resource.base)?,
953 Self::rmrk_property(Src, &resource.src)?,
954 Self::rmrk_property(Metadata, &resource.metadata)?,
955 Self::rmrk_property(License, &resource.license)?,
956 Self::rmrk_property(Thumb, &resource.thumb)?,
957 ]
958 .into_iter(),
959 )?;946 )?;
960947
961 Self::deposit_event(Event::ResourceAdded {948 Self::deposit_event(Event::ResourceAdded {
966 }953 }
967954
968 /// Create slot resource955 /// Create slot resource
969 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
970 #[transactional]956 #[transactional]
957 #[pallet::weight(<SelfWeightOf<T>>::add_slot_resource())]
971 pub fn add_slot_resource(958 pub fn add_slot_resource(
972 origin: OriginFor<T>,959 origin: OriginFor<T>,
973 rmrk_collection_id: RmrkCollectionId,960 rmrk_collection_id: RmrkCollectionId,
985 sender,972 sender,
986 collection_id,973 collection_id,
987 nft_id.into(),974 nft_id.into(),
988 [975 RmrkResourceTypes::Slot(resource),
989 Self::rmrk_property(TokenType, &NftType::Resource)?,
990 Self::rmrk_property(ResourceType, &misc::ResourceType::Slot)?,
991 Self::rmrk_property(Base, &resource.base)?,
992 Self::rmrk_property(Src, &resource.src)?,
993 Self::rmrk_property(Metadata, &resource.metadata)?,
994 Self::rmrk_property(Slot, &resource.slot)?,
995 Self::rmrk_property(License, &resource.license)?,
996 Self::rmrk_property(Thumb, &resource.thumb)?,
997 ]
998 .into_iter(),
999 )?;976 )?;
1000977
1001 Self::deposit_event(Event::ResourceAdded {978 Self::deposit_event(Event::ResourceAdded {
1006 }983 }
1007984
1008 /// remove resource985 /// remove resource
1009 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
1010 #[transactional]986 #[transactional]
987 #[pallet::weight(<SelfWeightOf<T>>::remove_resource())]
1011 pub fn remove_resource(988 pub fn remove_resource(
1012 origin: OriginFor<T>,989 origin: OriginFor<T>,
1013 rmrk_collection_id: RmrkCollectionId,990 rmrk_collection_id: RmrkCollectionId,
1021 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;998 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
1022 collection.check_is_external()?;999 collection.check_is_external()?;
10231000
1024 Self::resource_remove(sender, collection_id, nft_id.into(), resource_id.into())?;1001 Self::resource_remove(sender, collection_id, nft_id.into(), resource_id)?;
10251002
1026 Self::deposit_event(Event::ResourceRemoval {1003 Self::deposit_event(Event::ResourceRemoval {
1027 nft_id,1004 nft_id,
1050 ) -> Result<Property, DispatchError> {1027 ) -> Result<Property, DispatchError> {
1051 let key = rmrk_key.to_key::<T>()?;1028 let key = rmrk_key.to_key::<T>()?;
10521029
1030 let value = Self::encode_property(value)?;
1031
1032 let property = Property { key, value };
1033
1034 Ok(property)
1035 }
1036
1037 pub fn encode_property<E: Encode, S: Get<u32>>(
1038 value: &E,
1039 ) -> Result<BoundedBytes<S>, DispatchError> {
1053 let value = value1040 let value = value
1054 .encode()1041 .encode()
1055 .try_into()1042 .try_into()
1056 .map_err(|_| <Error<T>>::RmrkPropertyValueIsTooLong)?;1043 .map_err(|_| <Error<T>>::RmrkPropertyValueIsTooLong)?;
10571044
1058 let property = Property { key, value };1045 Ok(value)
1059
1060 Ok(property)
1061 }1046 }
10621047
1063 pub fn decode_property<D: Decode>(vec: PropertyValue) -> Result<D, DispatchError> {1048 pub fn decode_property<D: Decode, S: Get<u32>>(
1049 vec: &BoundedBytes<S>,
1050 ) -> Result<D, DispatchError> {
1064 vec.decode()1051 vec.decode()
1065 .map_err(|_| <Error<T>>::RmrkPropertyValueIsTooLong.into())1052 .map_err(|_| <Error<T>>::UnableToDecodeRmrkData.into())
1066 }1053 }
10671054
1068 pub fn rebind<L, S>(vec: &BoundedVec<u8, L>) -> Result<BoundedVec<u8, S>, DispatchError>1055 pub fn rebind<L, S>(vec: &BoundedVec<u8, L>) -> Result<BoundedVec<u8, S>, DispatchError>
1124 sender: T::CrossAccountId,1111 sender: T::CrossAccountId,
1125 collection_id: CollectionId,1112 collection_id: CollectionId,
1126 token_id: TokenId,1113 token_id: TokenId,
1127 ) -> DispatchResult {1114 max_burns: u32,
1115 error_if_not_owned: Error<T>,
1116 ) -> DispatchResultWithPostInfo {
1128 let collection =1117 let collection =
1129 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;1118 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
11301119
11331122
1134 let from = token_data.owner;1123 let from = token_data.owner;
11351124
1136 let budget = budget::Value::new(NESTING_BUDGET);1125 let owner_check_budget = budget::Value::new(NESTING_BUDGET);
11371126
1138 <PalletNft<T>>::burn_from(&collection, &sender, &from, token_id, &budget)1127 ensure!(
1128 <PalletStructure<T>>::check_indirectly_owned(
1129 sender.clone(),
1130 collection_id,
1131 token_id,
1132 None,
1133 &owner_check_budget
1134 )?,
1135 error_if_not_owned,
1136 );
1137
1138 let burns_budget = budget::Value::new(max_burns);
1139 let breadth_budget = budget::Value::new(max_burns);
1140
1141 <PalletNft<T>>::burn_recursively(
1142 &collection,
1143 &from,
1144 token_id,
1145 &burns_budget,
1146 &breadth_budget,
1147 )
1139 }1148 }
11401149
1150 fn acquire_next_resource_id(
1151 collection_id: CollectionId,
1152 nft_id: TokenId,
1153 ) -> Result<RmrkResourceId, DispatchError> {
1154 let resource_id: RmrkResourceId =
1155 Self::get_nft_property_decoded(collection_id, nft_id, NextResourceId)?;
1156
1157 let next_id = resource_id
1158 .checked_add(1)
1159 .ok_or(<Error<T>>::NoAvailableResourceId)?;
1160
1161 <PalletNft<T>>::set_scoped_token_property(
1162 collection_id,
1163 nft_id,
1164 PropertyScope::Rmrk,
1165 Self::rmrk_property(NextResourceId, &next_id)?,
1166 )?;
1167
1168 Ok(resource_id)
1169 }
1170
1141 fn resource_add(1171 fn resource_add(
1142 sender: T::AccountId,1172 sender: T::AccountId,
1143 collection_id: CollectionId,1173 collection_id: CollectionId,
1144 token_id: TokenId,1174 nft_id: TokenId,
1145 resource_properties: impl Iterator<Item = Property>,1175 resource: RmrkResourceTypes,
1146 ) -> Result<RmrkResourceId, DispatchError> {1176 ) -> Result<RmrkResourceId, DispatchError> {
1147 let collection =1177 let collection =
1148 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;1178 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
1151 let sender = T::CrossAccountId::from_sub(sender);1181 let sender = T::CrossAccountId::from_sub(sender);
1152 let budget = budget::Value::new(NESTING_BUDGET);1182 let budget = budget::Value::new(NESTING_BUDGET);
11531183
1154 let nft_owner = <PalletStructure<T>>::find_topmost_owner(collection_id, token_id, &budget)1184 let nft_owner = <PalletStructure<T>>::find_topmost_owner(collection_id, nft_id, &budget)
1155 .map_err(Self::map_unique_err_to_proxy)?;1185 .map_err(Self::map_unique_err_to_proxy)?;
11561186
1157 let pending = sender != nft_owner;1187 let pending = sender != nft_owner;
11581188
1159 let resource_collection_id: CollectionId =1189 let id = Self::acquire_next_resource_id(collection_id, nft_id)?;
1160 Self::get_nft_property_decoded(collection_id, token_id, ResourceCollection)?;
1161 let resource_collection =
1162 Self::get_typed_nft_collection(resource_collection_id, misc::CollectionType::Resource)?;
11631190
1164 // todo probably add extra connections to bases, slots, etc., when RMRK starts to use them1191 let resource_info = RmrkResourceInfo {
1192 id,
1193 resource,
1194 pending,
1195 pending_removal: false,
1196 };
11651197
1166 let resource_id = Self::create_nft(1198 <PalletNft<T>>::try_mutate_token_aux_property(
1167 &sender,1199 collection_id,
1168 &nft_owner,1200 nft_id,
1169 &resource_collection,1201 PropertyScope::Rmrk,
1170 resource_properties.chain(
1171 [
1172 Self::rmrk_property(PendingResourceAccept, &pending)?,
1173 Self::rmrk_property(PendingResourceRemoval, &false)?,1202 Self::rmrk_property_key(ResourceId(id))?,
1174 ]
1175 .into_iter(),
1176 ),
1177 )1203 |value| -> DispatchResult {
1178 .map_err(|err| match err {
1179 DispatchError::Arithmetic(_) => <Error<T>>::NoAvailableNftId.into(),1204 *value = Some(Self::encode_property(&resource_info)?);
1180 err => Self::map_unique_err_to_proxy(err),
1181 })?;
11821205
1183 Ok(resource_id.0)1206 Ok(())
1207 },
1208 )?;
1209
1210 Ok(id)
1184 }1211 }
11851212
1186 fn resource_remove(1213 fn resource_remove(
1187 sender: T::AccountId,1214 sender: T::AccountId,
1188 collection_id: CollectionId,1215 collection_id: CollectionId,
1189 nft_id: TokenId,1216 nft_id: TokenId,
1190 resource_id: TokenId,1217 resource_id: RmrkResourceId,
1191 ) -> DispatchResult {1218 ) -> DispatchResult {
1192 let collection =1219 let collection =
1193 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;1220 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
1194 ensure!(collection.owner == sender, Error::<T>::NoPermission);1221 ensure!(collection.owner == sender, Error::<T>::NoPermission);
11951222
1196 let resource_collection_id: CollectionId =1223 let resource_id_key = Self::rmrk_property_key(ResourceId(resource_id))?;
1197 Self::get_nft_property_decoded(collection_id, nft_id, ResourceCollection)?;
1198 let resource_collection =1224 let scope = PropertyScope::Rmrk;
1199 Self::get_typed_nft_collection(resource_collection_id, misc::CollectionType::Resource)?;1225
1200 ensure!(1226 ensure!(
1201 <PalletNft<T>>::token_exists(&resource_collection, resource_id),1227 <PalletNft<T>>::token_aux_property((
1228 collection_id,
1229 nft_id,
1230 scope,
1231 resource_id_key.clone()
1232 ))
1233 .is_some(),
1202 Error::<T>::ResourceDoesntExist1234 <Error<T>>::ResourceDoesntExist
1203 );1235 );
12041236
1205 let budget = up_data_structs::budget::Value::new(10);1237 let budget = up_data_structs::budget::Value::new(NESTING_BUDGET);
1206 let topmost_owner =1238 let topmost_owner =
1207 <PalletStructure<T>>::find_topmost_owner(collection_id, nft_id, &budget)?;1239 <PalletStructure<T>>::find_topmost_owner(collection_id, nft_id, &budget)?;
12081240
1209 let sender = T::CrossAccountId::from_sub(sender);1241 let sender = T::CrossAccountId::from_sub(sender);
1210 if topmost_owner == sender {1242 if topmost_owner == sender {
1211 <PalletNft<T>>::burn(&resource_collection, &sender, resource_id)1243 <PalletNft<T>>::remove_token_aux_property(
1244 collection_id,
1245 nft_id,
1212 .map_err(Self::map_unique_err_to_proxy)?;1246 PropertyScope::Rmrk,
1247 Self::rmrk_property_key(ResourceId(resource_id))?,
1248 );
1213 } else {1249 } else {
1214 <PalletNft<T>>::set_scoped_token_property(1250 Self::try_mutate_resource_info(collection_id, nft_id, resource_id, |res| {
1215 resource_collection_id,
1216 resource_id,
1217 PropertyScope::Rmrk,1251 res.pending_removal = true;
1252
1218 Self::rmrk_property(PendingResourceRemoval, &true)?,1253 Ok(())
1219 )?;1254 })?;
1220 }1255 }
12211256
1222 Ok(())1257 Ok(())
1223 }1258 }
12241259
1260 fn try_mutate_resource_info(
1261 collection_id: CollectionId,
1262 nft_id: TokenId,
1263 resource_id: RmrkResourceId,
1264 f: impl FnOnce(&mut RmrkResourceInfo) -> DispatchResult,
1265 ) -> DispatchResult {
1266 <PalletNft<T>>::try_mutate_token_aux_property(
1267 collection_id,
1268 nft_id,
1269 PropertyScope::Rmrk,
1270 Self::rmrk_property_key(ResourceId(resource_id))?,
1271 |value| match value {
1272 Some(value) => {
1273 let mut resource_info: RmrkResourceInfo = Self::decode_property(value)?;
1274
1275 f(&mut resource_info)?;
1276
1277 *value = Self::encode_property(&resource_info)?;
1278
1279 Ok(())
1280 }
1281 None => Err(<Error<T>>::ResourceDoesntExist.into()),
1282 },
1283 )
1284 }
1285
1225 fn change_collection_owner(1286 fn change_collection_owner(
1226 collection_id: CollectionId,1287 collection_id: CollectionId,
1227 collection_type: misc::CollectionType,1288 collection_type: misc::CollectionType,
1237 collection.save()1298 collection.save()
1238 }1299 }
12391300
1240 fn check_collection_owner(1301 pub fn check_collection_owner(
1241 collection: &NonfungibleHandle<T>,1302 collection: &NonfungibleHandle<T>,
1242 account: &T::CrossAccountId,1303 account: &T::CrossAccountId,
1243 ) -> DispatchResult {1304 ) -> DispatchResult {
1260 pub fn rmrk_collection_id(1321 pub fn rmrk_collection_id(
1261 unique_collection_id: CollectionId,1322 unique_collection_id: CollectionId,
1262 ) -> Result<RmrkCollectionId, DispatchError> {1323 ) -> Result<RmrkCollectionId, DispatchError> {
1263 <RmrkInernalCollectionId<T>>::try_get(unique_collection_id)1324 Self::get_collection_property_decoded(unique_collection_id, RmrkInternalCollectionId)
1264 .map_err(|_| <Error<T>>::CollectionUnknown.into())
1265 }1325 }
12661326
1267 pub fn get_nft_collection(1327 pub fn get_nft_collection(
1296 collection_id: CollectionId,1356 collection_id: CollectionId,
1297 key: RmrkProperty,1357 key: RmrkProperty,
1298 ) -> Result<V, DispatchError> {1358 ) -> Result<V, DispatchError> {
1299 Self::decode_property(Self::get_collection_property(collection_id, key)?)1359 Self::decode_property(&Self::get_collection_property(collection_id, key)?)
1300 }1360 }
13011361
1302 pub fn get_collection_type(1362 pub fn get_collection_type(
1303 collection_id: CollectionId,1363 collection_id: CollectionId,
1304 ) -> Result<misc::CollectionType, DispatchError> {1364 ) -> Result<misc::CollectionType, DispatchError> {
1305 Self::get_collection_property_decoded(collection_id, CollectionType)1365 Self::get_collection_property_decoded(collection_id, CollectionType).map_err(|err| {
1306 .map_err(|_| <Error<T>>::CorruptedCollectionType.into())1366 if err != <Error<T>>::CollectionUnknown.into() {
1367 <Error<T>>::CorruptedCollectionType.into()
1368 } else {
1369 err
1370 }
1371 })
1307 }1372 }
13081373
1309 pub fn ensure_collection_type(1374 pub fn ensure_collection_type(
1349 ) -> Result<PropertyValue, DispatchError> {1414 ) -> Result<PropertyValue, DispatchError> {
1350 let nft_property = <PalletNft<T>>::token_properties((collection_id, nft_id))1415 let nft_property = <PalletNft<T>>::token_properties((collection_id, nft_id))
1351 .get(&Self::rmrk_property_key(key)?)1416 .get(&Self::rmrk_property_key(key)?)
1352 .ok_or(<Error<T>>::NoAvailableNftId)? // todo replace with better error?1417 .ok_or(<Error<T>>::RmrkPropertyIsNotFound)?
1353 .clone();1418 .clone();
13541419
1355 Ok(nft_property)1420 Ok(nft_property)
1360 nft_id: TokenId,1425 nft_id: TokenId,
1361 key: RmrkProperty,1426 key: RmrkProperty,
1362 ) -> Result<V, DispatchError> {1427 ) -> Result<V, DispatchError> {
1363 Self::decode_property(Self::get_nft_property(collection_id, nft_id, key)?)1428 Self::decode_property(&Self::get_nft_property(collection_id, nft_id, key)?)
1364 }1429 }
13651430
1366 pub fn nft_exists(collection_id: CollectionId, nft_id: TokenId) -> bool {1431 pub fn nft_exists(collection_id: CollectionId, nft_id: TokenId) -> bool {
modifiedpallets/proxy-rmrk-core/src/misc.rsdiffbeforeafterboth
61#[derive(Encode, Decode, PartialEq, Eq)]61#[derive(Encode, Decode, PartialEq, Eq)]
62pub enum CollectionType {62pub enum CollectionType {
63 Regular,63 Regular,
64 Resource,
65 Base,64 Base,
66}65}
6766
68#[derive(Encode, Decode, PartialEq, Eq)]67#[derive(Encode, Decode, PartialEq, Eq)]
69pub enum NftType {68pub enum NftType {
70 Regular,69 Regular,
71 Resource,
72 FixedPart,70 FixedPart,
73 SlotPart,71 SlotPart,
74 Theme,72 Theme,
75}73}
76
77#[derive(Encode, Decode, PartialEq, Eq)]
78pub enum ResourceType {
79 Basic,
80 Composable,
81 Slot,
82}
8374
modifiedpallets/proxy-rmrk-core/src/property.rsdiffbeforeafterboth
17use super::*;17use super::*;
18use core::convert::AsRef;18use core::convert::AsRef;
19
20const RESOURCE_ID_PREFIX: &str = "rsid-";
1921
20pub enum RmrkProperty<'r> {22pub enum RmrkProperty<'r> {
21 Metadata,23 Metadata,
22 CollectionType,24 CollectionType,
25 RmrkInternalCollectionId,
23 TokenType,26 TokenType,
24 Transferable,27 Transferable,
25 RoyaltyInfo,28 RoyaltyInfo,
26 Equipped,29 Equipped,
27 ResourceCollection,
28 ResourcePriorities,30 ResourcePriorities,
29 ResourceType,31 NextResourceId,
32 ResourceId(RmrkResourceId),
30 PendingNftAccept,33 PendingNftAccept,
31 PendingResourceAccept,
32 PendingResourceRemoval,
33 Parts,34 Parts,
34 Base,35 Base,
35 Src,36 Src,
36 Slot,
37 License,
38 Thumb,
39 EquippedNft,37 EquippedNft,
40 BaseType,38 BaseType,
41 ExternalPartId,39 ExternalPartId,
66 match self {64 match self {
67 Self::Metadata => key!("metadata"),65 Self::Metadata => key!("metadata"),
68 Self::CollectionType => key!("collection-type"),66 Self::CollectionType => key!("collection-type"),
67 Self::RmrkInternalCollectionId => key!("internal-id"),
69 Self::TokenType => key!("token-type"),68 Self::TokenType => key!("token-type"),
70 Self::Transferable => key!("transferable"),69 Self::Transferable => key!("transferable"),
71 Self::RoyaltyInfo => key!("royalty-info"),70 Self::RoyaltyInfo => key!("royalty-info"),
72 Self::Equipped => key!("equipped"),71 Self::Equipped => key!("equipped"),
73 Self::ResourceCollection => key!("resource-collection"),
74 Self::ResourcePriorities => key!("resource-priorities"),72 Self::ResourcePriorities => key!("resource-priorities"),
75 Self::ResourceType => key!("resource-type"),73 Self::NextResourceId => key!("next-resource-id"),
74 Self::ResourceId(id) => key!(RESOURCE_ID_PREFIX, id.to_le_bytes()),
76 Self::PendingNftAccept => key!("pending-nft-accept"),75 Self::PendingNftAccept => key!("pending-nft-accept"),
77 Self::PendingResourceAccept => key!("pending-resource-accept"),
78 Self::PendingResourceRemoval => key!("pending-resource-removal"),
79 Self::Parts => key!("parts"),76 Self::Parts => key!("parts"),
80 Self::Base => key!("base"),77 Self::Base => key!("base"),
81 Self::Src => key!("src"),78 Self::Src => key!("src"),
82 Self::Slot => key!("slot"),
83 Self::License => key!("license"),
84 Self::Thumb => key!("thumb"),
85 Self::EquippedNft => key!("equipped-nft"),79 Self::EquippedNft => key!("equipped-nft"),
86 Self::BaseType => key!("base-type"),80 Self::BaseType => key!("base-type"),
87 Self::ExternalPartId => key!("ext-part-id"),81 Self::ExternalPartId => key!("ext-part-id"),
addedpallets/proxy-rmrk-core/src/rpc.rsdiffbeforeafterboth

no changes

modifiedpallets/proxy-rmrk-core/src/weights.rsdiffbeforeafterboth
3//! Autogenerated weights for pallet_proxy_rmrk_core3//! Autogenerated weights for pallet_proxy_rmrk_core
4//!4//!
5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
6//! DATE: 2022-06-09, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`6//! DATE: 2022-06-17, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`
7//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 10247//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
88
9// Executed Command:9// Executed Command:
19// --template19// --template
20// .maintain/frame-weight-template.hbs20// .maintain/frame-weight-template.hbs
21// --steps=5021// --steps=50
22// --repeat=20022// --repeat=80
23// --heap-pages=409623// --heap-pages=4096
24// --output=./pallets/proxy-rmrk-core/src/weights.rs24// --output=./pallets/proxy-rmrk-core/src/weights.rs
2525
34/// Weight functions needed for pallet_proxy_rmrk_core.34/// Weight functions needed for pallet_proxy_rmrk_core.
35pub trait WeightInfo {35pub trait WeightInfo {
36 fn create_collection() -> Weight;36 fn create_collection() -> Weight;
37 fn destroy_collection() -> Weight;
38 fn change_collection_issuer() -> Weight;
39 fn lock_collection() -> Weight;
40 fn mint_nft(b: u32, ) -> Weight;
41 fn burn_nft(b: u32, ) -> Weight;
42 fn send() -> Weight;
43 fn accept_nft() -> Weight;
44 fn reject_nft() -> Weight;
45 fn set_property() -> Weight;
46 fn set_priority() -> Weight;
47 fn add_basic_resource() -> Weight;
48 fn add_composable_resource() -> Weight;
49 fn add_slot_resource() -> Weight;
50 fn remove_resource() -> Weight;
51 fn accept_resource() -> Weight;
52 fn accept_resource_removal() -> Weight;
37}53}
3854
39/// Weights for pallet_proxy_rmrk_core using the Substrate node and recommended hardware.55/// Weights for pallet_proxy_rmrk_core using the Substrate node and recommended hardware.
47 // Storage: Common CollectionProperties (r:0 w:1)63 // Storage: Common CollectionProperties (r:0 w:1)
48 // Storage: Common CollectionById (r:0 w:1)64 // Storage: Common CollectionById (r:0 w:1)
49 // Storage: RmrkCore UniqueCollectionId (r:0 w:1)65 // Storage: RmrkCore UniqueCollectionId (r:0 w:1)
50 // Storage: RmrkCore RmrkInernalCollectionId (r:0 w:1)
51 fn create_collection() -> Weight {66 fn create_collection() -> Weight {
52 (76_647_000 as Weight)67 (42_359_000 as Weight)
53 .saturating_add(T::DbWeight::get().reads(5 as Weight))68 .saturating_add(T::DbWeight::get().reads(5 as Weight))
54 .saturating_add(T::DbWeight::get().writes(9 as Weight))69 .saturating_add(T::DbWeight::get().writes(8 as Weight))
55 }70 }
71 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
72 // Storage: Common CollectionProperties (r:1 w:1)
73 // Storage: Common CollectionById (r:1 w:1)
74 // Storage: Nonfungible TokenData (r:1 w:0)
75 // Storage: Common DestroyedCollectionCount (r:1 w:1)
76 // Storage: Nonfungible TokensMinted (r:0 w:1)
77 // Storage: Nonfungible TokensBurnt (r:0 w:1)
78 // Storage: Common AdminAmount (r:0 w:1)
79 fn destroy_collection() -> Weight {
80 (45_375_000 as Weight)
81 .saturating_add(T::DbWeight::get().reads(5 as Weight))
82 .saturating_add(T::DbWeight::get().writes(6 as Weight))
83 }
84 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
85 // Storage: Common CollectionById (r:1 w:1)
86 // Storage: Common CollectionProperties (r:1 w:0)
87 fn change_collection_issuer() -> Weight {
88 (22_753_000 as Weight)
89 .saturating_add(T::DbWeight::get().reads(3 as Weight))
90 .saturating_add(T::DbWeight::get().writes(1 as Weight))
91 }
92 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
93 // Storage: Common CollectionProperties (r:1 w:0)
94 // Storage: Common CollectionById (r:1 w:1)
95 // Storage: Nonfungible TokensMinted (r:1 w:0)
96 // Storage: Nonfungible TokensBurnt (r:1 w:0)
97 fn lock_collection() -> Weight {
98 (24_356_000 as Weight)
99 .saturating_add(T::DbWeight::get().reads(5 as Weight))
100 .saturating_add(T::DbWeight::get().writes(1 as Weight))
101 }
102 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
103 // Storage: Common CollectionProperties (r:1 w:0)
104 // Storage: Common CollectionById (r:1 w:0)
105 // Storage: Nonfungible TokensMinted (r:1 w:1)
106 // Storage: Nonfungible AccountBalance (r:1 w:1)
107 // Storage: Nonfungible TokenProperties (r:1 w:1)
108 // Storage: Nonfungible TokenData (r:0 w:1)
109 // Storage: Nonfungible Owned (r:0 w:1)
110 // Storage: Nonfungible TokenAuxProperties (r:2 w:2)
111 fn mint_nft(b: u32, ) -> Weight {
112 (44_853_000 as Weight)
113 // Standard Error: 2_000
114 .saturating_add((10_721_000 as Weight).saturating_mul(b as Weight))
115 .saturating_add(T::DbWeight::get().reads(6 as Weight))
116 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
117 .saturating_add(T::DbWeight::get().writes(5 as Weight))
118 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(b as Weight)))
119 }
120 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
121 // Storage: Common CollectionProperties (r:1 w:0)
122 // Storage: Common CollectionById (r:1 w:0)
123 // Storage: Nonfungible TokenData (r:1 w:1)
124 // Storage: Nonfungible TokenChildren (r:1 w:0)
125 // Storage: Nonfungible TokensBurnt (r:1 w:1)
126 // Storage: Nonfungible AccountBalance (r:1 w:1)
127 // Storage: Nonfungible Allowance (r:1 w:0)
128 // Storage: Nonfungible Owned (r:0 w:1)
129 // Storage: Nonfungible TokenProperties (r:0 w:1)
130 fn burn_nft(b: u32, ) -> Weight {
131 (0 as Weight)
132 // Standard Error: 1_590_000
133 .saturating_add((319_825_000 as Weight).saturating_mul(b as Weight))
134 .saturating_add(T::DbWeight::get().reads(9 as Weight))
135 .saturating_add(T::DbWeight::get().reads((4 as Weight).saturating_mul(b as Weight)))
136 .saturating_add(T::DbWeight::get().writes(6 as Weight))
137 .saturating_add(T::DbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))
138 }
139 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
140 // Storage: Common CollectionProperties (r:1 w:0)
141 // Storage: Common CollectionById (r:1 w:0)
142 // Storage: Nonfungible TokenData (r:5 w:1)
143 // Storage: Nonfungible TokenProperties (r:1 w:0)
144 // Storage: Nonfungible AccountBalance (r:2 w:2)
145 // Storage: Nonfungible Allowance (r:1 w:0)
146 // Storage: Nonfungible TokenChildren (r:0 w:1)
147 // Storage: Nonfungible Owned (r:0 w:2)
148 fn send() -> Weight {
149 (72_576_000 as Weight)
150 .saturating_add(T::DbWeight::get().reads(12 as Weight))
151 .saturating_add(T::DbWeight::get().writes(6 as Weight))
152 }
153 // Storage: RmrkCore UniqueCollectionId (r:2 w:0)
154 // Storage: Common CollectionProperties (r:1 w:0)
155 // Storage: Common CollectionById (r:2 w:0)
156 // Storage: Nonfungible TokenData (r:6 w:1)
157 // Storage: Nonfungible AccountBalance (r:2 w:2)
158 // Storage: Nonfungible Allowance (r:1 w:0)
159 // Storage: Nonfungible TokenProperties (r:1 w:1)
160 // Storage: Nonfungible TokenChildren (r:0 w:1)
161 // Storage: Nonfungible Owned (r:0 w:2)
162 fn accept_nft() -> Weight {
163 (79_670_000 as Weight)
164 .saturating_add(T::DbWeight::get().reads(15 as Weight))
165 .saturating_add(T::DbWeight::get().writes(7 as Weight))
166 }
167 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
168 // Storage: Common CollectionProperties (r:1 w:0)
169 // Storage: Common CollectionById (r:1 w:0)
170 // Storage: Nonfungible TokenData (r:5 w:5)
171 // Storage: Nonfungible TokenProperties (r:1 w:5)
172 // Storage: Nonfungible TokenChildren (r:9 w:4)
173 // Storage: Nonfungible TokensBurnt (r:1 w:1)
174 // Storage: Nonfungible AccountBalance (r:5 w:5)
175 // Storage: Nonfungible Allowance (r:5 w:0)
176 // Storage: Nonfungible Owned (r:0 w:5)
177 fn reject_nft() -> Weight {
178 (254_989_000 as Weight)
179 .saturating_add(T::DbWeight::get().reads(29 as Weight))
180 .saturating_add(T::DbWeight::get().writes(25 as Weight))
181 }
182 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
183 // Storage: Common CollectionProperties (r:1 w:0)
184 // Storage: Common CollectionById (r:1 w:0)
185 // Storage: Nonfungible TokenProperties (r:1 w:1)
186 // Storage: Nonfungible TokenData (r:5 w:0)
187 fn set_property() -> Weight {
188 (48_651_000 as Weight)
189 .saturating_add(T::DbWeight::get().reads(9 as Weight))
190 .saturating_add(T::DbWeight::get().writes(1 as Weight))
191 }
192 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
193 // Storage: Common CollectionProperties (r:1 w:0)
194 // Storage: Common CollectionById (r:1 w:0)
195 // Storage: Nonfungible TokenProperties (r:1 w:1)
196 // Storage: Nonfungible TokenData (r:5 w:0)
197 fn set_priority() -> Weight {
198 (47_579_000 as Weight)
199 .saturating_add(T::DbWeight::get().reads(9 as Weight))
200 .saturating_add(T::DbWeight::get().writes(1 as Weight))
201 }
202 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
203 // Storage: Common CollectionProperties (r:1 w:0)
204 // Storage: Common CollectionById (r:1 w:0)
205 // Storage: Nonfungible TokenData (r:5 w:0)
206 // Storage: Nonfungible TokenProperties (r:1 w:1)
207 // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
208 fn add_basic_resource() -> Weight {
209 (55_013_000 as Weight)
210 .saturating_add(T::DbWeight::get().reads(10 as Weight))
211 .saturating_add(T::DbWeight::get().writes(2 as Weight))
212 }
213 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
214 // Storage: Common CollectionProperties (r:1 w:0)
215 // Storage: Common CollectionById (r:1 w:0)
216 // Storage: Nonfungible TokenData (r:5 w:0)
217 // Storage: Nonfungible TokenProperties (r:1 w:1)
218 // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
219 fn add_composable_resource() -> Weight {
220 (55_184_000 as Weight)
221 .saturating_add(T::DbWeight::get().reads(10 as Weight))
222 .saturating_add(T::DbWeight::get().writes(2 as Weight))
223 }
224 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
225 // Storage: Common CollectionProperties (r:1 w:0)
226 // Storage: Common CollectionById (r:1 w:0)
227 // Storage: Nonfungible TokenData (r:5 w:0)
228 // Storage: Nonfungible TokenProperties (r:1 w:1)
229 // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
230 fn add_slot_resource() -> Weight {
231 (54_792_000 as Weight)
232 .saturating_add(T::DbWeight::get().reads(10 as Weight))
233 .saturating_add(T::DbWeight::get().writes(2 as Weight))
234 }
235 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
236 // Storage: Common CollectionProperties (r:1 w:0)
237 // Storage: Common CollectionById (r:1 w:0)
238 // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
239 // Storage: Nonfungible TokenData (r:5 w:0)
240 fn remove_resource() -> Weight {
241 (46_447_000 as Weight)
242 .saturating_add(T::DbWeight::get().reads(9 as Weight))
243 .saturating_add(T::DbWeight::get().writes(1 as Weight))
244 }
245 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
246 // Storage: Common CollectionProperties (r:1 w:0)
247 // Storage: Common CollectionById (r:1 w:0)
248 // Storage: Nonfungible TokenData (r:5 w:0)
249 // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
250 fn accept_resource() -> Weight {
251 (45_096_000 as Weight)
252 .saturating_add(T::DbWeight::get().reads(9 as Weight))
253 .saturating_add(T::DbWeight::get().writes(1 as Weight))
254 }
255 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
256 // Storage: Common CollectionProperties (r:1 w:0)
257 // Storage: Common CollectionById (r:1 w:0)
258 // Storage: Nonfungible TokenData (r:5 w:0)
259 // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
260 fn accept_resource_removal() -> Weight {
261 (45_445_000 as Weight)
262 .saturating_add(T::DbWeight::get().reads(9 as Weight))
263 .saturating_add(T::DbWeight::get().writes(1 as Weight))
264 }
56}265}
57266
58// For backwards compatibility and tests267// For backwards compatibility and tests
65 // Storage: Common CollectionProperties (r:0 w:1)274 // Storage: Common CollectionProperties (r:0 w:1)
66 // Storage: Common CollectionById (r:0 w:1)275 // Storage: Common CollectionById (r:0 w:1)
67 // Storage: RmrkCore UniqueCollectionId (r:0 w:1)276 // Storage: RmrkCore UniqueCollectionId (r:0 w:1)
68 // Storage: RmrkCore RmrkInernalCollectionId (r:0 w:1)
69 fn create_collection() -> Weight {277 fn create_collection() -> Weight {
70 (76_647_000 as Weight)278 (42_359_000 as Weight)
71 .saturating_add(RocksDbWeight::get().reads(5 as Weight))279 .saturating_add(RocksDbWeight::get().reads(5 as Weight))
72 .saturating_add(RocksDbWeight::get().writes(9 as Weight))280 .saturating_add(RocksDbWeight::get().writes(8 as Weight))
73 }281 }
282 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
283 // Storage: Common CollectionProperties (r:1 w:1)
284 // Storage: Common CollectionById (r:1 w:1)
285 // Storage: Nonfungible TokenData (r:1 w:0)
286 // Storage: Common DestroyedCollectionCount (r:1 w:1)
287 // Storage: Nonfungible TokensMinted (r:0 w:1)
288 // Storage: Nonfungible TokensBurnt (r:0 w:1)
289 // Storage: Common AdminAmount (r:0 w:1)
290 fn destroy_collection() -> Weight {
291 (45_375_000 as Weight)
292 .saturating_add(RocksDbWeight::get().reads(5 as Weight))
293 .saturating_add(RocksDbWeight::get().writes(6 as Weight))
294 }
295 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
296 // Storage: Common CollectionById (r:1 w:1)
297 // Storage: Common CollectionProperties (r:1 w:0)
298 fn change_collection_issuer() -> Weight {
299 (22_753_000 as Weight)
300 .saturating_add(RocksDbWeight::get().reads(3 as Weight))
301 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
302 }
303 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
304 // Storage: Common CollectionProperties (r:1 w:0)
305 // Storage: Common CollectionById (r:1 w:1)
306 // Storage: Nonfungible TokensMinted (r:1 w:0)
307 // Storage: Nonfungible TokensBurnt (r:1 w:0)
308 fn lock_collection() -> Weight {
309 (24_356_000 as Weight)
310 .saturating_add(RocksDbWeight::get().reads(5 as Weight))
311 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
312 }
313 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
314 // Storage: Common CollectionProperties (r:1 w:0)
315 // Storage: Common CollectionById (r:1 w:0)
316 // Storage: Nonfungible TokensMinted (r:1 w:1)
317 // Storage: Nonfungible AccountBalance (r:1 w:1)
318 // Storage: Nonfungible TokenProperties (r:1 w:1)
319 // Storage: Nonfungible TokenData (r:0 w:1)
320 // Storage: Nonfungible Owned (r:0 w:1)
321 // Storage: Nonfungible TokenAuxProperties (r:2 w:2)
322 fn mint_nft(b: u32, ) -> Weight {
323 (44_853_000 as Weight)
324 // Standard Error: 2_000
325 .saturating_add((10_721_000 as Weight).saturating_mul(b as Weight))
326 .saturating_add(RocksDbWeight::get().reads(6 as Weight))
327 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
328 .saturating_add(RocksDbWeight::get().writes(5 as Weight))
329 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(b as Weight)))
330 }
331 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
332 // Storage: Common CollectionProperties (r:1 w:0)
333 // Storage: Common CollectionById (r:1 w:0)
334 // Storage: Nonfungible TokenData (r:1 w:1)
335 // Storage: Nonfungible TokenChildren (r:1 w:0)
336 // Storage: Nonfungible TokensBurnt (r:1 w:1)
337 // Storage: Nonfungible AccountBalance (r:1 w:1)
338 // Storage: Nonfungible Allowance (r:1 w:0)
339 // Storage: Nonfungible Owned (r:0 w:1)
340 // Storage: Nonfungible TokenProperties (r:0 w:1)
341 fn burn_nft(b: u32, ) -> Weight {
342 (0 as Weight)
343 // Standard Error: 1_590_000
344 .saturating_add((319_825_000 as Weight).saturating_mul(b as Weight))
345 .saturating_add(RocksDbWeight::get().reads(9 as Weight))
346 .saturating_add(RocksDbWeight::get().reads((4 as Weight).saturating_mul(b as Weight)))
347 .saturating_add(RocksDbWeight::get().writes(6 as Weight))
348 .saturating_add(RocksDbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))
349 }
350 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
351 // Storage: Common CollectionProperties (r:1 w:0)
352 // Storage: Common CollectionById (r:1 w:0)
353 // Storage: Nonfungible TokenData (r:5 w:1)
354 // Storage: Nonfungible TokenProperties (r:1 w:0)
355 // Storage: Nonfungible AccountBalance (r:2 w:2)
356 // Storage: Nonfungible Allowance (r:1 w:0)
357 // Storage: Nonfungible TokenChildren (r:0 w:1)
358 // Storage: Nonfungible Owned (r:0 w:2)
359 fn send() -> Weight {
360 (72_576_000 as Weight)
361 .saturating_add(RocksDbWeight::get().reads(12 as Weight))
362 .saturating_add(RocksDbWeight::get().writes(6 as Weight))
363 }
364 // Storage: RmrkCore UniqueCollectionId (r:2 w:0)
365 // Storage: Common CollectionProperties (r:1 w:0)
366 // Storage: Common CollectionById (r:2 w:0)
367 // Storage: Nonfungible TokenData (r:6 w:1)
368 // Storage: Nonfungible AccountBalance (r:2 w:2)
369 // Storage: Nonfungible Allowance (r:1 w:0)
370 // Storage: Nonfungible TokenProperties (r:1 w:1)
371 // Storage: Nonfungible TokenChildren (r:0 w:1)
372 // Storage: Nonfungible Owned (r:0 w:2)
373 fn accept_nft() -> Weight {
374 (79_670_000 as Weight)
375 .saturating_add(RocksDbWeight::get().reads(15 as Weight))
376 .saturating_add(RocksDbWeight::get().writes(7 as Weight))
377 }
378 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
379 // Storage: Common CollectionProperties (r:1 w:0)
380 // Storage: Common CollectionById (r:1 w:0)
381 // Storage: Nonfungible TokenData (r:5 w:5)
382 // Storage: Nonfungible TokenProperties (r:1 w:5)
383 // Storage: Nonfungible TokenChildren (r:9 w:4)
384 // Storage: Nonfungible TokensBurnt (r:1 w:1)
385 // Storage: Nonfungible AccountBalance (r:5 w:5)
386 // Storage: Nonfungible Allowance (r:5 w:0)
387 // Storage: Nonfungible Owned (r:0 w:5)
388 fn reject_nft() -> Weight {
389 (254_989_000 as Weight)
390 .saturating_add(RocksDbWeight::get().reads(29 as Weight))
391 .saturating_add(RocksDbWeight::get().writes(25 as Weight))
392 }
393 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
394 // Storage: Common CollectionProperties (r:1 w:0)
395 // Storage: Common CollectionById (r:1 w:0)
396 // Storage: Nonfungible TokenProperties (r:1 w:1)
397 // Storage: Nonfungible TokenData (r:5 w:0)
398 fn set_property() -> Weight {
399 (48_651_000 as Weight)
400 .saturating_add(RocksDbWeight::get().reads(9 as Weight))
401 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
402 }
403 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
404 // Storage: Common CollectionProperties (r:1 w:0)
405 // Storage: Common CollectionById (r:1 w:0)
406 // Storage: Nonfungible TokenProperties (r:1 w:1)
407 // Storage: Nonfungible TokenData (r:5 w:0)
408 fn set_priority() -> Weight {
409 (47_579_000 as Weight)
410 .saturating_add(RocksDbWeight::get().reads(9 as Weight))
411 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
412 }
413 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
414 // Storage: Common CollectionProperties (r:1 w:0)
415 // Storage: Common CollectionById (r:1 w:0)
416 // Storage: Nonfungible TokenData (r:5 w:0)
417 // Storage: Nonfungible TokenProperties (r:1 w:1)
418 // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
419 fn add_basic_resource() -> Weight {
420 (55_013_000 as Weight)
421 .saturating_add(RocksDbWeight::get().reads(10 as Weight))
422 .saturating_add(RocksDbWeight::get().writes(2 as Weight))
423 }
424 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
425 // Storage: Common CollectionProperties (r:1 w:0)
426 // Storage: Common CollectionById (r:1 w:0)
427 // Storage: Nonfungible TokenData (r:5 w:0)
428 // Storage: Nonfungible TokenProperties (r:1 w:1)
429 // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
430 fn add_composable_resource() -> Weight {
431 (55_184_000 as Weight)
432 .saturating_add(RocksDbWeight::get().reads(10 as Weight))
433 .saturating_add(RocksDbWeight::get().writes(2 as Weight))
434 }
435 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
436 // Storage: Common CollectionProperties (r:1 w:0)
437 // Storage: Common CollectionById (r:1 w:0)
438 // Storage: Nonfungible TokenData (r:5 w:0)
439 // Storage: Nonfungible TokenProperties (r:1 w:1)
440 // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
441 fn add_slot_resource() -> Weight {
442 (54_792_000 as Weight)
443 .saturating_add(RocksDbWeight::get().reads(10 as Weight))
444 .saturating_add(RocksDbWeight::get().writes(2 as Weight))
445 }
446 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
447 // Storage: Common CollectionProperties (r:1 w:0)
448 // Storage: Common CollectionById (r:1 w:0)
449 // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
450 // Storage: Nonfungible TokenData (r:5 w:0)
451 fn remove_resource() -> Weight {
452 (46_447_000 as Weight)
453 .saturating_add(RocksDbWeight::get().reads(9 as Weight))
454 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
455 }
456 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
457 // Storage: Common CollectionProperties (r:1 w:0)
458 // Storage: Common CollectionById (r:1 w:0)
459 // Storage: Nonfungible TokenData (r:5 w:0)
460 // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
461 fn accept_resource() -> Weight {
462 (45_096_000 as Weight)
463 .saturating_add(RocksDbWeight::get().reads(9 as Weight))
464 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
465 }
466 // Storage: RmrkCore UniqueCollectionId (r:1 w:0)
467 // Storage: Common CollectionProperties (r:1 w:0)
468 // Storage: Common CollectionById (r:1 w:0)
469 // Storage: Nonfungible TokenData (r:5 w:0)
470 // Storage: Nonfungible TokenAuxProperties (r:1 w:1)
471 fn accept_resource_removal() -> Weight {
472 (45_445_000 as Weight)
473 .saturating_add(RocksDbWeight::get().reads(9 as Weight))
474 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
475 }
74}476}
75477
addedpallets/proxy-rmrk-equip/src/benchmarking.rsdiffbeforeafterboth

no changes

modifiedpallets/proxy-rmrk-equip/src/lib.rsdiffbeforeafterboth
22use up_data_structs::*;22use up_data_structs::*;
23use pallet_common::{Pallet as PalletCommon, Error as CommonError};23use pallet_common::{Pallet as PalletCommon, Error as CommonError};
24use pallet_rmrk_core::{24use pallet_rmrk_core::{
25 Pallet as PalletCore,25 Pallet as PalletCore, Error as CoreError,
26 misc::{self, *},26 misc::{self, *},
27 property::RmrkProperty::*,27 property::RmrkProperty::*,
28};28};
29use pallet_nonfungible::{Pallet as PalletNft, NonfungibleHandle};29use pallet_nonfungible::{Pallet as PalletNft, NonfungibleHandle};
30use pallet_evm::account::CrossAccountId;30use pallet_evm::account::CrossAccountId;
31use weights::WeightInfo;
3132
32pub use pallet::*;33pub use pallet::*;
34
35#[cfg(feature = "runtime-benchmarks")]
36pub mod benchmarking;
37pub mod rpc;
38pub mod weights;
39
40pub type SelfWeightOf<T> = <T as Config>::WeightInfo;
3341
34#[frame_support::pallet]42#[frame_support::pallet]
35pub mod pallet {43pub mod pallet {
38 #[pallet::config]46 #[pallet::config]
39 pub trait Config: frame_system::Config + pallet_rmrk_core::Config {47 pub trait Config: frame_system::Config + pallet_rmrk_core::Config {
40 type Event: From<Event<Self>> + IsType<<Self as frame_system::Config>::Event>;48 type Event: From<Event<Self>> + IsType<<Self as frame_system::Config>::Event>;
49 type WeightInfo: WeightInfo;
41 }50 }
4251
43 #[pallet::storage]52 #[pallet::storage]
61 issuer: T::AccountId,70 issuer: T::AccountId,
62 base_id: RmrkBaseId,71 base_id: RmrkBaseId,
63 },72 },
73 EquippablesUpdated {
74 base_id: RmrkBaseId,
75 slot_id: RmrkSlotId,
76 },
64 }77 }
6578
66 #[pallet::error]79 #[pallet::error]
70 NoAvailablePartId,83 NoAvailablePartId,
71 BaseDoesntExist,84 BaseDoesntExist,
72 NeedsDefaultThemeFirst,85 NeedsDefaultThemeFirst,
86 PartDoesntExist,
87 NoEquippableOnFixedPart,
73 }88 }
7489
75 #[pallet::call]90 #[pallet::call]
83 /// - symbol: arbitrary client-chosen symbol98 /// - symbol: arbitrary client-chosen symbol
84 /// - parts: array of Fixed and Slot parts composing the base, confined in length by99 /// - parts: array of Fixed and Slot parts composing the base, confined in length by
85 /// RmrkPartsLimit100 /// RmrkPartsLimit
101 #[transactional]
86 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]102 #[pallet::weight(<SelfWeightOf<T>>::create_base(parts.len() as u32))]
87 #[transactional]
88 pub fn create_base(103 pub fn create_base(
89 origin: OriginFor<T>,104 origin: OriginFor<T>,
90 base_type: RmrkString,105 base_type: RmrkString,
91 symbol: RmrkString,106 symbol: RmrkBaseSymbol,
92 parts: BoundedVec<RmrkPartType, RmrkPartsLimit>,107 parts: BoundedVec<RmrkPartType, RmrkPartsLimit>,
93 ) -> DispatchResult {108 ) -> DispatchResult {
94 let sender = ensure_signed(origin)?;109 let sender = ensure_signed(origin)?;
125 let collection = <PalletCore<T>>::get_nft_collection(collection_id)?;140 let collection = <PalletCore<T>>::get_nft_collection(collection_id)?;
126141
127 for part in parts {142 for part in parts {
128 let part_id = part.id();
129 let part_token_id = Self::create_part(&cross_sender, &collection, part)?;143 Self::create_part(&cross_sender, &collection, part)?;
130
131 <InernalPartId<T>>::insert(collection_id, part_id, part_token_id);
132
133 <PalletNft<T>>::set_scoped_token_property(
134 collection_id,
135 part_token_id,
136 PropertyScope::Rmrk,
137 <PalletCore<T>>::rmrk_property(ExternalPartId, &part_id)?,
138 )?;
139 }144 }
140145
141 Self::deposit_event(Event::BaseCreated {146 Self::deposit_event(Event::BaseCreated {
159 /// - key: arbitrary BoundedString, defined by client164 /// - key: arbitrary BoundedString, defined by client
160 /// - value: arbitrary BoundedString, defined by client165 /// - value: arbitrary BoundedString, defined by client
161 /// - inherit: optional bool166 /// - inherit: optional bool
167 #[transactional]
162 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]168 #[pallet::weight(<SelfWeightOf<T>>::theme_add(theme.properties.len() as u32))]
163 #[transactional]
164 pub fn theme_add(169 pub fn theme_add(
165 origin: OriginFor<T>,170 origin: OriginFor<T>,
166 base_id: RmrkBaseId,171 base_id: RmrkBaseId,
167 theme: RmrkTheme,172 theme: RmrkBoundedTheme,
168 ) -> DispatchResult {173 ) -> DispatchResult {
169 let sender = ensure_signed(origin)?;174 let sender = ensure_signed(origin)?;
170175
173178
174 let collection_id: CollectionId = base_id.into();179 let collection_id: CollectionId = base_id.into();
175180
176 let collection = <PalletCore<T>>::get_typed_nft_collection(181 let collection = Self::get_base(collection_id)?;
177 collection_id,
178 misc::CollectionType::Base,
179 )
180 .map_err(|_| <Error<T>>::BaseDoesntExist)?;
181 collection.check_is_external()?;
182182
183 if theme.name.as_slice() == b"default" {183 if theme.name.as_slice() == b"default" {
184 <BaseHasDefaultTheme<T>>::insert(collection_id, true);184 <BaseHasDefaultTheme<T>>::insert(collection_id, true);
214 Ok(())214 Ok(())
215 }215 }
216
217 #[transactional]
218 #[pallet::weight(<SelfWeightOf<T>>::equippable())]
219 pub fn equippable(
220 origin: OriginFor<T>,
221 base_id: RmrkBaseId,
222 slot_id: RmrkSlotId,
223 equippables: RmrkEquippableList,
224 ) -> DispatchResult {
225 let sender = ensure_signed(origin)?;
226
227 let base_collection_id = base_id.into();
228 let collection = Self::get_base(base_collection_id)?;
229
230 <PalletCore<T>>::check_collection_owner(
231 &collection,
232 &T::CrossAccountId::from_sub(sender),
233 )
234 .map_err(|err| {
235 if err == <CoreError<T>>::NoPermission.into() {
236 <Error<T>>::PermissionError.into()
237 } else {
238 err
239 }
240 })?;
241
242 let part_id = Self::internal_part_id(base_collection_id, slot_id)
243 .ok_or(<Error<T>>::PartDoesntExist)?;
244
245 let nft_type = <PalletCore<T>>::get_nft_type(base_collection_id, part_id)
246 .map_err(|_| <Error<T>>::PartDoesntExist)?;
247
248 match nft_type {
249 NftType::Regular | NftType::Theme => return Err(<Error<T>>::PermissionError.into()),
250 NftType::FixedPart => return Err(<Error<T>>::NoEquippableOnFixedPart.into()),
251 NftType::SlotPart => {
252 <PalletNft<T>>::set_scoped_token_property(
253 base_collection_id,
254 part_id,
255 PropertyScope::Rmrk,
256 <PalletCore<T>>::rmrk_property(EquippableList, &equippables)?,
257 )?;
258 }
259 }
260
261 Self::deposit_event(Event::EquippablesUpdated { base_id, slot_id });
262
263 Ok(())
264 }
216 }265 }
217}266}
218267
221 sender: &T::CrossAccountId,270 sender: &T::CrossAccountId,
222 collection: &NonfungibleHandle<T>,271 collection: &NonfungibleHandle<T>,
223 part: RmrkPartType,272 part: RmrkPartType,
224 ) -> Result<TokenId, DispatchError> {273 ) -> DispatchResult {
225 let owner = sender;274 let owner = sender;
226275
276 let part_id = part.id();
227 let src = part.src();277 let src = part.src();
228 let z_index = part.z_index();278 let z_index = part.z_index();
229279
232 RmrkPartType::SlotPart(_) => NftType::SlotPart,282 RmrkPartType::SlotPart(_) => NftType::SlotPart,
233 };283 };
234284
235 let token_id = <PalletCore<T>>::create_nft(285 let token_id = match Self::internal_part_id(collection.id, part_id) {
286 Some(token_id) => token_id,
287 None => {
288 let token_id =
289 <PalletCore<T>>::create_nft(sender, owner, collection, [].into_iter())
290 .map_err(|err| match err {
291 DispatchError::Arithmetic(_) => <Error<T>>::NoAvailablePartId.into(),
292 err => err,
293 })?;
294
295 <InernalPartId<T>>::insert(collection.id, part_id, token_id);
296
297 <PalletNft<T>>::set_scoped_token_property(
298 collection.id,
299 token_id,
300 PropertyScope::Rmrk,
301 <PalletCore<T>>::rmrk_property(ExternalPartId, &part_id)?,
302 )?;
303
304 token_id
305 }
306 };
307
308 <PalletNft<T>>::set_scoped_token_properties(
236 sender,309 collection.id,
237 owner,310 token_id,
238 collection,311 PropertyScope::Rmrk,
239 [312 [
240 <PalletCore<T>>::rmrk_property(TokenType, &nft_type)?,313 <PalletCore<T>>::rmrk_property(TokenType, &nft_type)?,
241 <PalletCore<T>>::rmrk_property(Src, &src)?,314 <PalletCore<T>>::rmrk_property(Src, &src)?,
242 <PalletCore<T>>::rmrk_property(ZIndex, &z_index)?,315 <PalletCore<T>>::rmrk_property(ZIndex, &z_index)?,
243 ]316 ]
244 .into_iter(),317 .into_iter(),
245 )
246 .map_err(|err| match err {
247 DispatchError::Arithmetic(_) => <Error<T>>::NoAvailablePartId.into(),
248 err => err,
249 })?;318 )?;
250319
251 if let RmrkPartType::SlotPart(part) = part {320 if let RmrkPartType::SlotPart(part) = part {
252 <PalletNft<T>>::set_scoped_token_property(321 <PalletNft<T>>::set_scoped_token_property(
257 )?;326 )?;
258 }327 }
259328
260 Ok(token_id)329 Ok(())
261 }330 }
331
332 fn get_base(base_id: CollectionId) -> Result<NonfungibleHandle<T>, DispatchError> {
333 let collection =
334 <PalletCore<T>>::get_typed_nft_collection(base_id, misc::CollectionType::Base)
335 .map_err(|err| {
336 if err == <CoreError<T>>::CollectionUnknown.into() {
337 <Error<T>>::BaseDoesntExist.into()
338 } else {
339 err
340 }
341 })?;
342 collection.check_is_external()?;
343
344 Ok(collection)
345 }
262}346}
263347
addedpallets/proxy-rmrk-equip/src/rpc.rsdiffbeforeafterboth

no changes

addedpallets/proxy-rmrk-equip/src/weights.rsdiffbeforeafterboth

no changes

modifiedpallets/refungible/src/common.rsdiffbeforeafterboth
77 077 0
78 }78 }
7979
80 fn set_token_properties(amount: u32) -> Weight {80 fn set_token_properties(_amount: u32) -> Weight {
81 <SelfWeightOf<T>>::set_token_properties(amount)81 // Error
82 0
82 }83 }
8384
84 fn delete_token_properties(amount: u32) -> Weight {85 fn delete_token_properties(_amount: u32) -> Weight {
85 <SelfWeightOf<T>>::delete_token_properties(amount)86 // Error
87 0
86 }88 }
8789
88 fn set_property_permissions(amount: u32) -> Weight {90 fn set_token_property_permissions(_amount: u32) -> Weight {
89 <SelfWeightOf<T>>::set_property_permissions(amount)91 // Error
92 0
90 }93 }
9194
92 fn transfer() -> Weight {95 fn transfer() -> Weight {
315 fail!(<Error<T>>::SettingPropertiesNotAllowed)318 fail!(<Error<T>>::SettingPropertiesNotAllowed)
316 }319 }
317320
318 fn set_property_permissions(321 fn set_token_property_permissions(
319 &self,322 &self,
320 _sender: &T::CrossAccountId,323 _sender: &T::CrossAccountId,
321 _property_permissions: Vec<PropertyKeyPermission>,324 _property_permissions: Vec<PropertyKeyPermission>,
modifiedpallets/refungible/src/weights.rsdiffbeforeafterboth
3//! Autogenerated weights for pallet_refungible3//! Autogenerated weights for pallet_refungible
4//!4//!
5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
6//! DATE: 2022-03-01, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`6//! DATE: 2022-06-15, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`
7//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 10247//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
88
9// Executed Command:9// Executed Command:
10// target/release/unique-collator10// target/release/unique-collator
11// benchmark11// benchmark
12// pallet
12// --pallet13// --pallet
13// pallet-refungible14// pallet-refungible
14// --wasm-execution15// --wasm-execution
18// --template19// --template
19// .maintain/frame-weight-template.hbs20// .maintain/frame-weight-template.hbs
20// --steps=5021// --steps=50
21// --repeat=20022// --repeat=80
22// --heap-pages=409623// --heap-pages=4096
23// --output=./pallets/refungible/src/weights.rs24// --output=./pallets/refungible/src/weights.rs
2425
38 fn create_multiple_items_ex_multiple_owners(b: u32, ) -> Weight;39 fn create_multiple_items_ex_multiple_owners(b: u32, ) -> Weight;
39 fn burn_item_partial() -> Weight;40 fn burn_item_partial() -> Weight;
40 fn burn_item_fully() -> Weight;41 fn burn_item_fully() -> Weight;
41 fn set_token_properties(amount: u32) -> Weight;
42 fn delete_token_properties(amount: u32) -> Weight;
43 fn set_property_permissions(amount: u32) -> Weight;
44 fn transfer_normal() -> Weight;42 fn transfer_normal() -> Weight;
45 fn transfer_creating() -> Weight;43 fn transfer_creating() -> Weight;
46 fn transfer_removing() -> Weight;44 fn transfer_removing() -> Weight;
63 // Storage: Refungible TokenData (r:0 w:1)61 // Storage: Refungible TokenData (r:0 w:1)
64 // Storage: Refungible Owned (r:0 w:1)62 // Storage: Refungible Owned (r:0 w:1)
65 fn create_item() -> Weight {63 fn create_item() -> Weight {
66 (21_255_000 as Weight)64 (21_321_000 as Weight)
67 .saturating_add(T::DbWeight::get().reads(2 as Weight))65 .saturating_add(T::DbWeight::get().reads(2 as Weight))
68 .saturating_add(T::DbWeight::get().writes(6 as Weight))66 .saturating_add(T::DbWeight::get().writes(6 as Weight))
69 }67 }
74 // Storage: Refungible TokenData (r:0 w:4)72 // Storage: Refungible TokenData (r:0 w:4)
75 // Storage: Refungible Owned (r:0 w:4)73 // Storage: Refungible Owned (r:0 w:4)
76 fn create_multiple_items(b: u32, ) -> Weight {74 fn create_multiple_items(b: u32, ) -> Weight {
77 (18_052_000 as Weight)75 (16_313_000 as Weight)
78 // Standard Error: 1_00076 // Standard Error: 4_000
79 .saturating_add((5_549_000 as Weight).saturating_mul(b as Weight))77 .saturating_add((5_464_000 as Weight).saturating_mul(b as Weight))
80 .saturating_add(T::DbWeight::get().reads(2 as Weight))78 .saturating_add(T::DbWeight::get().reads(2 as Weight))
81 .saturating_add(T::DbWeight::get().writes(2 as Weight))79 .saturating_add(T::DbWeight::get().writes(2 as Weight))
82 .saturating_add(T::DbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))80 .saturating_add(T::DbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))
88 // Storage: Refungible TokenData (r:0 w:4)86 // Storage: Refungible TokenData (r:0 w:4)
89 // Storage: Refungible Owned (r:0 w:4)87 // Storage: Refungible Owned (r:0 w:4)
90 fn create_multiple_items_ex_multiple_items(b: u32, ) -> Weight {88 fn create_multiple_items_ex_multiple_items(b: u32, ) -> Weight {
91 (15_766_000 as Weight)89 (15_631_000 as Weight)
92 // Standard Error: 2_00090 // Standard Error: 5_000
93 .saturating_add((8_187_000 as Weight).saturating_mul(b as Weight))91 .saturating_add((8_141_000 as Weight).saturating_mul(b as Weight))
94 .saturating_add(T::DbWeight::get().reads(1 as Weight))92 .saturating_add(T::DbWeight::get().reads(1 as Weight))
95 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))93 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
96 .saturating_add(T::DbWeight::get().writes(1 as Weight))94 .saturating_add(T::DbWeight::get().writes(1 as Weight))
103 // Storage: Refungible Balance (r:0 w:4)101 // Storage: Refungible Balance (r:0 w:4)
104 // Storage: Refungible Owned (r:0 w:4)102 // Storage: Refungible Owned (r:0 w:4)
105 fn create_multiple_items_ex_multiple_owners(b: u32, ) -> Weight {103 fn create_multiple_items_ex_multiple_owners(b: u32, ) -> Weight {
106 (5_675_000 as Weight)104 (11_191_000 as Weight)
107 // Standard Error: 2_000105 // Standard Error: 4_000
108 .saturating_add((6_315_000 as Weight).saturating_mul(b as Weight))106 .saturating_add((6_321_000 as Weight).saturating_mul(b as Weight))
109 .saturating_add(T::DbWeight::get().reads(1 as Weight))107 .saturating_add(T::DbWeight::get().reads(1 as Weight))
110 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))108 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
111 .saturating_add(T::DbWeight::get().writes(3 as Weight))109 .saturating_add(T::DbWeight::get().writes(3 as Weight))
116 // Storage: Refungible AccountBalance (r:1 w:1)114 // Storage: Refungible AccountBalance (r:1 w:1)
117 // Storage: Refungible Owned (r:0 w:1)115 // Storage: Refungible Owned (r:0 w:1)
118 fn burn_item_partial() -> Weight {116 fn burn_item_partial() -> Weight {
119 (23_518_000 as Weight)117 (24_421_000 as Weight)
120 .saturating_add(T::DbWeight::get().reads(3 as Weight))118 .saturating_add(T::DbWeight::get().reads(3 as Weight))
121 .saturating_add(T::DbWeight::get().writes(4 as Weight))119 .saturating_add(T::DbWeight::get().writes(4 as Weight))
122 }120 }
127 // Storage: Refungible TokenData (r:0 w:1)125 // Storage: Refungible TokenData (r:0 w:1)
128 // Storage: Refungible Owned (r:0 w:1)126 // Storage: Refungible Owned (r:0 w:1)
129 fn burn_item_fully() -> Weight {127 fn burn_item_fully() -> Weight {
130 (32_489_000 as Weight)128 (32_900_000 as Weight)
131 .saturating_add(T::DbWeight::get().reads(4 as Weight))129 .saturating_add(T::DbWeight::get().reads(4 as Weight))
132 .saturating_add(T::DbWeight::get().writes(6 as Weight))130 .saturating_add(T::DbWeight::get().writes(6 as Weight))
133 }131 }
134
135 fn set_token_properties(_amount: u32) -> Weight {
136 // Error
137 0
138 }
139
140 fn delete_token_properties(_amount: u32) -> Weight {
141 // Error
142 0
143 }
144
145 fn set_property_permissions(_amount: u32) -> Weight {
146 // Error
147 0
148 }
149
150 // Storage: Refungible Balance (r:2 w:2)132 // Storage: Refungible Balance (r:2 w:2)
151 fn transfer_normal() -> Weight {133 fn transfer_normal() -> Weight {
152 (19_766_000 as Weight)134 (20_215_000 as Weight)
153 .saturating_add(T::DbWeight::get().reads(2 as Weight))135 .saturating_add(T::DbWeight::get().reads(2 as Weight))
154 .saturating_add(T::DbWeight::get().writes(2 as Weight))136 .saturating_add(T::DbWeight::get().writes(2 as Weight))
155 }137 }
156 // Storage: Refungible Balance (r:2 w:2)138 // Storage: Refungible Balance (r:2 w:2)
157 // Storage: Refungible AccountBalance (r:1 w:1)139 // Storage: Refungible AccountBalance (r:1 w:1)
158 // Storage: Refungible Owned (r:0 w:1)140 // Storage: Refungible Owned (r:0 w:1)
159 fn transfer_creating() -> Weight {141 fn transfer_creating() -> Weight {
160 (23_360_000 as Weight)142 (24_809_000 as Weight)
161 .saturating_add(T::DbWeight::get().reads(3 as Weight))143 .saturating_add(T::DbWeight::get().reads(3 as Weight))
162 .saturating_add(T::DbWeight::get().writes(4 as Weight))144 .saturating_add(T::DbWeight::get().writes(4 as Weight))
163 }145 }
164 // Storage: Refungible Balance (r:2 w:2)146 // Storage: Refungible Balance (r:2 w:2)
165 // Storage: Refungible AccountBalance (r:1 w:1)147 // Storage: Refungible AccountBalance (r:1 w:1)
166 // Storage: Refungible Owned (r:0 w:1)148 // Storage: Refungible Owned (r:0 w:1)
167 fn transfer_removing() -> Weight {149 fn transfer_removing() -> Weight {
168 (25_344_000 as Weight)150 (26_704_000 as Weight)
169 .saturating_add(T::DbWeight::get().reads(3 as Weight))151 .saturating_add(T::DbWeight::get().reads(3 as Weight))
170 .saturating_add(T::DbWeight::get().writes(4 as Weight))152 .saturating_add(T::DbWeight::get().writes(4 as Weight))
171 }153 }
172 // Storage: Refungible Balance (r:2 w:2)154 // Storage: Refungible Balance (r:2 w:2)
173 // Storage: Refungible AccountBalance (r:2 w:2)155 // Storage: Refungible AccountBalance (r:2 w:2)
174 // Storage: Refungible Owned (r:0 w:2)156 // Storage: Refungible Owned (r:0 w:2)
175 fn transfer_creating_removing() -> Weight {157 fn transfer_creating_removing() -> Weight {
176 (28_553_000 as Weight)158 (28_728_000 as Weight)
177 .saturating_add(T::DbWeight::get().reads(4 as Weight))159 .saturating_add(T::DbWeight::get().reads(4 as Weight))
178 .saturating_add(T::DbWeight::get().writes(6 as Weight))160 .saturating_add(T::DbWeight::get().writes(6 as Weight))
179 }161 }
180 // Storage: Refungible Balance (r:1 w:0)162 // Storage: Refungible Balance (r:1 w:0)
181 // Storage: Refungible Allowance (r:0 w:1)163 // Storage: Refungible Allowance (r:0 w:1)
182 fn approve() -> Weight {164 fn approve() -> Weight {
183 (15_356_000 as Weight)165 (16_107_000 as Weight)
184 .saturating_add(T::DbWeight::get().reads(1 as Weight))166 .saturating_add(T::DbWeight::get().reads(1 as Weight))
185 .saturating_add(T::DbWeight::get().writes(1 as Weight))167 .saturating_add(T::DbWeight::get().writes(1 as Weight))
186 }168 }
187 // Storage: Refungible Allowance (r:1 w:1)169 // Storage: Refungible Allowance (r:1 w:1)
188 // Storage: Refungible Balance (r:2 w:2)170 // Storage: Refungible Balance (r:2 w:2)
189 fn transfer_from_normal() -> Weight {171 fn transfer_from_normal() -> Weight {
190 (28_832_000 as Weight)172 (28_765_000 as Weight)
191 .saturating_add(T::DbWeight::get().reads(3 as Weight))173 .saturating_add(T::DbWeight::get().reads(3 as Weight))
192 .saturating_add(T::DbWeight::get().writes(3 as Weight))174 .saturating_add(T::DbWeight::get().writes(3 as Weight))
193 }175 }
196 // Storage: Refungible AccountBalance (r:1 w:1)178 // Storage: Refungible AccountBalance (r:1 w:1)
197 // Storage: Refungible Owned (r:0 w:1)179 // Storage: Refungible Owned (r:0 w:1)
198 fn transfer_from_creating() -> Weight {180 fn transfer_from_creating() -> Weight {
199 (32_132_000 as Weight)181 (32_788_000 as Weight)
200 .saturating_add(T::DbWeight::get().reads(4 as Weight))182 .saturating_add(T::DbWeight::get().reads(4 as Weight))
201 .saturating_add(T::DbWeight::get().writes(5 as Weight))183 .saturating_add(T::DbWeight::get().writes(5 as Weight))
202 }184 }
205 // Storage: Refungible AccountBalance (r:1 w:1)187 // Storage: Refungible AccountBalance (r:1 w:1)
206 // Storage: Refungible Owned (r:0 w:1)188 // Storage: Refungible Owned (r:0 w:1)
207 fn transfer_from_removing() -> Weight {189 fn transfer_from_removing() -> Weight {
208 (33_237_000 as Weight)190 (34_523_000 as Weight)
209 .saturating_add(T::DbWeight::get().reads(4 as Weight))191 .saturating_add(T::DbWeight::get().reads(4 as Weight))
210 .saturating_add(T::DbWeight::get().writes(5 as Weight))192 .saturating_add(T::DbWeight::get().writes(5 as Weight))
211 }193 }
214 // Storage: Refungible AccountBalance (r:2 w:2)196 // Storage: Refungible AccountBalance (r:2 w:2)
215 // Storage: Refungible Owned (r:0 w:2)197 // Storage: Refungible Owned (r:0 w:2)
216 fn transfer_from_creating_removing() -> Weight {198 fn transfer_from_creating_removing() -> Weight {
217 (36_399_000 as Weight)199 (36_749_000 as Weight)
218 .saturating_add(T::DbWeight::get().reads(5 as Weight))200 .saturating_add(T::DbWeight::get().reads(5 as Weight))
219 .saturating_add(T::DbWeight::get().writes(7 as Weight))201 .saturating_add(T::DbWeight::get().writes(7 as Weight))
220 }202 }
226 // Storage: Refungible TokenData (r:0 w:1)208 // Storage: Refungible TokenData (r:0 w:1)
227 // Storage: Refungible Owned (r:0 w:1)209 // Storage: Refungible Owned (r:0 w:1)
228 fn burn_from() -> Weight {210 fn burn_from() -> Weight {
229 (42_043_000 as Weight)211 (42_259_000 as Weight)
230 .saturating_add(T::DbWeight::get().reads(5 as Weight))212 .saturating_add(T::DbWeight::get().reads(5 as Weight))
231 .saturating_add(T::DbWeight::get().writes(7 as Weight))213 .saturating_add(T::DbWeight::get().writes(7 as Weight))
232 }214 }
241 // Storage: Refungible TokenData (r:0 w:1)223 // Storage: Refungible TokenData (r:0 w:1)
242 // Storage: Refungible Owned (r:0 w:1)224 // Storage: Refungible Owned (r:0 w:1)
243 fn create_item() -> Weight {225 fn create_item() -> Weight {
244 (21_255_000 as Weight)226 (21_321_000 as Weight)
245 .saturating_add(RocksDbWeight::get().reads(2 as Weight))227 .saturating_add(RocksDbWeight::get().reads(2 as Weight))
246 .saturating_add(RocksDbWeight::get().writes(6 as Weight))228 .saturating_add(RocksDbWeight::get().writes(6 as Weight))
247 }229 }
252 // Storage: Refungible TokenData (r:0 w:4)234 // Storage: Refungible TokenData (r:0 w:4)
253 // Storage: Refungible Owned (r:0 w:4)235 // Storage: Refungible Owned (r:0 w:4)
254 fn create_multiple_items(b: u32, ) -> Weight {236 fn create_multiple_items(b: u32, ) -> Weight {
255 (18_052_000 as Weight)237 (16_313_000 as Weight)
256 // Standard Error: 1_000238 // Standard Error: 4_000
257 .saturating_add((5_549_000 as Weight).saturating_mul(b as Weight))239 .saturating_add((5_464_000 as Weight).saturating_mul(b as Weight))
258 .saturating_add(RocksDbWeight::get().reads(2 as Weight))240 .saturating_add(RocksDbWeight::get().reads(2 as Weight))
259 .saturating_add(RocksDbWeight::get().writes(2 as Weight))241 .saturating_add(RocksDbWeight::get().writes(2 as Weight))
260 .saturating_add(RocksDbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))242 .saturating_add(RocksDbWeight::get().writes((4 as Weight).saturating_mul(b as Weight)))
266 // Storage: Refungible TokenData (r:0 w:4)248 // Storage: Refungible TokenData (r:0 w:4)
267 // Storage: Refungible Owned (r:0 w:4)249 // Storage: Refungible Owned (r:0 w:4)
268 fn create_multiple_items_ex_multiple_items(b: u32, ) -> Weight {250 fn create_multiple_items_ex_multiple_items(b: u32, ) -> Weight {
269 (15_766_000 as Weight)251 (15_631_000 as Weight)
270 // Standard Error: 2_000252 // Standard Error: 5_000
271 .saturating_add((8_187_000 as Weight).saturating_mul(b as Weight))253 .saturating_add((8_141_000 as Weight).saturating_mul(b as Weight))
272 .saturating_add(RocksDbWeight::get().reads(1 as Weight))254 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
273 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))255 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
274 .saturating_add(RocksDbWeight::get().writes(1 as Weight))256 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
281 // Storage: Refungible Balance (r:0 w:4)263 // Storage: Refungible Balance (r:0 w:4)
282 // Storage: Refungible Owned (r:0 w:4)264 // Storage: Refungible Owned (r:0 w:4)
283 fn create_multiple_items_ex_multiple_owners(b: u32, ) -> Weight {265 fn create_multiple_items_ex_multiple_owners(b: u32, ) -> Weight {
284 (5_675_000 as Weight)266 (11_191_000 as Weight)
285 // Standard Error: 2_000267 // Standard Error: 4_000
286 .saturating_add((6_315_000 as Weight).saturating_mul(b as Weight))268 .saturating_add((6_321_000 as Weight).saturating_mul(b as Weight))
287 .saturating_add(RocksDbWeight::get().reads(1 as Weight))269 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
288 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))270 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))
289 .saturating_add(RocksDbWeight::get().writes(3 as Weight))271 .saturating_add(RocksDbWeight::get().writes(3 as Weight))
294 // Storage: Refungible AccountBalance (r:1 w:1)276 // Storage: Refungible AccountBalance (r:1 w:1)
295 // Storage: Refungible Owned (r:0 w:1)277 // Storage: Refungible Owned (r:0 w:1)
296 fn burn_item_partial() -> Weight {278 fn burn_item_partial() -> Weight {
297 (23_518_000 as Weight)279 (24_421_000 as Weight)
298 .saturating_add(RocksDbWeight::get().reads(3 as Weight))280 .saturating_add(RocksDbWeight::get().reads(3 as Weight))
299 .saturating_add(RocksDbWeight::get().writes(4 as Weight))281 .saturating_add(RocksDbWeight::get().writes(4 as Weight))
300 }282 }
305 // Storage: Refungible TokenData (r:0 w:1)287 // Storage: Refungible TokenData (r:0 w:1)
306 // Storage: Refungible Owned (r:0 w:1)288 // Storage: Refungible Owned (r:0 w:1)
307 fn burn_item_fully() -> Weight {289 fn burn_item_fully() -> Weight {
308 (32_489_000 as Weight)290 (32_900_000 as Weight)
309 .saturating_add(RocksDbWeight::get().reads(4 as Weight))291 .saturating_add(RocksDbWeight::get().reads(4 as Weight))
310 .saturating_add(RocksDbWeight::get().writes(6 as Weight))292 .saturating_add(RocksDbWeight::get().writes(6 as Weight))
311 }293 }
312
313 fn set_token_properties(_amount: u32) -> Weight {
314 // Error
315 0
316 }
317
318 fn delete_token_properties(_amount: u32) -> Weight {
319 // Error
320 0
321 }
322
323 fn set_property_permissions(_amount: u32) -> Weight {
324 // Error
325 0
326 }
327
328 // Storage: Refungible Balance (r:2 w:2)294 // Storage: Refungible Balance (r:2 w:2)
329 fn transfer_normal() -> Weight {295 fn transfer_normal() -> Weight {
330 (19_766_000 as Weight)296 (20_215_000 as Weight)
331 .saturating_add(RocksDbWeight::get().reads(2 as Weight))297 .saturating_add(RocksDbWeight::get().reads(2 as Weight))
332 .saturating_add(RocksDbWeight::get().writes(2 as Weight))298 .saturating_add(RocksDbWeight::get().writes(2 as Weight))
333 }299 }
334 // Storage: Refungible Balance (r:2 w:2)300 // Storage: Refungible Balance (r:2 w:2)
335 // Storage: Refungible AccountBalance (r:1 w:1)301 // Storage: Refungible AccountBalance (r:1 w:1)
336 // Storage: Refungible Owned (r:0 w:1)302 // Storage: Refungible Owned (r:0 w:1)
337 fn transfer_creating() -> Weight {303 fn transfer_creating() -> Weight {
338 (23_360_000 as Weight)304 (24_809_000 as Weight)
339 .saturating_add(RocksDbWeight::get().reads(3 as Weight))305 .saturating_add(RocksDbWeight::get().reads(3 as Weight))
340 .saturating_add(RocksDbWeight::get().writes(4 as Weight))306 .saturating_add(RocksDbWeight::get().writes(4 as Weight))
341 }307 }
342 // Storage: Refungible Balance (r:2 w:2)308 // Storage: Refungible Balance (r:2 w:2)
343 // Storage: Refungible AccountBalance (r:1 w:1)309 // Storage: Refungible AccountBalance (r:1 w:1)
344 // Storage: Refungible Owned (r:0 w:1)310 // Storage: Refungible Owned (r:0 w:1)
345 fn transfer_removing() -> Weight {311 fn transfer_removing() -> Weight {
346 (25_344_000 as Weight)312 (26_704_000 as Weight)
347 .saturating_add(RocksDbWeight::get().reads(3 as Weight))313 .saturating_add(RocksDbWeight::get().reads(3 as Weight))
348 .saturating_add(RocksDbWeight::get().writes(4 as Weight))314 .saturating_add(RocksDbWeight::get().writes(4 as Weight))
349 }315 }
350 // Storage: Refungible Balance (r:2 w:2)316 // Storage: Refungible Balance (r:2 w:2)
351 // Storage: Refungible AccountBalance (r:2 w:2)317 // Storage: Refungible AccountBalance (r:2 w:2)
352 // Storage: Refungible Owned (r:0 w:2)318 // Storage: Refungible Owned (r:0 w:2)
353 fn transfer_creating_removing() -> Weight {319 fn transfer_creating_removing() -> Weight {
354 (28_553_000 as Weight)320 (28_728_000 as Weight)
355 .saturating_add(RocksDbWeight::get().reads(4 as Weight))321 .saturating_add(RocksDbWeight::get().reads(4 as Weight))
356 .saturating_add(RocksDbWeight::get().writes(6 as Weight))322 .saturating_add(RocksDbWeight::get().writes(6 as Weight))
357 }323 }
358 // Storage: Refungible Balance (r:1 w:0)324 // Storage: Refungible Balance (r:1 w:0)
359 // Storage: Refungible Allowance (r:0 w:1)325 // Storage: Refungible Allowance (r:0 w:1)
360 fn approve() -> Weight {326 fn approve() -> Weight {
361 (15_356_000 as Weight)327 (16_107_000 as Weight)
362 .saturating_add(RocksDbWeight::get().reads(1 as Weight))328 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
363 .saturating_add(RocksDbWeight::get().writes(1 as Weight))329 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
364 }330 }
365 // Storage: Refungible Allowance (r:1 w:1)331 // Storage: Refungible Allowance (r:1 w:1)
366 // Storage: Refungible Balance (r:2 w:2)332 // Storage: Refungible Balance (r:2 w:2)
367 fn transfer_from_normal() -> Weight {333 fn transfer_from_normal() -> Weight {
368 (28_832_000 as Weight)334 (28_765_000 as Weight)
369 .saturating_add(RocksDbWeight::get().reads(3 as Weight))335 .saturating_add(RocksDbWeight::get().reads(3 as Weight))
370 .saturating_add(RocksDbWeight::get().writes(3 as Weight))336 .saturating_add(RocksDbWeight::get().writes(3 as Weight))
371 }337 }
374 // Storage: Refungible AccountBalance (r:1 w:1)340 // Storage: Refungible AccountBalance (r:1 w:1)
375 // Storage: Refungible Owned (r:0 w:1)341 // Storage: Refungible Owned (r:0 w:1)
376 fn transfer_from_creating() -> Weight {342 fn transfer_from_creating() -> Weight {
377 (32_132_000 as Weight)343 (32_788_000 as Weight)
378 .saturating_add(RocksDbWeight::get().reads(4 as Weight))344 .saturating_add(RocksDbWeight::get().reads(4 as Weight))
379 .saturating_add(RocksDbWeight::get().writes(5 as Weight))345 .saturating_add(RocksDbWeight::get().writes(5 as Weight))
380 }346 }
383 // Storage: Refungible AccountBalance (r:1 w:1)349 // Storage: Refungible AccountBalance (r:1 w:1)
384 // Storage: Refungible Owned (r:0 w:1)350 // Storage: Refungible Owned (r:0 w:1)
385 fn transfer_from_removing() -> Weight {351 fn transfer_from_removing() -> Weight {
386 (33_237_000 as Weight)352 (34_523_000 as Weight)
387 .saturating_add(RocksDbWeight::get().reads(4 as Weight))353 .saturating_add(RocksDbWeight::get().reads(4 as Weight))
388 .saturating_add(RocksDbWeight::get().writes(5 as Weight))354 .saturating_add(RocksDbWeight::get().writes(5 as Weight))
389 }355 }
392 // Storage: Refungible AccountBalance (r:2 w:2)358 // Storage: Refungible AccountBalance (r:2 w:2)
393 // Storage: Refungible Owned (r:0 w:2)359 // Storage: Refungible Owned (r:0 w:2)
394 fn transfer_from_creating_removing() -> Weight {360 fn transfer_from_creating_removing() -> Weight {
395 (36_399_000 as Weight)361 (36_749_000 as Weight)
396 .saturating_add(RocksDbWeight::get().reads(5 as Weight))362 .saturating_add(RocksDbWeight::get().reads(5 as Weight))
397 .saturating_add(RocksDbWeight::get().writes(7 as Weight))363 .saturating_add(RocksDbWeight::get().writes(7 as Weight))
398 }364 }
404 // Storage: Refungible TokenData (r:0 w:1)370 // Storage: Refungible TokenData (r:0 w:1)
405 // Storage: Refungible Owned (r:0 w:1)371 // Storage: Refungible Owned (r:0 w:1)
406 fn burn_from() -> Weight {372 fn burn_from() -> Weight {
407 (42_043_000 as Weight)373 (42_259_000 as Weight)
408 .saturating_add(RocksDbWeight::get().reads(5 as Weight))374 .saturating_add(RocksDbWeight::get().reads(5 as Weight))
409 .saturating_add(RocksDbWeight::get().writes(7 as Weight))375 .saturating_add(RocksDbWeight::get().writes(7 as Weight))
410 }376 }
modifiedpallets/scheduler/Cargo.tomldiffbeforeafterboth
1[package]1[package]
2name = "pallet-unq-scheduler"2name = "pallet-unique-scheduler"
3version = "0.1.0"3version = "0.1.0"
4authors = ["Unique Network <support@uniquenetwork.io>"]4authors = ["Unique Network <support@uniquenetwork.io>"]
5edition = "2021"5edition = "2021"
modifiedpallets/scheduler/src/benchmarking.rsdiffbeforeafterboth
3434
35//! Scheduler pallet benchmarking.35//! Scheduler pallet benchmarking.
36
37#![cfg(feature = "runtime-benchmarks")]
3836
39use super::*;37use super::*;
38use frame_benchmarking::{benchmarks, account};
40use sp_std::{vec, prelude::*};39use frame_support::{
40 ensure,
41 traits::{OnInitialize},
42};
41use frame_system::RawOrigin;43use frame_system::RawOrigin;
42use frame_support::{ensure, traits::OnInitialize};44use sp_runtime::traits::Hash;
43use frame_benchmarking::{benchmarks, impl_benchmark_test_suite};45use sp_std::{prelude::*, vec};
4446
45use crate::Module as Scheduler;47use crate::Pallet as Scheduler;
46use frame_system::Pallet as System;48use frame_system::Pallet as System;
49use frame_support::traits::Currency;
4750
48const BLOCK_NUMBER: u32 = 2;51const BLOCK_NUMBER: u32 = 2;
4952
50// Add `n` named items to the schedule53/// Add `n` named items to the schedule.
54///
55/// For `resolved`:
56/// - `None`: aborted (hash without preimage)
57/// - `Some(true)`: hash resolves into call if possible, plain call otherwise
58/// - `Some(false)`: plain call
51fn fill_schedule<T: Config>(when: T::BlockNumber, n: u32) -> Result<(), &'static str> {59fn fill_schedule<T: Config>(
52 // Essentially a no-op call.60 when: T::BlockNumber,
61 n: u32,
62 periodic: bool,
63 resolved: Option<bool>,
64) -> Result<(), &'static str> {
65 let t = DispatchTime::At(when);
66 let caller = account("user", 0, 1);
67
68 // Give the sender account max funds for transfer (their account will never reasonably be killed).
53 let call = frame_system::Call::set_storage { items: vec![] };69 T::Currency::make_free_balance_be(&caller, T::Currency::minimum_balance());
70
54 for i in 0..n {71 for i in 0..n {
55 // Named schedule is strictly heavier than anonymous72 let (call, hash) = call_and_hash::<T>(i);
56 Scheduler::<T>::do_schedule_named(73 let call_or_hash = match resolved {
57 i.encode(),74 Some(_) => call.into(),
58 DispatchTime::At(when),75 None => CallOrHashOf::<T>::Hash(hash),
59 // Add periodicity76 };
77 let period = match periodic {
78 true => Some(((i + 100).into(), 100)),
79 false => None,
80 };
81
82 let slice_id: [u8; 4] = i.encode().try_into().unwrap();
83 let mut id: [u8; 16] = [0; 16];
60 Some((T::BlockNumber::one(), 100)),84 id[..4].clone_from_slice(&slice_id);
61 // HARD_DEADLINE priority means it gets executed no matter what85
62 0,
63 frame_system::RawOrigin::Root.into(),86 let origin = frame_system::RawOrigin::Signed(caller.clone()).into();
64 call.clone().into(),87 Scheduler::<T>::do_schedule_named(id, t, period, 0, origin, call_or_hash)?;
65 )?;
66 }88 }
67 ensure!(89 ensure!(
68 Agenda::<T>::get(when).len() == n as usize,90 Agenda::<T>::get(when).len() == n as usize,
71 Ok(())93 Ok(())
72}94}
95
96fn call_and_hash<T: Config>(i: u32) -> (<T as Config>::Call, T::Hash) {
97 // Essentially a no-op call.
98 let call: <T as Config>::Call = frame_system::Call::remark { remark: i.encode() }.into();
99 let hash = T::Hashing::hash_of(&call);
100 (call, hash)
101}
73102
74benchmarks! {103benchmarks! {
75 schedule {104 on_initialize_periodic_named_resolved {
76 let s in 0 .. T::MaxScheduledPerBlock::get();105 let s in 1 .. T::MaxScheduledPerBlock::get();
77 let when = BLOCK_NUMBER.into();106 let when = BLOCK_NUMBER.into();
78 let periodic = Some((T::BlockNumber::one(), 100));107 fill_schedule::<T>(when, s, true, Some(true))?;
108 }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }
109 verify {
110 assert_eq!(System::<T>::event_count(), s);
111 for i in 0..s {
112 assert_eq!(Agenda::<T>::get(when + (i + 100).into()).len(), 1 as usize);
113 }
114 }
115
116 on_initialize_named_resolved {
79 let priority = 0;117 let s in 1 .. T::MaxScheduledPerBlock::get();
80 // Essentially a no-op call.
81 let call = Box::new(frame_system::Call::set_storage { items: vec![] }.into());118 let when = BLOCK_NUMBER.into();
82119 fill_schedule::<T>(when, s, false, Some(true))?;
120 }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }
121 verify {
122 assert_eq!(System::<T>::event_count(), s);
123 assert!(Agenda::<T>::iter().count() == 0);
124 }
125
126 on_initialize_periodic {
127 let s in 1 .. T::MaxScheduledPerBlock::get();
128 let when = BLOCK_NUMBER.into();
83 fill_schedule::<T>(when, s)?;129 fill_schedule::<T>(when, s, true, Some(false))?;
84 }: _(RawOrigin::Root, when, periodic, priority, call)130 }: { Scheduler::<T>::on_initialize(when); }
85 verify {131 verify {
86 ensure!(132 assert_eq!(System::<T>::event_count(), s);
133 for i in 0..s {
87 Agenda::<T>::get(when).len() == (s + 1) as usize,134 assert_eq!(Agenda::<T>::get(when + (i + 100).into()).len(), 1 as usize);
88 "didn't add to schedule"135 }
89 );
90 }136 }
91137
92 cancel {138 on_initialize_periodic_resolved {
93 let s in 1 .. T::MaxScheduledPerBlock::get();139 let s in 1 .. T::MaxScheduledPerBlock::get();
94 let when = BLOCK_NUMBER.into();140 let when = BLOCK_NUMBER.into();
95
96 fill_schedule::<T>(when, s)?;141 fill_schedule::<T>(when, s, true, Some(true))?;
142 }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }
143 verify {
97 assert_eq!(Agenda::<T>::get(when).len(), s as usize);144 assert_eq!(System::<T>::event_count(), s );
145 for i in 0..s {
146 assert_eq!(Agenda::<T>::get(when + (i + 100).into()).len(), 1 as usize);
147 }
148 }
149
150 on_initialize_aborted {
151 let s in 1 .. T::MaxScheduledPerBlock::get();
152 let when = BLOCK_NUMBER.into();
153 fill_schedule::<T>(when, s, false, None)?;
98 }: _(RawOrigin::Root, when, 0)154 }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }
155 verify {
156 assert_eq!(System::<T>::event_count(), 0);
157 }
158
159 on_initialize_named_aborted {
160 let s in 1 .. T::MaxScheduledPerBlock::get();
161 let when = BLOCK_NUMBER.into();
162 fill_schedule::<T>(when, s, false, Some(false))?;
163 }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }
99 verify {164 verify {
165 }
166
167 on_initialize_named {
168 let s in 1 .. T::MaxScheduledPerBlock::get();
169 let when = BLOCK_NUMBER.into();
170 fill_schedule::<T>(when, s, false, None)?;
171 }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }
172 verify {
100 ensure!(173 assert_eq!(System::<T>::event_count(), 0);
174 }
175
176 on_initialize {
101 Lookup::<T>::get(0.encode()).is_none(),177 let s in 1 .. T::MaxScheduledPerBlock::get();
102 "didn't remove from lookup"178 let when = BLOCK_NUMBER.into();
179 fill_schedule::<T>(when, s, false, Some(false))?;
180 }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }
181 verify {
103 );182 assert_eq!(System::<T>::event_count(), s);
104 // Removed schedule is NONE
105 ensure!(183 assert!(Agenda::<T>::iter().count() == 0);
184 }
185
186 on_initialize_resolved {
106 Agenda::<T>::get(when)[0].is_none(),187 let s in 1 .. T::MaxScheduledPerBlock::get();
107 "didn't remove from schedule"188 let when = BLOCK_NUMBER.into();
189 fill_schedule::<T>(when, s, false, Some(true))?;
190 }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }
191 verify {
108 );192 assert_eq!(System::<T>::event_count(), s);
109 }193 assert!(Agenda::<T>::iter().count() == 0);
194 }
110195
111 schedule_named {196 schedule_named {
197 let caller: T::AccountId = account("user", 0, 1);
198 let origin: RawOrigin<T::AccountId> = frame_system::RawOrigin::Signed(caller.clone());
112 let s in 0 .. T::MaxScheduledPerBlock::get();199 let s in 0 .. T::MaxScheduledPerBlock::get();
113 let id = s.encode();200 let slice_id: [u8; 4] = s.encode().try_into().unwrap();
201 let mut id: [u8; 16] = [0; 16];
202 id[..4].clone_from_slice(&slice_id);
114 let when = BLOCK_NUMBER.into();203 let when = BLOCK_NUMBER.into();
115 let periodic = Some((T::BlockNumber::one(), 100));204 let periodic = Some((T::BlockNumber::one(), 100));
116 let priority = 0;205 let priority = 0;
117 // Essentially a no-op call.206 // Essentially a no-op call.
118 let call = Box::new(frame_system::Call::set_storage { items: vec![] }.into());207 let inner_call = frame_system::Call::set_storage { items: vec![] }.into();
119208 let call = Box::new(CallOrHashOf::<T>::Value(inner_call));
120 fill_schedule::<T>(when, s)?;209 fill_schedule::<T>(when, s, true, Some(false))?;
121 }: _(RawOrigin::Root, id, when, periodic, priority, call)210 }: _(origin, id, when, periodic, priority, call)
122 verify {211 verify {
123 ensure!(212 ensure!(
124 Agenda::<T>::get(when).len() == (s + 1) as usize,213 Agenda::<T>::get(when).len() == (s + 1) as usize,
127 }216 }
128217
129 cancel_named {218 cancel_named {
219 let caller: T::AccountId = account("user", 0, 1);
220 let origin: RawOrigin<T::AccountId> = frame_system::RawOrigin::Signed(caller.clone());
130 let s in 1 .. T::MaxScheduledPerBlock::get();221 let s in 1 .. T::MaxScheduledPerBlock::get();
131 let when = BLOCK_NUMBER.into();222 let when = BLOCK_NUMBER.into();
132223 let id = 0.encode().try_into().unwrap_or([0; MAX_TASK_ID_LENGTH_IN_BYTES as usize]);
133 fill_schedule::<T>(when, s)?;224 fill_schedule::<T>(when, s, true, Some(false))?;
134 }: _(RawOrigin::Root, 0.encode())225 }: _(origin, id)
135 verify {226 verify {
136 ensure!(227 ensure!(
137 Lookup::<T>::get(0.encode()).is_none(),228 Lookup::<T>::get(id).is_none(),
138 "didn't remove from lookup"229 "didn't remove from lookup"
139 );230 );
140 // Removed schedule is NONE231 // Removed schedule is NONE
144 );235 );
145 }236 }
146237
147 // TODO [#7141]: Make this more complex and flexible so it can be used in automation.
148 #[extra]
149 on_initialize {
150 let s in 0 .. T::MaxScheduledPerBlock::get();
151 let when = BLOCK_NUMBER.into();
152 fill_schedule::<T>(when, s)?;
153 }: { Scheduler::<T>::on_initialize(BLOCK_NUMBER.into()); }238 impl_benchmark_test_suite!(Scheduler, crate::mock::new_test_ext(), crate::mock::Test);
154 verify {
155 assert_eq!(System::<T>::event_count(), s);
156 // Next block should have all the schedules again
157 ensure!(
158 Agenda::<T>::get(when + T::BlockNumber::one()).len() == s as usize,
159 "didn't append schedule"
160 );
161 }
162}239}
163
164impl_benchmark_test_suite!(Scheduler, crate::tests::new_test_ext(), crate::tests::Test,);
165240
modifiedpallets/scheduler/src/lib.rsdiffbeforeafterboth
60// Ensure we're `no_std` when compiling for Wasm.60// Ensure we're `no_std` when compiling for Wasm.
61#![cfg_attr(not(feature = "std"), no_std)]61#![cfg_attr(not(feature = "std"), no_std)]
6262
63// FIXME
64// #[cfg(feature = "runtime-benchmarks")]63#[cfg(feature = "runtime-benchmarks")]
65// mod benchmarking;64mod benchmarking;
6665
67pub mod weights;66pub mod weights;
6867
159 Self::on_initialize_periodic(2) - Self::on_initialize_periodic(1)158 Self::on_initialize_periodic(2) - Self::on_initialize_periodic(1)
160 }159 }
161 (true, true, Some(false)) => {160 (true, true, Some(false)) => {
162 Self::on_initialize_periodic_named(2) - Self::on_initialize_periodic_named(1)161 Self::on_initialize_periodic_named_resolved(2)
162 - Self::on_initialize_periodic_named_resolved(1)
163 }163 }
164 (false, false, Some(true)) => {164 (false, false, Some(true)) => Self::on_initialize(2) - Self::on_initialize(1),
165 Self::on_initialize_resolved(2) - Self::on_initialize_resolved(1)
166 }
167 (false, true, Some(true)) => {165 (false, true, Some(true)) => {
168 Self::on_initialize_named_resolved(2) - Self::on_initialize_named_resolved(1)166 Self::on_initialize_named_resolved(2) - Self::on_initialize_named_resolved(1)
169 }167 }
610 Ok(when)608 Ok(when)
611 }609 }
612610
613 fn do_schedule(
614 when: DispatchTime<T::BlockNumber>,
615 maybe_periodic: Option<schedule::Period<T::BlockNumber>>,
616 priority: schedule::Priority,
617 origin: T::PalletsOrigin,
618 call: CallOrHashOf<T>,
619 ) -> Result<TaskAddress<T::BlockNumber>, DispatchError> {
620 let when = Self::resolve_time(when)?;
621 call.ensure_requested::<T::PreimageProvider>();
622
623 // sanitize maybe_periodic
624 let maybe_periodic = maybe_periodic
625 .filter(|p| p.1 > 1 && !p.0.is_zero())
626 // Remove one from the number of repetitions since we will schedule one now.
627 .map(|(p, c)| (p, c - 1));
628 let s = Some(Scheduled {
629 maybe_id: None,
630 priority,
631 call,
632 maybe_periodic,
633 origin,
634 _phantom: PhantomData::<T::AccountId>::default(),
635 });
636 Agenda::<T>::append(when, s);
637 let index = Agenda::<T>::decode_len(when).unwrap_or(1) as u32 - 1;
638 Self::deposit_event(Event::Scheduled { when, index });
639
640 Ok((when, index))
641 }
642
643 fn do_cancel(
644 origin: Option<T::PalletsOrigin>,
645 (when, index): TaskAddress<T::BlockNumber>,
646 ) -> Result<(), DispatchError> {
647 let scheduled = Agenda::<T>::try_mutate(when, |agenda| {
648 agenda.get_mut(index as usize).map_or(
649 Ok(None),
650 |s| -> Result<Option<Scheduled<_, _, _, _>>, DispatchError> {
651 if let (Some(ref o), Some(ref s)) = (origin, s.borrow()) {
652 if matches!(
653 T::OriginPrivilegeCmp::cmp_privilege(o, &s.origin),
654 Some(Ordering::Less) | None
655 ) {
656 return Err(BadOrigin.into());
657 }
658 };
659 Ok(s.take())
660 },
661 )
662 })?;
663 if let Some(s) = scheduled {
664 s.call.ensure_unrequested::<T::PreimageProvider>();
665 if let Some(id) = s.maybe_id {
666 Lookup::<T>::remove(id);
667 }
668 Self::deposit_event(Event::Canceled { when, index });
669 Ok(())
670 } else {
671 Err(Error::<T>::NotFound)?
672 }
673 }
674
675 fn do_reschedule(
676 (when, index): TaskAddress<T::BlockNumber>,
677 new_time: DispatchTime<T::BlockNumber>,
678 ) -> Result<TaskAddress<T::BlockNumber>, DispatchError> {
679 let new_time = Self::resolve_time(new_time)?;
680
681 if new_time == when {
682 return Err(Error::<T>::RescheduleNoChange.into());
683 }
684
685 Agenda::<T>::try_mutate(when, |agenda| -> DispatchResult {
686 let task = agenda.get_mut(index as usize).ok_or(Error::<T>::NotFound)?;
687 let task = task.take().ok_or(Error::<T>::NotFound)?;
688 Agenda::<T>::append(new_time, Some(task));
689 Ok(())
690 })?;
691
692 let new_index = Agenda::<T>::decode_len(new_time).unwrap_or(1) as u32 - 1;
693 Self::deposit_event(Event::Canceled { when, index });
694 Self::deposit_event(Event::Scheduled {
695 when: new_time,
696 index: new_index,
697 });
698
699 Ok((new_time, new_index))
700 }
701
702 fn do_schedule_named(611 fn do_schedule_named(
703 id: ScheduledId,612 id: ScheduledId,
789 Err(Error::<T>::NotFound)?698 Err(Error::<T>::NotFound)?
790 }699 }
791 })700 })
792 }
793
794 fn do_reschedule_named(
795 id: ScheduledId,
796 new_time: DispatchTime<T::BlockNumber>,
797 ) -> Result<TaskAddress<T::BlockNumber>, DispatchError> {
798 let new_time = Self::resolve_time(new_time)?;
799
800 Lookup::<T>::try_mutate_exists(
801 id,
802 |lookup| -> Result<TaskAddress<T::BlockNumber>, DispatchError> {
803 let (when, index) = lookup.ok_or(Error::<T>::NotFound)?;
804
805 if new_time == when {
806 return Err(Error::<T>::RescheduleNoChange.into());
807 }
808
809 Agenda::<T>::try_mutate(when, |agenda| -> DispatchResult {
810 let task = agenda.get_mut(index as usize).ok_or(Error::<T>::NotFound)?;
811 let task = task.take().ok_or(Error::<T>::NotFound)?;
812 Agenda::<T>::append(new_time, Some(task));
813
814 Ok(())
815 })?;
816
817 let new_index = Agenda::<T>::decode_len(new_time).unwrap_or(1) as u32 - 1;
818 Self::deposit_event(Event::Canceled { when, index });
819 Self::deposit_event(Event::Scheduled {
820 when: new_time,
821 index: new_index,
822 });
823
824 *lookup = Some((new_time, new_index));
825
826 Ok((new_time, new_index))
827 },
828 )
829 }
830}
831
832impl<T: Config> schedule::v2::Anon<T::BlockNumber, <T as Config>::Call, T::PalletsOrigin>
833 for Pallet<T>
834{
835 type Address = TaskAddress<T::BlockNumber>;
836 type Hash = T::Hash;
837
838 fn schedule(
839 when: DispatchTime<T::BlockNumber>,
840 maybe_periodic: Option<schedule::Period<T::BlockNumber>>,
841 priority: schedule::Priority,
842 origin: T::PalletsOrigin,
843 call: CallOrHashOf<T>,
844 ) -> Result<Self::Address, DispatchError> {
845 Self::do_schedule(when, maybe_periodic, priority, origin, call)
846 }
847
848 fn cancel((when, index): Self::Address) -> Result<(), ()> {
849 Self::do_cancel(None, (when, index)).map_err(|_| ())
850 }
851
852 fn reschedule(
853 address: Self::Address,
854 when: DispatchTime<T::BlockNumber>,
855 ) -> Result<Self::Address, DispatchError> {
856 Self::do_reschedule(address, when)
857 }
858
859 fn next_dispatch_time((when, index): Self::Address) -> Result<T::BlockNumber, ()> {
860 Agenda::<T>::get(when)
861 .get(index as usize)
862 .ok_or(())
863 .map(|_| when)
864 }
865}
866
867impl<T: Config> schedule::v2::Named<T::BlockNumber, <T as Config>::Call, T::PalletsOrigin>
868 for Pallet<T>
869{
870 type Address = TaskAddress<T::BlockNumber>;
871 type Hash = T::Hash;
872
873 fn schedule_named(
874 id: Vec<u8>,
875 when: DispatchTime<T::BlockNumber>,
876 maybe_periodic: Option<schedule::Period<T::BlockNumber>>,
877 priority: schedule::Priority,
878 origin: T::PalletsOrigin,
879 call: CallOrHashOf<T>,
880 ) -> Result<Self::Address, ()> {
881 let inner_id: ScheduledId = id
882 .try_into()
883 .unwrap_or([0; MAX_TASK_ID_LENGTH_IN_BYTES as usize]);
884 Self::do_schedule_named(inner_id, when, maybe_periodic, priority, origin, call)
885 .map_err(|_| ())
886 }
887
888 fn cancel_named(id: Vec<u8>) -> Result<(), ()> {
889 let inner_id: ScheduledId = id
890 .try_into()
891 .unwrap_or([0; MAX_TASK_ID_LENGTH_IN_BYTES as usize]);
892 Self::do_cancel_named(None, inner_id).map_err(|_| ())
893 }
894
895 fn reschedule_named(
896 id: Vec<u8>,
897 when: DispatchTime<T::BlockNumber>,
898 ) -> Result<Self::Address, DispatchError> {
899 let inner_id: ScheduledId = id
900 .try_into()
901 .unwrap_or([0; MAX_TASK_ID_LENGTH_IN_BYTES as usize]);
902 Self::do_reschedule_named(inner_id, when)
903 }
904
905 fn next_dispatch_time(id: Vec<u8>) -> Result<T::BlockNumber, ()> {
906 let inner_id: ScheduledId = id
907 .try_into()
908 .unwrap_or([0; MAX_TASK_ID_LENGTH_IN_BYTES as usize]);
909 Lookup::<T>::get(inner_id)
910 .and_then(|(when, index)| Agenda::<T>::get(when).get(index as usize).map(|_| when))
911 .ok_or(())
912 }701 }
913}702}
914703
modifiedpallets/scheduler/src/weights.rsdiffbeforeafterboth
1// This file is part of Substrate.1// Template adopted from https://github.com/paritytech/substrate/blob/master/.maintain/frame-weight-template.hbs
22
3// Copyright (C) 2022 Parity Technologies (UK) Ltd.3//! Autogenerated weights for pallet_unique_scheduler
4// SPDX-License-Identifier: Apache-2.0
5
6// Licensed under the Apache License, Version 2.0 (the "License");
7// you may not use this file except in compliance with the License.
8// You may obtain a copy of the License at
9//
10// http://www.apache.org/licenses/LICENSE-2.0
11//
12// Unless required by applicable law or agreed to in writing, software
13// distributed under the License is distributed on an "AS IS" BASIS,
14// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15// See the License for the specific language governing permissions and
16// limitations under the License.
17
18//! Autogenerated weights for pallet_scheduler
19//!4//!
20//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
21//! DATE: 2022-01-31, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]`6//! DATE: 2022-06-15, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`
22//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 10247//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
238
24// Executed Command:9// Executed Command:
25// ./target/production/substrate10// target/release/unique-collator
26// benchmark11// benchmark
27// --chain=dev12// pallet
13// --pallet
14// pallet-unique-scheduler
15// --wasm-execution
16// compiled
17// --extrinsic
18// *
19// --template
20// .maintain/frame-weight-template.hbs
28// --steps=5021// --steps=50
29// --repeat=2022// --repeat=80
30// --pallet=pallet_scheduler
31// --extrinsic=*
32// --execution=wasm
33// --wasm-execution=compiled
34// --heap-pages=409623// --heap-pages=4096
35// --output=./frame/scheduler/src/weights.rs24// --output=./pallets/scheduler/src/weights.rs
36// --template=.maintain/frame-weight-template.hbs
37// --header=HEADER-APACHE2
38// --raw
3925
40#![cfg_attr(rustfmt, rustfmt_skip)]26#![cfg_attr(rustfmt, rustfmt_skip)]
41#![allow(unused_parens)]27#![allow(unused_parens)]
42#![allow(unused_imports)]28#![allow(unused_imports)]
29#![allow(clippy::unnecessary_cast)]
4330
44use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}};31use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}};
45use sp_std::marker::PhantomData;32use sp_std::marker::PhantomData;
4633
47/// Weight functions needed for pallet_scheduler.34/// Weight functions needed for pallet_unique_scheduler.
48pub trait WeightInfo {35pub trait WeightInfo {
49 fn on_initialize_periodic_named_resolved(s: u32, ) -> Weight;36 fn on_initialize_periodic_named_resolved(s: u32, ) -> Weight;
50 fn on_initialize_named_resolved(s: u32, ) -> Weight;37 fn on_initialize_named_resolved(s: u32, ) -> Weight;
38 fn on_initialize_periodic(s: u32, ) -> Weight;
51 fn on_initialize_periodic_resolved(s: u32, ) -> Weight;39 fn on_initialize_periodic_resolved(s: u32, ) -> Weight;
52 fn on_initialize_resolved(s: u32, ) -> Weight;
53 fn on_initialize_named_aborted(s: u32, ) -> Weight;
54 fn on_initialize_aborted(s: u32, ) -> Weight;40 fn on_initialize_aborted(s: u32, ) -> Weight;
55 fn on_initialize_periodic_named(s: u32, ) -> Weight;41 fn on_initialize_named_aborted(s: u32, ) -> Weight;
56 fn on_initialize_periodic(s: u32, ) -> Weight;
57 fn on_initialize_named(s: u32, ) -> Weight;42 fn on_initialize_named(s: u32, ) -> Weight;
58 fn on_initialize(s: u32, ) -> Weight;43 fn on_initialize(s: u32, ) -> Weight;
59 fn schedule(s: u32, ) -> Weight;44 fn on_initialize_resolved(s: u32, ) -> Weight;
60 fn cancel(s: u32, ) -> Weight;
61 fn schedule_named(s: u32, ) -> Weight;45 fn schedule_named(s: u32, ) -> Weight;
62 fn cancel_named(s: u32, ) -> Weight;46 fn cancel_named(s: u32, ) -> Weight;
63}47}
6448
65/// Weights for pallet_scheduler using the Substrate node and recommended hardware.49/// Weights for pallet_unique_scheduler using the Substrate node and recommended hardware.
66pub struct SubstrateWeight<T>(PhantomData<T>);50pub struct SubstrateWeight<T>(PhantomData<T>);
67impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {51impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
68 // Storage: Scheduler Agenda (r:2 w:2)52 // Storage: Scheduler Agenda (r:2 w:2)
69 // Storage: Preimage PreimageFor (r:1 w:1)53 // Storage: System Account (r:1 w:1)
70 // Storage: Preimage StatusFor (r:1 w:1)54 // Storage: System AllExtrinsicsLen (r:1 w:1)
55 // Storage: System BlockWeight (r:1 w:1)
71 // Storage: Scheduler Lookup (r:0 w:1)56 // Storage: Scheduler Lookup (r:0 w:1)
72 fn on_initialize_periodic_named_resolved(s: u32, ) -> Weight {57 fn on_initialize_periodic_named_resolved(s: u32, ) -> Weight {
73 (11_587_000 as Weight)58 (27_374_000 as Weight)
74 // Standard Error: 17_00059 // Standard Error: 7_000
75 .saturating_add((17_428_000 as Weight).saturating_mul(s as Weight))60 .saturating_add((9_673_000 as Weight).saturating_mul(s as Weight))
76 .saturating_add(T::DbWeight::get().reads(1 as Weight))61 .saturating_add(T::DbWeight::get().reads(4 as Weight))
77 .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(s as Weight)))62 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))
78 .saturating_add(T::DbWeight::get().writes(1 as Weight))63 .saturating_add(T::DbWeight::get().writes(4 as Weight))
79 .saturating_add(T::DbWeight::get().writes((4 as Weight).saturating_mul(s as Weight)))64 .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))
80 }65 }
81 // Storage: Scheduler Agenda (r:1 w:1)66 // Storage: Scheduler Agenda (r:1 w:1)
82 // Storage: Preimage PreimageFor (r:1 w:1)67 // Storage: System Account (r:1 w:1)
83 // Storage: Preimage StatusFor (r:1 w:1)68 // Storage: System AllExtrinsicsLen (r:1 w:1)
69 // Storage: System BlockWeight (r:1 w:1)
84 // Storage: Scheduler Lookup (r:0 w:1)70 // Storage: Scheduler Lookup (r:0 w:1)
85 fn on_initialize_named_resolved(s: u32, ) -> Weight {71 fn on_initialize_named_resolved(s: u32, ) -> Weight {
86 (8_965_000 as Weight)72 (25_967_000 as Weight)
87 // Standard Error: 11_00073 // Standard Error: 6_000
88 .saturating_add((13_410_000 as Weight).saturating_mul(s as Weight))74 .saturating_add((5_916_000 as Weight).saturating_mul(s as Weight))
89 .saturating_add(T::DbWeight::get().reads(1 as Weight))75 .saturating_add(T::DbWeight::get().reads(4 as Weight))
90 .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(s as Weight)))76 .saturating_add(T::DbWeight::get().writes(4 as Weight))
91 .saturating_add(T::DbWeight::get().writes(1 as Weight))
92 .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(s as Weight)))77 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
93 }78 }
94 // Storage: Scheduler Agenda (r:2 w:2)79 // Storage: Scheduler Agenda (r:2 w:2)
95 // Storage: Preimage PreimageFor (r:1 w:1)80 // Storage: System Account (r:1 w:1)
96 // Storage: Preimage StatusFor (r:1 w:1)81 // Storage: System AllExtrinsicsLen (r:1 w:1)
97 fn on_initialize_periodic_resolved(s: u32, ) -> Weight {82 // Storage: System BlockWeight (r:1 w:1)
98 (8_654_000 as Weight)
99 // Standard Error: 17_000
100 .saturating_add((14_990_000 as Weight).saturating_mul(s as Weight))
101 .saturating_add(T::DbWeight::get().reads(1 as Weight))
102 .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(s as Weight)))
103 .saturating_add(T::DbWeight::get().writes(1 as Weight))
104 .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(s as Weight)))
105 }
106 // Storage: Scheduler Agenda (r:1 w:1)
107 // Storage: Preimage PreimageFor (r:1 w:1)83 // Storage: Scheduler Lookup (r:0 w:1)
108 // Storage: Preimage StatusFor (r:1 w:1)84 fn on_initialize_periodic(s: u32, ) -> Weight {
109 fn on_initialize_resolved(s: u32, ) -> Weight {
110 (9_303_000 as Weight)85 (27_097_000 as Weight)
111 // Standard Error: 10_00086 // Standard Error: 5_000
112 .saturating_add((12_244_000 as Weight).saturating_mul(s as Weight))87 .saturating_add((9_652_000 as Weight).saturating_mul(s as Weight))
113 .saturating_add(T::DbWeight::get().reads(1 as Weight))88 .saturating_add(T::DbWeight::get().reads(4 as Weight))
114 .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(s as Weight)))89 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))
115 .saturating_add(T::DbWeight::get().writes(1 as Weight))90 .saturating_add(T::DbWeight::get().writes(4 as Weight))
116 .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))91 .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))
117 }92 }
118 // Storage: Scheduler Agenda (r:2 w:2)93 // Storage: Scheduler Agenda (r:2 w:2)
119 // Storage: Preimage PreimageFor (r:1 w:0)94 // Storage: System Account (r:1 w:1)
95 // Storage: System AllExtrinsicsLen (r:1 w:1)
96 // Storage: System BlockWeight (r:1 w:1)
120 // Storage: Scheduler Lookup (r:0 w:1)97 // Storage: Scheduler Lookup (r:0 w:1)
121 fn on_initialize_named_aborted(s: u32, ) -> Weight {98 fn on_initialize_periodic_resolved(s: u32, ) -> Weight {
122 (7_506_000 as Weight)99 (43_116_000 as Weight)
123 // Standard Error: 3_000100 // Standard Error: 18_000
124 .saturating_add((5_208_000 as Weight).saturating_mul(s as Weight))101 .saturating_add((8_352_000 as Weight).saturating_mul(s as Weight))
125 .saturating_add(T::DbWeight::get().reads(2 as Weight))102 .saturating_add(T::DbWeight::get().reads(4 as Weight))
126 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))103 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))
127 .saturating_add(T::DbWeight::get().writes(2 as Weight))104 .saturating_add(T::DbWeight::get().writes(4 as Weight))
128 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))105 .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))
129 }106 }
130 // Storage: Scheduler Agenda (r:2 w:2)107 // Storage: Scheduler Agenda (r:2 w:2)
131 // Storage: Preimage PreimageFor (r:1 w:0)108 // Storage: Scheduler Lookup (r:0 w:1)
132 fn on_initialize_aborted(s: u32, ) -> Weight {109 fn on_initialize_aborted(s: u32, ) -> Weight {
133 (8_046_000 as Weight)110 (4_921_000 as Weight)
134 // Standard Error: 3_000111 // Standard Error: 4_000
135 .saturating_add((2_914_000 as Weight).saturating_mul(s as Weight))112 .saturating_add((2_249_000 as Weight).saturating_mul(s as Weight))
136 .saturating_add(T::DbWeight::get().reads(2 as Weight))113 .saturating_add(T::DbWeight::get().reads(2 as Weight))
137 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))
138 .saturating_add(T::DbWeight::get().writes(2 as Weight))114 .saturating_add(T::DbWeight::get().writes(2 as Weight))
115 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
139 }116 }
140 // Storage: Scheduler Agenda (r:2 w:2)117 // Storage: Scheduler Agenda (r:1 w:1)
118 // Storage: System Account (r:1 w:1)
119 // Storage: System AllExtrinsicsLen (r:1 w:1)
120 // Storage: System BlockWeight (r:1 w:1)
141 // Storage: Scheduler Lookup (r:0 w:1)121 // Storage: Scheduler Lookup (r:0 w:1)
142 fn on_initialize_periodic_named(s: u32, ) -> Weight {122 fn on_initialize_named_aborted(s: u32, ) -> Weight {
143 (13_704_000 as Weight)123 (26_934_000 as Weight)
144 // Standard Error: 4_000124 // Standard Error: 7_000
145 .saturating_add((8_186_000 as Weight).saturating_mul(s as Weight))125 .saturating_add((5_819_000 as Weight).saturating_mul(s as Weight))
146 .saturating_add(T::DbWeight::get().reads(1 as Weight))126 .saturating_add(T::DbWeight::get().reads(4 as Weight))
147 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))127 .saturating_add(T::DbWeight::get().writes(4 as Weight))
148 .saturating_add(T::DbWeight::get().writes(1 as Weight))
149 .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))
150 }
151 // Storage: Scheduler Agenda (r:2 w:2)
152 fn on_initialize_periodic(s: u32, ) -> Weight {
153 (12_668_000 as Weight)
154 // Standard Error: 5_000
155 .saturating_add((5_868_000 as Weight).saturating_mul(s as Weight))
156 .saturating_add(T::DbWeight::get().reads(1 as Weight))
157 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))
158 .saturating_add(T::DbWeight::get().writes(1 as Weight))
159 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))128 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
160 }129 }
161 // Storage: Scheduler Agenda (r:1 w:1)130 // Storage: Scheduler Agenda (r:2 w:2)
162 // Storage: Scheduler Lookup (r:0 w:1)131 // Storage: Scheduler Lookup (r:0 w:1)
163 fn on_initialize_named(s: u32, ) -> Weight {132 fn on_initialize_named(s: u32, ) -> Weight {
164 (13_946_000 as Weight)133 (6_423_000 as Weight)
165 // Standard Error: 4_000134 // Standard Error: 1_000
166 .saturating_add((4_367_000 as Weight).saturating_mul(s as Weight))135 .saturating_add((2_141_000 as Weight).saturating_mul(s as Weight))
167 .saturating_add(T::DbWeight::get().reads(1 as Weight))136 .saturating_add(T::DbWeight::get().reads(2 as Weight))
168 .saturating_add(T::DbWeight::get().writes(1 as Weight))137 .saturating_add(T::DbWeight::get().writes(2 as Weight))
169 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))138 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
170 }139 }
171 // Storage: Scheduler Agenda (r:1 w:1)140 // Storage: Scheduler Agenda (r:1 w:1)
141 // Storage: System Account (r:1 w:1)
142 // Storage: System AllExtrinsicsLen (r:1 w:1)
143 // Storage: System BlockWeight (r:1 w:1)
144 // Storage: Scheduler Lookup (r:0 w:1)
172 fn on_initialize(s: u32, ) -> Weight {145 fn on_initialize(s: u32, ) -> Weight {
173 (13_151_000 as Weight)146 (27_586_000 as Weight)
174 // Standard Error: 4_000147 // Standard Error: 11_000
175 .saturating_add((3_455_000 as Weight).saturating_mul(s as Weight))148 .saturating_add((5_264_000 as Weight).saturating_mul(s as Weight))
176 .saturating_add(T::DbWeight::get().reads(1 as Weight))149 .saturating_add(T::DbWeight::get().reads(4 as Weight))
177 .saturating_add(T::DbWeight::get().writes(1 as Weight))150 .saturating_add(T::DbWeight::get().writes(4 as Weight))
151 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
178 }152 }
179 // Storage: Scheduler Agenda (r:1 w:1)153 // Storage: Scheduler Agenda (r:1 w:1)
180 fn schedule(s: u32, ) -> Weight {154 // Storage: System Account (r:1 w:1)
181 (14_040_000 as Weight)
182 // Standard Error: 1_000155 // Storage: System AllExtrinsicsLen (r:1 w:1)
183 .saturating_add((89_000 as Weight).saturating_mul(s as Weight))
184 .saturating_add(T::DbWeight::get().reads(1 as Weight))
185 .saturating_add(T::DbWeight::get().writes(1 as Weight))
186 }
187 // Storage: Scheduler Agenda (r:1 w:1)156 // Storage: System BlockWeight (r:1 w:1)
188 // Storage: Scheduler Lookup (r:0 w:1)157 // Storage: Scheduler Lookup (r:0 w:1)
189 fn cancel(s: u32, ) -> Weight {158 fn on_initialize_resolved(s: u32, ) -> Weight {
190 (14_376_000 as Weight)159 (24_356_000 as Weight)
191 // Standard Error: 1_000160 // Standard Error: 4_000
192 .saturating_add((576_000 as Weight).saturating_mul(s as Weight))161 .saturating_add((5_301_000 as Weight).saturating_mul(s as Weight))
193 .saturating_add(T::DbWeight::get().reads(1 as Weight))162 .saturating_add(T::DbWeight::get().reads(4 as Weight))
194 .saturating_add(T::DbWeight::get().writes(2 as Weight))163 .saturating_add(T::DbWeight::get().writes(4 as Weight))
164 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
195 }165 }
196 // Storage: Scheduler Lookup (r:1 w:1)166 // Storage: Scheduler Lookup (r:1 w:1)
197 // Storage: Scheduler Agenda (r:1 w:1)167 // Storage: Scheduler Agenda (r:1 w:1)
198 fn schedule_named(s: u32, ) -> Weight {168 fn schedule_named(s: u32, ) -> Weight {
199 (16_806_000 as Weight)169 (14_871_000 as Weight)
200 // Standard Error: 1_000170 // Standard Error: 1_000
201 .saturating_add((102_000 as Weight).saturating_mul(s as Weight))171 .saturating_add((183_000 as Weight).saturating_mul(s as Weight))
202 .saturating_add(T::DbWeight::get().reads(2 as Weight))172 .saturating_add(T::DbWeight::get().reads(2 as Weight))
203 .saturating_add(T::DbWeight::get().writes(2 as Weight))173 .saturating_add(T::DbWeight::get().writes(2 as Weight))
204 }174 }
205 // Storage: Scheduler Lookup (r:1 w:1)175 // Storage: Scheduler Lookup (r:1 w:1)
206 // Storage: Scheduler Agenda (r:1 w:1)176 // Storage: Scheduler Agenda (r:1 w:1)
207 fn cancel_named(s: u32, ) -> Weight {177 fn cancel_named(s: u32, ) -> Weight {
208 (15_852_000 as Weight)178 (16_676_000 as Weight)
209 // Standard Error: 2_000179 // Standard Error: 1_000
210 .saturating_add((590_000 as Weight).saturating_mul(s as Weight))180 .saturating_add((500_000 as Weight).saturating_mul(s as Weight))
211 .saturating_add(T::DbWeight::get().reads(2 as Weight))181 .saturating_add(T::DbWeight::get().reads(2 as Weight))
212 .saturating_add(T::DbWeight::get().writes(2 as Weight))182 .saturating_add(T::DbWeight::get().writes(2 as Weight))
213 }183 }
216// For backwards compatibility and tests186// For backwards compatibility and tests
217impl WeightInfo for () {187impl WeightInfo for () {
218 // Storage: Scheduler Agenda (r:2 w:2)188 // Storage: Scheduler Agenda (r:2 w:2)
219 // Storage: Preimage PreimageFor (r:1 w:1)189 // Storage: System Account (r:1 w:1)
220 // Storage: Preimage StatusFor (r:1 w:1)190 // Storage: System AllExtrinsicsLen (r:1 w:1)
191 // Storage: System BlockWeight (r:1 w:1)
221 // Storage: Scheduler Lookup (r:0 w:1)192 // Storage: Scheduler Lookup (r:0 w:1)
222 fn on_initialize_periodic_named_resolved(s: u32, ) -> Weight {193 fn on_initialize_periodic_named_resolved(s: u32, ) -> Weight {
223 (11_587_000 as Weight)194 (27_374_000 as Weight)
224 // Standard Error: 17_000195 // Standard Error: 7_000
225 .saturating_add((17_428_000 as Weight).saturating_mul(s as Weight))196 .saturating_add((9_673_000 as Weight).saturating_mul(s as Weight))
226 .saturating_add(RocksDbWeight::get().reads(1 as Weight))197 .saturating_add(RocksDbWeight::get().reads(4 as Weight))
227 .saturating_add(RocksDbWeight::get().reads((3 as Weight).saturating_mul(s as Weight)))198 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))
228 .saturating_add(RocksDbWeight::get().writes(1 as Weight))199 .saturating_add(RocksDbWeight::get().writes(4 as Weight))
229 .saturating_add(RocksDbWeight::get().writes((4 as Weight).saturating_mul(s as Weight)))200 .saturating_add(RocksDbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))
230 }201 }
231 // Storage: Scheduler Agenda (r:1 w:1)202 // Storage: Scheduler Agenda (r:1 w:1)
232 // Storage: Preimage PreimageFor (r:1 w:1)203 // Storage: System Account (r:1 w:1)
233 // Storage: Preimage StatusFor (r:1 w:1)204 // Storage: System AllExtrinsicsLen (r:1 w:1)
205 // Storage: System BlockWeight (r:1 w:1)
234 // Storage: Scheduler Lookup (r:0 w:1)206 // Storage: Scheduler Lookup (r:0 w:1)
235 fn on_initialize_named_resolved(s: u32, ) -> Weight {207 fn on_initialize_named_resolved(s: u32, ) -> Weight {
236 (8_965_000 as Weight)208 (25_967_000 as Weight)
237 // Standard Error: 11_000209 // Standard Error: 6_000
238 .saturating_add((13_410_000 as Weight).saturating_mul(s as Weight))210 .saturating_add((5_916_000 as Weight).saturating_mul(s as Weight))
239 .saturating_add(RocksDbWeight::get().reads(1 as Weight))211 .saturating_add(RocksDbWeight::get().reads(4 as Weight))
240 .saturating_add(RocksDbWeight::get().reads((2 as Weight).saturating_mul(s as Weight)))212 .saturating_add(RocksDbWeight::get().writes(4 as Weight))
241 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
242 .saturating_add(RocksDbWeight::get().writes((3 as Weight).saturating_mul(s as Weight)))213 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
243 }214 }
244 // Storage: Scheduler Agenda (r:2 w:2)215 // Storage: Scheduler Agenda (r:2 w:2)
245 // Storage: Preimage PreimageFor (r:1 w:1)216 // Storage: System Account (r:1 w:1)
246 // Storage: Preimage StatusFor (r:1 w:1)217 // Storage: System AllExtrinsicsLen (r:1 w:1)
247 fn on_initialize_periodic_resolved(s: u32, ) -> Weight {218 // Storage: System BlockWeight (r:1 w:1)
248 (8_654_000 as Weight)
249 // Standard Error: 17_000
250 .saturating_add((14_990_000 as Weight).saturating_mul(s as Weight))
251 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
252 .saturating_add(RocksDbWeight::get().reads((3 as Weight).saturating_mul(s as Weight)))
253 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
254 .saturating_add(RocksDbWeight::get().writes((3 as Weight).saturating_mul(s as Weight)))
255 }
256 // Storage: Scheduler Agenda (r:1 w:1)
257 // Storage: Preimage PreimageFor (r:1 w:1)219 // Storage: Scheduler Lookup (r:0 w:1)
258 // Storage: Preimage StatusFor (r:1 w:1)220 fn on_initialize_periodic(s: u32, ) -> Weight {
259 fn on_initialize_resolved(s: u32, ) -> Weight {
260 (9_303_000 as Weight)221 (27_097_000 as Weight)
261 // Standard Error: 10_000222 // Standard Error: 5_000
262 .saturating_add((12_244_000 as Weight).saturating_mul(s as Weight))223 .saturating_add((9_652_000 as Weight).saturating_mul(s as Weight))
263 .saturating_add(RocksDbWeight::get().reads(1 as Weight))224 .saturating_add(RocksDbWeight::get().reads(4 as Weight))
264 .saturating_add(RocksDbWeight::get().reads((2 as Weight).saturating_mul(s as Weight)))225 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))
265 .saturating_add(RocksDbWeight::get().writes(1 as Weight))226 .saturating_add(RocksDbWeight::get().writes(4 as Weight))
266 .saturating_add(RocksDbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))227 .saturating_add(RocksDbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))
267 }228 }
268 // Storage: Scheduler Agenda (r:2 w:2)229 // Storage: Scheduler Agenda (r:2 w:2)
269 // Storage: Preimage PreimageFor (r:1 w:0)230 // Storage: System Account (r:1 w:1)
231 // Storage: System AllExtrinsicsLen (r:1 w:1)
232 // Storage: System BlockWeight (r:1 w:1)
270 // Storage: Scheduler Lookup (r:0 w:1)233 // Storage: Scheduler Lookup (r:0 w:1)
271 fn on_initialize_named_aborted(s: u32, ) -> Weight {234 fn on_initialize_periodic_resolved(s: u32, ) -> Weight {
272 (7_506_000 as Weight)235 (43_116_000 as Weight)
273 // Standard Error: 3_000236 // Standard Error: 18_000
274 .saturating_add((5_208_000 as Weight).saturating_mul(s as Weight))237 .saturating_add((8_352_000 as Weight).saturating_mul(s as Weight))
275 .saturating_add(RocksDbWeight::get().reads(2 as Weight))238 .saturating_add(RocksDbWeight::get().reads(4 as Weight))
276 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))239 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))
277 .saturating_add(RocksDbWeight::get().writes(2 as Weight))240 .saturating_add(RocksDbWeight::get().writes(4 as Weight))
278 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))241 .saturating_add(RocksDbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))
279 }242 }
280 // Storage: Scheduler Agenda (r:2 w:2)243 // Storage: Scheduler Agenda (r:2 w:2)
281 // Storage: Preimage PreimageFor (r:1 w:0)244 // Storage: Scheduler Lookup (r:0 w:1)
282 fn on_initialize_aborted(s: u32, ) -> Weight {245 fn on_initialize_aborted(s: u32, ) -> Weight {
283 (8_046_000 as Weight)246 (4_921_000 as Weight)
284 // Standard Error: 3_000247 // Standard Error: 4_000
285 .saturating_add((2_914_000 as Weight).saturating_mul(s as Weight))248 .saturating_add((2_249_000 as Weight).saturating_mul(s as Weight))
286 .saturating_add(RocksDbWeight::get().reads(2 as Weight))249 .saturating_add(RocksDbWeight::get().reads(2 as Weight))
287 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))
288 .saturating_add(RocksDbWeight::get().writes(2 as Weight))250 .saturating_add(RocksDbWeight::get().writes(2 as Weight))
251 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
289 }252 }
290 // Storage: Scheduler Agenda (r:2 w:2)253 // Storage: Scheduler Agenda (r:1 w:1)
254 // Storage: System Account (r:1 w:1)
255 // Storage: System AllExtrinsicsLen (r:1 w:1)
256 // Storage: System BlockWeight (r:1 w:1)
291 // Storage: Scheduler Lookup (r:0 w:1)257 // Storage: Scheduler Lookup (r:0 w:1)
292 fn on_initialize_periodic_named(s: u32, ) -> Weight {258 fn on_initialize_named_aborted(s: u32, ) -> Weight {
293 (13_704_000 as Weight)259 (26_934_000 as Weight)
294 // Standard Error: 4_000260 // Standard Error: 7_000
295 .saturating_add((8_186_000 as Weight).saturating_mul(s as Weight))261 .saturating_add((5_819_000 as Weight).saturating_mul(s as Weight))
296 .saturating_add(RocksDbWeight::get().reads(1 as Weight))262 .saturating_add(RocksDbWeight::get().reads(4 as Weight))
297 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))263 .saturating_add(RocksDbWeight::get().writes(4 as Weight))
298 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
299 .saturating_add(RocksDbWeight::get().writes((2 as Weight).saturating_mul(s as Weight)))
300 }
301 // Storage: Scheduler Agenda (r:2 w:2)
302 fn on_initialize_periodic(s: u32, ) -> Weight {
303 (12_668_000 as Weight)
304 // Standard Error: 5_000
305 .saturating_add((5_868_000 as Weight).saturating_mul(s as Weight))
306 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
307 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(s as Weight)))
308 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
309 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))264 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
310 }265 }
311 // Storage: Scheduler Agenda (r:1 w:1)266 // Storage: Scheduler Agenda (r:2 w:2)
312 // Storage: Scheduler Lookup (r:0 w:1)267 // Storage: Scheduler Lookup (r:0 w:1)
313 fn on_initialize_named(s: u32, ) -> Weight {268 fn on_initialize_named(s: u32, ) -> Weight {
314 (13_946_000 as Weight)269 (6_423_000 as Weight)
315 // Standard Error: 4_000270 // Standard Error: 1_000
316 .saturating_add((4_367_000 as Weight).saturating_mul(s as Weight))271 .saturating_add((2_141_000 as Weight).saturating_mul(s as Weight))
317 .saturating_add(RocksDbWeight::get().reads(1 as Weight))272 .saturating_add(RocksDbWeight::get().reads(2 as Weight))
318 .saturating_add(RocksDbWeight::get().writes(1 as Weight))273 .saturating_add(RocksDbWeight::get().writes(2 as Weight))
319 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))274 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
320 }275 }
321 // Storage: Scheduler Agenda (r:1 w:1)276 // Storage: Scheduler Agenda (r:1 w:1)
277 // Storage: System Account (r:1 w:1)
278 // Storage: System AllExtrinsicsLen (r:1 w:1)
279 // Storage: System BlockWeight (r:1 w:1)
280 // Storage: Scheduler Lookup (r:0 w:1)
322 fn on_initialize(s: u32, ) -> Weight {281 fn on_initialize(s: u32, ) -> Weight {
323 (13_151_000 as Weight)282 (27_586_000 as Weight)
324 // Standard Error: 4_000283 // Standard Error: 11_000
325 .saturating_add((3_455_000 as Weight).saturating_mul(s as Weight))284 .saturating_add((5_264_000 as Weight).saturating_mul(s as Weight))
326 .saturating_add(RocksDbWeight::get().reads(1 as Weight))285 .saturating_add(RocksDbWeight::get().reads(4 as Weight))
327 .saturating_add(RocksDbWeight::get().writes(1 as Weight))286 .saturating_add(RocksDbWeight::get().writes(4 as Weight))
287 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
328 }288 }
329 // Storage: Scheduler Agenda (r:1 w:1)289 // Storage: Scheduler Agenda (r:1 w:1)
330 fn schedule(s: u32, ) -> Weight {290 // Storage: System Account (r:1 w:1)
331 (14_040_000 as Weight)
332 // Standard Error: 1_000291 // Storage: System AllExtrinsicsLen (r:1 w:1)
333 .saturating_add((89_000 as Weight).saturating_mul(s as Weight))
334 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
335 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
336 }
337 // Storage: Scheduler Agenda (r:1 w:1)292 // Storage: System BlockWeight (r:1 w:1)
338 // Storage: Scheduler Lookup (r:0 w:1)293 // Storage: Scheduler Lookup (r:0 w:1)
339 fn cancel(s: u32, ) -> Weight {294 fn on_initialize_resolved(s: u32, ) -> Weight {
340 (14_376_000 as Weight)295 (24_356_000 as Weight)
341 // Standard Error: 1_000296 // Standard Error: 4_000
342 .saturating_add((576_000 as Weight).saturating_mul(s as Weight))297 .saturating_add((5_301_000 as Weight).saturating_mul(s as Weight))
343 .saturating_add(RocksDbWeight::get().reads(1 as Weight))298 .saturating_add(RocksDbWeight::get().reads(4 as Weight))
344 .saturating_add(RocksDbWeight::get().writes(2 as Weight))299 .saturating_add(RocksDbWeight::get().writes(4 as Weight))
300 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
345 }301 }
346 // Storage: Scheduler Lookup (r:1 w:1)302 // Storage: Scheduler Lookup (r:1 w:1)
347 // Storage: Scheduler Agenda (r:1 w:1)303 // Storage: Scheduler Agenda (r:1 w:1)
348 fn schedule_named(s: u32, ) -> Weight {304 fn schedule_named(s: u32, ) -> Weight {
349 (16_806_000 as Weight)305 (14_871_000 as Weight)
350 // Standard Error: 1_000306 // Standard Error: 1_000
351 .saturating_add((102_000 as Weight).saturating_mul(s as Weight))307 .saturating_add((183_000 as Weight).saturating_mul(s as Weight))
352 .saturating_add(RocksDbWeight::get().reads(2 as Weight))308 .saturating_add(RocksDbWeight::get().reads(2 as Weight))
353 .saturating_add(RocksDbWeight::get().writes(2 as Weight))309 .saturating_add(RocksDbWeight::get().writes(2 as Weight))
354 }310 }
355 // Storage: Scheduler Lookup (r:1 w:1)311 // Storage: Scheduler Lookup (r:1 w:1)
356 // Storage: Scheduler Agenda (r:1 w:1)312 // Storage: Scheduler Agenda (r:1 w:1)
357 fn cancel_named(s: u32, ) -> Weight {313 fn cancel_named(s: u32, ) -> Weight {
358 (15_852_000 as Weight)314 (16_676_000 as Weight)
359 // Standard Error: 2_000315 // Standard Error: 1_000
360 .saturating_add((590_000 as Weight).saturating_mul(s as Weight))316 .saturating_add((500_000 as Weight).saturating_mul(s as Weight))
361 .saturating_add(RocksDbWeight::get().reads(2 as Weight))317 .saturating_add(RocksDbWeight::get().reads(2 as Weight))
362 .saturating_add(RocksDbWeight::get().writes(2 as Weight))318 .saturating_add(RocksDbWeight::get().writes(2 as Weight))
363 }319 }
modifiedpallets/structure/src/weights.rsdiffbeforeafterboth
3//! Autogenerated weights for pallet_structure3//! Autogenerated weights for pallet_structure
4//!4//!
5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
6//! DATE: 2022-03-24, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`6//! DATE: 2022-06-15, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`
7//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 10247//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
88
9// Executed Command:9// Executed Command:
10// target/release/unique-collator10// target/release/unique-collator
11// benchmark11// benchmark
12// pallet
12// --pallet13// --pallet
13// pallet-structure14// pallet-structure
14// --wasm-execution15// --wasm-execution
41 // Storage: Common CollectionById (r:1 w:0)42 // Storage: Common CollectionById (r:1 w:0)
42 // Storage: Nonfungible TokenData (r:1 w:0)43 // Storage: Nonfungible TokenData (r:1 w:0)
43 fn find_parent() -> Weight {44 fn find_parent() -> Weight {
44 (6_302_000 as Weight)45 (7_013_000 as Weight)
45 .saturating_add(T::DbWeight::get().reads(2 as Weight))46 .saturating_add(T::DbWeight::get().reads(2 as Weight))
46 }47 }
47}48}
51 // Storage: Common CollectionById (r:1 w:0)52 // Storage: Common CollectionById (r:1 w:0)
52 // Storage: Nonfungible TokenData (r:1 w:0)53 // Storage: Nonfungible TokenData (r:1 w:0)
53 fn find_parent() -> Weight {54 fn find_parent() -> Weight {
54 (6_302_000 as Weight)55 (7_013_000 as Weight)
55 .saturating_add(RocksDbWeight::get().reads(2 as Weight))56 .saturating_add(RocksDbWeight::get().reads(2 as Weight))
56 }57 }
57}58}
modifiedpallets/unique/src/lib.rsdiffbeforeafterboth
491 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);491 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
492492
493 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;493 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
494 target_collection.check_is_owner(&sender)?;494 target_collection.check_is_owner_or_admin(&sender)?;
495 target_collection.check_is_internal()?;495 target_collection.check_is_internal()?;
496496
497 target_collection.set_sponsor(new_sponsor.clone())?;497 target_collection.set_sponsor(new_sponsor.clone())?;
670 dispatch_tx::<T, _>(collection_id, |d| d.delete_token_properties(sender, token_id, property_keys))670 dispatch_tx::<T, _>(collection_id, |d| d.delete_token_properties(sender, token_id, property_keys))
671 }671 }
672672
673 #[weight = T::CommonWeightInfo::set_property_permissions(property_permissions.len() as u32)]673 #[weight = T::CommonWeightInfo::set_token_property_permissions(property_permissions.len() as u32)]
674 #[transactional]674 #[transactional]
675 pub fn set_property_permissions(675 pub fn set_token_property_permissions(
676 origin,676 origin,
677 collection_id: CollectionId,677 collection_id: CollectionId,
678 property_permissions: Vec<PropertyKeyPermission>,678 property_permissions: Vec<PropertyKeyPermission>,
681681
682 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);682 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
683683
684 dispatch_tx::<T, _>(collection_id, |d| d.set_property_permissions(&sender, property_permissions))684 dispatch_tx::<T, _>(collection_id, |d| d.set_token_property_permissions(&sender, property_permissions))
685 }685 }
686686
687 #[weight = T::CommonWeightInfo::create_multiple_items_ex(&data)]687 #[weight = T::CommonWeightInfo::create_multiple_items_ex(&data)]
865 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);865 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
866 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;866 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
867 target_collection.check_is_internal()?;867 target_collection.check_is_internal()?;
868 target_collection.check_is_owner(&sender)?;868 target_collection.check_is_owner_or_admin(&sender)?;
869 let old_limit = &target_collection.limits;869 let old_limit = &target_collection.limits;
870870
871 target_collection.limits = <PalletCommon<T>>::clamp_limits(target_collection.mode.clone(), &old_limit, new_limit)?;871 target_collection.limits = <PalletCommon<T>>::clamp_limits(target_collection.mode.clone(), &old_limit, new_limit)?;
887 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);887 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
888 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;888 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
889 target_collection.check_is_internal()?;889 target_collection.check_is_internal()?;
890 target_collection.check_is_owner(&sender)?;890 target_collection.check_is_owner_or_admin(&sender)?;
891 let old_limit = &target_collection.permissions;891 let old_limit = &target_collection.permissions;
892892
893 target_collection.permissions = <PalletCommon<T>>::clamp_permissions(target_collection.mode.clone(), &old_limit, new_limit)?;893 target_collection.permissions = <PalletCommon<T>>::clamp_permissions(target_collection.mode.clone(), &old_limit, new_limit)?;
modifiedpallets/unique/src/weights.rsdiffbeforeafterboth
3//! Autogenerated weights for pallet_unique3//! Autogenerated weights for pallet_unique
4//!4//!
5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
6//! DATE: 2022-03-01, STEPS: `50`, REPEAT: 200, LOW RANGE: `[]`, HIGH RANGE: `[]`6//! DATE: 2022-06-15, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`
7//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 10247//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
88
9// Executed Command:9// Executed Command:
10// target/release/unique-collator10// target/release/unique-collator
11// benchmark11// benchmark
12// pallet
12// --pallet13// --pallet
13// pallet-unique14// pallet-unique
14// --wasm-execution15// --wasm-execution
18// --template19// --template
19// .maintain/frame-weight-template.hbs20// .maintain/frame-weight-template.hbs
20// --steps=5021// --steps=50
21// --repeat=20022// --repeat=80
22// --heap-pages=409623// --heap-pages=4096
23// --output=./pallets/unique/src/weights.rs24// --output=./pallets/unique/src/weights.rs
2425
36 fn destroy_collection() -> Weight;37 fn destroy_collection() -> Weight;
37 fn add_to_allow_list() -> Weight;38 fn add_to_allow_list() -> Weight;
38 fn remove_from_allow_list() -> Weight;39 fn remove_from_allow_list() -> Weight;
39 fn set_public_access_mode() -> Weight;
40 fn set_mint_permission() -> Weight;
41 fn change_collection_owner() -> Weight;40 fn change_collection_owner() -> Weight;
42 fn add_collection_admin() -> Weight;41 fn add_collection_admin() -> Weight;
43 fn remove_collection_admin() -> Weight;42 fn remove_collection_admin() -> Weight;
44 fn set_collection_sponsor() -> Weight;43 fn set_collection_sponsor() -> Weight;
45 fn confirm_sponsorship() -> Weight;44 fn confirm_sponsorship() -> Weight;
46 fn remove_collection_sponsor() -> Weight;45 fn remove_collection_sponsor() -> Weight;
47 fn set_transfers_enabled_flag() -> Weight;46 fn set_transfers_enabled_flag() -> Weight;
48 fn set_offchain_schema(b: u32, ) -> Weight;
49 fn set_const_on_chain_schema(b: u32, ) -> Weight;
50 fn set_schema_version() -> Weight;
51 fn set_collection_limits() -> Weight;47 fn set_collection_limits() -> Weight;
52}48}
5349
57 // Storage: Common CreatedCollectionCount (r:1 w:1)53 // Storage: Common CreatedCollectionCount (r:1 w:1)
58 // Storage: Common DestroyedCollectionCount (r:1 w:0)54 // Storage: Common DestroyedCollectionCount (r:1 w:0)
59 // Storage: System Account (r:2 w:2)55 // Storage: System Account (r:2 w:2)
56 // Storage: Common CollectionPropertyPermissions (r:0 w:1)
57 // Storage: Common CollectionProperties (r:0 w:1)
60 // Storage: Common CollectionById (r:0 w:1)58 // Storage: Common CollectionById (r:0 w:1)
61 fn create_collection() -> Weight {59 fn create_collection() -> Weight {
62 (28_929_000 as Weight)60 (39_427_000 as Weight)
63 .saturating_add(T::DbWeight::get().reads(4 as Weight))61 .saturating_add(T::DbWeight::get().reads(4 as Weight))
64 .saturating_add(T::DbWeight::get().writes(4 as Weight))62 .saturating_add(T::DbWeight::get().writes(6 as Weight))
65 }63 }
66 // Storage: Common CollectionById (r:1 w:1)64 // Storage: Common CollectionById (r:1 w:1)
65 // Storage: Nonfungible TokenData (r:1 w:0)
67 // Storage: Common DestroyedCollectionCount (r:1 w:1)66 // Storage: Common DestroyedCollectionCount (r:1 w:1)
68 // Storage: Nonfungible TokensMinted (r:0 w:1)67 // Storage: Nonfungible TokensMinted (r:0 w:1)
69 // Storage: Nonfungible TokensBurnt (r:0 w:1)68 // Storage: Nonfungible TokensBurnt (r:0 w:1)
70 // Storage: Common AdminAmount (r:0 w:1)69 // Storage: Common AdminAmount (r:0 w:1)
70 // Storage: Common CollectionProperties (r:0 w:1)
71 fn destroy_collection() -> Weight {71 fn destroy_collection() -> Weight {
72 (40_303_000 as Weight)72 (48_339_000 as Weight)
73 .saturating_add(T::DbWeight::get().reads(2 as Weight))73 .saturating_add(T::DbWeight::get().reads(3 as Weight))
74 .saturating_add(T::DbWeight::get().writes(5 as Weight))74 .saturating_add(T::DbWeight::get().writes(6 as Weight))
75 }75 }
76 // Storage: Common CollectionById (r:1 w:0)76 // Storage: Common CollectionById (r:1 w:0)
77 // Storage: Common Allowlist (r:0 w:1)77 // Storage: Common Allowlist (r:0 w:1)
78 fn add_to_allow_list() -> Weight {78 fn add_to_allow_list() -> Weight {
79 (15_989_000 as Weight)79 (17_379_000 as Weight)
80 .saturating_add(T::DbWeight::get().reads(1 as Weight))80 .saturating_add(T::DbWeight::get().reads(1 as Weight))
81 .saturating_add(T::DbWeight::get().writes(1 as Weight))81 .saturating_add(T::DbWeight::get().writes(1 as Weight))
82 }82 }
83 // Storage: Common CollectionById (r:1 w:0)83 // Storage: Common CollectionById (r:1 w:0)
84 // Storage: Common Allowlist (r:0 w:1)84 // Storage: Common Allowlist (r:0 w:1)
85 fn remove_from_allow_list() -> Weight {85 fn remove_from_allow_list() -> Weight {
86 (15_582_000 as Weight)86 (17_490_000 as Weight)
87 .saturating_add(T::DbWeight::get().reads(1 as Weight))87 .saturating_add(T::DbWeight::get().reads(1 as Weight))
88 .saturating_add(T::DbWeight::get().writes(1 as Weight))88 .saturating_add(T::DbWeight::get().writes(1 as Weight))
89 }89 }
90 // Storage: Common CollectionById (r:1 w:1)
91 fn set_public_access_mode() -> Weight {
92 (14_846_000 as Weight)
93 .saturating_add(T::DbWeight::get().reads(1 as Weight))
94 .saturating_add(T::DbWeight::get().writes(1 as Weight))
95 }
96 // Storage: Common CollectionById (r:1 w:1)
97 fn set_mint_permission() -> Weight {
98 (14_534_000 as Weight)
99 .saturating_add(T::DbWeight::get().reads(1 as Weight))
100 .saturating_add(T::DbWeight::get().writes(1 as Weight))
101 }
102 // Storage: Common CollectionById (r:1 w:1)90 // Storage: Common CollectionById (r:1 w:1)
103 fn change_collection_owner() -> Weight {91 fn change_collection_owner() -> Weight {
104 (14_990_000 as Weight)92 (17_701_000 as Weight)
105 .saturating_add(T::DbWeight::get().reads(1 as Weight))93 .saturating_add(T::DbWeight::get().reads(1 as Weight))
106 .saturating_add(T::DbWeight::get().writes(1 as Weight))94 .saturating_add(T::DbWeight::get().writes(1 as Weight))
107 }95 }
108 // Storage: Common CollectionById (r:1 w:0)96 // Storage: Common CollectionById (r:1 w:0)
109 // Storage: Common IsAdmin (r:1 w:1)97 // Storage: Common IsAdmin (r:1 w:1)
110 // Storage: Common AdminAmount (r:1 w:1)98 // Storage: Common AdminAmount (r:1 w:1)
111 fn add_collection_admin() -> Weight {99 fn add_collection_admin() -> Weight {
112 (19_957_000 as Weight)100 (23_301_000 as Weight)
113 .saturating_add(T::DbWeight::get().reads(3 as Weight))101 .saturating_add(T::DbWeight::get().reads(3 as Weight))
114 .saturating_add(T::DbWeight::get().writes(2 as Weight))102 .saturating_add(T::DbWeight::get().writes(2 as Weight))
115 }103 }
116 // Storage: Common CollectionById (r:1 w:0)104 // Storage: Common CollectionById (r:1 w:0)
117 // Storage: Common IsAdmin (r:1 w:1)105 // Storage: Common IsAdmin (r:1 w:1)
118 // Storage: Common AdminAmount (r:1 w:1)106 // Storage: Common AdminAmount (r:1 w:1)
119 fn remove_collection_admin() -> Weight {107 fn remove_collection_admin() -> Weight {
120 (21_209_000 as Weight)108 (24_859_000 as Weight)
121 .saturating_add(T::DbWeight::get().reads(3 as Weight))109 .saturating_add(T::DbWeight::get().reads(3 as Weight))
122 .saturating_add(T::DbWeight::get().writes(2 as Weight))110 .saturating_add(T::DbWeight::get().writes(2 as Weight))
123 }111 }
124 // Storage: Common CollectionById (r:1 w:1)112 // Storage: Common CollectionById (r:1 w:1)
125 fn set_collection_sponsor() -> Weight {113 fn set_collection_sponsor() -> Weight {
126 (14_963_000 as Weight)114 (17_795_000 as Weight)
127 .saturating_add(T::DbWeight::get().reads(1 as Weight))115 .saturating_add(T::DbWeight::get().reads(1 as Weight))
128 .saturating_add(T::DbWeight::get().writes(1 as Weight))116 .saturating_add(T::DbWeight::get().writes(1 as Weight))
129 }117 }
130 // Storage: Common CollectionById (r:1 w:1)118 // Storage: Common CollectionById (r:1 w:1)
131 fn confirm_sponsorship() -> Weight {119 fn confirm_sponsorship() -> Weight {
132 (14_478_000 as Weight)120 (17_297_000 as Weight)
133 .saturating_add(T::DbWeight::get().reads(1 as Weight))121 .saturating_add(T::DbWeight::get().reads(1 as Weight))
134 .saturating_add(T::DbWeight::get().writes(1 as Weight))122 .saturating_add(T::DbWeight::get().writes(1 as Weight))
135 }123 }
136 // Storage: Common CollectionById (r:1 w:1)124 // Storage: Common CollectionById (r:1 w:1)
137 fn remove_collection_sponsor() -> Weight {125 fn remove_collection_sponsor() -> Weight {
138 (14_393_000 as Weight)126 (17_079_000 as Weight)
139 .saturating_add(T::DbWeight::get().reads(1 as Weight))127 .saturating_add(T::DbWeight::get().reads(1 as Weight))
140 .saturating_add(T::DbWeight::get().writes(1 as Weight))128 .saturating_add(T::DbWeight::get().writes(1 as Weight))
141 }129 }
142 // Storage: Common CollectionById (r:1 w:1)130 // Storage: Common CollectionById (r:1 w:1)
143 fn set_transfers_enabled_flag() -> Weight {131 fn set_transfers_enabled_flag() -> Weight {
144 (7_309_000 as Weight)132 (9_734_000 as Weight)
145 .saturating_add(T::DbWeight::get().reads(1 as Weight))133 .saturating_add(T::DbWeight::get().reads(1 as Weight))
146 .saturating_add(T::DbWeight::get().writes(1 as Weight))134 .saturating_add(T::DbWeight::get().writes(1 as Weight))
147 }135 }
148 // Storage: Common CollectionById (r:1 w:1)
149 fn set_offchain_schema(_b: u32, ) -> Weight {
150 (15_220_000 as Weight)
151 .saturating_add(T::DbWeight::get().reads(1 as Weight))
152 .saturating_add(T::DbWeight::get().writes(1 as Weight))
153 }
154 // Storage: Common CollectionById (r:1 w:1)
155 fn set_const_on_chain_schema(_b: u32, ) -> Weight {
156 (14_984_000 as Weight)
157 .saturating_add(T::DbWeight::get().reads(1 as Weight))
158 .saturating_add(T::DbWeight::get().writes(1 as Weight))
159 }
160 // Storage: Common CollectionById (r:1 w:1)
161 fn set_schema_version() -> Weight {
162 (14_596_000 as Weight)
163 .saturating_add(T::DbWeight::get().reads(1 as Weight))
164 .saturating_add(T::DbWeight::get().writes(1 as Weight))
165 }
166 // Storage: Common CollectionById (r:1 w:1)136 // Storage: Common CollectionById (r:1 w:1)
167 fn set_collection_limits() -> Weight {137 fn set_collection_limits() -> Weight {
168 (15_339_000 as Weight)138 (17_998_000 as Weight)
169 .saturating_add(T::DbWeight::get().reads(1 as Weight))139 .saturating_add(T::DbWeight::get().reads(1 as Weight))
170 .saturating_add(T::DbWeight::get().writes(1 as Weight))140 .saturating_add(T::DbWeight::get().writes(1 as Weight))
171 }141 }
176 // Storage: Common CreatedCollectionCount (r:1 w:1)146 // Storage: Common CreatedCollectionCount (r:1 w:1)
177 // Storage: Common DestroyedCollectionCount (r:1 w:0)147 // Storage: Common DestroyedCollectionCount (r:1 w:0)
178 // Storage: System Account (r:2 w:2)148 // Storage: System Account (r:2 w:2)
149 // Storage: Common CollectionPropertyPermissions (r:0 w:1)
150 // Storage: Common CollectionProperties (r:0 w:1)
179 // Storage: Common CollectionById (r:0 w:1)151 // Storage: Common CollectionById (r:0 w:1)
180 fn create_collection() -> Weight {152 fn create_collection() -> Weight {
181 (28_929_000 as Weight)153 (39_427_000 as Weight)
182 .saturating_add(RocksDbWeight::get().reads(4 as Weight))154 .saturating_add(RocksDbWeight::get().reads(4 as Weight))
183 .saturating_add(RocksDbWeight::get().writes(4 as Weight))155 .saturating_add(RocksDbWeight::get().writes(6 as Weight))
184 }156 }
185 // Storage: Common CollectionById (r:1 w:1)157 // Storage: Common CollectionById (r:1 w:1)
158 // Storage: Nonfungible TokenData (r:1 w:0)
186 // Storage: Common DestroyedCollectionCount (r:1 w:1)159 // Storage: Common DestroyedCollectionCount (r:1 w:1)
187 // Storage: Nonfungible TokensMinted (r:0 w:1)160 // Storage: Nonfungible TokensMinted (r:0 w:1)
188 // Storage: Nonfungible TokensBurnt (r:0 w:1)161 // Storage: Nonfungible TokensBurnt (r:0 w:1)
189 // Storage: Common AdminAmount (r:0 w:1)162 // Storage: Common AdminAmount (r:0 w:1)
163 // Storage: Common CollectionProperties (r:0 w:1)
190 fn destroy_collection() -> Weight {164 fn destroy_collection() -> Weight {
191 (40_303_000 as Weight)165 (48_339_000 as Weight)
192 .saturating_add(RocksDbWeight::get().reads(2 as Weight))166 .saturating_add(RocksDbWeight::get().reads(3 as Weight))
193 .saturating_add(RocksDbWeight::get().writes(5 as Weight))167 .saturating_add(RocksDbWeight::get().writes(6 as Weight))
194 }168 }
195 // Storage: Common CollectionById (r:1 w:0)169 // Storage: Common CollectionById (r:1 w:0)
196 // Storage: Common Allowlist (r:0 w:1)170 // Storage: Common Allowlist (r:0 w:1)
197 fn add_to_allow_list() -> Weight {171 fn add_to_allow_list() -> Weight {
198 (15_989_000 as Weight)172 (17_379_000 as Weight)
199 .saturating_add(RocksDbWeight::get().reads(1 as Weight))173 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
200 .saturating_add(RocksDbWeight::get().writes(1 as Weight))174 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
201 }175 }
202 // Storage: Common CollectionById (r:1 w:0)176 // Storage: Common CollectionById (r:1 w:0)
203 // Storage: Common Allowlist (r:0 w:1)177 // Storage: Common Allowlist (r:0 w:1)
204 fn remove_from_allow_list() -> Weight {178 fn remove_from_allow_list() -> Weight {
205 (15_582_000 as Weight)179 (17_490_000 as Weight)
206 .saturating_add(RocksDbWeight::get().reads(1 as Weight))180 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
207 .saturating_add(RocksDbWeight::get().writes(1 as Weight))181 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
208 }182 }
209 // Storage: Common CollectionById (r:1 w:1)
210 fn set_public_access_mode() -> Weight {
211 (14_846_000 as Weight)
212 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
213 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
214 }
215 // Storage: Common CollectionById (r:1 w:1)
216 fn set_mint_permission() -> Weight {
217 (14_534_000 as Weight)
218 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
219 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
220 }
221 // Storage: Common CollectionById (r:1 w:1)183 // Storage: Common CollectionById (r:1 w:1)
222 fn change_collection_owner() -> Weight {184 fn change_collection_owner() -> Weight {
223 (14_990_000 as Weight)185 (17_701_000 as Weight)
224 .saturating_add(RocksDbWeight::get().reads(1 as Weight))186 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
225 .saturating_add(RocksDbWeight::get().writes(1 as Weight))187 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
226 }188 }
227 // Storage: Common CollectionById (r:1 w:0)189 // Storage: Common CollectionById (r:1 w:0)
228 // Storage: Common IsAdmin (r:1 w:1)190 // Storage: Common IsAdmin (r:1 w:1)
229 // Storage: Common AdminAmount (r:1 w:1)191 // Storage: Common AdminAmount (r:1 w:1)
230 fn add_collection_admin() -> Weight {192 fn add_collection_admin() -> Weight {
231 (19_957_000 as Weight)193 (23_301_000 as Weight)
232 .saturating_add(RocksDbWeight::get().reads(3 as Weight))194 .saturating_add(RocksDbWeight::get().reads(3 as Weight))
233 .saturating_add(RocksDbWeight::get().writes(2 as Weight))195 .saturating_add(RocksDbWeight::get().writes(2 as Weight))
234 }196 }
235 // Storage: Common CollectionById (r:1 w:0)197 // Storage: Common CollectionById (r:1 w:0)
236 // Storage: Common IsAdmin (r:1 w:1)198 // Storage: Common IsAdmin (r:1 w:1)
237 // Storage: Common AdminAmount (r:1 w:1)199 // Storage: Common AdminAmount (r:1 w:1)
238 fn remove_collection_admin() -> Weight {200 fn remove_collection_admin() -> Weight {
239 (21_209_000 as Weight)201 (24_859_000 as Weight)
240 .saturating_add(RocksDbWeight::get().reads(3 as Weight))202 .saturating_add(RocksDbWeight::get().reads(3 as Weight))
241 .saturating_add(RocksDbWeight::get().writes(2 as Weight))203 .saturating_add(RocksDbWeight::get().writes(2 as Weight))
242 }204 }
243 // Storage: Common CollectionById (r:1 w:1)205 // Storage: Common CollectionById (r:1 w:1)
244 fn set_collection_sponsor() -> Weight {206 fn set_collection_sponsor() -> Weight {
245 (14_963_000 as Weight)207 (17_795_000 as Weight)
246 .saturating_add(RocksDbWeight::get().reads(1 as Weight))208 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
247 .saturating_add(RocksDbWeight::get().writes(1 as Weight))209 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
248 }210 }
249 // Storage: Common CollectionById (r:1 w:1)211 // Storage: Common CollectionById (r:1 w:1)
250 fn confirm_sponsorship() -> Weight {212 fn confirm_sponsorship() -> Weight {
251 (14_478_000 as Weight)213 (17_297_000 as Weight)
252 .saturating_add(RocksDbWeight::get().reads(1 as Weight))214 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
253 .saturating_add(RocksDbWeight::get().writes(1 as Weight))215 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
254 }216 }
255 // Storage: Common CollectionById (r:1 w:1)217 // Storage: Common CollectionById (r:1 w:1)
256 fn remove_collection_sponsor() -> Weight {218 fn remove_collection_sponsor() -> Weight {
257 (14_393_000 as Weight)219 (17_079_000 as Weight)
258 .saturating_add(RocksDbWeight::get().reads(1 as Weight))220 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
259 .saturating_add(RocksDbWeight::get().writes(1 as Weight))221 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
260 }222 }
261 // Storage: Common CollectionById (r:1 w:1)223 // Storage: Common CollectionById (r:1 w:1)
262 fn set_transfers_enabled_flag() -> Weight {224 fn set_transfers_enabled_flag() -> Weight {
263 (7_309_000 as Weight)225 (9_734_000 as Weight)
264 .saturating_add(RocksDbWeight::get().reads(1 as Weight))226 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
265 .saturating_add(RocksDbWeight::get().writes(1 as Weight))227 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
266 }228 }
267 // Storage: Common CollectionById (r:1 w:1)
268 fn set_offchain_schema(_b: u32, ) -> Weight {
269 (15_220_000 as Weight)
270 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
271 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
272 }
273 // Storage: Common CollectionById (r:1 w:1)
274 fn set_const_on_chain_schema(_b: u32, ) -> Weight {
275 (14_984_000 as Weight)
276 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
277 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
278 }
279 // Storage: Common CollectionById (r:1 w:1)
280 fn set_schema_version() -> Weight {
281 (14_596_000 as Weight)
282 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
283 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
284 }
285 // Storage: Common CollectionById (r:1 w:1)229 // Storage: Common CollectionById (r:1 w:1)
286 fn set_collection_limits() -> Weight {230 fn set_collection_limits() -> Weight {
287 (15_339_000 as Weight)231 (17_998_000 as Weight)
288 .saturating_add(RocksDbWeight::get().reads(1 as Weight))232 .saturating_add(RocksDbWeight::get().reads(1 as Weight))
289 .saturating_add(RocksDbWeight::get().writes(1 as Weight))233 .saturating_add(RocksDbWeight::get().writes(1 as Weight))
290 }234 }
modifiedprimitives/data-structs/src/lib.rsdiffbeforeafterboth
39// RMRK39// RMRK
40use rmrk_traits::{40use rmrk_traits::{
41 CollectionInfo, NftInfo, ResourceInfo, PropertyInfo, BaseInfo, PartType, Theme, ThemeProperty,41 CollectionInfo, NftInfo, ResourceInfo, PropertyInfo, BaseInfo, PartType, Theme, ThemeProperty,
42 ResourceTypes, BasicResource, ComposableResource, SlotResource,42 ResourceTypes, BasicResource, ComposableResource, SlotResource, EquippableList,
43};43};
44pub use rmrk_traits::{44pub use rmrk_traits::{
45 primitives::{45 primitives::{
46 CollectionId as RmrkCollectionId, NftId as RmrkNftId, BaseId as RmrkBaseId,46 CollectionId as RmrkCollectionId, NftId as RmrkNftId, BaseId as RmrkBaseId,
47 PartId as RmrkPartId, ResourceId as RmrkResourceId,47 SlotId as RmrkSlotId, PartId as RmrkPartId, ResourceId as RmrkResourceId,
48 },48 },
49 NftChild as RmrkNftChild, AccountIdOrCollectionNftTuple as RmrkAccountIdOrCollectionNftTuple,49 NftChild as RmrkNftChild, AccountIdOrCollectionNftTuple as RmrkAccountIdOrCollectionNftTuple,
50 FixedPart as RmrkFixedPart, SlotPart as RmrkSlotPart, EquippableList as RmrkEquippableList,50 FixedPart as RmrkFixedPart, SlotPart as RmrkSlotPart,
51};51};
5252
53mod bounded;53mod bounded;
104pub const MAX_PROPERTY_VALUE_LENGTH: u32 = 32768;104pub const MAX_PROPERTY_VALUE_LENGTH: u32 = 32768;
105pub const MAX_PROPERTIES_PER_ITEM: u32 = 64;105pub const MAX_PROPERTIES_PER_ITEM: u32 = 64;
106106
107pub const MAX_COLLECTION_PROPERTIES_SIZE: u32 = 40960;107pub const MAX_AUX_PROPERTY_VALUE_LENGTH: u32 = 2048;
108
108pub const MAX_TOKEN_PROPERTIES_SIZE: u32 = 32768;109pub const MAX_COLLECTION_PROPERTIES_SIZE: u32 = 40960;
109
110// RMRK constants
111pub const RMRK_STRING_LIMIT: u32 = 128;110pub const MAX_TOKEN_PROPERTIES_SIZE: u32 = 32768;
112pub const RMRK_COLLECTION_SYMBOL_LIMIT: u32 = 100;
113pub const RMRK_RESOURCE_SYMBOL_LIMIT: u32 = 10;
114pub const RMRK_KEY_LIMIT: u32 = 32;
115pub const RMRK_VALUE_LIMIT: u32 = 256;
116111
117/// How much items can be created per single112/// How much items can be created per single
118/// create_many call113/// create_many call
416 .min(MAX_SPONSOR_TIMEOUT)411 .min(MAX_SPONSOR_TIMEOUT)
417 }412 }
418 pub fn owner_can_transfer(&self) -> bool {413 pub fn owner_can_transfer(&self) -> bool {
419 self.owner_can_transfer.unwrap_or(true)414 self.owner_can_transfer.unwrap_or(false)
420 }415 }
416 pub fn owner_can_transfer_instaled(&self) -> bool {
417 self.owner_can_transfer.is_some()
418 }
421 pub fn owner_can_destroy(&self) -> bool {419 pub fn owner_can_destroy(&self) -> bool {
422 self.owner_can_destroy.unwrap_or(true)420 self.owner_can_destroy.unwrap_or(true)
423 }421 }
454 pub fn nesting(&self) -> &NestingPermissions {452 pub fn nesting(&self) -> &NestingPermissions {
455 static DEFAULT: NestingPermissions = NestingPermissions {453 static DEFAULT: NestingPermissions = NestingPermissions {
456 token_owner: false,454 token_owner: false,
457 admin: false,455 collection_admin: false,
458 restricted: None,456 restricted: None,
459457
460 permissive: false,458 permissive: false,
497 /// Owner of token can nest tokens under it495 /// Owner of token can nest tokens under it
498 pub token_owner: bool,496 pub token_owner: bool,
499 /// Admin of token collection can nest tokens under token497 /// Admin of token collection can nest tokens under token
500 pub admin: bool,498 pub collection_admin: bool,
501 /// If set - only tokens from specified collections can be nested499 /// If set - only tokens from specified collections can be nested
502 pub restricted: Option<OwnerRestrictedSet>,500 pub restricted: Option<OwnerRestrictedSet>,
503501
658 }656 }
659}657}
658
659pub type BoundedBytes<S> = BoundedVec<u8, S>;
660
661pub type AuxPropertyValue = BoundedBytes<ConstU32<MAX_AUX_PROPERTY_VALUE_LENGTH>>;
660662
661pub type PropertyKey = BoundedVec<u8, ConstU32<MAX_PROPERTY_KEY_LENGTH>>;663pub type PropertyKey = BoundedBytes<ConstU32<MAX_PROPERTY_KEY_LENGTH>>;
662pub type PropertyValue = BoundedVec<u8, ConstU32<MAX_PROPERTY_VALUE_LENGTH>>;664pub type PropertyValue = BoundedBytes<ConstU32<MAX_PROPERTY_VALUE_LENGTH>>;
663665
664#[derive(Encode, Decode, TypeInfo, Debug, MaxEncodedLen, PartialEq, Clone)]666#[derive(Encode, Decode, TypeInfo, Debug, MaxEncodedLen, PartialEq, Clone)]
665#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]667#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
719 EmptyPropertyKey,721 EmptyPropertyKey,
720}722}
721723
722#[derive(Clone, Copy)]724#[derive(Encode, Decode, MaxEncodedLen, TypeInfo, PartialEq, Clone, Copy)]
723pub enum PropertyScope {725pub enum PropertyScope {
724 None,726 None,
725 Rmrk,727 Rmrk,
812 for byte in key.as_slice().iter() {814 for byte in key.as_slice().iter() {
813 let byte = *byte;815 let byte = *byte;
814816
815 if !byte.is_ascii_alphanumeric() && byte != b'_' && byte != b'-' {817 if !byte.is_ascii_alphanumeric() && byte != b'_' && byte != b'-' && byte != b'.' {
816 return Err(PropertiesError::InvalidCharacterInPropertyKey);818 return Err(PropertiesError::InvalidCharacterInPropertyKey);
817 }819 }
818 }820 }
946 #[derive(PartialEq, TypeInfo)]948 #[derive(PartialEq, TypeInfo)]
947 pub const RmrkStringLimit: u32 = 128;949 pub const RmrkStringLimit: u32 = 128;
948 #[derive(PartialEq)]950 #[derive(PartialEq)]
949 pub const RmrkCollectionSymbolLimit: u32 = 100;951 pub const RmrkCollectionSymbolLimit: u32 = MAX_TOKEN_PREFIX_LENGTH;
950 #[derive(PartialEq)]952 #[derive(PartialEq)]
951 pub const RmrkResourceSymbolLimit: u32 = 10;953 pub const RmrkResourceSymbolLimit: u32 = 10;
952 #[derive(PartialEq)]954 #[derive(PartialEq)]
955 pub const RmrkBaseSymbolLimit: u32 = MAX_TOKEN_PREFIX_LENGTH;
956 #[derive(PartialEq)]
953 pub const RmrkKeyLimit: u32 = 32;957 pub const RmrkKeyLimit: u32 = 32;
954 #[derive(PartialEq)]958 #[derive(PartialEq)]
955 pub const RmrkValueLimit: u32 = 256;959 pub const RmrkValueLimit: u32 = 256;
956 #[derive(PartialEq)]960 #[derive(PartialEq)]
957 pub const RmrkMaxCollectionsEquippablePerPart: u32 = 100;961 pub const RmrkMaxCollectionsEquippablePerPart: u32 = 100;
958 #[derive(PartialEq)]962 #[derive(PartialEq)]
963 pub const MaxPropertiesPerTheme: u32 = 5;
964 #[derive(PartialEq)]
959 pub const RmrkPartsLimit: u32 = 3;965 pub const RmrkPartsLimit: u32 = 25;
960 #[derive(PartialEq)]966 #[derive(PartialEq)]
961 pub const RmrkMaxPriorities: u32 = 3;967 pub const RmrkMaxPriorities: u32 = 25;
968 #[derive(PartialEq)]
969 pub const MaxResourcesOnMint: u32 = 100;
962}970}
963971
964impl From<RmrkCollectionId> for CollectionId {972impl From<RmrkCollectionId> for CollectionId {
979pub type RmrkResourceInfo = ResourceInfo<RmrkString, RmrkBoundedParts>;987pub type RmrkResourceInfo = ResourceInfo<RmrkString, RmrkBoundedParts>;
980pub type RmrkPropertyInfo = PropertyInfo<RmrkKeyString, RmrkValueString>;988pub type RmrkPropertyInfo = PropertyInfo<RmrkKeyString, RmrkValueString>;
981pub type RmrkBaseInfo<AccountId> = BaseInfo<AccountId, RmrkString>;989pub type RmrkBaseInfo<AccountId> = BaseInfo<AccountId, RmrkString>;
982pub type RmrkPartType =990pub type BoundedEquippableCollectionIds =
983 PartType<RmrkString, BoundedVec<RmrkCollectionId, RmrkMaxCollectionsEquippablePerPart>>;991 BoundedVec<RmrkCollectionId, RmrkMaxCollectionsEquippablePerPart>;
992pub type RmrkPartType = PartType<RmrkString, BoundedEquippableCollectionIds>;
993pub type RmrkEquippableList = EquippableList<BoundedEquippableCollectionIds>;
984pub type RmrkThemeProperty = ThemeProperty<RmrkString>;994pub type RmrkThemeProperty = ThemeProperty<RmrkString>;
985pub type RmrkTheme = Theme<RmrkString, Vec<RmrkThemeProperty>>;995pub type RmrkTheme = Theme<RmrkString, Vec<RmrkThemeProperty>>;
996pub type RmrkBoundedTheme = Theme<RmrkString, BoundedVec<RmrkThemeProperty, MaxPropertiesPerTheme>>;
986pub type RmrkResourceTypes = ResourceTypes<RmrkString, RmrkBoundedParts>;997pub type RmrkResourceTypes = ResourceTypes<RmrkString, RmrkBoundedParts>;
987998
988pub type RmrkBasicResource = BasicResource<RmrkString>;999pub type RmrkBasicResource = BasicResource<RmrkString>;
9911002
992pub type RmrkString = BoundedVec<u8, RmrkStringLimit>;1003pub type RmrkString = BoundedVec<u8, RmrkStringLimit>;
993pub type RmrkCollectionSymbol = BoundedVec<u8, RmrkCollectionSymbolLimit>;1004pub type RmrkCollectionSymbol = BoundedVec<u8, RmrkCollectionSymbolLimit>;
1005pub type RmrkBaseSymbol = BoundedVec<u8, RmrkBaseSymbolLimit>;
994pub type RmrkKeyString = BoundedVec<u8, RmrkKeyLimit>;1006pub type RmrkKeyString = BoundedVec<u8, RmrkKeyLimit>;
995pub type RmrkValueString = BoundedVec<u8, RmrkValueLimit>;1007pub type RmrkValueString = BoundedVec<u8, RmrkValueLimit>;
996pub type RmrkBoundedResource = BoundedVec<u8, RmrkResourceSymbolLimit>;1008pub type RmrkBoundedResource = BoundedVec<u8, RmrkResourceSymbolLimit>;
modifiedruntime/common/Cargo.tomldiffbeforeafterboth
6license = 'All Rights Reserved'6license = 'All Rights Reserved'
7name = 'unique-runtime-common'7name = 'unique-runtime-common'
8repository = 'https://github.com/UniqueNetwork/unique-chain'8repository = 'https://github.com/UniqueNetwork/unique-chain'
9version = '0.9.22'9version = '0.9.23'
1010
11[features]11[features]
12default = ['std']12default = ['std']
89default-features = false89default-features = false
90path = "../../pallets/refungible"90path = "../../pallets/refungible"
91
92[dependencies.pallet-unique-scheduler]
93default-features = false
94path = "../../pallets/scheduler"
9195
92[dependencies.up-data-structs]96[dependencies.up-data-structs]
93default-features = false97default-features = false
modifiedruntime/common/src/constants.rsdiffbeforeafterboth
38pub const WEIGHT_TO_FEE_COEFF: u32 = 142_688_000;38pub const WEIGHT_TO_FEE_COEFF: u32 = 142_688_000;
3939
40// Targeting 0.15 UNQ per transfer40// Targeting 0.15 UNQ per transfer
41pub const MIN_GAS_PRICE: u64 = 1_018_751_825_264;41pub const MIN_GAS_PRICE: u64 = 1_019_493_469_850;
4242
43/// We assume that ~10% of the block weight is consumed by `on_initalize` handlers.43/// We assume that ~10% of the block weight is consumed by `on_initalize` handlers.
44/// This is used to limit the maximal weight of a single extrinsic.44/// This is used to limit the maximal weight of a single extrinsic.
modifiedruntime/common/src/dispatch.rsdiffbeforeafterboth
112 + pallet_fungible::Config112 + pallet_fungible::Config
113 + pallet_nonfungible::Config113 + pallet_nonfungible::Config
114 + pallet_refungible::Config,114 + pallet_refungible::Config,
115 T::AccountId: From<[u8; 32]>,
115{116{
116 fn is_reserved(target: &H160) -> bool {117 fn is_reserved(target: &H160) -> bool {
117 map_eth_to_id(target).is_some()118 map_eth_to_id(target).is_some()
modifiedruntime/common/src/runtime_apis.rsdiffbeforeafterboth
144 }144 }
145 }145 }
146
147 impl rmrk_rpc::RmrkApi<
148 Block,
149 AccountId,
150 RmrkCollectionInfo<AccountId>,
151 RmrkInstanceInfo<AccountId>,
152 RmrkResourceInfo,
153 RmrkPropertyInfo,
154 RmrkBaseInfo<AccountId>,
155 RmrkPartType,
156 RmrkTheme
157 > for Runtime {
158 fn last_collection_idx() -> Result<RmrkCollectionId, DispatchError> {
159 Ok(RmrkCore::last_collection_idx())
160 }
161
162 fn collection_by_id(collection_id: RmrkCollectionId) -> Result<Option<RmrkCollectionInfo<AccountId>>, DispatchError> {
163 use pallet_proxy_rmrk_core::{RmrkProperty, misc::CollectionType};
164 use pallet_common::CommonCollectionOperations;
165
166 let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(collection_id, CollectionType::Regular) {
167 Ok(c) => c,
168 Err(_) => return Ok(None),
169 };
170
171 let nfts_count = collection.total_supply();
172
173 Ok(Some(RmrkCollectionInfo {
174 issuer: collection.owner.clone(),
175 metadata: RmrkCore::get_collection_property_decoded(collection_id, RmrkProperty::Metadata)?,
176 max: collection.limits.token_limit,
177 symbol: RmrkCore::rebind(&collection.token_prefix)?,
178 nfts_count
179 }))
180 }
181
182 fn nft_by_id(collection_id: RmrkCollectionId, nft_by_id: RmrkNftId) -> Result<Option<RmrkInstanceInfo<AccountId>>, DispatchError> {
183 use up_data_structs::mapping::TokenAddressMapping;
184 use pallet_proxy_rmrk_core::{RmrkProperty, misc::CollectionType};
185 use pallet_common::CommonCollectionOperations;
186
187 let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(collection_id, CollectionType::Regular) {
188 Ok(c) => c,
189 Err(_) => return Ok(None),
190 };
191
192 let nft_id = TokenId(nft_by_id);
193 if !RmrkCore::nft_exists(collection_id, nft_id) { return Ok(None); }
194
195 let owner = match collection.token_owner(nft_id) {
196 Some(owner) => match <Runtime as pallet_common::Config>::CrossTokenAddressMapping::address_to_token(&owner) {
197 Some((col, tok)) => {
198 let rmrk_collection = RmrkCore::rmrk_collection_id(col)?;
199
200 RmrkAccountIdOrCollectionNftTuple::CollectionAndNftTuple(rmrk_collection, tok.0)
201 }
202 None => RmrkAccountIdOrCollectionNftTuple::AccountId(owner.as_sub().clone())
203 },
204 None => return Ok(None)
205 };
206
207 Ok(Some(RmrkInstanceInfo {
208 owner: owner,
209 royalty: RmrkCore::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::RoyaltyInfo)?,
210 metadata: RmrkCore::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::Metadata)?,
211 equipped: RmrkCore::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::Equipped)?,
212 pending: RmrkCore::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::PendingNftAccept)?,
213 }))
214 }
215
216 fn account_tokens(account_id: AccountId, collection_id: RmrkCollectionId) -> Result<Vec<RmrkNftId>, DispatchError> {
217 use pallet_proxy_rmrk_core::{RmrkProperty, misc::CollectionType};
218 use pallet_common::CommonCollectionOperations;
219
220 let cross_account_id = CrossAccountId::from_sub(account_id);
221
222 let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(collection_id, CollectionType::Regular) {
223 Ok(c) => c,
224 Err(_) => return Ok(Vec::new()),
225 };
226
227 let tokens = collection.account_tokens(cross_account_id)
228 .into_iter()
229 .filter(|token| {
230 let is_pending = RmrkCore::get_nft_property_decoded(
231 collection_id,
232 *token,
233 RmrkProperty::PendingNftAccept
234 ).unwrap_or(true);
235
236 !is_pending
237 })
238 .map(|token| token.0)
239 .collect();
240
241 Ok(tokens)
242 }
243
244 fn nft_children(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkNftChild>, DispatchError> {
245 use pallet_proxy_rmrk_core::RmrkProperty;
246
247 let collection_id = match RmrkCore::unique_collection_id(collection_id) {
248 Ok(id) => id,
249 Err(_) => return Ok(Vec::new())
250 };
251 let nft_id = TokenId(nft_id);
252 if !RmrkCore::nft_exists(collection_id, nft_id) { return Ok(Vec::new()); }
253
254 Ok(
255 pallet_nonfungible::TokenChildren::<Runtime>::iter_prefix((collection_id, nft_id))
256 .filter_map(|((child_collection, child_token), _)| {
257 let is_pending = RmrkCore::get_nft_property_decoded(
258 child_collection,
259 child_token,
260 RmrkProperty::PendingNftAccept
261 ).ok()?;
262
263 if is_pending {
264 return None;
265 }
266
267 let rmrk_child_collection = RmrkCore::rmrk_collection_id(
268 child_collection
269 ).ok()?;
270
271 Some(RmrkNftChild {
272 collection_id: rmrk_child_collection,
273 nft_id: child_token.0,
274 })
275 }).collect()
276 )
277 }
278
279 fn collection_properties(collection_id: RmrkCollectionId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
280 use pallet_proxy_rmrk_core::misc::CollectionType;
281
282 let collection_id = match RmrkCore::unique_collection_id(collection_id) {
283 Ok(id) => id,
284 Err(_) => return Ok(Vec::new())
285 };
286 if RmrkCore::ensure_collection_type(collection_id, CollectionType::Regular).is_err() {
287 return Ok(Vec::new());
288 }
289
290 let properties = RmrkCore::filter_user_properties(
291 collection_id,
292 /* token_id = */ None,
293 filter_keys,
294 |key, value| RmrkPropertyInfo {
295 key,
296 value
297 }
298 )?;
299
300 Ok(properties)
301 }
302
303 fn nft_properties(collection_id: RmrkCollectionId, nft_id: RmrkNftId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
304 use pallet_proxy_rmrk_core::misc::NftType;
305
306 let collection_id = match RmrkCore::unique_collection_id(collection_id) {
307 Ok(id) => id,
308 Err(_) => return Ok(Vec::new())
309 };
310 let token_id = TokenId(nft_id);
311
312 if RmrkCore::ensure_nft_type(collection_id, token_id, NftType::Regular).is_err() {
313 return Ok(Vec::new());
314 }
315
316 let properties = RmrkCore::filter_user_properties(
317 collection_id,
318 Some(token_id),
319 filter_keys,
320 |key, value| RmrkPropertyInfo {
321 key,
322 value
323 }
324 )?;
325
326 Ok(properties)
327 }
328
329 fn nft_resources(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkResourceInfo>, DispatchError> {
330 use pallet_proxy_rmrk_core::{RmrkProperty, misc::{CollectionType, NftType, ResourceType}};
331 use pallet_common::CommonCollectionOperations;
332
333 let collection_id = match RmrkCore::unique_collection_id(collection_id) {
334 Ok(id) => id,
335 Err(_) => return Ok(Vec::new())
336 };
337 if RmrkCore::ensure_collection_type(collection_id, CollectionType::Regular).is_err() { return Ok(Vec::new()); }
338
339 let nft_id = TokenId(nft_id);
340 if RmrkCore::ensure_nft_type(collection_id, nft_id, NftType::Regular).is_err() { return Ok(Vec::new()); }
341
342 let res_collection_id: CollectionId = RmrkCore::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::ResourceCollection)?;
343 let resource_collection = RmrkCore::get_typed_nft_collection(res_collection_id, CollectionType::Resource)?;
344
345 let resources = resource_collection
346 .collection_tokens()
347 .iter()
348 .filter_map(|(res_id)| Some(RmrkResourceInfo {
349 id: res_id.0,
350 pending: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::PendingResourceAccept).ok()?,
351 pending_removal: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::PendingResourceRemoval).ok()?,
352 resource: match RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::ResourceType).ok()? {
353 ResourceType::Basic => RmrkResourceTypes::Basic(RmrkBasicResource {
354 src: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Src).ok()?,
355 metadata: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Metadata).ok()?,
356 license: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::License).ok()?,
357 thumb: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Thumb).ok()?,
358 }),
359 ResourceType::Composable => RmrkResourceTypes::Composable(RmrkComposableResource {
360 parts: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Parts).ok()?,
361 base: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Base).ok()?,
362 src: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Src).ok()?,
363 metadata: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Metadata).ok()?,
364 license: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::License).ok()?,
365 thumb: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Thumb).ok()?,
366 }),
367 ResourceType::Slot => RmrkResourceTypes::Slot(RmrkSlotResource {
368 base: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Base).ok()?,
369 src: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Src).ok()?,
370 metadata: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Metadata).ok()?,
371 slot: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Slot).ok()?,
372 license: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::License).ok()?,
373 thumb: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Thumb).ok()?,
374 }),
375 },
376 }))
377 .collect();
378
379 Ok(resources)
380 }
381
382 fn nft_resource_priority(collection_id: RmrkCollectionId, nft_id: RmrkNftId, resource_id: RmrkResourceId) -> Result<Option<u32>, DispatchError> {
383 use pallet_proxy_rmrk_core::{RmrkProperty, misc::{CollectionType, NftType}};
384
385 let collection_id = match RmrkCore::unique_collection_id(collection_id) {
386 Ok(id) => id,
387 Err(_) => return Ok(None)
388 };
389 if RmrkCore::ensure_collection_type(collection_id, CollectionType::Regular).is_err() { return Ok(None); }
390
391 let nft_id = TokenId(nft_id);
392 if RmrkCore::ensure_nft_type(collection_id, nft_id, NftType::Regular).is_err() { return Ok(None); }
393
394 let priorities: Vec<_> = RmrkCore::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::ResourcePriorities)?;
395 Ok(
396 priorities.into_iter()
397 .enumerate()
398 .find(|(_, id)| *id == resource_id)
399 .map(|(priority, _): (usize, RmrkResourceId)| priority as u32)
400 )
401 }
402
403 fn base(base_id: RmrkBaseId) -> Result<Option<RmrkBaseInfo<AccountId>>, DispatchError> {
404 use pallet_proxy_rmrk_core::{
405 RmrkProperty, misc::{CollectionType},
406 };
407
408 let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(base_id, CollectionType::Base) {
409 Ok(c) => c,
410 Err(_) => return Ok(None),
411 };
412
413 Ok(Some(RmrkBaseInfo {
414 issuer: collection.owner.clone(),
415 base_type: RmrkCore::get_collection_property_decoded(collection_id, RmrkProperty::BaseType)?,
416 symbol: RmrkCore::rebind(&collection.token_prefix)?,
417 }))
418 }
419
420 fn base_parts(base_id: RmrkBaseId) -> Result<Vec<RmrkPartType>, DispatchError> {
421 use pallet_proxy_rmrk_core::{RmrkProperty, misc::{CollectionType, NftType}};
422 use pallet_common::CommonCollectionOperations;
423
424 let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(base_id, CollectionType::Base) {
425 Ok(c) => c,
426 Err(_) => return Ok(Vec::new()),
427 };
428
429 let parts = collection.collection_tokens()
430 .into_iter()
431 .filter_map(|token_id| {
432 let nft_type = RmrkCore::get_nft_type(collection_id, token_id).ok()?;
433
434 match nft_type {
435 NftType::FixedPart => Some(RmrkPartType::FixedPart(RmrkFixedPart {
436 id: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::ExternalPartId).ok()?,
437 src: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::Src).ok()?,
438 z: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::ZIndex).ok()?,
439 })),
440 NftType::SlotPart => Some(RmrkPartType::SlotPart(RmrkSlotPart {
441 id: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::ExternalPartId).ok()?,
442 src: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::Src).ok()?,
443 z: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::ZIndex).ok()?,
444 equippable: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::EquippableList).ok()?,
445 })),
446 _ => None
447 }
448 })
449 .collect();
450
451 Ok(parts)
452 }
453
454 fn theme_names(base_id: RmrkBaseId) -> Result<Vec<RmrkThemeName>, DispatchError> {
455 use pallet_proxy_rmrk_core::{RmrkProperty, misc::CollectionType};
456 use pallet_common::CommonCollectionOperations;
457
458 let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(base_id, CollectionType::Base) {
459 Ok(c) => c,
460 Err(_) => return Ok(Vec::new()),
461 };
462
463 let theme_names = collection.collection_tokens()
464 .iter()
465 .filter_map(|token_id| {
466 let nft_type = RmrkCore::get_nft_type(collection_id, *token_id).ok()?;
467
468 match nft_type {
469 Theme => RmrkCore::get_nft_property_decoded(collection_id, *token_id, RmrkProperty::ThemeName).ok(),
470 _ => None
471 }
472 })
473 .collect();
474
475 Ok(theme_names)
476 }
477
478 fn theme(base_id: RmrkBaseId, theme_name: RmrkThemeName, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Option<RmrkTheme>, DispatchError> {
479 use pallet_proxy_rmrk_core::{
480 RmrkProperty,
481 misc::{CollectionType, NftType}
482 };
483 use pallet_common::CommonCollectionOperations;
484
485 let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(base_id, CollectionType::Base) {
486 Ok(c) => c,
487 Err(_) => return Ok(None),
488 };
489
490 let theme_info = collection.collection_tokens()
491 .into_iter()
492 .find_map(|token_id| {
493 RmrkCore::ensure_nft_type(collection_id, token_id, NftType::Theme).ok()?;
494
495 let name: RmrkString = RmrkCore::get_nft_property_decoded(
496 collection_id, token_id, RmrkProperty::ThemeName
497 ).ok()?;
498
499 if name == theme_name {
500 Some((name, token_id))
501 } else {
502 None
503 }
504 });
505
506 let (name, theme_id) = match theme_info {
507 Some((name, theme_id)) => (name, theme_id),
508 None => return Ok(None)
509 };
510
511 let properties = RmrkCore::filter_user_properties(
512 collection_id,
513 Some(theme_id),
514 filter_keys,
515 |key, value| RmrkThemeProperty {
516 key,
517 value
518 }
519 )?;
520
521 let inherit = RmrkCore::get_nft_property_decoded(
522 collection_id,
523 theme_id,
524 RmrkProperty::ThemeInherit
525 )?;
526
527 let theme = RmrkTheme {
528 name,
529 properties,
530 inherit,
531 };
532
533 Ok(Some(theme))
534 }
535 }
536146
537 impl sp_api::Core<Block> for Runtime {147 impl sp_api::Core<Block> for Runtime {
538 fn version() -> RuntimeVersion {148 fn version() -> RuntimeVersion {
843 list_benchmark!(list, extra, pallet_fungible, Fungible);453 list_benchmark!(list, extra, pallet_fungible, Fungible);
844 list_benchmark!(list, extra, pallet_refungible, Refungible);454 list_benchmark!(list, extra, pallet_refungible, Refungible);
845 list_benchmark!(list, extra, pallet_nonfungible, Nonfungible);455 list_benchmark!(list, extra, pallet_nonfungible, Nonfungible);
456 list_benchmark!(list, extra, pallet_unique_scheduler, Scheduler);
457
458 #[cfg(not(feature = "unique-runtime"))]
846 list_benchmark!(list, extra, pallet_proxy_rmrk_core, RmrkCore);459 list_benchmark!(list, extra, pallet_proxy_rmrk_core, RmrkCore);
460
461 #[cfg(not(feature = "unique-runtime"))]
462 list_benchmark!(list, extra, pallet_proxy_rmrk_equip, RmrkEquip);
463
847 // list_benchmark!(list, extra, pallet_evm_coder_substrate, EvmCoderSubstrate);464 // list_benchmark!(list, extra, pallet_evm_coder_substrate, EvmCoderSubstrate);
848465
887 add_benchmark!(params, batches, pallet_fungible, Fungible);504 add_benchmark!(params, batches, pallet_fungible, Fungible);
888 add_benchmark!(params, batches, pallet_refungible, Refungible);505 add_benchmark!(params, batches, pallet_refungible, Refungible);
889 add_benchmark!(params, batches, pallet_nonfungible, Nonfungible);506 add_benchmark!(params, batches, pallet_nonfungible, Nonfungible);
507 add_benchmark!(params, batches, pallet_unique_scheduler, Scheduler);
508
509 #[cfg(not(feature = "unique-runtime"))]
890 add_benchmark!(params, batches, pallet_proxy_rmrk_core, RmrkCore);510 add_benchmark!(params, batches, pallet_proxy_rmrk_core, RmrkCore);
511
512 #[cfg(not(feature = "unique-runtime"))]
513 add_benchmark!(params, batches, pallet_proxy_rmrk_equip, RmrkEquip);
514
891 // add_benchmark!(params, batches, pallet_evm_coder_substrate, EvmCoderSubstrate);515 // add_benchmark!(params, batches, pallet_evm_coder_substrate, EvmCoderSubstrate);
892516
modifiedruntime/common/src/weights.rsdiffbeforeafterboth
70 dispatch_weight::<T>() + max_weight_of!(delete_token_properties(amount))70 dispatch_weight::<T>() + max_weight_of!(delete_token_properties(amount))
71 }71 }
7272
73 fn set_property_permissions(amount: u32) -> Weight {73 fn set_token_property_permissions(amount: u32) -> Weight {
74 dispatch_weight::<T>() + max_weight_of!(set_property_permissions(amount))74 dispatch_weight::<T>() + max_weight_of!(set_token_property_permissions(amount))
75 }75 }
7676
77 fn transfer() -> Weight {77 fn transfer() -> Weight {
modifiedruntime/opal/Cargo.tomldiffbeforeafterboth
10license = 'GPLv3'10license = 'GPLv3'
11name = 'opal-runtime'11name = 'opal-runtime'
12repository = 'https://github.com/UniqueNetwork/unique-chain'12repository = 'https://github.com/UniqueNetwork/unique-chain'
13version = '0.9.22'13version = '0.9.23'
1414
15[package.metadata.docs.rs]15[package.metadata.docs.rs]
16targets = ['x86_64-unknown-linux-gnu']16targets = ['x86_64-unknown-linux-gnu']
34 'pallet-refungible/runtime-benchmarks',34 'pallet-refungible/runtime-benchmarks',
35 'pallet-nonfungible/runtime-benchmarks',35 'pallet-nonfungible/runtime-benchmarks',
36 'pallet-proxy-rmrk-core/runtime-benchmarks',36 'pallet-proxy-rmrk-core/runtime-benchmarks',
37 'pallet-proxy-rmrk-equip/runtime-benchmarks',
37 'pallet-unique/runtime-benchmarks',38 'pallet-unique/runtime-benchmarks',
38 'pallet-inflation/runtime-benchmarks',39 'pallet-inflation/runtime-benchmarks',
40 'pallet-unique-scheduler/runtime-benchmarks',
39 'pallet-xcm/runtime-benchmarks',41 'pallet-xcm/runtime-benchmarks',
40 'sp-runtime/runtime-benchmarks',42 'sp-runtime/runtime-benchmarks',
41 'xcm-builder/runtime-benchmarks',43 'xcm-builder/runtime-benchmarks',
93 'pallet-proxy-rmrk-core/std',95 'pallet-proxy-rmrk-core/std',
94 'pallet-proxy-rmrk-equip/std',96 'pallet-proxy-rmrk-equip/std',
95 'pallet-unique/std',97 'pallet-unique/std',
96 'pallet-unq-scheduler/std',98 'pallet-unique-scheduler/std',
97 'pallet-charge-transaction/std',99 'pallet-charge-transaction/std',
98 'up-data-structs/std',100 'up-data-structs/std',
99 'sp-api/std',101 'sp-api/std',
412pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }414pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }
413pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" }415pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" }
414pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" }416pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" }
415pallet-unq-scheduler = { path = '../../pallets/scheduler', default-features = false }417pallet-unique-scheduler = { path = '../../pallets/scheduler', default-features = false }
416# pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' }418# pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' }
417pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.23", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }419pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.23", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }
418pallet-evm-migration = { path = '../../pallets/evm-migration', default-features = false }420pallet-evm-migration = { path = '../../pallets/evm-migration', default-features = false }
modifiedruntime/opal/src/lib.rsdiffbeforeafterboth
69 WeightToFee,69 WeightToFee,
70 },70 },
71};71};
72use pallet_unq_scheduler::DispatchCall;72use pallet_unique_scheduler::DispatchCall;
73use up_data_structs::{73use up_data_structs::{
74 CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits,74 CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits,
75 CollectionStats, RpcCollection,75 CollectionStats, RpcCollection,
76 mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping},76 mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping},
77 TokenChild, RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo,77 TokenChild, RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo,
78 RmrkBaseInfo, RmrkPartType, RmrkTheme, RmrkThemeName, RmrkThemeProperty, RmrkCollectionId,78 RmrkBaseInfo, RmrkPartType, RmrkTheme, RmrkThemeName, RmrkCollectionId, RmrkNftId,
79 RmrkNftId, RmrkAccountIdOrCollectionNftTuple, RmrkNftChild, RmrkPropertyKey, RmrkResourceTypes,79 RmrkNftChild, RmrkPropertyKey, RmrkResourceId, RmrkBaseId,
80 RmrkBasicResource, RmrkComposableResource, RmrkSlotResource, RmrkResourceId, RmrkBaseId,
81 RmrkFixedPart, RmrkSlotPart, RmrkString,
82};80};
8381
84// use pallet_contracts::weights::WeightInfo;82// use pallet_contracts::weights::WeightInfo;
194 spec_name: create_runtime_str!(RUNTIME_NAME),192 spec_name: create_runtime_str!(RUNTIME_NAME),
195 impl_name: create_runtime_str!(RUNTIME_NAME),193 impl_name: create_runtime_str!(RUNTIME_NAME),
196 authoring_version: 1,194 authoring_version: 1,
197 spec_version: 922000,195 spec_version: 923000,
198 impl_version: 0,196 impl_version: 0,
199 apis: RUNTIME_API_VERSIONS,197 apis: RUNTIME_API_VERSIONS,
200 transaction_version: 1,198 transaction_version: 1,
920}918}
921919
922impl pallet_proxy_rmrk_equip::Config for Runtime {920impl pallet_proxy_rmrk_equip::Config for Runtime {
921 type WeightInfo = pallet_proxy_rmrk_equip::weights::SubstrateWeight<Self>;
923 type Event = Event;922 type Event = Event;
924}923}
925924
965}964}
966965
967pub struct SchedulerPaymentExecutor;966pub struct SchedulerPaymentExecutor;
968impl<T: frame_system::Config + pallet_unq_scheduler::Config, SelfContainedSignedInfo>967impl<T: frame_system::Config + pallet_unique_scheduler::Config, SelfContainedSignedInfo>
969 DispatchCall<T, SelfContainedSignedInfo> for SchedulerPaymentExecutor968 DispatchCall<T, SelfContainedSignedInfo> for SchedulerPaymentExecutor
970where969where
971 <T as frame_system::Config>::Call: Member970 <T as frame_system::Config>::Call: Member
975 + From<frame_system::Call<Runtime>>,974 + From<frame_system::Call<Runtime>>,
976 SelfContainedSignedInfo: Send + Sync + 'static,975 SelfContainedSignedInfo: Send + Sync + 'static,
977 Call: From<<T as frame_system::Config>::Call>976 Call: From<<T as frame_system::Config>::Call>
978 + From<<T as pallet_unq_scheduler::Config>::Call>977 + From<<T as pallet_unique_scheduler::Config>::Call>
979 + SelfContainedCall<SignedInfo = SelfContainedSignedInfo>,978 + SelfContainedCall<SignedInfo = SelfContainedSignedInfo>,
980 sp_runtime::AccountId32: From<<T as frame_system::Config>::AccountId>,979 sp_runtime::AccountId32: From<<T as frame_system::Config>::AccountId>,
981{980{
982 fn dispatch_call(981 fn dispatch_call(
983 signer: <T as frame_system::Config>::AccountId,982 signer: <T as frame_system::Config>::AccountId,
984 call: <T as pallet_unq_scheduler::Config>::Call,983 call: <T as pallet_unique_scheduler::Config>::Call,
985 ) -> Result<984 ) -> Result<
986 Result<PostDispatchInfo, DispatchErrorWithPostInfo<PostDispatchInfo>>,985 Result<PostDispatchInfo, DispatchErrorWithPostInfo<PostDispatchInfo>>,
987 TransactionValidityError,986 TransactionValidityError,
1007 fn reserve_balance(1006 fn reserve_balance(
1008 id: [u8; 16],1007 id: [u8; 16],
1009 sponsor: <T as frame_system::Config>::AccountId,1008 sponsor: <T as frame_system::Config>::AccountId,
1010 call: <T as pallet_unq_scheduler::Config>::Call,1009 call: <T as pallet_unique_scheduler::Config>::Call,
1011 count: u32,1010 count: u32,
1012 ) -> Result<(), DispatchError> {1011 ) -> Result<(), DispatchError> {
1013 let dispatch_info = call.get_dispatch_info();1012 let dispatch_info = call.get_dispatch_info();
1024 fn pay_for_call(1023 fn pay_for_call(
1025 id: [u8; 16],1024 id: [u8; 16],
1026 sponsor: <T as frame_system::Config>::AccountId,1025 sponsor: <T as frame_system::Config>::AccountId,
1027 call: <T as pallet_unq_scheduler::Config>::Call,1026 call: <T as pallet_unique_scheduler::Config>::Call,
1028 ) -> Result<u128, DispatchError> {1027 ) -> Result<u128, DispatchError> {
1029 let dispatch_info = call.get_dispatch_info();1028 let dispatch_info = call.get_dispatch_info();
1030 let weight: Balance = ChargeTransactionPayment::traditional_fee(0, &dispatch_info, 0);1029 let weight: Balance = ChargeTransactionPayment::traditional_fee(0, &dispatch_info, 0);
1065 }1064 }
1066}1065}
10671066
1068impl pallet_unq_scheduler::Config for Runtime {1067impl pallet_unique_scheduler::Config for Runtime {
1069 type Event = Event;1068 type Event = Event;
1070 type Origin = Origin;1069 type Origin = Origin;
1071 type Currency = Balances;1070 type Currency = Balances;
1154 // Unique Pallets1153 // Unique Pallets
1155 Inflation: pallet_inflation::{Pallet, Call, Storage} = 60,1154 Inflation: pallet_inflation::{Pallet, Call, Storage} = 60,
1156 Unique: pallet_unique::{Pallet, Call, Storage, Event<T>} = 61,1155 Unique: pallet_unique::{Pallet, Call, Storage, Event<T>} = 61,
1157 Scheduler: pallet_unq_scheduler::{Pallet, Call, Storage, Event<T>} = 62,1156 Scheduler: pallet_unique_scheduler::{Pallet, Call, Storage, Event<T>} = 62,
1158 // free = 631157 // free = 63
1159 Charging: pallet_charge_transaction::{Pallet, Call, Storage } = 64,1158 Charging: pallet_charge_transaction::{Pallet, Call, Storage } = 64,
1160 // ContractHelpers: pallet_contract_helpers::{Pallet, Call, Storage} = 65,1159 // ContractHelpers: pallet_contract_helpers::{Pallet, Call, Storage} = 65,
1311 }};1310 }};
1312}1311}
13131312
1314impl_common_runtime_apis!();1313impl_common_runtime_apis! {
1314 #![custom_apis]
1315
1316 impl rmrk_rpc::RmrkApi<
1317 Block,
1318 AccountId,
1319 RmrkCollectionInfo<AccountId>,
1320 RmrkInstanceInfo<AccountId>,
1321 RmrkResourceInfo,
1322 RmrkPropertyInfo,
1323 RmrkBaseInfo<AccountId>,
1324 RmrkPartType,
1325 RmrkTheme
1326 > for Runtime {
1327 fn last_collection_idx() -> Result<RmrkCollectionId, DispatchError> {
1328 pallet_proxy_rmrk_core::rpc::last_collection_idx::<Runtime>()
1329 }
1330
1331 fn collection_by_id(collection_id: RmrkCollectionId) -> Result<Option<RmrkCollectionInfo<AccountId>>, DispatchError> {
1332 pallet_proxy_rmrk_core::rpc::collection_by_id::<Runtime>(collection_id)
1333 }
1334
1335 fn nft_by_id(collection_id: RmrkCollectionId, nft_by_id: RmrkNftId) -> Result<Option<RmrkInstanceInfo<AccountId>>, DispatchError> {
1336 pallet_proxy_rmrk_core::rpc::nft_by_id::<Runtime>(collection_id, nft_by_id)
1337 }
1338
1339 fn account_tokens(account_id: AccountId, collection_id: RmrkCollectionId) -> Result<Vec<RmrkNftId>, DispatchError> {
1340 pallet_proxy_rmrk_core::rpc::account_tokens::<Runtime>(account_id, collection_id)
1341 }
1342
1343 fn nft_children(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkNftChild>, DispatchError> {
1344 pallet_proxy_rmrk_core::rpc::nft_children::<Runtime>(collection_id, nft_id)
1345 }
1346
1347 fn collection_properties(collection_id: RmrkCollectionId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
1348 pallet_proxy_rmrk_core::rpc::collection_properties::<Runtime>(collection_id, filter_keys)
1349 }
1350
1351 fn nft_properties(collection_id: RmrkCollectionId, nft_id: RmrkNftId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
1352 pallet_proxy_rmrk_core::rpc::nft_properties::<Runtime>(collection_id, nft_id, filter_keys)
1353 }
1354
1355 fn nft_resources(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkResourceInfo>, DispatchError> {
1356 pallet_proxy_rmrk_core::rpc::nft_resources::<Runtime>(collection_id, nft_id)
1357 }
1358
1359 fn nft_resource_priority(collection_id: RmrkCollectionId, nft_id: RmrkNftId, resource_id: RmrkResourceId) -> Result<Option<u32>, DispatchError> {
1360 pallet_proxy_rmrk_core::rpc::nft_resource_priority::<Runtime>(collection_id, nft_id, resource_id)
1361 }
1362
1363 fn base(base_id: RmrkBaseId) -> Result<Option<RmrkBaseInfo<AccountId>>, DispatchError> {
1364 pallet_proxy_rmrk_equip::rpc::base::<Runtime>(base_id)
1365 }
1366
1367 fn base_parts(base_id: RmrkBaseId) -> Result<Vec<RmrkPartType>, DispatchError> {
1368 pallet_proxy_rmrk_equip::rpc::base_parts::<Runtime>(base_id)
1369 }
1370
1371 fn theme_names(base_id: RmrkBaseId) -> Result<Vec<RmrkThemeName>, DispatchError> {
1372 pallet_proxy_rmrk_equip::rpc::theme_names::<Runtime>(base_id)
1373 }
1374
1375 fn theme(base_id: RmrkBaseId, theme_name: RmrkThemeName, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Option<RmrkTheme>, DispatchError> {
1376 pallet_proxy_rmrk_equip::rpc::theme::<Runtime>(base_id, theme_name, filter_keys)
1377 }
1378 }
1379}
13151380
1316struct CheckInherents;1381struct CheckInherents;
13171382
modifiedruntime/quartz/Cargo.tomldiffbeforeafterboth
10license = 'GPLv3'10license = 'GPLv3'
11name = 'quartz-runtime'11name = 'quartz-runtime'
12repository = 'https://github.com/UniqueNetwork/unique-chain'12repository = 'https://github.com/UniqueNetwork/unique-chain'
13version = '0.9.22'13version = '0.9.23'
1414
15[package.metadata.docs.rs]15[package.metadata.docs.rs]
16targets = ['x86_64-unknown-linux-gnu']16targets = ['x86_64-unknown-linux-gnu']
37 'pallet-proxy-rmrk-equip/runtime-benchmarks',37 'pallet-proxy-rmrk-equip/runtime-benchmarks',
38 'pallet-unique/runtime-benchmarks',38 'pallet-unique/runtime-benchmarks',
39 'pallet-inflation/runtime-benchmarks',39 'pallet-inflation/runtime-benchmarks',
40 'pallet-unique-scheduler/runtime-benchmarks',
40 'pallet-xcm/runtime-benchmarks',41 'pallet-xcm/runtime-benchmarks',
41 'sp-runtime/runtime-benchmarks',42 'sp-runtime/runtime-benchmarks',
42 'xcm-builder/runtime-benchmarks',43 'xcm-builder/runtime-benchmarks',
94 'pallet-proxy-rmrk-core/std',95 'pallet-proxy-rmrk-core/std',
95 'pallet-proxy-rmrk-equip/std',96 'pallet-proxy-rmrk-equip/std',
96 'pallet-unique/std',97 'pallet-unique/std',
97 'pallet-unq-scheduler/std',98 'pallet-unique-scheduler/std',
98 'pallet-charge-transaction/std',99 'pallet-charge-transaction/std',
99 'up-data-structs/std',100 'up-data-structs/std',
100 'sp-api/std',101 'sp-api/std',
419pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }420pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }
420pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" }421pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" }
421pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" }422pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" }
422pallet-unq-scheduler = { path = '../../pallets/scheduler', default-features = false }423pallet-unique-scheduler = { path = '../../pallets/scheduler', default-features = false }
423# pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' }424# pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' }
424pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.23", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }425pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.23", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }
425pallet-evm-migration = { path = '../../pallets/evm-migration', default-features = false }426pallet-evm-migration = { path = '../../pallets/evm-migration', default-features = false }
modifiedruntime/quartz/src/lib.rsdiffbeforeafterboth
69 WeightToFee,69 WeightToFee,
70 },70 },
71};71};
72use pallet_unq_scheduler::DispatchCall;72use pallet_unique_scheduler::DispatchCall;
73use up_data_structs::{73use up_data_structs::{
74 CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits,74 CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits,
75 CollectionStats, RpcCollection,75 CollectionStats, RpcCollection,
76 mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping},76 mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping},
77 TokenChild, RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo,77 TokenChild, RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo,
78 RmrkBaseInfo, RmrkPartType, RmrkTheme, RmrkThemeName, RmrkThemeProperty, RmrkCollectionId,78 RmrkBaseInfo, RmrkPartType, RmrkTheme, RmrkThemeName, RmrkCollectionId, RmrkNftId,
79 RmrkNftId, RmrkAccountIdOrCollectionNftTuple, RmrkNftChild, RmrkPropertyKey, RmrkResourceTypes,79 RmrkNftChild, RmrkPropertyKey, RmrkResourceId, RmrkBaseId,
80 RmrkBasicResource, RmrkComposableResource, RmrkSlotResource, RmrkResourceId, RmrkBaseId,
81 RmrkFixedPart, RmrkSlotPart, RmrkString,
82};80};
8381
84// use pallet_contracts::weights::WeightInfo;82// use pallet_contracts::weights::WeightInfo;
193 spec_name: create_runtime_str!(RUNTIME_NAME),191 spec_name: create_runtime_str!(RUNTIME_NAME),
194 impl_name: create_runtime_str!(RUNTIME_NAME),192 impl_name: create_runtime_str!(RUNTIME_NAME),
195 authoring_version: 1,193 authoring_version: 1,
196 spec_version: 922000,194 spec_version: 923000,
197 impl_version: 0,195 impl_version: 0,
198 apis: RUNTIME_API_VERSIONS,196 apis: RUNTIME_API_VERSIONS,
199 transaction_version: 1,197 transaction_version: 1,
924}922}
925923
926impl pallet_proxy_rmrk_equip::Config for Runtime {924impl pallet_proxy_rmrk_equip::Config for Runtime {
925 type WeightInfo = pallet_proxy_rmrk_equip::weights::SubstrateWeight<Self>;
927 type Event = Event;926 type Event = Event;
928}927}
929928
969}968}
970969
971pub struct SchedulerPaymentExecutor;970pub struct SchedulerPaymentExecutor;
972impl<T: frame_system::Config + pallet_unq_scheduler::Config, SelfContainedSignedInfo>971impl<T: frame_system::Config + pallet_unique_scheduler::Config, SelfContainedSignedInfo>
973 DispatchCall<T, SelfContainedSignedInfo> for SchedulerPaymentExecutor972 DispatchCall<T, SelfContainedSignedInfo> for SchedulerPaymentExecutor
974where973where
975 <T as frame_system::Config>::Call: Member974 <T as frame_system::Config>::Call: Member
979 + From<frame_system::Call<Runtime>>,978 + From<frame_system::Call<Runtime>>,
980 SelfContainedSignedInfo: Send + Sync + 'static,979 SelfContainedSignedInfo: Send + Sync + 'static,
981 Call: From<<T as frame_system::Config>::Call>980 Call: From<<T as frame_system::Config>::Call>
982 + From<<T as pallet_unq_scheduler::Config>::Call>981 + From<<T as pallet_unique_scheduler::Config>::Call>
983 + SelfContainedCall<SignedInfo = SelfContainedSignedInfo>,982 + SelfContainedCall<SignedInfo = SelfContainedSignedInfo>,
984 sp_runtime::AccountId32: From<<T as frame_system::Config>::AccountId>,983 sp_runtime::AccountId32: From<<T as frame_system::Config>::AccountId>,
985{984{
986 fn dispatch_call(985 fn dispatch_call(
987 signer: <T as frame_system::Config>::AccountId,986 signer: <T as frame_system::Config>::AccountId,
988 call: <T as pallet_unq_scheduler::Config>::Call,987 call: <T as pallet_unique_scheduler::Config>::Call,
989 ) -> Result<988 ) -> Result<
990 Result<PostDispatchInfo, DispatchErrorWithPostInfo<PostDispatchInfo>>,989 Result<PostDispatchInfo, DispatchErrorWithPostInfo<PostDispatchInfo>>,
991 TransactionValidityError,990 TransactionValidityError,
1011 fn reserve_balance(1010 fn reserve_balance(
1012 id: [u8; 16],1011 id: [u8; 16],
1013 sponsor: <T as frame_system::Config>::AccountId,1012 sponsor: <T as frame_system::Config>::AccountId,
1014 call: <T as pallet_unq_scheduler::Config>::Call,1013 call: <T as pallet_unique_scheduler::Config>::Call,
1015 count: u32,1014 count: u32,
1016 ) -> Result<(), DispatchError> {1015 ) -> Result<(), DispatchError> {
1017 let dispatch_info = call.get_dispatch_info();1016 let dispatch_info = call.get_dispatch_info();
1028 fn pay_for_call(1027 fn pay_for_call(
1029 id: [u8; 16],1028 id: [u8; 16],
1030 sponsor: <T as frame_system::Config>::AccountId,1029 sponsor: <T as frame_system::Config>::AccountId,
1031 call: <T as pallet_unq_scheduler::Config>::Call,1030 call: <T as pallet_unique_scheduler::Config>::Call,
1032 ) -> Result<u128, DispatchError> {1031 ) -> Result<u128, DispatchError> {
1033 let dispatch_info = call.get_dispatch_info();1032 let dispatch_info = call.get_dispatch_info();
1034 let weight: Balance = ChargeTransactionPayment::traditional_fee(0, &dispatch_info, 0);1033 let weight: Balance = ChargeTransactionPayment::traditional_fee(0, &dispatch_info, 0);
1069 }1068 }
1070}1069}
10711070
1072impl pallet_unq_scheduler::Config for Runtime {1071impl pallet_unique_scheduler::Config for Runtime {
1073 type Event = Event;1072 type Event = Event;
1074 type Origin = Origin;1073 type Origin = Origin;
1075 type Currency = Balances;1074 type Currency = Balances;
1157 // Unique Pallets1156 // Unique Pallets
1158 Inflation: pallet_inflation::{Pallet, Call, Storage} = 60,1157 Inflation: pallet_inflation::{Pallet, Call, Storage} = 60,
1159 Unique: pallet_unique::{Pallet, Call, Storage, Event<T>} = 61,1158 Unique: pallet_unique::{Pallet, Call, Storage, Event<T>} = 61,
1160 Scheduler: pallet_unq_scheduler::{Pallet, Call, Storage, Event<T>} = 62,1159 Scheduler: pallet_unique_scheduler::{Pallet, Call, Storage, Event<T>} = 62,
1161 // free = 631160 // free = 63
1162 Charging: pallet_charge_transaction::{Pallet, Call, Storage } = 64,1161 Charging: pallet_charge_transaction::{Pallet, Call, Storage } = 64,
1163 // ContractHelpers: pallet_contract_helpers::{Pallet, Call, Storage} = 65,1162 // ContractHelpers: pallet_contract_helpers::{Pallet, Call, Storage} = 65,
1316 }};1315 }};
1317}1316}
13181317
1319impl_common_runtime_apis!();1318impl_common_runtime_apis! {
1319 #![custom_apis]
1320
1321 impl rmrk_rpc::RmrkApi<
1322 Block,
1323 AccountId,
1324 RmrkCollectionInfo<AccountId>,
1325 RmrkInstanceInfo<AccountId>,
1326 RmrkResourceInfo,
1327 RmrkPropertyInfo,
1328 RmrkBaseInfo<AccountId>,
1329 RmrkPartType,
1330 RmrkTheme
1331 > for Runtime {
1332 fn last_collection_idx() -> Result<RmrkCollectionId, DispatchError> {
1333 pallet_proxy_rmrk_core::rpc::last_collection_idx::<Runtime>()
1334 }
1335
1336 fn collection_by_id(collection_id: RmrkCollectionId) -> Result<Option<RmrkCollectionInfo<AccountId>>, DispatchError> {
1337 pallet_proxy_rmrk_core::rpc::collection_by_id::<Runtime>(collection_id)
1338 }
1339
1340 fn nft_by_id(collection_id: RmrkCollectionId, nft_by_id: RmrkNftId) -> Result<Option<RmrkInstanceInfo<AccountId>>, DispatchError> {
1341 pallet_proxy_rmrk_core::rpc::nft_by_id::<Runtime>(collection_id, nft_by_id)
1342 }
1343
1344 fn account_tokens(account_id: AccountId, collection_id: RmrkCollectionId) -> Result<Vec<RmrkNftId>, DispatchError> {
1345 pallet_proxy_rmrk_core::rpc::account_tokens::<Runtime>(account_id, collection_id)
1346 }
1347
1348 fn nft_children(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkNftChild>, DispatchError> {
1349 pallet_proxy_rmrk_core::rpc::nft_children::<Runtime>(collection_id, nft_id)
1350 }
1351
1352 fn collection_properties(collection_id: RmrkCollectionId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
1353 pallet_proxy_rmrk_core::rpc::collection_properties::<Runtime>(collection_id, filter_keys)
1354 }
1355
1356 fn nft_properties(collection_id: RmrkCollectionId, nft_id: RmrkNftId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
1357 pallet_proxy_rmrk_core::rpc::nft_properties::<Runtime>(collection_id, nft_id, filter_keys)
1358 }
1359
1360 fn nft_resources(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkResourceInfo>, DispatchError> {
1361 pallet_proxy_rmrk_core::rpc::nft_resources::<Runtime>(collection_id, nft_id)
1362 }
1363
1364 fn nft_resource_priority(collection_id: RmrkCollectionId, nft_id: RmrkNftId, resource_id: RmrkResourceId) -> Result<Option<u32>, DispatchError> {
1365 pallet_proxy_rmrk_core::rpc::nft_resource_priority::<Runtime>(collection_id, nft_id, resource_id)
1366 }
1367
1368 fn base(base_id: RmrkBaseId) -> Result<Option<RmrkBaseInfo<AccountId>>, DispatchError> {
1369 pallet_proxy_rmrk_equip::rpc::base::<Runtime>(base_id)
1370 }
1371
1372 fn base_parts(base_id: RmrkBaseId) -> Result<Vec<RmrkPartType>, DispatchError> {
1373 pallet_proxy_rmrk_equip::rpc::base_parts::<Runtime>(base_id)
1374 }
1375
1376 fn theme_names(base_id: RmrkBaseId) -> Result<Vec<RmrkThemeName>, DispatchError> {
1377 pallet_proxy_rmrk_equip::rpc::theme_names::<Runtime>(base_id)
1378 }
1379
1380 fn theme(base_id: RmrkBaseId, theme_name: RmrkThemeName, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Option<RmrkTheme>, DispatchError> {
1381 pallet_proxy_rmrk_equip::rpc::theme::<Runtime>(base_id, theme_name, filter_keys)
1382 }
1383 }
1384}
13201385
1321struct CheckInherents;1386struct CheckInherents;
13221387
modifiedruntime/tests/src/tests.rsdiffbeforeafterboth
1264 let collection1_id =1264 let collection1_id =
1265 create_test_collection_for_owner(&CollectionMode::NFT, 1, CollectionId(1));1265 create_test_collection_for_owner(&CollectionMode::NFT, 1, CollectionId(1));
1266 let origin1 = Origin::signed(1);1266 let origin1 = Origin::signed(1);
1267 let origin2 = Origin::signed(2);
12681267
1269 // Add collection admins 2 and 31268 // Add collection admins 2 and 3
1270 assert_ok!(Unique::add_collection_admin(1269 assert_ok!(Unique::add_collection_admin(
1273 account(2)1272 account(2)
1274 ));1273 ));
1275 assert_ok!(Unique::add_collection_admin(1274 assert_ok!(Unique::add_collection_admin(
1276 origin1,1275 origin1.clone(),
1277 collection1_id,1276 collection1_id,
1278 account(3)1277 account(3)
1279 ));1278 ));
12891288
1290 // remove admin 31289 // remove admin 3
1291 assert_ok!(Unique::remove_collection_admin(1290 assert_ok!(Unique::remove_collection_admin(
1292 origin2,1291 origin1,
1293 CollectionId(1),1292 CollectionId(1),
1294 account(3)1293 account(3)
1295 ));1294 ));
modifiedruntime/unique/Cargo.tomldiffbeforeafterboth
10license = 'GPLv3'10license = 'GPLv3'
11name = 'unique-runtime'11name = 'unique-runtime'
12repository = 'https://github.com/UniqueNetwork/unique-chain'12repository = 'https://github.com/UniqueNetwork/unique-chain'
13version = '0.9.22'13version = '0.9.23'
1414
15[package.metadata.docs.rs]15[package.metadata.docs.rs]
16targets = ['x86_64-unknown-linux-gnu']16targets = ['x86_64-unknown-linux-gnu']
1717
18[features]18[features]
19default = ['std']19default = ['std', 'unique-runtime']
20runtime-benchmarks = [20runtime-benchmarks = [
21 'hex-literal',21 'hex-literal',
22 'frame-benchmarking',22 'frame-benchmarking',
37 'pallet-proxy-rmrk-equip/runtime-benchmarks',37 'pallet-proxy-rmrk-equip/runtime-benchmarks',
38 'pallet-unique/runtime-benchmarks',38 'pallet-unique/runtime-benchmarks',
39 'pallet-inflation/runtime-benchmarks',39 'pallet-inflation/runtime-benchmarks',
40 'pallet-unique-scheduler/runtime-benchmarks',
40 'pallet-xcm/runtime-benchmarks',41 'pallet-xcm/runtime-benchmarks',
41 'sp-runtime/runtime-benchmarks',42 'sp-runtime/runtime-benchmarks',
42 'xcm-builder/runtime-benchmarks',43 'xcm-builder/runtime-benchmarks',
95 'pallet-proxy-rmrk-core/std',96 'pallet-proxy-rmrk-core/std',
96 'pallet-proxy-rmrk-equip/std',97 'pallet-proxy-rmrk-equip/std',
97 'pallet-unique/std',98 'pallet-unique/std',
98 'pallet-unq-scheduler/std',99 'pallet-unique-scheduler/std',
99 'pallet-charge-transaction/std',100 'pallet-charge-transaction/std',
100 'up-data-structs/std',101 'up-data-structs/std',
101 'sp-api/std',102 'sp-api/std',
118 "orml-vesting/std",119 "orml-vesting/std",
119]120]
120limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing']121limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing']
122unique-runtime = []
121123
122################################################################################124################################################################################
123# Substrate Dependencies125# Substrate Dependencies
412pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }414pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }
413pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" }415pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" }
414pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" }416pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" }
415pallet-unq-scheduler = { path = '../../pallets/scheduler', default-features = false }417pallet-unique-scheduler = { path = '../../pallets/scheduler', default-features = false }
416# pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' }418# pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' }
417pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.23", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }419pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.23", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }
418pallet-evm-migration = { path = '../../pallets/evm-migration', default-features = false }420pallet-evm-migration = { path = '../../pallets/evm-migration', default-features = false }
modifiedruntime/unique/src/lib.rsdiffbeforeafterboth
69 WeightToFee,69 WeightToFee,
70 },70 },
71};71};
72use pallet_unq_scheduler::DispatchCall;72use pallet_unique_scheduler::DispatchCall;
73use up_data_structs::{73use up_data_structs::{
74 CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits,74 CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits,
75 CollectionStats, RpcCollection,75 CollectionStats, RpcCollection,
76 mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping},76 mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping},
77 TokenChild, RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo,77 TokenChild, RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo,
78 RmrkBaseInfo, RmrkPartType, RmrkTheme, RmrkThemeName, RmrkThemeProperty, RmrkCollectionId,78 RmrkBaseInfo, RmrkPartType, RmrkTheme, RmrkThemeName, RmrkCollectionId, RmrkNftId,
79 RmrkNftId, RmrkAccountIdOrCollectionNftTuple, RmrkNftChild, RmrkPropertyKey, RmrkResourceTypes,79 RmrkNftChild, RmrkPropertyKey, RmrkResourceId, RmrkBaseId,
80 RmrkBasicResource, RmrkComposableResource, RmrkSlotResource, RmrkResourceId, RmrkBaseId,
81 RmrkFixedPart, RmrkSlotPart, RmrkString,
82};80};
8381
84// use pallet_contracts::weights::WeightInfo;82// use pallet_contracts::weights::WeightInfo;
192 spec_name: create_runtime_str!(RUNTIME_NAME),190 spec_name: create_runtime_str!(RUNTIME_NAME),
193 impl_name: create_runtime_str!(RUNTIME_NAME),191 impl_name: create_runtime_str!(RUNTIME_NAME),
194 authoring_version: 1,192 authoring_version: 1,
195 spec_version: 922000,193 spec_version: 923000,
196 impl_version: 0,194 impl_version: 0,
197 apis: RUNTIME_API_VERSIONS,195 apis: RUNTIME_API_VERSIONS,
198 transaction_version: 1,196 transaction_version: 1,
917 type WeightInfo = pallet_nonfungible::weights::SubstrateWeight<Self>;915 type WeightInfo = pallet_nonfungible::weights::SubstrateWeight<Self>;
918}916}
919
920impl pallet_proxy_rmrk_core::Config for Runtime {
921 type WeightInfo = pallet_proxy_rmrk_core::weights::SubstrateWeight<Self>;
922 type Event = Event;
923}
924
925impl pallet_proxy_rmrk_equip::Config for Runtime {
926 type Event = Event;
927}
928917
929impl pallet_unique::Config for Runtime {918impl pallet_unique::Config for Runtime {
930 type Event = Event;919 type Event = Event;
968}957}
969958
970pub struct SchedulerPaymentExecutor;959pub struct SchedulerPaymentExecutor;
971impl<T: frame_system::Config + pallet_unq_scheduler::Config, SelfContainedSignedInfo>960impl<T: frame_system::Config + pallet_unique_scheduler::Config, SelfContainedSignedInfo>
972 DispatchCall<T, SelfContainedSignedInfo> for SchedulerPaymentExecutor961 DispatchCall<T, SelfContainedSignedInfo> for SchedulerPaymentExecutor
973where962where
974 <T as frame_system::Config>::Call: Member963 <T as frame_system::Config>::Call: Member
978 + From<frame_system::Call<Runtime>>,967 + From<frame_system::Call<Runtime>>,
979 SelfContainedSignedInfo: Send + Sync + 'static,968 SelfContainedSignedInfo: Send + Sync + 'static,
980 Call: From<<T as frame_system::Config>::Call>969 Call: From<<T as frame_system::Config>::Call>
981 + From<<T as pallet_unq_scheduler::Config>::Call>970 + From<<T as pallet_unique_scheduler::Config>::Call>
982 + SelfContainedCall<SignedInfo = SelfContainedSignedInfo>,971 + SelfContainedCall<SignedInfo = SelfContainedSignedInfo>,
983 sp_runtime::AccountId32: From<<T as frame_system::Config>::AccountId>,972 sp_runtime::AccountId32: From<<T as frame_system::Config>::AccountId>,
984{973{
985 fn dispatch_call(974 fn dispatch_call(
986 signer: <T as frame_system::Config>::AccountId,975 signer: <T as frame_system::Config>::AccountId,
987 call: <T as pallet_unq_scheduler::Config>::Call,976 call: <T as pallet_unique_scheduler::Config>::Call,
988 ) -> Result<977 ) -> Result<
989 Result<PostDispatchInfo, DispatchErrorWithPostInfo<PostDispatchInfo>>,978 Result<PostDispatchInfo, DispatchErrorWithPostInfo<PostDispatchInfo>>,
990 TransactionValidityError,979 TransactionValidityError,
1010 fn reserve_balance(999 fn reserve_balance(
1011 id: [u8; 16],1000 id: [u8; 16],
1012 sponsor: <T as frame_system::Config>::AccountId,1001 sponsor: <T as frame_system::Config>::AccountId,
1013 call: <T as pallet_unq_scheduler::Config>::Call,1002 call: <T as pallet_unique_scheduler::Config>::Call,
1014 count: u32,1003 count: u32,
1015 ) -> Result<(), DispatchError> {1004 ) -> Result<(), DispatchError> {
1016 let dispatch_info = call.get_dispatch_info();1005 let dispatch_info = call.get_dispatch_info();
1027 fn pay_for_call(1016 fn pay_for_call(
1028 id: [u8; 16],1017 id: [u8; 16],
1029 sponsor: <T as frame_system::Config>::AccountId,1018 sponsor: <T as frame_system::Config>::AccountId,
1030 call: <T as pallet_unq_scheduler::Config>::Call,1019 call: <T as pallet_unique_scheduler::Config>::Call,
1031 ) -> Result<u128, DispatchError> {1020 ) -> Result<u128, DispatchError> {
1032 let dispatch_info = call.get_dispatch_info();1021 let dispatch_info = call.get_dispatch_info();
1033 let weight: Balance = ChargeTransactionPayment::traditional_fee(0, &dispatch_info, 0);1022 let weight: Balance = ChargeTransactionPayment::traditional_fee(0, &dispatch_info, 0);
1068 }1057 }
1069}1058}
10701059
1071impl pallet_unq_scheduler::Config for Runtime {1060impl pallet_unique_scheduler::Config for Runtime {
1072 type Event = Event;1061 type Event = Event;
1073 type Origin = Origin;1062 type Origin = Origin;
1074 type Currency = Balances;1063 type Currency = Balances;
1156 // Unique Pallets1145 // Unique Pallets
1157 Inflation: pallet_inflation::{Pallet, Call, Storage} = 60,1146 Inflation: pallet_inflation::{Pallet, Call, Storage} = 60,
1158 Unique: pallet_unique::{Pallet, Call, Storage, Event<T>} = 61,1147 Unique: pallet_unique::{Pallet, Call, Storage, Event<T>} = 61,
1159 Scheduler: pallet_unq_scheduler::{Pallet, Call, Storage, Event<T>} = 62,1148 Scheduler: pallet_unique_scheduler::{Pallet, Call, Storage, Event<T>} = 62,
1160 // free = 631149 // free = 63
1161 Charging: pallet_charge_transaction::{Pallet, Call, Storage } = 64,1150 Charging: pallet_charge_transaction::{Pallet, Call, Storage } = 64,
1162 // ContractHelpers: pallet_contract_helpers::{Pallet, Call, Storage} = 65,1151 // ContractHelpers: pallet_contract_helpers::{Pallet, Call, Storage} = 65,
1165 Refungible: pallet_refungible::{Pallet, Storage} = 68,1154 Refungible: pallet_refungible::{Pallet, Storage} = 68,
1166 Nonfungible: pallet_nonfungible::{Pallet, Storage} = 69,1155 Nonfungible: pallet_nonfungible::{Pallet, Storage} = 69,
1167 Structure: pallet_structure::{Pallet, Call, Storage, Event<T>} = 70,1156 Structure: pallet_structure::{Pallet, Call, Storage, Event<T>} = 70,
1168 RmrkCore: pallet_proxy_rmrk_core::{Pallet, Call, Storage, Event<T>} = 71,
1169 RmrkEquip: pallet_proxy_rmrk_equip::{Pallet, Call, Storage, Event<T>} = 72,
11701157
1171 // Frontier1158 // Frontier
1172 EVM: pallet_evm::{Pallet, Config, Call, Storage, Event<T>} = 100,1159 EVM: pallet_evm::{Pallet, Config, Call, Storage, Event<T>} = 100,
1314 }};1301 }};
1315}1302}
13161303
1317impl_common_runtime_apis!();1304impl_common_runtime_apis! {
1305 #![custom_apis]
1306
1307 impl rmrk_rpc::RmrkApi<
1308 Block,
1309 AccountId,
1310 RmrkCollectionInfo<AccountId>,
1311 RmrkInstanceInfo<AccountId>,
1312 RmrkResourceInfo,
1313 RmrkPropertyInfo,
1314 RmrkBaseInfo<AccountId>,
1315 RmrkPartType,
1316 RmrkTheme
1317 > for Runtime {
1318 fn last_collection_idx() -> Result<RmrkCollectionId, DispatchError> {
1319 Ok(Default::default())
1320 }
1321
1322 fn collection_by_id(_collection_id: RmrkCollectionId) -> Result<Option<RmrkCollectionInfo<AccountId>>, DispatchError> {
1323 Ok(Default::default())
1324 }
1325
1326 fn nft_by_id(_collection_id: RmrkCollectionId, _nft_by_id: RmrkNftId) -> Result<Option<RmrkInstanceInfo<AccountId>>, DispatchError> {
1327 Ok(Default::default())
1328 }
1329
1330 fn account_tokens(_account_id: AccountId, _collection_id: RmrkCollectionId) -> Result<Vec<RmrkNftId>, DispatchError> {
1331 Ok(Default::default())
1332 }
1333
1334 fn nft_children(_collection_id: RmrkCollectionId, _nft_id: RmrkNftId) -> Result<Vec<RmrkNftChild>, DispatchError> {
1335 Ok(Default::default())
1336 }
1337
1338 fn collection_properties(_collection_id: RmrkCollectionId, _filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
1339 Ok(Default::default())
1340 }
1341
1342 fn nft_properties(_collection_id: RmrkCollectionId, _nft_id: RmrkNftId, _filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
1343 Ok(Default::default())
1344 }
1345
1346 fn nft_resources(_collection_id: RmrkCollectionId, _nft_id: RmrkNftId) -> Result<Vec<RmrkResourceInfo>, DispatchError> {
1347 Ok(Default::default())
1348 }
1349
1350 fn nft_resource_priority(_collection_id: RmrkCollectionId, _nft_id: RmrkNftId, _resource_id: RmrkResourceId) -> Result<Option<u32>, DispatchError> {
1351 Ok(Default::default())
1352 }
1353
1354 fn base(_base_id: RmrkBaseId) -> Result<Option<RmrkBaseInfo<AccountId>>, DispatchError> {
1355 Ok(Default::default())
1356 }
1357
1358 fn base_parts(_base_id: RmrkBaseId) -> Result<Vec<RmrkPartType>, DispatchError> {
1359 Ok(Default::default())
1360 }
1361
1362 fn theme_names(_base_id: RmrkBaseId) -> Result<Vec<RmrkThemeName>, DispatchError> {
1363 Ok(Default::default())
1364 }
1365
1366 fn theme(_base_id: RmrkBaseId, _theme_name: RmrkThemeName, _filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Option<RmrkTheme>, DispatchError> {
1367 Ok(Default::default())
1368 }
1369 }
1370}
13181371
1319struct CheckInherents;1372struct CheckInherents;
13201373
modifiedtests/package.jsondiffbeforeafterboth
28 "test": "mocha --timeout 9999999 -r ts-node/register './src/**/*.test.ts'",28 "test": "mocha --timeout 9999999 -r ts-node/register './src/**/*.test.ts'",
29 "testEth": "mocha --timeout 9999999 -r ts-node/register './**/eth/**/*.test.ts'",29 "testEth": "mocha --timeout 9999999 -r ts-node/register './**/eth/**/*.test.ts'",
30 "testEthMarketplace": "mocha --timeout 9999999 -r ts-node/register './**/eth/marketplace/**/*.test.ts'",30 "testEthMarketplace": "mocha --timeout 9999999 -r ts-node/register './**/eth/marketplace/**/*.test.ts'",
31 "testEthNesting": "mocha --timeout 9999999 -r ts-node/register './**/eth/nesting/**/*.test.ts'",
31 "load": "mocha --timeout 9999999 -r ts-node/register './**/*.load.ts'",32 "load": "mocha --timeout 9999999 -r ts-node/register './**/*.load.ts'",
32 "loadTransfer": "ts-node src/transfer.nload.ts",33 "loadTransfer": "ts-node src/transfer.nload.ts",
33 "testCollision": "mocha --timeout 9999999 -r ts-node/register ./src/collision-tests/*.test.ts",34 "testCollision": "mocha --timeout 9999999 -r ts-node/register ./src/collision-tests/*.test.ts",
modifiedtests/src/approve.test.tsdiffbeforeafterboth
28 setCollectionLimitsExpectSuccess,28 setCollectionLimitsExpectSuccess,
29 transferExpectSuccess,29 transferExpectSuccess,
30 addCollectionAdminExpectSuccess,30 addCollectionAdminExpectSuccess,
31 adminApproveFromExpectSuccess,31 adminApproveFromExpectFail,
32 getCreatedCollectionCount,32 getCreatedCollectionCount,
33 transferFromExpectSuccess,33 transferFromExpectSuccess,
34 transferFromExpectFail,34 transferFromExpectFail,
84 await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, alice, bob.address, 0);84 await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, alice, bob.address, 0);
85 });85 });
8686
87 it('can be called by collection owner on non-owned item when OwnerCanTransfer == true', async () => {87 it('can`t be called by collection owner on non-owned item when OwnerCanTransfer == false', async () => {
88 const collectionId = await createCollectionExpectSuccess();88 const collectionId = await createCollectionExpectSuccess();
89 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', bob.address);89 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', bob.address);
9090
91 await adminApproveFromExpectSuccess(collectionId, itemId, alice, bob.address, charlie.address);91 await adminApproveFromExpectFail(collectionId, itemId, alice, bob.address, charlie.address);
92 });92 });
93});93});
9494
292 });292 });
293});293});
294294
295describe('Administrator and collection owner do not need approval in order to execute TransferFrom:', () => {295describe('Administrator and collection owner do not need approval in order to execute TransferFrom (with owner_can_transfer_flag = true):', () => {
296 let alice: IKeyringPair;296 let alice: IKeyringPair;
297 let bob: IKeyringPair;297 let bob: IKeyringPair;
298 let charlie: IKeyringPair;298 let charlie: IKeyringPair;
309309
310 it('NFT', async () => {310 it('NFT', async () => {
311 const collectionId = await createCollectionExpectSuccess();311 const collectionId = await createCollectionExpectSuccess();
312 await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});
312 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', charlie.address);313 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', charlie.address);
313 await transferFromExpectSuccess(collectionId, itemId, alice, charlie, dave, 1, 'NFT');314 await transferFromExpectSuccess(collectionId, itemId, alice, charlie, dave, 1, 'NFT');
314 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);315 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
317318
318 it('Fungible up to an approved amount', async () => {319 it('Fungible up to an approved amount', async () => {
319 const collectionId = await createCollectionExpectSuccess({mode:{type: 'Fungible', decimalPoints: 0}});320 const collectionId = await createCollectionExpectSuccess({mode:{type: 'Fungible', decimalPoints: 0}});
321 await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});
320 const itemId = await createItemExpectSuccess(alice, collectionId, 'Fungible', charlie.address); 322 const itemId = await createItemExpectSuccess(alice, collectionId, 'Fungible', charlie.address);
321 await transferFromExpectSuccess(collectionId, itemId, alice, charlie, dave, 1, 'Fungible');323 await transferFromExpectSuccess(collectionId, itemId, alice, charlie, dave, 1, 'Fungible');
322 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);324 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
325327
326 it('ReFungible up to an approved amount', async () => {328 it('ReFungible up to an approved amount', async () => {
327 const collectionId = await createCollectionExpectSuccess({mode:{type: 'ReFungible'}});329 const collectionId = await createCollectionExpectSuccess({mode:{type: 'ReFungible'}});
330 await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});
328 const itemId = await createItemExpectSuccess(alice, collectionId, 'ReFungible', charlie.address);331 const itemId = await createItemExpectSuccess(alice, collectionId, 'ReFungible', charlie.address);
329 await transferFromExpectSuccess(collectionId, itemId, alice, charlie, dave, 1, 'ReFungible');332 await transferFromExpectSuccess(collectionId, itemId, alice, charlie, dave, 1, 'ReFungible');
330 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);333 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
402 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', alice.address);405 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', alice.address);
403406
404 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);407 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
405 await adminApproveFromExpectSuccess(collectionId, itemId, bob, alice.address, charlie.address);408 await adminApproveFromExpectFail(collectionId, itemId, bob, alice.address, charlie.address);
406 });409 });
407});410});
408411
modifiedtests/src/burnItem.test.tsdiffbeforeafterboth
23 normalizeAccountId,23 normalizeAccountId,
24 addCollectionAdminExpectSuccess,24 addCollectionAdminExpectSuccess,
25 getBalance,25 getBalance,
26 setCollectionLimitsExpectSuccess,
26 isTokenExists,27 isTokenExists,
27} from './util/helpers';28} from './util/helpers';
2829
149 it('Burn item in NFT collection', async () => {150 it('Burn item in NFT collection', async () => {
150 const createMode = 'NFT';151 const createMode = 'NFT';
151 const collectionId = await createCollectionExpectSuccess({mode: {type: createMode}});152 const collectionId = await createCollectionExpectSuccess({mode: {type: createMode}});
153 await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});
152 const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);154 const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);
153 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);155 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
154156
167 it('Burn item in Fungible collection', async () => {169 it('Burn item in Fungible collection', async () => {
168 const createMode = 'Fungible';170 const createMode = 'Fungible';
169 const collectionId = await createCollectionExpectSuccess({mode: {type: createMode, decimalPoints: 0}});171 const collectionId = await createCollectionExpectSuccess({mode: {type: createMode, decimalPoints: 0}});
172 await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});
170 const tokenId = await createItemExpectSuccess(alice, collectionId, createMode); // Helper creates 10 fungible tokens173 const tokenId = await createItemExpectSuccess(alice, collectionId, createMode); // Helper creates 10 fungible tokens
171 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);174 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
172175
189 it('Burn item in ReFungible collection', async () => {192 it('Burn item in ReFungible collection', async () => {
190 const createMode = 'ReFungible';193 const createMode = 'ReFungible';
191 const collectionId = await createCollectionExpectSuccess({mode: {type: createMode}});194 const collectionId = await createCollectionExpectSuccess({mode: {type: createMode}});
195 await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});
192 const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);196 const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);
193 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);197 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
194198
modifiedtests/src/createMultipleItems.test.tsdiffbeforeafterboth
48 const alice = privateKeyWrapper('//Alice');48 const alice = privateKeyWrapper('//Alice');
49 await submitTransactionAsync(49 await submitTransactionAsync(
50 alice, 50 alice,
51 api.tx.unique.setPropertyPermissions(collectionId, [{key: 'data', permission: {tokenOwner: true}}]),51 api.tx.unique.setTokenPropertyPermissions(collectionId, [{key: 'data', permission: {tokenOwner: true}}]),
52 );52 );
53 53
54 const args = [54 const args = [
470470
471 const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});471 const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
472472
473 const tx1 = api.tx.unique.setPropertyPermissions(collectionId, propPerms);473 const tx1 = api.tx.unique.setTokenPropertyPermissions(collectionId, propPerms);
474 await expect(executeTransaction(api, alice, tx1)).to.be.rejectedWith(/common\.PropertyLimitReached/);474 await expect(executeTransaction(api, alice, tx1)).to.be.rejectedWith(/common\.PropertyLimitReached/);
475475
476 const itemsListIndexBefore = await getLastTokenId(api, collectionId);476 const itemsListIndexBefore = await getLastTokenId(api, collectionId);
modifiedtests/src/createMultipleItemsEx.test.tsdiffbeforeafterboth
222 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});222 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
223 await usingApi(async (api, privateKeyWrapper) => {223 await usingApi(async (api, privateKeyWrapper) => {
224 const alice = privateKeyWrapper('//Alice');224 const alice = privateKeyWrapper('//Alice');
225 await expect(executeTransaction(api, alice, api.tx.unique.setPropertyPermissions(collection, propPerms))).to.be.rejectedWith(/common\.PropertyLimitReached/);225 await expect(executeTransaction(api, alice, api.tx.unique.setTokenPropertyPermissions(collection, propPerms))).to.be.rejectedWith(/common\.PropertyLimitReached/);
226 });226 });
227 });227 });
228228
modifiedtests/src/eth/api/UniqueNFT.soldiffbeforeafterboth
174 function finishMinting() external returns (bool);174 function finishMinting() external returns (bool);
175}175}
176
177// Selector: 6aea9834
178interface Collection is Dummy, ERC165 {
179 // Selector: setCollectionProperty(string,bytes) 2f073f66
180 function setCollectionProperty(string memory key, bytes memory value)
181 external;
182
183 // Selector: deleteCollectionProperty(string) 7b7debce
184 function deleteCollectionProperty(string memory key) external;
185
186 // Throws error if key not found
187 //
188 // Selector: collectionProperty(string) cf24fd6d
189 function collectionProperty(string memory key)
190 external
191 view
192 returns (bytes memory);
193
194 // Selector: setCollectionSponsor(address) 7623402e
195 function setCollectionSponsor(address sponsor) external;
196
197 // Selector: confirmCollectionSponsorship() 3c50e97a
198 function confirmCollectionSponsorship() external;
199
200 // Selector: setCollectionLimit(string,uint32) 6a3841db
201 function setCollectionLimit(string memory limit, uint32 value) external;
202
203 // Selector: setCollectionLimit(string,bool) 993b7fba
204 function setCollectionLimit(string memory limit, bool value) external;
205
206 // Selector: contractAddress() f6b4dfb4
207 function contractAddress() external view returns (address);
208
209 // Selector: addCollectionAdmin(address) 92e462c7
210 function addCollectionAdmin(address newAdmin) external view;
211
212 // Selector: removeCollectionAdmin(address) fafd7b42
213 function removeCollectionAdmin(address admin) external view;
214
215 // Selector: setCollectionNesting(bool) 112d4586
216 function setCollectionNesting(bool enable) external;
217
218 // Selector: setCollectionNesting(bool,address[]) 64872396
219 function setCollectionNesting(bool enable, address[] memory collections)
220 external;
221
222 // Selector: setCollectionAccess(uint8) 41835d4c
223 function setCollectionAccess(uint8 mode) external;
224
225 // Selector: addToCollectionAllowList(address) 67844fe6
226 function addToCollectionAllowList(address user) external view;
227
228 // Selector: removeFromCollectionAllowList(address) 85c51acb
229 function removeFromCollectionAllowList(address user) external view;
230
231 // Selector: setCollectionMintMode(bool) 00018e84
232 function setCollectionMintMode(bool mode) external;
233}
234176
235// Selector: 780e9d63177// Selector: 780e9d63
236interface ERC721Enumerable is Dummy, ERC165 {178interface ERC721Enumerable is Dummy, ERC165 {
249 function totalSupply() external view returns (uint256);191 function totalSupply() external view returns (uint256);
250}192}
193
194// Selector: 7d9262e6
195interface Collection is Dummy, ERC165 {
196 // Selector: setCollectionProperty(string,bytes) 2f073f66
197 function setCollectionProperty(string memory key, bytes memory value)
198 external;
199
200 // Selector: deleteCollectionProperty(string) 7b7debce
201 function deleteCollectionProperty(string memory key) external;
202
203 // Throws error if key not found
204 //
205 // Selector: collectionProperty(string) cf24fd6d
206 function collectionProperty(string memory key)
207 external
208 view
209 returns (bytes memory);
210
211 // Selector: setCollectionSponsor(address) 7623402e
212 function setCollectionSponsor(address sponsor) external;
213
214 // Selector: confirmCollectionSponsorship() 3c50e97a
215 function confirmCollectionSponsorship() external;
216
217 // Selector: setCollectionLimit(string,uint32) 6a3841db
218 function setCollectionLimit(string memory limit, uint32 value) external;
219
220 // Selector: setCollectionLimit(string,bool) 993b7fba
221 function setCollectionLimit(string memory limit, bool value) external;
222
223 // Selector: contractAddress() f6b4dfb4
224 function contractAddress() external view returns (address);
225
226 // Selector: addCollectionAdminSubstrate(uint256) 5730062b
227 function addCollectionAdminSubstrate(uint256 newAdmin) external view;
228
229 // Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
230 function removeCollectionAdminSubstrate(uint256 newAdmin) external view;
231
232 // Selector: addCollectionAdmin(address) 92e462c7
233 function addCollectionAdmin(address newAdmin) external view;
234
235 // Selector: removeCollectionAdmin(address) fafd7b42
236 function removeCollectionAdmin(address admin) external view;
237
238 // Selector: setCollectionNesting(bool) 112d4586
239 function setCollectionNesting(bool enable) external;
240
241 // Selector: setCollectionNesting(bool,address[]) 64872396
242 function setCollectionNesting(bool enable, address[] memory collections)
243 external;
244
245 // Selector: setCollectionAccess(uint8) 41835d4c
246 function setCollectionAccess(uint8 mode) external;
247
248 // Selector: addToCollectionAllowList(address) 67844fe6
249 function addToCollectionAllowList(address user) external view;
250
251 // Selector: removeFromCollectionAllowList(address) 85c51acb
252 function removeFromCollectionAllowList(address user) external view;
253
254 // Selector: setCollectionMintMode(bool) 00018e84
255 function setCollectionMintMode(bool mode) external;
256}
251257
252// Selector: d74d154f258// Selector: d74d154f
253interface ERC721UniqueExtensions is Dummy, ERC165 {259interface ERC721UniqueExtensions is Dummy, ERC165 {
addedtests/src/eth/collectionAdmin.test.tsdiffbeforeafterboth

no changes

modifiedtests/src/eth/contractSponsoring.test.tsdiffbeforeafterboth
233 const ss58Format = (api.registry.getChainProperties())!.toJSON().ss58Format;233 const ss58Format = (api.registry.getChainProperties())!.toJSON().ss58Format;
234 expect(collectionSub.sponsorship.isUnconfirmed).to.be.true;234 expect(collectionSub.sponsorship.isUnconfirmed).to.be.true;
235 expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));235 expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));
236 await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('Caller is not set as sponsor');236 await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('caller is not set as sponsor');
237237
238 await collectionEvm.methods.confirmCollectionSponsorship().send({from: sponsor});238 await collectionEvm.methods.confirmCollectionSponsorship().send({from: sponsor});
239 collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;239 collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;
240 expect(collectionSub.sponsorship.isConfirmed).to.be.true;240 expect(collectionSub.sponsorship.isConfirmed).to.be.true;
241 expect(collectionSub.sponsorship.asConfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));241 expect(collectionSub.sponsorship.asConfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));
242242
243 const user = createEthAccount(web3);243 const user = createEthAccount(web3);
244 let nextTokenId = await collectionEvm.methods.nextTokenId().call();244 const nextTokenId = await collectionEvm.methods.nextTokenId().call();
245 expect(nextTokenId).to.be.equal('1');245 expect(nextTokenId).to.be.equal('1');
246246
247 const oldPermissions = (await getDetailedCollectionInfo(api, collectionId))!.permissions.toHuman();247 const oldPermissions = (await getDetailedCollectionInfo(api, collectionId))!.permissions.toHuman();
248 expect(oldPermissions.mintMode).to.be.false;248 expect(oldPermissions.mintMode).to.be.false;
249 expect(oldPermissions.access).to.be.equal('Normal');249 expect(oldPermissions.access).to.be.equal('Normal');
250250
251 //TODO: change value, when enum generated
252 await collectionEvm.methods.setCollectionAccess(1 /*'AllowList'*/).send({from: owner});251 await collectionEvm.methods.setCollectionAccess(1 /*'AllowList'*/).send({from: owner});
253 await collectionEvm.methods.addToCollectionAllowList(user).send({from: owner});252 await collectionEvm.methods.addToCollectionAllowList(user).send({from: owner});
254 await collectionEvm.methods.setCollectionMintMode(true).send({from: owner});253 await collectionEvm.methods.setCollectionMintMode(true).send({from: owner});
260 const ownerBalanceBefore = await ethBalanceViaSub(api, owner);259 const ownerBalanceBefore = await ethBalanceViaSub(api, owner);
261 const sponsorBalanceBefore = await ethBalanceViaSub(api, sponsor);260 const sponsorBalanceBefore = await ethBalanceViaSub(api, sponsor);
262261
262 {
263 nextTokenId = await collectionEvm.methods.nextTokenId().call({from: user});263 const nextTokenId = await collectionEvm.methods.nextTokenId().call();
264 expect(nextTokenId).to.be.equal('1');264 expect(nextTokenId).to.be.equal('1');
265 result = await collectionEvm.methods.mintWithTokenURI(265 const result = await collectionEvm.methods.mintWithTokenURI(
266 user,266 user,
267 nextTokenId,267 nextTokenId,
268 'Test URI',268 'Test URI',
269 ).send({from: user});269 ).send({from: user});
270 const events = normalizeEvents(result.events);270 const events = normalizeEvents(result.events);
271 events[0].address = events[0].address.toLocaleLowerCase();
272271
273 expect(events).to.be.deep.equal([272 expect(events).to.be.deep.equal([
274 {273 {
275 address: collectionIdAddress.toLocaleLowerCase(),274 address: collectionIdAddress,
276 event: 'Transfer',275 event: 'Transfer',
277 args: {276 args: {
278 from: '0x0000000000000000000000000000000000000000',277 from: '0x0000000000000000000000000000000000000000',
282 },281 },
283 ]);282 ]);
283
284 const ownerBalanceAfter = await ethBalanceViaSub(api, owner);
285 const sponsorBalanceAfter = await ethBalanceViaSub(api, sponsor);
284286
285 expect(await collectionEvm.methods.tokenURI(nextTokenId).call()).to.be.equal('Test URI');287 expect(await collectionEvm.methods.tokenURI(nextTokenId).call()).to.be.equal('Test URI');
286
287 const ownerBalanceAfter = await ethBalanceViaSub(api, owner);
288 expect(ownerBalanceAfter).to.be.eq(ownerBalanceBefore);288 expect(ownerBalanceBefore).to.be.eq(ownerBalanceAfter);
289 const sponsorBalanceAfter = await ethBalanceViaSub(api, sponsor);
290 expect(sponsorBalanceAfter < sponsorBalanceBefore).to.be.true;289 expect(sponsorBalanceBefore > sponsorBalanceAfter).to.be.true;
290 }
291 });291 });
292292
293 itWeb3('Check that transaction via EVM spend money from sponsor address', async ({api, web3, privateKeyWrapper}) => {293 itWeb3('Check that transaction via EVM spend money from sponsor address', async ({api, web3, privateKeyWrapper}) => {
302 const ss58Format = (api.registry.getChainProperties())!.toJSON().ss58Format;302 const ss58Format = (api.registry.getChainProperties())!.toJSON().ss58Format;
303 expect(collectionSub.sponsorship.isUnconfirmed).to.be.true;303 expect(collectionSub.sponsorship.isUnconfirmed).to.be.true;
304 expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));304 expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));
305 await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('Caller is not set as sponsor');305 await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('caller is not set as sponsor');
306 const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress);306 const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress);
307 await sponsorCollection.methods.confirmCollectionSponsorship().send();307 await sponsorCollection.methods.confirmCollectionSponsorship().send();
308 collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;308 collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;
modifiedtests/src/eth/createCollection.test.tsdiffbeforeafterboth
80 expect(collectionSub.sponsorship.isUnconfirmed).to.be.true;80 expect(collectionSub.sponsorship.isUnconfirmed).to.be.true;
81 const ss58Format = (api.registry.getChainProperties())!.toJSON().ss58Format;81 const ss58Format = (api.registry.getChainProperties())!.toJSON().ss58Format;
82 expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));82 expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));
83 await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('Caller is not set as sponsor');83 await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('caller is not set as sponsor');
84 const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress);84 const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress);
85 await sponsorCollection.methods.confirmCollectionSponsorship().send();85 await sponsorCollection.methods.confirmCollectionSponsorship().send();
86 collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;86 collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;
208 const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress);208 const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress);
209 await expect(sponsorCollection.methods209 await expect(sponsorCollection.methods
210 .confirmCollectionSponsorship()210 .confirmCollectionSponsorship()
211 .call()).to.be.rejectedWith('Caller is not set as sponsor');211 .call()).to.be.rejectedWith('caller is not set as sponsor');
212 }212 }
213 {213 {
214 await expect(contractEvmFromNotOwner.methods214 await expect(contractEvmFromNotOwner.methods
225 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);225 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
226 await expect(collectionEvm.methods226 await expect(collectionEvm.methods
227 .setCollectionLimit('badLimit', 'true')227 .setCollectionLimit('badLimit', 'true')
228 .call()).to.be.rejectedWith('Unknown boolean limit "badLimit"');228 .call()).to.be.rejectedWith('unknown boolean limit "badLimit"');
229 });229 });
230});230});
modifiedtests/src/eth/crossTransfer.test.tsdiffbeforeafterboth
18 createFungibleItemExpectSuccess,18 createFungibleItemExpectSuccess,
19 transferExpectSuccess,19 transferExpectSuccess,
20 transferFromExpectSuccess,20 transferFromExpectSuccess,
21 setCollectionLimitsExpectSuccess,
21 createItemExpectSuccess} from '../util/helpers';22 createItemExpectSuccess} from '../util/helpers';
22import {collectionIdToAddress,23import {collectionIdToAddress,
23 createEthAccountWithBalance,24 createEthAccountWithBalance,
35 const alice = privateKeyWrapper('//Alice');36 const alice = privateKeyWrapper('//Alice');
36 const bob = privateKeyWrapper('//Bob');37 const bob = privateKeyWrapper('//Bob');
37 const charlie = privateKeyWrapper('//Charlie');38 const charlie = privateKeyWrapper('//Charlie');
39 await setCollectionLimitsExpectSuccess(alice, collection, {ownerCanTransfer: true});
38 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Substrate: alice.address});40 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Substrate: alice.address});
39 await transferExpectSuccess(collection, 0, alice, {Ethereum: subToEth(charlie.address)} , 200, 'Fungible');41 await transferExpectSuccess(collection, 0, alice, {Ethereum: subToEth(charlie.address)} , 200, 'Fungible');
40 await transferFromExpectSuccess(collection, 0, alice, {Ethereum: subToEth(charlie.address)}, charlie, 50, 'Fungible');42 await transferFromExpectSuccess(collection, 0, alice, {Ethereum: subToEth(charlie.address)}, charlie, 50, 'Fungible');
48 });50 });
49 const alice = privateKeyWrapper('//Alice');51 const alice = privateKeyWrapper('//Alice');
50 const bob = privateKeyWrapper('//Bob');52 const bob = privateKeyWrapper('//Bob');
53 await setCollectionLimitsExpectSuccess(alice, collection, {ownerCanTransfer: true});
51 const bobProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper);54 const bobProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
52 const aliceProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper);55 const aliceProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
5356
71 const alice = privateKeyWrapper('//Alice');74 const alice = privateKeyWrapper('//Alice');
72 const bob = privateKeyWrapper('//Bob');75 const bob = privateKeyWrapper('//Bob');
73 const charlie = privateKeyWrapper('//Charlie');76 const charlie = privateKeyWrapper('//Charlie');
77 await setCollectionLimitsExpectSuccess(alice, collection, {ownerCanTransfer: true});
74 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});78 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});
75 await transferExpectSuccess(collection, tokenId, alice, {Ethereum: subToEth(charlie.address)}, 1, 'NFT');79 await transferExpectSuccess(collection, tokenId, alice, {Ethereum: subToEth(charlie.address)}, 1, 'NFT');
76 await transferFromExpectSuccess(collection, tokenId, alice, {Ethereum: subToEth(charlie.address)}, charlie, 1, 'NFT');80 await transferFromExpectSuccess(collection, tokenId, alice, {Ethereum: subToEth(charlie.address)}, charlie, 1, 'NFT');
85 const alice = privateKeyWrapper('//Alice');89 const alice = privateKeyWrapper('//Alice');
86 const bob = privateKeyWrapper('//Bob');90 const bob = privateKeyWrapper('//Bob');
87 const charlie = privateKeyWrapper('//Charlie');91 const charlie = privateKeyWrapper('//Charlie');
92 await setCollectionLimitsExpectSuccess(alice, collection, {ownerCanTransfer: true});
88 const bobProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper);93 const bobProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
89 const aliceProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper);94 const aliceProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper);
90 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});95 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});
addedtests/src/eth/nesting/nest.test.tsdiffbeforeafterboth

no changes

modifiedtests/src/eth/nonFungibleAbi.jsondiffbeforeafterboth
89 "stateMutability": "view",89 "stateMutability": "view",
90 "type": "function"90 "type": "function"
91 },91 },
92 {
93 "inputs": [
94 { "internalType": "uint256", "name": "newAdmin", "type": "uint256" }
95 ],
96 "name": "addCollectionAdminSubstrate",
97 "outputs": [],
98 "stateMutability": "view",
99 "type": "function"
100 },
92 {101 {
93 "inputs": [102 "inputs": [
94 { "internalType": "address", "name": "user", "type": "address" }103 { "internalType": "address", "name": "user", "type": "address" }
298 "stateMutability": "view",307 "stateMutability": "view",
299 "type": "function"308 "type": "function"
300 },309 },
310 {
311 "inputs": [
312 { "internalType": "uint256", "name": "newAdmin", "type": "uint256" }
313 ],
314 "name": "removeCollectionAdminSubstrate",
315 "outputs": [],
316 "stateMutability": "view",
317 "type": "function"
318 },
301 {319 {
302 "inputs": [320 "inputs": [
303 { "internalType": "address", "name": "user", "type": "address" }321 { "internalType": "address", "name": "user", "type": "address" }
modifiedtests/src/eth/tokenProperties.test.tsdiffbeforeafterboth
29 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});29 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
30 const token = await createItemExpectSuccess(alice, collection, 'NFT');30 const token = await createItemExpectSuccess(alice, collection, 'NFT');
3131
32 await executeTransaction(api, alice, api.tx.unique.setPropertyPermissions(collection, [{32 await executeTransaction(api, alice, api.tx.unique.setTokenPropertyPermissions(collection, [{
33 key: 'testKey',33 key: 'testKey',
34 permission: {34 permission: {
35 collectionAdmin: true,35 collectionAdmin: true,
52 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});52 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
53 const token = await createItemExpectSuccess(alice, collection, 'NFT');53 const token = await createItemExpectSuccess(alice, collection, 'NFT');
5454
55 await executeTransaction(api, alice, api.tx.unique.setPropertyPermissions(collection, [{55 await executeTransaction(api, alice, api.tx.unique.setTokenPropertyPermissions(collection, [{
56 key: 'testKey',56 key: 'testKey',
57 permission: {57 permission: {
58 mutable: true,58 mutable: true,
77 const collection = await createCollectionExpectSuccess({mode: {type:'NFT'}});77 const collection = await createCollectionExpectSuccess({mode: {type:'NFT'}});
78 const token = await createItemExpectSuccess(alice, collection, 'NFT');78 const token = await createItemExpectSuccess(alice, collection, 'NFT');
7979
80 await executeTransaction(api, alice, api.tx.unique.setPropertyPermissions(collection, [{80 await executeTransaction(api, alice, api.tx.unique.setTokenPropertyPermissions(collection, [{
81 key: 'testKey',81 key: 'testKey',
82 permission: {82 permission: {
83 collectionAdmin: true,83 collectionAdmin: true,
modifiedtests/src/interfaces/augment-api-errors.tsdiffbeforeafterboth
458 ResourceNotPending: AugmentedError<ApiType>;458 ResourceNotPending: AugmentedError<ApiType>;
459 RmrkPropertyKeyIsTooLong: AugmentedError<ApiType>;459 RmrkPropertyKeyIsTooLong: AugmentedError<ApiType>;
460 RmrkPropertyValueIsTooLong: AugmentedError<ApiType>;460 RmrkPropertyValueIsTooLong: AugmentedError<ApiType>;
461 UnableToDecodeRmrkData: AugmentedError<ApiType>;
461 /**462 /**
462 * Generic error463 * Generic error
463 **/464 **/
modifiedtests/src/interfaces/augment-api-query.tsdiffbeforeafterboth
5import type { BTreeMap, Bytes, Option, U256, U8aFixed, Vec, bool, u128, u16, u32, u64 } from '@polkadot/types-codec';5import type { BTreeMap, Bytes, Option, U256, U8aFixed, Vec, bool, u128, u16, u32, u64 } from '@polkadot/types-codec';
6import type { AnyNumber, ITuple } from '@polkadot/types-codec/types';6import type { AnyNumber, ITuple } from '@polkadot/types-codec/types';
7import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime';7import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime';
8import 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, PalletUnqSchedulerScheduledV3, PhantomTypeUpDataStructs, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, SpRuntimeDigest, SpTrieStorageProof, UpDataStructsCollection, UpDataStructsCollectionStats, UpDataStructsProperties, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsPropertyPermission, UpDataStructsTokenChild } from '@polkadot/types/lookup';8import 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, UpDataStructsTokenChild } from '@polkadot/types/lookup';
9import type { Observable } from '@polkadot/types/types';9import type { Observable } from '@polkadot/types/types';
1010
11declare module '@polkadot/api-base/types/storage' {11declare module '@polkadot/api-base/types/storage' {
417 };417 };
418 rmrkCore: {418 rmrkCore: {
419 collectionIndex: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;419 collectionIndex: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
420 rmrkInernalCollectionId: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
421 uniqueCollectionId: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;420 uniqueCollectionId: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
422 /**421 /**
423 * Generic query422 * Generic query
436 /**435 /**
437 * Items to be executed, indexed by the block number that they should be executed on.436 * Items to be executed, indexed by the block number that they should be executed on.
438 **/437 **/
439 agenda: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Vec<Option<PalletUnqSchedulerScheduledV3>>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;438 agenda: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Vec<Option<PalletUniqueSchedulerScheduledV3>>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
440 /**439 /**
441 * Lookup from identity to the block number and index of the task.440 * Lookup from identity to the block number and index of the task.
442 **/441 **/
modifiedtests/src/interfaces/augment-api-tx.tsdiffbeforeafterboth
5import type { Bytes, Compact, Option, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';5import type { Bytes, Compact, Option, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';
6import type { AnyNumber, IMethod, ITuple } from '@polkadot/types-codec/types';6import type { AnyNumber, IMethod, ITuple } from '@polkadot/types-codec/types';
7import type { AccountId32, Call, H160, H256, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime';7import type { AccountId32, Call, H160, H256, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime';
8import type { CumulusPrimitivesParachainInherentParachainInherentData, EthereumTransactionTransactionV2, FrameSupportScheduleMaybeHashed, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsPartPartType, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCreateCollectionData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, XcmV1MultiLocation, XcmV2WeightLimit, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';8import type { CumulusPrimitivesParachainInherentParachainInherentData, EthereumTransactionTransactionV2, FrameSupportScheduleMaybeHashed, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsPartPartType, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCreateCollectionData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, XcmV1MultiLocation, XcmV2WeightLimit, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';
99
10declare module '@polkadot/api-base/types/submittable' {10declare module '@polkadot/api-base/types/submittable' {
11 export interface AugmentedSubmittables<ApiType extends ApiTypes> {11 export interface AugmentedSubmittables<ApiType extends ApiTypes> {
373 /**373 /**
374 * Create composable resource374 * Create composable resource
375 **/375 **/
376 addComposableResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resourceId: Bytes | string | Uint8Array, resource: RmrkTraitsResourceComposableResource | { parts?: any; base?: any; src?: any; metadata?: any; license?: any; thumb?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, Bytes, RmrkTraitsResourceComposableResource]>;376 addComposableResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resource: RmrkTraitsResourceComposableResource | { parts?: any; base?: any; src?: any; metadata?: any; license?: any; thumb?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, RmrkTraitsResourceComposableResource]>;
377 /**377 /**
378 * Create slot resource378 * Create slot resource
379 **/379 **/
380 addSlotResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resource: RmrkTraitsResourceSlotResource | { base?: any; src?: any; metadata?: any; slot?: any; license?: any; thumb?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, RmrkTraitsResourceSlotResource]>;380 addSlotResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resource: RmrkTraitsResourceSlotResource | { base?: any; src?: any; metadata?: any; slot?: any; license?: any; thumb?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, RmrkTraitsResourceSlotResource]>;
381 /**381 /**
382 * burn nft382 * burn nft
383 **/383 **/
384 burnNft: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32]>;384 burnNft: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, maxBurns: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, u32]>;
385 /**385 /**
386 * Change the issuer of a collection386 * Change the issuer of a collection
387 * 387 *
415 * - `metadata`: Arbitrary data about an nft, e.g. IPFS hash415 * - `metadata`: Arbitrary data about an nft, e.g. IPFS hash
416 * - `transferable`: Ability to transfer this NFT416 * - `transferable`: Ability to transfer this NFT
417 **/417 **/
418 mintNft: AugmentedSubmittable<(owner: AccountId32 | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, recipient: Option<AccountId32> | null | object | string | Uint8Array, royaltyAmount: Option<Permill> | null | object | string | Uint8Array, metadata: Bytes | string | Uint8Array, transferable: bool | boolean | Uint8Array) => SubmittableExtrinsic<ApiType>, [AccountId32, u32, Option<AccountId32>, Option<Permill>, Bytes, bool]>;418 mintNft: AugmentedSubmittable<(owner: AccountId32 | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, recipient: Option<AccountId32> | null | object | string | Uint8Array, royaltyAmount: Option<Permill> | null | object | string | Uint8Array, metadata: Bytes | string | Uint8Array, transferable: bool | boolean | Uint8Array, resources: Option<Vec<RmrkTraitsResourceResourceTypes>> | null | object | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [AccountId32, u32, Option<AccountId32>, Option<Permill>, Bytes, bool, Option<Vec<RmrkTraitsResourceResourceTypes>>]>;
419 /**419 /**
420 * Rejects an NFT sent from another account to self or owned NFT420 * Rejects an NFT sent from another account to self or owned NFT
421 * 421 *
974 * * new_sponsor.974 * * new_sponsor.
975 **/975 **/
976 setCollectionSponsor: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, newSponsor: AccountId32 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, AccountId32]>;976 setCollectionSponsor: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, newSponsor: AccountId32 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, AccountId32]>;
977 setPropertyPermissions: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, propertyPermissions: Vec<UpDataStructsPropertyKeyPermission> | (UpDataStructsPropertyKeyPermission | { key?: any; permission?: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [u32, Vec<UpDataStructsPropertyKeyPermission>]>;977 setTokenProperties: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, properties: Vec<UpDataStructsProperty> | (UpDataStructsProperty | { key?: any; value?: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [u32, u32, Vec<UpDataStructsProperty>]>;
978 setTokenProperties: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, properties: Vec<UpDataStructsProperty> | (UpDataStructsProperty | { key?: any; value?: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [u32, u32, Vec<UpDataStructsProperty>]>;978 setTokenPropertyPermissions: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, propertyPermissions: Vec<UpDataStructsPropertyKeyPermission> | (UpDataStructsPropertyKeyPermission | { key?: any; permission?: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [u32, Vec<UpDataStructsPropertyKeyPermission>]>;
979 /**979 /**
980 * Set transfers_enabled value for particular collection980 * Set transfers_enabled value for particular collection
981 * 981 *
modifiedtests/src/interfaces/augment-types.tsdiffbeforeafterboth
1// Auto-generated via `yarn polkadot-types-from-defs`, do not edit1// Auto-generated via `yarn polkadot-types-from-defs`, do not edit
2/* eslint-disable */2/* eslint-disable */
33
4import 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, FrameSupportWeightsWeightToFeeCoefficient, 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, 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, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletUnqSchedulerCall, PalletUnqSchedulerError, PalletUnqSchedulerEvent, PalletUnqSchedulerScheduledV3, 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, UpDataStructsCreateRefungibleExData, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, 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';4import 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, FrameSupportWeightsWeightToFeeCoefficient, 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, 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, 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, UpDataStructsCreateRefungibleExData, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, 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';
5import type { Data, StorageKey } from '@polkadot/types';5import type { Data, StorageKey } from '@polkadot/types';
6import type { BitVec, Bool, Bytes, I128, I16, I256, I32, I64, I8, Json, Null, OptionBool, Raw, Text, Type, U128, U16, U256, U32, U64, U8, USize, bool, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types-codec';6import type { BitVec, Bool, Bytes, I128, I16, I256, I32, I64, I8, Json, Null, OptionBool, Raw, Text, Type, U128, U16, U256, U32, U64, U8, USize, bool, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types-codec';
7import type { AssetApproval, AssetApprovalKey, AssetBalance, AssetDestroyWitness, AssetDetails, AssetMetadata, TAssetBalance, TAssetDepositBalance } from '@polkadot/types/interfaces/assets';7import type { AssetApproval, AssetApprovalKey, AssetBalance, AssetDestroyWitness, AssetDetails, AssetMetadata, TAssetBalance, TAssetDepositBalance } from '@polkadot/types/interfaces/assets';
819 PalletUniqueCall: PalletUniqueCall;819 PalletUniqueCall: PalletUniqueCall;
820 PalletUniqueError: PalletUniqueError;820 PalletUniqueError: PalletUniqueError;
821 PalletUniqueRawEvent: PalletUniqueRawEvent;821 PalletUniqueRawEvent: PalletUniqueRawEvent;
822 PalletUnqSchedulerCall: PalletUnqSchedulerCall;822 PalletUniqueSchedulerCall: PalletUniqueSchedulerCall;
823 PalletUnqSchedulerError: PalletUnqSchedulerError;823 PalletUniqueSchedulerError: PalletUniqueSchedulerError;
824 PalletUnqSchedulerEvent: PalletUnqSchedulerEvent;824 PalletUniqueSchedulerEvent: PalletUniqueSchedulerEvent;
825 PalletUnqSchedulerScheduledV3: PalletUnqSchedulerScheduledV3;825 PalletUniqueSchedulerScheduledV3: PalletUniqueSchedulerScheduledV3;
826 PalletVersion: PalletVersion;826 PalletVersion: PalletVersion;
827 PalletXcmCall: PalletXcmCall;827 PalletXcmCall: PalletXcmCall;
828 PalletXcmError: PalletXcmError;828 PalletXcmError: PalletXcmError;
modifiedtests/src/interfaces/default/types.tsdiffbeforeafterboth
1214 readonly royaltyAmount: Option<Permill>;1214 readonly royaltyAmount: Option<Permill>;
1215 readonly metadata: Bytes;1215 readonly metadata: Bytes;
1216 readonly transferable: bool;1216 readonly transferable: bool;
1217 readonly resources: Option<Vec<RmrkTraitsResourceResourceTypes>>;
1217 } & Struct;1218 } & Struct;
1218 readonly isBurnNft: boolean;1219 readonly isBurnNft: boolean;
1219 readonly asBurnNft: {1220 readonly asBurnNft: {
1220 readonly collectionId: u32;1221 readonly collectionId: u32;
1221 readonly nftId: u32;1222 readonly nftId: u32;
1223 readonly maxBurns: u32;
1222 } & Struct;1224 } & Struct;
1223 readonly isSend: boolean;1225 readonly isSend: boolean;
1224 readonly asSend: {1226 readonly asSend: {
1272 readonly asAddComposableResource: {1274 readonly asAddComposableResource: {
1273 readonly rmrkCollectionId: u32;1275 readonly rmrkCollectionId: u32;
1274 readonly nftId: u32;1276 readonly nftId: u32;
1275 readonly resourceId: Bytes;
1276 readonly resource: RmrkTraitsResourceComposableResource;1277 readonly resource: RmrkTraitsResourceComposableResource;
1277 } & Struct;1278 } & Struct;
1278 readonly isAddSlotResource: boolean;1279 readonly isAddSlotResource: boolean;
1296 readonly isNftTypeEncodeError: boolean;1297 readonly isNftTypeEncodeError: boolean;
1297 readonly isRmrkPropertyKeyIsTooLong: boolean;1298 readonly isRmrkPropertyKeyIsTooLong: boolean;
1298 readonly isRmrkPropertyValueIsTooLong: boolean;1299 readonly isRmrkPropertyValueIsTooLong: boolean;
1300 readonly isUnableToDecodeRmrkData: boolean;
1299 readonly isCollectionNotEmpty: boolean;1301 readonly isCollectionNotEmpty: boolean;
1300 readonly isNoAvailableCollectionId: boolean;1302 readonly isNoAvailableCollectionId: boolean;
1301 readonly isNoAvailableNftId: boolean;1303 readonly isNoAvailableNftId: boolean;
1308 readonly isCannotAcceptNonOwnedNft: boolean;1310 readonly isCannotAcceptNonOwnedNft: boolean;
1309 readonly isCannotRejectNonOwnedNft: boolean;1311 readonly isCannotRejectNonOwnedNft: boolean;
1310 readonly isResourceNotPending: boolean;1312 readonly isResourceNotPending: boolean;
1311 readonly type: 'CorruptedCollectionType' | 'NftTypeEncodeError' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'ResourceNotPending';1313 readonly type: 'CorruptedCollectionType' | 'NftTypeEncodeError' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'UnableToDecodeRmrkData' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'ResourceNotPending';
1312}1314}
13131315
1314/** @name PalletRmrkCoreEvent */1316/** @name PalletRmrkCoreEvent */
1688 readonly tokenId: u32;1690 readonly tokenId: u32;
1689 readonly propertyKeys: Vec<Bytes>;1691 readonly propertyKeys: Vec<Bytes>;
1690 } & Struct;1692 } & Struct;
1691 readonly isSetPropertyPermissions: boolean;1693 readonly isSetTokenPropertyPermissions: boolean;
1692 readonly asSetPropertyPermissions: {1694 readonly asSetTokenPropertyPermissions: {
1693 readonly collectionId: u32;1695 readonly collectionId: u32;
1694 readonly propertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;1696 readonly propertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;
1695 } & Struct;1697 } & Struct;
1748 readonly collectionId: u32;1750 readonly collectionId: u32;
1749 readonly newLimit: UpDataStructsCollectionPermissions;1751 readonly newLimit: UpDataStructsCollectionPermissions;
1750 } & Struct;1752 } & Struct;
1751 readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetCollectionLimits' | 'SetCollectionPermissions';1753 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';
1752}1754}
17531755
1754/** @name PalletUniqueError */1756/** @name PalletUniqueError */
1784 readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet';1786 readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet';
1785}1787}
17861788
1787/** @name PalletUnqSchedulerCall */1789/** @name PalletUniqueSchedulerCall */
1788export interface PalletUnqSchedulerCall extends Enum {1790export interface PalletUniqueSchedulerCall extends Enum {
1789 readonly isScheduleNamed: boolean;1791 readonly isScheduleNamed: boolean;
1790 readonly asScheduleNamed: {1792 readonly asScheduleNamed: {
1791 readonly id: U8aFixed;1793 readonly id: U8aFixed;
1809 readonly type: 'ScheduleNamed' | 'CancelNamed' | 'ScheduleNamedAfter';1811 readonly type: 'ScheduleNamed' | 'CancelNamed' | 'ScheduleNamedAfter';
1810}1812}
18111813
1812/** @name PalletUnqSchedulerError */1814/** @name PalletUniqueSchedulerError */
1813export interface PalletUnqSchedulerError extends Enum {1815export interface PalletUniqueSchedulerError extends Enum {
1814 readonly isFailedToSchedule: boolean;1816 readonly isFailedToSchedule: boolean;
1815 readonly isNotFound: boolean;1817 readonly isNotFound: boolean;
1816 readonly isTargetBlockNumberInPast: boolean;1818 readonly isTargetBlockNumberInPast: boolean;
1817 readonly isRescheduleNoChange: boolean;1819 readonly isRescheduleNoChange: boolean;
1818 readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange';1820 readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange';
1819}1821}
18201822
1821/** @name PalletUnqSchedulerEvent */1823/** @name PalletUniqueSchedulerEvent */
1822export interface PalletUnqSchedulerEvent extends Enum {1824export interface PalletUniqueSchedulerEvent extends Enum {
1823 readonly isScheduled: boolean;1825 readonly isScheduled: boolean;
1824 readonly asScheduled: {1826 readonly asScheduled: {
1825 readonly when: u32;1827 readonly when: u32;
1845 readonly type: 'Scheduled' | 'Canceled' | 'Dispatched' | 'CallLookupFailed';1847 readonly type: 'Scheduled' | 'Canceled' | 'Dispatched' | 'CallLookupFailed';
1846}1848}
18471849
1848/** @name PalletUnqSchedulerScheduledV3 */1850/** @name PalletUniqueSchedulerScheduledV3 */
1849export interface PalletUnqSchedulerScheduledV3 extends Struct {1851export interface PalletUniqueSchedulerScheduledV3 extends Struct {
1850 readonly maybeId: Option<U8aFixed>;1852 readonly maybeId: Option<U8aFixed>;
1851 readonly priority: u8;1853 readonly priority: u8;
1852 readonly call: FrameSupportScheduleMaybeHashed;1854 readonly call: FrameSupportScheduleMaybeHashed;
2427/** @name UpDataStructsNestingPermissions */2429/** @name UpDataStructsNestingPermissions */
2428export interface UpDataStructsNestingPermissions extends Struct {2430export interface UpDataStructsNestingPermissions extends Struct {
2429 readonly tokenOwner: bool;2431 readonly tokenOwner: bool;
2430 readonly admin: bool;2432 readonly collectionAdmin: bool;
2431 readonly restricted: Option<UpDataStructsOwnerRestrictedSet>;2433 readonly restricted: Option<UpDataStructsOwnerRestrictedSet>;
2432 readonly permissive: bool;2434 readonly permissive: bool;
2433}2435}
modifiedtests/src/interfaces/lookup.tsdiffbeforeafterboth
1313 tokenId: 'u32',1313 tokenId: 'u32',
1314 propertyKeys: 'Vec<Bytes>',1314 propertyKeys: 'Vec<Bytes>',
1315 },1315 },
1316 set_property_permissions: {1316 set_token_property_permissions: {
1317 collectionId: 'u32',1317 collectionId: 'u32',
1318 propertyPermissions: 'Vec<UpDataStructsPropertyKeyPermission>',1318 propertyPermissions: 'Vec<UpDataStructsPropertyKeyPermission>',
1319 },1319 },
1432 **/1432 **/
1433 UpDataStructsNestingPermissions: {1433 UpDataStructsNestingPermissions: {
1434 tokenOwner: 'bool',1434 tokenOwner: 'bool',
1435 admin: 'bool',1435 collectionAdmin: 'bool',
1436 restricted: 'Option<UpDataStructsOwnerRestrictedSet>',1436 restricted: 'Option<UpDataStructsOwnerRestrictedSet>',
1437 permissive: 'bool'1437 permissive: 'bool'
1438 },1438 },
1525 constData: 'Bytes',1525 constData: 'Bytes',
1526 users: 'BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>'1526 users: 'BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>'
1527 },1527 },
1528 /**1528 /**
1529 * Lookup206: pallet_unq_scheduler::pallet::Call<T>1529 * Lookup206: pallet_unique_scheduler::pallet::Call<T>
1530 **/1530 **/
1531 PalletUnqSchedulerCall: {1531 PalletUniqueSchedulerCall: {
1532 _enum: {1532 _enum: {
1533 schedule_named: {1533 schedule_named: {
1534 id: '[u8;16]',1534 id: '[u8;16]',
1593 royaltyAmount: 'Option<Permill>',1593 royaltyAmount: 'Option<Permill>',
1594 metadata: 'Bytes',1594 metadata: 'Bytes',
1595 transferable: 'bool',1595 transferable: 'bool',
1596 resources: 'Option<Vec<RmrkTraitsResourceResourceTypes>>',
1596 },1597 },
1597 burn_nft: {1598 burn_nft: {
1598 collectionId: 'u32',1599 collectionId: 'u32',
1599 nftId: 'u32',1600 nftId: 'u32',
1601 maxBurns: 'u32',
1600 },1602 },
1601 send: {1603 send: {
1602 rmrkCollectionId: 'u32',1604 rmrkCollectionId: 'u32',
1641 add_composable_resource: {1643 add_composable_resource: {
1642 rmrkCollectionId: 'u32',1644 rmrkCollectionId: 'u32',
1643 nftId: 'u32',1645 nftId: 'u32',
1644 resourceId: 'Bytes',
1645 resource: 'RmrkTraitsResourceComposableResource',1646 resource: 'RmrkTraitsResourceComposableResource',
1646 },1647 },
1647 add_slot_resource: {1648 add_slot_resource: {
1656 }1657 }
1657 }1658 }
1658 },1659 },
1659 /**1660 /**
1660 * Lookup215: rmrk_traits::nft::AccountIdOrCollectionNftTuple<sp_core::crypto::AccountId32>1661 * Lookup217: rmrk_traits::resource::ResourceTypes<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
1661 **/1662 **/
1662 RmrkTraitsNftAccountIdOrCollectionNftTuple: {1663 RmrkTraitsResourceResourceTypes: {
1663 _enum: {1664 _enum: {
1664 AccountId: 'AccountId32',1665 Basic: 'RmrkTraitsResourceBasicResource',
1666 Composable: 'RmrkTraitsResourceComposableResource',
1665 CollectionAndNftTuple: '(u32,u32)'1667 Slot: 'RmrkTraitsResourceSlotResource'
1666 }1668 }
1667 },1669 },
1668 /**1670 /**
1674 license: 'Option<Bytes>',1676 license: 'Option<Bytes>',
1675 thumb: 'Option<Bytes>'1677 thumb: 'Option<Bytes>'
1676 },1678 },
1677 /**1679 /**
1678 * Lookup222: rmrk_traits::resource::ComposableResource<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>1680 * Lookup221: rmrk_traits::resource::ComposableResource<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
1679 **/1681 **/
1680 RmrkTraitsResourceComposableResource: {1682 RmrkTraitsResourceComposableResource: {
1681 parts: 'Vec<u32>',1683 parts: 'Vec<u32>',
1682 base: 'u32',1684 base: 'u32',
1685 license: 'Option<Bytes>',1687 license: 'Option<Bytes>',
1686 thumb: 'Option<Bytes>'1688 thumb: 'Option<Bytes>'
1687 },1689 },
1688 /**1690 /**
1689 * Lookup224: rmrk_traits::resource::SlotResource<frame_support::storage::bounded_vec::BoundedVec<T, S>>1691 * Lookup222: rmrk_traits::resource::SlotResource<frame_support::storage::bounded_vec::BoundedVec<T, S>>
1690 **/1692 **/
1691 RmrkTraitsResourceSlotResource: {1693 RmrkTraitsResourceSlotResource: {
1692 base: 'u32',1694 base: 'u32',
1693 src: 'Option<Bytes>',1695 src: 'Option<Bytes>',
1696 license: 'Option<Bytes>',1698 license: 'Option<Bytes>',
1697 thumb: 'Option<Bytes>'1699 thumb: 'Option<Bytes>'
1698 },1700 },
1701 /**
1702 * Lookup224: rmrk_traits::nft::AccountIdOrCollectionNftTuple<sp_core::crypto::AccountId32>
1703 **/
1704 RmrkTraitsNftAccountIdOrCollectionNftTuple: {
1705 _enum: {
1706 AccountId: 'AccountId32',
1707 CollectionAndNftTuple: '(u32,u32)'
1708 }
1709 },
1699 /**1710 /**
1700 * Lookup225: pallet_rmrk_equip::pallet::Call<T>1711 * Lookup228: pallet_rmrk_equip::pallet::Call<T>
1701 **/1712 **/
1702 PalletRmrkEquipCall: {1713 PalletRmrkEquipCall: {
1703 _enum: {1714 _enum: {
1704 create_base: {1715 create_base: {
1712 }1723 }
1713 }1724 }
1714 },1725 },
1715 /**1726 /**
1716 * Lookup227: rmrk_traits::part::PartType<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>1727 * Lookup230: rmrk_traits::part::PartType<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
1717 **/1728 **/
1718 RmrkTraitsPartPartType: {1729 RmrkTraitsPartPartType: {
1719 _enum: {1730 _enum: {
1720 FixedPart: 'RmrkTraitsPartFixedPart',1731 FixedPart: 'RmrkTraitsPartFixedPart',
1721 SlotPart: 'RmrkTraitsPartSlotPart'1732 SlotPart: 'RmrkTraitsPartSlotPart'
1722 }1733 }
1723 },1734 },
1724 /**1735 /**
1725 * Lookup229: rmrk_traits::part::FixedPart<frame_support::storage::bounded_vec::BoundedVec<T, S>>1736 * Lookup232: rmrk_traits::part::FixedPart<frame_support::storage::bounded_vec::BoundedVec<T, S>>
1726 **/1737 **/
1727 RmrkTraitsPartFixedPart: {1738 RmrkTraitsPartFixedPart: {
1728 id: 'u32',1739 id: 'u32',
1729 z: 'u32',1740 z: 'u32',
1730 src: 'Bytes'1741 src: 'Bytes'
1731 },1742 },
1732 /**1743 /**
1733 * Lookup230: rmrk_traits::part::SlotPart<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>1744 * Lookup233: rmrk_traits::part::SlotPart<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
1734 **/1745 **/
1735 RmrkTraitsPartSlotPart: {1746 RmrkTraitsPartSlotPart: {
1736 id: 'u32',1747 id: 'u32',
1737 equippable: 'RmrkTraitsPartEquippableList',1748 equippable: 'RmrkTraitsPartEquippableList',
1738 src: 'Bytes',1749 src: 'Bytes',
1739 z: 'u32'1750 z: 'u32'
1740 },1751 },
1741 /**1752 /**
1742 * Lookup231: rmrk_traits::part::EquippableList<frame_support::storage::bounded_vec::BoundedVec<T, S>>1753 * Lookup234: rmrk_traits::part::EquippableList<frame_support::storage::bounded_vec::BoundedVec<T, S>>
1743 **/1754 **/
1744 RmrkTraitsPartEquippableList: {1755 RmrkTraitsPartEquippableList: {
1745 _enum: {1756 _enum: {
1746 All: 'Null',1757 All: 'Null',
1747 Empty: 'Null',1758 Empty: 'Null',
1748 Custom: 'Vec<u32>'1759 Custom: 'Vec<u32>'
1749 }1760 }
1750 },1761 },
1751 /**1762 /**
1752 * Lookup233: rmrk_traits::theme::Theme<frame_support::storage::bounded_vec::BoundedVec<T, S>, PropertyList>1763 * Lookup236: rmrk_traits::theme::Theme<frame_support::storage::bounded_vec::BoundedVec<T, S>, PropertyList>
1753 **/1764 **/
1754 RmrkTraitsTheme: {1765 RmrkTraitsTheme: {
1755 name: 'Bytes',1766 name: 'Bytes',
1756 properties: 'Vec<RmrkTraitsThemeThemeProperty>',1767 properties: 'Vec<RmrkTraitsThemeThemeProperty>',
1757 inherit: 'bool'1768 inherit: 'bool'
1758 },1769 },
1759 /**1770 /**
1760 * Lookup235: rmrk_traits::theme::ThemeProperty<frame_support::storage::bounded_vec::BoundedVec<T, S>>1771 * Lookup238: rmrk_traits::theme::ThemeProperty<frame_support::storage::bounded_vec::BoundedVec<T, S>>
1761 **/1772 **/
1762 RmrkTraitsThemeThemeProperty: {1773 RmrkTraitsThemeThemeProperty: {
1763 key: 'Bytes',1774 key: 'Bytes',
1764 value: 'Bytes'1775 value: 'Bytes'
1765 },1776 },
1766 /**1777 /**
1767 * Lookup236: pallet_evm::pallet::Call<T>1778 * Lookup239: pallet_evm::pallet::Call<T>
1768 **/1779 **/
1769 PalletEvmCall: {1780 PalletEvmCall: {
1770 _enum: {1781 _enum: {
1771 withdraw: {1782 withdraw: {
1806 }1817 }
1807 }1818 }
1808 },1819 },
1809 /**1820 /**
1810 * Lookup242: pallet_ethereum::pallet::Call<T>1821 * Lookup245: pallet_ethereum::pallet::Call<T>
1811 **/1822 **/
1812 PalletEthereumCall: {1823 PalletEthereumCall: {
1813 _enum: {1824 _enum: {
1814 transact: {1825 transact: {
1815 transaction: 'EthereumTransactionTransactionV2'1826 transaction: 'EthereumTransactionTransactionV2'
1816 }1827 }
1817 }1828 }
1818 },1829 },
1819 /**1830 /**
1820 * Lookup243: ethereum::transaction::TransactionV21831 * Lookup246: ethereum::transaction::TransactionV2
1821 **/1832 **/
1822 EthereumTransactionTransactionV2: {1833 EthereumTransactionTransactionV2: {
1823 _enum: {1834 _enum: {
1824 Legacy: 'EthereumTransactionLegacyTransaction',1835 Legacy: 'EthereumTransactionLegacyTransaction',
1825 EIP2930: 'EthereumTransactionEip2930Transaction',1836 EIP2930: 'EthereumTransactionEip2930Transaction',
1826 EIP1559: 'EthereumTransactionEip1559Transaction'1837 EIP1559: 'EthereumTransactionEip1559Transaction'
1827 }1838 }
1828 },1839 },
1829 /**1840 /**
1830 * Lookup244: ethereum::transaction::LegacyTransaction1841 * Lookup247: ethereum::transaction::LegacyTransaction
1831 **/1842 **/
1832 EthereumTransactionLegacyTransaction: {1843 EthereumTransactionLegacyTransaction: {
1833 nonce: 'U256',1844 nonce: 'U256',
1834 gasPrice: 'U256',1845 gasPrice: 'U256',
1838 input: 'Bytes',1849 input: 'Bytes',
1839 signature: 'EthereumTransactionTransactionSignature'1850 signature: 'EthereumTransactionTransactionSignature'
1840 },1851 },
1841 /**1852 /**
1842 * Lookup245: ethereum::transaction::TransactionAction1853 * Lookup248: ethereum::transaction::TransactionAction
1843 **/1854 **/
1844 EthereumTransactionTransactionAction: {1855 EthereumTransactionTransactionAction: {
1845 _enum: {1856 _enum: {
1846 Call: 'H160',1857 Call: 'H160',
1847 Create: 'Null'1858 Create: 'Null'
1848 }1859 }
1849 },1860 },
1850 /**1861 /**
1851 * Lookup246: ethereum::transaction::TransactionSignature1862 * Lookup249: ethereum::transaction::TransactionSignature
1852 **/1863 **/
1853 EthereumTransactionTransactionSignature: {1864 EthereumTransactionTransactionSignature: {
1854 v: 'u64',1865 v: 'u64',
1855 r: 'H256',1866 r: 'H256',
1856 s: 'H256'1867 s: 'H256'
1857 },1868 },
1858 /**1869 /**
1859 * Lookup248: ethereum::transaction::EIP2930Transaction1870 * Lookup251: ethereum::transaction::EIP2930Transaction
1860 **/1871 **/
1861 EthereumTransactionEip2930Transaction: {1872 EthereumTransactionEip2930Transaction: {
1862 chainId: 'u64',1873 chainId: 'u64',
1863 nonce: 'U256',1874 nonce: 'U256',
1871 r: 'H256',1882 r: 'H256',
1872 s: 'H256'1883 s: 'H256'
1873 },1884 },
1874 /**1885 /**
1875 * Lookup250: ethereum::transaction::AccessListItem1886 * Lookup253: ethereum::transaction::AccessListItem
1876 **/1887 **/
1877 EthereumTransactionAccessListItem: {1888 EthereumTransactionAccessListItem: {
1878 address: 'H160',1889 address: 'H160',
1879 storageKeys: 'Vec<H256>'1890 storageKeys: 'Vec<H256>'
1880 },1891 },
1881 /**1892 /**
1882 * Lookup251: ethereum::transaction::EIP1559Transaction1893 * Lookup254: ethereum::transaction::EIP1559Transaction
1883 **/1894 **/
1884 EthereumTransactionEip1559Transaction: {1895 EthereumTransactionEip1559Transaction: {
1885 chainId: 'u64',1896 chainId: 'u64',
1886 nonce: 'U256',1897 nonce: 'U256',
1895 r: 'H256',1906 r: 'H256',
1896 s: 'H256'1907 s: 'H256'
1897 },1908 },
1898 /**1909 /**
1899 * Lookup252: pallet_evm_migration::pallet::Call<T>1910 * Lookup255: pallet_evm_migration::pallet::Call<T>
1900 **/1911 **/
1901 PalletEvmMigrationCall: {1912 PalletEvmMigrationCall: {
1902 _enum: {1913 _enum: {
1903 begin: {1914 begin: {
1913 }1924 }
1914 }1925 }
1915 },1926 },
1916 /**1927 /**
1917 * Lookup255: pallet_sudo::pallet::Event<T>1928 * Lookup258: pallet_sudo::pallet::Event<T>
1918 **/1929 **/
1919 PalletSudoEvent: {1930 PalletSudoEvent: {
1920 _enum: {1931 _enum: {
1921 Sudid: {1932 Sudid: {
1929 }1940 }
1930 }1941 }
1931 },1942 },
1932 /**1943 /**
1933 * Lookup257: sp_runtime::DispatchError1944 * Lookup260: sp_runtime::DispatchError
1934 **/1945 **/
1935 SpRuntimeDispatchError: {1946 SpRuntimeDispatchError: {
1936 _enum: {1947 _enum: {
1937 Other: 'Null',1948 Other: 'Null',
1946 Transactional: 'SpRuntimeTransactionalError'1957 Transactional: 'SpRuntimeTransactionalError'
1947 }1958 }
1948 },1959 },
1949 /**1960 /**
1950 * Lookup258: sp_runtime::ModuleError1961 * Lookup261: sp_runtime::ModuleError
1951 **/1962 **/
1952 SpRuntimeModuleError: {1963 SpRuntimeModuleError: {
1953 index: 'u8',1964 index: 'u8',
1954 error: '[u8;4]'1965 error: '[u8;4]'
1955 },1966 },
1956 /**1967 /**
1957 * Lookup259: sp_runtime::TokenError1968 * Lookup262: sp_runtime::TokenError
1958 **/1969 **/
1959 SpRuntimeTokenError: {1970 SpRuntimeTokenError: {
1960 _enum: ['NoFunds', 'WouldDie', 'BelowMinimum', 'CannotCreate', 'UnknownAsset', 'Frozen', 'Unsupported']1971 _enum: ['NoFunds', 'WouldDie', 'BelowMinimum', 'CannotCreate', 'UnknownAsset', 'Frozen', 'Unsupported']
1961 },1972 },
1962 /**1973 /**
1963 * Lookup260: sp_runtime::ArithmeticError1974 * Lookup263: sp_runtime::ArithmeticError
1964 **/1975 **/
1965 SpRuntimeArithmeticError: {1976 SpRuntimeArithmeticError: {
1966 _enum: ['Underflow', 'Overflow', 'DivisionByZero']1977 _enum: ['Underflow', 'Overflow', 'DivisionByZero']
1967 },1978 },
1968 /**1979 /**
1969 * Lookup261: sp_runtime::TransactionalError1980 * Lookup264: sp_runtime::TransactionalError
1970 **/1981 **/
1971 SpRuntimeTransactionalError: {1982 SpRuntimeTransactionalError: {
1972 _enum: ['LimitReached', 'NoLayer']1983 _enum: ['LimitReached', 'NoLayer']
1973 },1984 },
1974 /**1985 /**
1975 * Lookup262: pallet_sudo::pallet::Error<T>1986 * Lookup265: pallet_sudo::pallet::Error<T>
1976 **/1987 **/
1977 PalletSudoError: {1988 PalletSudoError: {
1978 _enum: ['RequireSudo']1989 _enum: ['RequireSudo']
1979 },1990 },
1980 /**1991 /**
1981 * Lookup263: frame_system::AccountInfo<Index, pallet_balances::AccountData<Balance>>1992 * Lookup266: frame_system::AccountInfo<Index, pallet_balances::AccountData<Balance>>
1982 **/1993 **/
1983 FrameSystemAccountInfo: {1994 FrameSystemAccountInfo: {
1984 nonce: 'u32',1995 nonce: 'u32',
1985 consumers: 'u32',1996 consumers: 'u32',
1986 providers: 'u32',1997 providers: 'u32',
1987 sufficients: 'u32',1998 sufficients: 'u32',
1988 data: 'PalletBalancesAccountData'1999 data: 'PalletBalancesAccountData'
1989 },2000 },
1990 /**2001 /**
1991 * Lookup264: frame_support::weights::PerDispatchClass<T>2002 * Lookup267: frame_support::weights::PerDispatchClass<T>
1992 **/2003 **/
1993 FrameSupportWeightsPerDispatchClassU64: {2004 FrameSupportWeightsPerDispatchClassU64: {
1994 normal: 'u64',2005 normal: 'u64',
1995 operational: 'u64',2006 operational: 'u64',
1996 mandatory: 'u64'2007 mandatory: 'u64'
1997 },2008 },
1998 /**2009 /**
1999 * Lookup265: sp_runtime::generic::digest::Digest2010 * Lookup268: sp_runtime::generic::digest::Digest
2000 **/2011 **/
2001 SpRuntimeDigest: {2012 SpRuntimeDigest: {
2002 logs: 'Vec<SpRuntimeDigestDigestItem>'2013 logs: 'Vec<SpRuntimeDigestDigestItem>'
2003 },2014 },
2004 /**2015 /**
2005 * Lookup267: sp_runtime::generic::digest::DigestItem2016 * Lookup270: sp_runtime::generic::digest::DigestItem
2006 **/2017 **/
2007 SpRuntimeDigestDigestItem: {2018 SpRuntimeDigestDigestItem: {
2008 _enum: {2019 _enum: {
2009 Other: 'Bytes',2020 Other: 'Bytes',
2017 RuntimeEnvironmentUpdated: 'Null'2028 RuntimeEnvironmentUpdated: 'Null'
2018 }2029 }
2019 },2030 },
2020 /**2031 /**
2021 * Lookup269: frame_system::EventRecord<opal_runtime::Event, primitive_types::H256>2032 * Lookup272: frame_system::EventRecord<opal_runtime::Event, primitive_types::H256>
2022 **/2033 **/
2023 FrameSystemEventRecord: {2034 FrameSystemEventRecord: {
2024 phase: 'FrameSystemPhase',2035 phase: 'FrameSystemPhase',
2025 event: 'Event',2036 event: 'Event',
2026 topics: 'Vec<H256>'2037 topics: 'Vec<H256>'
2027 },2038 },
2028 /**2039 /**
2029 * Lookup271: frame_system::pallet::Event<T>2040 * Lookup274: frame_system::pallet::Event<T>
2030 **/2041 **/
2031 FrameSystemEvent: {2042 FrameSystemEvent: {
2032 _enum: {2043 _enum: {
2033 ExtrinsicSuccess: {2044 ExtrinsicSuccess: {
2053 }2064 }
2054 }2065 }
2055 },2066 },
2056 /**2067 /**
2057 * Lookup272: frame_support::weights::DispatchInfo2068 * Lookup275: frame_support::weights::DispatchInfo
2058 **/2069 **/
2059 FrameSupportWeightsDispatchInfo: {2070 FrameSupportWeightsDispatchInfo: {
2060 weight: 'u64',2071 weight: 'u64',
2061 class: 'FrameSupportWeightsDispatchClass',2072 class: 'FrameSupportWeightsDispatchClass',
2062 paysFee: 'FrameSupportWeightsPays'2073 paysFee: 'FrameSupportWeightsPays'
2063 },2074 },
2064 /**2075 /**
2065 * Lookup273: frame_support::weights::DispatchClass2076 * Lookup276: frame_support::weights::DispatchClass
2066 **/2077 **/
2067 FrameSupportWeightsDispatchClass: {2078 FrameSupportWeightsDispatchClass: {
2068 _enum: ['Normal', 'Operational', 'Mandatory']2079 _enum: ['Normal', 'Operational', 'Mandatory']
2069 },2080 },
2070 /**2081 /**
2071 * Lookup274: frame_support::weights::Pays2082 * Lookup277: frame_support::weights::Pays
2072 **/2083 **/
2073 FrameSupportWeightsPays: {2084 FrameSupportWeightsPays: {
2074 _enum: ['Yes', 'No']2085 _enum: ['Yes', 'No']
2075 },2086 },
2076 /**2087 /**
2077 * Lookup275: orml_vesting::module::Event<T>2088 * Lookup278: orml_vesting::module::Event<T>
2078 **/2089 **/
2079 OrmlVestingModuleEvent: {2090 OrmlVestingModuleEvent: {
2080 _enum: {2091 _enum: {
2081 VestingScheduleAdded: {2092 VestingScheduleAdded: {
2092 }2103 }
2093 }2104 }
2094 },2105 },
2095 /**2106 /**
2096 * Lookup276: cumulus_pallet_xcmp_queue::pallet::Event<T>2107 * Lookup279: cumulus_pallet_xcmp_queue::pallet::Event<T>
2097 **/2108 **/
2098 CumulusPalletXcmpQueueEvent: {2109 CumulusPalletXcmpQueueEvent: {
2099 _enum: {2110 _enum: {
2100 Success: 'Option<H256>',2111 Success: 'Option<H256>',
2107 OverweightServiced: '(u64,u64)'2118 OverweightServiced: '(u64,u64)'
2108 }2119 }
2109 },2120 },
2110 /**2121 /**
2111 * Lookup277: pallet_xcm::pallet::Event<T>2122 * Lookup280: pallet_xcm::pallet::Event<T>
2112 **/2123 **/
2113 PalletXcmEvent: {2124 PalletXcmEvent: {
2114 _enum: {2125 _enum: {
2115 Attempted: 'XcmV2TraitsOutcome',2126 Attempted: 'XcmV2TraitsOutcome',
2130 NotifyTargetMigrationFail: '(XcmVersionedMultiLocation,u64)'2141 NotifyTargetMigrationFail: '(XcmVersionedMultiLocation,u64)'
2131 }2142 }
2132 },2143 },
2133 /**2144 /**
2134 * Lookup278: xcm::v2::traits::Outcome2145 * Lookup281: xcm::v2::traits::Outcome
2135 **/2146 **/
2136 XcmV2TraitsOutcome: {2147 XcmV2TraitsOutcome: {
2137 _enum: {2148 _enum: {
2138 Complete: 'u64',2149 Complete: 'u64',
2139 Incomplete: '(u64,XcmV2TraitsError)',2150 Incomplete: '(u64,XcmV2TraitsError)',
2140 Error: 'XcmV2TraitsError'2151 Error: 'XcmV2TraitsError'
2141 }2152 }
2142 },2153 },
2143 /**2154 /**
2144 * Lookup280: cumulus_pallet_xcm::pallet::Event<T>2155 * Lookup283: cumulus_pallet_xcm::pallet::Event<T>
2145 **/2156 **/
2146 CumulusPalletXcmEvent: {2157 CumulusPalletXcmEvent: {
2147 _enum: {2158 _enum: {
2148 InvalidFormat: '[u8;8]',2159 InvalidFormat: '[u8;8]',
2149 UnsupportedVersion: '[u8;8]',2160 UnsupportedVersion: '[u8;8]',
2150 ExecutedDownward: '([u8;8],XcmV2TraitsOutcome)'2161 ExecutedDownward: '([u8;8],XcmV2TraitsOutcome)'
2151 }2162 }
2152 },2163 },
2153 /**2164 /**
2154 * Lookup281: cumulus_pallet_dmp_queue::pallet::Event<T>2165 * Lookup284: cumulus_pallet_dmp_queue::pallet::Event<T>
2155 **/2166 **/
2156 CumulusPalletDmpQueueEvent: {2167 CumulusPalletDmpQueueEvent: {
2157 _enum: {2168 _enum: {
2158 InvalidFormat: '[u8;32]',2169 InvalidFormat: '[u8;32]',
2163 OverweightServiced: '(u64,u64)'2174 OverweightServiced: '(u64,u64)'
2164 }2175 }
2165 },2176 },
2166 /**2177 /**
2167 * Lookup282: pallet_unique::RawEvent<sp_core::crypto::AccountId32, pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2178 * Lookup285: pallet_unique::RawEvent<sp_core::crypto::AccountId32, pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
2168 **/2179 **/
2169 PalletUniqueRawEvent: {2180 PalletUniqueRawEvent: {
2170 _enum: {2181 _enum: {
2171 CollectionSponsorRemoved: 'u32',2182 CollectionSponsorRemoved: 'u32',
2180 CollectionPermissionSet: 'u32'2191 CollectionPermissionSet: 'u32'
2181 }2192 }
2182 },2193 },
2183 /**2194 /**
2184 * Lookup283: pallet_unq_scheduler::pallet::Event<T>2195 * Lookup286: pallet_unique_scheduler::pallet::Event<T>
2185 **/2196 **/
2186 PalletUnqSchedulerEvent: {2197 PalletUniqueSchedulerEvent: {
2187 _enum: {2198 _enum: {
2188 Scheduled: {2199 Scheduled: {
2189 when: 'u32',2200 when: 'u32',
2205 }2216 }
2206 }2217 }
2207 },2218 },
2208 /**2219 /**
2209 * Lookup285: frame_support::traits::schedule::LookupError2220 * Lookup288: frame_support::traits::schedule::LookupError
2210 **/2221 **/
2211 FrameSupportScheduleLookupError: {2222 FrameSupportScheduleLookupError: {
2212 _enum: ['Unknown', 'BadFormat']2223 _enum: ['Unknown', 'BadFormat']
2213 },2224 },
2214 /**2225 /**
2215 * Lookup286: pallet_common::pallet::Event<T>2226 * Lookup289: pallet_common::pallet::Event<T>
2216 **/2227 **/
2217 PalletCommonEvent: {2228 PalletCommonEvent: {
2218 _enum: {2229 _enum: {
2219 CollectionCreated: '(u32,u8,AccountId32)',2230 CollectionCreated: '(u32,u8,AccountId32)',
2229 PropertyPermissionSet: '(u32,Bytes)'2240 PropertyPermissionSet: '(u32,Bytes)'
2230 }2241 }
2231 },2242 },
2232 /**2243 /**
2233 * Lookup287: pallet_structure::pallet::Event<T>2244 * Lookup290: pallet_structure::pallet::Event<T>
2234 **/2245 **/
2235 PalletStructureEvent: {2246 PalletStructureEvent: {
2236 _enum: {2247 _enum: {
2237 Executed: 'Result<Null, SpRuntimeDispatchError>'2248 Executed: 'Result<Null, SpRuntimeDispatchError>'
2238 }2249 }
2239 },2250 },
2240 /**2251 /**
2241 * Lookup288: pallet_rmrk_core::pallet::Event<T>2252 * Lookup291: pallet_rmrk_core::pallet::Event<T>
2242 **/2253 **/
2243 PalletRmrkCoreEvent: {2254 PalletRmrkCoreEvent: {
2244 _enum: {2255 _enum: {
2245 CollectionCreated: {2256 CollectionCreated: {
2314 }2325 }
2315 }2326 }
2316 },2327 },
2317 /**2328 /**
2318 * Lookup289: pallet_rmrk_equip::pallet::Event<T>2329 * Lookup292: pallet_rmrk_equip::pallet::Event<T>
2319 **/2330 **/
2320 PalletRmrkEquipEvent: {2331 PalletRmrkEquipEvent: {
2321 _enum: {2332 _enum: {
2322 BaseCreated: {2333 BaseCreated: {
2325 }2336 }
2326 }2337 }
2327 },2338 },
2328 /**2339 /**
2329 * Lookup290: pallet_evm::pallet::Event<T>2340 * Lookup293: pallet_evm::pallet::Event<T>
2330 **/2341 **/
2331 PalletEvmEvent: {2342 PalletEvmEvent: {
2332 _enum: {2343 _enum: {
2333 Log: 'EthereumLog',2344 Log: 'EthereumLog',
2339 BalanceWithdraw: '(AccountId32,H160,U256)'2350 BalanceWithdraw: '(AccountId32,H160,U256)'
2340 }2351 }
2341 },2352 },
2342 /**2353 /**
2343 * Lookup291: ethereum::log::Log2354 * Lookup294: ethereum::log::Log
2344 **/2355 **/
2345 EthereumLog: {2356 EthereumLog: {
2346 address: 'H160',2357 address: 'H160',
2347 topics: 'Vec<H256>',2358 topics: 'Vec<H256>',
2348 data: 'Bytes'2359 data: 'Bytes'
2349 },2360 },
2350 /**2361 /**
2351 * Lookup292: pallet_ethereum::pallet::Event2362 * Lookup295: pallet_ethereum::pallet::Event
2352 **/2363 **/
2353 PalletEthereumEvent: {2364 PalletEthereumEvent: {
2354 _enum: {2365 _enum: {
2355 Executed: '(H160,H160,H256,EvmCoreErrorExitReason)'2366 Executed: '(H160,H160,H256,EvmCoreErrorExitReason)'
2356 }2367 }
2357 },2368 },
2358 /**2369 /**
2359 * Lookup293: evm_core::error::ExitReason2370 * Lookup296: evm_core::error::ExitReason
2360 **/2371 **/
2361 EvmCoreErrorExitReason: {2372 EvmCoreErrorExitReason: {
2362 _enum: {2373 _enum: {
2363 Succeed: 'EvmCoreErrorExitSucceed',2374 Succeed: 'EvmCoreErrorExitSucceed',
2366 Fatal: 'EvmCoreErrorExitFatal'2377 Fatal: 'EvmCoreErrorExitFatal'
2367 }2378 }
2368 },2379 },
2369 /**2380 /**
2370 * Lookup294: evm_core::error::ExitSucceed2381 * Lookup297: evm_core::error::ExitSucceed
2371 **/2382 **/
2372 EvmCoreErrorExitSucceed: {2383 EvmCoreErrorExitSucceed: {
2373 _enum: ['Stopped', 'Returned', 'Suicided']2384 _enum: ['Stopped', 'Returned', 'Suicided']
2374 },2385 },
2375 /**2386 /**
2376 * Lookup295: evm_core::error::ExitError2387 * Lookup298: evm_core::error::ExitError
2377 **/2388 **/
2378 EvmCoreErrorExitError: {2389 EvmCoreErrorExitError: {
2379 _enum: {2390 _enum: {
2380 StackUnderflow: 'Null',2391 StackUnderflow: 'Null',
2394 InvalidCode: 'Null'2405 InvalidCode: 'Null'
2395 }2406 }
2396 },2407 },
2397 /**2408 /**
2398 * Lookup298: evm_core::error::ExitRevert2409 * Lookup301: evm_core::error::ExitRevert
2399 **/2410 **/
2400 EvmCoreErrorExitRevert: {2411 EvmCoreErrorExitRevert: {
2401 _enum: ['Reverted']2412 _enum: ['Reverted']
2402 },2413 },
2403 /**2414 /**
2404 * Lookup299: evm_core::error::ExitFatal2415 * Lookup302: evm_core::error::ExitFatal
2405 **/2416 **/
2406 EvmCoreErrorExitFatal: {2417 EvmCoreErrorExitFatal: {
2407 _enum: {2418 _enum: {
2408 NotSupported: 'Null',2419 NotSupported: 'Null',
2411 Other: 'Text'2422 Other: 'Text'
2412 }2423 }
2413 },2424 },
2414 /**2425 /**
2415 * Lookup300: frame_system::Phase2426 * Lookup303: frame_system::Phase
2416 **/2427 **/
2417 FrameSystemPhase: {2428 FrameSystemPhase: {
2418 _enum: {2429 _enum: {
2419 ApplyExtrinsic: 'u32',2430 ApplyExtrinsic: 'u32',
2420 Finalization: 'Null',2431 Finalization: 'Null',
2421 Initialization: 'Null'2432 Initialization: 'Null'
2422 }2433 }
2423 },2434 },
2424 /**2435 /**
2425 * Lookup302: frame_system::LastRuntimeUpgradeInfo2436 * Lookup305: frame_system::LastRuntimeUpgradeInfo
2426 **/2437 **/
2427 FrameSystemLastRuntimeUpgradeInfo: {2438 FrameSystemLastRuntimeUpgradeInfo: {
2428 specVersion: 'Compact<u32>',2439 specVersion: 'Compact<u32>',
2429 specName: 'Text'2440 specName: 'Text'
2430 },2441 },
2431 /**2442 /**
2432 * Lookup303: frame_system::limits::BlockWeights2443 * Lookup306: frame_system::limits::BlockWeights
2433 **/2444 **/
2434 FrameSystemLimitsBlockWeights: {2445 FrameSystemLimitsBlockWeights: {
2435 baseBlock: 'u64',2446 baseBlock: 'u64',
2436 maxBlock: 'u64',2447 maxBlock: 'u64',
2437 perClass: 'FrameSupportWeightsPerDispatchClassWeightsPerClass'2448 perClass: 'FrameSupportWeightsPerDispatchClassWeightsPerClass'
2438 },2449 },
2439 /**2450 /**
2440 * Lookup304: frame_support::weights::PerDispatchClass<frame_system::limits::WeightsPerClass>2451 * Lookup307: frame_support::weights::PerDispatchClass<frame_system::limits::WeightsPerClass>
2441 **/2452 **/
2442 FrameSupportWeightsPerDispatchClassWeightsPerClass: {2453 FrameSupportWeightsPerDispatchClassWeightsPerClass: {
2443 normal: 'FrameSystemLimitsWeightsPerClass',2454 normal: 'FrameSystemLimitsWeightsPerClass',
2444 operational: 'FrameSystemLimitsWeightsPerClass',2455 operational: 'FrameSystemLimitsWeightsPerClass',
2445 mandatory: 'FrameSystemLimitsWeightsPerClass'2456 mandatory: 'FrameSystemLimitsWeightsPerClass'
2446 },2457 },
2447 /**2458 /**
2448 * Lookup305: frame_system::limits::WeightsPerClass2459 * Lookup308: frame_system::limits::WeightsPerClass
2449 **/2460 **/
2450 FrameSystemLimitsWeightsPerClass: {2461 FrameSystemLimitsWeightsPerClass: {
2451 baseExtrinsic: 'u64',2462 baseExtrinsic: 'u64',
2452 maxExtrinsic: 'Option<u64>',2463 maxExtrinsic: 'Option<u64>',
2453 maxTotal: 'Option<u64>',2464 maxTotal: 'Option<u64>',
2454 reserved: 'Option<u64>'2465 reserved: 'Option<u64>'
2455 },2466 },
2456 /**2467 /**
2457 * Lookup307: frame_system::limits::BlockLength2468 * Lookup310: frame_system::limits::BlockLength
2458 **/2469 **/
2459 FrameSystemLimitsBlockLength: {2470 FrameSystemLimitsBlockLength: {
2460 max: 'FrameSupportWeightsPerDispatchClassU32'2471 max: 'FrameSupportWeightsPerDispatchClassU32'
2461 },2472 },
2462 /**2473 /**
2463 * Lookup308: frame_support::weights::PerDispatchClass<T>2474 * Lookup311: frame_support::weights::PerDispatchClass<T>
2464 **/2475 **/
2465 FrameSupportWeightsPerDispatchClassU32: {2476 FrameSupportWeightsPerDispatchClassU32: {
2466 normal: 'u32',2477 normal: 'u32',
2467 operational: 'u32',2478 operational: 'u32',
2468 mandatory: 'u32'2479 mandatory: 'u32'
2469 },2480 },
2470 /**2481 /**
2471 * Lookup309: frame_support::weights::RuntimeDbWeight2482 * Lookup312: frame_support::weights::RuntimeDbWeight
2472 **/2483 **/
2473 FrameSupportWeightsRuntimeDbWeight: {2484 FrameSupportWeightsRuntimeDbWeight: {
2474 read: 'u64',2485 read: 'u64',
2475 write: 'u64'2486 write: 'u64'
2476 },2487 },
2477 /**2488 /**
2478 * Lookup310: sp_version::RuntimeVersion2489 * Lookup313: sp_version::RuntimeVersion
2479 **/2490 **/
2480 SpVersionRuntimeVersion: {2491 SpVersionRuntimeVersion: {
2481 specName: 'Text',2492 specName: 'Text',
2482 implName: 'Text',2493 implName: 'Text',
2487 transactionVersion: 'u32',2498 transactionVersion: 'u32',
2488 stateVersion: 'u8'2499 stateVersion: 'u8'
2489 },2500 },
2490 /**2501 /**
2491 * Lookup314: frame_system::pallet::Error<T>2502 * Lookup317: frame_system::pallet::Error<T>
2492 **/2503 **/
2493 FrameSystemError: {2504 FrameSystemError: {
2494 _enum: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount', 'CallFiltered']2505 _enum: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount', 'CallFiltered']
2495 },2506 },
2496 /**2507 /**
2497 * Lookup316: orml_vesting::module::Error<T>2508 * Lookup319: orml_vesting::module::Error<T>
2498 **/2509 **/
2499 OrmlVestingModuleError: {2510 OrmlVestingModuleError: {
2500 _enum: ['ZeroVestingPeriod', 'ZeroVestingPeriodCount', 'InsufficientBalanceToLock', 'TooManyVestingSchedules', 'AmountLow', 'MaxVestingSchedulesExceeded']2511 _enum: ['ZeroVestingPeriod', 'ZeroVestingPeriodCount', 'InsufficientBalanceToLock', 'TooManyVestingSchedules', 'AmountLow', 'MaxVestingSchedulesExceeded']
2501 },2512 },
2502 /**2513 /**
2503 * Lookup318: cumulus_pallet_xcmp_queue::InboundChannelDetails2514 * Lookup321: cumulus_pallet_xcmp_queue::InboundChannelDetails
2504 **/2515 **/
2505 CumulusPalletXcmpQueueInboundChannelDetails: {2516 CumulusPalletXcmpQueueInboundChannelDetails: {
2506 sender: 'u32',2517 sender: 'u32',
2507 state: 'CumulusPalletXcmpQueueInboundState',2518 state: 'CumulusPalletXcmpQueueInboundState',
2508 messageMetadata: 'Vec<(u32,PolkadotParachainPrimitivesXcmpMessageFormat)>'2519 messageMetadata: 'Vec<(u32,PolkadotParachainPrimitivesXcmpMessageFormat)>'
2509 },2520 },
2510 /**2521 /**
2511 * Lookup319: cumulus_pallet_xcmp_queue::InboundState2522 * Lookup322: cumulus_pallet_xcmp_queue::InboundState
2512 **/2523 **/
2513 CumulusPalletXcmpQueueInboundState: {2524 CumulusPalletXcmpQueueInboundState: {
2514 _enum: ['Ok', 'Suspended']2525 _enum: ['Ok', 'Suspended']
2515 },2526 },
2516 /**2527 /**
2517 * Lookup322: polkadot_parachain::primitives::XcmpMessageFormat2528 * Lookup325: polkadot_parachain::primitives::XcmpMessageFormat
2518 **/2529 **/
2519 PolkadotParachainPrimitivesXcmpMessageFormat: {2530 PolkadotParachainPrimitivesXcmpMessageFormat: {
2520 _enum: ['ConcatenatedVersionedXcm', 'ConcatenatedEncodedBlob', 'Signals']2531 _enum: ['ConcatenatedVersionedXcm', 'ConcatenatedEncodedBlob', 'Signals']
2521 },2532 },
2522 /**2533 /**
2523 * Lookup325: cumulus_pallet_xcmp_queue::OutboundChannelDetails2534 * Lookup328: cumulus_pallet_xcmp_queue::OutboundChannelDetails
2524 **/2535 **/
2525 CumulusPalletXcmpQueueOutboundChannelDetails: {2536 CumulusPalletXcmpQueueOutboundChannelDetails: {
2526 recipient: 'u32',2537 recipient: 'u32',
2527 state: 'CumulusPalletXcmpQueueOutboundState',2538 state: 'CumulusPalletXcmpQueueOutboundState',
2528 signalsExist: 'bool',2539 signalsExist: 'bool',
2529 firstIndex: 'u16',2540 firstIndex: 'u16',
2530 lastIndex: 'u16'2541 lastIndex: 'u16'
2531 },2542 },
2532 /**2543 /**
2533 * Lookup326: cumulus_pallet_xcmp_queue::OutboundState2544 * Lookup329: cumulus_pallet_xcmp_queue::OutboundState
2534 **/2545 **/
2535 CumulusPalletXcmpQueueOutboundState: {2546 CumulusPalletXcmpQueueOutboundState: {
2536 _enum: ['Ok', 'Suspended']2547 _enum: ['Ok', 'Suspended']
2537 },2548 },
2538 /**2549 /**
2539 * Lookup328: cumulus_pallet_xcmp_queue::QueueConfigData2550 * Lookup331: cumulus_pallet_xcmp_queue::QueueConfigData
2540 **/2551 **/
2541 CumulusPalletXcmpQueueQueueConfigData: {2552 CumulusPalletXcmpQueueQueueConfigData: {
2542 suspendThreshold: 'u32',2553 suspendThreshold: 'u32',
2543 dropThreshold: 'u32',2554 dropThreshold: 'u32',
2546 weightRestrictDecay: 'u64',2557 weightRestrictDecay: 'u64',
2547 xcmpMaxIndividualWeight: 'u64'2558 xcmpMaxIndividualWeight: 'u64'
2548 },2559 },
2549 /**2560 /**
2550 * Lookup330: cumulus_pallet_xcmp_queue::pallet::Error<T>2561 * Lookup333: cumulus_pallet_xcmp_queue::pallet::Error<T>
2551 **/2562 **/
2552 CumulusPalletXcmpQueueError: {2563 CumulusPalletXcmpQueueError: {
2553 _enum: ['FailedToSend', 'BadXcmOrigin', 'BadXcm', 'BadOverweightIndex', 'WeightOverLimit']2564 _enum: ['FailedToSend', 'BadXcmOrigin', 'BadXcm', 'BadOverweightIndex', 'WeightOverLimit']
2554 },2565 },
2555 /**2566 /**
2556 * Lookup331: pallet_xcm::pallet::Error<T>2567 * Lookup334: pallet_xcm::pallet::Error<T>
2557 **/2568 **/
2558 PalletXcmError: {2569 PalletXcmError: {
2559 _enum: ['Unreachable', 'SendFailure', 'Filtered', 'UnweighableMessage', 'DestinationNotInvertible', 'Empty', 'CannotReanchor', 'TooManyAssets', 'InvalidOrigin', 'BadVersion', 'BadLocation', 'NoSubscription', 'AlreadySubscribed']2570 _enum: ['Unreachable', 'SendFailure', 'Filtered', 'UnweighableMessage', 'DestinationNotInvertible', 'Empty', 'CannotReanchor', 'TooManyAssets', 'InvalidOrigin', 'BadVersion', 'BadLocation', 'NoSubscription', 'AlreadySubscribed']
2560 },2571 },
2561 /**2572 /**
2562 * Lookup332: cumulus_pallet_xcm::pallet::Error<T>2573 * Lookup335: cumulus_pallet_xcm::pallet::Error<T>
2563 **/2574 **/
2564 CumulusPalletXcmError: 'Null',2575 CumulusPalletXcmError: 'Null',
2565 /**2576 /**
2566 * Lookup333: cumulus_pallet_dmp_queue::ConfigData2577 * Lookup336: cumulus_pallet_dmp_queue::ConfigData
2567 **/2578 **/
2568 CumulusPalletDmpQueueConfigData: {2579 CumulusPalletDmpQueueConfigData: {
2569 maxIndividual: 'u64'2580 maxIndividual: 'u64'
2570 },2581 },
2571 /**2582 /**
2572 * Lookup334: cumulus_pallet_dmp_queue::PageIndexData2583 * Lookup337: cumulus_pallet_dmp_queue::PageIndexData
2573 **/2584 **/
2574 CumulusPalletDmpQueuePageIndexData: {2585 CumulusPalletDmpQueuePageIndexData: {
2575 beginUsed: 'u32',2586 beginUsed: 'u32',
2576 endUsed: 'u32',2587 endUsed: 'u32',
2577 overweightCount: 'u64'2588 overweightCount: 'u64'
2578 },2589 },
2579 /**2590 /**
2580 * Lookup337: cumulus_pallet_dmp_queue::pallet::Error<T>2591 * Lookup340: cumulus_pallet_dmp_queue::pallet::Error<T>
2581 **/2592 **/
2582 CumulusPalletDmpQueueError: {2593 CumulusPalletDmpQueueError: {
2583 _enum: ['Unknown', 'OverLimit']2594 _enum: ['Unknown', 'OverLimit']
2584 },2595 },
2585 /**2596 /**
2586 * Lookup341: pallet_unique::Error<T>2597 * Lookup344: pallet_unique::Error<T>
2587 **/2598 **/
2588 PalletUniqueError: {2599 PalletUniqueError: {
2589 _enum: ['CollectionDecimalPointLimitExceeded', 'ConfirmUnsetSponsorFail', 'EmptyArgument']2600 _enum: ['CollectionDecimalPointLimitExceeded', 'ConfirmUnsetSponsorFail', 'EmptyArgument']
2590 },2601 },
2591 /**2602 /**
2592 * Lookup344: pallet_unq_scheduler::ScheduledV3<frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>, BlockNumber, opal_runtime::OriginCaller, sp_core::crypto::AccountId32>2603 * Lookup347: pallet_unique_scheduler::ScheduledV3<frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>, BlockNumber, opal_runtime::OriginCaller, sp_core::crypto::AccountId32>
2593 **/2604 **/
2594 PalletUnqSchedulerScheduledV3: {2605 PalletUniqueSchedulerScheduledV3: {
2595 maybeId: 'Option<[u8;16]>',2606 maybeId: 'Option<[u8;16]>',
2596 priority: 'u8',2607 priority: 'u8',
2597 call: 'FrameSupportScheduleMaybeHashed',2608 call: 'FrameSupportScheduleMaybeHashed',
2598 maybePeriodic: 'Option<(u32,u32)>',2609 maybePeriodic: 'Option<(u32,u32)>',
2599 origin: 'OpalRuntimeOriginCaller'2610 origin: 'OpalRuntimeOriginCaller'
2600 },2611 },
2601 /**2612 /**
2602 * Lookup345: opal_runtime::OriginCaller2613 * Lookup348: opal_runtime::OriginCaller
2603 **/2614 **/
2604 OpalRuntimeOriginCaller: {2615 OpalRuntimeOriginCaller: {
2605 _enum: {2616 _enum: {
2606 __Unused0: 'Null',2617 __Unused0: 'Null',
2707 Ethereum: 'PalletEthereumRawOrigin'2718 Ethereum: 'PalletEthereumRawOrigin'
2708 }2719 }
2709 },2720 },
2710 /**2721 /**
2711 * Lookup346: frame_support::dispatch::RawOrigin<sp_core::crypto::AccountId32>2722 * Lookup349: frame_support::dispatch::RawOrigin<sp_core::crypto::AccountId32>
2712 **/2723 **/
2713 FrameSupportDispatchRawOrigin: {2724 FrameSupportDispatchRawOrigin: {
2714 _enum: {2725 _enum: {
2715 Root: 'Null',2726 Root: 'Null',
2716 Signed: 'AccountId32',2727 Signed: 'AccountId32',
2717 None: 'Null'2728 None: 'Null'
2718 }2729 }
2719 },2730 },
2720 /**2731 /**
2721 * Lookup347: pallet_xcm::pallet::Origin2732 * Lookup350: pallet_xcm::pallet::Origin
2722 **/2733 **/
2723 PalletXcmOrigin: {2734 PalletXcmOrigin: {
2724 _enum: {2735 _enum: {
2725 Xcm: 'XcmV1MultiLocation',2736 Xcm: 'XcmV1MultiLocation',
2726 Response: 'XcmV1MultiLocation'2737 Response: 'XcmV1MultiLocation'
2727 }2738 }
2728 },2739 },
2729 /**2740 /**
2730 * Lookup348: cumulus_pallet_xcm::pallet::Origin2741 * Lookup351: cumulus_pallet_xcm::pallet::Origin
2731 **/2742 **/
2732 CumulusPalletXcmOrigin: {2743 CumulusPalletXcmOrigin: {
2733 _enum: {2744 _enum: {
2734 Relay: 'Null',2745 Relay: 'Null',
2735 SiblingParachain: 'u32'2746 SiblingParachain: 'u32'
2736 }2747 }
2737 },2748 },
2738 /**2749 /**
2739 * Lookup349: pallet_ethereum::RawOrigin2750 * Lookup352: pallet_ethereum::RawOrigin
2740 **/2751 **/
2741 PalletEthereumRawOrigin: {2752 PalletEthereumRawOrigin: {
2742 _enum: {2753 _enum: {
2743 EthereumTransaction: 'H160'2754 EthereumTransaction: 'H160'
2744 }2755 }
2745 },2756 },
2746 /**2757 /**
2747 * Lookup350: sp_core::Void2758 * Lookup353: sp_core::Void
2748 **/2759 **/
2749 SpCoreVoid: 'Null',2760 SpCoreVoid: 'Null',
2750 /**2761 /**
2751 * Lookup351: pallet_unq_scheduler::pallet::Error<T>2762 * Lookup354: pallet_unique_scheduler::pallet::Error<T>
2752 **/2763 **/
2753 PalletUnqSchedulerError: {2764 PalletUniqueSchedulerError: {
2754 _enum: ['FailedToSchedule', 'NotFound', 'TargetBlockNumberInPast', 'RescheduleNoChange']2765 _enum: ['FailedToSchedule', 'NotFound', 'TargetBlockNumberInPast', 'RescheduleNoChange']
2755 },2766 },
2756 /**2767 /**
2757 * Lookup352: up_data_structs::Collection<sp_core::crypto::AccountId32>2768 * Lookup355: up_data_structs::Collection<sp_core::crypto::AccountId32>
2758 **/2769 **/
2759 UpDataStructsCollection: {2770 UpDataStructsCollection: {
2760 owner: 'AccountId32',2771 owner: 'AccountId32',
2761 mode: 'UpDataStructsCollectionMode',2772 mode: 'UpDataStructsCollectionMode',
2767 permissions: 'UpDataStructsCollectionPermissions',2778 permissions: 'UpDataStructsCollectionPermissions',
2768 externalCollection: 'bool'2779 externalCollection: 'bool'
2769 },2780 },
2770 /**2781 /**
2771 * Lookup353: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>2782 * Lookup356: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>
2772 **/2783 **/
2773 UpDataStructsSponsorshipState: {2784 UpDataStructsSponsorshipState: {
2774 _enum: {2785 _enum: {
2775 Disabled: 'Null',2786 Disabled: 'Null',
2776 Unconfirmed: 'AccountId32',2787 Unconfirmed: 'AccountId32',
2777 Confirmed: 'AccountId32'2788 Confirmed: 'AccountId32'
2778 }2789 }
2779 },2790 },
2780 /**2791 /**
2781 * Lookup354: up_data_structs::Properties2792 * Lookup357: up_data_structs::Properties
2782 **/2793 **/
2783 UpDataStructsProperties: {2794 UpDataStructsProperties: {
2784 map: 'UpDataStructsPropertiesMapBoundedVec',2795 map: 'UpDataStructsPropertiesMapBoundedVec',
2785 consumedSpace: 'u32',2796 consumedSpace: 'u32',
2786 spaceLimit: 'u32'2797 spaceLimit: 'u32'
2787 },2798 },
2788 /**2799 /**
2789 * Lookup355: up_data_structs::PropertiesMap<frame_support::storage::bounded_vec::BoundedVec<T, S>>2800 * Lookup358: up_data_structs::PropertiesMap<frame_support::storage::bounded_vec::BoundedVec<T, S>>
2790 **/2801 **/
2791 UpDataStructsPropertiesMapBoundedVec: 'BTreeMap<Bytes, Bytes>',2802 UpDataStructsPropertiesMapBoundedVec: 'BTreeMap<Bytes, Bytes>',
2792 /**2803 /**
2793 * Lookup360: up_data_structs::PropertiesMap<up_data_structs::PropertyPermission>2804 * Lookup363: up_data_structs::PropertiesMap<up_data_structs::PropertyPermission>
2794 **/2805 **/
2795 UpDataStructsPropertiesMapPropertyPermission: 'BTreeMap<Bytes, UpDataStructsPropertyPermission>',2806 UpDataStructsPropertiesMapPropertyPermission: 'BTreeMap<Bytes, UpDataStructsPropertyPermission>',
2796 /**2807 /**
2797 * Lookup367: up_data_structs::CollectionStats2808 * Lookup370: up_data_structs::CollectionStats
2798 **/2809 **/
2799 UpDataStructsCollectionStats: {2810 UpDataStructsCollectionStats: {
2800 created: 'u32',2811 created: 'u32',
2801 destroyed: 'u32',2812 destroyed: 'u32',
2802 alive: 'u32'2813 alive: 'u32'
2803 },2814 },
2804 /**2815 /**
2805 * Lookup368: up_data_structs::TokenChild2816 * Lookup371: up_data_structs::TokenChild
2806 **/2817 **/
2807 UpDataStructsTokenChild: {2818 UpDataStructsTokenChild: {
2808 token: 'u32',2819 token: 'u32',
2809 collection: 'u32'2820 collection: 'u32'
2810 },2821 },
2811 /**2822 /**
2812 * Lookup369: PhantomType::up_data_structs<T>2823 * Lookup372: PhantomType::up_data_structs<T>
2813 **/2824 **/
2814 PhantomTypeUpDataStructs: '[(UpDataStructsTokenData,UpDataStructsRpcCollection,RmrkTraitsCollectionCollectionInfo,RmrkTraitsNftNftInfo,RmrkTraitsResourceResourceInfo,RmrkTraitsPropertyPropertyInfo,RmrkTraitsBaseBaseInfo,RmrkTraitsPartPartType,RmrkTraitsTheme,RmrkTraitsNftNftChild);0]',2825 PhantomTypeUpDataStructs: '[(UpDataStructsTokenData,UpDataStructsRpcCollection,RmrkTraitsCollectionCollectionInfo,RmrkTraitsNftNftInfo,RmrkTraitsResourceResourceInfo,RmrkTraitsPropertyPropertyInfo,RmrkTraitsBaseBaseInfo,RmrkTraitsPartPartType,RmrkTraitsTheme,RmrkTraitsNftNftChild);0]',
2815 /**2826 /**
2816 * Lookup371: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2827 * Lookup374: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
2817 **/2828 **/
2818 UpDataStructsTokenData: {2829 UpDataStructsTokenData: {
2819 properties: 'Vec<UpDataStructsProperty>',2830 properties: 'Vec<UpDataStructsProperty>',
2820 owner: 'Option<PalletEvmAccountBasicCrossAccountIdRepr>'2831 owner: 'Option<PalletEvmAccountBasicCrossAccountIdRepr>'
2821 },2832 },
2822 /**2833 /**
2823 * Lookup373: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>2834 * Lookup376: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>
2824 **/2835 **/
2825 UpDataStructsRpcCollection: {2836 UpDataStructsRpcCollection: {
2826 owner: 'AccountId32',2837 owner: 'AccountId32',
2827 mode: 'UpDataStructsCollectionMode',2838 mode: 'UpDataStructsCollectionMode',
2835 properties: 'Vec<UpDataStructsProperty>',2846 properties: 'Vec<UpDataStructsProperty>',
2836 readOnly: 'bool'2847 readOnly: 'bool'
2837 },2848 },
2838 /**2849 /**
2839 * Lookup374: rmrk_traits::collection::CollectionInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>2850 * Lookup377: rmrk_traits::collection::CollectionInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>
2840 **/2851 **/
2841 RmrkTraitsCollectionCollectionInfo: {2852 RmrkTraitsCollectionCollectionInfo: {
2842 issuer: 'AccountId32',2853 issuer: 'AccountId32',
2843 metadata: 'Bytes',2854 metadata: 'Bytes',
2844 max: 'Option<u32>',2855 max: 'Option<u32>',
2845 symbol: 'Bytes',2856 symbol: 'Bytes',
2846 nftsCount: 'u32'2857 nftsCount: 'u32'
2847 },2858 },
2848 /**2859 /**
2849 * Lookup375: rmrk_traits::nft::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, frame_support::storage::bounded_vec::BoundedVec<T, S>>2860 * Lookup378: rmrk_traits::nft::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, frame_support::storage::bounded_vec::BoundedVec<T, S>>
2850 **/2861 **/
2851 RmrkTraitsNftNftInfo: {2862 RmrkTraitsNftNftInfo: {
2852 owner: 'RmrkTraitsNftAccountIdOrCollectionNftTuple',2863 owner: 'RmrkTraitsNftAccountIdOrCollectionNftTuple',
2853 royalty: 'Option<RmrkTraitsNftRoyaltyInfo>',2864 royalty: 'Option<RmrkTraitsNftRoyaltyInfo>',
2854 metadata: 'Bytes',2865 metadata: 'Bytes',
2855 equipped: 'bool',2866 equipped: 'bool',
2856 pending: 'bool'2867 pending: 'bool'
2857 },2868 },
2858 /**2869 /**
2859 * Lookup377: rmrk_traits::nft::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>2870 * Lookup380: rmrk_traits::nft::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>
2860 **/2871 **/
2861 RmrkTraitsNftRoyaltyInfo: {2872 RmrkTraitsNftRoyaltyInfo: {
2862 recipient: 'AccountId32',2873 recipient: 'AccountId32',
2863 amount: 'Permill'2874 amount: 'Permill'
2864 },2875 },
2865 /**2876 /**
2866 * Lookup378: rmrk_traits::resource::ResourceInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>2877 * Lookup381: rmrk_traits::resource::ResourceInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
2867 **/2878 **/
2868 RmrkTraitsResourceResourceInfo: {2879 RmrkTraitsResourceResourceInfo: {
2869 id: 'u32',2880 id: 'u32',
2870 resource: 'RmrkTraitsResourceResourceTypes',2881 resource: 'RmrkTraitsResourceResourceTypes',
2871 pending: 'bool',2882 pending: 'bool',
2872 pendingRemoval: 'bool'2883 pendingRemoval: 'bool'
2873 },2884 },
2874 /**
2875 * Lookup379: rmrk_traits::resource::ResourceTypes<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
2876 **/
2877 RmrkTraitsResourceResourceTypes: {
2878 _enum: {
2879 Basic: 'RmrkTraitsResourceBasicResource',
2880 Composable: 'RmrkTraitsResourceComposableResource',
2881 Slot: 'RmrkTraitsResourceSlotResource'
2882 }
2883 },
2884 /**2885 /**
2885 * Lookup380: rmrk_traits::property::PropertyInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>2886 * Lookup382: rmrk_traits::property::PropertyInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
2886 **/2887 **/
2887 RmrkTraitsPropertyPropertyInfo: {2888 RmrkTraitsPropertyPropertyInfo: {
2888 key: 'Bytes',2889 key: 'Bytes',
2889 value: 'Bytes'2890 value: 'Bytes'
2890 },2891 },
2891 /**2892 /**
2892 * Lookup381: rmrk_traits::base::BaseInfo<sp_core::crypto::AccountId32, frame_support::storage::bounded_vec::BoundedVec<T, S>>2893 * Lookup383: rmrk_traits::base::BaseInfo<sp_core::crypto::AccountId32, frame_support::storage::bounded_vec::BoundedVec<T, S>>
2893 **/2894 **/
2894 RmrkTraitsBaseBaseInfo: {2895 RmrkTraitsBaseBaseInfo: {
2895 issuer: 'AccountId32',2896 issuer: 'AccountId32',
2896 baseType: 'Bytes',2897 baseType: 'Bytes',
2897 symbol: 'Bytes'2898 symbol: 'Bytes'
2898 },2899 },
2899 /**2900 /**
2900 * Lookup382: rmrk_traits::nft::NftChild2901 * Lookup384: rmrk_traits::nft::NftChild
2901 **/2902 **/
2902 RmrkTraitsNftNftChild: {2903 RmrkTraitsNftNftChild: {
2903 collectionId: 'u32',2904 collectionId: 'u32',
2904 nftId: 'u32'2905 nftId: 'u32'
2905 },2906 },
2906 /**2907 /**
2907 * Lookup384: pallet_common::pallet::Error<T>2908 * Lookup386: pallet_common::pallet::Error<T>
2908 **/2909 **/
2909 PalletCommonError: {2910 PalletCommonError: {
2910 _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']2911 _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']
2911 },2912 },
2912 /**2913 /**
2913 * Lookup386: pallet_fungible::pallet::Error<T>2914 * Lookup388: pallet_fungible::pallet::Error<T>
2914 **/2915 **/
2915 PalletFungibleError: {2916 PalletFungibleError: {
2916 _enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed']2917 _enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed']
2917 },2918 },
2918 /**2919 /**
2919 * Lookup387: pallet_refungible::ItemData2920 * Lookup389: pallet_refungible::ItemData
2920 **/2921 **/
2921 PalletRefungibleItemData: {2922 PalletRefungibleItemData: {
2922 constData: 'Bytes'2923 constData: 'Bytes'
2923 },2924 },
2924 /**2925 /**
2925 * Lookup391: pallet_refungible::pallet::Error<T>2926 * Lookup393: pallet_refungible::pallet::Error<T>
2926 **/2927 **/
2927 PalletRefungibleError: {2928 PalletRefungibleError: {
2928 _enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RefungibleDisallowsNesting', 'SettingPropertiesNotAllowed']2929 _enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RefungibleDisallowsNesting', 'SettingPropertiesNotAllowed']
2929 },2930 },
2930 /**2931 /**
2931 * Lookup392: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2932 * Lookup394: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
2932 **/2933 **/
2933 PalletNonfungibleItemData: {2934 PalletNonfungibleItemData: {
2934 owner: 'PalletEvmAccountBasicCrossAccountIdRepr'2935 owner: 'PalletEvmAccountBasicCrossAccountIdRepr'
2935 },2936 },
2936 /**2937 /**
2937 * Lookup394: pallet_nonfungible::pallet::Error<T>2938 * Lookup396: pallet_nonfungible::pallet::Error<T>
2938 **/2939 **/
2939 PalletNonfungibleError: {2940 PalletNonfungibleError: {
2940 _enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount', 'CantBurnNftWithChildren']2941 _enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount', 'CantBurnNftWithChildren']
2941 },2942 },
2942 /**2943 /**
2943 * Lookup395: pallet_structure::pallet::Error<T>2944 * Lookup397: pallet_structure::pallet::Error<T>
2944 **/2945 **/
2945 PalletStructureError: {2946 PalletStructureError: {
2946 _enum: ['OuroborosDetected', 'DepthLimit', 'BreadthLimit', 'TokenNotFound']2947 _enum: ['OuroborosDetected', 'DepthLimit', 'BreadthLimit', 'TokenNotFound']
2947 },2948 },
2948 /**2949 /**
2949 * Lookup396: pallet_rmrk_core::pallet::Error<T>2950 * Lookup398: pallet_rmrk_core::pallet::Error<T>
2950 **/2951 **/
2951 PalletRmrkCoreError: {2952 PalletRmrkCoreError: {
2952 _enum: ['CorruptedCollectionType', 'NftTypeEncodeError', 'RmrkPropertyKeyIsTooLong', 'RmrkPropertyValueIsTooLong', 'CollectionNotEmpty', 'NoAvailableCollectionId', 'NoAvailableNftId', 'CollectionUnknown', 'NoPermission', 'NonTransferable', 'CollectionFullOrLocked', 'ResourceDoesntExist', 'CannotSendToDescendentOrSelf', 'CannotAcceptNonOwnedNft', 'CannotRejectNonOwnedNft', 'ResourceNotPending']2953 _enum: ['CorruptedCollectionType', 'NftTypeEncodeError', 'RmrkPropertyKeyIsTooLong', 'RmrkPropertyValueIsTooLong', 'UnableToDecodeRmrkData', 'CollectionNotEmpty', 'NoAvailableCollectionId', 'NoAvailableNftId', 'CollectionUnknown', 'NoPermission', 'NonTransferable', 'CollectionFullOrLocked', 'ResourceDoesntExist', 'CannotSendToDescendentOrSelf', 'CannotAcceptNonOwnedNft', 'CannotRejectNonOwnedNft', 'ResourceNotPending']
2953 },2954 },
2954 /**2955 /**
2955 * Lookup398: pallet_rmrk_equip::pallet::Error<T>2956 * Lookup400: pallet_rmrk_equip::pallet::Error<T>
2956 **/2957 **/
2957 PalletRmrkEquipError: {2958 PalletRmrkEquipError: {
2958 _enum: ['PermissionError', 'NoAvailableBaseId', 'NoAvailablePartId', 'BaseDoesntExist', 'NeedsDefaultThemeFirst']2959 _enum: ['PermissionError', 'NoAvailableBaseId', 'NoAvailablePartId', 'BaseDoesntExist', 'NeedsDefaultThemeFirst']
2959 },2960 },
2960 /**2961 /**
2961 * Lookup401: pallet_evm::pallet::Error<T>2962 * Lookup403: pallet_evm::pallet::Error<T>
2962 **/2963 **/
2963 PalletEvmError: {2964 PalletEvmError: {
2964 _enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce']2965 _enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce']
2965 },2966 },
2966 /**2967 /**
2967 * Lookup404: fp_rpc::TransactionStatus2968 * Lookup406: fp_rpc::TransactionStatus
2968 **/2969 **/
2969 FpRpcTransactionStatus: {2970 FpRpcTransactionStatus: {
2970 transactionHash: 'H256',2971 transactionHash: 'H256',
2971 transactionIndex: 'u32',2972 transactionIndex: 'u32',
2975 logs: 'Vec<EthereumLog>',2976 logs: 'Vec<EthereumLog>',
2976 logsBloom: 'EthbloomBloom'2977 logsBloom: 'EthbloomBloom'
2977 },2978 },
2978 /**2979 /**
2979 * Lookup406: ethbloom::Bloom2980 * Lookup408: ethbloom::Bloom
2980 **/2981 **/
2981 EthbloomBloom: '[u8;256]',2982 EthbloomBloom: '[u8;256]',
2982 /**2983 /**
2983 * Lookup408: ethereum::receipt::ReceiptV32984 * Lookup410: ethereum::receipt::ReceiptV3
2984 **/2985 **/
2985 EthereumReceiptReceiptV3: {2986 EthereumReceiptReceiptV3: {
2986 _enum: {2987 _enum: {
2987 Legacy: 'EthereumReceiptEip658ReceiptData',2988 Legacy: 'EthereumReceiptEip658ReceiptData',
2988 EIP2930: 'EthereumReceiptEip658ReceiptData',2989 EIP2930: 'EthereumReceiptEip658ReceiptData',
2989 EIP1559: 'EthereumReceiptEip658ReceiptData'2990 EIP1559: 'EthereumReceiptEip658ReceiptData'
2990 }2991 }
2991 },2992 },
2992 /**2993 /**
2993 * Lookup409: ethereum::receipt::EIP658ReceiptData2994 * Lookup411: ethereum::receipt::EIP658ReceiptData
2994 **/2995 **/
2995 EthereumReceiptEip658ReceiptData: {2996 EthereumReceiptEip658ReceiptData: {
2996 statusCode: 'u8',2997 statusCode: 'u8',
2997 usedGas: 'U256',2998 usedGas: 'U256',
2998 logsBloom: 'EthbloomBloom',2999 logsBloom: 'EthbloomBloom',
2999 logs: 'Vec<EthereumLog>'3000 logs: 'Vec<EthereumLog>'
3000 },3001 },
3001 /**3002 /**
3002 * Lookup410: ethereum::block::Block<ethereum::transaction::TransactionV2>3003 * Lookup412: ethereum::block::Block<ethereum::transaction::TransactionV2>
3003 **/3004 **/
3004 EthereumBlock: {3005 EthereumBlock: {
3005 header: 'EthereumHeader',3006 header: 'EthereumHeader',
3006 transactions: 'Vec<EthereumTransactionTransactionV2>',3007 transactions: 'Vec<EthereumTransactionTransactionV2>',
3007 ommers: 'Vec<EthereumHeader>'3008 ommers: 'Vec<EthereumHeader>'
3008 },3009 },
3009 /**3010 /**
3010 * Lookup411: ethereum::header::Header3011 * Lookup413: ethereum::header::Header
3011 **/3012 **/
3012 EthereumHeader: {3013 EthereumHeader: {
3013 parentHash: 'H256',3014 parentHash: 'H256',
3014 ommersHash: 'H256',3015 ommersHash: 'H256',
3026 mixHash: 'H256',3027 mixHash: 'H256',
3027 nonce: 'EthereumTypesHashH64'3028 nonce: 'EthereumTypesHashH64'
3028 },3029 },
3029 /**3030 /**
3030 * Lookup412: ethereum_types::hash::H643031 * Lookup414: ethereum_types::hash::H64
3031 **/3032 **/
3032 EthereumTypesHashH64: '[u8;8]',3033 EthereumTypesHashH64: '[u8;8]',
3033 /**3034 /**
3034 * Lookup417: pallet_ethereum::pallet::Error<T>3035 * Lookup419: pallet_ethereum::pallet::Error<T>
3035 **/3036 **/
3036 PalletEthereumError: {3037 PalletEthereumError: {
3037 _enum: ['InvalidSignature', 'PreLogExists']3038 _enum: ['InvalidSignature', 'PreLogExists']
3038 },3039 },
3039 /**3040 /**
3040 * Lookup418: pallet_evm_coder_substrate::pallet::Error<T>3041 * Lookup420: pallet_evm_coder_substrate::pallet::Error<T>
3041 **/3042 **/
3042 PalletEvmCoderSubstrateError: {3043 PalletEvmCoderSubstrateError: {
3043 _enum: ['OutOfGas', 'OutOfFund']3044 _enum: ['OutOfGas', 'OutOfFund']
3044 },3045 },
3045 /**3046 /**
3046 * Lookup419: pallet_evm_contract_helpers::SponsoringModeT3047 * Lookup421: pallet_evm_contract_helpers::SponsoringModeT
3047 **/3048 **/
3048 PalletEvmContractHelpersSponsoringModeT: {3049 PalletEvmContractHelpersSponsoringModeT: {
3049 _enum: ['Disabled', 'Allowlisted', 'Generous']3050 _enum: ['Disabled', 'Allowlisted', 'Generous']
3050 },3051 },
3051 /**3052 /**
3052 * Lookup421: pallet_evm_contract_helpers::pallet::Error<T>3053 * Lookup423: pallet_evm_contract_helpers::pallet::Error<T>
3053 **/3054 **/
3054 PalletEvmContractHelpersError: {3055 PalletEvmContractHelpersError: {
3055 _enum: ['NoPermission']3056 _enum: ['NoPermission']
3056 },3057 },
3057 /**3058 /**
3058 * Lookup422: pallet_evm_migration::pallet::Error<T>3059 * Lookup424: pallet_evm_migration::pallet::Error<T>
3059 **/3060 **/
3060 PalletEvmMigrationError: {3061 PalletEvmMigrationError: {
3061 _enum: ['AccountNotEmpty', 'AccountIsNotMigrating']3062 _enum: ['AccountNotEmpty', 'AccountIsNotMigrating']
3062 },3063 },
3063 /**3064 /**
3064 * Lookup424: sp_runtime::MultiSignature3065 * Lookup426: sp_runtime::MultiSignature
3065 **/3066 **/
3066 SpRuntimeMultiSignature: {3067 SpRuntimeMultiSignature: {
3067 _enum: {3068 _enum: {
3068 Ed25519: 'SpCoreEd25519Signature',3069 Ed25519: 'SpCoreEd25519Signature',
3069 Sr25519: 'SpCoreSr25519Signature',3070 Sr25519: 'SpCoreSr25519Signature',
3070 Ecdsa: 'SpCoreEcdsaSignature'3071 Ecdsa: 'SpCoreEcdsaSignature'
3071 }3072 }
3072 },3073 },
3073 /**3074 /**
3074 * Lookup425: sp_core::ed25519::Signature3075 * Lookup427: sp_core::ed25519::Signature
3075 **/3076 **/
3076 SpCoreEd25519Signature: '[u8;64]',3077 SpCoreEd25519Signature: '[u8;64]',
3077 /**3078 /**
3078 * Lookup427: sp_core::sr25519::Signature3079 * Lookup429: sp_core::sr25519::Signature
3079 **/3080 **/
3080 SpCoreSr25519Signature: '[u8;64]',3081 SpCoreSr25519Signature: '[u8;64]',
3081 /**3082 /**
3082 * Lookup428: sp_core::ecdsa::Signature3083 * Lookup430: sp_core::ecdsa::Signature
3083 **/3084 **/
3084 SpCoreEcdsaSignature: '[u8;65]',3085 SpCoreEcdsaSignature: '[u8;65]',
3085 /**3086 /**
3086 * Lookup431: frame_system::extensions::check_spec_version::CheckSpecVersion<T>3087 * Lookup433: frame_system::extensions::check_spec_version::CheckSpecVersion<T>
3087 **/3088 **/
3088 FrameSystemExtensionsCheckSpecVersion: 'Null',3089 FrameSystemExtensionsCheckSpecVersion: 'Null',
3089 /**3090 /**
3090 * Lookup432: frame_system::extensions::check_genesis::CheckGenesis<T>3091 * Lookup434: frame_system::extensions::check_genesis::CheckGenesis<T>
3091 **/3092 **/
3092 FrameSystemExtensionsCheckGenesis: 'Null',3093 FrameSystemExtensionsCheckGenesis: 'Null',
3093 /**3094 /**
3094 * Lookup435: frame_system::extensions::check_nonce::CheckNonce<T>3095 * Lookup437: frame_system::extensions::check_nonce::CheckNonce<T>
3095 **/3096 **/
3096 FrameSystemExtensionsCheckNonce: 'Compact<u32>',3097 FrameSystemExtensionsCheckNonce: 'Compact<u32>',
3097 /**3098 /**
3098 * Lookup436: frame_system::extensions::check_weight::CheckWeight<T>3099 * Lookup438: frame_system::extensions::check_weight::CheckWeight<T>
3099 **/3100 **/
3100 FrameSystemExtensionsCheckWeight: 'Null',3101 FrameSystemExtensionsCheckWeight: 'Null',
3101 /**3102 /**
3102 * Lookup437: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>3103 * Lookup439: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>
3103 **/3104 **/
3104 PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact<u128>',3105 PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact<u128>',
3105 /**3106 /**
3106 * Lookup438: opal_runtime::Runtime3107 * Lookup440: opal_runtime::Runtime
3107 **/3108 **/
3108 OpalRuntimeRuntime: 'Null',3109 OpalRuntimeRuntime: 'Null',
3109 /**3110 /**
3110 * Lookup439: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>3111 * Lookup441: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>
3111 **/3112 **/
3112 PalletEthereumFakeTransactionFinalizer: 'Null'3113 PalletEthereumFakeTransactionFinalizer: 'Null'
3113};3114};
31143115
modifiedtests/src/interfaces/registry.tsdiffbeforeafterboth
1// Auto-generated via `yarn polkadot-types-from-defs`, do not edit1// Auto-generated via `yarn polkadot-types-from-defs`, do not edit
2/* eslint-disable */2/* eslint-disable */
33
4import 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, FrameSupportWeightsWeightToFeeCoefficient, 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, 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, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletUnqSchedulerCall, PalletUnqSchedulerError, PalletUnqSchedulerEvent, PalletUnqSchedulerScheduledV3, 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, UpDataStructsCreateRefungibleExData, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, 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';4import 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, FrameSupportWeightsWeightToFeeCoefficient, 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, 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, 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, UpDataStructsCreateRefungibleExData, UpDataStructsNestingPermissions, UpDataStructsOwnerRestrictedSet, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, 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';
55
6declare module '@polkadot/types/types/registry' {6declare module '@polkadot/types/types/registry' {
7 export interface InterfaceTypes {7 export interface InterfaceTypes {
133 PalletUniqueCall: PalletUniqueCall;133 PalletUniqueCall: PalletUniqueCall;
134 PalletUniqueError: PalletUniqueError;134 PalletUniqueError: PalletUniqueError;
135 PalletUniqueRawEvent: PalletUniqueRawEvent;135 PalletUniqueRawEvent: PalletUniqueRawEvent;
136 PalletUnqSchedulerCall: PalletUnqSchedulerCall;136 PalletUniqueSchedulerCall: PalletUniqueSchedulerCall;
137 PalletUnqSchedulerError: PalletUnqSchedulerError;137 PalletUniqueSchedulerError: PalletUniqueSchedulerError;
138 PalletUnqSchedulerEvent: PalletUnqSchedulerEvent;138 PalletUniqueSchedulerEvent: PalletUniqueSchedulerEvent;
139 PalletUnqSchedulerScheduledV3: PalletUnqSchedulerScheduledV3;139 PalletUniqueSchedulerScheduledV3: PalletUniqueSchedulerScheduledV3;
140 PalletXcmCall: PalletXcmCall;140 PalletXcmCall: PalletXcmCall;
141 PalletXcmError: PalletXcmError;141 PalletXcmError: PalletXcmError;
142 PalletXcmEvent: PalletXcmEvent;142 PalletXcmEvent: PalletXcmEvent;
modifiedtests/src/interfaces/types-lookup.tsdiffbeforeafterboth
1438 readonly tokenId: u32;1438 readonly tokenId: u32;
1439 readonly propertyKeys: Vec<Bytes>;1439 readonly propertyKeys: Vec<Bytes>;
1440 } & Struct;1440 } & Struct;
1441 readonly isSetPropertyPermissions: boolean;1441 readonly isSetTokenPropertyPermissions: boolean;
1442 readonly asSetPropertyPermissions: {1442 readonly asSetTokenPropertyPermissions: {
1443 readonly collectionId: u32;1443 readonly collectionId: u32;
1444 readonly propertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;1444 readonly propertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;
1445 } & Struct;1445 } & Struct;
1498 readonly collectionId: u32;1498 readonly collectionId: u32;
1499 readonly newLimit: UpDataStructsCollectionPermissions;1499 readonly newLimit: UpDataStructsCollectionPermissions;
1500 } & Struct;1500 } & Struct;
1501 readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetCollectionLimits' | 'SetCollectionPermissions';1501 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';
1502 }1502 }
15031503
1504 /** @name UpDataStructsCollectionMode (156) */1504 /** @name UpDataStructsCollectionMode (156) */
1562 /** @name UpDataStructsNestingPermissions (169) */1562 /** @name UpDataStructsNestingPermissions (169) */
1563 export interface UpDataStructsNestingPermissions extends Struct {1563 export interface UpDataStructsNestingPermissions extends Struct {
1564 readonly tokenOwner: bool;1564 readonly tokenOwner: bool;
1565 readonly admin: bool;1565 readonly collectionAdmin: bool;
1566 readonly restricted: Option<UpDataStructsOwnerRestrictedSet>;1566 readonly restricted: Option<UpDataStructsOwnerRestrictedSet>;
1567 readonly permissive: bool;1567 readonly permissive: bool;
1568 }1568 }
1650 readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;1650 readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;
1651 }1651 }
16521652
1653 /** @name PalletUnqSchedulerCall (206) */1653 /** @name PalletUniqueSchedulerCall (206) */
1654 export interface PalletUnqSchedulerCall extends Enum {1654 export interface PalletUniqueSchedulerCall extends Enum {
1655 readonly isScheduleNamed: boolean;1655 readonly isScheduleNamed: boolean;
1656 readonly asScheduleNamed: {1656 readonly asScheduleNamed: {
1657 readonly id: U8aFixed;1657 readonly id: U8aFixed;
1719 readonly royaltyAmount: Option<Permill>;1719 readonly royaltyAmount: Option<Permill>;
1720 readonly metadata: Bytes;1720 readonly metadata: Bytes;
1721 readonly transferable: bool;1721 readonly transferable: bool;
1722 readonly resources: Option<Vec<RmrkTraitsResourceResourceTypes>>;
1722 } & Struct;1723 } & Struct;
1723 readonly isBurnNft: boolean;1724 readonly isBurnNft: boolean;
1724 readonly asBurnNft: {1725 readonly asBurnNft: {
1725 readonly collectionId: u32;1726 readonly collectionId: u32;
1726 readonly nftId: u32;1727 readonly nftId: u32;
1728 readonly maxBurns: u32;
1727 } & Struct;1729 } & Struct;
1728 readonly isSend: boolean;1730 readonly isSend: boolean;
1729 readonly asSend: {1731 readonly asSend: {
1777 readonly asAddComposableResource: {1779 readonly asAddComposableResource: {
1778 readonly rmrkCollectionId: u32;1780 readonly rmrkCollectionId: u32;
1779 readonly nftId: u32;1781 readonly nftId: u32;
1780 readonly resourceId: Bytes;
1781 readonly resource: RmrkTraitsResourceComposableResource;1782 readonly resource: RmrkTraitsResourceComposableResource;
1782 } & Struct;1783 } & Struct;
1783 readonly isAddSlotResource: boolean;1784 readonly isAddSlotResource: boolean;
1795 readonly type: 'CreateCollection' | 'DestroyCollection' | 'ChangeCollectionIssuer' | 'LockCollection' | 'MintNft' | 'BurnNft' | 'Send' | 'AcceptNft' | 'RejectNft' | 'AcceptResource' | 'AcceptResourceRemoval' | 'SetProperty' | 'SetPriority' | 'AddBasicResource' | 'AddComposableResource' | 'AddSlotResource' | 'RemoveResource';1796 readonly type: 'CreateCollection' | 'DestroyCollection' | 'ChangeCollectionIssuer' | 'LockCollection' | 'MintNft' | 'BurnNft' | 'Send' | 'AcceptNft' | 'RejectNft' | 'AcceptResource' | 'AcceptResourceRemoval' | 'SetProperty' | 'SetPriority' | 'AddBasicResource' | 'AddComposableResource' | 'AddSlotResource' | 'RemoveResource';
1796 }1797 }
17971798
1798 /** @name RmrkTraitsNftAccountIdOrCollectionNftTuple (215) */1799 /** @name RmrkTraitsResourceResourceTypes (217) */
1799 export interface RmrkTraitsNftAccountIdOrCollectionNftTuple extends Enum {1800 export interface RmrkTraitsResourceResourceTypes extends Enum {
1800 readonly isAccountId: boolean;1801 readonly isBasic: boolean;
1801 readonly asAccountId: AccountId32;1802 readonly asBasic: RmrkTraitsResourceBasicResource;
1802 readonly isCollectionAndNftTuple: boolean;1803 readonly isComposable: boolean;
1803 readonly asCollectionAndNftTuple: ITuple<[u32, u32]>;1804 readonly asComposable: RmrkTraitsResourceComposableResource;
1805 readonly isSlot: boolean;
1806 readonly asSlot: RmrkTraitsResourceSlotResource;
1804 readonly type: 'AccountId' | 'CollectionAndNftTuple';1807 readonly type: 'Basic' | 'Composable' | 'Slot';
1805 }1808 }
18061809
1807 /** @name RmrkTraitsResourceBasicResource (219) */1810 /** @name RmrkTraitsResourceBasicResource (219) */
1812 readonly thumb: Option<Bytes>;1815 readonly thumb: Option<Bytes>;
1813 }1816 }
18141817
1815 /** @name RmrkTraitsResourceComposableResource (222) */1818 /** @name RmrkTraitsResourceComposableResource (221) */
1816 export interface RmrkTraitsResourceComposableResource extends Struct {1819 export interface RmrkTraitsResourceComposableResource extends Struct {
1817 readonly parts: Vec<u32>;1820 readonly parts: Vec<u32>;
1818 readonly base: u32;1821 readonly base: u32;
1822 readonly thumb: Option<Bytes>;1825 readonly thumb: Option<Bytes>;
1823 }1826 }
18241827
1825 /** @name RmrkTraitsResourceSlotResource (224) */1828 /** @name RmrkTraitsResourceSlotResource (222) */
1826 export interface RmrkTraitsResourceSlotResource extends Struct {1829 export interface RmrkTraitsResourceSlotResource extends Struct {
1827 readonly base: u32;1830 readonly base: u32;
1828 readonly src: Option<Bytes>;1831 readonly src: Option<Bytes>;
1832 readonly thumb: Option<Bytes>;1835 readonly thumb: Option<Bytes>;
1833 }1836 }
1837
1838 /** @name RmrkTraitsNftAccountIdOrCollectionNftTuple (224) */
1839 export interface RmrkTraitsNftAccountIdOrCollectionNftTuple extends Enum {
1840 readonly isAccountId: boolean;
1841 readonly asAccountId: AccountId32;
1842 readonly isCollectionAndNftTuple: boolean;
1843 readonly asCollectionAndNftTuple: ITuple<[u32, u32]>;
1844 readonly type: 'AccountId' | 'CollectionAndNftTuple';
1845 }
18341846
1835 /** @name PalletRmrkEquipCall (225) */1847 /** @name PalletRmrkEquipCall (228) */
1836 export interface PalletRmrkEquipCall extends Enum {1848 export interface PalletRmrkEquipCall extends Enum {
1837 readonly isCreateBase: boolean;1849 readonly isCreateBase: boolean;
1838 readonly asCreateBase: {1850 readonly asCreateBase: {
1848 readonly type: 'CreateBase' | 'ThemeAdd';1860 readonly type: 'CreateBase' | 'ThemeAdd';
1849 }1861 }
18501862
1851 /** @name RmrkTraitsPartPartType (227) */1863 /** @name RmrkTraitsPartPartType (230) */
1852 export interface RmrkTraitsPartPartType extends Enum {1864 export interface RmrkTraitsPartPartType extends Enum {
1853 readonly isFixedPart: boolean;1865 readonly isFixedPart: boolean;
1854 readonly asFixedPart: RmrkTraitsPartFixedPart;1866 readonly asFixedPart: RmrkTraitsPartFixedPart;
1857 readonly type: 'FixedPart' | 'SlotPart';1869 readonly type: 'FixedPart' | 'SlotPart';
1858 }1870 }
18591871
1860 /** @name RmrkTraitsPartFixedPart (229) */1872 /** @name RmrkTraitsPartFixedPart (232) */
1861 export interface RmrkTraitsPartFixedPart extends Struct {1873 export interface RmrkTraitsPartFixedPart extends Struct {
1862 readonly id: u32;1874 readonly id: u32;
1863 readonly z: u32;1875 readonly z: u32;
1864 readonly src: Bytes;1876 readonly src: Bytes;
1865 }1877 }
18661878
1867 /** @name RmrkTraitsPartSlotPart (230) */1879 /** @name RmrkTraitsPartSlotPart (233) */
1868 export interface RmrkTraitsPartSlotPart extends Struct {1880 export interface RmrkTraitsPartSlotPart extends Struct {
1869 readonly id: u32;1881 readonly id: u32;
1870 readonly equippable: RmrkTraitsPartEquippableList;1882 readonly equippable: RmrkTraitsPartEquippableList;
1871 readonly src: Bytes;1883 readonly src: Bytes;
1872 readonly z: u32;1884 readonly z: u32;
1873 }1885 }
18741886
1875 /** @name RmrkTraitsPartEquippableList (231) */1887 /** @name RmrkTraitsPartEquippableList (234) */
1876 export interface RmrkTraitsPartEquippableList extends Enum {1888 export interface RmrkTraitsPartEquippableList extends Enum {
1877 readonly isAll: boolean;1889 readonly isAll: boolean;
1878 readonly isEmpty: boolean;1890 readonly isEmpty: boolean;
1881 readonly type: 'All' | 'Empty' | 'Custom';1893 readonly type: 'All' | 'Empty' | 'Custom';
1882 }1894 }
18831895
1884 /** @name RmrkTraitsTheme (233) */1896 /** @name RmrkTraitsTheme (236) */
1885 export interface RmrkTraitsTheme extends Struct {1897 export interface RmrkTraitsTheme extends Struct {
1886 readonly name: Bytes;1898 readonly name: Bytes;
1887 readonly properties: Vec<RmrkTraitsThemeThemeProperty>;1899 readonly properties: Vec<RmrkTraitsThemeThemeProperty>;
1888 readonly inherit: bool;1900 readonly inherit: bool;
1889 }1901 }
18901902
1891 /** @name RmrkTraitsThemeThemeProperty (235) */1903 /** @name RmrkTraitsThemeThemeProperty (238) */
1892 export interface RmrkTraitsThemeThemeProperty extends Struct {1904 export interface RmrkTraitsThemeThemeProperty extends Struct {
1893 readonly key: Bytes;1905 readonly key: Bytes;
1894 readonly value: Bytes;1906 readonly value: Bytes;
1895 }1907 }
18961908
1897 /** @name PalletEvmCall (236) */1909 /** @name PalletEvmCall (239) */
1898 export interface PalletEvmCall extends Enum {1910 export interface PalletEvmCall extends Enum {
1899 readonly isWithdraw: boolean;1911 readonly isWithdraw: boolean;
1900 readonly asWithdraw: {1912 readonly asWithdraw: {
1939 readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2';1951 readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2';
1940 }1952 }
19411953
1942 /** @name PalletEthereumCall (242) */1954 /** @name PalletEthereumCall (245) */
1943 export interface PalletEthereumCall extends Enum {1955 export interface PalletEthereumCall extends Enum {
1944 readonly isTransact: boolean;1956 readonly isTransact: boolean;
1945 readonly asTransact: {1957 readonly asTransact: {
1948 readonly type: 'Transact';1960 readonly type: 'Transact';
1949 }1961 }
19501962
1951 /** @name EthereumTransactionTransactionV2 (243) */1963 /** @name EthereumTransactionTransactionV2 (246) */
1952 export interface EthereumTransactionTransactionV2 extends Enum {1964 export interface EthereumTransactionTransactionV2 extends Enum {
1953 readonly isLegacy: boolean;1965 readonly isLegacy: boolean;
1954 readonly asLegacy: EthereumTransactionLegacyTransaction;1966 readonly asLegacy: EthereumTransactionLegacyTransaction;
1959 readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';1971 readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';
1960 }1972 }
19611973
1962 /** @name EthereumTransactionLegacyTransaction (244) */1974 /** @name EthereumTransactionLegacyTransaction (247) */
1963 export interface EthereumTransactionLegacyTransaction extends Struct {1975 export interface EthereumTransactionLegacyTransaction extends Struct {
1964 readonly nonce: U256;1976 readonly nonce: U256;
1965 readonly gasPrice: U256;1977 readonly gasPrice: U256;
1970 readonly signature: EthereumTransactionTransactionSignature;1982 readonly signature: EthereumTransactionTransactionSignature;
1971 }1983 }
19721984
1973 /** @name EthereumTransactionTransactionAction (245) */1985 /** @name EthereumTransactionTransactionAction (248) */
1974 export interface EthereumTransactionTransactionAction extends Enum {1986 export interface EthereumTransactionTransactionAction extends Enum {
1975 readonly isCall: boolean;1987 readonly isCall: boolean;
1976 readonly asCall: H160;1988 readonly asCall: H160;
1977 readonly isCreate: boolean;1989 readonly isCreate: boolean;
1978 readonly type: 'Call' | 'Create';1990 readonly type: 'Call' | 'Create';
1979 }1991 }
19801992
1981 /** @name EthereumTransactionTransactionSignature (246) */1993 /** @name EthereumTransactionTransactionSignature (249) */
1982 export interface EthereumTransactionTransactionSignature extends Struct {1994 export interface EthereumTransactionTransactionSignature extends Struct {
1983 readonly v: u64;1995 readonly v: u64;
1984 readonly r: H256;1996 readonly r: H256;
1985 readonly s: H256;1997 readonly s: H256;
1986 }1998 }
19871999
1988 /** @name EthereumTransactionEip2930Transaction (248) */2000 /** @name EthereumTransactionEip2930Transaction (251) */
1989 export interface EthereumTransactionEip2930Transaction extends Struct {2001 export interface EthereumTransactionEip2930Transaction extends Struct {
1990 readonly chainId: u64;2002 readonly chainId: u64;
1991 readonly nonce: U256;2003 readonly nonce: U256;
2000 readonly s: H256;2012 readonly s: H256;
2001 }2013 }
20022014
2003 /** @name EthereumTransactionAccessListItem (250) */2015 /** @name EthereumTransactionAccessListItem (253) */
2004 export interface EthereumTransactionAccessListItem extends Struct {2016 export interface EthereumTransactionAccessListItem extends Struct {
2005 readonly address: H160;2017 readonly address: H160;
2006 readonly storageKeys: Vec<H256>;2018 readonly storageKeys: Vec<H256>;
2007 }2019 }
20082020
2009 /** @name EthereumTransactionEip1559Transaction (251) */2021 /** @name EthereumTransactionEip1559Transaction (254) */
2010 export interface EthereumTransactionEip1559Transaction extends Struct {2022 export interface EthereumTransactionEip1559Transaction extends Struct {
2011 readonly chainId: u64;2023 readonly chainId: u64;
2012 readonly nonce: U256;2024 readonly nonce: U256;
2022 readonly s: H256;2034 readonly s: H256;
2023 }2035 }
20242036
2025 /** @name PalletEvmMigrationCall (252) */2037 /** @name PalletEvmMigrationCall (255) */
2026 export interface PalletEvmMigrationCall extends Enum {2038 export interface PalletEvmMigrationCall extends Enum {
2027 readonly isBegin: boolean;2039 readonly isBegin: boolean;
2028 readonly asBegin: {2040 readonly asBegin: {
2041 readonly type: 'Begin' | 'SetData' | 'Finish';2053 readonly type: 'Begin' | 'SetData' | 'Finish';
2042 }2054 }
20432055
2044 /** @name PalletSudoEvent (255) */2056 /** @name PalletSudoEvent (258) */
2045 export interface PalletSudoEvent extends Enum {2057 export interface PalletSudoEvent extends Enum {
2046 readonly isSudid: boolean;2058 readonly isSudid: boolean;
2047 readonly asSudid: {2059 readonly asSudid: {
2058 readonly type: 'Sudid' | 'KeyChanged' | 'SudoAsDone';2070 readonly type: 'Sudid' | 'KeyChanged' | 'SudoAsDone';
2059 }2071 }
20602072
2061 /** @name SpRuntimeDispatchError (257) */2073 /** @name SpRuntimeDispatchError (260) */
2062 export interface SpRuntimeDispatchError extends Enum {2074 export interface SpRuntimeDispatchError extends Enum {
2063 readonly isOther: boolean;2075 readonly isOther: boolean;
2064 readonly isCannotLookup: boolean;2076 readonly isCannotLookup: boolean;
2077 readonly type: 'Other' | 'CannotLookup' | 'BadOrigin' | 'Module' | 'ConsumerRemaining' | 'NoProviders' | 'TooManyConsumers' | 'Token' | 'Arithmetic' | 'Transactional';2089 readonly type: 'Other' | 'CannotLookup' | 'BadOrigin' | 'Module' | 'ConsumerRemaining' | 'NoProviders' | 'TooManyConsumers' | 'Token' | 'Arithmetic' | 'Transactional';
2078 }2090 }
20792091
2080 /** @name SpRuntimeModuleError (258) */2092 /** @name SpRuntimeModuleError (261) */
2081 export interface SpRuntimeModuleError extends Struct {2093 export interface SpRuntimeModuleError extends Struct {
2082 readonly index: u8;2094 readonly index: u8;
2083 readonly error: U8aFixed;2095 readonly error: U8aFixed;
2084 }2096 }
20852097
2086 /** @name SpRuntimeTokenError (259) */2098 /** @name SpRuntimeTokenError (262) */
2087 export interface SpRuntimeTokenError extends Enum {2099 export interface SpRuntimeTokenError extends Enum {
2088 readonly isNoFunds: boolean;2100 readonly isNoFunds: boolean;
2089 readonly isWouldDie: boolean;2101 readonly isWouldDie: boolean;
2095 readonly type: 'NoFunds' | 'WouldDie' | 'BelowMinimum' | 'CannotCreate' | 'UnknownAsset' | 'Frozen' | 'Unsupported';2107 readonly type: 'NoFunds' | 'WouldDie' | 'BelowMinimum' | 'CannotCreate' | 'UnknownAsset' | 'Frozen' | 'Unsupported';
2096 }2108 }
20972109
2098 /** @name SpRuntimeArithmeticError (260) */2110 /** @name SpRuntimeArithmeticError (263) */
2099 export interface SpRuntimeArithmeticError extends Enum {2111 export interface SpRuntimeArithmeticError extends Enum {
2100 readonly isUnderflow: boolean;2112 readonly isUnderflow: boolean;
2101 readonly isOverflow: boolean;2113 readonly isOverflow: boolean;
2102 readonly isDivisionByZero: boolean;2114 readonly isDivisionByZero: boolean;
2103 readonly type: 'Underflow' | 'Overflow' | 'DivisionByZero';2115 readonly type: 'Underflow' | 'Overflow' | 'DivisionByZero';
2104 }2116 }
21052117
2106 /** @name SpRuntimeTransactionalError (261) */2118 /** @name SpRuntimeTransactionalError (264) */
2107 export interface SpRuntimeTransactionalError extends Enum {2119 export interface SpRuntimeTransactionalError extends Enum {
2108 readonly isLimitReached: boolean;2120 readonly isLimitReached: boolean;
2109 readonly isNoLayer: boolean;2121 readonly isNoLayer: boolean;
2110 readonly type: 'LimitReached' | 'NoLayer';2122 readonly type: 'LimitReached' | 'NoLayer';
2111 }2123 }
21122124
2113 /** @name PalletSudoError (262) */2125 /** @name PalletSudoError (265) */
2114 export interface PalletSudoError extends Enum {2126 export interface PalletSudoError extends Enum {
2115 readonly isRequireSudo: boolean;2127 readonly isRequireSudo: boolean;
2116 readonly type: 'RequireSudo';2128 readonly type: 'RequireSudo';
2117 }2129 }
21182130
2119 /** @name FrameSystemAccountInfo (263) */2131 /** @name FrameSystemAccountInfo (266) */
2120 export interface FrameSystemAccountInfo extends Struct {2132 export interface FrameSystemAccountInfo extends Struct {
2121 readonly nonce: u32;2133 readonly nonce: u32;
2122 readonly consumers: u32;2134 readonly consumers: u32;
2125 readonly data: PalletBalancesAccountData;2137 readonly data: PalletBalancesAccountData;
2126 }2138 }
21272139
2128 /** @name FrameSupportWeightsPerDispatchClassU64 (264) */2140 /** @name FrameSupportWeightsPerDispatchClassU64 (267) */
2129 export interface FrameSupportWeightsPerDispatchClassU64 extends Struct {2141 export interface FrameSupportWeightsPerDispatchClassU64 extends Struct {
2130 readonly normal: u64;2142 readonly normal: u64;
2131 readonly operational: u64;2143 readonly operational: u64;
2132 readonly mandatory: u64;2144 readonly mandatory: u64;
2133 }2145 }
21342146
2135 /** @name SpRuntimeDigest (265) */2147 /** @name SpRuntimeDigest (268) */
2136 export interface SpRuntimeDigest extends Struct {2148 export interface SpRuntimeDigest extends Struct {
2137 readonly logs: Vec<SpRuntimeDigestDigestItem>;2149 readonly logs: Vec<SpRuntimeDigestDigestItem>;
2138 }2150 }
21392151
2140 /** @name SpRuntimeDigestDigestItem (267) */2152 /** @name SpRuntimeDigestDigestItem (270) */
2141 export interface SpRuntimeDigestDigestItem extends Enum {2153 export interface SpRuntimeDigestDigestItem extends Enum {
2142 readonly isOther: boolean;2154 readonly isOther: boolean;
2143 readonly asOther: Bytes;2155 readonly asOther: Bytes;
2151 readonly type: 'Other' | 'Consensus' | 'Seal' | 'PreRuntime' | 'RuntimeEnvironmentUpdated';2163 readonly type: 'Other' | 'Consensus' | 'Seal' | 'PreRuntime' | 'RuntimeEnvironmentUpdated';
2152 }2164 }
21532165
2154 /** @name FrameSystemEventRecord (269) */2166 /** @name FrameSystemEventRecord (272) */
2155 export interface FrameSystemEventRecord extends Struct {2167 export interface FrameSystemEventRecord extends Struct {
2156 readonly phase: FrameSystemPhase;2168 readonly phase: FrameSystemPhase;
2157 readonly event: Event;2169 readonly event: Event;
2158 readonly topics: Vec<H256>;2170 readonly topics: Vec<H256>;
2159 }2171 }
21602172
2161 /** @name FrameSystemEvent (271) */2173 /** @name FrameSystemEvent (274) */
2162 export interface FrameSystemEvent extends Enum {2174 export interface FrameSystemEvent extends Enum {
2163 readonly isExtrinsicSuccess: boolean;2175 readonly isExtrinsicSuccess: boolean;
2164 readonly asExtrinsicSuccess: {2176 readonly asExtrinsicSuccess: {
2186 readonly type: 'ExtrinsicSuccess' | 'ExtrinsicFailed' | 'CodeUpdated' | 'NewAccount' | 'KilledAccount' | 'Remarked';2198 readonly type: 'ExtrinsicSuccess' | 'ExtrinsicFailed' | 'CodeUpdated' | 'NewAccount' | 'KilledAccount' | 'Remarked';
2187 }2199 }
21882200
2189 /** @name FrameSupportWeightsDispatchInfo (272) */2201 /** @name FrameSupportWeightsDispatchInfo (275) */
2190 export interface FrameSupportWeightsDispatchInfo extends Struct {2202 export interface FrameSupportWeightsDispatchInfo extends Struct {
2191 readonly weight: u64;2203 readonly weight: u64;
2192 readonly class: FrameSupportWeightsDispatchClass;2204 readonly class: FrameSupportWeightsDispatchClass;
2193 readonly paysFee: FrameSupportWeightsPays;2205 readonly paysFee: FrameSupportWeightsPays;
2194 }2206 }
21952207
2196 /** @name FrameSupportWeightsDispatchClass (273) */2208 /** @name FrameSupportWeightsDispatchClass (276) */
2197 export interface FrameSupportWeightsDispatchClass extends Enum {2209 export interface FrameSupportWeightsDispatchClass extends Enum {
2198 readonly isNormal: boolean;2210 readonly isNormal: boolean;
2199 readonly isOperational: boolean;2211 readonly isOperational: boolean;
2200 readonly isMandatory: boolean;2212 readonly isMandatory: boolean;
2201 readonly type: 'Normal' | 'Operational' | 'Mandatory';2213 readonly type: 'Normal' | 'Operational' | 'Mandatory';
2202 }2214 }
22032215
2204 /** @name FrameSupportWeightsPays (274) */2216 /** @name FrameSupportWeightsPays (277) */
2205 export interface FrameSupportWeightsPays extends Enum {2217 export interface FrameSupportWeightsPays extends Enum {
2206 readonly isYes: boolean;2218 readonly isYes: boolean;
2207 readonly isNo: boolean;2219 readonly isNo: boolean;
2208 readonly type: 'Yes' | 'No';2220 readonly type: 'Yes' | 'No';
2209 }2221 }
22102222
2211 /** @name OrmlVestingModuleEvent (275) */2223 /** @name OrmlVestingModuleEvent (278) */
2212 export interface OrmlVestingModuleEvent extends Enum {2224 export interface OrmlVestingModuleEvent extends Enum {
2213 readonly isVestingScheduleAdded: boolean;2225 readonly isVestingScheduleAdded: boolean;
2214 readonly asVestingScheduleAdded: {2226 readonly asVestingScheduleAdded: {
2228 readonly type: 'VestingScheduleAdded' | 'Claimed' | 'VestingSchedulesUpdated';2240 readonly type: 'VestingScheduleAdded' | 'Claimed' | 'VestingSchedulesUpdated';
2229 }2241 }
22302242
2231 /** @name CumulusPalletXcmpQueueEvent (276) */2243 /** @name CumulusPalletXcmpQueueEvent (279) */
2232 export interface CumulusPalletXcmpQueueEvent extends Enum {2244 export interface CumulusPalletXcmpQueueEvent extends Enum {
2233 readonly isSuccess: boolean;2245 readonly isSuccess: boolean;
2234 readonly asSuccess: Option<H256>;2246 readonly asSuccess: Option<H256>;
2249 readonly type: 'Success' | 'Fail' | 'BadVersion' | 'BadFormat' | 'UpwardMessageSent' | 'XcmpMessageSent' | 'OverweightEnqueued' | 'OverweightServiced';2261 readonly type: 'Success' | 'Fail' | 'BadVersion' | 'BadFormat' | 'UpwardMessageSent' | 'XcmpMessageSent' | 'OverweightEnqueued' | 'OverweightServiced';
2250 }2262 }
22512263
2252 /** @name PalletXcmEvent (277) */2264 /** @name PalletXcmEvent (280) */
2253 export interface PalletXcmEvent extends Enum {2265 export interface PalletXcmEvent extends Enum {
2254 readonly isAttempted: boolean;2266 readonly isAttempted: boolean;
2255 readonly asAttempted: XcmV2TraitsOutcome;2267 readonly asAttempted: XcmV2TraitsOutcome;
2286 readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail';2298 readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail';
2287 }2299 }
22882300
2289 /** @name XcmV2TraitsOutcome (278) */2301 /** @name XcmV2TraitsOutcome (281) */
2290 export interface XcmV2TraitsOutcome extends Enum {2302 export interface XcmV2TraitsOutcome extends Enum {
2291 readonly isComplete: boolean;2303 readonly isComplete: boolean;
2292 readonly asComplete: u64;2304 readonly asComplete: u64;
2297 readonly type: 'Complete' | 'Incomplete' | 'Error';2309 readonly type: 'Complete' | 'Incomplete' | 'Error';
2298 }2310 }
22992311
2300 /** @name CumulusPalletXcmEvent (280) */2312 /** @name CumulusPalletXcmEvent (283) */
2301 export interface CumulusPalletXcmEvent extends Enum {2313 export interface CumulusPalletXcmEvent extends Enum {
2302 readonly isInvalidFormat: boolean;2314 readonly isInvalidFormat: boolean;
2303 readonly asInvalidFormat: U8aFixed;2315 readonly asInvalidFormat: U8aFixed;
2308 readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward';2320 readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward';
2309 }2321 }
23102322
2311 /** @name CumulusPalletDmpQueueEvent (281) */2323 /** @name CumulusPalletDmpQueueEvent (284) */
2312 export interface CumulusPalletDmpQueueEvent extends Enum {2324 export interface CumulusPalletDmpQueueEvent extends Enum {
2313 readonly isInvalidFormat: boolean;2325 readonly isInvalidFormat: boolean;
2314 readonly asInvalidFormat: U8aFixed;2326 readonly asInvalidFormat: U8aFixed;
2325 readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward' | 'WeightExhausted' | 'OverweightEnqueued' | 'OverweightServiced';2337 readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward' | 'WeightExhausted' | 'OverweightEnqueued' | 'OverweightServiced';
2326 }2338 }
23272339
2328 /** @name PalletUniqueRawEvent (282) */2340 /** @name PalletUniqueRawEvent (285) */
2329 export interface PalletUniqueRawEvent extends Enum {2341 export interface PalletUniqueRawEvent extends Enum {
2330 readonly isCollectionSponsorRemoved: boolean;2342 readonly isCollectionSponsorRemoved: boolean;
2331 readonly asCollectionSponsorRemoved: u32;2343 readonly asCollectionSponsorRemoved: u32;
2350 readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet';2362 readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet';
2351 }2363 }
23522364
2353 /** @name PalletUnqSchedulerEvent (283) */2365 /** @name PalletUniqueSchedulerEvent (286) */
2354 export interface PalletUnqSchedulerEvent extends Enum {2366 export interface PalletUniqueSchedulerEvent extends Enum {
2355 readonly isScheduled: boolean;2367 readonly isScheduled: boolean;
2356 readonly asScheduled: {2368 readonly asScheduled: {
2357 readonly when: u32;2369 readonly when: u32;
2377 readonly type: 'Scheduled' | 'Canceled' | 'Dispatched' | 'CallLookupFailed';2389 readonly type: 'Scheduled' | 'Canceled' | 'Dispatched' | 'CallLookupFailed';
2378 }2390 }
23792391
2380 /** @name FrameSupportScheduleLookupError (285) */2392 /** @name FrameSupportScheduleLookupError (288) */
2381 export interface FrameSupportScheduleLookupError extends Enum {2393 export interface FrameSupportScheduleLookupError extends Enum {
2382 readonly isUnknown: boolean;2394 readonly isUnknown: boolean;
2383 readonly isBadFormat: boolean;2395 readonly isBadFormat: boolean;
2384 readonly type: 'Unknown' | 'BadFormat';2396 readonly type: 'Unknown' | 'BadFormat';
2385 }2397 }
23862398
2387 /** @name PalletCommonEvent (286) */2399 /** @name PalletCommonEvent (289) */
2388 export interface PalletCommonEvent extends Enum {2400 export interface PalletCommonEvent extends Enum {
2389 readonly isCollectionCreated: boolean;2401 readonly isCollectionCreated: boolean;
2390 readonly asCollectionCreated: ITuple<[u32, u8, AccountId32]>;2402 readonly asCollectionCreated: ITuple<[u32, u8, AccountId32]>;
2411 readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved' | 'CollectionPropertySet' | 'CollectionPropertyDeleted' | 'TokenPropertySet' | 'TokenPropertyDeleted' | 'PropertyPermissionSet';2423 readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved' | 'CollectionPropertySet' | 'CollectionPropertyDeleted' | 'TokenPropertySet' | 'TokenPropertyDeleted' | 'PropertyPermissionSet';
2412 }2424 }
24132425
2414 /** @name PalletStructureEvent (287) */2426 /** @name PalletStructureEvent (290) */
2415 export interface PalletStructureEvent extends Enum {2427 export interface PalletStructureEvent extends Enum {
2416 readonly isExecuted: boolean;2428 readonly isExecuted: boolean;
2417 readonly asExecuted: Result<Null, SpRuntimeDispatchError>;2429 readonly asExecuted: Result<Null, SpRuntimeDispatchError>;
2418 readonly type: 'Executed';2430 readonly type: 'Executed';
2419 }2431 }
24202432
2421 /** @name PalletRmrkCoreEvent (288) */2433 /** @name PalletRmrkCoreEvent (291) */
2422 export interface PalletRmrkCoreEvent extends Enum {2434 export interface PalletRmrkCoreEvent extends Enum {
2423 readonly isCollectionCreated: boolean;2435 readonly isCollectionCreated: boolean;
2424 readonly asCollectionCreated: {2436 readonly asCollectionCreated: {
2508 readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'IssuerChanged' | 'CollectionLocked' | 'NftMinted' | 'NftBurned' | 'NftSent' | 'NftAccepted' | 'NftRejected' | 'PropertySet' | 'ResourceAdded' | 'ResourceRemoval' | 'ResourceAccepted' | 'ResourceRemovalAccepted' | 'PrioritySet';2520 readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'IssuerChanged' | 'CollectionLocked' | 'NftMinted' | 'NftBurned' | 'NftSent' | 'NftAccepted' | 'NftRejected' | 'PropertySet' | 'ResourceAdded' | 'ResourceRemoval' | 'ResourceAccepted' | 'ResourceRemovalAccepted' | 'PrioritySet';
2509 }2521 }
25102522
2511 /** @name PalletRmrkEquipEvent (289) */2523 /** @name PalletRmrkEquipEvent (292) */
2512 export interface PalletRmrkEquipEvent extends Enum {2524 export interface PalletRmrkEquipEvent extends Enum {
2513 readonly isBaseCreated: boolean;2525 readonly isBaseCreated: boolean;
2514 readonly asBaseCreated: {2526 readonly asBaseCreated: {
2518 readonly type: 'BaseCreated';2530 readonly type: 'BaseCreated';
2519 }2531 }
25202532
2521 /** @name PalletEvmEvent (290) */2533 /** @name PalletEvmEvent (293) */
2522 export interface PalletEvmEvent extends Enum {2534 export interface PalletEvmEvent extends Enum {
2523 readonly isLog: boolean;2535 readonly isLog: boolean;
2524 readonly asLog: EthereumLog;2536 readonly asLog: EthereumLog;
2537 readonly type: 'Log' | 'Created' | 'CreatedFailed' | 'Executed' | 'ExecutedFailed' | 'BalanceDeposit' | 'BalanceWithdraw';2549 readonly type: 'Log' | 'Created' | 'CreatedFailed' | 'Executed' | 'ExecutedFailed' | 'BalanceDeposit' | 'BalanceWithdraw';
2538 }2550 }
25392551
2540 /** @name EthereumLog (291) */2552 /** @name EthereumLog (294) */
2541 export interface EthereumLog extends Struct {2553 export interface EthereumLog extends Struct {
2542 readonly address: H160;2554 readonly address: H160;
2543 readonly topics: Vec<H256>;2555 readonly topics: Vec<H256>;
2544 readonly data: Bytes;2556 readonly data: Bytes;
2545 }2557 }
25462558
2547 /** @name PalletEthereumEvent (292) */2559 /** @name PalletEthereumEvent (295) */
2548 export interface PalletEthereumEvent extends Enum {2560 export interface PalletEthereumEvent extends Enum {
2549 readonly isExecuted: boolean;2561 readonly isExecuted: boolean;
2550 readonly asExecuted: ITuple<[H160, H160, H256, EvmCoreErrorExitReason]>;2562 readonly asExecuted: ITuple<[H160, H160, H256, EvmCoreErrorExitReason]>;
2551 readonly type: 'Executed';2563 readonly type: 'Executed';
2552 }2564 }
25532565
2554 /** @name EvmCoreErrorExitReason (293) */2566 /** @name EvmCoreErrorExitReason (296) */
2555 export interface EvmCoreErrorExitReason extends Enum {2567 export interface EvmCoreErrorExitReason extends Enum {
2556 readonly isSucceed: boolean;2568 readonly isSucceed: boolean;
2557 readonly asSucceed: EvmCoreErrorExitSucceed;2569 readonly asSucceed: EvmCoreErrorExitSucceed;
2564 readonly type: 'Succeed' | 'Error' | 'Revert' | 'Fatal';2576 readonly type: 'Succeed' | 'Error' | 'Revert' | 'Fatal';
2565 }2577 }
25662578
2567 /** @name EvmCoreErrorExitSucceed (294) */2579 /** @name EvmCoreErrorExitSucceed (297) */
2568 export interface EvmCoreErrorExitSucceed extends Enum {2580 export interface EvmCoreErrorExitSucceed extends Enum {
2569 readonly isStopped: boolean;2581 readonly isStopped: boolean;
2570 readonly isReturned: boolean;2582 readonly isReturned: boolean;
2571 readonly isSuicided: boolean;2583 readonly isSuicided: boolean;
2572 readonly type: 'Stopped' | 'Returned' | 'Suicided';2584 readonly type: 'Stopped' | 'Returned' | 'Suicided';
2573 }2585 }
25742586
2575 /** @name EvmCoreErrorExitError (295) */2587 /** @name EvmCoreErrorExitError (298) */
2576 export interface EvmCoreErrorExitError extends Enum {2588 export interface EvmCoreErrorExitError extends Enum {
2577 readonly isStackUnderflow: boolean;2589 readonly isStackUnderflow: boolean;
2578 readonly isStackOverflow: boolean;2590 readonly isStackOverflow: boolean;
2593 readonly type: 'StackUnderflow' | 'StackOverflow' | 'InvalidJump' | 'InvalidRange' | 'DesignatedInvalid' | 'CallTooDeep' | 'CreateCollision' | 'CreateContractLimit' | 'OutOfOffset' | 'OutOfGas' | 'OutOfFund' | 'PcUnderflow' | 'CreateEmpty' | 'Other' | 'InvalidCode';2605 readonly type: 'StackUnderflow' | 'StackOverflow' | 'InvalidJump' | 'InvalidRange' | 'DesignatedInvalid' | 'CallTooDeep' | 'CreateCollision' | 'CreateContractLimit' | 'OutOfOffset' | 'OutOfGas' | 'OutOfFund' | 'PcUnderflow' | 'CreateEmpty' | 'Other' | 'InvalidCode';
2594 }2606 }
25952607
2596 /** @name EvmCoreErrorExitRevert (298) */2608 /** @name EvmCoreErrorExitRevert (301) */
2597 export interface EvmCoreErrorExitRevert extends Enum {2609 export interface EvmCoreErrorExitRevert extends Enum {
2598 readonly isReverted: boolean;2610 readonly isReverted: boolean;
2599 readonly type: 'Reverted';2611 readonly type: 'Reverted';
2600 }2612 }
26012613
2602 /** @name EvmCoreErrorExitFatal (299) */2614 /** @name EvmCoreErrorExitFatal (302) */
2603 export interface EvmCoreErrorExitFatal extends Enum {2615 export interface EvmCoreErrorExitFatal extends Enum {
2604 readonly isNotSupported: boolean;2616 readonly isNotSupported: boolean;
2605 readonly isUnhandledInterrupt: boolean;2617 readonly isUnhandledInterrupt: boolean;
2610 readonly type: 'NotSupported' | 'UnhandledInterrupt' | 'CallErrorAsFatal' | 'Other';2622 readonly type: 'NotSupported' | 'UnhandledInterrupt' | 'CallErrorAsFatal' | 'Other';
2611 }2623 }
26122624
2613 /** @name FrameSystemPhase (300) */2625 /** @name FrameSystemPhase (303) */
2614 export interface FrameSystemPhase extends Enum {2626 export interface FrameSystemPhase extends Enum {
2615 readonly isApplyExtrinsic: boolean;2627 readonly isApplyExtrinsic: boolean;
2616 readonly asApplyExtrinsic: u32;2628 readonly asApplyExtrinsic: u32;
2619 readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';2631 readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';
2620 }2632 }
26212633
2622 /** @name FrameSystemLastRuntimeUpgradeInfo (302) */2634 /** @name FrameSystemLastRuntimeUpgradeInfo (305) */
2623 export interface FrameSystemLastRuntimeUpgradeInfo extends Struct {2635 export interface FrameSystemLastRuntimeUpgradeInfo extends Struct {
2624 readonly specVersion: Compact<u32>;2636 readonly specVersion: Compact<u32>;
2625 readonly specName: Text;2637 readonly specName: Text;
2626 }2638 }
26272639
2628 /** @name FrameSystemLimitsBlockWeights (303) */2640 /** @name FrameSystemLimitsBlockWeights (306) */
2629 export interface FrameSystemLimitsBlockWeights extends Struct {2641 export interface FrameSystemLimitsBlockWeights extends Struct {
2630 readonly baseBlock: u64;2642 readonly baseBlock: u64;
2631 readonly maxBlock: u64;2643 readonly maxBlock: u64;
2632 readonly perClass: FrameSupportWeightsPerDispatchClassWeightsPerClass;2644 readonly perClass: FrameSupportWeightsPerDispatchClassWeightsPerClass;
2633 }2645 }
26342646
2635 /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (304) */2647 /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (307) */
2636 export interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct {2648 export interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct {
2637 readonly normal: FrameSystemLimitsWeightsPerClass;2649 readonly normal: FrameSystemLimitsWeightsPerClass;
2638 readonly operational: FrameSystemLimitsWeightsPerClass;2650 readonly operational: FrameSystemLimitsWeightsPerClass;
2639 readonly mandatory: FrameSystemLimitsWeightsPerClass;2651 readonly mandatory: FrameSystemLimitsWeightsPerClass;
2640 }2652 }
26412653
2642 /** @name FrameSystemLimitsWeightsPerClass (305) */2654 /** @name FrameSystemLimitsWeightsPerClass (308) */
2643 export interface FrameSystemLimitsWeightsPerClass extends Struct {2655 export interface FrameSystemLimitsWeightsPerClass extends Struct {
2644 readonly baseExtrinsic: u64;2656 readonly baseExtrinsic: u64;
2645 readonly maxExtrinsic: Option<u64>;2657 readonly maxExtrinsic: Option<u64>;
2646 readonly maxTotal: Option<u64>;2658 readonly maxTotal: Option<u64>;
2647 readonly reserved: Option<u64>;2659 readonly reserved: Option<u64>;
2648 }2660 }
26492661
2650 /** @name FrameSystemLimitsBlockLength (307) */2662 /** @name FrameSystemLimitsBlockLength (310) */
2651 export interface FrameSystemLimitsBlockLength extends Struct {2663 export interface FrameSystemLimitsBlockLength extends Struct {
2652 readonly max: FrameSupportWeightsPerDispatchClassU32;2664 readonly max: FrameSupportWeightsPerDispatchClassU32;
2653 }2665 }
26542666
2655 /** @name FrameSupportWeightsPerDispatchClassU32 (308) */2667 /** @name FrameSupportWeightsPerDispatchClassU32 (311) */
2656 export interface FrameSupportWeightsPerDispatchClassU32 extends Struct {2668 export interface FrameSupportWeightsPerDispatchClassU32 extends Struct {
2657 readonly normal: u32;2669 readonly normal: u32;
2658 readonly operational: u32;2670 readonly operational: u32;
2659 readonly mandatory: u32;2671 readonly mandatory: u32;
2660 }2672 }
26612673
2662 /** @name FrameSupportWeightsRuntimeDbWeight (309) */2674 /** @name FrameSupportWeightsRuntimeDbWeight (312) */
2663 export interface FrameSupportWeightsRuntimeDbWeight extends Struct {2675 export interface FrameSupportWeightsRuntimeDbWeight extends Struct {
2664 readonly read: u64;2676 readonly read: u64;
2665 readonly write: u64;2677 readonly write: u64;
2666 }2678 }
26672679
2668 /** @name SpVersionRuntimeVersion (310) */2680 /** @name SpVersionRuntimeVersion (313) */
2669 export interface SpVersionRuntimeVersion extends Struct {2681 export interface SpVersionRuntimeVersion extends Struct {
2670 readonly specName: Text;2682 readonly specName: Text;
2671 readonly implName: Text;2683 readonly implName: Text;
2677 readonly stateVersion: u8;2689 readonly stateVersion: u8;
2678 }2690 }
26792691
2680 /** @name FrameSystemError (314) */2692 /** @name FrameSystemError (317) */
2681 export interface FrameSystemError extends Enum {2693 export interface FrameSystemError extends Enum {
2682 readonly isInvalidSpecName: boolean;2694 readonly isInvalidSpecName: boolean;
2683 readonly isSpecVersionNeedsToIncrease: boolean;2695 readonly isSpecVersionNeedsToIncrease: boolean;
2688 readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered';2700 readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered';
2689 }2701 }
26902702
2691 /** @name OrmlVestingModuleError (316) */2703 /** @name OrmlVestingModuleError (319) */
2692 export interface OrmlVestingModuleError extends Enum {2704 export interface OrmlVestingModuleError extends Enum {
2693 readonly isZeroVestingPeriod: boolean;2705 readonly isZeroVestingPeriod: boolean;
2694 readonly isZeroVestingPeriodCount: boolean;2706 readonly isZeroVestingPeriodCount: boolean;
2699 readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded';2711 readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded';
2700 }2712 }
27012713
2702 /** @name CumulusPalletXcmpQueueInboundChannelDetails (318) */2714 /** @name CumulusPalletXcmpQueueInboundChannelDetails (321) */
2703 export interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {2715 export interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {
2704 readonly sender: u32;2716 readonly sender: u32;
2705 readonly state: CumulusPalletXcmpQueueInboundState;2717 readonly state: CumulusPalletXcmpQueueInboundState;
2706 readonly messageMetadata: Vec<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;2718 readonly messageMetadata: Vec<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;
2707 }2719 }
27082720
2709 /** @name CumulusPalletXcmpQueueInboundState (319) */2721 /** @name CumulusPalletXcmpQueueInboundState (322) */
2710 export interface CumulusPalletXcmpQueueInboundState extends Enum {2722 export interface CumulusPalletXcmpQueueInboundState extends Enum {
2711 readonly isOk: boolean;2723 readonly isOk: boolean;
2712 readonly isSuspended: boolean;2724 readonly isSuspended: boolean;
2713 readonly type: 'Ok' | 'Suspended';2725 readonly type: 'Ok' | 'Suspended';
2714 }2726 }
27152727
2716 /** @name PolkadotParachainPrimitivesXcmpMessageFormat (322) */2728 /** @name PolkadotParachainPrimitivesXcmpMessageFormat (325) */
2717 export interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {2729 export interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {
2718 readonly isConcatenatedVersionedXcm: boolean;2730 readonly isConcatenatedVersionedXcm: boolean;
2719 readonly isConcatenatedEncodedBlob: boolean;2731 readonly isConcatenatedEncodedBlob: boolean;
2720 readonly isSignals: boolean;2732 readonly isSignals: boolean;
2721 readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';2733 readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';
2722 }2734 }
27232735
2724 /** @name CumulusPalletXcmpQueueOutboundChannelDetails (325) */2736 /** @name CumulusPalletXcmpQueueOutboundChannelDetails (328) */
2725 export interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {2737 export interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {
2726 readonly recipient: u32;2738 readonly recipient: u32;
2727 readonly state: CumulusPalletXcmpQueueOutboundState;2739 readonly state: CumulusPalletXcmpQueueOutboundState;
2730 readonly lastIndex: u16;2742 readonly lastIndex: u16;
2731 }2743 }
27322744
2733 /** @name CumulusPalletXcmpQueueOutboundState (326) */2745 /** @name CumulusPalletXcmpQueueOutboundState (329) */
2734 export interface CumulusPalletXcmpQueueOutboundState extends Enum {2746 export interface CumulusPalletXcmpQueueOutboundState extends Enum {
2735 readonly isOk: boolean;2747 readonly isOk: boolean;
2736 readonly isSuspended: boolean;2748 readonly isSuspended: boolean;
2737 readonly type: 'Ok' | 'Suspended';2749 readonly type: 'Ok' | 'Suspended';
2738 }2750 }
27392751
2740 /** @name CumulusPalletXcmpQueueQueueConfigData (328) */2752 /** @name CumulusPalletXcmpQueueQueueConfigData (331) */
2741 export interface CumulusPalletXcmpQueueQueueConfigData extends Struct {2753 export interface CumulusPalletXcmpQueueQueueConfigData extends Struct {
2742 readonly suspendThreshold: u32;2754 readonly suspendThreshold: u32;
2743 readonly dropThreshold: u32;2755 readonly dropThreshold: u32;
2747 readonly xcmpMaxIndividualWeight: u64;2759 readonly xcmpMaxIndividualWeight: u64;
2748 }2760 }
27492761
2750 /** @name CumulusPalletXcmpQueueError (330) */2762 /** @name CumulusPalletXcmpQueueError (333) */
2751 export interface CumulusPalletXcmpQueueError extends Enum {2763 export interface CumulusPalletXcmpQueueError extends Enum {
2752 readonly isFailedToSend: boolean;2764 readonly isFailedToSend: boolean;
2753 readonly isBadXcmOrigin: boolean;2765 readonly isBadXcmOrigin: boolean;
2757 readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit';2769 readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit';
2758 }2770 }
27592771
2760 /** @name PalletXcmError (331) */2772 /** @name PalletXcmError (334) */
2761 export interface PalletXcmError extends Enum {2773 export interface PalletXcmError extends Enum {
2762 readonly isUnreachable: boolean;2774 readonly isUnreachable: boolean;
2763 readonly isSendFailure: boolean;2775 readonly isSendFailure: boolean;
2775 readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed';2787 readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed';
2776 }2788 }
27772789
2778 /** @name CumulusPalletXcmError (332) */2790 /** @name CumulusPalletXcmError (335) */
2779 export type CumulusPalletXcmError = Null;2791 export type CumulusPalletXcmError = Null;
27802792
2781 /** @name CumulusPalletDmpQueueConfigData (333) */2793 /** @name CumulusPalletDmpQueueConfigData (336) */
2782 export interface CumulusPalletDmpQueueConfigData extends Struct {2794 export interface CumulusPalletDmpQueueConfigData extends Struct {
2783 readonly maxIndividual: u64;2795 readonly maxIndividual: u64;
2784 }2796 }
27852797
2786 /** @name CumulusPalletDmpQueuePageIndexData (334) */2798 /** @name CumulusPalletDmpQueuePageIndexData (337) */
2787 export interface CumulusPalletDmpQueuePageIndexData extends Struct {2799 export interface CumulusPalletDmpQueuePageIndexData extends Struct {
2788 readonly beginUsed: u32;2800 readonly beginUsed: u32;
2789 readonly endUsed: u32;2801 readonly endUsed: u32;
2790 readonly overweightCount: u64;2802 readonly overweightCount: u64;
2791 }2803 }
27922804
2793 /** @name CumulusPalletDmpQueueError (337) */2805 /** @name CumulusPalletDmpQueueError (340) */
2794 export interface CumulusPalletDmpQueueError extends Enum {2806 export interface CumulusPalletDmpQueueError extends Enum {
2795 readonly isUnknown: boolean;2807 readonly isUnknown: boolean;
2796 readonly isOverLimit: boolean;2808 readonly isOverLimit: boolean;
2797 readonly type: 'Unknown' | 'OverLimit';2809 readonly type: 'Unknown' | 'OverLimit';
2798 }2810 }
27992811
2800 /** @name PalletUniqueError (341) */2812 /** @name PalletUniqueError (344) */
2801 export interface PalletUniqueError extends Enum {2813 export interface PalletUniqueError extends Enum {
2802 readonly isCollectionDecimalPointLimitExceeded: boolean;2814 readonly isCollectionDecimalPointLimitExceeded: boolean;
2803 readonly isConfirmUnsetSponsorFail: boolean;2815 readonly isConfirmUnsetSponsorFail: boolean;
2804 readonly isEmptyArgument: boolean;2816 readonly isEmptyArgument: boolean;
2805 readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument';2817 readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument';
2806 }2818 }
28072819
2808 /** @name PalletUnqSchedulerScheduledV3 (344) */2820 /** @name PalletUniqueSchedulerScheduledV3 (347) */
2809 export interface PalletUnqSchedulerScheduledV3 extends Struct {2821 export interface PalletUniqueSchedulerScheduledV3 extends Struct {
2810 readonly maybeId: Option<U8aFixed>;2822 readonly maybeId: Option<U8aFixed>;
2811 readonly priority: u8;2823 readonly priority: u8;
2812 readonly call: FrameSupportScheduleMaybeHashed;2824 readonly call: FrameSupportScheduleMaybeHashed;
2813 readonly maybePeriodic: Option<ITuple<[u32, u32]>>;2825 readonly maybePeriodic: Option<ITuple<[u32, u32]>>;
2814 readonly origin: OpalRuntimeOriginCaller;2826 readonly origin: OpalRuntimeOriginCaller;
2815 }2827 }
28162828
2817 /** @name OpalRuntimeOriginCaller (345) */2829 /** @name OpalRuntimeOriginCaller (348) */
2818 export interface OpalRuntimeOriginCaller extends Enum {2830 export interface OpalRuntimeOriginCaller extends Enum {
2819 readonly isVoid: boolean;2831 readonly isVoid: boolean;
2820 readonly isSystem: boolean;2832 readonly isSystem: boolean;
2828 readonly type: 'Void' | 'System' | 'PolkadotXcm' | 'CumulusXcm' | 'Ethereum';2840 readonly type: 'Void' | 'System' | 'PolkadotXcm' | 'CumulusXcm' | 'Ethereum';
2829 }2841 }
28302842
2831 /** @name FrameSupportDispatchRawOrigin (346) */2843 /** @name FrameSupportDispatchRawOrigin (349) */
2832 export interface FrameSupportDispatchRawOrigin extends Enum {2844 export interface FrameSupportDispatchRawOrigin extends Enum {
2833 readonly isRoot: boolean;2845 readonly isRoot: boolean;
2834 readonly isSigned: boolean;2846 readonly isSigned: boolean;
2837 readonly type: 'Root' | 'Signed' | 'None';2849 readonly type: 'Root' | 'Signed' | 'None';
2838 }2850 }
28392851
2840 /** @name PalletXcmOrigin (347) */2852 /** @name PalletXcmOrigin (350) */
2841 export interface PalletXcmOrigin extends Enum {2853 export interface PalletXcmOrigin extends Enum {
2842 readonly isXcm: boolean;2854 readonly isXcm: boolean;
2843 readonly asXcm: XcmV1MultiLocation;2855 readonly asXcm: XcmV1MultiLocation;
2846 readonly type: 'Xcm' | 'Response';2858 readonly type: 'Xcm' | 'Response';
2847 }2859 }
28482860
2849 /** @name CumulusPalletXcmOrigin (348) */2861 /** @name CumulusPalletXcmOrigin (351) */
2850 export interface CumulusPalletXcmOrigin extends Enum {2862 export interface CumulusPalletXcmOrigin extends Enum {
2851 readonly isRelay: boolean;2863 readonly isRelay: boolean;
2852 readonly isSiblingParachain: boolean;2864 readonly isSiblingParachain: boolean;
2853 readonly asSiblingParachain: u32;2865 readonly asSiblingParachain: u32;
2854 readonly type: 'Relay' | 'SiblingParachain';2866 readonly type: 'Relay' | 'SiblingParachain';
2855 }2867 }
28562868
2857 /** @name PalletEthereumRawOrigin (349) */2869 /** @name PalletEthereumRawOrigin (352) */
2858 export interface PalletEthereumRawOrigin extends Enum {2870 export interface PalletEthereumRawOrigin extends Enum {
2859 readonly isEthereumTransaction: boolean;2871 readonly isEthereumTransaction: boolean;
2860 readonly asEthereumTransaction: H160;2872 readonly asEthereumTransaction: H160;
2861 readonly type: 'EthereumTransaction';2873 readonly type: 'EthereumTransaction';
2862 }2874 }
28632875
2864 /** @name SpCoreVoid (350) */2876 /** @name SpCoreVoid (353) */
2865 export type SpCoreVoid = Null;2877 export type SpCoreVoid = Null;
28662878
2867 /** @name PalletUnqSchedulerError (351) */2879 /** @name PalletUniqueSchedulerError (354) */
2868 export interface PalletUnqSchedulerError extends Enum {2880 export interface PalletUniqueSchedulerError extends Enum {
2869 readonly isFailedToSchedule: boolean;2881 readonly isFailedToSchedule: boolean;
2870 readonly isNotFound: boolean;2882 readonly isNotFound: boolean;
2871 readonly isTargetBlockNumberInPast: boolean;2883 readonly isTargetBlockNumberInPast: boolean;
2872 readonly isRescheduleNoChange: boolean;2884 readonly isRescheduleNoChange: boolean;
2873 readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange';2885 readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange';
2874 }2886 }
28752887
2876 /** @name UpDataStructsCollection (352) */2888 /** @name UpDataStructsCollection (355) */
2877 export interface UpDataStructsCollection extends Struct {2889 export interface UpDataStructsCollection extends Struct {
2878 readonly owner: AccountId32;2890 readonly owner: AccountId32;
2879 readonly mode: UpDataStructsCollectionMode;2891 readonly mode: UpDataStructsCollectionMode;
2886 readonly externalCollection: bool;2898 readonly externalCollection: bool;
2887 }2899 }
28882900
2889 /** @name UpDataStructsSponsorshipState (353) */2901 /** @name UpDataStructsSponsorshipState (356) */
2890 export interface UpDataStructsSponsorshipState extends Enum {2902 export interface UpDataStructsSponsorshipState extends Enum {
2891 readonly isDisabled: boolean;2903 readonly isDisabled: boolean;
2892 readonly isUnconfirmed: boolean;2904 readonly isUnconfirmed: boolean;
2896 readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';2908 readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';
2897 }2909 }
28982910
2899 /** @name UpDataStructsProperties (354) */2911 /** @name UpDataStructsProperties (357) */
2900 export interface UpDataStructsProperties extends Struct {2912 export interface UpDataStructsProperties extends Struct {
2901 readonly map: UpDataStructsPropertiesMapBoundedVec;2913 readonly map: UpDataStructsPropertiesMapBoundedVec;
2902 readonly consumedSpace: u32;2914 readonly consumedSpace: u32;
2903 readonly spaceLimit: u32;2915 readonly spaceLimit: u32;
2904 }2916 }
29052917
2906 /** @name UpDataStructsPropertiesMapBoundedVec (355) */2918 /** @name UpDataStructsPropertiesMapBoundedVec (358) */
2907 export interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap<Bytes, Bytes> {}2919 export interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap<Bytes, Bytes> {}
29082920
2909 /** @name UpDataStructsPropertiesMapPropertyPermission (360) */2921 /** @name UpDataStructsPropertiesMapPropertyPermission (363) */
2910 export interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}2922 export interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}
29112923
2912 /** @name UpDataStructsCollectionStats (367) */2924 /** @name UpDataStructsCollectionStats (370) */
2913 export interface UpDataStructsCollectionStats extends Struct {2925 export interface UpDataStructsCollectionStats extends Struct {
2914 readonly created: u32;2926 readonly created: u32;
2915 readonly destroyed: u32;2927 readonly destroyed: u32;
2916 readonly alive: u32;2928 readonly alive: u32;
2917 }2929 }
29182930
2919 /** @name UpDataStructsTokenChild (368) */2931 /** @name UpDataStructsTokenChild (371) */
2920 export interface UpDataStructsTokenChild extends Struct {2932 export interface UpDataStructsTokenChild extends Struct {
2921 readonly token: u32;2933 readonly token: u32;
2922 readonly collection: u32;2934 readonly collection: u32;
2923 }2935 }
29242936
2925 /** @name PhantomTypeUpDataStructs (369) */2937 /** @name PhantomTypeUpDataStructs (372) */
2926 export interface PhantomTypeUpDataStructs extends Vec<ITuple<[UpDataStructsTokenData, UpDataStructsRpcCollection, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftInfo, RmrkTraitsResourceResourceInfo, RmrkTraitsPropertyPropertyInfo, RmrkTraitsBaseBaseInfo, RmrkTraitsPartPartType, RmrkTraitsTheme, RmrkTraitsNftNftChild]>> {}2938 export interface PhantomTypeUpDataStructs extends Vec<ITuple<[UpDataStructsTokenData, UpDataStructsRpcCollection, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftInfo, RmrkTraitsResourceResourceInfo, RmrkTraitsPropertyPropertyInfo, RmrkTraitsBaseBaseInfo, RmrkTraitsPartPartType, RmrkTraitsTheme, RmrkTraitsNftNftChild]>> {}
29272939
2928 /** @name UpDataStructsTokenData (371) */2940 /** @name UpDataStructsTokenData (374) */
2929 export interface UpDataStructsTokenData extends Struct {2941 export interface UpDataStructsTokenData extends Struct {
2930 readonly properties: Vec<UpDataStructsProperty>;2942 readonly properties: Vec<UpDataStructsProperty>;
2931 readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;2943 readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;
2932 }2944 }
29332945
2934 /** @name UpDataStructsRpcCollection (373) */2946 /** @name UpDataStructsRpcCollection (376) */
2935 export interface UpDataStructsRpcCollection extends Struct {2947 export interface UpDataStructsRpcCollection extends Struct {
2936 readonly owner: AccountId32;2948 readonly owner: AccountId32;
2937 readonly mode: UpDataStructsCollectionMode;2949 readonly mode: UpDataStructsCollectionMode;
2946 readonly readOnly: bool;2958 readonly readOnly: bool;
2947 }2959 }
29482960
2949 /** @name RmrkTraitsCollectionCollectionInfo (374) */2961 /** @name RmrkTraitsCollectionCollectionInfo (377) */
2950 export interface RmrkTraitsCollectionCollectionInfo extends Struct {2962 export interface RmrkTraitsCollectionCollectionInfo extends Struct {
2951 readonly issuer: AccountId32;2963 readonly issuer: AccountId32;
2952 readonly metadata: Bytes;2964 readonly metadata: Bytes;
2955 readonly nftsCount: u32;2967 readonly nftsCount: u32;
2956 }2968 }
29572969
2958 /** @name RmrkTraitsNftNftInfo (375) */2970 /** @name RmrkTraitsNftNftInfo (378) */
2959 export interface RmrkTraitsNftNftInfo extends Struct {2971 export interface RmrkTraitsNftNftInfo extends Struct {
2960 readonly owner: RmrkTraitsNftAccountIdOrCollectionNftTuple;2972 readonly owner: RmrkTraitsNftAccountIdOrCollectionNftTuple;
2961 readonly royalty: Option<RmrkTraitsNftRoyaltyInfo>;2973 readonly royalty: Option<RmrkTraitsNftRoyaltyInfo>;
2964 readonly pending: bool;2976 readonly pending: bool;
2965 }2977 }
29662978
2967 /** @name RmrkTraitsNftRoyaltyInfo (377) */2979 /** @name RmrkTraitsNftRoyaltyInfo (380) */
2968 export interface RmrkTraitsNftRoyaltyInfo extends Struct {2980 export interface RmrkTraitsNftRoyaltyInfo extends Struct {
2969 readonly recipient: AccountId32;2981 readonly recipient: AccountId32;
2970 readonly amount: Permill;2982 readonly amount: Permill;
2971 }2983 }
29722984
2973 /** @name RmrkTraitsResourceResourceInfo (378) */2985 /** @name RmrkTraitsResourceResourceInfo (381) */
2974 export interface RmrkTraitsResourceResourceInfo extends Struct {2986 export interface RmrkTraitsResourceResourceInfo extends Struct {
2975 readonly id: u32;2987 readonly id: u32;
2976 readonly resource: RmrkTraitsResourceResourceTypes;2988 readonly resource: RmrkTraitsResourceResourceTypes;
2977 readonly pending: bool;2989 readonly pending: bool;
2978 readonly pendingRemoval: bool;2990 readonly pendingRemoval: bool;
2979 }2991 }
2980
2981 /** @name RmrkTraitsResourceResourceTypes (379) */
2982 export interface RmrkTraitsResourceResourceTypes extends Enum {
2983 readonly isBasic: boolean;
2984 readonly asBasic: RmrkTraitsResourceBasicResource;
2985 readonly isComposable: boolean;
2986 readonly asComposable: RmrkTraitsResourceComposableResource;
2987 readonly isSlot: boolean;
2988 readonly asSlot: RmrkTraitsResourceSlotResource;
2989 readonly type: 'Basic' | 'Composable' | 'Slot';
2990 }
29912992
2992 /** @name RmrkTraitsPropertyPropertyInfo (380) */2993 /** @name RmrkTraitsPropertyPropertyInfo (382) */
2993 export interface RmrkTraitsPropertyPropertyInfo extends Struct {2994 export interface RmrkTraitsPropertyPropertyInfo extends Struct {
2994 readonly key: Bytes;2995 readonly key: Bytes;
2995 readonly value: Bytes;2996 readonly value: Bytes;
2996 }2997 }
29972998
2998 /** @name RmrkTraitsBaseBaseInfo (381) */2999 /** @name RmrkTraitsBaseBaseInfo (383) */
2999 export interface RmrkTraitsBaseBaseInfo extends Struct {3000 export interface RmrkTraitsBaseBaseInfo extends Struct {
3000 readonly issuer: AccountId32;3001 readonly issuer: AccountId32;
3001 readonly baseType: Bytes;3002 readonly baseType: Bytes;
3002 readonly symbol: Bytes;3003 readonly symbol: Bytes;
3003 }3004 }
30043005
3005 /** @name RmrkTraitsNftNftChild (382) */3006 /** @name RmrkTraitsNftNftChild (384) */
3006 export interface RmrkTraitsNftNftChild extends Struct {3007 export interface RmrkTraitsNftNftChild extends Struct {
3007 readonly collectionId: u32;3008 readonly collectionId: u32;
3008 readonly nftId: u32;3009 readonly nftId: u32;
3009 }3010 }
30103011
3011 /** @name PalletCommonError (384) */3012 /** @name PalletCommonError (386) */
3012 export interface PalletCommonError extends Enum {3013 export interface PalletCommonError extends Enum {
3013 readonly isCollectionNotFound: boolean;3014 readonly isCollectionNotFound: boolean;
3014 readonly isMustBeTokenOwner: boolean;3015 readonly isMustBeTokenOwner: boolean;
3047 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';3048 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';
3048 }3049 }
30493050
3050 /** @name PalletFungibleError (386) */3051 /** @name PalletFungibleError (388) */
3051 export interface PalletFungibleError extends Enum {3052 export interface PalletFungibleError extends Enum {
3052 readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;3053 readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;
3053 readonly isFungibleItemsHaveNoId: boolean;3054 readonly isFungibleItemsHaveNoId: boolean;
3057 readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';3058 readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';
3058 }3059 }
30593060
3060 /** @name PalletRefungibleItemData (387) */3061 /** @name PalletRefungibleItemData (389) */
3061 export interface PalletRefungibleItemData extends Struct {3062 export interface PalletRefungibleItemData extends Struct {
3062 readonly constData: Bytes;3063 readonly constData: Bytes;
3063 }3064 }
30643065
3065 /** @name PalletRefungibleError (391) */3066 /** @name PalletRefungibleError (393) */
3066 export interface PalletRefungibleError extends Enum {3067 export interface PalletRefungibleError extends Enum {
3067 readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;3068 readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;
3068 readonly isWrongRefungiblePieces: boolean;3069 readonly isWrongRefungiblePieces: boolean;
3071 readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';3072 readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';
3072 }3073 }
30733074
3074 /** @name PalletNonfungibleItemData (392) */3075 /** @name PalletNonfungibleItemData (394) */
3075 export interface PalletNonfungibleItemData extends Struct {3076 export interface PalletNonfungibleItemData extends Struct {
3076 readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;3077 readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
3077 }3078 }
30783079
3079 /** @name PalletNonfungibleError (394) */3080 /** @name PalletNonfungibleError (396) */
3080 export interface PalletNonfungibleError extends Enum {3081 export interface PalletNonfungibleError extends Enum {
3081 readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;3082 readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;
3082 readonly isNonfungibleItemsHaveNoAmount: boolean;3083 readonly isNonfungibleItemsHaveNoAmount: boolean;
3083 readonly isCantBurnNftWithChildren: boolean;3084 readonly isCantBurnNftWithChildren: boolean;
3084 readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount' | 'CantBurnNftWithChildren';3085 readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount' | 'CantBurnNftWithChildren';
3085 }3086 }
30863087
3087 /** @name PalletStructureError (395) */3088 /** @name PalletStructureError (397) */
3088 export interface PalletStructureError extends Enum {3089 export interface PalletStructureError extends Enum {
3089 readonly isOuroborosDetected: boolean;3090 readonly isOuroborosDetected: boolean;
3090 readonly isDepthLimit: boolean;3091 readonly isDepthLimit: boolean;
3093 readonly type: 'OuroborosDetected' | 'DepthLimit' | 'BreadthLimit' | 'TokenNotFound';3094 readonly type: 'OuroborosDetected' | 'DepthLimit' | 'BreadthLimit' | 'TokenNotFound';
3094 }3095 }
30953096
3096 /** @name PalletRmrkCoreError (396) */3097 /** @name PalletRmrkCoreError (398) */
3097 export interface PalletRmrkCoreError extends Enum {3098 export interface PalletRmrkCoreError extends Enum {
3098 readonly isCorruptedCollectionType: boolean;3099 readonly isCorruptedCollectionType: boolean;
3099 readonly isNftTypeEncodeError: boolean;3100 readonly isNftTypeEncodeError: boolean;
3100 readonly isRmrkPropertyKeyIsTooLong: boolean;3101 readonly isRmrkPropertyKeyIsTooLong: boolean;
3101 readonly isRmrkPropertyValueIsTooLong: boolean;3102 readonly isRmrkPropertyValueIsTooLong: boolean;
3103 readonly isUnableToDecodeRmrkData: boolean;
3102 readonly isCollectionNotEmpty: boolean;3104 readonly isCollectionNotEmpty: boolean;
3103 readonly isNoAvailableCollectionId: boolean;3105 readonly isNoAvailableCollectionId: boolean;
3104 readonly isNoAvailableNftId: boolean;3106 readonly isNoAvailableNftId: boolean;
3111 readonly isCannotAcceptNonOwnedNft: boolean;3113 readonly isCannotAcceptNonOwnedNft: boolean;
3112 readonly isCannotRejectNonOwnedNft: boolean;3114 readonly isCannotRejectNonOwnedNft: boolean;
3113 readonly isResourceNotPending: boolean;3115 readonly isResourceNotPending: boolean;
3114 readonly type: 'CorruptedCollectionType' | 'NftTypeEncodeError' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'ResourceNotPending';3116 readonly type: 'CorruptedCollectionType' | 'NftTypeEncodeError' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'UnableToDecodeRmrkData' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'ResourceNotPending';
3115 }3117 }
31163118
3117 /** @name PalletRmrkEquipError (398) */3119 /** @name PalletRmrkEquipError (400) */
3118 export interface PalletRmrkEquipError extends Enum {3120 export interface PalletRmrkEquipError extends Enum {
3119 readonly isPermissionError: boolean;3121 readonly isPermissionError: boolean;
3120 readonly isNoAvailableBaseId: boolean;3122 readonly isNoAvailableBaseId: boolean;
3124 readonly type: 'PermissionError' | 'NoAvailableBaseId' | 'NoAvailablePartId' | 'BaseDoesntExist' | 'NeedsDefaultThemeFirst';3126 readonly type: 'PermissionError' | 'NoAvailableBaseId' | 'NoAvailablePartId' | 'BaseDoesntExist' | 'NeedsDefaultThemeFirst';
3125 }3127 }
31263128
3127 /** @name PalletEvmError (401) */3129 /** @name PalletEvmError (403) */
3128 export interface PalletEvmError extends Enum {3130 export interface PalletEvmError extends Enum {
3129 readonly isBalanceLow: boolean;3131 readonly isBalanceLow: boolean;
3130 readonly isFeeOverflow: boolean;3132 readonly isFeeOverflow: boolean;
3135 readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce';3137 readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce';
3136 }3138 }
31373139
3138 /** @name FpRpcTransactionStatus (404) */3140 /** @name FpRpcTransactionStatus (406) */
3139 export interface FpRpcTransactionStatus extends Struct {3141 export interface FpRpcTransactionStatus extends Struct {
3140 readonly transactionHash: H256;3142 readonly transactionHash: H256;
3141 readonly transactionIndex: u32;3143 readonly transactionIndex: u32;
3146 readonly logsBloom: EthbloomBloom;3148 readonly logsBloom: EthbloomBloom;
3147 }3149 }
31483150
3149 /** @name EthbloomBloom (406) */3151 /** @name EthbloomBloom (408) */
3150 export interface EthbloomBloom extends U8aFixed {}3152 export interface EthbloomBloom extends U8aFixed {}
31513153
3152 /** @name EthereumReceiptReceiptV3 (408) */3154 /** @name EthereumReceiptReceiptV3 (410) */
3153 export interface EthereumReceiptReceiptV3 extends Enum {3155 export interface EthereumReceiptReceiptV3 extends Enum {
3154 readonly isLegacy: boolean;3156 readonly isLegacy: boolean;
3155 readonly asLegacy: EthereumReceiptEip658ReceiptData;3157 readonly asLegacy: EthereumReceiptEip658ReceiptData;
3160 readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';3162 readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';
3161 }3163 }
31623164
3163 /** @name EthereumReceiptEip658ReceiptData (409) */3165 /** @name EthereumReceiptEip658ReceiptData (411) */
3164 export interface EthereumReceiptEip658ReceiptData extends Struct {3166 export interface EthereumReceiptEip658ReceiptData extends Struct {
3165 readonly statusCode: u8;3167 readonly statusCode: u8;
3166 readonly usedGas: U256;3168 readonly usedGas: U256;
3167 readonly logsBloom: EthbloomBloom;3169 readonly logsBloom: EthbloomBloom;
3168 readonly logs: Vec<EthereumLog>;3170 readonly logs: Vec<EthereumLog>;
3169 }3171 }
31703172
3171 /** @name EthereumBlock (410) */3173 /** @name EthereumBlock (412) */
3172 export interface EthereumBlock extends Struct {3174 export interface EthereumBlock extends Struct {
3173 readonly header: EthereumHeader;3175 readonly header: EthereumHeader;
3174 readonly transactions: Vec<EthereumTransactionTransactionV2>;3176 readonly transactions: Vec<EthereumTransactionTransactionV2>;
3175 readonly ommers: Vec<EthereumHeader>;3177 readonly ommers: Vec<EthereumHeader>;
3176 }3178 }
31773179
3178 /** @name EthereumHeader (411) */3180 /** @name EthereumHeader (413) */
3179 export interface EthereumHeader extends Struct {3181 export interface EthereumHeader extends Struct {
3180 readonly parentHash: H256;3182 readonly parentHash: H256;
3181 readonly ommersHash: H256;3183 readonly ommersHash: H256;
3194 readonly nonce: EthereumTypesHashH64;3196 readonly nonce: EthereumTypesHashH64;
3195 }3197 }
31963198
3197 /** @name EthereumTypesHashH64 (412) */3199 /** @name EthereumTypesHashH64 (414) */
3198 export interface EthereumTypesHashH64 extends U8aFixed {}3200 export interface EthereumTypesHashH64 extends U8aFixed {}
31993201
3200 /** @name PalletEthereumError (417) */3202 /** @name PalletEthereumError (419) */
3201 export interface PalletEthereumError extends Enum {3203 export interface PalletEthereumError extends Enum {
3202 readonly isInvalidSignature: boolean;3204 readonly isInvalidSignature: boolean;
3203 readonly isPreLogExists: boolean;3205 readonly isPreLogExists: boolean;
3204 readonly type: 'InvalidSignature' | 'PreLogExists';3206 readonly type: 'InvalidSignature' | 'PreLogExists';
3205 }3207 }
32063208
3207 /** @name PalletEvmCoderSubstrateError (418) */3209 /** @name PalletEvmCoderSubstrateError (420) */
3208 export interface PalletEvmCoderSubstrateError extends Enum {3210 export interface PalletEvmCoderSubstrateError extends Enum {
3209 readonly isOutOfGas: boolean;3211 readonly isOutOfGas: boolean;
3210 readonly isOutOfFund: boolean;3212 readonly isOutOfFund: boolean;
3211 readonly type: 'OutOfGas' | 'OutOfFund';3213 readonly type: 'OutOfGas' | 'OutOfFund';
3212 }3214 }
32133215
3214 /** @name PalletEvmContractHelpersSponsoringModeT (419) */3216 /** @name PalletEvmContractHelpersSponsoringModeT (421) */
3215 export interface PalletEvmContractHelpersSponsoringModeT extends Enum {3217 export interface PalletEvmContractHelpersSponsoringModeT extends Enum {
3216 readonly isDisabled: boolean;3218 readonly isDisabled: boolean;
3217 readonly isAllowlisted: boolean;3219 readonly isAllowlisted: boolean;
3218 readonly isGenerous: boolean;3220 readonly isGenerous: boolean;
3219 readonly type: 'Disabled' | 'Allowlisted' | 'Generous';3221 readonly type: 'Disabled' | 'Allowlisted' | 'Generous';
3220 }3222 }
32213223
3222 /** @name PalletEvmContractHelpersError (421) */3224 /** @name PalletEvmContractHelpersError (423) */
3223 export interface PalletEvmContractHelpersError extends Enum {3225 export interface PalletEvmContractHelpersError extends Enum {
3224 readonly isNoPermission: boolean;3226 readonly isNoPermission: boolean;
3225 readonly type: 'NoPermission';3227 readonly type: 'NoPermission';
3226 }3228 }
32273229
3228 /** @name PalletEvmMigrationError (422) */3230 /** @name PalletEvmMigrationError (424) */
3229 export interface PalletEvmMigrationError extends Enum {3231 export interface PalletEvmMigrationError extends Enum {
3230 readonly isAccountNotEmpty: boolean;3232 readonly isAccountNotEmpty: boolean;
3231 readonly isAccountIsNotMigrating: boolean;3233 readonly isAccountIsNotMigrating: boolean;
3232 readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';3234 readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';
3233 }3235 }
32343236
3235 /** @name SpRuntimeMultiSignature (424) */3237 /** @name SpRuntimeMultiSignature (426) */
3236 export interface SpRuntimeMultiSignature extends Enum {3238 export interface SpRuntimeMultiSignature extends Enum {
3237 readonly isEd25519: boolean;3239 readonly isEd25519: boolean;
3238 readonly asEd25519: SpCoreEd25519Signature;3240 readonly asEd25519: SpCoreEd25519Signature;
3243 readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';3245 readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';
3244 }3246 }
32453247
3246 /** @name SpCoreEd25519Signature (425) */3248 /** @name SpCoreEd25519Signature (427) */
3247 export interface SpCoreEd25519Signature extends U8aFixed {}3249 export interface SpCoreEd25519Signature extends U8aFixed {}
32483250
3249 /** @name SpCoreSr25519Signature (427) */3251 /** @name SpCoreSr25519Signature (429) */
3250 export interface SpCoreSr25519Signature extends U8aFixed {}3252 export interface SpCoreSr25519Signature extends U8aFixed {}
32513253
3252 /** @name SpCoreEcdsaSignature (428) */3254 /** @name SpCoreEcdsaSignature (430) */
3253 export interface SpCoreEcdsaSignature extends U8aFixed {}3255 export interface SpCoreEcdsaSignature extends U8aFixed {}
32543256
3255 /** @name FrameSystemExtensionsCheckSpecVersion (431) */3257 /** @name FrameSystemExtensionsCheckSpecVersion (433) */
3256 export type FrameSystemExtensionsCheckSpecVersion = Null;3258 export type FrameSystemExtensionsCheckSpecVersion = Null;
32573259
3258 /** @name FrameSystemExtensionsCheckGenesis (432) */3260 /** @name FrameSystemExtensionsCheckGenesis (434) */
3259 export type FrameSystemExtensionsCheckGenesis = Null;3261 export type FrameSystemExtensionsCheckGenesis = Null;
32603262
3261 /** @name FrameSystemExtensionsCheckNonce (435) */3263 /** @name FrameSystemExtensionsCheckNonce (437) */
3262 export interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}3264 export interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}
32633265
3264 /** @name FrameSystemExtensionsCheckWeight (436) */3266 /** @name FrameSystemExtensionsCheckWeight (438) */
3265 export type FrameSystemExtensionsCheckWeight = Null;3267 export type FrameSystemExtensionsCheckWeight = Null;
32663268
3267 /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (437) */3269 /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (439) */
3268 export interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}3270 export interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}
32693271
3270 /** @name OpalRuntimeRuntime (438) */3272 /** @name OpalRuntimeRuntime (440) */
3271 export type OpalRuntimeRuntime = Null;3273 export type OpalRuntimeRuntime = Null;
32723274
3273 /** @name PalletEthereumFakeTransactionFinalizer (439) */3275 /** @name PalletEthereumFakeTransactionFinalizer (441) */
3274 export type PalletEthereumFakeTransactionFinalizer = Null;3276 export type PalletEthereumFakeTransactionFinalizer = Null;
32753277
3276} // declare module3278} // declare module
modifiedtests/src/limits.test.tsdiffbeforeafterboth
406 it('Effective collection limits', async () => {406 it('Effective collection limits', async () => {
407 await usingApi(async (api) => {407 await usingApi(async (api) => {
408 const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});408 const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
409 409 await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});
410
410 { // Check that limits is undefined411 { // Check that limits is undefined
411 const collection = await api.rpc.unique.collectionById(collectionId);412 const collection = await api.rpc.unique.collectionById(collectionId);
419 expect(limits.tokenLimit.toHuman()).to.be.null;420 expect(limits.tokenLimit.toHuman()).to.be.null;
420 expect(limits.sponsorTransferTimeout.toHuman()).to.be.null;421 expect(limits.sponsorTransferTimeout.toHuman()).to.be.null;
421 expect(limits.sponsorApproveTimeout.toHuman()).to.be.null;422 expect(limits.sponsorApproveTimeout.toHuman()).to.be.null;
422 expect(limits.ownerCanTransfer.toHuman()).to.be.null;423 expect(limits.ownerCanTransfer.toHuman()).to.be.true;
423 expect(limits.ownerCanDestroy.toHuman()).to.be.null;424 expect(limits.ownerCanDestroy.toHuman()).to.be.null;
424 expect(limits.transfersEnabled.toHuman()).to.be.null;425 expect(limits.transfersEnabled.toHuman()).to.be.null;
425 }426 }
modifiedtests/src/nesting/graphs.test.tsdiffbeforeafterboth
3import {expect} from 'chai';3import {expect} from 'chai';
4import {tokenIdToCross} from '../eth/util/helpers';4import {tokenIdToCross} from '../eth/util/helpers';
5import usingApi, {executeTransaction} from '../substrate/substrate-api';5import usingApi, {executeTransaction} from '../substrate/substrate-api';
6import {getCreateCollectionResult, transferExpectSuccess} from '../util/helpers';6import {getCreateCollectionResult, transferExpectSuccess, setCollectionLimitsExpectSuccess} from '../util/helpers';
77
8/**8/**
9 * ```dot9 * ```dot
13 * ```13 * ```
14 */14 */
15async function buildComplexObjectGraph(api: ApiPromise, sender: IKeyringPair): Promise<number> {15async function buildComplexObjectGraph(api: ApiPromise, sender: IKeyringPair): Promise<number> {
16 const events = await executeTransaction(api, sender, api.tx.unique.createCollectionEx({mode: 'NFT', permissions: {nesting: 'Owner'}}));16 const events = await executeTransaction(api, sender, api.tx.unique.createCollectionEx({mode: 'NFT', permissions: {nesting: {tokenOwner: true}}}));
17 const {collectionId} = getCreateCollectionResult(events);17 const {collectionId} = getCreateCollectionResult(events);
1818
19 await executeTransaction(api, sender, api.tx.unique.createMultipleItemsEx(collectionId, {NFT: Array(8).fill({owner: {Substrate: sender.address}})}));19 await executeTransaction(api, sender, api.tx.unique.createMultipleItemsEx(collectionId, {NFT: Array(8).fill({owner: {Substrate: sender.address}})}));
36 await usingApi(async (api, privateKeyWrapper) => {36 await usingApi(async (api, privateKeyWrapper) => {
37 const alice = privateKeyWrapper('//Alice');37 const alice = privateKeyWrapper('//Alice');
38 const collection = await buildComplexObjectGraph(api, alice);38 const collection = await buildComplexObjectGraph(api, alice);
39 await setCollectionLimitsExpectSuccess(alice, collection, {ownerCanTransfer: true});
3940
40 // to self41 // to self
41 await expect(42 await expect(
modifiedtests/src/nesting/nest.test.tsdiffbeforeafterboth
2import {tokenIdToAddress} from '../eth/util/helpers';2import {tokenIdToAddress} from '../eth/util/helpers';
3import usingApi, {executeTransaction} from '../substrate/substrate-api';3import usingApi, {executeTransaction} from '../substrate/substrate-api';
4import {4import {
5 addCollectionAdminExpectSuccess,
5 addToAllowListExpectSuccess,6 addToAllowListExpectSuccess,
6 createCollectionExpectSuccess,7 createCollectionExpectSuccess,
7 createItemExpectSuccess,8 createItemExpectSuccess,
15 transferExpectFailure,16 transferExpectFailure,
16 transferExpectSuccess,17 transferExpectSuccess,
17 transferFromExpectSuccess,18 transferFromExpectSuccess,
19 setCollectionLimitsExpectSuccess,
18} from '../util/helpers';20} from '../util/helpers';
19import {IKeyringPair} from '@polkadot/types/types';21import {IKeyringPair} from '@polkadot/types/types';
2022
21let alice: IKeyringPair;23let alice: IKeyringPair;
22let bob: IKeyringPair;24let bob: IKeyringPair;
25let charlie: IKeyringPair;
2326
24describe('Integration Test: Nesting', () => {27describe('Integration Test: Composite nesting tests', () => {
25 before(async () => {28 before(async () => {
26 await usingApi(async (api, privateKeyWrapper) => {29 await usingApi(async (_, privateKeyWrapper) => {
27 alice = privateKeyWrapper('//Alice');30 alice = privateKeyWrapper('//Alice');
28 bob = privateKeyWrapper('//Bob');31 bob = privateKeyWrapper('//Bob');
29 });32 });
92 it('Checks token children', async () => {95 it('Checks token children', async () => {
93 await usingApi(async api => {96 await usingApi(async api => {
94 const collectionA = await createCollectionExpectSuccess({mode: {type: 'NFT'}});97 const collectionA = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
98 await setCollectionLimitsExpectSuccess(alice, collectionA, {ownerCanTransfer: true});
95 await setCollectionPermissionsExpectSuccess(alice, collectionA, {nesting: {tokenOwner: true}});99 await setCollectionPermissionsExpectSuccess(alice, collectionA, {nesting: {tokenOwner: true}});
96 const collectionB = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});100 const collectionB = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
97101
145 ], 'Children contents check at deeper nesting');149 ], 'Children contents check at deeper nesting');
146 });150 });
147 });151 });
152});
148153
154describe('Integration Test: Various token type nesting', async () => {
155 before(async () => {
156 await usingApi(async (_, privateKeyWrapper) => {
157 alice = privateKeyWrapper('//Alice');
158 bob = privateKeyWrapper('//Bob');
159 charlie = privateKeyWrapper('//Charlie');
160 });
161 });
162
163 it('Admin (NFT): allows an Admin to nest a token', async () => {
164 await usingApi(async api => {
165 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
166 await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {collectionAdmin: true}});
167 await addCollectionAdminExpectSuccess(alice, collection, bob.address);
168 const targetToken = await createItemExpectSuccess(alice, collection, 'NFT', charlie.address);
169
170 // Create a nested token
171 const nestedToken = await createItemExpectSuccess(bob, collection, 'NFT', {Ethereum: tokenIdToAddress(collection, targetToken)});
172 expect(await getTopmostTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Substrate: charlie.address});
173 expect(await getTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collection, targetToken).toLowerCase()});
174
175 // Create a token to be nested and nest
176 const newToken = await createItemExpectSuccess(bob, collection, 'NFT');
177 await transferExpectSuccess(collection, newToken, bob, {Ethereum: tokenIdToAddress(collection, targetToken)});
178 expect(await getTopmostTokenOwner(api, collection, newToken)).to.be.deep.equal({Substrate: charlie.address});
179 expect(await getTokenOwner(api, collection, newToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collection, targetToken).toLowerCase()});
180 });
181 });
182
183 it('Admin (NFT): Admin and Token Owner can operate together', async () => {
184 await usingApi(async api => {
185 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
186 await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true, collectionAdmin: true}});
187 await addCollectionAdminExpectSuccess(alice, collection, bob.address);
188 const targetToken = await createItemExpectSuccess(alice, collection, 'NFT', charlie.address);
189
190 // Create a nested token by an administrator
191 const nestedToken = await createItemExpectSuccess(bob, collection, 'NFT', {Ethereum: tokenIdToAddress(collection, targetToken)});
192 expect(await getTopmostTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Substrate: charlie.address});
193 expect(await getTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collection, targetToken).toLowerCase()});
194
195 // Create a token and allow the owner to nest too
196 const newToken = await createItemExpectSuccess(alice, collection, 'NFT', charlie.address);
197 await transferExpectSuccess(collection, newToken, charlie, {Ethereum: tokenIdToAddress(collection, nestedToken)});
198 expect(await getTopmostTokenOwner(api, collection, newToken)).to.be.deep.equal({Substrate: charlie.address});
199 expect(await getTokenOwner(api, collection, newToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collection, nestedToken).toLowerCase()});
200 });
201 });
202
203 it('Admin (NFT): allows an Admin to nest a token (Restricted nesting)', async () => {
204 await usingApi(async api => {
205 const collectionA = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
206 await addCollectionAdminExpectSuccess(alice, collectionA, bob.address);
207 const collectionB = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
208 await addCollectionAdminExpectSuccess(alice, collectionB, bob.address);
209 await setCollectionPermissionsExpectSuccess(alice, collectionA, {nesting: {collectionAdmin: true, restricted:[collectionA, collectionB]}});
210 const targetToken = await createItemExpectSuccess(alice, collectionA, 'NFT', charlie.address);
211
212 // Create a nested token
213 const nestedToken = await createItemExpectSuccess(bob, collectionB, 'NFT', {Ethereum: tokenIdToAddress(collectionA, targetToken)});
214 expect(await getTopmostTokenOwner(api, collectionB, nestedToken)).to.be.deep.equal({Substrate: charlie.address});
215 expect(await getTokenOwner(api, collectionB, nestedToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collectionA, targetToken).toLowerCase()});
216
217 // Create a token to be nested and nest
218 const newToken = await createItemExpectSuccess(bob, collectionB, 'NFT');
219 await transferExpectSuccess(collectionB, newToken, bob, {Ethereum: tokenIdToAddress(collectionA, targetToken)});
220 expect(await getTopmostTokenOwner(api, collectionB, newToken)).to.be.deep.equal({Substrate: charlie.address});
221 expect(await getTokenOwner(api, collectionB, newToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collectionA, targetToken).toLowerCase()});
222 });
223 });
224
149 // ---------- Non-Fungible ----------225 // ---------- Non-Fungible ----------
150226
248 await expect(executeTransaction(api, alice, api.tx.unique.createItem(324 await expect(executeTransaction(api, alice, api.tx.unique.createItem(
249 collectionRFT,325 collectionRFT,
250 targetAddress,326 targetAddress,
251 {ReFungible: {const_data: [], pieces: 100}},327 {ReFungible: {pieces: 100}},
252 ))).to.not.be.rejected;328 ))).to.not.be.rejected;
253329
254 // Nest a new token330 // Nest a new token
271 await expect(executeTransaction(api, alice, api.tx.unique.createItem(347 await expect(executeTransaction(api, alice, api.tx.unique.createItem(
272 collectionRFT,348 collectionRFT,
273 targetAddress,349 targetAddress,
274 {ReFungible: {const_data: [], pieces: 100}},350 {ReFungible: {pieces: 100}},
275 ))).to.not.be.rejected;351 ))).to.not.be.rejected;
276352
277 // Nest a new token353 // Nest a new token
283359
284describe('Negative Test: Nesting', async() => {360describe('Negative Test: Nesting', async() => {
285 before(async () => {361 before(async () => {
286 await usingApi(async (api, privateKeyWrapper) => {362 await usingApi(async (_, privateKeyWrapper) => {
287 alice = privateKeyWrapper('//Alice');363 alice = privateKeyWrapper('//Alice');
288 bob = privateKeyWrapper('//Bob');364 bob = privateKeyWrapper('//Bob');
289 });365 });
314 await expect(executeTransaction(api, alice, api.tx.unique.createItem(390 await expect(executeTransaction(api, alice, api.tx.unique.createItem(
315 collection,391 collection,
316 {Ethereum: tokenIdToAddress(collection, prevToken)},392 {Ethereum: tokenIdToAddress(collection, prevToken)},
317 {nft: {const_data: [], variable_data: []}} as any,393 {nft: {}} as any,
318 )), 'while creating nested token').to.be.rejectedWith(/^structure\.DepthLimit$/);394 )), 'while creating nested token').to.be.rejectedWith(/^structure\.DepthLimit$/);
319395
320 expect(await getTopmostTokenOwner(api, collection, prevToken)).to.be.deep.equal({Substrate: alice.address});396 expect(await getTopmostTokenOwner(api, collection, prevToken)).to.be.deep.equal({Substrate: alice.address});
397 });
398 });
399
400 // ---------- Admin ------------
401
402 it('Admin (NFT): disallows an Admin to operate nesting when only TokenOwner is allowed', async () => {
403 await usingApi(async api => {
404 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
405 await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true}});
406 await addCollectionAdminExpectSuccess(alice, collection, bob.address);
407 const targetToken = await createItemExpectSuccess(alice, collection, 'NFT');
408
409 // Try to create a nested token as collection admin when it's disallowed
410 await expect(executeTransaction(api, bob, api.tx.unique.createItem(
411 collection,
412 {Ethereum: tokenIdToAddress(collection, targetToken)},
413 {nft: {}} as any,
414 )), 'while creating nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);
415
416 // Try to create and nest a token in the wrong collection
417 const newToken = await createItemExpectSuccess(bob, collection, 'NFT');
418 await expect(executeTransaction(
419 api,
420 bob,
421 api.tx.unique.transfer({Ethereum: tokenIdToAddress(collection, targetToken)}, collection, newToken, 1),
422 ), 'while nesting new token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);
423 expect(await getTokenOwner(api, collection, newToken)).to.be.deep.equal({Substrate: bob.address});
424 });
425 });
426
427 it('Admin (NFT): disallows a Token Owner to operate nesting when only Admin is allowed', async () => {
428 await usingApi(async api => {
429 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
430 await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {collectionAdmin: true}});
431 await addToAllowListExpectSuccess(alice, collection, bob.address);
432 await enableAllowListExpectSuccess(alice, collection);
433 await enablePublicMintingExpectSuccess(alice, collection);
434 const targetToken = await createItemExpectSuccess(alice, collection, 'NFT');
435
436 // Try to create a nested token as collection admin when it's disallowed
437 await expect(executeTransaction(api, bob, api.tx.unique.createItem(
438 collection,
439 {Ethereum: tokenIdToAddress(collection, targetToken)},
440 {nft: {}} as any,
441 )), 'while creating nested token').to.be.rejectedWith(/common\.AddressNotInAllowlist/);
442
443 // Try to create and nest a token in the wrong collection
444 const newToken = await createItemExpectSuccess(bob, collection, 'NFT');
445 await expect(executeTransaction(
446 api,
447 bob,
448 api.tx.unique.transfer({Ethereum: tokenIdToAddress(collection, targetToken)}, collection, newToken, 1),
449 ), 'while nesting new token').to.be.rejectedWith(/common\.AddressNotInAllowlist/);
450 expect(await getTokenOwner(api, collection, newToken)).to.be.deep.equal({Substrate: bob.address});
451 });
452 });
453
454 it('Admin (NFT): disallows an Admin to nest and unnest someone else\'s token', async () => {
455 await usingApi(async api => {
456 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
457 await setCollectionLimitsExpectSuccess(alice, collection, {ownerCanTransfer: true});
458 await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {collectionAdmin: true}});
459
460 await addToAllowListExpectSuccess(alice, collection, bob.address);
461 await enableAllowListExpectSuccess(alice, collection);
462 await enablePublicMintingExpectSuccess(alice, collection);
463
464 // Create a token to attempt to be nested into
465 const targetToken = await createItemExpectSuccess(bob, collection, 'NFT');
466 const targetAddress = {Ethereum: tokenIdToAddress(collection, targetToken).toLowerCase()};
467
468 // Try to nest somebody else's token
469 const newToken = await createItemExpectSuccess(bob, collection, 'NFT');
470 await expect(executeTransaction(
471 api,
472 alice,
473 api.tx.unique.transfer(targetAddress, collection, newToken, 1),
474 ), 'while nesting another\'s token token').to.be.rejectedWith(/common\.AddressNotInAllowlist/);
475 expect(await getTokenOwner(api, collection, newToken)).to.be.deep.equal({Substrate: bob.address});
476
477 // Nest a token as admin and try to unnest it, now belonging to someone else
478 const nestedToken = await createItemExpectSuccess(alice, collection, 'NFT', targetAddress);
479 await expect(executeTransaction(
480 api,
481 alice,
482 api.tx.unique.transferFrom(targetAddress, normalizeAccountId(alice), collection, nestedToken, 1),
483 ), 'while unnesting another\'s token').to.be.rejectedWith(/common\.AddressNotInAllowlist/);
484 expect(await getTokenOwner(api, collection, nestedToken)).to.be.deep.equal(targetAddress);
485 expect(await getTopmostTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Substrate: bob.address});
486 });
487 });
488
489 it('Admin (NFT): disallows an Admin to nest a token from an unlisted collection (Restricted nesting)', async () => {
490 await usingApi(async api => {
491 const collectionA = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
492 const collectionB = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
493 await setCollectionPermissionsExpectSuccess(alice, collectionA, {nesting: {collectionAdmin: true, restricted:[collectionA]}});
494
495 // Create a token to attempt to be nested into
496 const targetToken = await createItemExpectSuccess(alice, collectionA, 'NFT');
497
498 // Try to create and nest a token in the wrong collection
499 const newToken = await createItemExpectSuccess(alice, collectionB, 'NFT');
500 await expect(executeTransaction(
501 api,
502 alice,
503 api.tx.unique.transfer({Ethereum: tokenIdToAddress(collectionA, targetToken)}, collectionB, newToken, 1),
504 ), 'while nesting a foreign token').to.be.rejectedWith(/common\.SourceCollectionIsNotAllowedToNest/);
505 expect(await getTokenOwner(api, collectionB, newToken)).to.be.deep.equal({Substrate: alice.address});
321 });506 });
322 });507 });
323508
333 await expect(executeTransaction(api, alice, api.tx.unique.createItem(518 await expect(executeTransaction(api, alice, api.tx.unique.createItem(
334 collection,519 collection,
335 {Ethereum: tokenIdToAddress(collection, targetToken)},520 {Ethereum: tokenIdToAddress(collection, targetToken)},
336 {nft: {const_data: [], variable_data: []}} as any,521 {nft: {}} as any,
337 )), 'while creating nested token').to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);522 )), 'while creating nested token').to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);
338523
339 // Create a token to be nested524 // Create a token to be nested
361 await expect(executeTransaction(api, alice, api.tx.unique.createItem(546 await expect(executeTransaction(api, alice, api.tx.unique.createItem(
362 collection,547 collection,
363 {Ethereum: tokenIdToAddress(collection, targetToken)},548 {Ethereum: tokenIdToAddress(collection, targetToken)},
364 {nft: {const_data: [], variable_data: []}} as any,549 {nft: {}} as any,
365 )), 'while creating nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);550 )), 'while creating nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);
366551
367 // Try to create and nest a token in the wrong collection552 // Try to create and nest a token in the wrong collection
387 await expect(executeTransaction(api, alice, api.tx.unique.createItem(572 await expect(executeTransaction(api, alice, api.tx.unique.createItem(
388 collection,573 collection,
389 {Ethereum: tokenIdToAddress(collection, targetToken)},574 {Ethereum: tokenIdToAddress(collection, targetToken)},
390 {nft: {const_data: [], variable_data: []}} as any,575 {nft: {}} as any,
391 )), 'while creating nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);576 )), 'while creating nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);
392577
393 // Try to create and nest a token in the wrong collection578 // Try to create and nest a token in the wrong collection
409 await expect(executeTransaction(api, alice, api.tx.unique.createItem(594 await expect(executeTransaction(api, alice, api.tx.unique.createItem(
410 collection,595 collection,
411 {Ethereum: tokenIdToAddress(collection, targetToken)},596 {Ethereum: tokenIdToAddress(collection, targetToken)},
412 {nft: {const_data: [], variable_data: []}} as any,597 {nft: {}} as any,
413 )), 'while creating nested token').to.be.rejectedWith(/common\.SourceCollectionIsNotAllowedToNest/);598 )), 'while creating nested token').to.be.rejectedWith(/common\.SourceCollectionIsNotAllowedToNest/);
414599
415 // Try to create and nest a token in the wrong collection600 // Try to create and nest a token in the wrong collection
543 await expect(executeTransaction(api, alice, api.tx.unique.createItem(728 await expect(executeTransaction(api, alice, api.tx.unique.createItem(
544 collectionRFT,729 collectionRFT,
545 targetAddress,730 targetAddress,
546 {ReFungible: {const_data: [], pieces: 100}},731 {ReFungible: {pieces: 100}},
547 )), 'while creating a nested token').to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);732 )), 'while creating a nested token').to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);
548733
549 // Create a token to be nested734 // Create a token to be nested
579 await expect(executeTransaction(api, alice, api.tx.unique.createItem(764 await expect(executeTransaction(api, alice, api.tx.unique.createItem(
580 collectionRFT,765 collectionRFT,
581 targetAddress,766 targetAddress,
582 {ReFungible: {const_data: [], pieces: 100}},767 {ReFungible: {pieces: 100}},
583 )), 'while creating a nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);768 )), 'while creating a nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);
584769
585 // Try to create and nest a token in the wrong collection770 // Try to create and nest a token in the wrong collection
606 await expect(executeTransaction(api, alice, api.tx.unique.createItem(791 await expect(executeTransaction(api, alice, api.tx.unique.createItem(
607 collectionRFT,792 collectionRFT,
608 targetAddress,793 targetAddress,
609 {ReFungible: {const_data: [], pieces: 100}},794 {ReFungible: {pieces: 100}},
610 )), 'while creating a nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);795 )), 'while creating a nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/);
611796
612 // Try to create and nest a token in the wrong collection797 // Try to create and nest a token in the wrong collection
630 await expect(executeTransaction(api, alice, api.tx.unique.createItem(815 await expect(executeTransaction(api, alice, api.tx.unique.createItem(
631 collectionRFT,816 collectionRFT,
632 targetAddress,817 targetAddress,
633 {ReFungible: {const_data: [], pieces: 100}},818 {ReFungible: {pieces: 100}},
634 )), 'while creating a nested token').to.be.rejectedWith(/common\.SourceCollectionIsNotAllowedToNest/);819 )), 'while creating a nested token').to.be.rejectedWith(/common\.SourceCollectionIsNotAllowedToNest/);
635820
636 // Try to create and nest a token in the wrong collection821 // Try to create and nest a token in the wrong collection
modifiedtests/src/nesting/properties.test.tsdiffbeforeafterboth
38 await expect(executeTransaction(38 await expect(executeTransaction(
39 api, 39 api,
40 alice, 40 alice,
41 api.tx.unique.setPropertyPermissions(collectionId, propertyPermissions), 41 api.tx.unique.setTokenPropertyPermissions(collectionId, propertyPermissions),
42 )).to.not.be.rejected;42 )).to.not.be.rejected;
4343
44 const collectionProperties = [44 const collectionProperties = [
106 });106 });
107 });107 });
108
109 it('Check valid names for collection properties keys', async () => {
110 await usingApi(async api => {
111 const events = await executeTransaction(api, bob, api.tx.unique.createCollectionEx({mode: 'NFT'}));
112 const {collectionId} = getCreateCollectionResult(events);
113
114 // alpha symbols
115 await expect(executeTransaction(
116 api,
117 bob,
118 api.tx.unique.setCollectionProperties(collectionId, [{key: 'alpha'}]),
119 )).to.not.be.rejected;
120
121 // numeric symbols
122 await expect(executeTransaction(
123 api,
124 bob,
125 api.tx.unique.setCollectionProperties(collectionId, [{key: '123'}]),
126 )).to.not.be.rejected;
127
128 // underscore symbol
129 await expect(executeTransaction(
130 api,
131 bob,
132 api.tx.unique.setCollectionProperties(collectionId, [{key: 'black_hole'}]),
133 )).to.not.be.rejected;
134
135 // dash symbol
136 await expect(executeTransaction(
137 api,
138 bob,
139 api.tx.unique.setCollectionProperties(collectionId, [{key: 'semi-automatic'}]),
140 )).to.not.be.rejected;
141
142 // underscore symbol
143 await expect(executeTransaction(
144 api,
145 bob,
146 api.tx.unique.setCollectionProperties(collectionId, [{key: 'build.rs'}]),
147 )).to.not.be.rejected;
148
149 const propertyKeys = ['alpha', '123', 'black_hole', 'semi-automatic', 'build.rs'];
150 const properties = (await api.rpc.unique.collectionProperties(collectionId, propertyKeys)).toHuman();
151 expect(properties).to.be.deep.equal([
152 {key: 'alpha', value: ''},
153 {key: '123', value: ''},
154 {key: 'black_hole', value: ''},
155 {key: 'semi-automatic', value: ''},
156 {key: 'build.rs', value: ''},
157 ]);
158 });
159 });
108160
109 it('Changes properties of a collection', async () => {161 it('Changes properties of a collection', async () => {
110 await usingApi(async api => {162 await usingApi(async api => {
241293
242 const invalidProperties = [294 const invalidProperties = [
243 [{key: 'electron', value: 'negative'}, {key: 'string theory', value: 'understandable'}],295 [{key: 'electron', value: 'negative'}, {key: 'string theory', value: 'understandable'}],
244 [{key: 'Mr.Sandman', value: 'Bring me a gene'}],296 [{key: 'Mr/Sandman', value: 'Bring me a gene'}],
245 [{key: 'déjà vu', value: 'hmm...'}],297 [{key: 'déjà vu', value: 'hmm...'}],
246 ];298 ];
247299
310 await expect(executeTransaction(362 await expect(executeTransaction(
311 api, 363 api,
312 alice, 364 alice,
313 api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true}}]), 365 api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true}}]),
314 )).to.not.be.rejected;366 )).to.not.be.rejected;
315367
316 await addCollectionAdminExpectSuccess(alice, collection, bob.address);368 await addCollectionAdminExpectSuccess(alice, collection, bob.address);
317369
318 await expect(executeTransaction(370 await expect(executeTransaction(
319 api, 371 api,
320 alice, 372 alice,
321 api.tx.unique.setPropertyPermissions(collection, [{key: 'mindgame', permission: {collectionAdmin: true, tokenOwner: false}}]), 373 api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'mindgame', permission: {collectionAdmin: true, tokenOwner: false}}]),
322 )).to.not.be.rejected;374 )).to.not.be.rejected;
323375
324 const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery', 'mindgame'])).toHuman();376 const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery', 'mindgame'])).toHuman();
336 await expect(executeTransaction(388 await expect(executeTransaction(
337 api, 389 api,
338 alice, 390 alice,
339 api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true, collectionAdmin: true}}]), 391 api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true, collectionAdmin: true}}]),
340 )).to.not.be.rejected;392 )).to.not.be.rejected;
341393
342 await expect(executeTransaction(394 await expect(executeTransaction(
343 api, 395 api,
344 alice, 396 alice,
345 api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: false, tokenOwner: true}}]), 397 api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: false, tokenOwner: true}}]),
346 )).to.not.be.rejected;398 )).to.not.be.rejected;
347399
348 const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery'])).toHuman();400 const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery'])).toHuman();
368 await expect(executeTransaction(420 await expect(executeTransaction(
369 api, 421 api,
370 bob, 422 bob,
371 api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true, tokenOwner: true}}]), 423 api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true, tokenOwner: true}}]),
372 )).to.be.rejectedWith(/common\.NoPermission/);424 )).to.be.rejectedWith(/common\.NoPermission/);
373425
374 const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery'])).toJSON();426 const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery'])).toJSON();
391 await expect(executeTransaction(443 await expect(executeTransaction(
392 api, 444 api,
393 alice, 445 alice,
394 api.tx.unique.setPropertyPermissions(collection, constitution), 446 api.tx.unique.setTokenPropertyPermissions(collection, constitution),
395 )).to.be.rejectedWith(/common\.PropertyLimitReached/);447 )).to.be.rejectedWith(/common\.PropertyLimitReached/);
396448
397 const propertyRights = (await api.query.common.collectionPropertyPermissions(collection)).toJSON();449 const propertyRights = (await api.query.common.collectionPropertyPermissions(collection)).toJSON();
406 await expect(executeTransaction(458 await expect(executeTransaction(
407 api, 459 api,
408 alice, 460 alice,
409 api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: false, tokenOwner: true}}]), 461 api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: false, tokenOwner: true}}]),
410 )).to.not.be.rejected;462 )).to.not.be.rejected;
411463
412 await expect(executeTransaction(464 await expect(executeTransaction(
413 api, 465 api,
414 alice, 466 alice,
415 api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {}}]), 467 api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'skullduggery', permission: {}}]),
416 )).to.be.rejectedWith(/common\.NoPermission/);468 )).to.be.rejectedWith(/common\.NoPermission/);
417469
418 const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery'])).toHuman();470 const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery'])).toHuman();
436 await expect(executeTransaction(488 await expect(executeTransaction(
437 api, 489 api,
438 alice, 490 alice,
439 api.tx.unique.setPropertyPermissions(collection, invalidProperties[i]), 491 api.tx.unique.setTokenPropertyPermissions(collection, invalidProperties[i]),
440 ), `on setting the new badly-named property #${i}`).to.be.rejectedWith(/common\.InvalidCharacterInPropertyKey/);492 ), `on setting the new badly-named property #${i}`).to.be.rejectedWith(/common\.InvalidCharacterInPropertyKey/);
441 }493 }
442494
443 await expect(executeTransaction(495 await expect(executeTransaction(
444 api, 496 api,
445 alice, 497 alice,
446 api.tx.unique.setPropertyPermissions(collection, [{key: '', permission: {}}]), 498 api.tx.unique.setTokenPropertyPermissions(collection, [{key: '', permission: {}}]),
447 ), 'on rejecting an unnamed property').to.be.rejectedWith(/common\.EmptyPropertyKey/);499 ), 'on rejecting an unnamed property').to.be.rejectedWith(/common\.EmptyPropertyKey/);
448500
449 const correctKey = '--0x03116e387820CA05'; // PolkadotJS would parse this as an already encoded hex-string501 const correctKey = '--0x03116e387820CA05'; // PolkadotJS would parse this as an already encoded hex-string
450 await expect(executeTransaction(502 await expect(executeTransaction(
451 api, 503 api,
452 alice, 504 alice,
453 api.tx.unique.setPropertyPermissions(collection, [505 api.tx.unique.setTokenPropertyPermissions(collection, [
454 {key: correctKey, permission: {collectionAdmin: true}},506 {key: correctKey, permission: {collectionAdmin: true}},
455 ]), 507 ]),
456 ), 'on setting the correctly-but-still-badly-named property').to.not.be.rejected;508 ), 'on setting the correctly-but-still-badly-named property').to.not.be.rejected;
524 await expect(executeTransaction(576 await expect(executeTransaction(
525 api, 577 api,
526 alice, 578 alice,
527 api.tx.unique.setPropertyPermissions(collection, [{key: key, permission: permission.permission}]), 579 api.tx.unique.setTokenPropertyPermissions(collection, [{key: key, permission: permission.permission}]),
528 ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;580 ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;
529581
530 await expect(executeTransaction(582 await expect(executeTransaction(
560 await expect(executeTransaction(612 await expect(executeTransaction(
561 api, 613 api,
562 alice, 614 alice,
563 api.tx.unique.setPropertyPermissions(collection, [{key: key, permission: permission.permission}]), 615 api.tx.unique.setTokenPropertyPermissions(collection, [{key: key, permission: permission.permission}]),
564 ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;616 ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;
565617
566 await expect(executeTransaction(618 await expect(executeTransaction(
603 await expect(executeTransaction(655 await expect(executeTransaction(
604 api, 656 api,
605 alice, 657 alice,
606 api.tx.unique.setPropertyPermissions(collection, [{key: key, permission: permission.permission}]), 658 api.tx.unique.setTokenPropertyPermissions(collection, [{key: key, permission: permission.permission}]),
607 ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;659 ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;
608660
609 await expect(executeTransaction(661 await expect(executeTransaction(
669 await expect(executeTransaction(721 await expect(executeTransaction(
670 api, 722 api,
671 alice, 723 alice,
672 api.tx.unique.setPropertyPermissions(collection, [{key: `${i}`, permission: passage.permission}]), 724 api.tx.unique.setTokenPropertyPermissions(collection, [{key: `${i}`, permission: passage.permission}]),
673 ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;725 ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;
674726
675 await expect(executeTransaction(727 await expect(executeTransaction(
746 await expect(executeTransaction(798 await expect(executeTransaction(
747 api, 799 api,
748 alice, 800 alice,
749 api.tx.unique.setPropertyPermissions(collection, [{key: 'now-existent', permission: {}}]), 801 api.tx.unique.setTokenPropertyPermissions(collection, [{key: 'now-existent', permission: {}}]),
750 ), 'on setting a new non-permitted property').to.not.be.rejected;802 ), 'on setting a new non-permitted property').to.not.be.rejected;
751803
752 await expect(executeTransaction(804 await expect(executeTransaction(
766 await expect(executeTransaction(818 await expect(executeTransaction(
767 api, 819 api,
768 alice, 820 alice,
769 api.tx.unique.setPropertyPermissions(collection, [821 api.tx.unique.setTokenPropertyPermissions(collection, [
770 {key: 'a_holy_book', permission: {collectionAdmin: true, tokenOwner: true}}, 822 {key: 'a_holy_book', permission: {collectionAdmin: true, tokenOwner: true}},
771 {key: 'young_years', permission: {collectionAdmin: true, tokenOwner: true}},823 {key: 'young_years', permission: {collectionAdmin: true, tokenOwner: true}},
772 ]), 824 ]),
modifiedtests/src/nesting/rules-smoke.test.tsdiffbeforeafterboth
27 await usingApi(async api => {27 await usingApi(async api => {
28 const collection = await createCollectionExpectSuccess({mode: {type: 'Fungible',decimalPoints:0}});28 const collection = await createCollectionExpectSuccess({mode: {type: 'Fungible',decimalPoints:0}});
29 await expect(executeTransaction(api, alice, api.tx.unique.createItem(collection, nestTarget, {Fungible: {Value: 1}})))29 await expect(executeTransaction(api, alice, api.tx.unique.createItem(collection, nestTarget, {Fungible: {Value: 1}})))
30 .to.be.rejectedWith(/^common\.SourceCollectionIsNotAllowedToNest$/);30 .to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);
3131
32 await createFungibleItemExpectSuccess(alice, collection, {Value:1n}, {Substrate: alice.address});32 await createFungibleItemExpectSuccess(alice, collection, {Value:1n}, {Substrate: alice.address});
33 await expect(executeTransaction(api, alice, api.tx.unique.transfer(nestTarget, collection, 0, 1n)))33 await expect(executeTransaction(api, alice, api.tx.unique.transfer(nestTarget, collection, 0, 1n)))
34 .to.be.rejectedWith(/^common\.SourceCollectionIsNotAllowedToNest$/);34 .to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);
35 });35 });
36 });36 });
3737
38 it('called for nonfungible', async () => {38 it('called for nonfungible', async () => {
39 await usingApi(async api => {39 await usingApi(async api => {
40 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});40 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
41 await expect(executeTransaction(api, alice, api.tx.unique.createItem(collection, nestTarget, {NFT: {properties: []}})))41 await expect(executeTransaction(api, alice, api.tx.unique.createItem(collection, nestTarget, {NFT: {properties: []}})))
42 .to.be.rejectedWith(/^common\.SourceCollectionIsNotAllowedToNest$/);42 .to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);
4343
44 const token = await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});44 const token = await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});
45 await expect(executeTransaction(api, alice, api.tx.unique.transfer(nestTarget, collection, token, 1n)))45 await expect(executeTransaction(api, alice, api.tx.unique.transfer(nestTarget, collection, token, 1n)))
46 .to.be.rejectedWith(/^common\.SourceCollectionIsNotAllowedToNest$/);46 .to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);
47 });47 });
48 });48 });
4949
50 it('called for refungible', async () => {50 it('called for refungible', async () => {
51 await usingApi(async api => {51 await usingApi(async api => {
52 const collection = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});52 const collection = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
53 await expect(executeTransaction(api, alice, api.tx.unique.createItem(collection, nestTarget, {ReFungible: {}})))53 await expect(executeTransaction(api, alice, api.tx.unique.createItem(collection, nestTarget, {ReFungible: {}})))
54 .to.be.rejectedWith(/^common\.SourceCollectionIsNotAllowedToNest$/);54 .to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);
5555
56 const token = await createItemExpectSuccess(alice, collection, 'ReFungible', {Substrate: alice.address});56 const token = await createItemExpectSuccess(alice, collection, 'ReFungible', {Substrate: alice.address});
57 await expect(executeTransaction(api, alice, api.tx.unique.transfer(nestTarget, collection, token, 1n)))57 await expect(executeTransaction(api, alice, api.tx.unique.transfer(nestTarget, collection, token, 1n)))
58 .to.be.rejectedWith(/^common\.SourceCollectionIsNotAllowedToNest$/);58 .to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/);
59 });59 });
60 });60 });
61});61});
modifiedtests/src/pallet-presence.test.tsdiffbeforeafterboth
50 'unique',50 'unique',
51 'nonfungible',51 'nonfungible',
52 'refungible',52 'refungible',
53 'rmrkcore',
54 'rmrkequip',
55 'scheduler',53 'scheduler',
56 'charging',54 'charging',
57];55];
64];62];
6563
66describe('Pallet presence', () => {64describe('Pallet presence', () => {
65 before(async () => {
66 await usingApi(async api => {
67 const chain = await api.rpc.system.chain();
68
69 if (!chain.eq('UNIQUE')) {
70 requiredPallets.push(...['rmrkcore', 'rmrkequip']);
71 }
72 });
73 });
74
67 it('Required pallets are present', async () => {75 it('Required pallets are present', async () => {
68 await usingApi(async api => {76 await usingApi(async api => {
modifiedtests/src/removeCollectionAdmin.test.tsdiffbeforeafterboth
118 const bob = privateKeyWrapper('//Bob');118 const bob = privateKeyWrapper('//Bob');
119 const charlie = privateKeyWrapper('//Charlie');119 const charlie = privateKeyWrapper('//Charlie');
120
121 const addBobAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));
122 await submitTransactionAsync(alice, addBobAdminTx);
123 const addCharlieAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(charlie.address));
124 await submitTransactionAsync(alice, addCharlieAdminTx);
120125
121 const adminListAfterAddAdmin = await getAdminList(api, collectionId);126 const adminListAfterAddAdmin = await getAdminList(api, collectionId);
122 expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));127 expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));
128 expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(charlie.address));
123129
124 const removeAdminTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));130 const removeAdminTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));
125 await expect(submitTransactionAsync(charlie, removeAdminTx)).to.be.rejected;131 await expect(submitTransactionExpectFailAsync(charlie, removeAdminTx)).to.be.rejected;
126132
127 const adminListAfterRemoveAdmin = await getAdminList(api, collectionId);133 const adminListAfterRemoveAdmin = await getAdminList(api, collectionId);
128 expect(adminListAfterRemoveAdmin).to.be.deep.contains(normalizeAccountId(bob.address));134 expect(adminListAfterRemoveAdmin).to.be.deep.contains(normalizeAccountId(bob.address));
modifiedtests/src/rmrk/rmrk.test.tsdiffbeforeafterboth
11} from '../util/helpers';11} from '../util/helpers';
12import {IKeyringPair} from '@polkadot/types/types';12import {IKeyringPair} from '@polkadot/types/types';
13import {ApiPromise} from '@polkadot/api';13import {ApiPromise} from '@polkadot/api';
14import {it} from 'mocha';
1415
15let alice: IKeyringPair;16let alice: IKeyringPair;
16let bob: IKeyringPair;17let bob: IKeyringPair;
38 null,39 null,
39 'nft-metadata',40 'nft-metadata',
40 true,41 true,
42 null,
41 );43 );
42 const events = await executeTransaction(api, sender, tx);44 const events = await executeTransaction(api, sender, tx);
43 const result = getGenericResult(events, 'rmrkCore', 'NftMinted', (data) => {45 const result = getGenericResult(events, 'rmrkCore', 'NftMinted', (data) => {
47 return result.data!;49 return result.data!;
48}50}
51
52async function isUnique(): Promise<boolean> {
53 return usingApi(async api => {
54 const chain = await api.rpc.system.chain();
55
56 return chain.eq('UNIQUE');
57 });
58}
4959
50describe('RMRK External Integration Test', () => {60describe('RMRK External Integration Test', async () => {
61 const it_rmrk = (await isUnique() ? it : it.skip);
62
51 before(async () => {63 before(async () => {
52 await usingApi(async (api, privateKeyWrapper) => {64 await usingApi(async (api, privateKeyWrapper) => {
53 alice = privateKeyWrapper('//Alice');65 alice = privateKeyWrapper('//Alice');
66
67
54 });68 });
55 });69 });
5670
57 it('Creates a new RMRK collection that is mapped to a different ID and is tagged as external', async () => {71 it_rmrk('Creates a new RMRK collection that is mapped to a different ID and is tagged as external', async () => {
58 await usingApi(async api => {72 await usingApi(async api => {
59 // throwaway collection to bump last Unique collection ID to test ID mapping73 // throwaway collection to bump last Unique collection ID to test ID mapping
60 await createCollectionExpectSuccess();74 await createCollectionExpectSuccess();
69 });83 });
70});84});
7185
72describe('Negative Integration Test: External Collections, Internal Ops', () => {86describe('Negative Integration Test: External Collections, Internal Ops', async () => {
73 let uniqueCollectionId: number;87 let uniqueCollectionId: number;
74 let rmrkCollectionId: number;88 let rmrkCollectionId: number;
75 let rmrkNftId: number;89 let rmrkNftId: number;
90
91 const it_rmrk = (await isUnique() ? it : it.skip);
7692
77 before(async () => {93 before(async () => {
78 await usingApi(async (api, privateKeyWrapper) => {94 await usingApi(async (api, privateKeyWrapper) => {
87 });103 });
88 });104 });
89105
90 it('[Negative] Forbids Unique operations with an external collection, handled by dispatch_call', async () => {106 it_rmrk('[Negative] Forbids Unique operations with an external collection, handled by dispatch_call', async () => {
91 await usingApi(async api => {107 await usingApi(async api => {
92 // Collection item creation108 // Collection item creation
93109
113 await expect(executeTransaction(api, alice, txDeleteCollectionProperties), 'deleting collection properties')129 await expect(executeTransaction(api, alice, txDeleteCollectionProperties), 'deleting collection properties')
114 .to.be.rejectedWith(/common\.CollectionIsExternal/);130 .to.be.rejectedWith(/common\.CollectionIsExternal/);
115131
116 const txSetPropertyPermissions = api.tx.unique.setPropertyPermissions(uniqueCollectionId, [{key: 'a', permission: {mutable: true}}]);132 const txsetTokenPropertyPermissions = api.tx.unique.setTokenPropertyPermissions(uniqueCollectionId, [{key: 'a', permission: {mutable: true}}]);
117 await expect(executeTransaction(api, alice, txSetPropertyPermissions), 'setting property permissions')133 await expect(executeTransaction(api, alice, txsetTokenPropertyPermissions), 'setting property permissions')
118 .to.be.rejectedWith(/common\.CollectionIsExternal/);134 .to.be.rejectedWith(/common\.CollectionIsExternal/);
119135
120 // NFT136 // NFT
146 });162 });
147 });163 });
148164
149 it('[Negative] Forbids Unique collection operations with an external collection', async () => {165 it_rmrk('[Negative] Forbids Unique collection operations with an external collection', async () => {
150 await usingApi(async api => {166 await usingApi(async api => {
151 const txDestroyCollection = api.tx.unique.destroyCollection(uniqueCollectionId);167 const txDestroyCollection = api.tx.unique.destroyCollection(uniqueCollectionId);
152 await expect(executeTransaction(api, alice, txDestroyCollection), 'destroying collection')168 await expect(executeTransaction(api, alice, txDestroyCollection), 'destroying collection')
205 });221 });
206});222});
207223
208describe('Negative Integration Test: Internal Collections, External Ops', () => {224describe('Negative Integration Test: Internal Collections, External Ops', async () => {
209 let collectionId: number;225 let collectionId: number;
210 let nftId: number;226 let nftId: number;
227
228 const it_rmrk = (await isUnique() ? it : it.skip);
211229
212 before(async () => {230 before(async () => {
213 await usingApi(async (api, privateKeyWrapper) => {231 await usingApi(async (api, privateKeyWrapper) => {
219 });237 });
220 });238 });
221239
222 it('[Negative] Forbids RMRK operations with the internal collection and NFT (due to the lack of mapping)', async () => {240 it_rmrk('[Negative] Forbids RMRK operations with the internal collection and NFT (due to the lack of mapping)', async () => {
223 await usingApi(async api => {241 await usingApi(async api => {
224 const txChangeOwner = api.tx.rmrkCore.changeCollectionIssuer(collectionId, bob.address);242 const txChangeOwner = api.tx.rmrkCore.changeCollectionIssuer(collectionId, bob.address);
225 await expect(executeTransaction(api, alice, txChangeOwner), 'changing collection issuer')243 await expect(executeTransaction(api, alice, txChangeOwner), 'changing collection issuer')
226 .to.be.rejectedWith(/rmrkCore\.CollectionUnknown/);244 .to.be.rejectedWith(/rmrkCore\.CollectionUnknown/);
227245
246 const maxBurns = 10;
228 const txBurnItem = api.tx.rmrkCore.burnNft(collectionId, nftId);247 const txBurnItem = api.tx.rmrkCore.burnNft(collectionId, nftId, maxBurns);
229 await expect(executeTransaction(api, alice, txBurnItem), 'burning NFT').to.be.rejectedWith(/rmrkCore\.CollectionUnknown/);248 await expect(executeTransaction(api, alice, txBurnItem), 'burning NFT').to.be.rejectedWith(/rmrkCore\.CollectionUnknown/);
230 });249 });
231 });250 });
modifiedtests/src/setCollectionLimits.test.tsdiffbeforeafterboth
46 before(async () => {46 before(async () => {
47 await usingApi(async (api, privateKeyWrapper) => {47 await usingApi(async (api, privateKeyWrapper) => {
48 alice = privateKeyWrapper('//Alice');48 alice = privateKeyWrapper('//Alice');
49 bob = privateKeyWrapper('//Bob');
49 collectionIdForTesting = await createCollectionExpectSuccess({name: 'A', description: 'B', tokenPrefix: 'C', mode: {type: 'NFT'}});50 collectionIdForTesting = await createCollectionExpectSuccess({name: 'A', description: 'B', tokenPrefix: 'C', mode: {type: 'NFT'}});
50 });51 });
51 });52 });
115 });116 });
116 });117 });
117118
119 it('execute setCollectionLimits from admin collection', async () => {
120 await addCollectionAdminExpectSuccess(alice, collectionIdForTesting, bob.address);
121 await usingApi(async (api: ApiPromise) => {
122 tx = api.tx.unique.setCollectionLimits(
123 collectionIdForTesting,
124 {
125 accountTokenOwnershipLimit,
126 sponsoredDataSize,
127 // sponsoredMintSize,
128 tokenLimit,
129 },
130 );
131 await expect(submitTransactionAsync(bob, tx)).to.be.not.rejected;
132 });
133 });
118});134});
119135
120describe('setCollectionLimits negative', () => {136describe('setCollectionLimits negative', () => {
156 await expect(submitTransactionExpectFailAsync(bob, tx)).to.be.rejected;172 await expect(submitTransactionExpectFailAsync(bob, tx)).to.be.rejected;
157 });173 });
158 });174 });
159 it('execute setCollectionLimits from admin collection', async () => {
160 await addCollectionAdminExpectSuccess(alice, collectionIdForTesting, bob.address);
161 await usingApi(async (api: ApiPromise) => {
162 tx = api.tx.unique.setCollectionLimits(
163 collectionIdForTesting,
164 {
165 accountTokenOwnershipLimit,
166 sponsoredDataSize,
167 // sponsoredMintSize,
168 tokenLimit,
169 },
170 );
171 await expect(submitTransactionExpectFailAsync(bob, tx)).to.be.rejected;
172 });
173 });
174175
175 it('fails when trying to enable OwnerCanTransfer after it was disabled', async () => {176 it('fails when trying to enable OwnerCanTransfer after it was disabled', async () => {
176 const collectionId = await createCollectionExpectSuccess();177 const collectionId = await createCollectionExpectSuccess();
modifiedtests/src/setCollectionSponsor.test.tsdiffbeforeafterboth
65 await setCollectionSponsorExpectSuccess(collectionId, bob.address);65 await setCollectionSponsorExpectSuccess(collectionId, bob.address);
66 await setCollectionSponsorExpectSuccess(collectionId, charlie.address);66 await setCollectionSponsorExpectSuccess(collectionId, charlie.address);
67 });67 });
68 it('Collection admin add sponsor', async () => {
69 const collectionId = await createCollectionExpectSuccess();
70 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
71 await setCollectionSponsorExpectSuccess(collectionId, charlie.address, '//Bob');
72 });
68});73});
6974
70describe('(!negative test!) integration test: ext. setCollectionSponsor():', () => {75describe('(!negative test!) integration test: ext. setCollectionSponsor():', () => {
94 await destroyCollectionExpectSuccess(collectionId);99 await destroyCollectionExpectSuccess(collectionId);
95 await setCollectionSponsorExpectFailure(collectionId, bob.address);100 await setCollectionSponsorExpectFailure(collectionId, bob.address);
96 });101 });
97 it('(!negative test!) Collection admin add sponsor', async () => {
98 const collectionId = await createCollectionExpectSuccess();
99 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
100 await setCollectionSponsorExpectFailure(collectionId, charlie.address, '//Bob');
101 });
102});102});
103103
modifiedtests/src/setMintPermission.test.tsdiffbeforeafterboth
68 });68 });
69 });69 });
70
71 it('Collection admin success on set', async () => {
72 await usingApi(async () => {
73 const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
74 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
75 await setMintPermissionExpectSuccess(bob, collectionId, true);
76 });
77 });
70});78});
7179
72describe('Negative Integration Test setMintPermission', () => {80describe('Negative Integration Test setMintPermission', () => {
102 await setMintPermissionExpectFailure(bob, collectionId, true);110 await setMintPermissionExpectFailure(bob, collectionId, true);
103 });111 });
104
105 it('Collection admin fails on set', async () => {
106 await usingApi(async () => {
107 const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
108 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
109 await setMintPermissionExpectFailure(bob, collectionId, true);
110 });
111 });
112112
113 it('ensure non-allow-listed non-privileged address can\'t mint tokens', async () => {113 it('ensure non-allow-listed non-privileged address can\'t mint tokens', async () => {
114 await usingApi(async () => {114 await usingApi(async () => {
modifiedtests/src/setPublicAccessMode.test.tsdiffbeforeafterboth
104 });104 });
105 });105 });
106
107 it('setPublicAccessMode by collection admin', async () => {
108 await usingApi(async (api: ApiPromise) => {
109 // tslint:disable-next-line: no-bitwise
110 const collectionId = await createCollectionExpectSuccess();
111 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
112 const tx = api.tx.unique.setCollectionPermissions(collectionId, {access: 'AllowList'});
113 await expect(submitTransactionExpectFailAsync(bob, tx)).to.be.not.rejected;
114 });
115 });
106});116});
107117
108describe('Negative Integration Test ext. collection admin setPublicAccessMode(): ', () => {118describe('Negative Integration Test ext. collection admin setPublicAccessMode(): ', () => {
112 bob = privateKeyWrapper('//Bob');122 bob = privateKeyWrapper('//Bob');
113 });123 });
114 });124 });
115 it('setPublicAccessMode by collection admin', async () => {
116 await usingApi(async (api: ApiPromise) => {
117 // tslint:disable-next-line: no-bitwise
118 const collectionId = await createCollectionExpectSuccess();
119 await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
120 const tx = api.tx.unique.setCollectionPermissions(collectionId, {access: 'AllowList'});
121 await expect(submitTransactionExpectFailAsync(bob, tx)).to.be.rejected;
122 });
123 });
124});125});
125126
modifiedtests/src/transferFrom.test.tsdiffbeforeafterboth
9999
100 it('can be called by collection owner on non-owned item when OwnerCanTransfer == true', async () => {100 it('can be called by collection owner on non-owned item when OwnerCanTransfer == true', async () => {
101 const collectionId = await createCollectionExpectSuccess();101 const collectionId = await createCollectionExpectSuccess();
102 await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true});
102 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', bob.address);103 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', bob.address);
103104
104 await transferFromExpectSuccess(collectionId, itemId, alice, bob, charlie);105 await transferFromExpectSuccess(collectionId, itemId, alice, bob, charlie);
257 await usingApi(async () => {258 await usingApi(async () => {
258 // nft259 // nft
259 const nftCollectionId = await createCollectionExpectSuccess();260 const nftCollectionId = await createCollectionExpectSuccess();
261 await setCollectionLimitsExpectSuccess(alice, nftCollectionId, {ownerCanTransfer: true});
260 const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');262 const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
261 await burnItemExpectSuccess(alice, nftCollectionId, newNftTokenId, 1);263 await burnItemExpectSuccess(alice, nftCollectionId, newNftTokenId, 1);
262 await approveExpectFail(nftCollectionId, newNftTokenId, alice, bob);264 await approveExpectFail(nftCollectionId, newNftTokenId, alice, bob);
266 it('transferFrom burnt token before approve Fungible', async () => {268 it('transferFrom burnt token before approve Fungible', async () => {
267 await usingApi(async () => {269 await usingApi(async () => {
268 const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});270 const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
271 await setCollectionLimitsExpectSuccess(alice, fungibleCollectionId, {ownerCanTransfer: true});
269 const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible');272 const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible');
270 await burnItemExpectSuccess(alice, fungibleCollectionId, newFungibleTokenId, 10);273 await burnItemExpectSuccess(alice, fungibleCollectionId, newFungibleTokenId, 10);
271 await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob.address);274 await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob.address);
276 it('transferFrom burnt token before approve ReFungible', async () => {279 it('transferFrom burnt token before approve ReFungible', async () => {
277 await usingApi(async () => {280 await usingApi(async () => {
278 const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});281 const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
282 await setCollectionLimitsExpectSuccess(alice, reFungibleCollectionId, {ownerCanTransfer: true});
279 const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible');283 const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible');
280 await burnItemExpectSuccess(alice, reFungibleCollectionId, newReFungibleTokenId, 100);284 await burnItemExpectSuccess(alice, reFungibleCollectionId, newReFungibleTokenId, 100);
281 await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, alice, bob);285 await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, alice, bob);
modifiedtests/src/util/helpers.tsdiffbeforeafterboth
921 });921 });
922}922}
923
924export async function adminApproveFromExpectFail(
925 collectionId: number,
926 tokenId: number, admin: IKeyringPair, owner: CrossAccountId | string, approved: CrossAccountId | string, amount: number | bigint = 1,
927) {
928 await usingApi(async (api: ApiPromise) => {
929 const approveUniqueTx = api.tx.unique.approve(normalizeAccountId(approved), collectionId, tokenId, amount);
930 const events = await expect(submitTransactionAsync(admin, approveUniqueTx)).to.be.rejected;
931 const result = getGenericResult(events);
932 expect(result.success).to.be.false;
933 });
934}
923935
924export async function936export async function
925getFreeBalance(account: IKeyringPair): Promise<bigint> {937getFreeBalance(account: IKeyringPair): Promise<bigint> {
modifiedtests/update_types.shdiffbeforeafterboth
7fi7fi
88
9rsync -ar --exclude .gitignore src/interfaces/ unique-types-js9rsync -ar --exclude .gitignore src/interfaces/ unique-types-js
10for file in unique-types-js/augment-* unique-types-js/**/types.ts unique-types-js/**/registry.ts; do10for file in unique-types-js/augment-* unique-types-js/**/types.ts unique-types-js/registry.ts; do
11 sed -i '1s;^;//@ts-nocheck\n;' $file11 sed -i '1s;^;//@ts-nocheck\n;' $file
12done12done
1313