difftreelog
Merge branch 'develop' into feature/CORE-325
in: master
63 files changed
.gitignorediffbeforeafterboth--- a/.gitignore
+++ b/.gitignore
@@ -11,6 +11,7 @@
*store_key*.json
/.idea/
+/.cargo/
tests/.vscode
cumulus-parachain/
Cargo.lockdiffbeforeafterboth--- a/Cargo.lock
+++ b/Cargo.lock
@@ -68,7 +68,7 @@
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
dependencies = [
- "getrandom 0.2.5",
+ "getrandom 0.2.6",
"once_cell",
"version_check",
]
@@ -188,9 +188,9 @@
[[package]]
name = "async-global-executor"
-version = "2.0.3"
+version = "2.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c026b7e44f1316b567ee750fea85103f87fcb80792b860e979f221259796ca0a"
+checksum = "c290043c9a95b05d45e952fb6383c67bcb61471f60cfa21e890dba6654234f43"
dependencies = [
"async-channel",
"async-executor",
@@ -306,9 +306,9 @@
[[package]]
name = "async-trait"
-version = "0.1.52"
+version = "0.1.53"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3"
+checksum = "ed6aa3524a2dfcf9fe180c51eae2b58738348d819517ceadf95789c51fff7600"
dependencies = [
"proc-macro2",
"quote",
@@ -392,7 +392,7 @@
checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1"
dependencies = [
"futures-core",
- "getrandom 0.2.5",
+ "getrandom 0.2.6",
"instant",
"pin-project-lite 0.2.8",
"rand 0.8.5",
@@ -440,9 +440,9 @@
[[package]]
name = "base64ct"
-version = "1.4.1"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "71acf5509fc522cce1b100ac0121c635129bfd4d91cdf036bcc9b9935f97ccf5"
+checksum = "dea908e7347a8c64e378c17e30ef880ad73e3b4498346b055c2c00ea342f3179"
[[package]]
name = "beef"
@@ -990,7 +990,7 @@
dependencies = [
"camino",
"cargo-platform",
- "semver 1.0.6",
+ "semver 1.0.7",
"serde",
"serde_json",
]
@@ -1111,9 +1111,9 @@
[[package]]
name = "clap"
-version = "3.1.6"
+version = "3.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d8c93436c21e4698bacadf42917db28b23017027a4deccb35dbe47a7e7840123"
+checksum = "71c47df61d9e16dc010b55dba1952a57d8c215dbb533fd13cdd13369aac73b1c"
dependencies = [
"atty",
"bitflags",
@@ -1128,9 +1128,9 @@
[[package]]
name = "clap_derive"
-version = "3.1.4"
+version = "3.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da95d038ede1a964ce99f49cbe27a7fb538d1da595e4b4f70b8c8f338d17bf16"
+checksum = "a3aab4734e083b809aaf5794e14e756d1c798d2c69c7f7de7a09a2f5214993c1"
dependencies = [
"heck 0.4.0",
"proc-macro-error",
@@ -1913,9 +1913,9 @@
[[package]]
name = "darling"
-version = "0.13.1"
+version = "0.13.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d0d720b8683f8dd83c65155f0530560cba68cd2bf395f6513a483caee57ff7f4"
+checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c"
dependencies = [
"darling_core",
"darling_macro",
@@ -1923,9 +1923,9 @@
[[package]]
name = "darling_core"
-version = "0.13.1"
+version = "0.13.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a340f241d2ceed1deb47ae36c4144b2707ec7dd0b649f894cb39bb595986324"
+checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610"
dependencies = [
"fnv",
"ident_case",
@@ -1937,9 +1937,9 @@
[[package]]
name = "darling_macro"
-version = "0.13.1"
+version = "0.13.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72c41b3b7352feb3211a0d743dc5700a4e3b60f51bd2b368892d1e0f9a95f44b"
+checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835"
dependencies = [
"darling_core",
"quote",
@@ -2484,7 +2484,7 @@
[[package]]
name = "fc-consensus"
version = "2.0.0-dev"
-source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18#7c8ce8f83e0c8a5b57655622b721f8655b161903"
+source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18-2#82310d1dd3189f34bd901a9ac894ad33eca5cf89"
dependencies = [
"async-trait",
"derive_more",
@@ -2511,7 +2511,7 @@
[[package]]
name = "fc-db"
version = "2.0.0-dev"
-source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18#7c8ce8f83e0c8a5b57655622b721f8655b161903"
+source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18-2#82310d1dd3189f34bd901a9ac894ad33eca5cf89"
dependencies = [
"fp-storage",
"kvdb",
@@ -2527,7 +2527,7 @@
[[package]]
name = "fc-mapping-sync"
version = "2.0.0-dev"
-source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18#7c8ce8f83e0c8a5b57655622b721f8655b161903"
+source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18-2#82310d1dd3189f34bd901a9ac894ad33eca5cf89"
dependencies = [
"fc-consensus",
"fc-db",
@@ -2545,7 +2545,7 @@
[[package]]
name = "fc-rpc"
version = "2.0.0-dev"
-source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18#7c8ce8f83e0c8a5b57655622b721f8655b161903"
+source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18-2#82310d1dd3189f34bd901a9ac894ad33eca5cf89"
dependencies = [
"ethereum",
"ethereum-types",
@@ -2591,7 +2591,7 @@
[[package]]
name = "fc-rpc-core"
version = "1.1.0-dev"
-source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18#7c8ce8f83e0c8a5b57655622b721f8655b161903"
+source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18-2#82310d1dd3189f34bd901a9ac894ad33eca5cf89"
dependencies = [
"ethereum",
"ethereum-types",
@@ -2725,7 +2725,7 @@
[[package]]
name = "fp-consensus"
version = "2.0.0-dev"
-source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18#7c8ce8f83e0c8a5b57655622b721f8655b161903"
+source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18-2#82310d1dd3189f34bd901a9ac894ad33eca5cf89"
dependencies = [
"ethereum",
"parity-scale-codec",
@@ -2739,7 +2739,7 @@
[[package]]
name = "fp-evm"
version = "3.0.0-dev"
-source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18#7c8ce8f83e0c8a5b57655622b721f8655b161903"
+source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18-2#82310d1dd3189f34bd901a9ac894ad33eca5cf89"
dependencies = [
"evm",
"impl-trait-for-tuples",
@@ -2751,9 +2751,18 @@
]
[[package]]
+name = "fp-evm-mapping"
+version = "0.1.0"
+source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18-2#82310d1dd3189f34bd901a9ac894ad33eca5cf89"
+dependencies = [
+ "frame-support",
+ "sp-core",
+]
+
+[[package]]
name = "fp-rpc"
version = "3.0.0-dev"
-source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18#7c8ce8f83e0c8a5b57655622b721f8655b161903"
+source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18-2#82310d1dd3189f34bd901a9ac894ad33eca5cf89"
dependencies = [
"ethereum",
"ethereum-types",
@@ -2770,7 +2779,7 @@
[[package]]
name = "fp-self-contained"
version = "1.0.0-dev"
-source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18#7c8ce8f83e0c8a5b57655622b721f8655b161903"
+source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18-2#82310d1dd3189f34bd901a9ac894ad33eca5cf89"
dependencies = [
"ethereum",
"frame-support",
@@ -2787,7 +2796,7 @@
[[package]]
name = "fp-storage"
version = "2.0.0"
-source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18#7c8ce8f83e0c8a5b57655622b721f8655b161903"
+source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18-2#82310d1dd3189f34bd901a9ac894ad33eca5cf89"
[[package]]
name = "frame-benchmarking"
@@ -3234,9 +3243,9 @@
[[package]]
name = "getrandom"
-version = "0.2.5"
+version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d39cd93900197114fa1fcb7ae84ca742095eed9442088988ae74fa744e930e77"
+checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad"
dependencies = [
"cfg-if 1.0.0",
"libc",
@@ -3308,9 +3317,9 @@
[[package]]
name = "h2"
-version = "0.3.12"
+version = "0.3.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62eeb471aa3e3c9197aa4bfeabfe02982f6dc96f750486c0bb0009ac58b26d2b"
+checksum = "37a82c6d637fc9515a4694bbf1cb2457b79d81ce52b3108bdeea58b07dd34a57"
dependencies = [
"bytes 1.1.0",
"fnv",
@@ -3321,7 +3330,7 @@
"indexmap",
"slab",
"tokio 1.17.0",
- "tokio-util",
+ "tokio-util 0.7.1",
"tracing",
]
@@ -3679,9 +3688,9 @@
[[package]]
name = "indexmap"
-version = "1.8.0"
+version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223"
+checksum = "0f647032dfaa1f8b6dc29bd3edb7bbef4861b8b8007ebb118d6db284fd59f6ee"
dependencies = [
"autocfg",
"hashbrown 0.11.2",
@@ -3906,7 +3915,7 @@
"log",
"tokio 1.17.0",
"tokio-stream",
- "tokio-util",
+ "tokio-util 0.6.9",
"unicase",
]
@@ -3976,7 +3985,7 @@
"thiserror",
"tokio 1.17.0",
"tokio-rustls 0.23.3",
- "tokio-util",
+ "tokio-util 0.6.9",
"tracing",
"webpki-roots 0.22.2",
]
@@ -3997,7 +4006,7 @@
"thiserror",
"tokio 1.17.0",
"tokio-rustls 0.23.3",
- "tokio-util",
+ "tokio-util 0.6.9",
"tracing",
"webpki-roots 0.22.2",
]
@@ -4158,7 +4167,7 @@
"thiserror",
"tokio 1.17.0",
"tokio-rustls 0.22.0",
- "tokio-util",
+ "tokio-util 0.6.9",
]
[[package]]
@@ -4769,7 +4778,7 @@
"libp2p-core",
"libp2p-swarm",
"log",
- "lru 0.7.3",
+ "lru 0.7.5",
"rand 0.7.3",
"smallvec",
"unsigned-varint 0.7.1",
@@ -4999,10 +5008,11 @@
[[package]]
name = "lock_api"
-version = "0.4.6"
+version = "0.4.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b"
+checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53"
dependencies = [
+ "autocfg",
"scopeguard",
]
@@ -5027,9 +5037,9 @@
[[package]]
name = "lru"
-version = "0.7.3"
+version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fcb87f3080f6d1d69e8c564c0fcfde1d7aa8cc451ce40cae89479111f03bc0eb"
+checksum = "32613e41de4c47ab04970c348ca7ae7382cf116625755af070b008a15516a889"
dependencies = [
"hashbrown 0.11.2",
]
@@ -5576,6 +5586,7 @@
"cumulus-primitives-timestamp",
"cumulus-primitives-utility",
"derivative",
+ "fp-evm-mapping",
"fp-rpc",
"fp-self-contained",
"frame-benchmarking",
@@ -5632,7 +5643,6 @@
"substrate-wasm-builder",
"unique-runtime-common",
"up-data-structs",
- "up-evm-mapping",
"up-rpc",
"xcm",
"xcm-builder",
@@ -5831,7 +5841,7 @@
[[package]]
name = "pallet-base-fee"
version = "1.0.0"
-source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18#7c8ce8f83e0c8a5b57655622b721f8655b161903"
+source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18-2#82310d1dd3189f34bd901a9ac894ad33eca5cf89"
dependencies = [
"frame-support",
"frame-system",
@@ -5984,6 +5994,7 @@
version = "0.1.0"
dependencies = [
"evm-coder",
+ "fp-evm-mapping",
"frame-support",
"frame-system",
"pallet-evm",
@@ -5995,7 +6006,6 @@
"sp-runtime",
"sp-std",
"up-data-structs",
- "up-evm-mapping",
]
[[package]]
@@ -6058,13 +6068,14 @@
[[package]]
name = "pallet-ethereum"
version = "4.0.0-dev"
-source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18#7c8ce8f83e0c8a5b57655622b721f8655b161903"
+source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18-2#82310d1dd3189f34bd901a9ac894ad33eca5cf89"
dependencies = [
"ethereum",
"ethereum-types",
"evm",
"fp-consensus",
"fp-evm",
+ "fp-evm-mapping",
"fp-rpc",
"fp-self-contained",
"fp-storage",
@@ -6088,12 +6099,13 @@
[[package]]
name = "pallet-evm"
version = "6.0.0-dev"
-source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18#7c8ce8f83e0c8a5b57655622b721f8655b161903"
+source = "git+https://github.com/uniquenetwork/frontier.git?branch=unique-polkadot-v0.9.18-2#82310d1dd3189f34bd901a9ac894ad33eca5cf89"
dependencies = [
"evm",
"evm-gasometer",
"evm-runtime",
"fp-evm",
+ "fp-evm-mapping",
"frame-benchmarking",
"frame-support",
"frame-system",
@@ -6136,6 +6148,7 @@
version = "0.1.0"
dependencies = [
"evm-coder",
+ "fp-evm-mapping",
"frame-support",
"frame-system",
"log",
@@ -6171,6 +6184,7 @@
version = "0.1.0"
dependencies = [
"fp-evm",
+ "fp-evm-mapping",
"frame-support",
"frame-system",
"pallet-ethereum",
@@ -6181,7 +6195,6 @@
"sp-io",
"sp-runtime",
"sp-std",
- "up-evm-mapping",
"up-sponsorship",
]
@@ -6195,6 +6208,7 @@
"frame-support",
"frame-system",
"pallet-common",
+ "pallet-evm",
"pallet-evm-coder-substrate",
"parity-scale-codec",
"scale-info",
@@ -6421,6 +6435,7 @@
"frame-support",
"frame-system",
"pallet-common",
+ "pallet-evm",
"pallet-evm-coder-substrate",
"parity-scale-codec",
"scale-info",
@@ -6537,6 +6552,7 @@
"frame-support",
"frame-system",
"pallet-common",
+ "pallet-evm",
"parity-scale-codec",
"scale-info",
"sp-core",
@@ -6672,7 +6688,7 @@
[[package]]
name = "pallet-template-transaction-payment"
version = "3.0.0"
-source = "git+https://github.com/UniqueNetwork/pallet-sponsoring?branch=polkadot-v0.9.18#e914a799e5ff1c18383a614ea99e87dd7f3f446e"
+source = "git+https://github.com/UniqueNetwork/pallet-sponsoring?branch=polkadot-v0.9.18#7bc842b35a53f762ee6ee89e5f5bef84a284c9f4"
dependencies = [
"frame-benchmarking",
"frame-support",
@@ -6795,6 +6811,7 @@
"ethereum",
"evm-coder",
"fp-evm",
+ "fp-evm-mapping",
"frame-benchmarking",
"frame-support",
"frame-system",
@@ -6821,7 +6838,6 @@
"sp-runtime",
"sp-std",
"up-data-structs",
- "up-evm-mapping",
"up-sponsorship",
]
@@ -6925,9 +6941,9 @@
[[package]]
name = "parity-db"
-version = "0.3.9"
+version = "0.3.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d121a9af17a43efd0a38c6afa508b927ba07785bd4709efb2ac03bf77efef8d"
+checksum = "b3e7f385d61562f5834282b90aa50b41f38a35cf64d5209b8b05487b50553dbe"
dependencies = [
"blake2-rfc",
"crc32fast",
@@ -6998,7 +7014,7 @@
"ethereum-types",
"hashbrown 0.12.0",
"impl-trait-for-tuples",
- "lru 0.7.3",
+ "lru 0.7.5",
"parity-util-mem-derive",
"parking_lot 0.12.0",
"primitive-types",
@@ -7074,7 +7090,7 @@
checksum = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58"
dependencies = [
"lock_api",
- "parking_lot_core 0.9.1",
+ "parking_lot_core 0.9.2",
]
[[package]]
@@ -7093,9 +7109,9 @@
[[package]]
name = "parking_lot_core"
-version = "0.9.1"
+version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "28141e0cc4143da2443301914478dc976a61ffdb3f043058310c70df2fed8954"
+checksum = "995f667a6c822200b0433ac218e05582f0e2efa1b922a3fd2fbaadc5f87bab37"
dependencies = [
"cfg-if 1.0.0",
"libc",
@@ -7106,9 +7122,9 @@
[[package]]
name = "paste"
-version = "1.0.6"
+version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0744126afe1a6dd7f394cb50a716dbe086cb06e255e53d8d0185d82828358fb5"
+checksum = "0c520e05135d6e763148b6426a837e239041653ba7becd2e538c076c738025fc"
[[package]]
name = "pbkdf2"
@@ -7270,9 +7286,9 @@
[[package]]
name = "pkg-config"
-version = "0.3.24"
+version = "0.3.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe"
+checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae"
[[package]]
name = "platforms"
@@ -7315,7 +7331,7 @@
"derive_more",
"fatality",
"futures 0.3.21",
- "lru 0.7.3",
+ "lru 0.7.5",
"parity-scale-codec",
"polkadot-erasure-coding",
"polkadot-node-network-protocol",
@@ -7337,7 +7353,7 @@
dependencies = [
"fatality",
"futures 0.3.21",
- "lru 0.7.3",
+ "lru 0.7.5",
"parity-scale-codec",
"polkadot-erasure-coding",
"polkadot-node-network-protocol",
@@ -7446,7 +7462,7 @@
"derive_more",
"fatality",
"futures 0.3.21",
- "lru 0.7.3",
+ "lru 0.7.5",
"parity-scale-codec",
"polkadot-erasure-coding",
"polkadot-node-network-protocol",
@@ -7542,7 +7558,7 @@
"futures 0.3.21",
"futures-timer",
"kvdb",
- "lru 0.7.3",
+ "lru 0.7.5",
"merlin",
"parity-scale-codec",
"polkadot-node-jaeger",
@@ -7671,7 +7687,7 @@
"fatality",
"futures 0.3.21",
"kvdb",
- "lru 0.7.3",
+ "lru 0.7.5",
"parity-scale-codec",
"polkadot-node-primitives",
"polkadot-node-subsystem",
@@ -7897,7 +7913,7 @@
"futures 0.3.21",
"itertools",
"kvdb",
- "lru 0.7.3",
+ "lru 0.7.5",
"metered-channel",
"parity-db",
"parity-scale-codec",
@@ -7926,7 +7942,7 @@
dependencies = [
"futures 0.3.21",
"futures-timer",
- "lru 0.7.3",
+ "lru 0.7.5",
"parity-util-mem",
"parking_lot 0.12.0",
"polkadot-node-metrics",
@@ -8273,7 +8289,7 @@
"kusama-runtime",
"kvdb",
"kvdb-rocksdb",
- "lru 0.7.3",
+ "lru 0.7.5",
"pallet-babe",
"pallet-im-online",
"pallet-mmr-primitives",
@@ -8608,9 +8624,9 @@
[[package]]
name = "proc-macro2"
-version = "1.0.36"
+version = "1.0.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029"
+checksum = "ec757218438d5fda206afc041538b2f6d889286160d649a86a24d37e1235afd1"
dependencies = [
"unicode-xid",
]
@@ -8684,9 +8700,9 @@
[[package]]
name = "psm"
-version = "0.1.17"
+version = "0.1.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6eca0fa5dd7c4c96e184cec588f0b1db1ee3165e678db21c09793105acb17e6f"
+checksum = "871372391786ccec00d3c5d3d6608905b3d4db263639cfe075d3b60a736d115a"
dependencies = [
"cc",
]
@@ -8704,6 +8720,7 @@
"cumulus-primitives-timestamp",
"cumulus-primitives-utility",
"derivative",
+ "fp-evm-mapping",
"fp-rpc",
"fp-self-contained",
"frame-executive",
@@ -8757,7 +8774,6 @@
"substrate-wasm-builder",
"unique-runtime-common",
"up-data-structs",
- "up-evm-mapping",
"up-rpc",
"xcm",
"xcm-builder",
@@ -8789,9 +8805,9 @@
[[package]]
name = "quote"
-version = "1.0.16"
+version = "1.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4af2ec4714533fcdf07e886f17025ace8b997b9ce51204ee69b6da831c3da57"
+checksum = "632d02bff7f874a36f33ea8bb416cd484b90cc66c1194b1a1110d067a7013f58"
dependencies = [
"proc-macro2",
]
@@ -8862,7 +8878,7 @@
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
dependencies = [
- "getrandom 0.2.5",
+ "getrandom 0.2.6",
]
[[package]]
@@ -8926,20 +8942,20 @@
[[package]]
name = "redox_syscall"
-version = "0.2.11"
+version = "0.2.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8380fe0152551244f0747b1bf41737e0f8a74f97a14ccefd1148187271634f3c"
+checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42"
dependencies = [
"bitflags",
]
[[package]]
name = "redox_users"
-version = "0.4.2"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7776223e2696f1aa4c6b0170e83212f47296a00424305117d013dfe86fb0fe55"
+checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
dependencies = [
- "getrandom 0.2.5",
+ "getrandom 0.2.6",
"redox_syscall",
"thiserror",
]
@@ -9253,7 +9269,7 @@
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
dependencies = [
- "semver 1.0.6",
+ "semver 1.0.7",
]
[[package]]
@@ -9974,7 +9990,7 @@
"linked-hash-map",
"linked_hash_set",
"log",
- "lru 0.7.3",
+ "lru 0.7.5",
"parity-scale-codec",
"parking_lot 0.12.0",
"pin-project 1.0.10",
@@ -10012,7 +10028,7 @@
"futures-timer",
"libp2p",
"log",
- "lru 0.7.3",
+ "lru 0.7.5",
"sc-network",
"sp-runtime",
"substrate-prometheus-endpoint",
@@ -10532,9 +10548,9 @@
[[package]]
name = "semver"
-version = "1.0.6"
+version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4a3381e03edd24287172047536f20cabde766e2cd3e65e6b00fb3af51c4f38d"
+checksum = "d65bd28f48be7196d222d95b9243287f48d27aca604e08497513019ff0502cc4"
dependencies = [
"serde",
]
@@ -10747,9 +10763,9 @@
[[package]]
name = "slab"
-version = "0.4.5"
+version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5"
+checksum = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32"
[[package]]
name = "slot-range-helper"
@@ -10940,7 +10956,7 @@
dependencies = [
"futures 0.3.21",
"log",
- "lru 0.7.3",
+ "lru 0.7.5",
"parity-scale-codec",
"parking_lot 0.12.0",
"sp-api",
@@ -11801,9 +11817,9 @@
[[package]]
name = "syn"
-version = "1.0.89"
+version = "1.0.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ea297be220d52398dcc07ce15a209fce436d361735ac1db700cab3b6cdfb9f54"
+checksum = "b683b2b825c8eef438b77c36a06dc262294da3d5a5813fac20da149241dcd44d"
dependencies = [
"proc-macro2",
"quote",
@@ -12094,6 +12110,20 @@
]
[[package]]
+name = "tokio-util"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0edfdeb067411dba2044da6d1cb2df793dd35add7888d73c16e3381ded401764"
+dependencies = [
+ "bytes 1.1.0",
+ "futures-core",
+ "futures-sink",
+ "pin-project-lite 0.2.8",
+ "tokio 1.17.0",
+ "tracing",
+]
+
+[[package]]
name = "toml"
version = "0.5.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -12133,9 +12163,9 @@
[[package]]
name = "tracing-core"
-version = "0.1.23"
+version = "0.1.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aa31669fa42c09c34d94d8165dd2012e8ff3c66aca50f3bb226b68f216f2706c"
+checksum = "90442985ee2f57c9e1b548ee72ae842f4a9a20e3f417cc38dbc5dc684d9bb4ee"
dependencies = [
"lazy_static",
"valuable",
@@ -12333,6 +12363,7 @@
"jsonrpc-core-client",
"jsonrpc-derive",
"pallet-common",
+ "pallet-evm",
"parity-scale-codec",
"sp-api",
"sp-blockchain",
@@ -12475,6 +12506,7 @@
"substrate-build-script-utils",
"substrate-frame-rpc-system",
"substrate-prometheus-endpoint",
+ "tokio 1.17.0",
"unique-rpc",
"unique-runtime",
"unique-runtime-common",
@@ -12542,6 +12574,7 @@
"cumulus-primitives-timestamp",
"cumulus-primitives-utility",
"derivative",
+ "fp-evm-mapping",
"fp-rpc",
"fp-self-contained",
"frame-benchmarking",
@@ -12598,7 +12631,6 @@
"substrate-wasm-builder",
"unique-runtime-common",
"up-data-structs",
- "up-evm-mapping",
"up-rpc",
"xcm",
"xcm-builder",
@@ -12613,6 +12645,7 @@
"frame-support",
"frame-system",
"pallet-common",
+ "pallet-evm",
"parity-scale-codec",
"scale-info",
"sp-consensus-aura",
@@ -12682,18 +12715,11 @@
]
[[package]]
-name = "up-evm-mapping"
-version = "0.1.0"
-dependencies = [
- "frame-support",
- "sp-core",
-]
-
-[[package]]
name = "up-rpc"
version = "0.1.0"
dependencies = [
"pallet-common",
+ "pallet-evm",
"parity-scale-codec",
"sp-api",
"sp-core",
@@ -12705,7 +12731,7 @@
[[package]]
name = "up-sponsorship"
version = "0.1.0"
-source = "git+https://github.com/UniqueNetwork/pallet-sponsoring?branch=polkadot-v0.9.18#e914a799e5ff1c18383a614ea99e87dd7f3f446e"
+source = "git+https://github.com/UniqueNetwork/pallet-sponsoring?branch=polkadot-v0.9.18#7bc842b35a53f762ee6ee89e5f5bef84a284c9f4"
dependencies = [
"impl-trait-for-tuples",
]
@@ -13313,9 +13339,9 @@
[[package]]
name = "windows-sys"
-version = "0.32.0"
+version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3df6e476185f92a12c072be4a189a0210dcdcf512a1891d6dff9edb874deadc6"
+checksum = "5acdd78cb4ba54c0045ac14f62d8f94a03d10047904ae2a40afa1e99d8f70825"
dependencies = [
"windows_aarch64_msvc",
"windows_i686_gnu",
@@ -13326,33 +13352,33 @@
[[package]]
name = "windows_aarch64_msvc"
-version = "0.32.0"
+version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5"
+checksum = "17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881d"
[[package]]
name = "windows_i686_gnu"
-version = "0.32.0"
+version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615"
+checksum = "2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688ed"
[[package]]
name = "windows_i686_msvc"
-version = "0.32.0"
+version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172"
+checksum = "9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956"
[[package]]
name = "windows_x86_64_gnu"
-version = "0.32.0"
+version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc"
+checksum = "cfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4"
[[package]]
name = "windows_x86_64_msvc"
-version = "0.32.0"
+version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316"
+checksum = "d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9"
[[package]]
name = "winreg"
client/rpc/Cargo.tomldiffbeforeafterboth--- a/client/rpc/Cargo.toml
+++ b/client/rpc/Cargo.toml
@@ -18,3 +18,4 @@
sp-core = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.18" }
sp-rpc = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.18" }
sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.18" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
client/rpc/src/lib.rsdiffbeforeafterboth--- a/client/rpc/src/lib.rs
+++ b/client/rpc/src/lib.rs
@@ -19,7 +19,7 @@
use codec::Decode;
use jsonrpc_core::{Error as RpcError, ErrorCode, Result};
use jsonrpc_derive::rpc;
-use up_data_structs::{Collection, CollectionId, CollectionStats, TokenId};
+use up_data_structs::{Collection, CollectionId, CollectionStats, CollectionLimits, TokenId};
use sp_api::{BlockId, BlockT, ProvideRuntimeApi, ApiExt};
use sp_blockchain::HeaderBackend;
use up_rpc::UniqueApi as UniqueRuntimeApi;
@@ -119,6 +119,21 @@
) -> Result<Option<Collection<AccountId>>>;
#[rpc(name = "unique_collectionStats")]
fn collection_stats(&self, at: Option<BlockHash>) -> Result<CollectionStats>;
+
+ #[rpc(name = "unique_nextSponsored")]
+ fn next_sponsored(
+ &self,
+ collection: CollectionId,
+ account: CrossAccountId,
+ token: TokenId,
+ at: Option<BlockHash>,
+ ) -> Result<Option<u64>>;
+ #[rpc(name = "unique_effectiveCollectionLimits")]
+ fn effective_collection_limits(
+ &self,
+ collection_id: CollectionId,
+ at: Option<BlockHash>,
+ ) -> Result<Option<CollectionLimits>>;
}
pub struct Unique<C, P> {
@@ -201,7 +216,7 @@
AccountId: Decode,
C: 'static + ProvideRuntimeApi<Block> + HeaderBackend<Block>,
C::Api: UniqueRuntimeApi<Block, CrossAccountId, AccountId>,
- CrossAccountId: pallet_common::account::CrossAccountId<AccountId>,
+ CrossAccountId: pallet_evm::account::CrossAccountId<AccountId>,
{
pass_method!(account_tokens(collection: CollectionId, account: CrossAccountId) -> Vec<TokenId>);
pass_method!(token_exists(collection: CollectionId, token: TokenId) -> bool);
@@ -222,4 +237,6 @@
pass_method!(last_token_id(collection: CollectionId) -> TokenId);
pass_method!(collection_by_id(collection: CollectionId) -> Option<Collection<AccountId>>);
pass_method!(collection_stats() -> CollectionStats);
+ pass_method!(next_sponsored(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Option<u64>);
+ pass_method!(effective_collection_limits(collection_id: CollectionId) -> Option<CollectionLimits>);
}
node/cli/Cargo.tomldiffbeforeafterboth--- a/node/cli/Cargo.toml
+++ b/node/cli/Cargo.toml
@@ -302,13 +302,13 @@
jsonrpc-pubsub = "18.0.0"
tokio = { version = "1.17.0", features = ["time"] }
-fc-rpc-core = { git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-fc-consensus = { git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-fc-mapping-sync = { git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-fc-rpc = { git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-fc-db = { git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-fp-rpc = { git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-pallet-ethereum = { git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
+fc-rpc-core = { git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+fc-consensus = { git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+fc-mapping-sync = { git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+fc-rpc = { git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+fc-db = { git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+fp-rpc = { git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+pallet-ethereum = { git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
unique-rpc = { default-features = false, path = "../rpc" }
node/cli/src/chain_spec.rsdiffbeforeafterboth--- a/node/cli/src/chain_spec.rs
+++ b/node/cli/src/chain_spec.rs
@@ -212,6 +212,16 @@
vec![
get_account_id_from_seed::<sr25519::Public>("Alice"),
get_account_id_from_seed::<sr25519::Public>("Bob"),
+ get_account_id_from_seed::<sr25519::Public>("Charlie"),
+ get_account_id_from_seed::<sr25519::Public>("Dave"),
+ get_account_id_from_seed::<sr25519::Public>("Eve"),
+ get_account_id_from_seed::<sr25519::Public>("Ferdie"),
+ get_account_id_from_seed::<sr25519::Public>("Alice//stash"),
+ get_account_id_from_seed::<sr25519::Public>("Bob//stash"),
+ get_account_id_from_seed::<sr25519::Public>("Charlie//stash"),
+ get_account_id_from_seed::<sr25519::Public>("Dave//stash"),
+ get_account_id_from_seed::<sr25519::Public>("Eve//stash"),
+ get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),
],
1000
)
node/rpc/Cargo.tomldiffbeforeafterboth--- a/node/rpc/Cargo.toml
+++ b/node/rpc/Cargo.toml
@@ -41,12 +41,12 @@
substrate-frame-rpc-system = { git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
tokio = { version = "0.2.25", features = ["macros", "sync"] }
-pallet-ethereum = { git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-fc-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-fc-rpc-core = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-fc-db = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-fc-mapping-sync = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
+pallet-ethereum = { git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+fc-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+fc-rpc-core = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+fc-db = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+fc-mapping-sync = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
pallet-common = { default-features = false, path = "../../pallets/common" }
unique-runtime-common = { default-features = false, path = "../../runtime/common" }
pallets/common/Cargo.tomldiffbeforeafterboth--- a/pallets/common/Cargo.toml
+++ b/pallets/common/Cargo.toml
@@ -16,11 +16,11 @@
sp-runtime = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
sp-std = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
sp-core = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
-up-evm-mapping = { default-features = false, path = '../../primitives/evm-mapping' }
+fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
up-data-structs = { default-features = false, path = '../../primitives/data-structs' }
pallet-evm-coder-substrate = { default-features = false, path = '../../pallets/evm-coder-substrate' }
evm-coder = { default-features = false, path = '../../crates/evm-coder' }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
serde = { version = "1.0.130", default-features = false }
scale-info = { version = "2.0.1", default-features = false, features = [
"derive",
@@ -33,7 +33,7 @@
"frame-system/std",
"sp-runtime/std",
"sp-std/std",
- "up-evm-mapping/std",
+ "fp-evm-mapping/std",
"up-data-structs/std",
"pallet-evm/std",
]
pallets/common/src/account.rsdiffbeforeafterboth--- a/pallets/common/src/account.rs
+++ /dev/null
@@ -1,194 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-use crate::Config;
-use codec::{Encode, EncodeLike, Decode, MaxEncodedLen};
-use sp_core::H160;
-use scale_info::{Type, TypeInfo};
-use core::cmp::Ordering;
-use serde::{Serialize, Deserialize};
-use pallet_evm::AddressMapping;
-use sp_std::vec::Vec;
-use sp_std::clone::Clone;
-pub use up_evm_mapping::EvmBackwardsAddressMapping;
-
-pub trait CrossAccountId<AccountId>:
- Encode + EncodeLike + Decode + TypeInfo + MaxEncodedLen + Clone + PartialEq + Ord + core::fmt::Debug
-// +
-// Serialize + Deserialize<'static>
-{
- fn as_sub(&self) -> &AccountId;
- fn as_eth(&self) -> &H160;
-
- fn from_sub(account: AccountId) -> Self;
- fn from_eth(account: H160) -> Self;
-
- fn conv_eq(&self, other: &Self) -> bool;
-}
-
-#[derive(Encode, Decode, Serialize, Deserialize, TypeInfo, MaxEncodedLen)]
-#[serde(rename_all = "camelCase")]
-enum BasicCrossAccountIdRepr<AccountId> {
- Substrate(AccountId),
- Ethereum(H160),
-}
-
-#[derive(PartialEq, Eq)]
-pub struct BasicCrossAccountId<T: Config> {
- /// If true - then ethereum is canonical encoding
- from_ethereum: bool,
- substrate: T::AccountId,
- ethereum: H160,
-}
-
-impl<T: Config> MaxEncodedLen for BasicCrossAccountId<T> {
- fn max_encoded_len() -> usize {
- <BasicCrossAccountIdRepr<T::AccountId>>::max_encoded_len()
- }
-}
-
-impl<T: Config> TypeInfo for BasicCrossAccountId<T> {
- type Identity = Self;
-
- fn type_info() -> Type {
- <BasicCrossAccountIdRepr<T::AccountId>>::type_info()
- }
-}
-
-impl<T: Config> core::fmt::Debug for BasicCrossAccountId<T> {
- fn fmt(&self, fmt: &mut core::fmt::Formatter) -> core::fmt::Result {
- if self.from_ethereum {
- fmt.debug_tuple("CrossAccountId::Ethereum")
- .field(&self.ethereum)
- .finish()
- } else {
- fmt.debug_tuple("CrossAccountId::Substrate")
- .field(&self.substrate)
- .finish()
- }
- }
-}
-
-impl<T: Config> PartialOrd for BasicCrossAccountId<T> {
- fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
- Some(self.substrate.cmp(&other.substrate))
- }
-}
-
-impl<T: Config> Ord for BasicCrossAccountId<T> {
- fn cmp(&self, other: &Self) -> Ordering {
- self.partial_cmp(other)
- .expect("substrate account is total ordered")
- }
-}
-
-impl<T: Config> Clone for BasicCrossAccountId<T> {
- fn clone(&self) -> Self {
- Self {
- from_ethereum: self.from_ethereum,
- substrate: self.substrate.clone(),
- ethereum: self.ethereum,
- }
- }
-}
-impl<T: Config> Encode for BasicCrossAccountId<T> {
- fn encode(&self) -> Vec<u8> {
- BasicCrossAccountIdRepr::from(self.clone()).encode()
- }
-}
-impl<T: Config> EncodeLike for BasicCrossAccountId<T> {}
-impl<T: Config> Decode for BasicCrossAccountId<T> {
- fn decode<I>(input: &mut I) -> Result<Self, codec::Error>
- where
- I: codec::Input,
- {
- Ok(BasicCrossAccountIdRepr::decode(input)?.into())
- }
-}
-impl<T> Serialize for BasicCrossAccountId<T>
-where
- T: Config,
- T::AccountId: Serialize,
-{
- fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
- where
- S: serde::Serializer,
- {
- let repr = BasicCrossAccountIdRepr::from(self.clone());
- (&repr).serialize(serializer)
- }
-}
-impl<'de, T> Deserialize<'de> for BasicCrossAccountId<T>
-where
- T: Config,
- T::AccountId: Deserialize<'de>,
-{
- fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
- where
- D: serde::Deserializer<'de>,
- {
- Ok(BasicCrossAccountIdRepr::deserialize(deserializer)?.into())
- }
-}
-impl<T: Config> CrossAccountId<T::AccountId> for BasicCrossAccountId<T> {
- fn as_sub(&self) -> &T::AccountId {
- &self.substrate
- }
- fn as_eth(&self) -> &H160 {
- &self.ethereum
- }
- fn from_sub(substrate: T::AccountId) -> Self {
- Self {
- ethereum: T::EvmBackwardsAddressMapping::from_account_id(substrate.clone()),
- substrate,
- from_ethereum: false,
- }
- }
- fn from_eth(ethereum: H160) -> Self {
- Self {
- ethereum,
- substrate: T::EvmAddressMapping::into_account_id(ethereum),
- from_ethereum: true,
- }
- }
- fn conv_eq(&self, other: &Self) -> bool {
- if self.from_ethereum == other.from_ethereum {
- self.substrate == other.substrate && self.ethereum == other.ethereum
- } else if self.from_ethereum {
- // ethereum is canonical encoding, but we need to compare derived address
- self.substrate == other.substrate
- } else {
- self.ethereum == other.ethereum
- }
- }
-}
-impl<T: Config> From<BasicCrossAccountIdRepr<T::AccountId>> for BasicCrossAccountId<T> {
- fn from(repr: BasicCrossAccountIdRepr<T::AccountId>) -> Self {
- match repr {
- BasicCrossAccountIdRepr::Substrate(s) => Self::from_sub(s),
- BasicCrossAccountIdRepr::Ethereum(e) => Self::from_eth(e),
- }
- }
-}
-impl<T: Config> From<BasicCrossAccountId<T>> for BasicCrossAccountIdRepr<T::AccountId> {
- fn from(v: BasicCrossAccountId<T>) -> Self {
- if v.from_ethereum {
- BasicCrossAccountIdRepr::Ethereum(*v.as_eth())
- } else {
- BasicCrossAccountIdRepr::Substrate(v.as_sub().clone())
- }
- }
-}
pallets/common/src/lib.rsdiffbeforeafterboth--- a/pallets/common/src/lib.rs
+++ b/pallets/common/src/lib.rs
@@ -19,7 +19,7 @@
use core::ops::{Deref, DerefMut};
use pallet_evm_coder_substrate::{SubstrateRecorder, WithRecorder};
use sp_std::vec::Vec;
-use account::CrossAccountId;
+use pallet_evm::account::CrossAccountId;
use frame_support::{
dispatch::{DispatchErrorWithPostInfo, DispatchResultWithPostInfo},
ensure, fail,
@@ -33,12 +33,11 @@
TokenId, Weight, WithdrawReasons, CollectionStats, MAX_TOKEN_OWNERSHIP, CollectionMode,
NFT_SPONSOR_TRANSFER_TIMEOUT, FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, MAX_SPONSOR_TIMEOUT, CUSTOM_DATA_LIMIT, CollectionLimits,
- CustomDataLimit, CreateCollectionData, SponsorshipState, CreateItemExData,
+ CustomDataLimit, CreateCollectionData, SponsorshipState, CreateItemExData, SponsoringRateLimit,
};
pub use pallet::*;
use sp_core::H160;
use sp_runtime::{ArithmeticError, DispatchError, DispatchResult};
-pub mod account;
#[cfg(feature = "runtime-benchmarks")]
pub mod benchmarking;
pub mod erc;
@@ -163,20 +162,17 @@
pub mod pallet {
use super::*;
use frame_support::{Blake2_128Concat, pallet_prelude::*, storage::Key};
- use account::CrossAccountId;
+ use pallet_evm::account;
use frame_support::traits::Currency;
use up_data_structs::TokenId;
use scale_info::TypeInfo;
#[pallet::config]
- pub trait Config: frame_system::Config + pallet_evm_coder_substrate::Config + TypeInfo {
+ pub trait Config:
+ frame_system::Config + pallet_evm_coder_substrate::Config + TypeInfo + account::Config
+ {
type Event: IsType<<Self as frame_system::Config>::Event> + From<Event<Self>>;
-
- type CrossAccountId: CrossAccountId<Self::AccountId>;
- type EvmAddressMapping: pallet_evm::AddressMapping<Self::AccountId>;
- type EvmBackwardsAddressMapping: up_evm_mapping::EvmBackwardsAddressMapping<Self::AccountId>;
-
type Currency: Currency<Self::AccountId>;
#[pallet::constant]
@@ -421,6 +417,39 @@
alive: created.0 - destroyed.0,
}
}
+
+ pub fn effective_collection_limits(collection: CollectionId) -> Option<CollectionLimits> {
+ let collection = <CollectionById<T>>::get(collection);
+ if collection.is_none() {
+ return None;
+ }
+
+ let collection = collection.unwrap();
+ let limits = collection.limits;
+ let effective_limits = CollectionLimits {
+ account_token_ownership_limit: Some(limits.account_token_ownership_limit()),
+ sponsored_data_size: Some(limits.sponsored_data_size()),
+ sponsored_data_rate_limit: Some(
+ limits
+ .sponsored_data_rate_limit
+ .unwrap_or(SponsoringRateLimit::SponsoringDisabled),
+ ),
+ token_limit: Some(limits.token_limit()),
+ sponsor_transfer_timeout: Some(limits.sponsor_transfer_timeout(
+ match collection.mode {
+ CollectionMode::NFT => NFT_SPONSOR_TRANSFER_TIMEOUT,
+ CollectionMode::Fungible(_) => FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
+ CollectionMode::ReFungible => REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
+ },
+ )),
+ sponsor_approve_timeout: Some(limits.sponsor_approve_timeout()),
+ owner_can_transfer: Some(limits.owner_can_transfer()),
+ owner_can_destroy: Some(limits.owner_can_destroy()),
+ transfers_enabled: Some(limits.transfers_enabled()),
+ };
+
+ Some(effective_limits)
+ }
}
impl<T: Config> Pallet<T> {
pallets/evm-coder-substrate/Cargo.tomldiffbeforeafterboth--- a/pallets/evm-coder-substrate/Cargo.toml
+++ b/pallets/evm-coder-substrate/Cargo.toml
@@ -12,8 +12,8 @@
sp-core = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
ethereum = { version = "0.12.0", default-features = false }
evm-coder = { default-features = false, path = "../../crates/evm-coder" }
-pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
+pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
frame-support = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
frame-system = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
frame-benchmarking = { default-features = false, optional = true, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
pallets/evm-contract-helpers/Cargo.tomldiffbeforeafterboth--- a/pallets/evm-contract-helpers/Cargo.toml
+++ b/pallets/evm-contract-helpers/Cargo.toml
@@ -15,7 +15,8 @@
sp-core = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
evm-coder = { default-features = false, path = '../../crates/evm-coder' }
pallet-evm-coder-substrate = { default-features = false, path = '../../pallets/evm-coder-substrate' }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
up-sponsorship = { version = "0.1.0", default-features = false, git = "https://github.com/UniqueNetwork/pallet-sponsoring", branch = 'polkadot-v0.9.18' }
log = "0.4.14"
pallets/evm-contract-helpers/src/eth.rsdiffbeforeafterboth--- a/pallets/evm-contract-helpers/src/eth.rs
+++ b/pallets/evm-contract-helpers/src/eth.rs
@@ -17,14 +17,17 @@
use core::marker::PhantomData;
use evm_coder::{abi::AbiWriter, execution::Result, generate_stubgen, solidity_interface, types::*};
use pallet_evm_coder_substrate::{SubstrateRecorder, WithRecorder};
-use pallet_evm::{ExitRevert, OnCreate, OnMethodCall, PrecompileResult, PrecompileFailure};
+use pallet_evm::{
+ ExitRevert, OnCreate, OnMethodCall, PrecompileResult, PrecompileFailure,
+ account::CrossAccountId,
+};
use sp_core::H160;
use crate::{
AllowlistEnabled, Config, Owner, Pallet, SponsorBasket, SponsoringRateLimit, SponsoringModeT,
};
use frame_support::traits::Get;
use up_sponsorship::SponsorshipHandler;
-use sp_std::{convert::TryInto, vec::Vec};
+use sp_std::vec::Vec;
struct ContractHelpers<T: Config>(SubstrateRecorder<T>);
impl<T: Config> WithRecorder<T> for ContractHelpers<T> {
@@ -177,18 +180,21 @@
}
pub struct HelpersContractSponsoring<T: Config>(PhantomData<*const T>);
-impl<T: Config> SponsorshipHandler<H160, (H160, Vec<u8>)> for HelpersContractSponsoring<T> {
- fn get_sponsor(who: &H160, call: &(H160, Vec<u8>)) -> Option<H160> {
+impl<T: Config> SponsorshipHandler<T::CrossAccountId, (H160, Vec<u8>)>
+ for HelpersContractSponsoring<T>
+{
+ fn get_sponsor(who: &T::CrossAccountId, call: &(H160, Vec<u8>)) -> Option<T::CrossAccountId> {
let mode = <Pallet<T>>::sponsoring_mode(call.0);
if mode == SponsoringModeT::Disabled {
return None;
}
- if mode == SponsoringModeT::Allowlisted && !<Pallet<T>>::allowed(call.0, *who) {
+
+ if mode == SponsoringModeT::Allowlisted && !<Pallet<T>>::allowed(call.0, *who.as_eth()) {
return None;
}
let block_number = <frame_system::Pallet<T>>::block_number() as T::BlockNumber;
- if let Some(last_tx_block) = <SponsorBasket<T>>::get(&call.0, who) {
+ if let Some(last_tx_block) = <SponsorBasket<T>>::get(&call.0, who.as_eth()) {
let limit = <SponsoringRateLimit<T>>::get(&call.0);
let timeout = last_tx_block + limit;
@@ -197,9 +203,10 @@
}
}
- <SponsorBasket<T>>::insert(&call.0, who, block_number);
+ <SponsorBasket<T>>::insert(&call.0, who.as_eth(), block_number);
- Some(call.0)
+ let sponsor = T::CrossAccountId::from_eth(call.0);
+ Some(sponsor)
}
}
pallets/evm-contract-helpers/src/lib.rsdiffbeforeafterboth--- a/pallets/evm-contract-helpers/src/lib.rs
+++ b/pallets/evm-contract-helpers/src/lib.rs
@@ -30,7 +30,9 @@
use sp_core::H160;
#[pallet::config]
- pub trait Config: frame_system::Config + pallet_evm_coder_substrate::Config {
+ pub trait Config:
+ frame_system::Config + pallet_evm_coder_substrate::Config + pallet_evm::account::Config
+ {
type ContractAddress: Get<H160>;
type DefaultSponsoringRateLimit: Get<Self::BlockNumber>;
}
pallets/evm-migration/Cargo.tomldiffbeforeafterboth--- a/pallets/evm-migration/Cargo.toml
+++ b/pallets/evm-migration/Cargo.toml
@@ -15,8 +15,8 @@
sp-std = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
sp-io = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
sp-core = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
[dependencies.codec]
default-features = false
pallets/evm-transaction-payment/Cargo.tomldiffbeforeafterboth--- a/pallets/evm-transaction-payment/Cargo.toml
+++ b/pallets/evm-transaction-payment/Cargo.toml
@@ -14,11 +14,11 @@
sp-std = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
sp-io = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
sp-core = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
up-sponsorship = { version = "0.1.0", default-features = false, git = "https://github.com/UniqueNetwork/pallet-sponsoring", branch = 'polkadot-v0.9.18' }
-up-evm-mapping = { default-features = false, path = "../../primitives/evm-mapping" }
+fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
[dependencies.codec]
default-features = false
@@ -39,5 +39,5 @@
"pallet-ethereum/std",
"fp-evm/std",
"up-sponsorship/std",
- "up-evm-mapping/std",
+ "fp-evm-mapping/std",
]
pallets/evm-transaction-payment/src/lib.rsdiffbeforeafterboth--- a/pallets/evm-transaction-payment/src/lib.rs
+++ b/pallets/evm-transaction-payment/src/lib.rs
@@ -20,12 +20,10 @@
use fp_evm::WithdrawReason;
use frame_support::traits::{Currency, IsSubType};
pub use pallet::*;
-use pallet_evm::{EVMCurrencyAdapter, EnsureAddressOrigin};
+use pallet_evm::{EVMCurrencyAdapter, EnsureAddressOrigin, account::CrossAccountId};
use sp_core::{H160, U256};
use sp_runtime::TransactionOutcome;
use up_sponsorship::SponsorshipHandler;
-use up_evm_mapping::EvmBackwardsAddressMapping;
-use pallet_evm::AddressMapping;
#[frame_support::pallet]
pub mod pallet {
@@ -35,11 +33,9 @@
use sp_std::vec::Vec;
#[pallet::config]
- pub trait Config: frame_system::Config {
- type EvmSponsorshipHandler: SponsorshipHandler<H160, (H160, Vec<u8>)>;
+ pub trait Config: frame_system::Config + pallet_evm::account::Config {
+ type EvmSponsorshipHandler: SponsorshipHandler<Self::CrossAccountId, (H160, Vec<u8>)>;
type Currency: Currency<Self::AccountId>;
- type EvmBackwardsAddressMapping: EvmBackwardsAddressMapping<Self::AccountId>;
- type EvmAddressMapping: AddressMapping<Self::AccountId>;
}
#[pallet::pallet]
@@ -60,14 +56,15 @@
}
pub struct TransactionValidityHack<T: Config>(PhantomData<*const T>);
-impl<T: Config> fp_evm::TransactionValidityHack for TransactionValidityHack<T> {
- fn who_pays_fee(origin: H160, reason: &WithdrawReason) -> Option<H160> {
+impl<T: Config> fp_evm::TransactionValidityHack<T::CrossAccountId> for TransactionValidityHack<T> {
+ fn who_pays_fee(origin: H160, reason: &WithdrawReason) -> Option<T::CrossAccountId> {
match reason {
WithdrawReason::Call { target, input } => {
// This method is only used for checking, we shouldn't touch storage in it
frame_support::storage::with_transaction(|| {
+ let origin_sub = T::CrossAccountId::from_eth(origin);
TransactionOutcome::Rollback(T::EvmSponsorshipHandler::get_sponsor(
- &origin,
+ &origin_sub,
&(*target, input.clone()),
))
})
@@ -85,33 +82,36 @@
type LiquidityInfo = Option<ChargeEvmLiquidityInfo<T>>;
fn withdraw_fee(
- who: &H160,
+ who: &T::CrossAccountId,
reason: WithdrawReason,
fee: U256,
) -> core::result::Result<Self::LiquidityInfo, pallet_evm::Error<T>> {
- let mut who_pays_fee = *who;
- if let WithdrawReason::Call { target, input } = &reason {
- who_pays_fee = T::EvmSponsorshipHandler::get_sponsor(who, &(*target, input.clone()))
- .unwrap_or(who_pays_fee);
- }
+ let who_pays_fee = if let WithdrawReason::Call { target, input } = &reason {
+ T::EvmSponsorshipHandler::get_sponsor(who, &(*target, input.clone()))
+ .unwrap_or(who.clone())
+ } else {
+ who.clone()
+ };
+
let negative_imbalance = EVMCurrencyAdapter::<<T as Config>::Currency, ()>::withdraw_fee(
&who_pays_fee,
reason,
fee,
)?;
+
Ok(negative_imbalance.map(|i| ChargeEvmLiquidityInfo {
- who: who_pays_fee,
+ who: who_pays_fee.as_eth().clone(),
negative_imbalance: i,
}))
}
fn correct_and_deposit_fee(
- who: &H160,
+ who: &T::CrossAccountId,
corrected_fee: U256,
already_withdrawn: Self::LiquidityInfo,
) {
<EVMCurrencyAdapter<<T as Config>::Currency, ()> as pallet_evm::OnChargeEVMTransaction<T>>::correct_and_deposit_fee(
- &already_withdrawn.as_ref().map(|e| e.who).unwrap_or(*who),
+ &already_withdrawn.as_ref().map(|e| T::CrossAccountId::from_eth(e.who)).unwrap_or(who.clone()),
corrected_fee,
already_withdrawn.map(|e| e.negative_imbalance),
)
@@ -142,7 +142,7 @@
<frame_system::RawOrigin<T::AccountId>>::Signed(who.clone()).into(),
)
.ok()?;
- let who = T::EvmBackwardsAddressMapping::from_account_id(who.clone());
+ let who = T::CrossAccountId::from_sub(who.clone());
// Effects from EvmSponsorshipHandler are applied in OnChargeEvmTransaction by pallet_evm::runner
// TODO: Should we implement simulation mode (test, but do not apply effects) in `up-sponsorship`?
let sponsor = frame_support::storage::with_transaction(|| {
@@ -151,8 +151,7 @@
&(*target, input.clone()),
))
})?;
- let sponsor = T::EvmAddressMapping::into_account_id(sponsor);
- Some(sponsor)
+ Some(sponsor.as_sub().clone())
}
_ => None,
}
pallets/fungible/Cargo.tomldiffbeforeafterboth--- a/pallets/fungible/Cargo.toml
+++ b/pallets/fungible/Cargo.toml
@@ -22,6 +22,7 @@
pallet-evm-coder-substrate = { default-features = false, path = '../evm-coder-substrate' }
ethereum = { version = "0.12.0", default-features = false }
frame-benchmarking = { default-features = false, optional = true, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
scale-info = { version = "2.0.1", default-features = false, features = [
"derive",
] }
@@ -39,5 +40,6 @@
"ethereum/std",
"pallet-evm-coder-substrate/std",
'frame-benchmarking/std',
+ "pallet-evm/std"
]
runtime-benchmarks = ['frame-benchmarking', 'pallet-common/runtime-benchmarks']
pallets/fungible/src/erc.rsdiffbeforeafterboth--- a/pallets/fungible/src/erc.rs
+++ b/pallets/fungible/src/erc.rs
@@ -21,7 +21,7 @@
use pallet_common::erc::{CommonEvmHandler, PrecompileResult};
use sp_core::{H160, U256};
use sp_std::vec::Vec;
-use pallet_common::account::CrossAccountId;
+use pallet_evm::account::CrossAccountId;
use pallet_evm_coder_substrate::{call, dispatch_to_evm};
use crate::{
pallets/fungible/src/lib.rsdiffbeforeafterboth--- a/pallets/fungible/src/lib.rs
+++ b/pallets/fungible/src/lib.rs
@@ -19,9 +19,8 @@
use core::ops::Deref;
use frame_support::{ensure};
use up_data_structs::{AccessMode, CollectionId, TokenId, CreateCollectionData};
-use pallet_common::{
- Error as CommonError, Event as CommonEvent, Pallet as PalletCommon, account::CrossAccountId,
-};
+use pallet_common::{Error as CommonError, Event as CommonEvent, Pallet as PalletCommon};
+use pallet_evm::account::CrossAccountId;
use pallet_evm_coder_substrate::WithRecorder;
use sp_core::H160;
use sp_runtime::{ArithmeticError, DispatchError, DispatchResult};
@@ -36,7 +35,7 @@
pub mod erc;
pub mod weights;
-pub type CreateItemData<T> = (<T as pallet_common::Config>::CrossAccountId, u128);
+pub type CreateItemData<T> = (<T as pallet_evm::account::Config>::CrossAccountId, u128);
pub(crate) type SelfWeightOf<T> = <T as Config>::WeightInfo;
#[frame_support::pallet]
pallets/nonfungible/Cargo.tomldiffbeforeafterboth--- a/pallets/nonfungible/Cargo.toml
+++ b/pallets/nonfungible/Cargo.toml
@@ -16,6 +16,7 @@
sp-runtime = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
sp-std = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
sp-core = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
pallet-common = { default-features = false, path = '../common' }
up-data-structs = { default-features = false, path = '../../primitives/data-structs' }
evm-coder = { default-features = false, path = '../../crates/evm-coder' }
@@ -39,6 +40,7 @@
"ethereum/std",
"pallet-evm-coder-substrate/std",
'frame-benchmarking/std',
+ "pallet-evm/std"
]
runtime-benchmarks = [
'frame-benchmarking',
pallets/nonfungible/src/erc.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/erc.rs
+++ b/pallets/nonfungible/src/erc.rs
@@ -26,9 +26,9 @@
use sp_core::{H160, U256};
use sp_std::{vec::Vec, vec};
use pallet_common::{
- account::CrossAccountId,
erc::{CommonEvmHandler, PrecompileResult},
};
+use pallet_evm::account::CrossAccountId;
use pallet_evm_coder_substrate::call;
use crate::{
pallets/nonfungible/src/lib.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/lib.rs
+++ b/pallets/nonfungible/src/lib.rs
@@ -21,9 +21,8 @@
use up_data_structs::{
AccessMode, CollectionId, CustomDataLimit, TokenId, CreateCollectionData, CreateNftExData,
};
-use pallet_common::{
- Error as CommonError, Pallet as PalletCommon, Event as CommonEvent, account::CrossAccountId,
-};
+use pallet_common::{Error as CommonError, Pallet as PalletCommon, Event as CommonEvent};
+use pallet_evm::account::CrossAccountId;
use pallet_evm_coder_substrate::{SubstrateRecorder, WithRecorder};
use sp_core::H160;
use sp_runtime::{ArithmeticError, DispatchError, DispatchResult};
@@ -40,7 +39,7 @@
pub mod erc;
pub mod weights;
-pub type CreateItemData<T> = CreateNftExData<<T as pallet_common::Config>::CrossAccountId>;
+pub type CreateItemData<T> = CreateNftExData<<T as pallet_evm::account::Config>::CrossAccountId>;
pub(crate) type SelfWeightOf<T> = <T as Config>::WeightInfo;
#[derive(Encode, Decode, TypeInfo, MaxEncodedLen)]
pallets/refungible/Cargo.tomldiffbeforeafterboth--- a/pallets/refungible/Cargo.toml
+++ b/pallets/refungible/Cargo.toml
@@ -16,6 +16,7 @@
sp-runtime = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
sp-std = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
sp-core = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
pallet-common = { default-features = false, path = '../common' }
up-data-structs = { default-features = false, path = '../../primitives/data-structs' }
frame-benchmarking = { default-features = false, optional = true, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
@@ -33,6 +34,7 @@
"up-data-structs/std",
"pallet-common/std",
'frame-benchmarking/std',
+ "pallet-evm/std",
]
runtime-benchmarks = [
'frame-benchmarking',
pallets/refungible/src/lib.rsdiffbeforeafterboth--- a/pallets/refungible/src/lib.rs
+++ b/pallets/refungible/src/lib.rs
@@ -21,9 +21,8 @@
AccessMode, CollectionId, CustomDataLimit, MAX_REFUNGIBLE_PIECES, TokenId,
CreateCollectionData, CreateRefungibleExData,
};
-use pallet_common::{
- Error as CommonError, Event as CommonEvent, Pallet as PalletCommon, account::CrossAccountId,
-};
+use pallet_common::{Error as CommonError, Event as CommonEvent, Pallet as PalletCommon};
+use pallet_evm::account::CrossAccountId;
use sp_runtime::{ArithmeticError, DispatchError, DispatchResult};
use sp_std::{vec::Vec, vec, collections::btree_map::BTreeMap};
use core::ops::Deref;
pallets/unique/Cargo.tomldiffbeforeafterboth--- a/pallets/unique/Cargo.toml
+++ b/pallets/unique/Cargo.toml
@@ -34,7 +34,7 @@
'fp-evm/std',
'up-data-structs/std',
'up-sponsorship/std',
- 'up-evm-mapping/std',
+ 'fp-evm-mapping/std',
'sp-std/std',
'sp-api/std',
'sp-runtime/std',
@@ -132,16 +132,16 @@
sp-api = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.18" }
up-sponsorship = { version = "0.1.0", default-features = false, git = "https://github.com/UniqueNetwork/pallet-sponsoring", branch = 'polkadot-v0.9.18' }
-up-evm-mapping = { default-features = false, path = "../../primitives/evm-mapping" }
+fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
evm-coder = { default-features = false, path = "../../crates/evm-coder" }
pallet-evm-coder-substrate = { default-features = false, path = "../../pallets/evm-coder-substrate" }
primitive-types = { version = "0.11.1", default-features = false, features = [
"serde_no_std",
] }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
hex-literal = "0.3.3"
pallet-common = { default-features = false, path = "../common" }
pallets/unique/src/eth/sponsoring.rsdiffbeforeafterboth--- a/pallets/unique/src/eth/sponsoring.rs
+++ b/pallets/unique/src/eth/sponsoring.rs
@@ -24,26 +24,24 @@
use up_sponsorship::SponsorshipHandler;
use core::marker::PhantomData;
use core::convert::TryInto;
-use up_data_structs::{TokenId, CreateItemData, CreateNftData};
-use up_evm_mapping::EvmBackwardsAddressMapping;
-use pallet_common::account::CrossAccountId;
+use pallet_evm::account::CrossAccountId;
use pallet_nonfungible::erc::{
UniqueNFTCall, ERC721UniqueExtensionsCall, ERC721MintableCall, ERC721Call,
};
use pallet_fungible::erc::{UniqueFungibleCall, ERC20Call};
+use up_data_structs::{TokenId, CreateItemData, CreateNftData};
pub struct UniqueEthSponsorshipHandler<T: Config>(PhantomData<*const T>);
-impl<T: Config> SponsorshipHandler<H160, (H160, Vec<u8>)> for UniqueEthSponsorshipHandler<T> {
- fn get_sponsor(who: &H160, call: &(H160, Vec<u8>)) -> Option<H160> {
+impl<T: Config> SponsorshipHandler<T::CrossAccountId, (H160, Vec<u8>)>
+ for UniqueEthSponsorshipHandler<T>
+{
+ fn get_sponsor(who: &T::CrossAccountId, call: &(H160, Vec<u8>)) -> Option<T::CrossAccountId> {
let collection_id = map_eth_to_id(&call.0)?;
let collection = <CollectionHandle<T>>::new(collection_id)?;
let sponsor = collection.sponsorship.sponsor()?.clone();
- let sponsor =
- <T as pallet_common::Config>::EvmBackwardsAddressMapping::from_account_id(sponsor);
- let who = T::CrossAccountId::from_eth(*who);
let (method_id, mut reader) = AbiReader::new_call(&call.1).ok()?;
- match &collection.mode {
+ Some(T::CrossAccountId::from_sub(match &collection.mode {
crate::CollectionMode::NFT => {
let call = <UniqueNFTCall<T>>::parse(method_id, &mut reader).ok()??;
match call {
@@ -83,7 +81,7 @@
#[allow(clippy::single_match)]
match call {
UniqueFungibleCall::ERC20(ERC20Call::Transfer { .. }) => {
- withdraw_transfer::<T>(&collection, &who, &TokenId::default())
+ withdraw_transfer::<T>(&collection, who, &TokenId::default())
.map(|()| sponsor)
}
UniqueFungibleCall::ERC20(ERC20Call::TransferFrom { from, .. }) => {
@@ -99,6 +97,6 @@
}
}
_ => None,
- }
+ }?))
}
}
pallets/unique/src/lib.rsdiffbeforeafterboth--- a/pallets/unique/src/lib.rs
+++ b/pallets/unique/src/lib.rs
@@ -53,10 +53,8 @@
CollectionMode, TokenId, SchemaVersion, SponsorshipState, MetaUpdatePermission,
CreateCollectionData, CustomDataLimit, CreateItemExData,
};
-use pallet_common::{
- account::CrossAccountId, CollectionHandle, Pallet as PalletCommon, Error as CommonError,
- CommonWeightInfo,
-};
+use pallet_common::{CollectionHandle, Pallet as PalletCommon, Error as CommonError, CommonWeightInfo};
+use pallet_evm::account::CrossAccountId;
use pallet_refungible::{Pallet as PalletRefungible, RefungibleHandle};
use pallet_fungible::{Pallet as PalletFungible, FungibleHandle};
use pallet_nonfungible::{Pallet as PalletNonfungible, NonfungibleHandle};
@@ -69,7 +67,7 @@
mod eth;
mod sponsorship;
-pub use sponsorship::UniqueSponsorshipHandler;
+pub use sponsorship::{UniqueSponsorshipHandler, UniqueSponsorshipPredict};
pub use eth::sponsoring::UniqueEthSponsorshipHandler;
pub use eth::UniqueErcSupport;
@@ -84,6 +82,12 @@
pub mod weights;
use weights::WeightInfo;
+pub trait SponsorshipPredict<T: Config> {
+ fn predict(collection: CollectionId, account: T::CrossAccountId, token: TokenId) -> Option<u64>
+ where
+ u64: From<<T as frame_system::Config>::BlockNumber>;
+}
+
decl_error! {
/// Error for non-fungible-token module.
pub enum Error for Module<T: Config> {
@@ -116,7 +120,7 @@
pub enum Event<T>
where
<T as frame_system::Config>::AccountId,
- <T as pallet_common::Config>::CrossAccountId,
+ <T as pallet_evm::account::Config>::CrossAccountId,
{
/// Collection sponsor was removed
///
pallets/unique/src/mock.rsdiffbeforeafterboth--- a/pallets/unique/src/mock.rs
+++ b/pallets/unique/src/mock.rs
@@ -25,8 +25,8 @@
};
use pallet_transaction_payment::{CurrencyAdapter};
use frame_system as system;
-use pallet_evm::{AddressMapping, runner::stack::MaybeMirroredLog};
-use pallet_common::account::{EvmBackwardsAddressMapping, CrossAccountId};
+use pallet_evm::{AddressMapping, runner::stack::MaybeMirroredLog, account::CrossAccountId};
+use fp_evm_mapping::EvmBackwardsAddressMapping;
use codec::{Encode, Decode, MaxEncodedLen};
use scale_info::TypeInfo;
use up_data_structs::ConstU32;
@@ -191,15 +191,17 @@
impl pallet_common::Config for Test {
type Event = ();
- type EvmBackwardsAddressMapping = TestEvmBackwardsAddressMapping;
- type EvmAddressMapping = TestEvmAddressMapping;
- type CrossAccountId = TestCrossAccountId;
-
type Currency = Balances;
type CollectionCreationPrice = CollectionCreationPrice;
type TreasuryAccountId = TreasuryAccountId;
}
+impl pallet_evm::account::Config for Test {
+ type CrossAccountId = TestCrossAccountId;
+ type EvmAddressMapping = TestEvmAddressMapping;
+ type EvmBackwardsAddressMapping = TestEvmBackwardsAddressMapping;
+}
+
impl pallet_fungible::Config for Test {
type WeightInfo = ();
}
pallets/unique/src/sponsorship.rsdiffbeforeafterboth--- a/pallets/unique/src/sponsorship.rs
+++ b/pallets/unique/src/sponsorship.rs
@@ -29,8 +29,9 @@
CollectionId, FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, MetaUpdatePermission,
NFT_SPONSOR_TRANSFER_TIMEOUT, REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, TokenId,
};
+use sp_runtime::traits::Saturating;
use pallet_common::{CollectionHandle};
-use pallet_common::account::CrossAccountId;
+use pallet_evm::account::CrossAccountId;
pub fn withdraw_transfer<T: Config>(
collection: &CollectionHandle<T>,
@@ -301,3 +302,65 @@
}
}
}
+
+use crate::SponsorshipPredict;
+use up_data_structs::SponsorshipState;
+pub struct UniqueSponsorshipPredict<T>(PhantomData<T>);
+
+impl<T> SponsorshipPredict<T> for UniqueSponsorshipPredict<T>
+where
+ T: Config,
+{
+ fn predict(collection_id: CollectionId, who: T::CrossAccountId, token: TokenId) -> Option<u64>
+ where
+ u64: From<<T as frame_system::Config>::BlockNumber>,
+ {
+ let collection = <CollectionHandle<T>>::try_get(collection_id).ok()?;
+ let _ = collection.sponsorship.sponsor()?;
+
+ // sponsor timeout
+ let block_number = <frame_system::Pallet<T>>::block_number() as T::BlockNumber;
+ let limit = collection
+ .limits
+ .sponsor_transfer_timeout(match collection.mode {
+ CollectionMode::NFT => NFT_SPONSOR_TRANSFER_TIMEOUT,
+ CollectionMode::Fungible(_) => FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
+ CollectionMode::ReFungible => REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
+ });
+
+ let last_tx_block = match collection.mode {
+ CollectionMode::NFT => <NftTransferBasket<T>>::get(collection.id, token),
+ CollectionMode::Fungible(_) => {
+ <FungibleTransferBasket<T>>::get(collection.id, who.as_sub())
+ }
+ CollectionMode::ReFungible => {
+ <ReFungibleTransferBasket<T>>::get((collection.id, token, who.as_sub()))
+ }
+ };
+
+ if let Some(last_tx_block) = last_tx_block {
+ return Some(
+ last_tx_block
+ .saturating_add(limit.into())
+ .saturating_sub(block_number)
+ .into(),
+ );
+ }
+
+ let token_exists = match collection.mode {
+ CollectionMode::NFT => {
+ <pallet_nonfungible::TokenData<T>>::contains_key((collection.id, token))
+ }
+ CollectionMode::Fungible(_) => true,
+ CollectionMode::ReFungible => {
+ <pallet_refungible::TotalSupply<T>>::contains_key((collection.id, token))
+ }
+ };
+
+ if token_exists {
+ Some(0)
+ } else {
+ None
+ }
+ }
+}
pallets/unique/src/tests.rsdiffbeforeafterboth--- a/pallets/unique/src/tests.rs
+++ b/pallets/unique/src/tests.rs
@@ -18,6 +18,7 @@
use super::*;
use crate::mock::*;
use crate::{AccessMode, CollectionMode};
+use sp_runtime::AccountId32;
use up_data_structs::{
COLLECTION_NUMBER_LIMIT, CollectionId, CreateItemData, CreateFungibleData, CreateNftData,
CreateReFungibleData, MAX_DECIMAL_POINTS, COLLECTION_ADMINS_LIMIT, MetaUpdatePermission,
@@ -2854,3 +2855,59 @@
);
});
}
+
+#[test]
+fn collection_sponsoring() {
+ new_test_ext().execute_with(|| {
+ // default_limits();
+ let user1 = 1_u64;
+ let user2 = 777_u64;
+ let origin1 = Origin::signed(user1);
+ let origin2 = Origin::signed(user2);
+ let account2 = account(user2);
+
+ let collection_id =
+ create_test_collection_for_owner(&CollectionMode::NFT, user1, CollectionId(1));
+ assert_ok!(TemplateModule::set_collection_sponsor(
+ origin1.clone(),
+ collection_id,
+ user1
+ ));
+ assert_ok!(TemplateModule::confirm_sponsorship(
+ origin1.clone(),
+ collection_id
+ ));
+
+ // Expect error while have no permissions
+ assert!(TemplateModule::create_item(
+ origin2.clone(),
+ collection_id,
+ account2.clone(),
+ default_nft_data().into()
+ )
+ .is_err());
+
+ assert_ok!(TemplateModule::set_public_access_mode(
+ origin1.clone(),
+ collection_id,
+ AccessMode::AllowList
+ ));
+ assert_ok!(TemplateModule::add_to_allow_list(
+ origin1.clone(),
+ collection_id,
+ account2.clone()
+ ));
+ assert_ok!(TemplateModule::set_mint_permission(
+ origin1.clone(),
+ collection_id,
+ true
+ ));
+
+ assert_ok!(TemplateModule::create_item(
+ origin2,
+ collection_id,
+ account2,
+ default_nft_data().into()
+ ));
+ });
+}
primitives/evm-mapping/Cargo.tomldiffbeforeafterboth--- a/primitives/evm-mapping/Cargo.toml
+++ /dev/null
@@ -1,13 +0,0 @@
-[package]
-name = "up-evm-mapping"
-version = "0.1.0"
-license = "GPLv3"
-edition = "2021"
-
-[dependencies]
-sp-core = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
-frame-support = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
-
-[features]
-default = ["std"]
-std = ["sp-core/std", "frame-support/std"]
primitives/evm-mapping/src/lib.rsdiffbeforeafterboth--- a/primitives/evm-mapping/src/lib.rs
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-#![cfg_attr(not(feature = "std"), no_std)]
-
-use frame_support::sp_runtime::AccountId32;
-use sp_core::H160;
-
-/// Transforms substrate addresses to ethereum (Reverse of `EvmAddressMapping`)
-/// pallet_evm doesn't have this, as it only checks if eth address
-/// is owned by substrate via `EnsureAddressOrigin` trait
-///
-/// This trait implementations shouldn't conflict with used `EnsureAddressOrigin`
-pub trait EvmBackwardsAddressMapping<AccountId> {
- fn from_account_id(account_id: AccountId) -> H160;
-}
-
-/// Should have same mapping as EnsureAddressTruncated
-pub struct MapBackwardsAddressTruncated;
-impl EvmBackwardsAddressMapping<AccountId32> for MapBackwardsAddressTruncated {
- fn from_account_id(account_id: AccountId32) -> H160 {
- let mut out = [0; 20];
- out.copy_from_slice(&(account_id.as_ref() as &[u8])[0..20]);
- H160(out)
- }
-}
primitives/rpc/Cargo.tomldiffbeforeafterboth--- a/primitives/rpc/Cargo.toml
+++ b/primitives/rpc/Cargo.toml
@@ -14,6 +14,7 @@
sp-std = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
sp-api = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
sp-runtime = { default-features = false, git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.18' }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
[features]
default = ["std"]
primitives/rpc/src/lib.rsdiffbeforeafterboth--- a/primitives/rpc/src/lib.rs
+++ b/primitives/rpc/src/lib.rs
@@ -16,7 +16,7 @@
#![cfg_attr(not(feature = "std"), no_std)]
-use up_data_structs::{CollectionId, TokenId, Collection, CollectionStats};
+use up_data_structs::{CollectionId, TokenId, Collection, CollectionStats, CollectionLimits};
use sp_std::vec::Vec;
use sp_core::H160;
use codec::Decode;
@@ -28,7 +28,7 @@
#[api_version(2)]
pub trait UniqueApi<CrossAccountId, AccountId> where
AccountId: Decode,
- CrossAccountId: pallet_common::account::CrossAccountId<AccountId>,
+ CrossAccountId: pallet_evm::account::CrossAccountId<AccountId>,
{
#[changed_in(2)]
fn token_owner(collection: CollectionId, token: TokenId) -> Result<CrossAccountId>;
@@ -59,5 +59,7 @@
fn last_token_id(collection: CollectionId) -> Result<TokenId>;
fn collection_by_id(collection: CollectionId) -> Result<Option<Collection<AccountId>>>;
fn collection_stats() -> Result<CollectionStats>;
+ fn next_sponsored(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Result<Option<u64>>;
+ fn effective_collection_limits(collection_id: CollectionId) -> Result<Option<CollectionLimits>>;
}
}
runtime/common/Cargo.tomldiffbeforeafterboth--- a/runtime/common/Cargo.toml
+++ b/runtime/common/Cargo.toml
@@ -69,4 +69,7 @@
[dependencies.fp-rpc]
default-features = false
git = "https://github.com/uniquenetwork/frontier.git"
-branch = "unique-polkadot-v0.9.18"
+branch = "unique-polkadot-v0.9.18-2"
+
+[dependencies]
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
\ No newline at end of file
runtime/common/src/runtime_apis.rsdiffbeforeafterboth--- a/runtime/common/src/runtime_apis.rs
+++ b/runtime/common/src/runtime_apis.rs
@@ -69,6 +69,17 @@
fn collection_stats() -> Result<CollectionStats, DispatchError> {
Ok(<pallet_common::Pallet<Runtime>>::collection_stats())
}
+ fn next_sponsored(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Result<Option<u64>, DispatchError> {
+ Ok(<pallet_unique::UniqueSponsorshipPredict<Runtime> as
+ pallet_unique::SponsorshipPredict<Runtime>>::predict(
+ collection,
+ account,
+ token))
+ }
+
+ fn effective_collection_limits(collection: CollectionId) -> Result<Option<CollectionLimits>, DispatchError> {
+ Ok(<pallet_common::Pallet<Runtime>>::effective_collection_limits(collection))
+ }
}
impl sp_api::Core<Block> for Runtime {
@@ -181,7 +192,7 @@
};
<Runtime as pallet_evm::Config>::Runner::call(
- from,
+ CrossAccountId::from_eth(from),
to,
data,
value,
@@ -215,7 +226,7 @@
};
<Runtime as pallet_evm::Config>::Runner::create(
- from,
+ CrossAccountId::from_eth(from),
data,
value,
gas_limit.low_u64(),
runtime/common/src/types.rsdiffbeforeafterboth--- a/runtime/common/src/types.rs
+++ b/runtime/common/src/types.rs
@@ -42,7 +42,7 @@
pub use sp_consensus_aura::sr25519::AuthorityId as AuraId;
pub trait RuntimeInstance {
- type CrossAccountId: pallet_common::account::CrossAccountId<sp_runtime::AccountId32>
+ type CrossAccountId: pallet_evm::account::CrossAccountId<sp_runtime::AccountId32>
+ Send
+ Sync
+ 'static;
runtime/opal/Cargo.tomldiffbeforeafterboth--- a/runtime/opal/Cargo.toml
+++ b/runtime/opal/Cargo.toml
@@ -72,7 +72,7 @@
'pallet-base-fee/std',
'fp-rpc/std',
'up-rpc/std',
- 'up-evm-mapping/std',
+ 'fp-evm-mapping/std',
'fp-self-contained/std',
'parachain-info/std',
'serde',
@@ -382,7 +382,7 @@
derivative = "2.2.0"
pallet-unique = { path = '../../pallets/unique', default-features = false }
up-rpc = { path = "../../primitives/rpc", default-features = false }
-up-evm-mapping = { path = "../../primitives/evm-mapping", default-features = false }
+fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
pallet-inflation = { path = '../../pallets/inflation', default-features = false }
up-data-structs = { path = '../../primitives/data-structs', default-features = false }
pallet-common = { default-features = false, path = "../../pallets/common" }
@@ -396,11 +396,11 @@
pallet-evm-contract-helpers = { path = '../../pallets/evm-contract-helpers', default-features = false }
pallet-evm-transaction-payment = { path = '../../pallets/evm-transaction-payment', default-features = false }
pallet-evm-coder-substrate = { default-features = false, path = "../../pallets/evm-coder-substrate" }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-pallet-base-fee = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+pallet-base-fee = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
################################################################################
# Build Dependencies
runtime/opal/src/lib.rsdiffbeforeafterboth--- a/runtime/opal/src/lib.rs
+++ b/runtime/opal/src/lib.rs
@@ -48,7 +48,9 @@
};
// A few exports that help ease life for downstream crates.
pub use pallet_balances::Call as BalancesCall;
-pub use pallet_evm::{EnsureAddressTruncated, HashedAddressMapping, Runner};
+pub use pallet_evm::{
+ EnsureAddressTruncated, HashedAddressMapping, Runner, account::CrossAccountId as _,
+};
pub use frame_support::{
construct_runtime, match_type,
dispatch::DispatchResult,
@@ -117,11 +119,10 @@
pub const RUNTIME_NAME: &str = "opal";
pub const TOKEN_SYMBOL: &str = "OPL";
-type CrossAccountId = pallet_common::account::BasicCrossAccountId<Runtime>;
+type CrossAccountId = pallet_evm::account::BasicCrossAccountId<Runtime>;
impl RuntimeInstance for Runtime {
type CrossAccountId = self::CrossAccountId;
-
type TransactionConverter = self::TransactionConverter;
fn get_transaction_converter() -> TransactionConverter {
@@ -129,6 +130,22 @@
}
}
+/// The type for looking up accounts. We don't expect more than 4 billion of them, but you
+/// never know...
+pub type AccountIndex = u32;
+
+/// Balance of an account.
+pub type Balance = u128;
+
+/// Index of a transaction in the chain.
+pub type Index = u32;
+
+/// A hash of some data used by the chain.
+pub type Hash = sp_core::H256;
+
+/// Digest item type.
+pub type DigestItem = generic::DigestItem;
+
/// Opaque types. These are used by the CLI to instantiate machinery that don't need to know
/// the specifics of the runtime. They can then be made to be agnostic over specific formats
/// of data like extrinsics, allowing for them to continue syncing the network through upgrades
@@ -152,7 +169,7 @@
spec_name: create_runtime_str!(RUNTIME_NAME),
impl_name: create_runtime_str!(RUNTIME_NAME),
authoring_version: 1,
- spec_version: 918001,
+ spec_version: 918010,
impl_version: 0,
apis: RUNTIME_API_VERSIONS,
transaction_version: 1,
@@ -258,6 +275,12 @@
}
}
+impl pallet_evm::account::Config for Runtime {
+ type CrossAccountId = pallet_evm::account::BasicCrossAccountId<Self>;
+ type EvmAddressMapping = pallet_evm::HashedAddressMapping<Self::Hashing>;
+ type EvmBackwardsAddressMapping = fp_evm_mapping::MapBackwardsAddressTruncated;
+}
+
impl pallet_evm::Config for Runtime {
type BlockGasLimit = BlockGasLimit;
type FeeCalculator = FixedFee;
@@ -845,10 +868,6 @@
impl pallet_common::Config for Runtime {
type Event = Event;
- type EvmBackwardsAddressMapping = up_evm_mapping::MapBackwardsAddressTruncated;
- type EvmAddressMapping = HashedAddressMapping<Self::Hashing>;
- type CrossAccountId = pallet_common::account::BasicCrossAccountId<Self>;
-
type Currency = Balances;
type CollectionCreationPrice = CollectionCreationPrice;
type TreasuryAccountId = TreasuryAccountId;
@@ -912,8 +931,6 @@
impl pallet_evm_transaction_payment::Config for Runtime {
type EvmSponsorshipHandler = EvmSponsorshipHandler;
type Currency = Balances;
- type EvmAddressMapping = HashedAddressMapping<Self::Hashing>;
- type EvmBackwardsAddressMapping = up_evm_mapping::MapBackwardsAddressTruncated;
}
impl pallet_charge_transaction::Config for Runtime {
runtime/quartz/Cargo.tomldiffbeforeafterboth--- a/runtime/quartz/Cargo.toml
+++ b/runtime/quartz/Cargo.toml
@@ -72,7 +72,7 @@
'pallet-base-fee/std',
'fp-rpc/std',
'up-rpc/std',
- 'up-evm-mapping/std',
+ 'fp-evm-mapping/std',
'fp-self-contained/std',
'parachain-info/std',
'serde',
@@ -382,7 +382,7 @@
derivative = "2.2.0"
pallet-unique = { path = '../../pallets/unique', default-features = false }
up-rpc = { path = "../../primitives/rpc", default-features = false }
-up-evm-mapping = { path = "../../primitives/evm-mapping", default-features = false }
+fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
pallet-inflation = { path = '../../pallets/inflation', default-features = false }
up-data-structs = { path = '../../primitives/data-structs', default-features = false }
pallet-common = { default-features = false, path = "../../pallets/common" }
@@ -396,11 +396,11 @@
pallet-evm-contract-helpers = { path = '../../pallets/evm-contract-helpers', default-features = false }
pallet-evm-transaction-payment = { path = '../../pallets/evm-transaction-payment', default-features = false }
pallet-evm-coder-substrate = { default-features = false, path = "../../pallets/evm-coder-substrate" }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-pallet-base-fee = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+pallet-base-fee = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
################################################################################
# Build Dependencies
runtime/quartz/src/lib.rsdiffbeforeafterboth--- a/runtime/quartz/src/lib.rs
+++ b/runtime/quartz/src/lib.rs
@@ -48,7 +48,9 @@
};
// A few exports that help ease life for downstream crates.
pub use pallet_balances::Call as BalancesCall;
-pub use pallet_evm::{EnsureAddressTruncated, HashedAddressMapping, Runner};
+pub use pallet_evm::{
+ EnsureAddressTruncated, HashedAddressMapping, Runner, account::CrossAccountId as _,
+};
pub use frame_support::{
construct_runtime, match_type,
dispatch::DispatchResult,
@@ -117,7 +119,7 @@
pub const RUNTIME_NAME: &str = "quartz";
pub const TOKEN_SYMBOL: &str = "QTZ";
-type CrossAccountId = pallet_common::account::BasicCrossAccountId<Runtime>;
+type CrossAccountId = pallet_evm::account::BasicCrossAccountId<Runtime>;
impl RuntimeInstance for Runtime {
type CrossAccountId = self::CrossAccountId;
@@ -152,7 +154,7 @@
spec_name: create_runtime_str!(RUNTIME_NAME),
impl_name: create_runtime_str!(RUNTIME_NAME),
authoring_version: 1,
- spec_version: 918001,
+ spec_version: 918010,
impl_version: 0,
apis: RUNTIME_API_VERSIONS,
transaction_version: 1,
@@ -845,15 +847,18 @@
impl pallet_common::Config for Runtime {
type Event = Event;
- type EvmBackwardsAddressMapping = up_evm_mapping::MapBackwardsAddressTruncated;
- type EvmAddressMapping = HashedAddressMapping<Self::Hashing>;
- type CrossAccountId = pallet_common::account::BasicCrossAccountId<Self>;
type Currency = Balances;
type CollectionCreationPrice = CollectionCreationPrice;
type TreasuryAccountId = TreasuryAccountId;
}
+impl pallet_evm::account::Config for Runtime {
+ type CrossAccountId = pallet_evm::account::BasicCrossAccountId<Self>;
+ type EvmAddressMapping = HashedAddressMapping<Self::Hashing>;
+ type EvmBackwardsAddressMapping = fp_evm_mapping::MapBackwardsAddressTruncated;
+}
+
impl pallet_fungible::Config for Runtime {
type WeightInfo = pallet_fungible::weights::SubstrateWeight<Self>;
}
@@ -912,8 +917,6 @@
impl pallet_evm_transaction_payment::Config for Runtime {
type EvmSponsorshipHandler = EvmSponsorshipHandler;
type Currency = Balances;
- type EvmAddressMapping = HashedAddressMapping<Self::Hashing>;
- type EvmBackwardsAddressMapping = up_evm_mapping::MapBackwardsAddressTruncated;
}
impl pallet_charge_transaction::Config for Runtime {
runtime/unique/Cargo.tomldiffbeforeafterboth--- a/runtime/unique/Cargo.toml
+++ b/runtime/unique/Cargo.toml
@@ -72,7 +72,7 @@
'pallet-base-fee/std',
'fp-rpc/std',
'up-rpc/std',
- 'up-evm-mapping/std',
+ 'fp-evm-mapping/std',
'fp-self-contained/std',
'parachain-info/std',
'serde',
@@ -382,7 +382,6 @@
derivative = "2.2.0"
pallet-unique = { path = '../../pallets/unique', default-features = false }
up-rpc = { path = "../../primitives/rpc", default-features = false }
-up-evm-mapping = { path = "../../primitives/evm-mapping", default-features = false }
pallet-inflation = { path = '../../pallets/inflation', default-features = false }
up-data-structs = { path = '../../primitives/data-structs', default-features = false }
pallet-common = { default-features = false, path = "../../pallets/common" }
@@ -396,11 +395,12 @@
pallet-evm-contract-helpers = { path = '../../pallets/evm-contract-helpers', default-features = false }
pallet-evm-transaction-payment = { path = '../../pallets/evm-transaction-payment', default-features = false }
pallet-evm-coder-substrate = { default-features = false, path = "../../pallets/evm-coder-substrate" }
-pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-pallet-base-fee = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
-fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18" }
+pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+pallet-base-fee = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
+fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier.git", branch = "unique-polkadot-v0.9.18-2" }
################################################################################
# Build Dependencies
runtime/unique/src/lib.rsdiffbeforeafterboth1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617//! The Substrate Node Template runtime. This can be compiled with `#[no_std]`, ready for Wasm.1819#![cfg_attr(not(feature = "std"), no_std)]20// `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256.21#![recursion_limit = "1024"]22#![allow(clippy::from_over_into, clippy::identity_op)]23#![allow(clippy::fn_to_numeric_cast_with_truncation)]24// Make the WASM binary available.25#[cfg(feature = "std")]26include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs"));2728use sp_api::impl_runtime_apis;29use sp_core::{crypto::KeyTypeId, OpaqueMetadata, H256, U256, H160};30use sp_runtime::DispatchError;31// #[cfg(any(feature = "std", test))]32// pub use sp_runtime::BuildStorage;3334use sp_runtime::{35 Permill, Perbill, Percent, create_runtime_str, generic, impl_opaque_keys,36 traits::{AccountIdLookup, BlakeTwo256, Block as BlockT, AccountIdConversion, Zero},37 transaction_validity::{TransactionSource, TransactionValidity},38 ApplyExtrinsicResult, RuntimeAppPublic,39};4041use sp_std::prelude::*;4243#[cfg(feature = "std")]44use sp_version::NativeVersion;45use sp_version::RuntimeVersion;46pub use pallet_transaction_payment::{47 Multiplier, TargetedFeeAdjustment, FeeDetails, RuntimeDispatchInfo,48};49// A few exports that help ease life for downstream crates.50pub use pallet_balances::Call as BalancesCall;51pub use pallet_evm::{EnsureAddressTruncated, HashedAddressMapping, Runner};52pub use frame_support::{53 construct_runtime, match_type,54 dispatch::DispatchResult,55 PalletId, parameter_types, StorageValue, ConsensusEngineId,56 traits::{57 tokens::currency::Currency as CurrencyT, OnUnbalanced as OnUnbalancedT, Everything,58 Currency, ExistenceRequirement, Get, IsInVec, KeyOwnerProofSystem, LockIdentifier,59 OnUnbalanced, Randomness, FindAuthor,60 },61 weights::{62 constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight, WEIGHT_PER_SECOND},63 DispatchClass, DispatchInfo, GetDispatchInfo, IdentityFee, Pays, PostDispatchInfo, Weight,64 WeightToFeePolynomial, WeightToFeeCoefficient, WeightToFeeCoefficients,65 },66};67use up_data_structs::*;68// use pallet_contracts::weights::WeightInfo;69// #[cfg(any(feature = "std", test))]70use frame_system::{71 self as frame_system, EnsureRoot, EnsureSigned,72 limits::{BlockWeights, BlockLength},73};74use sp_arithmetic::{75 traits::{BaseArithmetic, Unsigned},76};77use smallvec::smallvec;78use codec::{Encode, Decode};79use pallet_evm::{Account as EVMAccount, FeeCalculator, GasWeightMapping, OnMethodCall};80use fp_rpc::TransactionStatus;81use sp_runtime::{82 traits::{BlockNumberProvider, Dispatchable, PostDispatchInfoOf, Saturating},83 transaction_validity::TransactionValidityError,84 SaturatedConversion,85};8687// pub use pallet_timestamp::Call as TimestampCall;8889// Polkadot imports90use pallet_xcm::XcmPassthrough;91use polkadot_parachain::primitives::Sibling;92use xcm::v1::{BodyId, Junction::*, MultiLocation, NetworkId, Junctions::*};93use xcm_builder::{94 AccountId32Aliases, AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom, CurrencyAdapter,95 EnsureXcmOrigin, FixedWeightBounds, LocationInverter, NativeAsset, ParentAsSuperuser,96 RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia,97 SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit,98 ParentIsPreset,99};100use xcm_executor::{Config, XcmExecutor, Assets};101use sp_std::{marker::PhantomData};102103use xcm::latest::{104 // Xcm,105 AssetId::{Concrete},106 Fungibility::Fungible as XcmFungible,107 MultiAsset,108 Error as XcmError,109};110use xcm_executor::traits::{MatchesFungible, WeightTrader};111//use xcm_executor::traits::MatchesFungible;112use sp_runtime::traits::CheckedConversion;113114use unique_runtime_common::{impl_common_runtime_apis, types::*, constants::*};115116pub const RUNTIME_NAME: &str = "unique";117pub const TOKEN_SYMBOL: &str = "UNQ";118119type CrossAccountId = pallet_common::account::BasicCrossAccountId<Runtime>;120121impl RuntimeInstance for Runtime {122 type CrossAccountId = self::CrossAccountId;123124 type TransactionConverter = self::TransactionConverter;125126 fn get_transaction_converter() -> TransactionConverter {127 TransactionConverter128 }129}130131/// Opaque types. These are used by the CLI to instantiate machinery that don't need to know132/// the specifics of the runtime. They can then be made to be agnostic over specific formats133/// of data like extrinsics, allowing for them to continue syncing the network through upgrades134/// to even the core data structures.135pub mod opaque {136 use sp_std::prelude::*;137 use sp_runtime::impl_opaque_keys;138 use super::Aura;139140 pub use unique_runtime_common::types::*;141142 impl_opaque_keys! {143 pub struct SessionKeys {144 pub aura: Aura,145 }146 }147}148149/// This runtime version.150pub const VERSION: RuntimeVersion = RuntimeVersion {151 spec_name: create_runtime_str!(RUNTIME_NAME),152 impl_name: create_runtime_str!(RUNTIME_NAME),153 authoring_version: 1,154 spec_version: 918001,155 impl_version: 0,156 apis: RUNTIME_API_VERSIONS,157 transaction_version: 1,158 state_version: 0,159};160161#[derive(codec::Encode, codec::Decode)]162pub enum XCMPMessage<XAccountId, XBalance> {163 /// Transfer tokens to the given account from the Parachain account.164 TransferToken(XAccountId, XBalance),165}166167/// The version information used to identify this runtime when compiled natively.168#[cfg(feature = "std")]169pub fn native_version() -> NativeVersion {170 NativeVersion {171 runtime_version: VERSION,172 can_author_with: Default::default(),173 }174}175176type NegativeImbalance = <Balances as Currency<AccountId>>::NegativeImbalance;177178pub struct DealWithFees;179impl OnUnbalanced<NegativeImbalance> for DealWithFees {180 fn on_unbalanceds<B>(mut fees_then_tips: impl Iterator<Item = NegativeImbalance>) {181 if let Some(fees) = fees_then_tips.next() {182 // for fees, 100% to treasury183 let mut split = fees.ration(100, 0);184 if let Some(tips) = fees_then_tips.next() {185 // for tips, if any, 100% to treasury186 tips.ration_merge_into(100, 0, &mut split);187 }188 Treasury::on_unbalanced(split.0);189 // Author::on_unbalanced(split.1);190 }191 }192}193194parameter_types! {195 pub const BlockHashCount: BlockNumber = 2400;196 pub RuntimeBlockLength: BlockLength =197 BlockLength::max_with_normal_ratio(5 * 1024 * 1024, NORMAL_DISPATCH_RATIO);198 pub const AvailableBlockRatio: Perbill = Perbill::from_percent(75);199 pub const MaximumBlockLength: u32 = 5 * 1024 * 1024;200 pub RuntimeBlockWeights: BlockWeights = BlockWeights::builder()201 .base_block(BlockExecutionWeight::get())202 .for_class(DispatchClass::all(), |weights| {203 weights.base_extrinsic = ExtrinsicBaseWeight::get();204 })205 .for_class(DispatchClass::Normal, |weights| {206 weights.max_total = Some(NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT);207 })208 .for_class(DispatchClass::Operational, |weights| {209 weights.max_total = Some(MAXIMUM_BLOCK_WEIGHT);210 // Operational transactions have some extra reserved space, so that they211 // are included even if block reached `MAXIMUM_BLOCK_WEIGHT`.212 weights.reserved = Some(213 MAXIMUM_BLOCK_WEIGHT - NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT214 );215 })216 .avg_block_initialization(AVERAGE_ON_INITIALIZE_RATIO)217 .build_or_panic();218 pub const Version: RuntimeVersion = VERSION;219 pub const SS58Prefix: u16 = 7391;220}221222parameter_types! {223 pub const ChainId: u64 = 8880;224}225226pub struct FixedFee;227impl FeeCalculator for FixedFee {228 fn min_gas_price() -> U256 {229 MIN_GAS_PRICE.into()230 }231}232233// Assuming slowest ethereum opcode is SSTORE, with gas price of 20000 as our worst case234// (contract, which only writes a lot of data),235// approximating on top of our real store write weight236parameter_types! {237 pub const WritesPerSecond: u64 = WEIGHT_PER_SECOND / <Runtime as frame_system::Config>::DbWeight::get().write;238 pub const GasPerSecond: u64 = WritesPerSecond::get() * 20000;239 pub const WeightPerGas: u64 = WEIGHT_PER_SECOND / GasPerSecond::get();240}241242/// Limiting EVM execution to 50% of block for substrate users and management tasks243/// EVM transaction consumes more weight than substrate's, so we can't rely on them being244/// scheduled fairly245const EVM_DISPATCH_RATIO: Perbill = Perbill::from_percent(50);246parameter_types! {247 pub BlockGasLimit: U256 = U256::from(NORMAL_DISPATCH_RATIO * EVM_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT / WeightPerGas::get());248}249250pub enum FixedGasWeightMapping {}251impl GasWeightMapping for FixedGasWeightMapping {252 fn gas_to_weight(gas: u64) -> Weight {253 gas.saturating_mul(WeightPerGas::get())254 }255 fn weight_to_gas(weight: Weight) -> u64 {256 weight / WeightPerGas::get()257 }258}259260impl pallet_evm::Config for Runtime {261 type BlockGasLimit = BlockGasLimit;262 type FeeCalculator = FixedFee;263 type GasWeightMapping = FixedGasWeightMapping;264 type BlockHashMapping = pallet_ethereum::EthereumBlockHashMapping<Self>;265 type CallOrigin = EnsureAddressTruncated;266 type WithdrawOrigin = EnsureAddressTruncated;267 type AddressMapping = HashedAddressMapping<Self::Hashing>;268 type PrecompilesType = ();269 type PrecompilesValue = ();270 type Currency = Balances;271 type Event = Event;272 type OnMethodCall = (273 pallet_evm_migration::OnMethodCall<Self>,274 pallet_unique::UniqueErcSupport<Self>,275 pallet_evm_contract_helpers::HelpersOnMethodCall<Self>,276 );277 type OnCreate = pallet_evm_contract_helpers::HelpersOnCreate<Self>;278 type ChainId = ChainId;279 type Runner = pallet_evm::runner::stack::Runner<Self>;280 type OnChargeTransaction = pallet_evm_transaction_payment::OnChargeTransaction<Self>;281 type TransactionValidityHack = pallet_evm_transaction_payment::TransactionValidityHack<Self>;282 type FindAuthor = EthereumFindAuthor<Aura>;283}284285impl pallet_evm_migration::Config for Runtime {286 type WeightInfo = pallet_evm_migration::weights::SubstrateWeight<Self>;287}288289pub struct EthereumFindAuthor<F>(core::marker::PhantomData<F>);290impl<F: FindAuthor<u32>> FindAuthor<H160> for EthereumFindAuthor<F> {291 fn find_author<'a, I>(digests: I) -> Option<H160>292 where293 I: 'a + IntoIterator<Item = (ConsensusEngineId, &'a [u8])>,294 {295 if let Some(author_index) = F::find_author(digests) {296 let authority_id = Aura::authorities()[author_index as usize].clone();297 return Some(H160::from_slice(&authority_id.to_raw_vec()[4..24]));298 }299 None300 }301}302303impl pallet_ethereum::Config for Runtime {304 type Event = Event;305 type StateRoot = pallet_ethereum::IntermediateStateRoot;306}307308impl pallet_randomness_collective_flip::Config for Runtime {}309310impl frame_system::Config for Runtime {311 /// The data to be stored in an account.312 type AccountData = pallet_balances::AccountData<Balance>;313 /// The identifier used to distinguish between accounts.314 type AccountId = AccountId;315 /// The basic call filter to use in dispatchable.316 type BaseCallFilter = Everything;317 /// Maximum number of block number to block hash mappings to keep (oldest pruned first).318 type BlockHashCount = BlockHashCount;319 /// The maximum length of a block (in bytes).320 type BlockLength = RuntimeBlockLength;321 /// The index type for blocks.322 type BlockNumber = BlockNumber;323 /// The weight of the overhead invoked on the block import process, independent of the extrinsics included in that block.324 type BlockWeights = RuntimeBlockWeights;325 /// The aggregated dispatch type that is available for extrinsics.326 type Call = Call;327 /// The weight of database operations that the runtime can invoke.328 type DbWeight = RocksDbWeight;329 /// The ubiquitous event type.330 type Event = Event;331 /// The type for hashing blocks and tries.332 type Hash = Hash;333 /// The hashing algorithm used.334 type Hashing = BlakeTwo256;335 /// The header type.336 type Header = generic::Header<BlockNumber, BlakeTwo256>;337 /// The index type for storing how many extrinsics an account has signed.338 type Index = Index;339 /// The lookup mechanism to get account ID from whatever is passed in dispatchers.340 type Lookup = AccountIdLookup<AccountId, ()>;341 /// What to do if an account is fully reaped from the system.342 type OnKilledAccount = ();343 /// What to do if a new account is created.344 type OnNewAccount = ();345 type OnSetCode = cumulus_pallet_parachain_system::ParachainSetCode<Self>;346 /// The ubiquitous origin type.347 type Origin = Origin;348 /// This type is being generated by `construct_runtime!`.349 type PalletInfo = PalletInfo;350 /// This is used as an identifier of the chain. 42 is the generic substrate prefix.351 type SS58Prefix = SS58Prefix;352 /// Weight information for the extrinsics of this pallet.353 type SystemWeightInfo = frame_system::weights::SubstrateWeight<Self>;354 /// Version of the runtime.355 type Version = Version;356 type MaxConsumers = ConstU32<16>;357}358359parameter_types! {360 pub const MinimumPeriod: u64 = SLOT_DURATION / 2;361}362363impl pallet_timestamp::Config for Runtime {364 /// A timestamp: milliseconds since the unix epoch.365 type Moment = u64;366 type OnTimestampSet = ();367 type MinimumPeriod = MinimumPeriod;368 type WeightInfo = ();369}370371parameter_types! {372 // pub const ExistentialDeposit: u128 = 500;373 pub const ExistentialDeposit: u128 = 0;374 pub const MaxLocks: u32 = 50;375}376377impl pallet_balances::Config for Runtime {378 type MaxLocks = MaxLocks;379 type MaxReserves = ();380 type ReserveIdentifier = [u8; 8];381 /// The type for recording an account's balance.382 type Balance = Balance;383 /// The ubiquitous event type.384 type Event = Event;385 type DustRemoval = Treasury;386 type ExistentialDeposit = ExistentialDeposit;387 type AccountStore = System;388 type WeightInfo = pallet_balances::weights::SubstrateWeight<Self>;389}390391pub const fn deposit(items: u32, bytes: u32) -> Balance {392 items as Balance * 15 * CENTIUNIQUE + (bytes as Balance) * 6 * CENTIUNIQUE393}394395/*396parameter_types! {397 pub TombstoneDeposit: Balance = deposit(398 1,399 sp_std::mem::size_of::<pallet_contracts::Pallet<Runtime>> as u32,400 );401 pub DepositPerContract: Balance = TombstoneDeposit::get();402 pub const DepositPerStorageByte: Balance = deposit(0, 1);403 pub const DepositPerStorageItem: Balance = deposit(1, 0);404 pub RentFraction: Perbill = Perbill::from_rational(1u32, 30 * DAYS);405 pub const SurchargeReward: Balance = 150 * MILLIUNIQUE;406 pub const SignedClaimHandicap: u32 = 2;407 pub const MaxDepth: u32 = 32;408 pub const MaxValueSize: u32 = 16 * 1024;409 pub const MaxCodeSize: u32 = 1024 * 1024 * 25; // 25 Mb410 // The lazy deletion runs inside on_initialize.411 pub DeletionWeightLimit: Weight = AVERAGE_ON_INITIALIZE_RATIO *412 RuntimeBlockWeights::get().max_block;413 // The weight needed for decoding the queue should be less or equal than a fifth414 // of the overall weight dedicated to the lazy deletion.415 pub DeletionQueueDepth: u32 = ((DeletionWeightLimit::get() / (416 <Runtime as pallet_contracts::Config>::WeightInfo::on_initialize_per_queue_item(1) -417 <Runtime as pallet_contracts::Config>::WeightInfo::on_initialize_per_queue_item(0)418 )) / 5) as u32;419 pub Schedule: pallet_contracts::Schedule<Runtime> = Default::default();420}421422impl pallet_contracts::Config for Runtime {423 type Time = Timestamp;424 type Randomness = RandomnessCollectiveFlip;425 type Currency = Balances;426 type Event = Event;427 type RentPayment = ();428 type SignedClaimHandicap = SignedClaimHandicap;429 type TombstoneDeposit = TombstoneDeposit;430 type DepositPerContract = DepositPerContract;431 type DepositPerStorageByte = DepositPerStorageByte;432 type DepositPerStorageItem = DepositPerStorageItem;433 type RentFraction = RentFraction;434 type SurchargeReward = SurchargeReward;435 type WeightPrice = pallet_transaction_payment::Pallet<Self>;436 type WeightInfo = pallet_contracts::weights::SubstrateWeight<Self>;437 type ChainExtension = NFTExtension;438 type DeletionQueueDepth = DeletionQueueDepth;439 type DeletionWeightLimit = DeletionWeightLimit;440 type Schedule = Schedule;441 type CallStack = [pallet_contracts::Frame<Self>; 31];442}443*/444445parameter_types! {446 /// This value increases the priority of `Operational` transactions by adding447 /// a "virtual tip" that's equal to the `OperationalFeeMultiplier * final_fee`.448 pub const OperationalFeeMultiplier: u8 = 5;449}450451/// Linear implementor of `WeightToFeePolynomial`452pub struct LinearFee<T>(sp_std::marker::PhantomData<T>);453454impl<T> WeightToFeePolynomial for LinearFee<T>455where456 T: BaseArithmetic + From<u32> + Copy + Unsigned,457{458 type Balance = T;459460 fn polynomial() -> WeightToFeeCoefficients<Self::Balance> {461 smallvec!(WeightToFeeCoefficient {462 // Targeting 0.1 Unique per NFT transfer463 coeff_integer: WEIGHT_TO_FEE_COEFF.into(),464 coeff_frac: Perbill::zero(),465 negative: false,466 degree: 1,467 })468 }469}470471impl pallet_transaction_payment::Config for Runtime {472 type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter<Balances, DealWithFees>;473 type TransactionByteFee = TransactionByteFee;474 type OperationalFeeMultiplier = OperationalFeeMultiplier;475 type WeightToFee = LinearFee<Balance>;476 type FeeMultiplierUpdate = ();477}478479parameter_types! {480 pub const ProposalBond: Permill = Permill::from_percent(5);481 pub const ProposalBondMinimum: Balance = 1 * UNIQUE;482 pub const ProposalBondMaximum: Balance = 1000 * UNIQUE;483 pub const SpendPeriod: BlockNumber = 5 * MINUTES;484 pub const Burn: Permill = Permill::from_percent(0);485 pub const TipCountdown: BlockNumber = 1 * DAYS;486 pub const TipFindersFee: Percent = Percent::from_percent(20);487 pub const TipReportDepositBase: Balance = 1 * UNIQUE;488 pub const DataDepositPerByte: Balance = 1 * CENTIUNIQUE;489 pub const BountyDepositBase: Balance = 1 * UNIQUE;490 pub const BountyDepositPayoutDelay: BlockNumber = 1 * DAYS;491 pub const TreasuryModuleId: PalletId = PalletId(*b"py/trsry");492 pub const BountyUpdatePeriod: BlockNumber = 14 * DAYS;493 pub const MaximumReasonLength: u32 = 16384;494 pub const BountyCuratorDeposit: Permill = Permill::from_percent(50);495 pub const BountyValueMinimum: Balance = 5 * UNIQUE;496 pub const MaxApprovals: u32 = 100;497}498499impl pallet_treasury::Config for Runtime {500 type PalletId = TreasuryModuleId;501 type Currency = Balances;502 type ApproveOrigin = EnsureRoot<AccountId>;503 type RejectOrigin = EnsureRoot<AccountId>;504 type Event = Event;505 type OnSlash = ();506 type ProposalBond = ProposalBond;507 type ProposalBondMinimum = ProposalBondMinimum;508 type ProposalBondMaximum = ProposalBondMaximum;509 type SpendPeriod = SpendPeriod;510 type Burn = Burn;511 type BurnDestination = ();512 type SpendFunds = ();513 type WeightInfo = pallet_treasury::weights::SubstrateWeight<Self>;514 type MaxApprovals = MaxApprovals;515}516517impl pallet_sudo::Config for Runtime {518 type Event = Event;519 type Call = Call;520}521522pub struct RelayChainBlockNumberProvider<T>(sp_std::marker::PhantomData<T>);523524impl<T: cumulus_pallet_parachain_system::Config> BlockNumberProvider525 for RelayChainBlockNumberProvider<T>526{527 type BlockNumber = BlockNumber;528529 fn current_block_number() -> Self::BlockNumber {530 cumulus_pallet_parachain_system::Pallet::<T>::validation_data()531 .map(|d| d.relay_parent_number)532 .unwrap_or_default()533 }534}535536parameter_types! {537 pub const MinVestedTransfer: Balance = 10 * UNIQUE;538 pub const MaxVestingSchedules: u32 = 28;539}540541impl orml_vesting::Config for Runtime {542 type Event = Event;543 type Currency = pallet_balances::Pallet<Runtime>;544 type MinVestedTransfer = MinVestedTransfer;545 type VestedTransferOrigin = EnsureSigned<AccountId>;546 type WeightInfo = ();547 type MaxVestingSchedules = MaxVestingSchedules;548 type BlockNumberProvider = RelayChainBlockNumberProvider<Runtime>;549}550551parameter_types! {552 pub const ReservedDmpWeight: Weight = MAXIMUM_BLOCK_WEIGHT / 4;553 pub const ReservedXcmpWeight: Weight = MAXIMUM_BLOCK_WEIGHT / 4;554}555556impl cumulus_pallet_parachain_system::Config for Runtime {557 type Event = Event;558 type SelfParaId = parachain_info::Pallet<Self>;559 type OnSystemEvent = ();560 // type DownwardMessageHandlers = cumulus_primitives_utility::UnqueuedDmpAsParent<561 // MaxDownwardMessageWeight,562 // XcmExecutor<XcmConfig>,563 // Call,564 // >;565 type OutboundXcmpMessageSource = XcmpQueue;566 type DmpMessageHandler = DmpQueue;567 type ReservedDmpWeight = ReservedDmpWeight;568 type ReservedXcmpWeight = ReservedXcmpWeight;569 type XcmpMessageHandler = XcmpQueue;570}571572impl parachain_info::Config for Runtime {}573574impl cumulus_pallet_aura_ext::Config for Runtime {}575576parameter_types! {577 pub const RelayLocation: MultiLocation = MultiLocation::parent();578 pub const RelayNetwork: NetworkId = NetworkId::Polkadot;579 pub RelayOrigin: Origin = cumulus_pallet_xcm::Origin::Relay.into();580 pub Ancestry: MultiLocation = Parachain(ParachainInfo::parachain_id().into()).into();581}582583/// Type for specifying how a `MultiLocation` can be converted into an `AccountId`. This is used584/// when determining ownership of accounts for asset transacting and when attempting to use XCM585/// `Transact` in order to determine the dispatch Origin.586pub type LocationToAccountId = (587 // The parent (Relay-chain) origin converts to the default `AccountId`.588 ParentIsPreset<AccountId>,589 // Sibling parachain origins convert to AccountId via the `ParaId::into`.590 SiblingParachainConvertsVia<Sibling, AccountId>,591 // Straight up local `AccountId32` origins just alias directly to `AccountId`.592 AccountId32Aliases<RelayNetwork, AccountId>,593);594595pub struct OnlySelfCurrency;596impl<B: TryFrom<u128>> MatchesFungible<B> for OnlySelfCurrency {597 fn matches_fungible(a: &MultiAsset) -> Option<B> {598 match (&a.id, &a.fun) {599 (Concrete(_), XcmFungible(ref amount)) => CheckedConversion::checked_from(*amount),600 _ => None,601 }602 }603}604605/// Means for transacting assets on this chain.606pub type LocalAssetTransactor = CurrencyAdapter<607 // Use this currency:608 Balances,609 // Use this currency when it is a fungible asset matching the given location or name:610 OnlySelfCurrency,611 // Do a simple punn to convert an AccountId32 MultiLocation into a native chain account ID:612 LocationToAccountId,613 // Our chain's account ID type (we can't get away without mentioning it explicitly):614 AccountId,615 // We don't track any teleports.616 (),617>;618619/// This is the type we use to convert an (incoming) XCM origin into a local `Origin` instance,620/// ready for dispatching a transaction with Xcm's `Transact`. There is an `OriginKind` which can621/// biases the kind of local `Origin` it will become.622pub type XcmOriginToTransactDispatchOrigin = (623 // Sovereign account converter; this attempts to derive an `AccountId` from the origin location624 // using `LocationToAccountId` and then turn that into the usual `Signed` origin. Useful for625 // foreign chains who want to have a local sovereign account on this chain which they control.626 SovereignSignedViaLocation<LocationToAccountId, Origin>,627 // Native converter for Relay-chain (Parent) location; will converts to a `Relay` origin when628 // recognised.629 RelayChainAsNative<RelayOrigin, Origin>,630 // Native converter for sibling Parachains; will convert to a `SiblingPara` origin when631 // recognised.632 SiblingParachainAsNative<cumulus_pallet_xcm::Origin, Origin>,633 // Superuser converter for the Relay-chain (Parent) location. This will allow it to issue a634 // transaction from the Root origin.635 ParentAsSuperuser<Origin>,636 // Native signed account converter; this just converts an `AccountId32` origin into a normal637 // `Origin::Signed` origin of the same 32-byte value.638 SignedAccountId32AsNative<RelayNetwork, Origin>,639 // Xcm origins can be represented natively under the Xcm pallet's Xcm origin.640 XcmPassthrough<Origin>,641);642643parameter_types! {644 // One XCM operation is 1_000_000 weight - almost certainly a conservative estimate.645 pub UnitWeightCost: Weight = 1_000_000;646 // 1200 UNIQUEs buy 1 second of weight.647 pub const WeightPrice: (MultiLocation, u128) = (MultiLocation::parent(), 1_200 * UNIQUE);648 pub const MaxInstructions: u32 = 100;649 pub const MaxAuthorities: u32 = 100_000;650}651652match_type! {653 pub type ParentOrParentsUnitPlurality: impl Contains<MultiLocation> = {654 MultiLocation { parents: 1, interior: Here } |655 MultiLocation { parents: 1, interior: X1(Plurality { id: BodyId::Unit, .. }) }656 };657}658659pub type Barrier = (660 TakeWeightCredit,661 AllowTopLevelPaidExecutionFrom<Everything>,662 AllowUnpaidExecutionFrom<ParentOrParentsUnitPlurality>,663 // ^^^ Parent & its unit plurality gets free execution664);665666pub struct UsingOnlySelfCurrencyComponents<667 WeightToFee: WeightToFeePolynomial<Balance = Currency::Balance>,668 AssetId: Get<MultiLocation>,669 AccountId,670 Currency: CurrencyT<AccountId>,671 OnUnbalanced: OnUnbalancedT<Currency::NegativeImbalance>,672>(673 Weight,674 Currency::Balance,675 PhantomData<(WeightToFee, AssetId, AccountId, Currency, OnUnbalanced)>,676);677impl<678 WeightToFee: WeightToFeePolynomial<Balance = Currency::Balance>,679 AssetId: Get<MultiLocation>,680 AccountId,681 Currency: CurrencyT<AccountId>,682 OnUnbalanced: OnUnbalancedT<Currency::NegativeImbalance>,683 > WeightTrader684 for UsingOnlySelfCurrencyComponents<WeightToFee, AssetId, AccountId, Currency, OnUnbalanced>685{686 fn new() -> Self {687 Self(0, Zero::zero(), PhantomData)688 }689690 fn buy_weight(&mut self, weight: Weight, payment: Assets) -> Result<Assets, XcmError> {691 let amount = WeightToFee::calc(&weight);692 let u128_amount: u128 = amount.try_into().map_err(|_| XcmError::Overflow)?;693694 // location to this parachain through relay chain695 let option1: xcm::v1::AssetId = Concrete(MultiLocation {696 parents: 1,697 interior: X1(Parachain(ParachainInfo::parachain_id().into())),698 });699 // direct location700 let option2: xcm::v1::AssetId = Concrete(MultiLocation {701 parents: 0,702 interior: Here,703 });704705 let required = if payment.fungible.contains_key(&option1) {706 (option1, u128_amount).into()707 } else if payment.fungible.contains_key(&option2) {708 (option2, u128_amount).into()709 } else {710 (Concrete(MultiLocation::default()), u128_amount).into()711 };712713 let unused = payment714 .checked_sub(required)715 .map_err(|_| XcmError::TooExpensive)?;716 self.0 = self.0.saturating_add(weight);717 self.1 = self.1.saturating_add(amount);718 Ok(unused)719 }720721 fn refund_weight(&mut self, weight: Weight) -> Option<MultiAsset> {722 let weight = weight.min(self.0);723 let amount = WeightToFee::calc(&weight);724 self.0 -= weight;725 self.1 = self.1.saturating_sub(amount);726 let amount: u128 = amount.saturated_into();727 if amount > 0 {728 Some((AssetId::get(), amount).into())729 } else {730 None731 }732 }733}734impl<735 WeightToFee: WeightToFeePolynomial<Balance = Currency::Balance>,736 AssetId: Get<MultiLocation>,737 AccountId,738 Currency: CurrencyT<AccountId>,739 OnUnbalanced: OnUnbalancedT<Currency::NegativeImbalance>,740 > Drop741 for UsingOnlySelfCurrencyComponents<WeightToFee, AssetId, AccountId, Currency, OnUnbalanced>742{743 fn drop(&mut self) {744 OnUnbalanced::on_unbalanced(Currency::issue(self.1));745 }746}747748pub struct XcmConfig;749impl Config for XcmConfig {750 type Call = Call;751 type XcmSender = XcmRouter;752 // How to withdraw and deposit an asset.753 type AssetTransactor = LocalAssetTransactor;754 type OriginConverter = XcmOriginToTransactDispatchOrigin;755 type IsReserve = NativeAsset;756 type IsTeleporter = (); // Teleportation is disabled757 type LocationInverter = LocationInverter<Ancestry>;758 type Barrier = Barrier;759 type Weigher = FixedWeightBounds<UnitWeightCost, Call, MaxInstructions>;760 type Trader = UsingOnlySelfCurrencyComponents<761 IdentityFee<Balance>,762 RelayLocation,763 AccountId,764 Balances,765 (),766 >;767 type ResponseHandler = (); // Don't handle responses for now.768 type SubscriptionService = PolkadotXcm;769770 type AssetTrap = PolkadotXcm;771 type AssetClaims = PolkadotXcm;772}773774// parameter_types! {775// pub const MaxDownwardMessageWeight: Weight = MAXIMUM_BLOCK_WEIGHT / 10;776// }777778/// No local origins on this chain are allowed to dispatch XCM sends/executions.779pub type LocalOriginToLocation = (SignedToAccountId32<Origin, AccountId, RelayNetwork>,);780781/// The means for routing XCM messages which are not for local execution into the right message782/// queues.783pub type XcmRouter = (784 // Two routers - use UMP to communicate with the relay chain:785 cumulus_primitives_utility::ParentAsUmp<ParachainSystem, ()>,786 // ..and XCMP to communicate with the sibling chains.787 XcmpQueue,788);789790impl pallet_evm_coder_substrate::Config for Runtime {791 type EthereumTransactionSender = pallet_ethereum::Pallet<Self>;792 type GasWeightMapping = FixedGasWeightMapping;793}794795impl pallet_xcm::Config for Runtime {796 type Event = Event;797 type SendXcmOrigin = EnsureXcmOrigin<Origin, LocalOriginToLocation>;798 type XcmRouter = XcmRouter;799 type ExecuteXcmOrigin = EnsureXcmOrigin<Origin, LocalOriginToLocation>;800 type XcmExecuteFilter = Everything;801 type XcmExecutor = XcmExecutor<XcmConfig>;802 type XcmTeleportFilter = Everything;803 type XcmReserveTransferFilter = Everything;804 type Weigher = FixedWeightBounds<UnitWeightCost, Call, MaxInstructions>;805 type LocationInverter = LocationInverter<Ancestry>;806 type Origin = Origin;807 type Call = Call;808 const VERSION_DISCOVERY_QUEUE_SIZE: u32 = 100;809 type AdvertisedXcmVersion = pallet_xcm::CurrentXcmVersion;810}811812impl cumulus_pallet_xcm::Config for Runtime {813 type Event = Event;814 type XcmExecutor = XcmExecutor<XcmConfig>;815}816817impl cumulus_pallet_xcmp_queue::Config for Runtime {818 type WeightInfo = ();819 type Event = Event;820 type XcmExecutor = XcmExecutor<XcmConfig>;821 type ChannelInfo = ParachainSystem;822 type VersionWrapper = ();823 type ExecuteOverweightOrigin = frame_system::EnsureRoot<AccountId>;824 type ControllerOrigin = EnsureRoot<AccountId>;825 type ControllerOriginConverter = XcmOriginToTransactDispatchOrigin;826}827828impl cumulus_pallet_dmp_queue::Config for Runtime {829 type Event = Event;830 type XcmExecutor = XcmExecutor<XcmConfig>;831 type ExecuteOverweightOrigin = frame_system::EnsureRoot<AccountId>;832}833834impl pallet_aura::Config for Runtime {835 type AuthorityId = AuraId;836 type DisabledValidators = ();837 type MaxAuthorities = MaxAuthorities;838}839840parameter_types! {841 pub TreasuryAccountId: AccountId = TreasuryModuleId::get().into_account();842 pub const CollectionCreationPrice: Balance = 2 * UNIQUE;843}844845impl pallet_common::Config for Runtime {846 type Event = Event;847 type EvmBackwardsAddressMapping = up_evm_mapping::MapBackwardsAddressTruncated;848 type EvmAddressMapping = HashedAddressMapping<Self::Hashing>;849 type CrossAccountId = pallet_common::account::BasicCrossAccountId<Self>;850851 type Currency = Balances;852 type CollectionCreationPrice = CollectionCreationPrice;853 type TreasuryAccountId = TreasuryAccountId;854}855856impl pallet_fungible::Config for Runtime {857 type WeightInfo = pallet_fungible::weights::SubstrateWeight<Self>;858}859impl pallet_refungible::Config for Runtime {860 type WeightInfo = pallet_refungible::weights::SubstrateWeight<Self>;861}862impl pallet_nonfungible::Config for Runtime {863 type WeightInfo = pallet_nonfungible::weights::SubstrateWeight<Self>;864}865866impl pallet_unique::Config for Runtime {867 type Event = Event;868 type WeightInfo = pallet_unique::weights::SubstrateWeight<Self>;869}870871parameter_types! {872 pub const InflationBlockInterval: BlockNumber = 100; // every time per how many blocks inflation is applied873}874875/// Used for the pallet inflation876impl pallet_inflation::Config for Runtime {877 type Currency = Balances;878 type TreasuryAccountId = TreasuryAccountId;879 type InflationBlockInterval = InflationBlockInterval;880 type BlockNumberProvider = RelayChainBlockNumberProvider<Runtime>;881}882883// parameter_types! {884// pub MaximumSchedulerWeight: Weight = Perbill::from_percent(50) *885// RuntimeBlockWeights::get().max_block;886// pub const MaxScheduledPerBlock: u32 = 50;887// }888889type EvmSponsorshipHandler = (890 pallet_unique::UniqueEthSponsorshipHandler<Runtime>,891 pallet_evm_contract_helpers::HelpersContractSponsoring<Runtime>,892);893type SponsorshipHandler = (894 pallet_unique::UniqueSponsorshipHandler<Runtime>,895 //pallet_contract_helpers::ContractSponsorshipHandler<Runtime>,896 pallet_evm_transaction_payment::BridgeSponsorshipHandler<Runtime>,897);898899// impl pallet_unq_scheduler::Config for Runtime {900// type Event = Event;901// type Origin = Origin;902// type PalletsOrigin = OriginCaller;903// type Call = Call;904// type MaximumWeight = MaximumSchedulerWeight;905// type ScheduleOrigin = EnsureSigned<AccountId>;906// type MaxScheduledPerBlock = MaxScheduledPerBlock;907// type SponsorshipHandler = SponsorshipHandler;908// type WeightInfo = ();909// }910911impl pallet_evm_transaction_payment::Config for Runtime {912 type EvmSponsorshipHandler = EvmSponsorshipHandler;913 type Currency = Balances;914 type EvmAddressMapping = HashedAddressMapping<Self::Hashing>;915 type EvmBackwardsAddressMapping = up_evm_mapping::MapBackwardsAddressTruncated;916}917918impl pallet_charge_transaction::Config for Runtime {919 type SponsorshipHandler = SponsorshipHandler;920}921922// impl pallet_contract_helpers::Config for Runtime {923// type DefaultSponsoringRateLimit = DefaultSponsoringRateLimit;924// }925926parameter_types! {927 // 0x842899ECF380553E8a4de75bF534cdf6fBF64049928 pub const HelpersContractAddress: H160 = H160([929 0x84, 0x28, 0x99, 0xec, 0xf3, 0x80, 0x55, 0x3e, 0x8a, 0x4d, 0xe7, 0x5b, 0xf5, 0x34, 0xcd, 0xf6, 0xfb, 0xf6, 0x40, 0x49,930 ]);931}932933impl pallet_evm_contract_helpers::Config for Runtime {934 type ContractAddress = HelpersContractAddress;935 type DefaultSponsoringRateLimit = DefaultSponsoringRateLimit;936}937938construct_runtime!(939 pub enum Runtime where940 Block = Block,941 NodeBlock = opaque::Block,942 UncheckedExtrinsic = UncheckedExtrinsic943 {944 ParachainSystem: cumulus_pallet_parachain_system::{Pallet, Call, Config, Storage, Inherent, Event<T>, ValidateUnsigned} = 20,945 ParachainInfo: parachain_info::{Pallet, Storage, Config} = 21,946947 Aura: pallet_aura::{Pallet, Config<T>} = 22,948 AuraExt: cumulus_pallet_aura_ext::{Pallet, Config} = 23,949950 Balances: pallet_balances::{Pallet, Call, Storage, Config<T>, Event<T>} = 30,951 RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage} = 31,952 Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent} = 32,953 TransactionPayment: pallet_transaction_payment::{Pallet, Storage} = 33,954 Treasury: pallet_treasury::{Pallet, Call, Storage, Config, Event<T>} = 34,955 Sudo: pallet_sudo::{Pallet, Call, Storage, Config<T>, Event<T>} = 35,956 System: frame_system::{Pallet, Call, Storage, Config, Event<T>} = 36,957 Vesting: orml_vesting::{Pallet, Storage, Call, Event<T>, Config<T>} = 37,958 // Vesting: pallet_vesting::{Pallet, Call, Config<T>, Storage, Event<T>} = 37,959 // Contracts: pallet_contracts::{Pallet, Call, Storage, Event<T>} = 38,960961 // XCM helpers.962 XcmpQueue: cumulus_pallet_xcmp_queue::{Pallet, Call, Storage, Event<T>} = 50,963 PolkadotXcm: pallet_xcm::{Pallet, Call, Event<T>, Origin} = 51,964 CumulusXcm: cumulus_pallet_xcm::{Pallet, Call, Event<T>, Origin} = 52,965 DmpQueue: cumulus_pallet_dmp_queue::{Pallet, Call, Storage, Event<T>} = 53,966967 // Unique Pallets968 Inflation: pallet_inflation::{Pallet, Call, Storage} = 60,969 Unique: pallet_unique::{Pallet, Call, Storage, Event<T>} = 61,970 // Scheduler: pallet_unq_scheduler::{Pallet, Call, Storage, Event<T>} = 62,971 // free = 63972 Charging: pallet_charge_transaction::{Pallet, Call, Storage } = 64,973 // ContractHelpers: pallet_contract_helpers::{Pallet, Call, Storage} = 65,974 Common: pallet_common::{Pallet, Storage, Event<T>} = 66,975 Fungible: pallet_fungible::{Pallet, Storage} = 67,976 Refungible: pallet_refungible::{Pallet, Storage} = 68,977 Nonfungible: pallet_nonfungible::{Pallet, Storage} = 69,978979 // Frontier980 EVM: pallet_evm::{Pallet, Config, Call, Storage, Event<T>} = 100,981 Ethereum: pallet_ethereum::{Pallet, Config, Call, Storage, Event, Origin} = 101,982983 EvmCoderSubstrate: pallet_evm_coder_substrate::{Pallet, Storage} = 150,984 EvmContractHelpers: pallet_evm_contract_helpers::{Pallet, Storage} = 151,985 EvmTransactionPayment: pallet_evm_transaction_payment::{Pallet} = 152,986 EvmMigration: pallet_evm_migration::{Pallet, Call, Storage} = 153,987 }988);989990pub struct TransactionConverter;991992impl fp_rpc::ConvertTransaction<UncheckedExtrinsic> for TransactionConverter {993 fn convert_transaction(&self, transaction: pallet_ethereum::Transaction) -> UncheckedExtrinsic {994 UncheckedExtrinsic::new_unsigned(995 pallet_ethereum::Call::<Runtime>::transact { transaction }.into(),996 )997 }998}9991000impl fp_rpc::ConvertTransaction<opaque::UncheckedExtrinsic> for TransactionConverter {1001 fn convert_transaction(1002 &self,1003 transaction: pallet_ethereum::Transaction,1004 ) -> opaque::UncheckedExtrinsic {1005 let extrinsic = UncheckedExtrinsic::new_unsigned(1006 pallet_ethereum::Call::<Runtime>::transact { transaction }.into(),1007 );1008 let encoded = extrinsic.encode();1009 opaque::UncheckedExtrinsic::decode(&mut &encoded[..])1010 .expect("Encoded extrinsic is always valid")1011 }1012}10131014/// The address format for describing accounts.1015pub type Address = sp_runtime::MultiAddress<AccountId, ()>;1016/// Block header type as expected by this runtime.1017pub type Header = generic::Header<BlockNumber, BlakeTwo256>;1018/// Block type as expected by this runtime.1019pub type Block = generic::Block<Header, UncheckedExtrinsic>;1020/// A Block signed with a Justification1021pub type SignedBlock = generic::SignedBlock<Block>;1022/// BlockId type as expected by this runtime.1023pub type BlockId = generic::BlockId<Block>;1024/// The SignedExtension to the basic transaction logic.1025pub type SignedExtra = (1026 frame_system::CheckSpecVersion<Runtime>,1027 // system::CheckTxVersion<Runtime>,1028 frame_system::CheckGenesis<Runtime>,1029 frame_system::CheckEra<Runtime>,1030 frame_system::CheckNonce<Runtime>,1031 frame_system::CheckWeight<Runtime>,1032 pallet_charge_transaction::ChargeTransactionPayment<Runtime>,1033 //pallet_contract_helpers::ContractHelpersExtension<Runtime>,1034);1035/// Unchecked extrinsic type as expected by this runtime.1036pub type UncheckedExtrinsic =1037 fp_self_contained::UncheckedExtrinsic<Address, Call, Signature, SignedExtra>;1038/// Extrinsic type that has already been checked.1039pub type CheckedExtrinsic = fp_self_contained::CheckedExtrinsic<AccountId, Call, SignedExtra, H160>;1040/// Executive: handles dispatch to the various modules.1041pub type Executive = frame_executive::Executive<1042 Runtime,1043 Block,1044 frame_system::ChainContext<Runtime>,1045 Runtime,1046 AllPalletsReversedWithSystemFirst,1047>;10481049impl_opaque_keys! {1050 pub struct SessionKeys {1051 pub aura: Aura,1052 }1053}10541055impl fp_self_contained::SelfContainedCall for Call {1056 type SignedInfo = H160;10571058 fn is_self_contained(&self) -> bool {1059 match self {1060 Call::Ethereum(call) => call.is_self_contained(),1061 _ => false,1062 }1063 }10641065 fn check_self_contained(&self) -> Option<Result<Self::SignedInfo, TransactionValidityError>> {1066 match self {1067 Call::Ethereum(call) => call.check_self_contained(),1068 _ => None,1069 }1070 }10711072 fn validate_self_contained(&self, info: &Self::SignedInfo) -> Option<TransactionValidity> {1073 match self {1074 Call::Ethereum(call) => call.validate_self_contained(info),1075 _ => None,1076 }1077 }10781079 fn pre_dispatch_self_contained(1080 &self,1081 info: &Self::SignedInfo,1082 ) -> Option<Result<(), TransactionValidityError>> {1083 match self {1084 Call::Ethereum(call) => call.pre_dispatch_self_contained(info),1085 _ => None,1086 }1087 }10881089 fn apply_self_contained(1090 self,1091 info: Self::SignedInfo,1092 ) -> Option<sp_runtime::DispatchResultWithInfo<PostDispatchInfoOf<Self>>> {1093 match self {1094 call @ Call::Ethereum(pallet_ethereum::Call::transact { .. }) => Some(call.dispatch(1095 Origin::from(pallet_ethereum::RawOrigin::EthereumTransaction(info)),1096 )),1097 _ => None,1098 }1099 }1100}11011102macro_rules! dispatch_unique_runtime {1103 ($collection:ident.$method:ident($($name:ident),*)) => {{1104 use pallet_unique::dispatch::Dispatched;11051106 let collection = Dispatched::dispatch(<pallet_common::CollectionHandle<Runtime>>::try_get($collection)?);1107 let dispatch = collection.as_dyn();11081109 Ok(dispatch.$method($($name),*))1110 }};1111}11121113impl_common_runtime_apis!();11141115struct CheckInherents;11161117impl cumulus_pallet_parachain_system::CheckInherents<Block> for CheckInherents {1118 fn check_inherents(1119 block: &Block,1120 relay_state_proof: &cumulus_pallet_parachain_system::RelayChainStateProof,1121 ) -> sp_inherents::CheckInherentsResult {1122 let relay_chain_slot = relay_state_proof1123 .read_slot()1124 .expect("Could not read the relay chain slot from the proof");11251126 let inherent_data =1127 cumulus_primitives_timestamp::InherentDataProvider::from_relay_chain_slot_and_duration(1128 relay_chain_slot,1129 sp_std::time::Duration::from_secs(6),1130 )1131 .create_inherent_data()1132 .expect("Could not create the timestamp inherent data");11331134 inherent_data.check_extrinsics(block)1135 }1136}11371138cumulus_pallet_parachain_system::register_validate_block!(1139 Runtime = Runtime,1140 BlockExecutor = cumulus_pallet_aura_ext::BlockExecutor::<Runtime, Executive>,1141 CheckInherents = CheckInherents,1142);1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617//! The Substrate Node Template runtime. This can be compiled with `#[no_std]`, ready for Wasm.1819#![cfg_attr(not(feature = "std"), no_std)]20// `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256.21#![recursion_limit = "1024"]22#![allow(clippy::from_over_into, clippy::identity_op)]23#![allow(clippy::fn_to_numeric_cast_with_truncation)]24// Make the WASM binary available.25#[cfg(feature = "std")]26include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs"));2728use sp_api::impl_runtime_apis;29use sp_core::{crypto::KeyTypeId, OpaqueMetadata, H256, U256, H160};30use sp_runtime::DispatchError;31// #[cfg(any(feature = "std", test))]32// pub use sp_runtime::BuildStorage;3334use sp_runtime::{35 Permill, Perbill, Percent, create_runtime_str, generic, impl_opaque_keys,36 traits::{AccountIdLookup, BlakeTwo256, Block as BlockT, AccountIdConversion, Zero},37 transaction_validity::{TransactionSource, TransactionValidity},38 ApplyExtrinsicResult, RuntimeAppPublic,39};4041use sp_std::prelude::*;4243#[cfg(feature = "std")]44use sp_version::NativeVersion;45use sp_version::RuntimeVersion;46pub use pallet_transaction_payment::{47 Multiplier, TargetedFeeAdjustment, FeeDetails, RuntimeDispatchInfo,48};49// A few exports that help ease life for downstream crates.50pub use pallet_balances::Call as BalancesCall;51pub use pallet_evm::{52 EnsureAddressTruncated, HashedAddressMapping, Runner, account::CrossAccountId as _,53};54pub use frame_support::{55 construct_runtime, match_type,56 dispatch::DispatchResult,57 PalletId, parameter_types, StorageValue, ConsensusEngineId,58 traits::{59 tokens::currency::Currency as CurrencyT, OnUnbalanced as OnUnbalancedT, Everything,60 Currency, ExistenceRequirement, Get, IsInVec, KeyOwnerProofSystem, LockIdentifier,61 OnUnbalanced, Randomness, FindAuthor,62 },63 weights::{64 constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight, WEIGHT_PER_SECOND},65 DispatchClass, DispatchInfo, GetDispatchInfo, IdentityFee, Pays, PostDispatchInfo, Weight,66 WeightToFeePolynomial, WeightToFeeCoefficient, WeightToFeeCoefficients,67 },68};69use up_data_structs::*;70// use pallet_contracts::weights::WeightInfo;71// #[cfg(any(feature = "std", test))]72use frame_system::{73 self as frame_system, EnsureRoot, EnsureSigned,74 limits::{BlockWeights, BlockLength},75};76use sp_arithmetic::{77 traits::{BaseArithmetic, Unsigned},78};79use smallvec::smallvec;80use codec::{Encode, Decode};81use pallet_evm::{Account as EVMAccount, FeeCalculator, GasWeightMapping, OnMethodCall};82use fp_rpc::TransactionStatus;83use sp_runtime::{84 traits::{BlockNumberProvider, Dispatchable, PostDispatchInfoOf, Saturating},85 transaction_validity::TransactionValidityError,86 SaturatedConversion,87};8889// pub use pallet_timestamp::Call as TimestampCall;9091// Polkadot imports92use pallet_xcm::XcmPassthrough;93use polkadot_parachain::primitives::Sibling;94use xcm::v1::{BodyId, Junction::*, MultiLocation, NetworkId, Junctions::*};95use xcm_builder::{96 AccountId32Aliases, AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom, CurrencyAdapter,97 EnsureXcmOrigin, FixedWeightBounds, LocationInverter, NativeAsset, ParentAsSuperuser,98 RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia,99 SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit,100 ParentIsPreset,101};102use xcm_executor::{Config, XcmExecutor, Assets};103use sp_std::{marker::PhantomData};104105use xcm::latest::{106 // Xcm,107 AssetId::{Concrete},108 Fungibility::Fungible as XcmFungible,109 MultiAsset,110 Error as XcmError,111};112use xcm_executor::traits::{MatchesFungible, WeightTrader};113//use xcm_executor::traits::MatchesFungible;114use sp_runtime::traits::CheckedConversion;115116use unique_runtime_common::{impl_common_runtime_apis, types::*, constants::*};117118pub const RUNTIME_NAME: &str = "unique";119pub const TOKEN_SYMBOL: &str = "UNQ";120121type CrossAccountId = pallet_evm::account::BasicCrossAccountId<Runtime>;122123impl RuntimeInstance for Runtime {124 type CrossAccountId = self::CrossAccountId;125126 type TransactionConverter = self::TransactionConverter;127128 fn get_transaction_converter() -> TransactionConverter {129 TransactionConverter130 }131}132133/// Opaque types. These are used by the CLI to instantiate machinery that don't need to know134/// the specifics of the runtime. They can then be made to be agnostic over specific formats135/// of data like extrinsics, allowing for them to continue syncing the network through upgrades136/// to even the core data structures.137pub mod opaque {138 use sp_std::prelude::*;139 use sp_runtime::impl_opaque_keys;140 use super::Aura;141142 pub use unique_runtime_common::types::*;143144 impl_opaque_keys! {145 pub struct SessionKeys {146 pub aura: Aura,147 }148 }149}150151/// This runtime version.152pub const VERSION: RuntimeVersion = RuntimeVersion {153 spec_name: create_runtime_str!(RUNTIME_NAME),154 impl_name: create_runtime_str!(RUNTIME_NAME),155 authoring_version: 1,156 spec_version: 918010,157 impl_version: 0,158 apis: RUNTIME_API_VERSIONS,159 transaction_version: 1,160 state_version: 0,161};162163#[derive(codec::Encode, codec::Decode)]164pub enum XCMPMessage<XAccountId, XBalance> {165 /// Transfer tokens to the given account from the Parachain account.166 TransferToken(XAccountId, XBalance),167}168169/// The version information used to identify this runtime when compiled natively.170#[cfg(feature = "std")]171pub fn native_version() -> NativeVersion {172 NativeVersion {173 runtime_version: VERSION,174 can_author_with: Default::default(),175 }176}177178type NegativeImbalance = <Balances as Currency<AccountId>>::NegativeImbalance;179180pub struct DealWithFees;181impl OnUnbalanced<NegativeImbalance> for DealWithFees {182 fn on_unbalanceds<B>(mut fees_then_tips: impl Iterator<Item = NegativeImbalance>) {183 if let Some(fees) = fees_then_tips.next() {184 // for fees, 100% to treasury185 let mut split = fees.ration(100, 0);186 if let Some(tips) = fees_then_tips.next() {187 // for tips, if any, 100% to treasury188 tips.ration_merge_into(100, 0, &mut split);189 }190 Treasury::on_unbalanced(split.0);191 // Author::on_unbalanced(split.1);192 }193 }194}195196parameter_types! {197 pub const BlockHashCount: BlockNumber = 2400;198 pub RuntimeBlockLength: BlockLength =199 BlockLength::max_with_normal_ratio(5 * 1024 * 1024, NORMAL_DISPATCH_RATIO);200 pub const AvailableBlockRatio: Perbill = Perbill::from_percent(75);201 pub const MaximumBlockLength: u32 = 5 * 1024 * 1024;202 pub RuntimeBlockWeights: BlockWeights = BlockWeights::builder()203 .base_block(BlockExecutionWeight::get())204 .for_class(DispatchClass::all(), |weights| {205 weights.base_extrinsic = ExtrinsicBaseWeight::get();206 })207 .for_class(DispatchClass::Normal, |weights| {208 weights.max_total = Some(NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT);209 })210 .for_class(DispatchClass::Operational, |weights| {211 weights.max_total = Some(MAXIMUM_BLOCK_WEIGHT);212 // Operational transactions have some extra reserved space, so that they213 // are included even if block reached `MAXIMUM_BLOCK_WEIGHT`.214 weights.reserved = Some(215 MAXIMUM_BLOCK_WEIGHT - NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT216 );217 })218 .avg_block_initialization(AVERAGE_ON_INITIALIZE_RATIO)219 .build_or_panic();220 pub const Version: RuntimeVersion = VERSION;221 pub const SS58Prefix: u16 = 7391;222}223224parameter_types! {225 pub const ChainId: u64 = 8880;226}227228pub struct FixedFee;229impl FeeCalculator for FixedFee {230 fn min_gas_price() -> U256 {231 MIN_GAS_PRICE.into()232 }233}234235// Assuming slowest ethereum opcode is SSTORE, with gas price of 20000 as our worst case236// (contract, which only writes a lot of data),237// approximating on top of our real store write weight238parameter_types! {239 pub const WritesPerSecond: u64 = WEIGHT_PER_SECOND / <Runtime as frame_system::Config>::DbWeight::get().write;240 pub const GasPerSecond: u64 = WritesPerSecond::get() * 20000;241 pub const WeightPerGas: u64 = WEIGHT_PER_SECOND / GasPerSecond::get();242}243244/// Limiting EVM execution to 50% of block for substrate users and management tasks245/// EVM transaction consumes more weight than substrate's, so we can't rely on them being246/// scheduled fairly247const EVM_DISPATCH_RATIO: Perbill = Perbill::from_percent(50);248parameter_types! {249 pub BlockGasLimit: U256 = U256::from(NORMAL_DISPATCH_RATIO * EVM_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT / WeightPerGas::get());250}251252pub enum FixedGasWeightMapping {}253impl GasWeightMapping for FixedGasWeightMapping {254 fn gas_to_weight(gas: u64) -> Weight {255 gas.saturating_mul(WeightPerGas::get())256 }257 fn weight_to_gas(weight: Weight) -> u64 {258 weight / WeightPerGas::get()259 }260}261262impl pallet_evm::Config for Runtime {263 type BlockGasLimit = BlockGasLimit;264 type FeeCalculator = FixedFee;265 type GasWeightMapping = FixedGasWeightMapping;266 type BlockHashMapping = pallet_ethereum::EthereumBlockHashMapping<Self>;267 type CallOrigin = EnsureAddressTruncated;268 type WithdrawOrigin = EnsureAddressTruncated;269 type AddressMapping = HashedAddressMapping<Self::Hashing>;270 type PrecompilesType = ();271 type PrecompilesValue = ();272 type Currency = Balances;273 type Event = Event;274 type OnMethodCall = (275 pallet_evm_migration::OnMethodCall<Self>,276 pallet_unique::UniqueErcSupport<Self>,277 pallet_evm_contract_helpers::HelpersOnMethodCall<Self>,278 );279 type OnCreate = pallet_evm_contract_helpers::HelpersOnCreate<Self>;280 type ChainId = ChainId;281 type Runner = pallet_evm::runner::stack::Runner<Self>;282 type OnChargeTransaction = pallet_evm_transaction_payment::OnChargeTransaction<Self>;283 type TransactionValidityHack = pallet_evm_transaction_payment::TransactionValidityHack<Self>;284 type FindAuthor = EthereumFindAuthor<Aura>;285}286287impl pallet_evm_migration::Config for Runtime {288 type WeightInfo = pallet_evm_migration::weights::SubstrateWeight<Self>;289}290291pub struct EthereumFindAuthor<F>(core::marker::PhantomData<F>);292impl<F: FindAuthor<u32>> FindAuthor<H160> for EthereumFindAuthor<F> {293 fn find_author<'a, I>(digests: I) -> Option<H160>294 where295 I: 'a + IntoIterator<Item = (ConsensusEngineId, &'a [u8])>,296 {297 if let Some(author_index) = F::find_author(digests) {298 let authority_id = Aura::authorities()[author_index as usize].clone();299 return Some(H160::from_slice(&authority_id.to_raw_vec()[4..24]));300 }301 None302 }303}304305impl pallet_ethereum::Config for Runtime {306 type Event = Event;307 type StateRoot = pallet_ethereum::IntermediateStateRoot;308}309310impl pallet_randomness_collective_flip::Config for Runtime {}311312impl frame_system::Config for Runtime {313 /// The data to be stored in an account.314 type AccountData = pallet_balances::AccountData<Balance>;315 /// The identifier used to distinguish between accounts.316 type AccountId = AccountId;317 /// The basic call filter to use in dispatchable.318 type BaseCallFilter = Everything;319 /// Maximum number of block number to block hash mappings to keep (oldest pruned first).320 type BlockHashCount = BlockHashCount;321 /// The maximum length of a block (in bytes).322 type BlockLength = RuntimeBlockLength;323 /// The index type for blocks.324 type BlockNumber = BlockNumber;325 /// The weight of the overhead invoked on the block import process, independent of the extrinsics included in that block.326 type BlockWeights = RuntimeBlockWeights;327 /// The aggregated dispatch type that is available for extrinsics.328 type Call = Call;329 /// The weight of database operations that the runtime can invoke.330 type DbWeight = RocksDbWeight;331 /// The ubiquitous event type.332 type Event = Event;333 /// The type for hashing blocks and tries.334 type Hash = Hash;335 /// The hashing algorithm used.336 type Hashing = BlakeTwo256;337 /// The header type.338 type Header = generic::Header<BlockNumber, BlakeTwo256>;339 /// The index type for storing how many extrinsics an account has signed.340 type Index = Index;341 /// The lookup mechanism to get account ID from whatever is passed in dispatchers.342 type Lookup = AccountIdLookup<AccountId, ()>;343 /// What to do if an account is fully reaped from the system.344 type OnKilledAccount = ();345 /// What to do if a new account is created.346 type OnNewAccount = ();347 type OnSetCode = cumulus_pallet_parachain_system::ParachainSetCode<Self>;348 /// The ubiquitous origin type.349 type Origin = Origin;350 /// This type is being generated by `construct_runtime!`.351 type PalletInfo = PalletInfo;352 /// This is used as an identifier of the chain. 42 is the generic substrate prefix.353 type SS58Prefix = SS58Prefix;354 /// Weight information for the extrinsics of this pallet.355 type SystemWeightInfo = frame_system::weights::SubstrateWeight<Self>;356 /// Version of the runtime.357 type Version = Version;358 type MaxConsumers = ConstU32<16>;359}360361parameter_types! {362 pub const MinimumPeriod: u64 = SLOT_DURATION / 2;363}364365impl pallet_timestamp::Config for Runtime {366 /// A timestamp: milliseconds since the unix epoch.367 type Moment = u64;368 type OnTimestampSet = ();369 type MinimumPeriod = MinimumPeriod;370 type WeightInfo = ();371}372373parameter_types! {374 // pub const ExistentialDeposit: u128 = 500;375 pub const ExistentialDeposit: u128 = 0;376 pub const MaxLocks: u32 = 50;377}378379impl pallet_balances::Config for Runtime {380 type MaxLocks = MaxLocks;381 type MaxReserves = ();382 type ReserveIdentifier = [u8; 8];383 /// The type for recording an account's balance.384 type Balance = Balance;385 /// The ubiquitous event type.386 type Event = Event;387 type DustRemoval = Treasury;388 type ExistentialDeposit = ExistentialDeposit;389 type AccountStore = System;390 type WeightInfo = pallet_balances::weights::SubstrateWeight<Self>;391}392393pub const fn deposit(items: u32, bytes: u32) -> Balance {394 items as Balance * 15 * CENTIUNIQUE + (bytes as Balance) * 6 * CENTIUNIQUE395}396397/*398parameter_types! {399 pub TombstoneDeposit: Balance = deposit(400 1,401 sp_std::mem::size_of::<pallet_contracts::Pallet<Runtime>> as u32,402 );403 pub DepositPerContract: Balance = TombstoneDeposit::get();404 pub const DepositPerStorageByte: Balance = deposit(0, 1);405 pub const DepositPerStorageItem: Balance = deposit(1, 0);406 pub RentFraction: Perbill = Perbill::from_rational(1u32, 30 * DAYS);407 pub const SurchargeReward: Balance = 150 * MILLIUNIQUE;408 pub const SignedClaimHandicap: u32 = 2;409 pub const MaxDepth: u32 = 32;410 pub const MaxValueSize: u32 = 16 * 1024;411 pub const MaxCodeSize: u32 = 1024 * 1024 * 25; // 25 Mb412 // The lazy deletion runs inside on_initialize.413 pub DeletionWeightLimit: Weight = AVERAGE_ON_INITIALIZE_RATIO *414 RuntimeBlockWeights::get().max_block;415 // The weight needed for decoding the queue should be less or equal than a fifth416 // of the overall weight dedicated to the lazy deletion.417 pub DeletionQueueDepth: u32 = ((DeletionWeightLimit::get() / (418 <Runtime as pallet_contracts::Config>::WeightInfo::on_initialize_per_queue_item(1) -419 <Runtime as pallet_contracts::Config>::WeightInfo::on_initialize_per_queue_item(0)420 )) / 5) as u32;421 pub Schedule: pallet_contracts::Schedule<Runtime> = Default::default();422}423424impl pallet_contracts::Config for Runtime {425 type Time = Timestamp;426 type Randomness = RandomnessCollectiveFlip;427 type Currency = Balances;428 type Event = Event;429 type RentPayment = ();430 type SignedClaimHandicap = SignedClaimHandicap;431 type TombstoneDeposit = TombstoneDeposit;432 type DepositPerContract = DepositPerContract;433 type DepositPerStorageByte = DepositPerStorageByte;434 type DepositPerStorageItem = DepositPerStorageItem;435 type RentFraction = RentFraction;436 type SurchargeReward = SurchargeReward;437 type WeightPrice = pallet_transaction_payment::Pallet<Self>;438 type WeightInfo = pallet_contracts::weights::SubstrateWeight<Self>;439 type ChainExtension = NFTExtension;440 type DeletionQueueDepth = DeletionQueueDepth;441 type DeletionWeightLimit = DeletionWeightLimit;442 type Schedule = Schedule;443 type CallStack = [pallet_contracts::Frame<Self>; 31];444}445*/446447parameter_types! {448 /// This value increases the priority of `Operational` transactions by adding449 /// a "virtual tip" that's equal to the `OperationalFeeMultiplier * final_fee`.450 pub const OperationalFeeMultiplier: u8 = 5;451}452453/// Linear implementor of `WeightToFeePolynomial`454pub struct LinearFee<T>(sp_std::marker::PhantomData<T>);455456impl<T> WeightToFeePolynomial for LinearFee<T>457where458 T: BaseArithmetic + From<u32> + Copy + Unsigned,459{460 type Balance = T;461462 fn polynomial() -> WeightToFeeCoefficients<Self::Balance> {463 smallvec!(WeightToFeeCoefficient {464 // Targeting 0.1 Unique per NFT transfer465 coeff_integer: WEIGHT_TO_FEE_COEFF.into(),466 coeff_frac: Perbill::zero(),467 negative: false,468 degree: 1,469 })470 }471}472473impl pallet_transaction_payment::Config for Runtime {474 type OnChargeTransaction = pallet_transaction_payment::CurrencyAdapter<Balances, DealWithFees>;475 type TransactionByteFee = TransactionByteFee;476 type OperationalFeeMultiplier = OperationalFeeMultiplier;477 type WeightToFee = LinearFee<Balance>;478 type FeeMultiplierUpdate = ();479}480481parameter_types! {482 pub const ProposalBond: Permill = Permill::from_percent(5);483 pub const ProposalBondMinimum: Balance = 1 * UNIQUE;484 pub const ProposalBondMaximum: Balance = 1000 * UNIQUE;485 pub const SpendPeriod: BlockNumber = 5 * MINUTES;486 pub const Burn: Permill = Permill::from_percent(0);487 pub const TipCountdown: BlockNumber = 1 * DAYS;488 pub const TipFindersFee: Percent = Percent::from_percent(20);489 pub const TipReportDepositBase: Balance = 1 * UNIQUE;490 pub const DataDepositPerByte: Balance = 1 * CENTIUNIQUE;491 pub const BountyDepositBase: Balance = 1 * UNIQUE;492 pub const BountyDepositPayoutDelay: BlockNumber = 1 * DAYS;493 pub const TreasuryModuleId: PalletId = PalletId(*b"py/trsry");494 pub const BountyUpdatePeriod: BlockNumber = 14 * DAYS;495 pub const MaximumReasonLength: u32 = 16384;496 pub const BountyCuratorDeposit: Permill = Permill::from_percent(50);497 pub const BountyValueMinimum: Balance = 5 * UNIQUE;498 pub const MaxApprovals: u32 = 100;499}500501impl pallet_treasury::Config for Runtime {502 type PalletId = TreasuryModuleId;503 type Currency = Balances;504 type ApproveOrigin = EnsureRoot<AccountId>;505 type RejectOrigin = EnsureRoot<AccountId>;506 type Event = Event;507 type OnSlash = ();508 type ProposalBond = ProposalBond;509 type ProposalBondMinimum = ProposalBondMinimum;510 type ProposalBondMaximum = ProposalBondMaximum;511 type SpendPeriod = SpendPeriod;512 type Burn = Burn;513 type BurnDestination = ();514 type SpendFunds = ();515 type WeightInfo = pallet_treasury::weights::SubstrateWeight<Self>;516 type MaxApprovals = MaxApprovals;517}518519impl pallet_sudo::Config for Runtime {520 type Event = Event;521 type Call = Call;522}523524pub struct RelayChainBlockNumberProvider<T>(sp_std::marker::PhantomData<T>);525526impl<T: cumulus_pallet_parachain_system::Config> BlockNumberProvider527 for RelayChainBlockNumberProvider<T>528{529 type BlockNumber = BlockNumber;530531 fn current_block_number() -> Self::BlockNumber {532 cumulus_pallet_parachain_system::Pallet::<T>::validation_data()533 .map(|d| d.relay_parent_number)534 .unwrap_or_default()535 }536}537538parameter_types! {539 pub const MinVestedTransfer: Balance = 10 * UNIQUE;540 pub const MaxVestingSchedules: u32 = 28;541}542543impl orml_vesting::Config for Runtime {544 type Event = Event;545 type Currency = pallet_balances::Pallet<Runtime>;546 type MinVestedTransfer = MinVestedTransfer;547 type VestedTransferOrigin = EnsureSigned<AccountId>;548 type WeightInfo = ();549 type MaxVestingSchedules = MaxVestingSchedules;550 type BlockNumberProvider = RelayChainBlockNumberProvider<Runtime>;551}552553parameter_types! {554 pub const ReservedDmpWeight: Weight = MAXIMUM_BLOCK_WEIGHT / 4;555 pub const ReservedXcmpWeight: Weight = MAXIMUM_BLOCK_WEIGHT / 4;556}557558impl cumulus_pallet_parachain_system::Config for Runtime {559 type Event = Event;560 type SelfParaId = parachain_info::Pallet<Self>;561 type OnSystemEvent = ();562 // type DownwardMessageHandlers = cumulus_primitives_utility::UnqueuedDmpAsParent<563 // MaxDownwardMessageWeight,564 // XcmExecutor<XcmConfig>,565 // Call,566 // >;567 type OutboundXcmpMessageSource = XcmpQueue;568 type DmpMessageHandler = DmpQueue;569 type ReservedDmpWeight = ReservedDmpWeight;570 type ReservedXcmpWeight = ReservedXcmpWeight;571 type XcmpMessageHandler = XcmpQueue;572}573574impl parachain_info::Config for Runtime {}575576impl cumulus_pallet_aura_ext::Config for Runtime {}577578parameter_types! {579 pub const RelayLocation: MultiLocation = MultiLocation::parent();580 pub const RelayNetwork: NetworkId = NetworkId::Polkadot;581 pub RelayOrigin: Origin = cumulus_pallet_xcm::Origin::Relay.into();582 pub Ancestry: MultiLocation = Parachain(ParachainInfo::parachain_id().into()).into();583}584585/// Type for specifying how a `MultiLocation` can be converted into an `AccountId`. This is used586/// when determining ownership of accounts for asset transacting and when attempting to use XCM587/// `Transact` in order to determine the dispatch Origin.588pub type LocationToAccountId = (589 // The parent (Relay-chain) origin converts to the default `AccountId`.590 ParentIsPreset<AccountId>,591 // Sibling parachain origins convert to AccountId via the `ParaId::into`.592 SiblingParachainConvertsVia<Sibling, AccountId>,593 // Straight up local `AccountId32` origins just alias directly to `AccountId`.594 AccountId32Aliases<RelayNetwork, AccountId>,595);596597pub struct OnlySelfCurrency;598impl<B: TryFrom<u128>> MatchesFungible<B> for OnlySelfCurrency {599 fn matches_fungible(a: &MultiAsset) -> Option<B> {600 match (&a.id, &a.fun) {601 (Concrete(_), XcmFungible(ref amount)) => CheckedConversion::checked_from(*amount),602 _ => None,603 }604 }605}606607/// Means for transacting assets on this chain.608pub type LocalAssetTransactor = CurrencyAdapter<609 // Use this currency:610 Balances,611 // Use this currency when it is a fungible asset matching the given location or name:612 OnlySelfCurrency,613 // Do a simple punn to convert an AccountId32 MultiLocation into a native chain account ID:614 LocationToAccountId,615 // Our chain's account ID type (we can't get away without mentioning it explicitly):616 AccountId,617 // We don't track any teleports.618 (),619>;620621/// This is the type we use to convert an (incoming) XCM origin into a local `Origin` instance,622/// ready for dispatching a transaction with Xcm's `Transact`. There is an `OriginKind` which can623/// biases the kind of local `Origin` it will become.624pub type XcmOriginToTransactDispatchOrigin = (625 // Sovereign account converter; this attempts to derive an `AccountId` from the origin location626 // using `LocationToAccountId` and then turn that into the usual `Signed` origin. Useful for627 // foreign chains who want to have a local sovereign account on this chain which they control.628 SovereignSignedViaLocation<LocationToAccountId, Origin>,629 // Native converter for Relay-chain (Parent) location; will converts to a `Relay` origin when630 // recognised.631 RelayChainAsNative<RelayOrigin, Origin>,632 // Native converter for sibling Parachains; will convert to a `SiblingPara` origin when633 // recognised.634 SiblingParachainAsNative<cumulus_pallet_xcm::Origin, Origin>,635 // Superuser converter for the Relay-chain (Parent) location. This will allow it to issue a636 // transaction from the Root origin.637 ParentAsSuperuser<Origin>,638 // Native signed account converter; this just converts an `AccountId32` origin into a normal639 // `Origin::Signed` origin of the same 32-byte value.640 SignedAccountId32AsNative<RelayNetwork, Origin>,641 // Xcm origins can be represented natively under the Xcm pallet's Xcm origin.642 XcmPassthrough<Origin>,643);644645parameter_types! {646 // One XCM operation is 1_000_000 weight - almost certainly a conservative estimate.647 pub UnitWeightCost: Weight = 1_000_000;648 // 1200 UNIQUEs buy 1 second of weight.649 pub const WeightPrice: (MultiLocation, u128) = (MultiLocation::parent(), 1_200 * UNIQUE);650 pub const MaxInstructions: u32 = 100;651 pub const MaxAuthorities: u32 = 100_000;652}653654match_type! {655 pub type ParentOrParentsUnitPlurality: impl Contains<MultiLocation> = {656 MultiLocation { parents: 1, interior: Here } |657 MultiLocation { parents: 1, interior: X1(Plurality { id: BodyId::Unit, .. }) }658 };659}660661pub type Barrier = (662 TakeWeightCredit,663 AllowTopLevelPaidExecutionFrom<Everything>,664 AllowUnpaidExecutionFrom<ParentOrParentsUnitPlurality>,665 // ^^^ Parent & its unit plurality gets free execution666);667668pub struct UsingOnlySelfCurrencyComponents<669 WeightToFee: WeightToFeePolynomial<Balance = Currency::Balance>,670 AssetId: Get<MultiLocation>,671 AccountId,672 Currency: CurrencyT<AccountId>,673 OnUnbalanced: OnUnbalancedT<Currency::NegativeImbalance>,674>(675 Weight,676 Currency::Balance,677 PhantomData<(WeightToFee, AssetId, AccountId, Currency, OnUnbalanced)>,678);679impl<680 WeightToFee: WeightToFeePolynomial<Balance = Currency::Balance>,681 AssetId: Get<MultiLocation>,682 AccountId,683 Currency: CurrencyT<AccountId>,684 OnUnbalanced: OnUnbalancedT<Currency::NegativeImbalance>,685 > WeightTrader686 for UsingOnlySelfCurrencyComponents<WeightToFee, AssetId, AccountId, Currency, OnUnbalanced>687{688 fn new() -> Self {689 Self(0, Zero::zero(), PhantomData)690 }691692 fn buy_weight(&mut self, weight: Weight, payment: Assets) -> Result<Assets, XcmError> {693 let amount = WeightToFee::calc(&weight);694 let u128_amount: u128 = amount.try_into().map_err(|_| XcmError::Overflow)?;695696 // location to this parachain through relay chain697 let option1: xcm::v1::AssetId = Concrete(MultiLocation {698 parents: 1,699 interior: X1(Parachain(ParachainInfo::parachain_id().into())),700 });701 // direct location702 let option2: xcm::v1::AssetId = Concrete(MultiLocation {703 parents: 0,704 interior: Here,705 });706707 let required = if payment.fungible.contains_key(&option1) {708 (option1, u128_amount).into()709 } else if payment.fungible.contains_key(&option2) {710 (option2, u128_amount).into()711 } else {712 (Concrete(MultiLocation::default()), u128_amount).into()713 };714715 let unused = payment716 .checked_sub(required)717 .map_err(|_| XcmError::TooExpensive)?;718 self.0 = self.0.saturating_add(weight);719 self.1 = self.1.saturating_add(amount);720 Ok(unused)721 }722723 fn refund_weight(&mut self, weight: Weight) -> Option<MultiAsset> {724 let weight = weight.min(self.0);725 let amount = WeightToFee::calc(&weight);726 self.0 -= weight;727 self.1 = self.1.saturating_sub(amount);728 let amount: u128 = amount.saturated_into();729 if amount > 0 {730 Some((AssetId::get(), amount).into())731 } else {732 None733 }734 }735}736impl<737 WeightToFee: WeightToFeePolynomial<Balance = Currency::Balance>,738 AssetId: Get<MultiLocation>,739 AccountId,740 Currency: CurrencyT<AccountId>,741 OnUnbalanced: OnUnbalancedT<Currency::NegativeImbalance>,742 > Drop743 for UsingOnlySelfCurrencyComponents<WeightToFee, AssetId, AccountId, Currency, OnUnbalanced>744{745 fn drop(&mut self) {746 OnUnbalanced::on_unbalanced(Currency::issue(self.1));747 }748}749750pub struct XcmConfig;751impl Config for XcmConfig {752 type Call = Call;753 type XcmSender = XcmRouter;754 // How to withdraw and deposit an asset.755 type AssetTransactor = LocalAssetTransactor;756 type OriginConverter = XcmOriginToTransactDispatchOrigin;757 type IsReserve = NativeAsset;758 type IsTeleporter = (); // Teleportation is disabled759 type LocationInverter = LocationInverter<Ancestry>;760 type Barrier = Barrier;761 type Weigher = FixedWeightBounds<UnitWeightCost, Call, MaxInstructions>;762 type Trader = UsingOnlySelfCurrencyComponents<763 IdentityFee<Balance>,764 RelayLocation,765 AccountId,766 Balances,767 (),768 >;769 type ResponseHandler = (); // Don't handle responses for now.770 type SubscriptionService = PolkadotXcm;771772 type AssetTrap = PolkadotXcm;773 type AssetClaims = PolkadotXcm;774}775776// parameter_types! {777// pub const MaxDownwardMessageWeight: Weight = MAXIMUM_BLOCK_WEIGHT / 10;778// }779780/// No local origins on this chain are allowed to dispatch XCM sends/executions.781pub type LocalOriginToLocation = (SignedToAccountId32<Origin, AccountId, RelayNetwork>,);782783/// The means for routing XCM messages which are not for local execution into the right message784/// queues.785pub type XcmRouter = (786 // Two routers - use UMP to communicate with the relay chain:787 cumulus_primitives_utility::ParentAsUmp<ParachainSystem, ()>,788 // ..and XCMP to communicate with the sibling chains.789 XcmpQueue,790);791792impl pallet_evm_coder_substrate::Config for Runtime {793 type EthereumTransactionSender = pallet_ethereum::Pallet<Self>;794 type GasWeightMapping = FixedGasWeightMapping;795}796797impl pallet_xcm::Config for Runtime {798 type Event = Event;799 type SendXcmOrigin = EnsureXcmOrigin<Origin, LocalOriginToLocation>;800 type XcmRouter = XcmRouter;801 type ExecuteXcmOrigin = EnsureXcmOrigin<Origin, LocalOriginToLocation>;802 type XcmExecuteFilter = Everything;803 type XcmExecutor = XcmExecutor<XcmConfig>;804 type XcmTeleportFilter = Everything;805 type XcmReserveTransferFilter = Everything;806 type Weigher = FixedWeightBounds<UnitWeightCost, Call, MaxInstructions>;807 type LocationInverter = LocationInverter<Ancestry>;808 type Origin = Origin;809 type Call = Call;810 const VERSION_DISCOVERY_QUEUE_SIZE: u32 = 100;811 type AdvertisedXcmVersion = pallet_xcm::CurrentXcmVersion;812}813814impl cumulus_pallet_xcm::Config for Runtime {815 type Event = Event;816 type XcmExecutor = XcmExecutor<XcmConfig>;817}818819impl cumulus_pallet_xcmp_queue::Config for Runtime {820 type WeightInfo = ();821 type Event = Event;822 type XcmExecutor = XcmExecutor<XcmConfig>;823 type ChannelInfo = ParachainSystem;824 type VersionWrapper = ();825 type ExecuteOverweightOrigin = frame_system::EnsureRoot<AccountId>;826 type ControllerOrigin = EnsureRoot<AccountId>;827 type ControllerOriginConverter = XcmOriginToTransactDispatchOrigin;828}829830impl cumulus_pallet_dmp_queue::Config for Runtime {831 type Event = Event;832 type XcmExecutor = XcmExecutor<XcmConfig>;833 type ExecuteOverweightOrigin = frame_system::EnsureRoot<AccountId>;834}835836impl pallet_aura::Config for Runtime {837 type AuthorityId = AuraId;838 type DisabledValidators = ();839 type MaxAuthorities = MaxAuthorities;840}841842parameter_types! {843 pub TreasuryAccountId: AccountId = TreasuryModuleId::get().into_account();844 pub const CollectionCreationPrice: Balance = 2 * UNIQUE;845}846847impl pallet_common::Config for Runtime {848 type Event = Event;849 type Currency = Balances;850 type CollectionCreationPrice = CollectionCreationPrice;851 type TreasuryAccountId = TreasuryAccountId;852}853854impl pallet_evm::account::Config for Runtime {855 type CrossAccountId = pallet_evm::account::BasicCrossAccountId<Self>;856 type EvmAddressMapping = HashedAddressMapping<Self::Hashing>;857 type EvmBackwardsAddressMapping = fp_evm_mapping::MapBackwardsAddressTruncated;858}859860impl pallet_fungible::Config for Runtime {861 type WeightInfo = pallet_fungible::weights::SubstrateWeight<Self>;862}863impl pallet_refungible::Config for Runtime {864 type WeightInfo = pallet_refungible::weights::SubstrateWeight<Self>;865}866impl pallet_nonfungible::Config for Runtime {867 type WeightInfo = pallet_nonfungible::weights::SubstrateWeight<Self>;868}869870impl pallet_unique::Config for Runtime {871 type Event = Event;872 type WeightInfo = pallet_unique::weights::SubstrateWeight<Self>;873}874875parameter_types! {876 pub const InflationBlockInterval: BlockNumber = 100; // every time per how many blocks inflation is applied877}878879/// Used for the pallet inflation880impl pallet_inflation::Config for Runtime {881 type Currency = Balances;882 type TreasuryAccountId = TreasuryAccountId;883 type InflationBlockInterval = InflationBlockInterval;884 type BlockNumberProvider = RelayChainBlockNumberProvider<Runtime>;885}886887// parameter_types! {888// pub MaximumSchedulerWeight: Weight = Perbill::from_percent(50) *889// RuntimeBlockWeights::get().max_block;890// pub const MaxScheduledPerBlock: u32 = 50;891// }892893type EvmSponsorshipHandler = (894 pallet_unique::UniqueEthSponsorshipHandler<Runtime>,895 pallet_evm_contract_helpers::HelpersContractSponsoring<Runtime>,896);897type SponsorshipHandler = (898 pallet_unique::UniqueSponsorshipHandler<Runtime>,899 //pallet_contract_helpers::ContractSponsorshipHandler<Runtime>,900 pallet_evm_transaction_payment::BridgeSponsorshipHandler<Runtime>,901);902903// impl pallet_unq_scheduler::Config for Runtime {904// type Event = Event;905// type Origin = Origin;906// type PalletsOrigin = OriginCaller;907// type Call = Call;908// type MaximumWeight = MaximumSchedulerWeight;909// type ScheduleOrigin = EnsureSigned<AccountId>;910// type MaxScheduledPerBlock = MaxScheduledPerBlock;911// type SponsorshipHandler = SponsorshipHandler;912// type WeightInfo = ();913// }914915impl pallet_evm_transaction_payment::Config for Runtime {916 type EvmSponsorshipHandler = EvmSponsorshipHandler;917 type Currency = Balances;918}919920impl pallet_charge_transaction::Config for Runtime {921 type SponsorshipHandler = SponsorshipHandler;922}923924// impl pallet_contract_helpers::Config for Runtime {925// type DefaultSponsoringRateLimit = DefaultSponsoringRateLimit;926// }927928parameter_types! {929 // 0x842899ECF380553E8a4de75bF534cdf6fBF64049930 pub const HelpersContractAddress: H160 = H160([931 0x84, 0x28, 0x99, 0xec, 0xf3, 0x80, 0x55, 0x3e, 0x8a, 0x4d, 0xe7, 0x5b, 0xf5, 0x34, 0xcd, 0xf6, 0xfb, 0xf6, 0x40, 0x49,932 ]);933}934935impl pallet_evm_contract_helpers::Config for Runtime {936 type ContractAddress = HelpersContractAddress;937 type DefaultSponsoringRateLimit = DefaultSponsoringRateLimit;938}939940construct_runtime!(941 pub enum Runtime where942 Block = Block,943 NodeBlock = opaque::Block,944 UncheckedExtrinsic = UncheckedExtrinsic945 {946 ParachainSystem: cumulus_pallet_parachain_system::{Pallet, Call, Config, Storage, Inherent, Event<T>, ValidateUnsigned} = 20,947 ParachainInfo: parachain_info::{Pallet, Storage, Config} = 21,948949 Aura: pallet_aura::{Pallet, Config<T>} = 22,950 AuraExt: cumulus_pallet_aura_ext::{Pallet, Config} = 23,951952 Balances: pallet_balances::{Pallet, Call, Storage, Config<T>, Event<T>} = 30,953 RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage} = 31,954 Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent} = 32,955 TransactionPayment: pallet_transaction_payment::{Pallet, Storage} = 33,956 Treasury: pallet_treasury::{Pallet, Call, Storage, Config, Event<T>} = 34,957 Sudo: pallet_sudo::{Pallet, Call, Storage, Config<T>, Event<T>} = 35,958 System: frame_system::{Pallet, Call, Storage, Config, Event<T>} = 36,959 Vesting: orml_vesting::{Pallet, Storage, Call, Event<T>, Config<T>} = 37,960 // Vesting: pallet_vesting::{Pallet, Call, Config<T>, Storage, Event<T>} = 37,961 // Contracts: pallet_contracts::{Pallet, Call, Storage, Event<T>} = 38,962963 // XCM helpers.964 XcmpQueue: cumulus_pallet_xcmp_queue::{Pallet, Call, Storage, Event<T>} = 50,965 PolkadotXcm: pallet_xcm::{Pallet, Call, Event<T>, Origin} = 51,966 CumulusXcm: cumulus_pallet_xcm::{Pallet, Call, Event<T>, Origin} = 52,967 DmpQueue: cumulus_pallet_dmp_queue::{Pallet, Call, Storage, Event<T>} = 53,968969 // Unique Pallets970 Inflation: pallet_inflation::{Pallet, Call, Storage} = 60,971 Unique: pallet_unique::{Pallet, Call, Storage, Event<T>} = 61,972 // Scheduler: pallet_unq_scheduler::{Pallet, Call, Storage, Event<T>} = 62,973 // free = 63974 Charging: pallet_charge_transaction::{Pallet, Call, Storage } = 64,975 // ContractHelpers: pallet_contract_helpers::{Pallet, Call, Storage} = 65,976 Common: pallet_common::{Pallet, Storage, Event<T>} = 66,977 Fungible: pallet_fungible::{Pallet, Storage} = 67,978 Refungible: pallet_refungible::{Pallet, Storage} = 68,979 Nonfungible: pallet_nonfungible::{Pallet, Storage} = 69,980981 // Frontier982 EVM: pallet_evm::{Pallet, Config, Call, Storage, Event<T>} = 100,983 Ethereum: pallet_ethereum::{Pallet, Config, Call, Storage, Event, Origin} = 101,984985 EvmCoderSubstrate: pallet_evm_coder_substrate::{Pallet, Storage} = 150,986 EvmContractHelpers: pallet_evm_contract_helpers::{Pallet, Storage} = 151,987 EvmTransactionPayment: pallet_evm_transaction_payment::{Pallet} = 152,988 EvmMigration: pallet_evm_migration::{Pallet, Call, Storage} = 153,989 }990);991992pub struct TransactionConverter;993994impl fp_rpc::ConvertTransaction<UncheckedExtrinsic> for TransactionConverter {995 fn convert_transaction(&self, transaction: pallet_ethereum::Transaction) -> UncheckedExtrinsic {996 UncheckedExtrinsic::new_unsigned(997 pallet_ethereum::Call::<Runtime>::transact { transaction }.into(),998 )999 }1000}10011002impl fp_rpc::ConvertTransaction<opaque::UncheckedExtrinsic> for TransactionConverter {1003 fn convert_transaction(1004 &self,1005 transaction: pallet_ethereum::Transaction,1006 ) -> opaque::UncheckedExtrinsic {1007 let extrinsic = UncheckedExtrinsic::new_unsigned(1008 pallet_ethereum::Call::<Runtime>::transact { transaction }.into(),1009 );1010 let encoded = extrinsic.encode();1011 opaque::UncheckedExtrinsic::decode(&mut &encoded[..])1012 .expect("Encoded extrinsic is always valid")1013 }1014}10151016/// The address format for describing accounts.1017pub type Address = sp_runtime::MultiAddress<AccountId, ()>;1018/// Block header type as expected by this runtime.1019pub type Header = generic::Header<BlockNumber, BlakeTwo256>;1020/// Block type as expected by this runtime.1021pub type Block = generic::Block<Header, UncheckedExtrinsic>;1022/// A Block signed with a Justification1023pub type SignedBlock = generic::SignedBlock<Block>;1024/// BlockId type as expected by this runtime.1025pub type BlockId = generic::BlockId<Block>;1026/// The SignedExtension to the basic transaction logic.1027pub type SignedExtra = (1028 frame_system::CheckSpecVersion<Runtime>,1029 // system::CheckTxVersion<Runtime>,1030 frame_system::CheckGenesis<Runtime>,1031 frame_system::CheckEra<Runtime>,1032 frame_system::CheckNonce<Runtime>,1033 frame_system::CheckWeight<Runtime>,1034 pallet_charge_transaction::ChargeTransactionPayment<Runtime>,1035 //pallet_contract_helpers::ContractHelpersExtension<Runtime>,1036);1037/// Unchecked extrinsic type as expected by this runtime.1038pub type UncheckedExtrinsic =1039 fp_self_contained::UncheckedExtrinsic<Address, Call, Signature, SignedExtra>;1040/// Extrinsic type that has already been checked.1041pub type CheckedExtrinsic = fp_self_contained::CheckedExtrinsic<AccountId, Call, SignedExtra, H160>;1042/// Executive: handles dispatch to the various modules.1043pub type Executive = frame_executive::Executive<1044 Runtime,1045 Block,1046 frame_system::ChainContext<Runtime>,1047 Runtime,1048 AllPalletsReversedWithSystemFirst,1049>;10501051impl_opaque_keys! {1052 pub struct SessionKeys {1053 pub aura: Aura,1054 }1055}10561057impl fp_self_contained::SelfContainedCall for Call {1058 type SignedInfo = H160;10591060 fn is_self_contained(&self) -> bool {1061 match self {1062 Call::Ethereum(call) => call.is_self_contained(),1063 _ => false,1064 }1065 }10661067 fn check_self_contained(&self) -> Option<Result<Self::SignedInfo, TransactionValidityError>> {1068 match self {1069 Call::Ethereum(call) => call.check_self_contained(),1070 _ => None,1071 }1072 }10731074 fn validate_self_contained(&self, info: &Self::SignedInfo) -> Option<TransactionValidity> {1075 match self {1076 Call::Ethereum(call) => call.validate_self_contained(info),1077 _ => None,1078 }1079 }10801081 fn pre_dispatch_self_contained(1082 &self,1083 info: &Self::SignedInfo,1084 ) -> Option<Result<(), TransactionValidityError>> {1085 match self {1086 Call::Ethereum(call) => call.pre_dispatch_self_contained(info),1087 _ => None,1088 }1089 }10901091 fn apply_self_contained(1092 self,1093 info: Self::SignedInfo,1094 ) -> Option<sp_runtime::DispatchResultWithInfo<PostDispatchInfoOf<Self>>> {1095 match self {1096 call @ Call::Ethereum(pallet_ethereum::Call::transact { .. }) => Some(call.dispatch(1097 Origin::from(pallet_ethereum::RawOrigin::EthereumTransaction(info)),1098 )),1099 _ => None,1100 }1101 }1102}11031104macro_rules! dispatch_unique_runtime {1105 ($collection:ident.$method:ident($($name:ident),*)) => {{1106 use pallet_unique::dispatch::Dispatched;11071108 let collection = Dispatched::dispatch(<pallet_common::CollectionHandle<Runtime>>::try_get($collection)?);1109 let dispatch = collection.as_dyn();11101111 Ok(dispatch.$method($($name),*))1112 }};1113}11141115impl_common_runtime_apis!();11161117struct CheckInherents;11181119impl cumulus_pallet_parachain_system::CheckInherents<Block> for CheckInherents {1120 fn check_inherents(1121 block: &Block,1122 relay_state_proof: &cumulus_pallet_parachain_system::RelayChainStateProof,1123 ) -> sp_inherents::CheckInherentsResult {1124 let relay_chain_slot = relay_state_proof1125 .read_slot()1126 .expect("Could not read the relay chain slot from the proof");11271128 let inherent_data =1129 cumulus_primitives_timestamp::InherentDataProvider::from_relay_chain_slot_and_duration(1130 relay_chain_slot,1131 sp_std::time::Duration::from_secs(6),1132 )1133 .create_inherent_data()1134 .expect("Could not create the timestamp inherent data");11351136 inherent_data.check_extrinsics(block)1137 }1138}11391140cumulus_pallet_parachain_system::register_validate_block!(1141 Runtime = Runtime,1142 BlockExecutor = cumulus_pallet_aura_ext::BlockExecutor::<Runtime, Executive>,1143 CheckInherents = CheckInherents,1144);tests/README.mddiffbeforeafterboth--- a/tests/README.md
+++ b/tests/README.md
@@ -20,7 +20,7 @@
git clone https://github.com/paritytech/polkadot-launch && cd polkadot-launch
```
-5. Run launch-test-env.sh from the root of this project
+5. Run launch-testnet.sh from the root of this project
## How to run tests
tests/package.jsondiffbeforeafterboth--- a/tests/package.json
+++ b/tests/package.json
@@ -67,6 +67,7 @@
"testPalletPresence": "mocha --timeout 9999999 -r ts-node/register ./**/pallet-presence.test.ts",
"testBlockProduction": "mocha --timeout 9999999 -r ts-node/register ./**/block-production.test.ts",
"testEnableDisableTransfers": "mocha --timeout 9999999 -r ts-node/register ./**/enableDisableTransfer.test.ts",
+ "testLimits": "mocha --timeout 9999999 -r ts-node/register ./**/limits.test.ts",
"polkadot-types-fetch-metadata": "curl -H 'Content-Type: application/json' -d '{\"id\":\"1\", \"jsonrpc\":\"2.0\", \"method\": \"state_getMetadata\", \"params\":[]}' http://localhost:9933 > src/interfaces/metadata.json",
"polkadot-types-from-defs": "echo 'export default {}' > src/interfaces/lookup.ts && ts-node ./node_modules/.bin/polkadot-types-from-defs --endpoint src/interfaces/metadata.json --input src/interfaces/ --package .",
"polkadot-types-from-chain": "ts-node ./node_modules/.bin/polkadot-types-from-chain --endpoint src/interfaces/metadata.json --output src/interfaces/ --package .",
tests/src/eth/base.test.tsdiffbeforeafterboth--- a/tests/src/eth/base.test.ts
+++ b/tests/src/eth/base.test.ts
@@ -34,7 +34,8 @@
const userB = createEthAccount(web3);
const cost = await recordEthFee(api, userA, () => web3.eth.sendTransaction({from: userA, to: userB, value: '1000000', ...GAS_ARGS}));
- expect(cost - await ethBalanceViaSub(api, userB) < BigInt(0.2 * Number(UNIQUE))).to.be.true;
+ const balanceB = await ethBalanceViaSub(api, userB);
+ expect(cost - balanceB < BigInt(0.2 * Number(UNIQUE))).to.be.true;
});
itWeb3('NFT transfer is close to 0.15 UNQ', async ({web3, api}) => {
tests/src/eth/contractSponsoring.test.tsdiffbeforeafterboth--- a/tests/src/eth/contractSponsoring.test.ts
+++ b/tests/src/eth/contractSponsoring.test.ts
@@ -24,7 +24,24 @@
itWeb3,
SponsoringMode,
createEthAccount,
+ collectionIdToAddress,
+ GAS_ARGS,
+ normalizeEvents,
+ subToEth,
+ executeEthTxOnSub,
} from './util/helpers';
+import {
+ addCollectionAdminExpectSuccess,
+ createCollectionExpectSuccess,
+ getCreateCollectionResult,
+ transferBalanceTo,
+} from '../util/helpers';
+import nonFungibleAbi from './nonFungibleAbi.json';
+import {
+ submitTransactionAsync,
+} from '../substrate/substrate-api';
+import getBalance from '../substrate/get-balance';
+import {alicesPublicKey} from '../accounts';
describe('Sponsoring EVM contracts', () => {
itWeb3('Sponsoring can be set by the address that has deployed the contract', async ({api, web3}) => {
@@ -199,4 +216,115 @@
const helpers = contractHelpers(web3, owner);
expect(await helpers.methods.getSponsoringRateLimit(flipper.options.address).call()).to.be.equals('7200');
});
+
+ itWeb3('Sponsoring evm address from substrate collection', async ({api, web3}) => {
+ const owner = privateKey('//Alice');
+ const userEth = createEthAccount(web3);
+ const collectionId = await createCollectionExpectSuccess();
+
+ {
+ const tx = api.tx.unique.setCollectionSponsor(collectionId, owner.address);
+ const events = await submitTransactionAsync(owner, tx);
+ const result = getCreateCollectionResult(events);
+ expect(result.success).to.be.true;
+ }
+ {
+ const tx = api.tx.unique.confirmSponsorship(collectionId);
+ const events = await submitTransactionAsync(owner, tx);
+ const result = getCreateCollectionResult(events);
+ expect(result.success).to.be.true;
+ }
+
+ const address = collectionIdToAddress(collectionId);
+ const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: userEth, ...GAS_ARGS});
+
+ { // This part should fail, because user not in access list and user have no money
+ const nextTokenId = await contract.methods.nextTokenId().call();
+ expect(nextTokenId).to.be.equal('1');
+ await expect(contract.methods.mintWithTokenURI(
+ userEth,
+ nextTokenId,
+ 'Test URI',
+ ).call({from: userEth})).to.be.rejectedWith(/PublicMintingNotAllowed/);
+ }
+
+ {
+ const tx = api.tx.unique.setPublicAccessMode(collectionId, 'AllowList');
+ const events = await submitTransactionAsync(owner, tx);
+ const result = getCreateCollectionResult(events);
+ expect(result.success).to.be.true;
+ }
+ {
+ const tx = api.tx.unique.addToAllowList(collectionId, {Ethereum: userEth});
+ const events = await submitTransactionAsync(owner, tx);
+ const result = getCreateCollectionResult(events);
+ expect(result.success).to.be.true;
+ }
+ {
+ const tx = api.tx.unique.setMintPermission(collectionId, true);
+ const events = await submitTransactionAsync(owner, tx);
+ const result = getCreateCollectionResult(events);
+ expect(result.success).to.be.true;
+ }
+
+ const [alicesBalanceBefore] = await getBalance(api, [alicesPublicKey]);
+
+ {
+ const nextTokenId = await contract.methods.nextTokenId().call();
+ expect(nextTokenId).to.be.equal('1');
+ const result = await contract.methods.mintWithTokenURI(
+ userEth,
+ nextTokenId,
+ 'Test URI',
+ ).send({from: userEth});
+ const events = normalizeEvents(result.events);
+
+ expect(events).to.be.deep.equal([
+ {
+ address,
+ event: 'Transfer',
+ args: {
+ from: '0x0000000000000000000000000000000000000000',
+ to: userEth,
+ tokenId: nextTokenId,
+ },
+ },
+ ]);
+
+ expect(await contract.methods.tokenURI(nextTokenId).call()).to.be.equal('Test URI');
+ }
+
+ const [alicesBalanceAfter] = await getBalance(api, [alicesPublicKey]);
+ expect(alicesBalanceAfter < alicesBalanceBefore).to.be.true;
+ });
+
+
+ itWeb3('Check that transaction via EVM spend money from substrate address', async ({api, web3}) => {
+ const owner = privateKey('//Alice');
+ const user = privateKey(`//User/${Date.now()}`);
+ const userEth = subToEth(user.address);
+ const collectionId = await createCollectionExpectSuccess();
+ await addCollectionAdminExpectSuccess(owner, collectionId, {Ethereum: userEth});
+ await transferBalanceTo(api, owner, user.address);
+
+ const address = collectionIdToAddress(collectionId);
+ const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: userEth, ...GAS_ARGS});
+
+ const [userBalanceBefore] = await getBalance(api, [user.address]);
+
+ {
+ const nextTokenId = await contract.methods.nextTokenId().call();
+ expect(nextTokenId).to.be.equal('1');
+ await executeEthTxOnSub(web3, api, user, contract, m => m.mintWithTokenURI(
+ userEth,
+ nextTokenId,
+ 'Test URI',
+ ));
+
+ expect(await contract.methods.tokenURI(nextTokenId).call()).to.be.equal('Test URI');
+ }
+
+ const [userBalanceAfter] = await getBalance(api, [user.address]);
+ expect(userBalanceAfter < userBalanceBefore).to.be.true;
+ });
});
tests/src/eth/marketplace/marketplace.test.tsdiffbeforeafterboth--- a/tests/src/eth/marketplace/marketplace.test.ts
+++ b/tests/src/eth/marketplace/marketplace.test.ts
@@ -15,13 +15,24 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
import {readFile} from 'fs/promises';
-import {getBalanceSingle, transferBalanceExpectSuccess} from '../../substrate/get-balance';
+import {getBalanceSingle} from '../../substrate/get-balance';
import privateKey from '../../substrate/privateKey';
-import {addToAllowListExpectSuccess, confirmSponsorshipExpectSuccess, createCollectionExpectSuccess, createFungibleItemExpectSuccess, createItemExpectSuccess, getTokenOwner, setCollectionLimitsExpectSuccess, setCollectionSponsorExpectSuccess, transferExpectSuccess, transferFromExpectSuccess} from '../../util/helpers';
+import {
+ addToAllowListExpectSuccess,
+ confirmSponsorshipExpectSuccess,
+ createCollectionExpectSuccess,
+ createItemExpectSuccess,
+ getTokenOwner,
+ setCollectionLimitsExpectSuccess,
+ setCollectionSponsorExpectSuccess,
+ transferExpectSuccess,
+ transferFromExpectSuccess,
+ transferBalanceTo,
+} from '../../util/helpers';
import {collectionIdToAddress, contractHelpers, createEthAccountWithBalance, executeEthTxOnSub, GAS_ARGS, itWeb3, SponsoringMode, subToEth, subToEthLowercase, transferBalanceToEth} from '../util/helpers';
import {evmToAddress} from '@polkadot/util-crypto';
import nonFungibleAbi from '../nonFungibleAbi.json';
-import fungibleAbi from '../fungibleAbi.json';
+
import {expect} from 'chai';
const PRICE = 2000n;
@@ -87,32 +98,39 @@
expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal({Substrate: alice.address});
});
- // selling for custom tokens excluded from release
- itWeb3.skip('With custom ERC20', async ({api, web3}) => {
+
+ itWeb3('With escrow', async ({api, web3}) => {
const alice = privateKey('//Alice');
const matcherOwner = await createEthAccountWithBalance(api, web3);
+ const escrow = await createEthAccountWithBalance(api, web3);
const matcherContract = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/MarketPlace.abi`)).toString()), undefined, {
from: matcherOwner,
...GAS_ARGS,
});
- const matcher = await matcherContract.deploy({data: (await readFile(`${__dirname}/MarketPlace.bin`)).toString(), arguments: [matcherOwner]}).send({from: matcherOwner});
+ const matcher = await matcherContract.deploy({data: (await readFile(`${__dirname}/MarketPlace.bin`)).toString(), arguments: [matcherOwner]}).send({from: matcherOwner, gas: 10000000});
+ await matcher.methods.setEscrow(escrow).send({from: matcherOwner});
+ const helpers = contractHelpers(web3, matcherOwner);
+ await helpers.methods.setSponsoringMode(matcher.options.address, SponsoringMode.Allowlisted).send({from: matcherOwner});
+ await helpers.methods.setSponsoringRateLimit(matcher.options.address, 1).send({from: matcherOwner});
+ await transferBalanceToEth(api, alice, matcher.options.address);
const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+ await setCollectionLimitsExpectSuccess(alice, collectionId, {sponsorApproveTimeout: 1});
const evmCollection = new web3.eth.Contract(nonFungibleAbi as any, collectionIdToAddress(collectionId), {from: matcherOwner});
+ await setCollectionSponsorExpectSuccess(collectionId, alice.address);
+ await transferBalanceToEth(api, alice, subToEth(alice.address));
+ await confirmSponsorshipExpectSuccess(collectionId);
- const fungibleId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
- const evmFungible = new web3.eth.Contract(fungibleAbi as any, collectionIdToAddress(fungibleId), {from: matcherOwner, ...GAS_ARGS});
- await createFungibleItemExpectSuccess(alice, fungibleId, {Value: PRICE}, {Ethereum: subToEth(alice.address)});
+ await helpers.methods.toggleAllowed(matcher.options.address, subToEth(alice.address), true).send({from: matcherOwner});
+ await addToAllowListExpectSuccess(alice, collectionId, evmToAddress(subToEth(alice.address)));
- const seller = privateKey('//Bob');
+ const seller = privateKey(`//Seller/${Date.now()}`);
+ await helpers.methods.toggleAllowed(matcher.options.address, subToEth(seller.address), true).send({from: matcherOwner});
const tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT', seller.address);
// To transfer item to matcher it first needs to be transfered to EVM account of bob
await transferExpectSuccess(collectionId, tokenId, seller, {Ethereum: subToEth(seller.address)});
- // Fees will be paid from EVM account, so we should have some balance here
- await transferBalanceExpectSuccess(api, seller, evmToAddress(subToEth(seller.address)), 10n ** 18n);
- await transferBalanceExpectSuccess(api, alice, evmToAddress(subToEth(alice.address)), 10n ** 18n);
// Token is owned by seller initially
expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal({Ethereum: subToEthLowercase(seller.address)});
@@ -120,66 +138,55 @@
// Ask
{
await executeEthTxOnSub(web3, api, seller, evmCollection, m => m.approve(matcher.options.address, tokenId));
- await executeEthTxOnSub(web3, api, seller, matcher, m => m.addAsk(PRICE, evmFungible.options.address, evmCollection.options.address, tokenId, 1));
+ await executeEthTxOnSub(web3, api, seller, matcher, m => m.addAsk(PRICE, '0x0000000000000000000000000000000000000001', evmCollection.options.address, tokenId));
}
// Token is transferred to matcher
expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal({Ethereum: matcher.options.address.toLowerCase()});
+ // Give buyer KSM
+ await matcher.methods.depositKSM(PRICE, subToEth(alice.address)).send({from: escrow});
+
// Buy
{
- const sellerBalanceBeforePurchase = BigInt(await evmFungible.methods.balanceOf(subToEth(seller.address)).call());
- const buyerBalanceBeforePurchase = BigInt(await evmFungible.methods.balanceOf(subToEth(alice.address)).call());
+ expect(await matcher.methods.balanceKSM(subToEth(seller.address)).call()).to.be.equal('0');
+ expect(await matcher.methods.balanceKSM(subToEth(alice.address)).call()).to.be.equal(PRICE.toString());
- await executeEthTxOnSub(web3, api, alice, evmFungible, m => m.approve(matcher.options.address, PRICE));
- // There is two functions named 'buy', so we should provide full signature
- await executeEthTxOnSub(web3, api, alice, matcher, m =>
- m['buy(address,uint256,address,uint256)'](evmCollection.options.address, tokenId, evmFungible.options.address, PRICE));
+ await executeEthTxOnSub(web3, api, alice, matcher, m => m.buyKSM(evmCollection.options.address, tokenId, subToEth(alice.address), subToEth(alice.address)));
- // Approved price is removed from buyer balance, and added to seller
- expect(BigInt(await evmFungible.methods.balanceOf(subToEth(seller.address)).call()) - sellerBalanceBeforePurchase === PRICE);
- expect(buyerBalanceBeforePurchase - BigInt(await evmFungible.methods.balanceOf(subToEth(alice.address)).call()) === PRICE);
+ // Price is removed from buyer balance, and added to seller
+ expect(await matcher.methods.balanceKSM(subToEth(alice.address)).call()).to.be.equal('0');
+ expect(await matcher.methods.balanceKSM(subToEth(seller.address)).call()).to.be.equal(PRICE.toString());
}
// Token is transferred to evm account of alice
expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal({Ethereum: subToEthLowercase(alice.address)});
-
// Transfer token to substrate side of alice
await transferFromExpectSuccess(collectionId, tokenId, alice, {Ethereum: subToEth(alice.address)}, {Substrate: alice.address});
- // Token is transferred to substrate account of alice
+ // Token is transferred to substrate account of alice, seller received funds
expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal({Substrate: alice.address});
});
- itWeb3('With escrow', async ({api, web3}) => {
+
+ itWeb3('Sell tokens from substrate user via EVM contract', async ({api, web3}) => {
const alice = privateKey('//Alice');
const matcherOwner = await createEthAccountWithBalance(api, web3);
- const escrow = await createEthAccountWithBalance(api, web3);
const matcherContract = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/MarketPlace.abi`)).toString()), undefined, {
from: matcherOwner,
...GAS_ARGS,
});
- const matcher = await matcherContract.deploy({data: (await readFile(`${__dirname}/MarketPlace.bin`)).toString(), arguments: [matcherOwner]}).send({from: matcherOwner, gas: 10000000});
- await matcher.methods.setEscrow(escrow).send({from: matcherOwner});
- const helpers = contractHelpers(web3, matcherOwner);
- await helpers.methods.setSponsoringMode(matcher.options.address, SponsoringMode.Allowlisted).send({from: matcherOwner});
- await helpers.methods.setSponsoringRateLimit(matcher.options.address, 1).send({from: matcherOwner});
+ const matcher = await matcherContract.deploy({data: (await readFile(`${__dirname}/MarketPlace.bin`)).toString(), arguments:[matcherOwner]}).send({from: matcherOwner});
await transferBalanceToEth(api, alice, matcher.options.address);
const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
await setCollectionLimitsExpectSuccess(alice, collectionId, {sponsorApproveTimeout: 1});
const evmCollection = new web3.eth.Contract(nonFungibleAbi as any, collectionIdToAddress(collectionId), {from: matcherOwner});
- await setCollectionSponsorExpectSuccess(collectionId, alice.address);
- await transferBalanceToEth(api, alice, subToEth(alice.address));
- await confirmSponsorshipExpectSuccess(collectionId);
-
- await helpers.methods.toggleAllowed(matcher.options.address, subToEth(alice.address), true).send({from: matcherOwner});
- await addToAllowListExpectSuccess(alice, collectionId, evmToAddress(subToEth(alice.address)));
const seller = privateKey(`//Seller/${Date.now()}`);
- await helpers.methods.toggleAllowed(matcher.options.address, subToEth(seller.address), true).send({from: matcherOwner});
-
+ await transferBalanceTo(api, alice, seller.address);
+
const tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT', seller.address);
// To transfer item to matcher it first needs to be transfered to EVM account of bob
@@ -197,19 +204,11 @@
// Token is transferred to matcher
expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal({Ethereum: matcher.options.address.toLowerCase()});
- // Give buyer KSM
- await matcher.methods.depositKSM(PRICE, subToEth(alice.address)).send({from: escrow});
-
// Buy
{
- expect(await matcher.methods.balanceKSM(subToEth(seller.address)).call()).to.be.equal('0');
- expect(await matcher.methods.balanceKSM(subToEth(alice.address)).call()).to.be.equal(PRICE.toString());
-
- await executeEthTxOnSub(web3, api, alice, matcher, m => m.buyKSM(evmCollection.options.address, tokenId, subToEth(alice.address), subToEth(alice.address)));
-
- // Price is removed from buyer balance, and added to seller
- expect(await matcher.methods.balanceKSM(subToEth(alice.address)).call()).to.be.equal('0');
- expect(await matcher.methods.balanceKSM(subToEth(seller.address)).call()).to.be.equal(PRICE.toString());
+ const sellerBalanceBeforePurchase = await getBalanceSingle(api, seller.address);
+ await executeEthTxOnSub(web3, api, alice, matcher, m => m.buy(evmCollection.options.address, tokenId), {value: PRICE});
+ expect(await getBalanceSingle(api, seller.address) - sellerBalanceBeforePurchase === PRICE);
}
// Token is transferred to evm account of alice
tests/src/eth/util/helpers.tsdiffbeforeafterboth--- a/tests/src/eth/util/helpers.ts
+++ b/tests/src/eth/util/helpers.ts
@@ -29,6 +29,7 @@
import privateKey from '../../substrate/privateKey';
import contractHelpersAbi from './contractHelpersAbi.json';
import getBalance from '../../substrate/get-balance';
+import waitNewBlocks from '../../substrate/wait-new-blocks';
export const GAS_ARGS = {gas: 2500000};
@@ -241,6 +242,12 @@
return collector;
}
+/**
+ * pallet evm_contract_helpers
+ * @param web3
+ * @param caller - eth address
+ * @returns
+ */
export function contractHelpers(web3: Web3, caller: string) {
return new web3.eth.Contract(contractHelpersAbi as any, '0x842899ECF380553E8a4de75bF534cdf6fBF64049', {from: caller, ...GAS_ARGS});
}
@@ -287,6 +294,8 @@
await call();
+ // In dev mode, the transaction might not finish processing in time
+ await waitNewBlocks(api, 1);
const after = await ethBalanceViaSub(api, user);
// Can't use .to.be.less, because chai doesn't supports bigint
tests/src/interfaces/augment-api-errors.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-errors.ts
+++ b/tests/src/interfaces/augment-api-errors.ts
@@ -105,6 +105,10 @@
**/
NoPermission: AugmentedError<ApiType>;
/**
+ * Not sufficient founds to perform action
+ **/
+ NotSufficientFounds: AugmentedError<ApiType>;
+ /**
* Tried to enable permissions which are only permitted to be disabled
**/
OwnerPermissionsCantBeReverted: AugmentedError<ApiType>;
tests/src/interfaces/augment-api-events.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-events.ts
+++ b/tests/src/interfaces/augment-api-events.ts
@@ -4,7 +4,7 @@
import type { ApiTypes } from '@polkadot/api-base/types';
import type { Null, Option, Result, U256, U8aFixed, u128, u32, u64, u8 } from '@polkadot/types-codec';
import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime';
-import type { EthereumLog, EvmCoreErrorExitReason, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchInfo, OrmlVestingVestingSchedule, PalletCommonAccountBasicCrossAccountIdRepr, SpRuntimeDispatchError, UpDataStructsAccessMode, XcmV1MultiLocation, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation } from '@polkadot/types/lookup';
+import type { EthereumLog, EvmCoreErrorExitReason, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchInfo, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, SpRuntimeDispatchError, UpDataStructsAccessMode, XcmV1MultiLocation, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation } from '@polkadot/types/lookup';
declare module '@polkadot/api-base/types/events' {
export interface AugmentedEvents<ApiType extends ApiTypes> {
@@ -68,7 +68,7 @@
*
* * amount
**/
- Approved: AugmentedEvent<ApiType, [u32, u32, PalletCommonAccountBasicCrossAccountIdRepr, PalletCommonAccountBasicCrossAccountIdRepr, u128]>;
+ Approved: AugmentedEvent<ApiType, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;
/**
* New collection was created
*
@@ -102,7 +102,7 @@
*
* * amount: Always 1 for NFT
**/
- ItemCreated: AugmentedEvent<ApiType, [u32, u32, PalletCommonAccountBasicCrossAccountIdRepr, u128]>;
+ ItemCreated: AugmentedEvent<ApiType, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;
/**
* Collection item was burned.
*
@@ -116,7 +116,7 @@
*
* * amount: Always 1 for NFT
**/
- ItemDestroyed: AugmentedEvent<ApiType, [u32, u32, PalletCommonAccountBasicCrossAccountIdRepr, u128]>;
+ ItemDestroyed: AugmentedEvent<ApiType, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;
/**
* Item was transferred
*
@@ -130,7 +130,7 @@
*
* * amount: Always 1 for NFT
**/
- Transfer: AugmentedEvent<ApiType, [u32, u32, PalletCommonAccountBasicCrossAccountIdRepr, PalletCommonAccountBasicCrossAccountIdRepr, u128]>;
+ Transfer: AugmentedEvent<ApiType, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;
/**
* Generic event
**/
@@ -483,7 +483,7 @@
*
* * user: Address.
**/
- AllowListAddressAdded: AugmentedEvent<ApiType, [u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
+ AllowListAddressAdded: AugmentedEvent<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
/**
* Address was remove from allow list
*
@@ -493,7 +493,7 @@
*
* * user: Address.
**/
- AllowListAddressRemoved: AugmentedEvent<ApiType, [u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
+ AllowListAddressRemoved: AugmentedEvent<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
/**
* Collection admin was added
*
@@ -503,7 +503,7 @@
*
* * admin: Admin address.
**/
- CollectionAdminAdded: AugmentedEvent<ApiType, [u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
+ CollectionAdminAdded: AugmentedEvent<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
/**
* Collection admin was removed
*
@@ -513,7 +513,7 @@
*
* * admin: Admin address.
**/
- CollectionAdminRemoved: AugmentedEvent<ApiType, [u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
+ CollectionAdminRemoved: AugmentedEvent<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
/**
* Collection limits was set
*
tests/src/interfaces/augment-api-query.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-query.ts
+++ b/tests/src/interfaces/augment-api-query.ts
@@ -5,7 +5,7 @@
import type { BTreeMap, Bytes, Option, U256, Vec, bool, u128, u16, u32, u64 } from '@polkadot/types-codec';
import type { AnyNumber, ITuple } from '@polkadot/types-codec/types';
import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime';
-import type { CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueQueueConfigData, EthereumBlock, EthereumReceiptReceiptV3, EthereumTransactionTransactionV2, FpRpcTransactionStatus, FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonAccountBasicCrossAccountIdRepr, PalletEvmContractHelpersSponsoringModeT, PalletNonfungibleItemData, PalletRefungibleItemData, PalletTransactionPaymentReleases, PalletTreasuryProposal, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV1AbridgedHostConfiguration, PolkadotPrimitivesV1PersistedValidationData, PolkadotPrimitivesV1UpgradeRestriction, SpRuntimeDigest, UpDataStructsCollection, UpDataStructsCollectionStats } from '@polkadot/types/lookup';
+import type { CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueQueueConfigData, EthereumBlock, EthereumReceiptReceiptV3, EthereumTransactionTransactionV2, FpRpcTransactionStatus, FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmContractHelpersSponsoringModeT, PalletNonfungibleItemData, PalletRefungibleItemData, PalletTransactionPaymentReleases, PalletTreasuryProposal, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV1AbridgedHostConfiguration, PolkadotPrimitivesV1PersistedValidationData, PolkadotPrimitivesV1UpgradeRestriction, SpRuntimeDigest, SpTrieStorageProof, UpDataStructsCollection, UpDataStructsCollectionStats } from '@polkadot/types/lookup';
import type { Observable } from '@polkadot/types/types';
declare module '@polkadot/api-base/types/storage' {
@@ -73,7 +73,7 @@
/**
* Allowlisted collection users
**/
- allowlist: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<bool>, [u32, PalletCommonAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
+ allowlist: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<bool>, [u32, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
/**
* Collection info
**/
@@ -87,7 +87,7 @@
/**
* List of collection admins
**/
- isAdmin: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<bool>, [u32, PalletCommonAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
+ isAdmin: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<bool>, [u32, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
/**
* Generic query
**/
@@ -173,8 +173,8 @@
[key: string]: QueryableStorageEntry<ApiType>;
};
fungible: {
- allowance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u128>, [u32, PalletCommonAccountBasicCrossAccountIdRepr, PalletCommonAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletCommonAccountBasicCrossAccountIdRepr, PalletCommonAccountBasicCrossAccountIdRepr]>;
- balance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u128>, [u32, PalletCommonAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
+ allowance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u128>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]>;
+ balance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u128>, [u32, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
totalSupply: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u128>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
/**
* Generic query
@@ -208,12 +208,12 @@
[key: string]: QueryableStorageEntry<ApiType>;
};
nonfungible: {
- accountBalance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u32>, [u32, PalletCommonAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
- allowance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<PalletCommonAccountBasicCrossAccountIdRepr>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;
+ accountBalance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u32>, [u32, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
+ allowance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<PalletEvmAccountBasicCrossAccountIdRepr>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;
/**
* Used to enumerate tokens owned by account
**/
- owned: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: u32 | AnyNumber | Uint8Array) => Observable<bool>, [u32, PalletCommonAccountBasicCrossAccountIdRepr, u32]> & QueryableStorageEntry<ApiType, [u32, PalletCommonAccountBasicCrossAccountIdRepr, u32]>;
+ owned: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: u32 | AnyNumber | Uint8Array) => Observable<bool>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, u32]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, u32]>;
tokenData: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<PalletNonfungibleItemData>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;
tokensBurnt: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
tokensMinted: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
@@ -312,6 +312,15 @@
**/
processedDownwardMessages: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
/**
+ * The state proof for the last relay parent block.
+ *
+ * This field is meant to be updated each block with the validation data inherent. Therefore,
+ * before processing of the inherent, e.g. in `on_initialize` this data may be stale.
+ *
+ * This data is also absent from the genesis.
+ **/
+ relayStateProof: AugmentedQuery<ApiType, () => Observable<Option<SpTrieStorageProof>>, []> & QueryableStorageEntry<ApiType, []>;
+ /**
* The snapshot of some state related to messaging relevant to the current parachain as per
* the relay parent.
*
@@ -371,13 +380,13 @@
[key: string]: QueryableStorageEntry<ApiType>;
};
refungible: {
- accountBalance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u32>, [u32, PalletCommonAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
- allowance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array, arg3: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg4: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u128>, [u32, u32, PalletCommonAccountBasicCrossAccountIdRepr, PalletCommonAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, u32, PalletCommonAccountBasicCrossAccountIdRepr, PalletCommonAccountBasicCrossAccountIdRepr]>;
- balance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array, arg3: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u128>, [u32, u32, PalletCommonAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
+ accountBalance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u32>, [u32, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
+ allowance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array, arg3: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg4: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u128>, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]>;
+ balance: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array, arg3: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<u128>, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
/**
* Used to enumerate tokens owned by account
**/
- owned: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: u32 | AnyNumber | Uint8Array) => Observable<bool>, [u32, PalletCommonAccountBasicCrossAccountIdRepr, u32]> & QueryableStorageEntry<ApiType, [u32, PalletCommonAccountBasicCrossAccountIdRepr, u32]>;
+ owned: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: u32 | AnyNumber | Uint8Array) => Observable<bool>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, u32]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, u32]>;
tokenData: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<PalletRefungibleItemData>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;
tokensBurnt: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
tokensMinted: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
tests/src/interfaces/augment-api-rpc.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-rpc.ts
+++ b/tests/src/interfaces/augment-api-rpc.ts
@@ -1,7 +1,7 @@
// Auto-generated via `yarn polkadot-types-from-chain`, do not edit
/* eslint-disable */
-import type { PalletCommonAccountBasicCrossAccountIdRepr, UpDataStructsCollection, UpDataStructsCollectionStats } from './unique';
+import type { PalletEvmAccountBasicCrossAccountIdRepr, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionStats } from './unique';
import type { AugmentedRpc } from '@polkadot/rpc-core/types';
import type { Metadata, StorageKey } from '@polkadot/types';
import type { Bytes, HashMap, Json, Null, Option, Text, U256, U64, Vec, bool, u128, u32, u64 } from '@polkadot/types-codec';
@@ -562,31 +562,31 @@
/**
* Get amount of different user tokens
**/
- accountBalance: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, account: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<u32>>;
+ accountBalance: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, account: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<u32>>;
/**
* Get tokens owned by account
**/
- accountTokens: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, account: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<u32>>>;
+ accountTokens: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, account: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<u32>>>;
/**
* Get admin list
**/
- adminlist: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<PalletCommonAccountBasicCrossAccountIdRepr>>>;
+ adminlist: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<PalletEvmAccountBasicCrossAccountIdRepr>>>;
/**
* Get allowed amount
**/
- allowance: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, sender: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, spender: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<u128>>;
+ allowance: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, sender: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, spender: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<u128>>;
/**
* Check if user is allowed to use collection
**/
- allowed: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, account: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<bool>>;
+ allowed: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, account: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<bool>>;
/**
* Get allowlist
**/
- allowlist: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<PalletCommonAccountBasicCrossAccountIdRepr>>>;
+ allowlist: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<PalletEvmAccountBasicCrossAccountIdRepr>>>;
/**
* Get amount of specific account token
**/
- balance: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, account: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<u128>>;
+ balance: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, account: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<u128>>;
/**
* Get collection by specified id
**/
@@ -604,6 +604,10 @@
**/
constMetadata: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Bytes>>;
/**
+ * Get effective collection limits
+ **/
+ effectiveCollectionLimits: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<UpDataStructsCollectionLimits>>>;
+ /**
* Get last token id
**/
lastTokenId: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<u32>>;
@@ -614,11 +618,15 @@
/**
* Get token owner
**/
- tokenOwner: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<PalletCommonAccountBasicCrossAccountIdRepr>>;
+ tokenOwner: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<PalletEvmAccountBasicCrossAccountIdRepr>>;
/**
* Get token variable metadata
**/
variableMetadata: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Bytes>>;
+ /**
+ * nextSponsored transaction
+ **/
+ nextSponsored: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, account: AccountId | string | Uint8Array | { Substrate: any } | { Ethereum: any } | string | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<u64>>>;
};
web3: {
/**
tests/src/interfaces/augment-api-tx.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-tx.ts
+++ b/tests/src/interfaces/augment-api-tx.ts
@@ -5,7 +5,7 @@
import type { Bytes, Compact, Option, U256, Vec, bool, u128, u16, u32, u64 } from '@polkadot/types-codec';
import type { AnyNumber, ITuple } from '@polkadot/types-codec/types';
import type { AccountId32, Call, H160, H256, MultiAddress, Perbill } from '@polkadot/types/interfaces/runtime';
-import type { CumulusPrimitivesParachainInherentParachainInherentData, EthereumTransactionTransactionV2, OrmlVestingVestingSchedule, PalletCommonAccountBasicCrossAccountIdRepr, UpDataStructsAccessMode, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCreateCollectionData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsMetaUpdatePermission, UpDataStructsSchemaVersion, XcmV1MultiLocation, XcmV2WeightLimit, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';
+import type { CumulusPrimitivesParachainInherentParachainInherentData, EthereumTransactionTransactionV2, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, UpDataStructsAccessMode, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCreateCollectionData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsMetaUpdatePermission, UpDataStructsSchemaVersion, XcmV1MultiLocation, XcmV2WeightLimit, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';
declare module '@polkadot/api-base/types/submittable' {
export interface AugmentedSubmittables<ApiType extends ApiTypes> {
@@ -551,7 +551,7 @@
*
* * new_admin_id: Address of new admin to add.
**/
- addCollectionAdmin: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, newAdminId: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
+ addCollectionAdmin: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, newAdminId: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
/**
* Add an address to allow list.
*
@@ -566,7 +566,7 @@
*
* * address.
**/
- addToAllowList: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, address: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
+ addToAllowList: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, address: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
/**
* Set, change, or remove approved address to transfer the ownership of the NFT.
*
@@ -584,7 +584,7 @@
*
* * item_id: ID of the item.
**/
- approve: AugmentedSubmittable<(spender: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, itemId: u32 | AnyNumber | Uint8Array, amount: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [PalletCommonAccountBasicCrossAccountIdRepr, u32, u32, u128]>;
+ approve: AugmentedSubmittable<(spender: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, itemId: u32 | AnyNumber | Uint8Array, amount: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [PalletEvmAccountBasicCrossAccountIdRepr, u32, u32, u128]>;
/**
* Destroys a concrete instance of NFT on behalf of the owner
* See also: [`approve`]
@@ -603,7 +603,7 @@
*
* * from: owner of item
**/
- burnFrom: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, from: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, itemId: u32 | AnyNumber | Uint8Array, value: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletCommonAccountBasicCrossAccountIdRepr, u32, u128]>;
+ burnFrom: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, from: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, itemId: u32 | AnyNumber | Uint8Array, value: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, u32, u128]>;
/**
* Destroys a concrete instance of NFT.
*
@@ -688,7 +688,7 @@
*
* * data: Token data to store on chain.
**/
- createItem: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, owner: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, data: UpDataStructsCreateItemData | { NFT: any } | { Fungible: any } | { ReFungible: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletCommonAccountBasicCrossAccountIdRepr, UpDataStructsCreateItemData]>;
+ createItem: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, owner: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, data: UpDataStructsCreateItemData | { NFT: any } | { Fungible: any } | { ReFungible: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, UpDataStructsCreateItemData]>;
/**
* This method creates multiple items in a collection created with CreateCollection method.
*
@@ -709,7 +709,7 @@
*
* * owner: Address, initial owner of the NFT.
**/
- createMultipleItems: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, owner: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, itemsData: Vec<UpDataStructsCreateItemData> | (UpDataStructsCreateItemData | { NFT: any } | { Fungible: any } | { ReFungible: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [u32, PalletCommonAccountBasicCrossAccountIdRepr, Vec<UpDataStructsCreateItemData>]>;
+ createMultipleItems: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, owner: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, itemsData: Vec<UpDataStructsCreateItemData> | (UpDataStructsCreateItemData | { NFT: any } | { Fungible: any } | { ReFungible: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, Vec<UpDataStructsCreateItemData>]>;
createMultipleItemsEx: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, data: UpDataStructsCreateItemExData | { NFT: any } | { Fungible: any } | { RefungibleMultipleItems: any } | { RefungibleMultipleOwners: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, UpDataStructsCreateItemExData]>;
/**
* **DANGEROUS**: Destroys collection and all NFTs within this collection. Users irrecoverably lose their assets and may lose real money.
@@ -737,7 +737,7 @@
*
* * account_id: Address of admin to remove.
**/
- removeCollectionAdmin: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, accountId: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
+ removeCollectionAdmin: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, accountId: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
/**
* Switch back to pay-per-own-transaction model.
*
@@ -764,7 +764,7 @@
*
* * address.
**/
- removeFromAllowList: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, address: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
+ removeFromAllowList: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, address: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
setCollectionLimits: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, newLimit: UpDataStructsCollectionLimits | { accountTokenOwnershipLimit?: any; sponsoredDataSize?: any; sponsoredDataRateLimit?: any; tokenLimit?: any; sponsorTransferTimeout?: any; sponsorApproveTimeout?: any; ownerCanTransfer?: any; ownerCanDestroy?: any; transfersEnabled?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, UpDataStructsCollectionLimits]>;
/**
* # Permissions
@@ -938,7 +938,7 @@
* * Fungible Mode: Must specify transferred amount
* * Re-Fungible Mode: Must specify transferred portion (between 0 and 1)
**/
- transfer: AugmentedSubmittable<(recipient: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, itemId: u32 | AnyNumber | Uint8Array, value: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [PalletCommonAccountBasicCrossAccountIdRepr, u32, u32, u128]>;
+ transfer: AugmentedSubmittable<(recipient: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, itemId: u32 | AnyNumber | Uint8Array, value: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [PalletEvmAccountBasicCrossAccountIdRepr, u32, u32, u128]>;
/**
* Change ownership of a NFT on behalf of the owner. See Approve method for additional information. After this method executes, the approval is removed so that the approved address will not be able to transfer this NFT again from this owner.
*
@@ -960,7 +960,7 @@
*
* * value: Amount to transfer.
**/
- transferFrom: AugmentedSubmittable<(from: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, recipient: PalletCommonAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, itemId: u32 | AnyNumber | Uint8Array, value: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [PalletCommonAccountBasicCrossAccountIdRepr, PalletCommonAccountBasicCrossAccountIdRepr, u32, u32, u128]>;
+ transferFrom: AugmentedSubmittable<(from: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, recipient: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, itemId: u32 | AnyNumber | Uint8Array, value: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u32, u32, u128]>;
/**
* Generic tx
**/
tests/src/interfaces/augment-types.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-types.ts
+++ b/tests/src/interfaces/augment-types.ts
@@ -1,9 +1,9 @@
// Auto-generated via `yarn polkadot-types-from-defs`, do not edit
/* eslint-disable */
-import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, 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, FrameSupportPalletId, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonAccountBasicCrossAccountIdRepr, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletXcmCall, PalletXcmError, PalletXcmEvent, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV1AbridgedHostConfiguration, PolkadotPrimitivesV1AbridgedHrmpChannel, PolkadotPrimitivesV1PersistedValidationData, PolkadotPrimitivesV1UpgradeRestriction, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpTrieStorageProof, SpVersionRuntimeVersion, UniqueRuntimeRuntime, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsMetaUpdatePermission, UpDataStructsSchemaVersion, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, 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 './unique';
+import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, 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, FrameSupportPalletId, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletXcmCall, PalletXcmError, PalletXcmEvent, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV1AbridgedHostConfiguration, PolkadotPrimitivesV1AbridgedHrmpChannel, PolkadotPrimitivesV1PersistedValidationData, PolkadotPrimitivesV1UpgradeRestriction, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsMetaUpdatePermission, UpDataStructsSchemaVersion, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, 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 './unique';
import type { Data, StorageKey } from '@polkadot/types';
-import type { BitVec, Bool, Bytes, I128, I16, I256, I32, I64, I8, Json, Null, 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';
+import type { BTreeSet, BitVec, Bool, Bytes, I128, I16, I256, I32, I64, I8, Json, Null, 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';
import type { AssetApproval, AssetApprovalKey, AssetBalance, AssetDestroyWitness, AssetDetails, AssetMetadata, TAssetBalance, TAssetDepositBalance } from '@polkadot/types/interfaces/assets';
import type { BlockAttestations, IncludedBlocks, MoreAttestations } from '@polkadot/types/interfaces/attestations';
import type { RawAuraPreDigest } from '@polkadot/types/interfaces/aura';
@@ -18,7 +18,7 @@
import type { StatementKind } from '@polkadot/types/interfaces/claims';
import type { CollectiveOrigin, MemberCount, ProposalIndex, Votes, VotesTo230 } from '@polkadot/types/interfaces/collective';
import type { AuthorityId, RawVRFOutput } from '@polkadot/types/interfaces/consensus';
-import type { AliveContractInfo, CodeHash, CodeUploadRequest, CodeUploadResult, CodeUploadResultValue, ContractCallFlags, ContractCallRequest, ContractExecResult, ContractExecResultErr, ContractExecResultErrModule, ContractExecResultOk, ContractExecResultResult, ContractExecResultSuccessTo255, ContractExecResultSuccessTo260, ContractExecResultTo255, ContractExecResultTo260, ContractExecResultTo267, ContractInfo, ContractInstantiateResult, ContractInstantiateResultTo267, ContractReturnFlags, ContractStorageKey, DeletedContract, ExecReturnValue, Gas, HostFnWeights, HostFnWeightsTo264, InstantiateRequest, InstantiateReturnValue, InstantiateReturnValueTo267, InstructionWeights, Limits, LimitsTo264, PrefabWasmModule, RentProjection, Schedule, ScheduleTo212, ScheduleTo258, ScheduleTo264, SeedOf, StorageDeposit, TombstoneContractInfo, TrieId } from '@polkadot/types/interfaces/contracts';
+import type { AliveContractInfo, CodeHash, CodeSource, CodeUploadRequest, CodeUploadResult, CodeUploadResultValue, ContractCallFlags, ContractCallRequest, ContractExecResult, ContractExecResultErr, ContractExecResultErrModule, ContractExecResultOk, ContractExecResultResult, ContractExecResultSuccessTo255, ContractExecResultSuccessTo260, ContractExecResultTo255, ContractExecResultTo260, ContractExecResultTo267, ContractInfo, ContractInstantiateResult, ContractInstantiateResultTo267, ContractInstantiateResultTo299, ContractReturnFlags, ContractStorageKey, DeletedContract, ExecReturnValue, Gas, HostFnWeights, HostFnWeightsTo264, InstantiateRequest, InstantiateRequestV1, InstantiateRequestV2, InstantiateReturnValue, InstantiateReturnValueOk, InstantiateReturnValueTo267, InstructionWeights, Limits, LimitsTo264, PrefabWasmModule, RentProjection, Schedule, ScheduleTo212, ScheduleTo258, ScheduleTo264, SeedOf, StorageDeposit, TombstoneContractInfo, TrieId } from '@polkadot/types/interfaces/contracts';
import type { ContractConstructorSpecLatest, ContractConstructorSpecV0, ContractConstructorSpecV1, ContractConstructorSpecV2, ContractConstructorSpecV3, ContractContractSpecV0, ContractContractSpecV1, ContractContractSpecV2, ContractContractSpecV3, ContractCryptoHasher, ContractDiscriminant, ContractDisplayName, ContractEventParamSpecLatest, ContractEventParamSpecV0, ContractEventParamSpecV2, ContractEventSpecLatest, ContractEventSpecV0, ContractEventSpecV1, ContractEventSpecV2, ContractLayoutArray, ContractLayoutCell, ContractLayoutEnum, ContractLayoutHash, ContractLayoutHashingStrategy, ContractLayoutKey, ContractLayoutStruct, ContractLayoutStructField, ContractMessageParamSpecLatest, ContractMessageParamSpecV0, ContractMessageParamSpecV2, ContractMessageSpecLatest, ContractMessageSpecV0, ContractMessageSpecV1, ContractMessageSpecV2, ContractMetadata, ContractMetadataLatest, ContractMetadataV0, ContractMetadataV1, ContractMetadataV2, ContractMetadataV3, ContractProject, ContractProjectContract, ContractProjectInfo, ContractProjectSource, ContractProjectV0, ContractSelector, ContractStorageLayout, ContractTypeSpec } from '@polkadot/types/interfaces/contractsAbi';
import type { FundIndex, FundInfo, LastContribution, TrieIndex } from '@polkadot/types/interfaces/crowdloan';
import type { ConfigData, MessageId, OverweightIndex, PageCounter, PageIndexData } from '@polkadot/types/interfaces/cumulus';
@@ -175,6 +175,7 @@
BridgedBlockNumber: BridgedBlockNumber;
BridgedHeader: BridgedHeader;
BridgeMessageId: BridgeMessageId;
+ BTreeSet: BTreeSet;
BufferedSessionChange: BufferedSessionChange;
Bytes: Bytes;
Call: Call;
@@ -198,6 +199,7 @@
ClassMetadata: ClassMetadata;
CodecHash: CodecHash;
CodeHash: CodeHash;
+ CodeSource: CodeSource;
CodeUploadRequest: CodeUploadRequest;
CodeUploadResult: CodeUploadResult;
CodeUploadResultValue: CodeUploadResultValue;
@@ -250,6 +252,7 @@
ContractInfo: ContractInfo;
ContractInstantiateResult: ContractInstantiateResult;
ContractInstantiateResultTo267: ContractInstantiateResultTo267;
+ ContractInstantiateResultTo299: ContractInstantiateResultTo299;
ContractLayoutArray: ContractLayoutArray;
ContractLayoutCell: ContractLayoutCell;
ContractLayoutEnum: ContractLayoutEnum;
@@ -591,7 +594,10 @@
InstanceId: InstanceId;
InstanceMetadata: InstanceMetadata;
InstantiateRequest: InstantiateRequest;
+ InstantiateRequestV1: InstantiateRequestV1;
+ InstantiateRequestV2: InstantiateRequestV2;
InstantiateReturnValue: InstantiateReturnValue;
+ InstantiateReturnValueOk: InstantiateReturnValueOk;
InstantiateReturnValueTo267: InstantiateReturnValueTo267;
InstructionV2: InstructionV2;
InstructionWeights: InstructionWeights;
@@ -707,6 +713,7 @@
OffchainAccuracyCompact: OffchainAccuracyCompact;
OffenceDetails: OffenceDetails;
Offender: Offender;
+ OpalRuntimeRuntime: OpalRuntimeRuntime;
OpaqueCall: OpaqueCall;
OpaqueMultiaddr: OpaqueMultiaddr;
OpaqueNetworkState: OpaqueNetworkState;
@@ -746,7 +753,6 @@
PalletBalancesReserveData: PalletBalancesReserveData;
PalletCallMetadataLatest: PalletCallMetadataLatest;
PalletCallMetadataV14: PalletCallMetadataV14;
- PalletCommonAccountBasicCrossAccountIdRepr: PalletCommonAccountBasicCrossAccountIdRepr;
PalletCommonError: PalletCommonError;
PalletCommonEvent: PalletCommonEvent;
PalletConstantMetadataLatest: PalletConstantMetadataLatest;
@@ -758,6 +764,7 @@
PalletEthereumEvent: PalletEthereumEvent;
PalletEventMetadataLatest: PalletEventMetadataLatest;
PalletEventMetadataV14: PalletEventMetadataV14;
+ PalletEvmAccountBasicCrossAccountIdRepr: PalletEvmAccountBasicCrossAccountIdRepr;
PalletEvmCall: PalletEvmCall;
PalletEvmCoderSubstrateError: PalletEvmCoderSubstrateError;
PalletEvmContractHelpersError: PalletEvmContractHelpersError;
@@ -1146,7 +1153,6 @@
UnappliedSlash: UnappliedSlash;
UnappliedSlashOther: UnappliedSlashOther;
UncleEntryItem: UncleEntryItem;
- UniqueRuntimeRuntime: UniqueRuntimeRuntime;
UnknownTransaction: UnknownTransaction;
UnlockChunk: UnlockChunk;
UnrewardedRelayer: UnrewardedRelayer;
tests/src/interfaces/lookup.tsdiffbeforeafterboth--- a/tests/src/interfaces/lookup.ts
+++ b/tests/src/interfaces/lookup.ts
@@ -20,8 +20,18 @@
_enum: ['Present']
},
/**
- * Lookup10: cumulus_pallet_parachain_system::relay_state_snapshot::MessagingStateSnapshot
+ * Lookup10: sp_trie::storage_proof::StorageProof
+ **/
+ SpTrieStorageProof: {
+ trieNodes: 'BTreeSet'
+ },
+ /**
+ * Lookup11: BTreeSet<T>
**/
+ BTreeSet: 'Vec<Bytes>',
+ /**
+ * Lookup13: cumulus_pallet_parachain_system::relay_state_snapshot::MessagingStateSnapshot
+ **/
CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot: {
dmqMqcHead: 'H256',
relayDispatchQueueSize: '(u32,u32)',
@@ -29,7 +39,7 @@
egressChannels: 'Vec<(u32,PolkadotPrimitivesV1AbridgedHrmpChannel)>'
},
/**
- * Lookup15: polkadot_primitives::v1::AbridgedHrmpChannel
+ * Lookup18: polkadot_primitives::v1::AbridgedHrmpChannel
**/
PolkadotPrimitivesV1AbridgedHrmpChannel: {
maxCapacity: 'u32',
@@ -40,7 +50,7 @@
mqcHead: 'Option<H256>'
},
/**
- * Lookup17: polkadot_primitives::v1::AbridgedHostConfiguration
+ * Lookup20: polkadot_primitives::v1::AbridgedHostConfiguration
**/
PolkadotPrimitivesV1AbridgedHostConfiguration: {
maxCodeSize: 'u32',
@@ -54,14 +64,14 @@
validationUpgradeDelay: 'u32'
},
/**
- * Lookup23: polkadot_core_primitives::OutboundHrmpMessage<polkadot_parachain::primitives::Id>
+ * Lookup26: polkadot_core_primitives::OutboundHrmpMessage<polkadot_parachain::primitives::Id>
**/
PolkadotCorePrimitivesOutboundHrmpMessage: {
recipient: 'u32',
data: 'Bytes'
},
/**
- * Lookup26: cumulus_pallet_parachain_system::pallet::Call<T>
+ * Lookup28: cumulus_pallet_parachain_system::pallet::Call<T>
**/
CumulusPalletParachainSystemCall: {
_enum: {
@@ -80,36 +90,30 @@
}
},
/**
- * Lookup27: cumulus_primitives_parachain_inherent::ParachainInherentData
+ * Lookup29: cumulus_primitives_parachain_inherent::ParachainInherentData
**/
CumulusPrimitivesParachainInherentParachainInherentData: {
validationData: 'PolkadotPrimitivesV1PersistedValidationData',
relayChainState: 'SpTrieStorageProof',
downwardMessages: 'Vec<PolkadotCorePrimitivesInboundDownwardMessage>',
horizontalMessages: 'BTreeMap<u32, Vec<PolkadotCorePrimitivesInboundHrmpMessage>>'
- },
- /**
- * Lookup28: sp_trie::storage_proof::StorageProof
- **/
- SpTrieStorageProof: {
- trieNodes: 'Vec<Bytes>'
},
/**
- * Lookup30: polkadot_core_primitives::InboundDownwardMessage<BlockNumber>
+ * Lookup31: polkadot_core_primitives::InboundDownwardMessage<BlockNumber>
**/
PolkadotCorePrimitivesInboundDownwardMessage: {
sentAt: 'u32',
msg: 'Bytes'
},
/**
- * Lookup33: polkadot_core_primitives::InboundHrmpMessage<BlockNumber>
+ * Lookup34: polkadot_core_primitives::InboundHrmpMessage<BlockNumber>
**/
PolkadotCorePrimitivesInboundHrmpMessage: {
sentAt: 'u32',
data: 'Bytes'
},
/**
- * Lookup36: cumulus_pallet_parachain_system::pallet::Event<T>
+ * Lookup37: cumulus_pallet_parachain_system::pallet::Event<T>
**/
CumulusPalletParachainSystemEvent: {
_enum: {
@@ -122,13 +126,13 @@
}
},
/**
- * Lookup37: cumulus_pallet_parachain_system::pallet::Error<T>
+ * Lookup38: cumulus_pallet_parachain_system::pallet::Error<T>
**/
CumulusPalletParachainSystemError: {
_enum: ['OverlappingUpgrades', 'ProhibitedByPolkadot', 'TooBig', 'ValidationDataNotAvailable', 'HostConfigurationNotAvailable', 'NotScheduled', 'NothingAuthorized', 'Unauthorized']
},
/**
- * Lookup40: pallet_balances::AccountData<Balance>
+ * Lookup41: pallet_balances::AccountData<Balance>
**/
PalletBalancesAccountData: {
free: 'u128',
@@ -137,7 +141,7 @@
feeFrozen: 'u128'
},
/**
- * Lookup42: pallet_balances::BalanceLock<Balance>
+ * Lookup43: pallet_balances::BalanceLock<Balance>
**/
PalletBalancesBalanceLock: {
id: '[u8;8]',
@@ -145,26 +149,26 @@
reasons: 'PalletBalancesReasons'
},
/**
- * Lookup44: pallet_balances::Reasons
+ * Lookup45: pallet_balances::Reasons
**/
PalletBalancesReasons: {
_enum: ['Fee', 'Misc', 'All']
},
/**
- * Lookup47: pallet_balances::ReserveData<ReserveIdentifier, Balance>
+ * Lookup48: pallet_balances::ReserveData<ReserveIdentifier, Balance>
**/
PalletBalancesReserveData: {
id: '[u8;8]',
amount: 'u128'
},
/**
- * Lookup49: pallet_balances::Releases
+ * Lookup50: pallet_balances::Releases
**/
PalletBalancesReleases: {
_enum: ['V1_0_0', 'V2_0_0']
},
/**
- * Lookup50: pallet_balances::pallet::Call<T, I>
+ * Lookup51: pallet_balances::pallet::Call<T, I>
**/
PalletBalancesCall: {
_enum: {
@@ -197,7 +201,7 @@
}
},
/**
- * Lookup56: pallet_balances::pallet::Event<T, I>
+ * Lookup57: pallet_balances::pallet::Event<T, I>
**/
PalletBalancesEvent: {
_enum: {
@@ -248,19 +252,19 @@
}
},
/**
- * Lookup57: frame_support::traits::tokens::misc::BalanceStatus
+ * Lookup58: frame_support::traits::tokens::misc::BalanceStatus
**/
FrameSupportTokensMiscBalanceStatus: {
_enum: ['Free', 'Reserved']
},
/**
- * Lookup58: pallet_balances::pallet::Error<T, I>
+ * Lookup59: pallet_balances::pallet::Error<T, I>
**/
PalletBalancesError: {
_enum: ['VestingBalance', 'LiquidityRestrictions', 'InsufficientBalance', 'ExistentialDeposit', 'KeepAlive', 'ExistingVestingSchedule', 'DeadAccount', 'TooManyReserves']
},
/**
- * Lookup61: pallet_timestamp::pallet::Call<T>
+ * Lookup62: pallet_timestamp::pallet::Call<T>
**/
PalletTimestampCall: {
_enum: {
@@ -270,13 +274,13 @@
}
},
/**
- * Lookup64: pallet_transaction_payment::Releases
+ * Lookup65: pallet_transaction_payment::Releases
**/
PalletTransactionPaymentReleases: {
_enum: ['V1Ancient', 'V2']
},
/**
- * Lookup66: frame_support::weights::WeightToFeeCoefficient<Balance>
+ * Lookup67: frame_support::weights::WeightToFeeCoefficient<Balance>
**/
FrameSupportWeightsWeightToFeeCoefficient: {
coeffInteger: 'u128',
@@ -285,7 +289,7 @@
degree: 'u8'
},
/**
- * Lookup68: pallet_treasury::Proposal<sp_core::crypto::AccountId32, Balance>
+ * Lookup69: pallet_treasury::Proposal<sp_core::crypto::AccountId32, Balance>
**/
PalletTreasuryProposal: {
proposer: 'AccountId32',
@@ -294,7 +298,7 @@
bond: 'u128'
},
/**
- * Lookup71: pallet_treasury::pallet::Call<T, I>
+ * Lookup72: pallet_treasury::pallet::Call<T, I>
**/
PalletTreasuryCall: {
_enum: {
@@ -311,7 +315,7 @@
}
},
/**
- * Lookup73: pallet_treasury::pallet::Event<T, I>
+ * Lookup74: pallet_treasury::pallet::Event<T, I>
**/
PalletTreasuryEvent: {
_enum: {
@@ -342,17 +346,17 @@
}
},
/**
- * Lookup76: frame_support::PalletId
+ * Lookup77: frame_support::PalletId
**/
FrameSupportPalletId: '[u8;8]',
/**
- * Lookup77: pallet_treasury::pallet::Error<T, I>
+ * Lookup78: pallet_treasury::pallet::Error<T, I>
**/
PalletTreasuryError: {
_enum: ['InsufficientProposersBalance', 'InvalidIndex', 'TooManyApprovals']
},
/**
- * Lookup78: pallet_sudo::pallet::Call<T>
+ * Lookup79: pallet_sudo::pallet::Call<T>
**/
PalletSudoCall: {
_enum: {
@@ -376,7 +380,7 @@
}
},
/**
- * Lookup80: frame_system::pallet::Call<T>
+ * Lookup81: frame_system::pallet::Call<T>
**/
FrameSystemCall: {
_enum: {
@@ -414,7 +418,7 @@
}
},
/**
- * Lookup83: orml_vesting::module::Call<T>
+ * Lookup84: orml_vesting::module::Call<T>
**/
OrmlVestingModuleCall: {
_enum: {
@@ -433,7 +437,7 @@
}
},
/**
- * Lookup84: orml_vesting::VestingSchedule<BlockNumber, Balance>
+ * Lookup85: orml_vesting::VestingSchedule<BlockNumber, Balance>
**/
OrmlVestingVestingSchedule: {
start: 'u32',
@@ -442,7 +446,7 @@
perPeriod: 'Compact<u128>'
},
/**
- * Lookup86: cumulus_pallet_xcmp_queue::pallet::Call<T>
+ * Lookup87: cumulus_pallet_xcmp_queue::pallet::Call<T>
**/
CumulusPalletXcmpQueueCall: {
_enum: {
@@ -491,7 +495,7 @@
}
},
/**
- * Lookup87: pallet_xcm::pallet::Call<T>
+ * Lookup88: pallet_xcm::pallet::Call<T>
**/
PalletXcmCall: {
_enum: {
@@ -545,7 +549,7 @@
}
},
/**
- * Lookup88: xcm::VersionedMultiLocation
+ * Lookup89: xcm::VersionedMultiLocation
**/
XcmVersionedMultiLocation: {
_enum: {
@@ -554,7 +558,7 @@
}
},
/**
- * Lookup89: xcm::v0::multi_location::MultiLocation
+ * Lookup90: xcm::v0::multi_location::MultiLocation
**/
XcmV0MultiLocation: {
_enum: {
@@ -570,7 +574,7 @@
}
},
/**
- * Lookup90: xcm::v0::junction::Junction
+ * Lookup91: xcm::v0::junction::Junction
**/
XcmV0Junction: {
_enum: {
@@ -599,7 +603,7 @@
}
},
/**
- * Lookup91: xcm::v0::junction::NetworkId
+ * Lookup92: xcm::v0::junction::NetworkId
**/
XcmV0JunctionNetworkId: {
_enum: {
@@ -610,7 +614,7 @@
}
},
/**
- * Lookup92: xcm::v0::junction::BodyId
+ * Lookup93: xcm::v0::junction::BodyId
**/
XcmV0JunctionBodyId: {
_enum: {
@@ -624,7 +628,7 @@
}
},
/**
- * Lookup93: xcm::v0::junction::BodyPart
+ * Lookup94: xcm::v0::junction::BodyPart
**/
XcmV0JunctionBodyPart: {
_enum: {
@@ -647,14 +651,14 @@
}
},
/**
- * Lookup94: xcm::v1::multilocation::MultiLocation
+ * Lookup95: xcm::v1::multilocation::MultiLocation
**/
XcmV1MultiLocation: {
parents: 'u8',
interior: 'XcmV1MultilocationJunctions'
},
/**
- * Lookup95: xcm::v1::multilocation::Junctions
+ * Lookup96: xcm::v1::multilocation::Junctions
**/
XcmV1MultilocationJunctions: {
_enum: {
@@ -670,7 +674,7 @@
}
},
/**
- * Lookup96: xcm::v1::junction::Junction
+ * Lookup97: xcm::v1::junction::Junction
**/
XcmV1Junction: {
_enum: {
@@ -698,7 +702,7 @@
}
},
/**
- * Lookup97: xcm::VersionedXcm<Call>
+ * Lookup98: xcm::VersionedXcm<Call>
**/
XcmVersionedXcm: {
_enum: {
@@ -708,7 +712,7 @@
}
},
/**
- * Lookup98: xcm::v0::Xcm<Call>
+ * Lookup99: xcm::v0::Xcm<Call>
**/
XcmV0Xcm: {
_enum: {
@@ -762,7 +766,7 @@
}
},
/**
- * Lookup100: xcm::v0::multi_asset::MultiAsset
+ * Lookup101: xcm::v0::multi_asset::MultiAsset
**/
XcmV0MultiAsset: {
_enum: {
@@ -801,7 +805,7 @@
}
},
/**
- * Lookup101: xcm::v1::multiasset::AssetInstance
+ * Lookup102: xcm::v1::multiasset::AssetInstance
**/
XcmV1MultiassetAssetInstance: {
_enum: {
@@ -815,7 +819,7 @@
}
},
/**
- * Lookup105: xcm::v0::order::Order<Call>
+ * Lookup106: xcm::v0::order::Order<Call>
**/
XcmV0Order: {
_enum: {
@@ -858,7 +862,7 @@
}
},
/**
- * Lookup107: xcm::v0::Response
+ * Lookup108: xcm::v0::Response
**/
XcmV0Response: {
_enum: {
@@ -866,19 +870,19 @@
}
},
/**
- * Lookup108: xcm::v0::OriginKind
+ * Lookup109: xcm::v0::OriginKind
**/
XcmV0OriginKind: {
_enum: ['Native', 'SovereignAccount', 'Superuser', 'Xcm']
},
/**
- * Lookup109: xcm::double_encoded::DoubleEncoded<T>
+ * Lookup110: xcm::double_encoded::DoubleEncoded<T>
**/
XcmDoubleEncoded: {
encoded: 'Bytes'
},
/**
- * Lookup110: xcm::v1::Xcm<Call>
+ * Lookup111: xcm::v1::Xcm<Call>
**/
XcmV1Xcm: {
_enum: {
@@ -937,18 +941,18 @@
}
},
/**
- * Lookup111: xcm::v1::multiasset::MultiAssets
+ * Lookup112: xcm::v1::multiasset::MultiAssets
**/
XcmV1MultiassetMultiAssets: 'Vec<XcmV1MultiAsset>',
/**
- * Lookup113: xcm::v1::multiasset::MultiAsset
+ * Lookup114: xcm::v1::multiasset::MultiAsset
**/
XcmV1MultiAsset: {
id: 'XcmV1MultiassetAssetId',
fun: 'XcmV1MultiassetFungibility'
},
/**
- * Lookup114: xcm::v1::multiasset::AssetId
+ * Lookup115: xcm::v1::multiasset::AssetId
**/
XcmV1MultiassetAssetId: {
_enum: {
@@ -957,7 +961,7 @@
}
},
/**
- * Lookup115: xcm::v1::multiasset::Fungibility
+ * Lookup116: xcm::v1::multiasset::Fungibility
**/
XcmV1MultiassetFungibility: {
_enum: {
@@ -966,7 +970,7 @@
}
},
/**
- * Lookup117: xcm::v1::order::Order<Call>
+ * Lookup118: xcm::v1::order::Order<Call>
**/
XcmV1Order: {
_enum: {
@@ -1011,7 +1015,7 @@
}
},
/**
- * Lookup118: xcm::v1::multiasset::MultiAssetFilter
+ * Lookup119: xcm::v1::multiasset::MultiAssetFilter
**/
XcmV1MultiassetMultiAssetFilter: {
_enum: {
@@ -1020,7 +1024,7 @@
}
},
/**
- * Lookup119: xcm::v1::multiasset::WildMultiAsset
+ * Lookup120: xcm::v1::multiasset::WildMultiAsset
**/
XcmV1MultiassetWildMultiAsset: {
_enum: {
@@ -1032,13 +1036,13 @@
}
},
/**
- * Lookup120: xcm::v1::multiasset::WildFungibility
+ * Lookup121: xcm::v1::multiasset::WildFungibility
**/
XcmV1MultiassetWildFungibility: {
_enum: ['Fungible', 'NonFungible']
},
/**
- * Lookup122: xcm::v1::Response
+ * Lookup123: xcm::v1::Response
**/
XcmV1Response: {
_enum: {
@@ -1047,11 +1051,11 @@
}
},
/**
- * Lookup123: xcm::v2::Xcm<Call>
+ * Lookup124: xcm::v2::Xcm<Call>
**/
XcmV2Xcm: 'Vec<XcmV2Instruction>',
/**
- * Lookup125: xcm::v2::Instruction<Call>
+ * Lookup126: xcm::v2::Instruction<Call>
**/
XcmV2Instruction: {
_enum: {
@@ -1149,7 +1153,7 @@
}
},
/**
- * Lookup126: xcm::v2::Response
+ * Lookup127: xcm::v2::Response
**/
XcmV2Response: {
_enum: {
@@ -1160,7 +1164,7 @@
}
},
/**
- * Lookup129: xcm::v2::traits::Error
+ * Lookup130: xcm::v2::traits::Error
**/
XcmV2TraitsError: {
_enum: {
@@ -1193,7 +1197,7 @@
}
},
/**
- * Lookup130: xcm::v2::WeightLimit
+ * Lookup131: xcm::v2::WeightLimit
**/
XcmV2WeightLimit: {
_enum: {
@@ -1202,7 +1206,7 @@
}
},
/**
- * Lookup131: xcm::VersionedMultiAssets
+ * Lookup132: xcm::VersionedMultiAssets
**/
XcmVersionedMultiAssets: {
_enum: {
@@ -1211,11 +1215,11 @@
}
},
/**
- * Lookup146: cumulus_pallet_xcm::pallet::Call<T>
+ * Lookup147: cumulus_pallet_xcm::pallet::Call<T>
**/
CumulusPalletXcmCall: 'Null',
/**
- * Lookup147: cumulus_pallet_dmp_queue::pallet::Call<T>
+ * Lookup148: cumulus_pallet_dmp_queue::pallet::Call<T>
**/
CumulusPalletDmpQueueCall: {
_enum: {
@@ -1226,7 +1230,7 @@
}
},
/**
- * Lookup148: pallet_inflation::pallet::Call<T>
+ * Lookup149: pallet_inflation::pallet::Call<T>
**/
PalletInflationCall: {
_enum: {
@@ -1236,7 +1240,7 @@
}
},
/**
- * Lookup149: pallet_unique::Call<T>
+ * Lookup150: pallet_unique::Call<T>
**/
PalletUniqueCall: {
_enum: {
@@ -1254,11 +1258,11 @@
},
add_to_allow_list: {
collectionId: 'u32',
- address: 'PalletCommonAccountBasicCrossAccountIdRepr',
+ address: 'PalletEvmAccountBasicCrossAccountIdRepr',
},
remove_from_allow_list: {
collectionId: 'u32',
- address: 'PalletCommonAccountBasicCrossAccountIdRepr',
+ address: 'PalletEvmAccountBasicCrossAccountIdRepr',
},
set_public_access_mode: {
collectionId: 'u32',
@@ -1274,11 +1278,11 @@
},
add_collection_admin: {
collectionId: 'u32',
- newAdminId: 'PalletCommonAccountBasicCrossAccountIdRepr',
+ newAdminId: 'PalletEvmAccountBasicCrossAccountIdRepr',
},
remove_collection_admin: {
collectionId: 'u32',
- accountId: 'PalletCommonAccountBasicCrossAccountIdRepr',
+ accountId: 'PalletEvmAccountBasicCrossAccountIdRepr',
},
set_collection_sponsor: {
collectionId: 'u32',
@@ -1292,12 +1296,12 @@
},
create_item: {
collectionId: 'u32',
- owner: 'PalletCommonAccountBasicCrossAccountIdRepr',
+ owner: 'PalletEvmAccountBasicCrossAccountIdRepr',
data: 'UpDataStructsCreateItemData',
},
create_multiple_items: {
collectionId: 'u32',
- owner: 'PalletCommonAccountBasicCrossAccountIdRepr',
+ owner: 'PalletEvmAccountBasicCrossAccountIdRepr',
itemsData: 'Vec<UpDataStructsCreateItemData>',
},
create_multiple_items_ex: {
@@ -1315,25 +1319,25 @@
},
burn_from: {
collectionId: 'u32',
- from: 'PalletCommonAccountBasicCrossAccountIdRepr',
+ from: 'PalletEvmAccountBasicCrossAccountIdRepr',
itemId: 'u32',
value: 'u128',
},
transfer: {
- recipient: 'PalletCommonAccountBasicCrossAccountIdRepr',
+ recipient: 'PalletEvmAccountBasicCrossAccountIdRepr',
collectionId: 'u32',
itemId: 'u32',
value: 'u128',
},
approve: {
- spender: 'PalletCommonAccountBasicCrossAccountIdRepr',
+ spender: 'PalletEvmAccountBasicCrossAccountIdRepr',
collectionId: 'u32',
itemId: 'u32',
amount: 'u128',
},
transfer_from: {
- from: 'PalletCommonAccountBasicCrossAccountIdRepr',
- recipient: 'PalletCommonAccountBasicCrossAccountIdRepr',
+ from: 'PalletEvmAccountBasicCrossAccountIdRepr',
+ recipient: 'PalletEvmAccountBasicCrossAccountIdRepr',
collectionId: 'u32',
itemId: 'u32',
value: 'u128',
@@ -1370,7 +1374,7 @@
}
},
/**
- * Lookup155: up_data_structs::CollectionMode
+ * Lookup156: up_data_structs::CollectionMode
**/
UpDataStructsCollectionMode: {
_enum: {
@@ -1380,7 +1384,7 @@
}
},
/**
- * Lookup156: up_data_structs::CreateCollectionData<sp_core::crypto::AccountId32>
+ * Lookup157: up_data_structs::CreateCollectionData<sp_core::crypto::AccountId32>
**/
UpDataStructsCreateCollectionData: {
mode: 'UpDataStructsCollectionMode',
@@ -1397,19 +1401,19 @@
metaUpdatePermission: 'Option<UpDataStructsMetaUpdatePermission>'
},
/**
- * Lookup158: up_data_structs::AccessMode
+ * Lookup159: up_data_structs::AccessMode
**/
UpDataStructsAccessMode: {
_enum: ['Normal', 'AllowList']
},
/**
- * Lookup161: up_data_structs::SchemaVersion
+ * Lookup162: up_data_structs::SchemaVersion
**/
UpDataStructsSchemaVersion: {
_enum: ['ImageURL', 'Unique']
},
/**
- * Lookup164: up_data_structs::CollectionLimits
+ * Lookup165: up_data_structs::CollectionLimits
**/
UpDataStructsCollectionLimits: {
accountTokenOwnershipLimit: 'Option<u32>',
@@ -1423,7 +1427,7 @@
transfersEnabled: 'Option<bool>'
},
/**
- * Lookup166: up_data_structs::SponsoringRateLimit
+ * Lookup167: up_data_structs::SponsoringRateLimit
**/
UpDataStructsSponsoringRateLimit: {
_enum: {
@@ -1432,22 +1436,22 @@
}
},
/**
- * Lookup170: up_data_structs::MetaUpdatePermission
+ * Lookup171: up_data_structs::MetaUpdatePermission
**/
UpDataStructsMetaUpdatePermission: {
_enum: ['ItemOwner', 'Admin', 'None']
},
/**
- * Lookup172: pallet_common::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>
+ * Lookup173: pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>
**/
- PalletCommonAccountBasicCrossAccountIdRepr: {
+ PalletEvmAccountBasicCrossAccountIdRepr: {
_enum: {
Substrate: 'AccountId32',
Ethereum: 'H160'
}
},
/**
- * Lookup174: up_data_structs::CreateItemData
+ * Lookup175: up_data_structs::CreateItemData
**/
UpDataStructsCreateItemData: {
_enum: {
@@ -1457,20 +1461,20 @@
}
},
/**
- * Lookup175: up_data_structs::CreateNftData
+ * Lookup176: up_data_structs::CreateNftData
**/
UpDataStructsCreateNftData: {
constData: 'Bytes',
variableData: 'Bytes'
},
/**
- * Lookup177: up_data_structs::CreateFungibleData
+ * Lookup178: up_data_structs::CreateFungibleData
**/
UpDataStructsCreateFungibleData: {
value: 'u128'
},
/**
- * Lookup178: up_data_structs::CreateReFungibleData
+ * Lookup179: up_data_structs::CreateReFungibleData
**/
UpDataStructsCreateReFungibleData: {
constData: 'Bytes',
@@ -1478,38 +1482,38 @@
pieces: 'u128'
},
/**
- * Lookup180: up_data_structs::CreateItemExData<pallet_common::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+ * Lookup181: up_data_structs::CreateItemExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
**/
UpDataStructsCreateItemExData: {
_enum: {
NFT: 'Vec<UpDataStructsCreateNftExData>',
- Fungible: 'BTreeMap<PalletCommonAccountBasicCrossAccountIdRepr, u128>',
+ Fungible: 'BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>',
RefungibleMultipleItems: 'Vec<UpDataStructsCreateRefungibleExData>',
RefungibleMultipleOwners: 'UpDataStructsCreateRefungibleExData'
}
},
/**
- * Lookup182: up_data_structs::CreateNftExData<pallet_common::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+ * Lookup183: up_data_structs::CreateNftExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
**/
UpDataStructsCreateNftExData: {
constData: 'Bytes',
variableData: 'Bytes',
- owner: 'PalletCommonAccountBasicCrossAccountIdRepr'
+ owner: 'PalletEvmAccountBasicCrossAccountIdRepr'
},
/**
- * Lookup189: up_data_structs::CreateRefungibleExData<pallet_common::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+ * Lookup190: up_data_structs::CreateRefungibleExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
**/
UpDataStructsCreateRefungibleExData: {
constData: 'Bytes',
variableData: 'Bytes',
- users: 'BTreeMap<PalletCommonAccountBasicCrossAccountIdRepr, u128>'
+ users: 'BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>'
},
/**
- * Lookup192: pallet_template_transaction_payment::Call<T>
+ * Lookup193: pallet_template_transaction_payment::Call<T>
**/
PalletTemplateTransactionPaymentCall: 'Null',
/**
- * Lookup193: pallet_evm::pallet::Call<T>
+ * Lookup194: pallet_evm::pallet::Call<T>
**/
PalletEvmCall: {
_enum: {
@@ -1552,7 +1556,7 @@
}
},
/**
- * Lookup199: pallet_ethereum::pallet::Call<T>
+ * Lookup200: pallet_ethereum::pallet::Call<T>
**/
PalletEthereumCall: {
_enum: {
@@ -1562,7 +1566,7 @@
}
},
/**
- * Lookup200: ethereum::transaction::TransactionV2
+ * Lookup201: ethereum::transaction::TransactionV2
**/
EthereumTransactionTransactionV2: {
_enum: {
@@ -1572,7 +1576,7 @@
}
},
/**
- * Lookup201: ethereum::transaction::LegacyTransaction
+ * Lookup202: ethereum::transaction::LegacyTransaction
**/
EthereumTransactionLegacyTransaction: {
nonce: 'U256',
@@ -1584,7 +1588,7 @@
signature: 'EthereumTransactionTransactionSignature'
},
/**
- * Lookup202: ethereum::transaction::TransactionAction
+ * Lookup203: ethereum::transaction::TransactionAction
**/
EthereumTransactionTransactionAction: {
_enum: {
@@ -1593,7 +1597,7 @@
}
},
/**
- * Lookup203: ethereum::transaction::TransactionSignature
+ * Lookup204: ethereum::transaction::TransactionSignature
**/
EthereumTransactionTransactionSignature: {
v: 'u64',
@@ -1601,7 +1605,7 @@
s: 'H256'
},
/**
- * Lookup205: ethereum::transaction::EIP2930Transaction
+ * Lookup206: ethereum::transaction::EIP2930Transaction
**/
EthereumTransactionEip2930Transaction: {
chainId: 'u64',
@@ -1617,14 +1621,14 @@
s: 'H256'
},
/**
- * Lookup207: ethereum::transaction::AccessListItem
+ * Lookup208: ethereum::transaction::AccessListItem
**/
EthereumTransactionAccessListItem: {
address: 'H160',
- slots: 'Vec<H256>'
+ storageKeys: 'Vec<H256>'
},
/**
- * Lookup208: ethereum::transaction::EIP1559Transaction
+ * Lookup209: ethereum::transaction::EIP1559Transaction
**/
EthereumTransactionEip1559Transaction: {
chainId: 'u64',
@@ -1641,7 +1645,7 @@
s: 'H256'
},
/**
- * Lookup209: pallet_evm_migration::pallet::Call<T>
+ * Lookup210: pallet_evm_migration::pallet::Call<T>
**/
PalletEvmMigrationCall: {
_enum: {
@@ -1659,7 +1663,7 @@
}
},
/**
- * Lookup212: pallet_sudo::pallet::Event<T>
+ * Lookup213: pallet_sudo::pallet::Event<T>
**/
PalletSudoEvent: {
_enum: {
@@ -1675,7 +1679,7 @@
}
},
/**
- * Lookup214: sp_runtime::DispatchError
+ * Lookup215: sp_runtime::DispatchError
**/
SpRuntimeDispatchError: {
_enum: {
@@ -1691,32 +1695,32 @@
}
},
/**
- * Lookup215: sp_runtime::ModuleError
+ * Lookup216: sp_runtime::ModuleError
**/
SpRuntimeModuleError: {
index: 'u8',
error: 'u8'
},
/**
- * Lookup216: sp_runtime::TokenError
+ * Lookup217: sp_runtime::TokenError
**/
SpRuntimeTokenError: {
_enum: ['NoFunds', 'WouldDie', 'BelowMinimum', 'CannotCreate', 'UnknownAsset', 'Frozen', 'Unsupported']
},
/**
- * Lookup217: sp_runtime::ArithmeticError
+ * Lookup218: sp_runtime::ArithmeticError
**/
SpRuntimeArithmeticError: {
_enum: ['Underflow', 'Overflow', 'DivisionByZero']
},
/**
- * Lookup218: pallet_sudo::pallet::Error<T>
+ * Lookup219: pallet_sudo::pallet::Error<T>
**/
PalletSudoError: {
_enum: ['RequireSudo']
},
/**
- * Lookup219: frame_system::AccountInfo<Index, pallet_balances::AccountData<Balance>>
+ * Lookup220: frame_system::AccountInfo<Index, pallet_balances::AccountData<Balance>>
**/
FrameSystemAccountInfo: {
nonce: 'u32',
@@ -1726,7 +1730,7 @@
data: 'PalletBalancesAccountData'
},
/**
- * Lookup220: frame_support::weights::PerDispatchClass<T>
+ * Lookup221: frame_support::weights::PerDispatchClass<T>
**/
FrameSupportWeightsPerDispatchClassU64: {
normal: 'u64',
@@ -1734,13 +1738,13 @@
mandatory: 'u64'
},
/**
- * Lookup221: sp_runtime::generic::digest::Digest
+ * Lookup222: sp_runtime::generic::digest::Digest
**/
SpRuntimeDigest: {
logs: 'Vec<SpRuntimeDigestDigestItem>'
},
/**
- * Lookup223: sp_runtime::generic::digest::DigestItem
+ * Lookup224: sp_runtime::generic::digest::DigestItem
**/
SpRuntimeDigestDigestItem: {
_enum: {
@@ -1756,7 +1760,7 @@
}
},
/**
- * Lookup225: frame_system::EventRecord<unique_runtime::Event, primitive_types::H256>
+ * Lookup226: frame_system::EventRecord<opal_runtime::Event, primitive_types::H256>
**/
FrameSystemEventRecord: {
phase: 'FrameSystemPhase',
@@ -1764,7 +1768,7 @@
topics: 'Vec<H256>'
},
/**
- * Lookup227: frame_system::pallet::Event<T>
+ * Lookup228: frame_system::pallet::Event<T>
**/
FrameSystemEvent: {
_enum: {
@@ -1792,7 +1796,7 @@
}
},
/**
- * Lookup228: frame_support::weights::DispatchInfo
+ * Lookup229: frame_support::weights::DispatchInfo
**/
FrameSupportWeightsDispatchInfo: {
weight: 'u64',
@@ -1800,19 +1804,19 @@
paysFee: 'FrameSupportWeightsPays'
},
/**
- * Lookup229: frame_support::weights::DispatchClass
+ * Lookup230: frame_support::weights::DispatchClass
**/
FrameSupportWeightsDispatchClass: {
_enum: ['Normal', 'Operational', 'Mandatory']
},
/**
- * Lookup230: frame_support::weights::Pays
+ * Lookup231: frame_support::weights::Pays
**/
FrameSupportWeightsPays: {
_enum: ['Yes', 'No']
},
/**
- * Lookup231: orml_vesting::module::Event<T>
+ * Lookup232: orml_vesting::module::Event<T>
**/
OrmlVestingModuleEvent: {
_enum: {
@@ -1831,7 +1835,7 @@
}
},
/**
- * Lookup232: cumulus_pallet_xcmp_queue::pallet::Event<T>
+ * Lookup233: cumulus_pallet_xcmp_queue::pallet::Event<T>
**/
CumulusPalletXcmpQueueEvent: {
_enum: {
@@ -1846,7 +1850,7 @@
}
},
/**
- * Lookup233: pallet_xcm::pallet::Event<T>
+ * Lookup234: pallet_xcm::pallet::Event<T>
**/
PalletXcmEvent: {
_enum: {
@@ -1869,7 +1873,7 @@
}
},
/**
- * Lookup234: xcm::v2::traits::Outcome
+ * Lookup235: xcm::v2::traits::Outcome
**/
XcmV2TraitsOutcome: {
_enum: {
@@ -1879,7 +1883,7 @@
}
},
/**
- * Lookup236: cumulus_pallet_xcm::pallet::Event<T>
+ * Lookup237: cumulus_pallet_xcm::pallet::Event<T>
**/
CumulusPalletXcmEvent: {
_enum: {
@@ -1889,7 +1893,7 @@
}
},
/**
- * Lookup237: cumulus_pallet_dmp_queue::pallet::Event<T>
+ * Lookup238: cumulus_pallet_dmp_queue::pallet::Event<T>
**/
CumulusPalletDmpQueueEvent: {
_enum: {
@@ -1902,19 +1906,19 @@
}
},
/**
- * Lookup238: pallet_unique::RawEvent<sp_core::crypto::AccountId32, pallet_common::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+ * Lookup239: pallet_unique::RawEvent<sp_core::crypto::AccountId32, pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
**/
PalletUniqueRawEvent: {
_enum: {
CollectionSponsorRemoved: 'u32',
- CollectionAdminAdded: '(u32,PalletCommonAccountBasicCrossAccountIdRepr)',
+ CollectionAdminAdded: '(u32,PalletEvmAccountBasicCrossAccountIdRepr)',
CollectionOwnedChanged: '(u32,AccountId32)',
CollectionSponsorSet: '(u32,AccountId32)',
ConstOnChainSchemaSet: 'u32',
SponsorshipConfirmed: '(u32,AccountId32)',
- CollectionAdminRemoved: '(u32,PalletCommonAccountBasicCrossAccountIdRepr)',
- AllowListAddressRemoved: '(u32,PalletCommonAccountBasicCrossAccountIdRepr)',
- AllowListAddressAdded: '(u32,PalletCommonAccountBasicCrossAccountIdRepr)',
+ CollectionAdminRemoved: '(u32,PalletEvmAccountBasicCrossAccountIdRepr)',
+ AllowListAddressRemoved: '(u32,PalletEvmAccountBasicCrossAccountIdRepr)',
+ AllowListAddressAdded: '(u32,PalletEvmAccountBasicCrossAccountIdRepr)',
CollectionLimitSet: 'u32',
MintPermissionSet: 'u32',
OffchainSchemaSet: 'u32',
@@ -1924,20 +1928,20 @@
}
},
/**
- * Lookup239: pallet_common::pallet::Event<T>
+ * Lookup240: pallet_common::pallet::Event<T>
**/
PalletCommonEvent: {
_enum: {
CollectionCreated: '(u32,u8,AccountId32)',
CollectionDestroyed: 'u32',
- ItemCreated: '(u32,u32,PalletCommonAccountBasicCrossAccountIdRepr,u128)',
- ItemDestroyed: '(u32,u32,PalletCommonAccountBasicCrossAccountIdRepr,u128)',
- Transfer: '(u32,u32,PalletCommonAccountBasicCrossAccountIdRepr,PalletCommonAccountBasicCrossAccountIdRepr,u128)',
- Approved: '(u32,u32,PalletCommonAccountBasicCrossAccountIdRepr,PalletCommonAccountBasicCrossAccountIdRepr,u128)'
+ ItemCreated: '(u32,u32,PalletEvmAccountBasicCrossAccountIdRepr,u128)',
+ ItemDestroyed: '(u32,u32,PalletEvmAccountBasicCrossAccountIdRepr,u128)',
+ Transfer: '(u32,u32,PalletEvmAccountBasicCrossAccountIdRepr,PalletEvmAccountBasicCrossAccountIdRepr,u128)',
+ Approved: '(u32,u32,PalletEvmAccountBasicCrossAccountIdRepr,PalletEvmAccountBasicCrossAccountIdRepr,u128)'
}
},
/**
- * Lookup240: pallet_evm::pallet::Event<T>
+ * Lookup241: pallet_evm::pallet::Event<T>
**/
PalletEvmEvent: {
_enum: {
@@ -1951,7 +1955,7 @@
}
},
/**
- * Lookup241: ethereum::log::Log
+ * Lookup242: ethereum::log::Log
**/
EthereumLog: {
address: 'H160',
@@ -1959,7 +1963,7 @@
data: 'Bytes'
},
/**
- * Lookup242: pallet_ethereum::pallet::Event
+ * Lookup243: pallet_ethereum::pallet::Event
**/
PalletEthereumEvent: {
_enum: {
@@ -1967,7 +1971,7 @@
}
},
/**
- * Lookup243: evm_core::error::ExitReason
+ * Lookup244: evm_core::error::ExitReason
**/
EvmCoreErrorExitReason: {
_enum: {
@@ -1978,13 +1982,13 @@
}
},
/**
- * Lookup244: evm_core::error::ExitSucceed
+ * Lookup245: evm_core::error::ExitSucceed
**/
EvmCoreErrorExitSucceed: {
_enum: ['Stopped', 'Returned', 'Suicided']
},
/**
- * Lookup245: evm_core::error::ExitError
+ * Lookup246: evm_core::error::ExitError
**/
EvmCoreErrorExitError: {
_enum: {
@@ -2006,13 +2010,13 @@
}
},
/**
- * Lookup248: evm_core::error::ExitRevert
+ * Lookup249: evm_core::error::ExitRevert
**/
EvmCoreErrorExitRevert: {
_enum: ['Reverted']
},
/**
- * Lookup249: evm_core::error::ExitFatal
+ * Lookup250: evm_core::error::ExitFatal
**/
EvmCoreErrorExitFatal: {
_enum: {
@@ -2023,7 +2027,7 @@
}
},
/**
- * Lookup250: frame_system::Phase
+ * Lookup251: frame_system::Phase
**/
FrameSystemPhase: {
_enum: {
@@ -2033,14 +2037,14 @@
}
},
/**
- * Lookup252: frame_system::LastRuntimeUpgradeInfo
+ * Lookup253: frame_system::LastRuntimeUpgradeInfo
**/
FrameSystemLastRuntimeUpgradeInfo: {
specVersion: 'Compact<u32>',
specName: 'Text'
},
/**
- * Lookup253: frame_system::limits::BlockWeights
+ * Lookup254: frame_system::limits::BlockWeights
**/
FrameSystemLimitsBlockWeights: {
baseBlock: 'u64',
@@ -2048,7 +2052,7 @@
perClass: 'FrameSupportWeightsPerDispatchClassWeightsPerClass'
},
/**
- * Lookup254: frame_support::weights::PerDispatchClass<frame_system::limits::WeightsPerClass>
+ * Lookup255: frame_support::weights::PerDispatchClass<frame_system::limits::WeightsPerClass>
**/
FrameSupportWeightsPerDispatchClassWeightsPerClass: {
normal: 'FrameSystemLimitsWeightsPerClass',
@@ -2056,7 +2060,7 @@
mandatory: 'FrameSystemLimitsWeightsPerClass'
},
/**
- * Lookup255: frame_system::limits::WeightsPerClass
+ * Lookup256: frame_system::limits::WeightsPerClass
**/
FrameSystemLimitsWeightsPerClass: {
baseExtrinsic: 'u64',
@@ -2065,13 +2069,13 @@
reserved: 'Option<u64>'
},
/**
- * Lookup257: frame_system::limits::BlockLength
+ * Lookup258: frame_system::limits::BlockLength
**/
FrameSystemLimitsBlockLength: {
max: 'FrameSupportWeightsPerDispatchClassU32'
},
/**
- * Lookup258: frame_support::weights::PerDispatchClass<T>
+ * Lookup259: frame_support::weights::PerDispatchClass<T>
**/
FrameSupportWeightsPerDispatchClassU32: {
normal: 'u32',
@@ -2079,14 +2083,14 @@
mandatory: 'u32'
},
/**
- * Lookup259: frame_support::weights::RuntimeDbWeight
+ * Lookup260: frame_support::weights::RuntimeDbWeight
**/
FrameSupportWeightsRuntimeDbWeight: {
read: 'u64',
write: 'u64'
},
/**
- * Lookup260: sp_version::RuntimeVersion
+ * Lookup261: sp_version::RuntimeVersion
**/
SpVersionRuntimeVersion: {
specName: 'Text',
@@ -2099,19 +2103,19 @@
stateVersion: 'u8'
},
/**
- * Lookup264: frame_system::pallet::Error<T>
+ * Lookup265: frame_system::pallet::Error<T>
**/
FrameSystemError: {
_enum: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount', 'CallFiltered']
},
/**
- * Lookup266: orml_vesting::module::Error<T>
+ * Lookup267: orml_vesting::module::Error<T>
**/
OrmlVestingModuleError: {
_enum: ['ZeroVestingPeriod', 'ZeroVestingPeriodCount', 'InsufficientBalanceToLock', 'TooManyVestingSchedules', 'AmountLow', 'MaxVestingSchedulesExceeded']
},
/**
- * Lookup268: cumulus_pallet_xcmp_queue::InboundChannelDetails
+ * Lookup269: cumulus_pallet_xcmp_queue::InboundChannelDetails
**/
CumulusPalletXcmpQueueInboundChannelDetails: {
sender: 'u32',
@@ -2119,19 +2123,19 @@
messageMetadata: 'Vec<(u32,PolkadotParachainPrimitivesXcmpMessageFormat)>'
},
/**
- * Lookup269: cumulus_pallet_xcmp_queue::InboundState
+ * Lookup270: cumulus_pallet_xcmp_queue::InboundState
**/
CumulusPalletXcmpQueueInboundState: {
_enum: ['Ok', 'Suspended']
},
/**
- * Lookup272: polkadot_parachain::primitives::XcmpMessageFormat
+ * Lookup273: polkadot_parachain::primitives::XcmpMessageFormat
**/
PolkadotParachainPrimitivesXcmpMessageFormat: {
_enum: ['ConcatenatedVersionedXcm', 'ConcatenatedEncodedBlob', 'Signals']
},
/**
- * Lookup275: cumulus_pallet_xcmp_queue::OutboundChannelDetails
+ * Lookup276: cumulus_pallet_xcmp_queue::OutboundChannelDetails
**/
CumulusPalletXcmpQueueOutboundChannelDetails: {
recipient: 'u32',
@@ -2141,13 +2145,13 @@
lastIndex: 'u16'
},
/**
- * Lookup276: cumulus_pallet_xcmp_queue::OutboundState
+ * Lookup277: cumulus_pallet_xcmp_queue::OutboundState
**/
CumulusPalletXcmpQueueOutboundState: {
_enum: ['Ok', 'Suspended']
},
/**
- * Lookup278: cumulus_pallet_xcmp_queue::QueueConfigData
+ * Lookup279: cumulus_pallet_xcmp_queue::QueueConfigData
**/
CumulusPalletXcmpQueueQueueConfigData: {
suspendThreshold: 'u32',
@@ -2158,29 +2162,29 @@
xcmpMaxIndividualWeight: 'u64'
},
/**
- * Lookup280: cumulus_pallet_xcmp_queue::pallet::Error<T>
+ * Lookup281: cumulus_pallet_xcmp_queue::pallet::Error<T>
**/
CumulusPalletXcmpQueueError: {
_enum: ['FailedToSend', 'BadXcmOrigin', 'BadXcm', 'BadOverweightIndex', 'WeightOverLimit']
},
/**
- * Lookup281: pallet_xcm::pallet::Error<T>
+ * Lookup282: pallet_xcm::pallet::Error<T>
**/
PalletXcmError: {
_enum: ['Unreachable', 'SendFailure', 'Filtered', 'UnweighableMessage', 'DestinationNotInvertible', 'Empty', 'CannotReanchor', 'TooManyAssets', 'InvalidOrigin', 'BadVersion', 'BadLocation', 'NoSubscription', 'AlreadySubscribed']
},
/**
- * Lookup282: cumulus_pallet_xcm::pallet::Error<T>
+ * Lookup283: cumulus_pallet_xcm::pallet::Error<T>
**/
CumulusPalletXcmError: 'Null',
/**
- * Lookup283: cumulus_pallet_dmp_queue::ConfigData
+ * Lookup284: cumulus_pallet_dmp_queue::ConfigData
**/
CumulusPalletDmpQueueConfigData: {
maxIndividual: 'u64'
},
/**
- * Lookup284: cumulus_pallet_dmp_queue::PageIndexData
+ * Lookup285: cumulus_pallet_dmp_queue::PageIndexData
**/
CumulusPalletDmpQueuePageIndexData: {
beginUsed: 'u32',
@@ -2188,19 +2192,19 @@
overweightCount: 'u64'
},
/**
- * Lookup287: cumulus_pallet_dmp_queue::pallet::Error<T>
+ * Lookup288: cumulus_pallet_dmp_queue::pallet::Error<T>
**/
CumulusPalletDmpQueueError: {
_enum: ['Unknown', 'OverLimit']
},
/**
- * Lookup291: pallet_unique::Error<T>
+ * Lookup292: pallet_unique::Error<T>
**/
PalletUniqueError: {
_enum: ['CollectionDecimalPointLimitExceeded', 'ConfirmUnsetSponsorFail', 'EmptyArgument']
},
/**
- * Lookup292: up_data_structs::Collection<sp_core::crypto::AccountId32>
+ * Lookup293: up_data_structs::Collection<sp_core::crypto::AccountId32>
**/
UpDataStructsCollection: {
owner: 'AccountId32',
@@ -2219,7 +2223,7 @@
metaUpdatePermission: 'UpDataStructsMetaUpdatePermission'
},
/**
- * Lookup293: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>
+ * Lookup294: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>
**/
UpDataStructsSponsorshipState: {
_enum: {
@@ -2229,7 +2233,7 @@
}
},
/**
- * Lookup296: up_data_structs::CollectionStats
+ * Lookup297: up_data_structs::CollectionStats
**/
UpDataStructsCollectionStats: {
created: 'u32',
@@ -2237,52 +2241,52 @@
alive: 'u32'
},
/**
- * Lookup297: pallet_common::pallet::Error<T>
+ * Lookup298: pallet_common::pallet::Error<T>
**/
PalletCommonError: {
- _enum: ['CollectionNotFound', 'MustBeTokenOwner', 'NoPermission', 'PublicMintingNotAllowed', 'AddressNotInAllowlist', 'CollectionNameLimitExceeded', 'CollectionDescriptionLimitExceeded', 'CollectionTokenPrefixLimitExceeded', 'TotalCollectionsLimitExceeded', 'TokenVariableDataLimitExceeded', 'CollectionAdminCountExceeded', 'CollectionLimitBoundsExceeded', 'OwnerPermissionsCantBeReverted', 'TransferNotAllowed', 'AccountTokenLimitExceeded', 'CollectionTokenLimitExceeded', 'MetadataFlagFrozen', 'TokenNotFound', 'TokenValueTooLow', 'ApprovedValueTooLow', 'CantApproveMoreThanOwned', 'AddressIsZero', 'UnsupportedOperation']
+ _enum: ['CollectionNotFound', 'MustBeTokenOwner', 'NoPermission', 'PublicMintingNotAllowed', 'AddressNotInAllowlist', 'CollectionNameLimitExceeded', 'CollectionDescriptionLimitExceeded', 'CollectionTokenPrefixLimitExceeded', 'TotalCollectionsLimitExceeded', 'TokenVariableDataLimitExceeded', 'CollectionAdminCountExceeded', 'CollectionLimitBoundsExceeded', 'OwnerPermissionsCantBeReverted', 'TransferNotAllowed', 'AccountTokenLimitExceeded', 'CollectionTokenLimitExceeded', 'MetadataFlagFrozen', 'TokenNotFound', 'TokenValueTooLow', 'ApprovedValueTooLow', 'CantApproveMoreThanOwned', 'AddressIsZero', 'UnsupportedOperation', 'NotSufficientFounds']
},
/**
- * Lookup299: pallet_fungible::pallet::Error<T>
+ * Lookup300: pallet_fungible::pallet::Error<T>
**/
PalletFungibleError: {
_enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData']
},
/**
- * Lookup300: pallet_refungible::ItemData
+ * Lookup301: pallet_refungible::ItemData
**/
PalletRefungibleItemData: {
constData: 'Bytes',
variableData: 'Bytes'
},
/**
- * Lookup304: pallet_refungible::pallet::Error<T>
+ * Lookup305: pallet_refungible::pallet::Error<T>
**/
PalletRefungibleError: {
_enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces']
},
/**
- * Lookup305: pallet_nonfungible::ItemData<pallet_common::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+ * Lookup306: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
**/
PalletNonfungibleItemData: {
constData: 'Bytes',
variableData: 'Bytes',
- owner: 'PalletCommonAccountBasicCrossAccountIdRepr'
+ owner: 'PalletEvmAccountBasicCrossAccountIdRepr'
},
/**
- * Lookup306: pallet_nonfungible::pallet::Error<T>
+ * Lookup307: pallet_nonfungible::pallet::Error<T>
**/
PalletNonfungibleError: {
_enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount']
},
/**
- * Lookup308: pallet_evm::pallet::Error<T>
+ * Lookup309: pallet_evm::pallet::Error<T>
**/
PalletEvmError: {
_enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce']
},
/**
- * Lookup311: fp_rpc::TransactionStatus
+ * Lookup312: fp_rpc::TransactionStatus
**/
FpRpcTransactionStatus: {
transactionHash: 'H256',
@@ -2294,11 +2298,11 @@
logsBloom: 'EthbloomBloom'
},
/**
- * Lookup314: ethbloom::Bloom
+ * Lookup315: ethbloom::Bloom
**/
EthbloomBloom: '[u8;256]',
/**
- * Lookup316: ethereum::receipt::ReceiptV3
+ * Lookup317: ethereum::receipt::ReceiptV3
**/
EthereumReceiptReceiptV3: {
_enum: {
@@ -2308,7 +2312,7 @@
}
},
/**
- * Lookup317: ethereum::receipt::EIP658ReceiptData
+ * Lookup318: ethereum::receipt::EIP658ReceiptData
**/
EthereumReceiptEip658ReceiptData: {
statusCode: 'u8',
@@ -2317,7 +2321,7 @@
logs: 'Vec<EthereumLog>'
},
/**
- * Lookup318: ethereum::block::Block<ethereum::transaction::TransactionV2>
+ * Lookup319: ethereum::block::Block<ethereum::transaction::TransactionV2>
**/
EthereumBlock: {
header: 'EthereumHeader',
@@ -2325,7 +2329,7 @@
ommers: 'Vec<EthereumHeader>'
},
/**
- * Lookup319: ethereum::header::Header
+ * Lookup320: ethereum::header::Header
**/
EthereumHeader: {
parentHash: 'H256',
@@ -2345,41 +2349,41 @@
nonce: 'EthereumTypesHashH64'
},
/**
- * Lookup320: ethereum_types::hash::H64
+ * Lookup321: ethereum_types::hash::H64
**/
EthereumTypesHashH64: '[u8;8]',
/**
- * Lookup325: pallet_ethereum::pallet::Error<T>
+ * Lookup326: pallet_ethereum::pallet::Error<T>
**/
PalletEthereumError: {
_enum: ['InvalidSignature', 'PreLogExists']
},
/**
- * Lookup326: pallet_evm_coder_substrate::pallet::Error<T>
+ * Lookup327: pallet_evm_coder_substrate::pallet::Error<T>
**/
PalletEvmCoderSubstrateError: {
_enum: ['OutOfGas', 'OutOfFund']
},
/**
- * Lookup327: pallet_evm_contract_helpers::SponsoringModeT
+ * Lookup328: pallet_evm_contract_helpers::SponsoringModeT
**/
PalletEvmContractHelpersSponsoringModeT: {
_enum: ['Disabled', 'Allowlisted', 'Generous']
},
/**
- * Lookup329: pallet_evm_contract_helpers::pallet::Error<T>
+ * Lookup330: pallet_evm_contract_helpers::pallet::Error<T>
**/
PalletEvmContractHelpersError: {
_enum: ['NoPermission']
},
/**
- * Lookup330: pallet_evm_migration::pallet::Error<T>
+ * Lookup331: pallet_evm_migration::pallet::Error<T>
**/
PalletEvmMigrationError: {
_enum: ['AccountNotEmpty', 'AccountIsNotMigrating']
},
/**
- * Lookup332: sp_runtime::MultiSignature
+ * Lookup333: sp_runtime::MultiSignature
**/
SpRuntimeMultiSignature: {
_enum: {
@@ -2389,39 +2393,39 @@
}
},
/**
- * Lookup333: sp_core::ed25519::Signature
+ * Lookup334: sp_core::ed25519::Signature
**/
SpCoreEd25519Signature: '[u8;64]',
/**
- * Lookup335: sp_core::sr25519::Signature
+ * Lookup336: sp_core::sr25519::Signature
**/
SpCoreSr25519Signature: '[u8;64]',
/**
- * Lookup336: sp_core::ecdsa::Signature
+ * Lookup337: sp_core::ecdsa::Signature
**/
SpCoreEcdsaSignature: '[u8;65]',
/**
- * Lookup339: frame_system::extensions::check_spec_version::CheckSpecVersion<T>
+ * Lookup340: frame_system::extensions::check_spec_version::CheckSpecVersion<T>
**/
FrameSystemExtensionsCheckSpecVersion: 'Null',
/**
- * Lookup340: frame_system::extensions::check_genesis::CheckGenesis<T>
+ * Lookup341: frame_system::extensions::check_genesis::CheckGenesis<T>
**/
FrameSystemExtensionsCheckGenesis: 'Null',
/**
- * Lookup343: frame_system::extensions::check_nonce::CheckNonce<T>
+ * Lookup344: frame_system::extensions::check_nonce::CheckNonce<T>
**/
FrameSystemExtensionsCheckNonce: 'Compact<u32>',
/**
- * Lookup344: frame_system::extensions::check_weight::CheckWeight<T>
+ * Lookup345: frame_system::extensions::check_weight::CheckWeight<T>
**/
FrameSystemExtensionsCheckWeight: 'Null',
/**
- * Lookup345: pallet_template_transaction_payment::ChargeTransactionPayment<unique_runtime::Runtime>
+ * Lookup346: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>
**/
PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact<u128>',
/**
- * Lookup346: unique_runtime::Runtime
+ * Lookup347: opal_runtime::Runtime
**/
- UniqueRuntimeRuntime: 'Null'
+ OpalRuntimeRuntime: 'Null'
};
tests/src/interfaces/types-lookup.tsdiffbeforeafterboth--- a/tests/src/interfaces/types-lookup.ts
+++ b/tests/src/interfaces/types-lookup.ts
@@ -2,7 +2,7 @@
/* eslint-disable */
declare module '@polkadot/types/lookup' {
- import type { BTreeMap, Bytes, Compact, Enum, Null, Option, Result, Struct, Text, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';
+ import type { BTreeMap, BTreeSet, Bytes, Compact, Enum, Null, Option, Result, Struct, Text, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';
import type { ITuple } from '@polkadot/types-codec/types';
import type { AccountId32, Call, H160, H256, MultiAddress, Perbill } from '@polkadot/types/interfaces/runtime';
import type { Event } from '@polkadot/types/interfaces/system';
@@ -21,7 +21,15 @@
readonly type: 'Present';
}
- /** @name CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot (10) */
+ /** @name SpTrieStorageProof (10) */
+ export interface SpTrieStorageProof extends Struct {
+ readonly trieNodes: BTreeSet;
+ }
+
+ /** @name BTreeSet (11) */
+ export interface BTreeSet extends Vec<Bytes> {}
+
+ /** @name CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot (13) */
export interface CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot extends Struct {
readonly dmqMqcHead: H256;
readonly relayDispatchQueueSize: ITuple<[u32, u32]>;
@@ -29,7 +37,7 @@
readonly egressChannels: Vec<ITuple<[u32, PolkadotPrimitivesV1AbridgedHrmpChannel]>>;
}
- /** @name PolkadotPrimitivesV1AbridgedHrmpChannel (15) */
+ /** @name PolkadotPrimitivesV1AbridgedHrmpChannel (18) */
export interface PolkadotPrimitivesV1AbridgedHrmpChannel extends Struct {
readonly maxCapacity: u32;
readonly maxTotalSize: u32;
@@ -39,7 +47,7 @@
readonly mqcHead: Option<H256>;
}
- /** @name PolkadotPrimitivesV1AbridgedHostConfiguration (17) */
+ /** @name PolkadotPrimitivesV1AbridgedHostConfiguration (20) */
export interface PolkadotPrimitivesV1AbridgedHostConfiguration extends Struct {
readonly maxCodeSize: u32;
readonly maxHeadDataSize: u32;
@@ -52,13 +60,13 @@
readonly validationUpgradeDelay: u32;
}
- /** @name PolkadotCorePrimitivesOutboundHrmpMessage (23) */
+ /** @name PolkadotCorePrimitivesOutboundHrmpMessage (26) */
export interface PolkadotCorePrimitivesOutboundHrmpMessage extends Struct {
readonly recipient: u32;
readonly data: Bytes;
}
- /** @name CumulusPalletParachainSystemCall (26) */
+ /** @name CumulusPalletParachainSystemCall (28) */
export interface CumulusPalletParachainSystemCall extends Enum {
readonly isSetValidationData: boolean;
readonly asSetValidationData: {
@@ -79,7 +87,7 @@
readonly type: 'SetValidationData' | 'SudoSendUpwardMessage' | 'AuthorizeUpgrade' | 'EnactAuthorizedUpgrade';
}
- /** @name CumulusPrimitivesParachainInherentParachainInherentData (27) */
+ /** @name CumulusPrimitivesParachainInherentParachainInherentData (29) */
export interface CumulusPrimitivesParachainInherentParachainInherentData extends Struct {
readonly validationData: PolkadotPrimitivesV1PersistedValidationData;
readonly relayChainState: SpTrieStorageProof;
@@ -87,24 +95,19 @@
readonly horizontalMessages: BTreeMap<u32, Vec<PolkadotCorePrimitivesInboundHrmpMessage>>;
}
- /** @name SpTrieStorageProof (28) */
- export interface SpTrieStorageProof extends Struct {
- readonly trieNodes: Vec<Bytes>;
- }
-
- /** @name PolkadotCorePrimitivesInboundDownwardMessage (30) */
+ /** @name PolkadotCorePrimitivesInboundDownwardMessage (31) */
export interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct {
readonly sentAt: u32;
readonly msg: Bytes;
}
- /** @name PolkadotCorePrimitivesInboundHrmpMessage (33) */
+ /** @name PolkadotCorePrimitivesInboundHrmpMessage (34) */
export interface PolkadotCorePrimitivesInboundHrmpMessage extends Struct {
readonly sentAt: u32;
readonly data: Bytes;
}
- /** @name CumulusPalletParachainSystemEvent (36) */
+ /** @name CumulusPalletParachainSystemEvent (37) */
export interface CumulusPalletParachainSystemEvent extends Enum {
readonly isValidationFunctionStored: boolean;
readonly isValidationFunctionApplied: boolean;
@@ -119,7 +122,7 @@
readonly type: 'ValidationFunctionStored' | 'ValidationFunctionApplied' | 'ValidationFunctionDiscarded' | 'UpgradeAuthorized' | 'DownwardMessagesReceived' | 'DownwardMessagesProcessed';
}
- /** @name CumulusPalletParachainSystemError (37) */
+ /** @name CumulusPalletParachainSystemError (38) */
export interface CumulusPalletParachainSystemError extends Enum {
readonly isOverlappingUpgrades: boolean;
readonly isProhibitedByPolkadot: boolean;
@@ -132,7 +135,7 @@
readonly type: 'OverlappingUpgrades' | 'ProhibitedByPolkadot' | 'TooBig' | 'ValidationDataNotAvailable' | 'HostConfigurationNotAvailable' | 'NotScheduled' | 'NothingAuthorized' | 'Unauthorized';
}
- /** @name PalletBalancesAccountData (40) */
+ /** @name PalletBalancesAccountData (41) */
export interface PalletBalancesAccountData extends Struct {
readonly free: u128;
readonly reserved: u128;
@@ -140,14 +143,14 @@
readonly feeFrozen: u128;
}
- /** @name PalletBalancesBalanceLock (42) */
+ /** @name PalletBalancesBalanceLock (43) */
export interface PalletBalancesBalanceLock extends Struct {
readonly id: U8aFixed;
readonly amount: u128;
readonly reasons: PalletBalancesReasons;
}
- /** @name PalletBalancesReasons (44) */
+ /** @name PalletBalancesReasons (45) */
export interface PalletBalancesReasons extends Enum {
readonly isFee: boolean;
readonly isMisc: boolean;
@@ -155,20 +158,20 @@
readonly type: 'Fee' | 'Misc' | 'All';
}
- /** @name PalletBalancesReserveData (47) */
+ /** @name PalletBalancesReserveData (48) */
export interface PalletBalancesReserveData extends Struct {
readonly id: U8aFixed;
readonly amount: u128;
}
- /** @name PalletBalancesReleases (49) */
+ /** @name PalletBalancesReleases (50) */
export interface PalletBalancesReleases extends Enum {
readonly isV100: boolean;
readonly isV200: boolean;
readonly type: 'V100' | 'V200';
}
- /** @name PalletBalancesCall (50) */
+ /** @name PalletBalancesCall (51) */
export interface PalletBalancesCall extends Enum {
readonly isTransfer: boolean;
readonly asTransfer: {
@@ -205,7 +208,7 @@
readonly type: 'Transfer' | 'SetBalance' | 'ForceTransfer' | 'TransferKeepAlive' | 'TransferAll' | 'ForceUnreserve';
}
- /** @name PalletBalancesEvent (56) */
+ /** @name PalletBalancesEvent (57) */
export interface PalletBalancesEvent extends Enum {
readonly isEndowed: boolean;
readonly asEndowed: {
@@ -264,14 +267,14 @@
readonly type: 'Endowed' | 'DustLost' | 'Transfer' | 'BalanceSet' | 'Reserved' | 'Unreserved' | 'ReserveRepatriated' | 'Deposit' | 'Withdraw' | 'Slashed';
}
- /** @name FrameSupportTokensMiscBalanceStatus (57) */
+ /** @name FrameSupportTokensMiscBalanceStatus (58) */
export interface FrameSupportTokensMiscBalanceStatus extends Enum {
readonly isFree: boolean;
readonly isReserved: boolean;
readonly type: 'Free' | 'Reserved';
}
- /** @name PalletBalancesError (58) */
+ /** @name PalletBalancesError (59) */
export interface PalletBalancesError extends Enum {
readonly isVestingBalance: boolean;
readonly isLiquidityRestrictions: boolean;
@@ -284,7 +287,7 @@
readonly type: 'VestingBalance' | 'LiquidityRestrictions' | 'InsufficientBalance' | 'ExistentialDeposit' | 'KeepAlive' | 'ExistingVestingSchedule' | 'DeadAccount' | 'TooManyReserves';
}
- /** @name PalletTimestampCall (61) */
+ /** @name PalletTimestampCall (62) */
export interface PalletTimestampCall extends Enum {
readonly isSet: boolean;
readonly asSet: {
@@ -293,14 +296,14 @@
readonly type: 'Set';
}
- /** @name PalletTransactionPaymentReleases (64) */
+ /** @name PalletTransactionPaymentReleases (65) */
export interface PalletTransactionPaymentReleases extends Enum {
readonly isV1Ancient: boolean;
readonly isV2: boolean;
readonly type: 'V1Ancient' | 'V2';
}
- /** @name FrameSupportWeightsWeightToFeeCoefficient (66) */
+ /** @name FrameSupportWeightsWeightToFeeCoefficient (67) */
export interface FrameSupportWeightsWeightToFeeCoefficient extends Struct {
readonly coeffInteger: u128;
readonly coeffFrac: Perbill;
@@ -308,7 +311,7 @@
readonly degree: u8;
}
- /** @name PalletTreasuryProposal (68) */
+ /** @name PalletTreasuryProposal (69) */
export interface PalletTreasuryProposal extends Struct {
readonly proposer: AccountId32;
readonly value: u128;
@@ -316,7 +319,7 @@
readonly bond: u128;
}
- /** @name PalletTreasuryCall (71) */
+ /** @name PalletTreasuryCall (72) */
export interface PalletTreasuryCall extends Enum {
readonly isProposeSpend: boolean;
readonly asProposeSpend: {
@@ -334,7 +337,7 @@
readonly type: 'ProposeSpend' | 'RejectProposal' | 'ApproveProposal';
}
- /** @name PalletTreasuryEvent (73) */
+ /** @name PalletTreasuryEvent (74) */
export interface PalletTreasuryEvent extends Enum {
readonly isProposed: boolean;
readonly asProposed: {
@@ -370,10 +373,10 @@
readonly type: 'Proposed' | 'Spending' | 'Awarded' | 'Rejected' | 'Burnt' | 'Rollover' | 'Deposit';
}
- /** @name FrameSupportPalletId (76) */
+ /** @name FrameSupportPalletId (77) */
export interface FrameSupportPalletId extends U8aFixed {}
- /** @name PalletTreasuryError (77) */
+ /** @name PalletTreasuryError (78) */
export interface PalletTreasuryError extends Enum {
readonly isInsufficientProposersBalance: boolean;
readonly isInvalidIndex: boolean;
@@ -381,7 +384,7 @@
readonly type: 'InsufficientProposersBalance' | 'InvalidIndex' | 'TooManyApprovals';
}
- /** @name PalletSudoCall (78) */
+ /** @name PalletSudoCall (79) */
export interface PalletSudoCall extends Enum {
readonly isSudo: boolean;
readonly asSudo: {
@@ -404,7 +407,7 @@
readonly type: 'Sudo' | 'SudoUncheckedWeight' | 'SetKey' | 'SudoAs';
}
- /** @name FrameSystemCall (80) */
+ /** @name FrameSystemCall (81) */
export interface FrameSystemCall extends Enum {
readonly isFillBlock: boolean;
readonly asFillBlock: {
@@ -446,7 +449,7 @@
readonly type: 'FillBlock' | 'Remark' | 'SetHeapPages' | 'SetCode' | 'SetCodeWithoutChecks' | 'SetStorage' | 'KillStorage' | 'KillPrefix' | 'RemarkWithEvent';
}
- /** @name OrmlVestingModuleCall (83) */
+ /** @name OrmlVestingModuleCall (84) */
export interface OrmlVestingModuleCall extends Enum {
readonly isClaim: boolean;
readonly isVestedTransfer: boolean;
@@ -466,7 +469,7 @@
readonly type: 'Claim' | 'VestedTransfer' | 'UpdateVestingSchedules' | 'ClaimFor';
}
- /** @name OrmlVestingVestingSchedule (84) */
+ /** @name OrmlVestingVestingSchedule (85) */
export interface OrmlVestingVestingSchedule extends Struct {
readonly start: u32;
readonly period: u32;
@@ -474,7 +477,7 @@
readonly perPeriod: Compact<u128>;
}
- /** @name CumulusPalletXcmpQueueCall (86) */
+ /** @name CumulusPalletXcmpQueueCall (87) */
export interface CumulusPalletXcmpQueueCall extends Enum {
readonly isServiceOverweight: boolean;
readonly asServiceOverweight: {
@@ -510,7 +513,7 @@
readonly type: 'ServiceOverweight' | 'SuspendXcmExecution' | 'ResumeXcmExecution' | 'UpdateSuspendThreshold' | 'UpdateDropThreshold' | 'UpdateResumeThreshold' | 'UpdateThresholdWeight' | 'UpdateWeightRestrictDecay' | 'UpdateXcmpMaxIndividualWeight';
}
- /** @name PalletXcmCall (87) */
+ /** @name PalletXcmCall (88) */
export interface PalletXcmCall extends Enum {
readonly isSend: boolean;
readonly asSend: {
@@ -572,7 +575,7 @@
readonly type: 'Send' | 'TeleportAssets' | 'ReserveTransferAssets' | 'Execute' | 'ForceXcmVersion' | 'ForceDefaultXcmVersion' | 'ForceSubscribeVersionNotify' | 'ForceUnsubscribeVersionNotify' | 'LimitedReserveTransferAssets' | 'LimitedTeleportAssets';
}
- /** @name XcmVersionedMultiLocation (88) */
+ /** @name XcmVersionedMultiLocation (89) */
export interface XcmVersionedMultiLocation extends Enum {
readonly isV0: boolean;
readonly asV0: XcmV0MultiLocation;
@@ -581,7 +584,7 @@
readonly type: 'V0' | 'V1';
}
- /** @name XcmV0MultiLocation (89) */
+ /** @name XcmV0MultiLocation (90) */
export interface XcmV0MultiLocation extends Enum {
readonly isNull: boolean;
readonly isX1: boolean;
@@ -603,7 +606,7 @@
readonly type: 'Null' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';
}
- /** @name XcmV0Junction (90) */
+ /** @name XcmV0Junction (91) */
export interface XcmV0Junction extends Enum {
readonly isParent: boolean;
readonly isParachain: boolean;
@@ -638,7 +641,7 @@
readonly type: 'Parent' | 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';
}
- /** @name XcmV0JunctionNetworkId (91) */
+ /** @name XcmV0JunctionNetworkId (92) */
export interface XcmV0JunctionNetworkId extends Enum {
readonly isAny: boolean;
readonly isNamed: boolean;
@@ -648,7 +651,7 @@
readonly type: 'Any' | 'Named' | 'Polkadot' | 'Kusama';
}
- /** @name XcmV0JunctionBodyId (92) */
+ /** @name XcmV0JunctionBodyId (93) */
export interface XcmV0JunctionBodyId extends Enum {
readonly isUnit: boolean;
readonly isNamed: boolean;
@@ -662,7 +665,7 @@
readonly type: 'Unit' | 'Named' | 'Index' | 'Executive' | 'Technical' | 'Legislative' | 'Judicial';
}
- /** @name XcmV0JunctionBodyPart (93) */
+ /** @name XcmV0JunctionBodyPart (94) */
export interface XcmV0JunctionBodyPart extends Enum {
readonly isVoice: boolean;
readonly isMembers: boolean;
@@ -687,13 +690,13 @@
readonly type: 'Voice' | 'Members' | 'Fraction' | 'AtLeastProportion' | 'MoreThanProportion';
}
- /** @name XcmV1MultiLocation (94) */
+ /** @name XcmV1MultiLocation (95) */
export interface XcmV1MultiLocation extends Struct {
readonly parents: u8;
readonly interior: XcmV1MultilocationJunctions;
}
- /** @name XcmV1MultilocationJunctions (95) */
+ /** @name XcmV1MultilocationJunctions (96) */
export interface XcmV1MultilocationJunctions extends Enum {
readonly isHere: boolean;
readonly isX1: boolean;
@@ -715,7 +718,7 @@
readonly type: 'Here' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';
}
- /** @name XcmV1Junction (96) */
+ /** @name XcmV1Junction (97) */
export interface XcmV1Junction extends Enum {
readonly isParachain: boolean;
readonly asParachain: Compact<u32>;
@@ -749,7 +752,7 @@
readonly type: 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';
}
- /** @name XcmVersionedXcm (97) */
+ /** @name XcmVersionedXcm (98) */
export interface XcmVersionedXcm extends Enum {
readonly isV0: boolean;
readonly asV0: XcmV0Xcm;
@@ -760,7 +763,7 @@
readonly type: 'V0' | 'V1' | 'V2';
}
- /** @name XcmV0Xcm (98) */
+ /** @name XcmV0Xcm (99) */
export interface XcmV0Xcm extends Enum {
readonly isWithdrawAsset: boolean;
readonly asWithdrawAsset: {
@@ -823,7 +826,7 @@
readonly type: 'WithdrawAsset' | 'ReserveAssetDeposit' | 'TeleportAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom';
}
- /** @name XcmV0MultiAsset (100) */
+ /** @name XcmV0MultiAsset (101) */
export interface XcmV0MultiAsset extends Enum {
readonly isNone: boolean;
readonly isAll: boolean;
@@ -868,7 +871,7 @@
readonly type: 'None' | 'All' | 'AllFungible' | 'AllNonFungible' | 'AllAbstractFungible' | 'AllAbstractNonFungible' | 'AllConcreteFungible' | 'AllConcreteNonFungible' | 'AbstractFungible' | 'AbstractNonFungible' | 'ConcreteFungible' | 'ConcreteNonFungible';
}
- /** @name XcmV1MultiassetAssetInstance (101) */
+ /** @name XcmV1MultiassetAssetInstance (102) */
export interface XcmV1MultiassetAssetInstance extends Enum {
readonly isUndefined: boolean;
readonly isIndex: boolean;
@@ -886,7 +889,7 @@
readonly type: 'Undefined' | 'Index' | 'Array4' | 'Array8' | 'Array16' | 'Array32' | 'Blob';
}
- /** @name XcmV0Order (105) */
+ /** @name XcmV0Order (106) */
export interface XcmV0Order extends Enum {
readonly isNull: boolean;
readonly isDepositAsset: boolean;
@@ -934,14 +937,14 @@
readonly type: 'Null' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';
}
- /** @name XcmV0Response (107) */
+ /** @name XcmV0Response (108) */
export interface XcmV0Response extends Enum {
readonly isAssets: boolean;
readonly asAssets: Vec<XcmV0MultiAsset>;
readonly type: 'Assets';
}
- /** @name XcmV0OriginKind (108) */
+ /** @name XcmV0OriginKind (109) */
export interface XcmV0OriginKind extends Enum {
readonly isNative: boolean;
readonly isSovereignAccount: boolean;
@@ -950,12 +953,12 @@
readonly type: 'Native' | 'SovereignAccount' | 'Superuser' | 'Xcm';
}
- /** @name XcmDoubleEncoded (109) */
+ /** @name XcmDoubleEncoded (110) */
export interface XcmDoubleEncoded extends Struct {
readonly encoded: Bytes;
}
- /** @name XcmV1Xcm (110) */
+ /** @name XcmV1Xcm (111) */
export interface XcmV1Xcm extends Enum {
readonly isWithdrawAsset: boolean;
readonly asWithdrawAsset: {
@@ -1024,16 +1027,16 @@
readonly type: 'WithdrawAsset' | 'ReserveAssetDeposited' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom' | 'SubscribeVersion' | 'UnsubscribeVersion';
}
- /** @name XcmV1MultiassetMultiAssets (111) */
+ /** @name XcmV1MultiassetMultiAssets (112) */
export interface XcmV1MultiassetMultiAssets extends Vec<XcmV1MultiAsset> {}
- /** @name XcmV1MultiAsset (113) */
+ /** @name XcmV1MultiAsset (114) */
export interface XcmV1MultiAsset extends Struct {
readonly id: XcmV1MultiassetAssetId;
readonly fun: XcmV1MultiassetFungibility;
}
- /** @name XcmV1MultiassetAssetId (114) */
+ /** @name XcmV1MultiassetAssetId (115) */
export interface XcmV1MultiassetAssetId extends Enum {
readonly isConcrete: boolean;
readonly asConcrete: XcmV1MultiLocation;
@@ -1042,7 +1045,7 @@
readonly type: 'Concrete' | 'Abstract';
}
- /** @name XcmV1MultiassetFungibility (115) */
+ /** @name XcmV1MultiassetFungibility (116) */
export interface XcmV1MultiassetFungibility extends Enum {
readonly isFungible: boolean;
readonly asFungible: Compact<u128>;
@@ -1051,7 +1054,7 @@
readonly type: 'Fungible' | 'NonFungible';
}
- /** @name XcmV1Order (117) */
+ /** @name XcmV1Order (118) */
export interface XcmV1Order extends Enum {
readonly isNoop: boolean;
readonly isDepositAsset: boolean;
@@ -1101,7 +1104,7 @@
readonly type: 'Noop' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';
}
- /** @name XcmV1MultiassetMultiAssetFilter (118) */
+ /** @name XcmV1MultiassetMultiAssetFilter (119) */
export interface XcmV1MultiassetMultiAssetFilter extends Enum {
readonly isDefinite: boolean;
readonly asDefinite: XcmV1MultiassetMultiAssets;
@@ -1110,7 +1113,7 @@
readonly type: 'Definite' | 'Wild';
}
- /** @name XcmV1MultiassetWildMultiAsset (119) */
+ /** @name XcmV1MultiassetWildMultiAsset (120) */
export interface XcmV1MultiassetWildMultiAsset extends Enum {
readonly isAll: boolean;
readonly isAllOf: boolean;
@@ -1121,14 +1124,14 @@
readonly type: 'All' | 'AllOf';
}
- /** @name XcmV1MultiassetWildFungibility (120) */
+ /** @name XcmV1MultiassetWildFungibility (121) */
export interface XcmV1MultiassetWildFungibility extends Enum {
readonly isFungible: boolean;
readonly isNonFungible: boolean;
readonly type: 'Fungible' | 'NonFungible';
}
- /** @name XcmV1Response (122) */
+ /** @name XcmV1Response (123) */
export interface XcmV1Response extends Enum {
readonly isAssets: boolean;
readonly asAssets: XcmV1MultiassetMultiAssets;
@@ -1137,10 +1140,10 @@
readonly type: 'Assets' | 'Version';
}
- /** @name XcmV2Xcm (123) */
+ /** @name XcmV2Xcm (124) */
export interface XcmV2Xcm extends Vec<XcmV2Instruction> {}
- /** @name XcmV2Instruction (125) */
+ /** @name XcmV2Instruction (126) */
export interface XcmV2Instruction extends Enum {
readonly isWithdrawAsset: boolean;
readonly asWithdrawAsset: XcmV1MultiassetMultiAssets;
@@ -1260,7 +1263,7 @@
readonly type: 'WithdrawAsset' | 'ReserveAssetDeposited' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'ClearOrigin' | 'DescendOrigin' | 'ReportError' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution' | 'RefundSurplus' | 'SetErrorHandler' | 'SetAppendix' | 'ClearError' | 'ClaimAsset' | 'Trap' | 'SubscribeVersion' | 'UnsubscribeVersion';
}
- /** @name XcmV2Response (126) */
+ /** @name XcmV2Response (127) */
export interface XcmV2Response extends Enum {
readonly isNull: boolean;
readonly isAssets: boolean;
@@ -1272,7 +1275,7 @@
readonly type: 'Null' | 'Assets' | 'ExecutionResult' | 'Version';
}
- /** @name XcmV2TraitsError (129) */
+ /** @name XcmV2TraitsError (130) */
export interface XcmV2TraitsError extends Enum {
readonly isOverflow: boolean;
readonly isUnimplemented: boolean;
@@ -1305,7 +1308,7 @@
readonly type: 'Overflow' | 'Unimplemented' | 'UntrustedReserveLocation' | 'UntrustedTeleportLocation' | 'MultiLocationFull' | 'MultiLocationNotInvertible' | 'BadOrigin' | 'InvalidLocation' | 'AssetNotFound' | 'FailedToTransactAsset' | 'NotWithdrawable' | 'LocationCannotHold' | 'ExceedsMaxMessageSize' | 'DestinationUnsupported' | 'Transport' | 'Unroutable' | 'UnknownClaim' | 'FailedToDecode' | 'MaxWeightInvalid' | 'NotHoldingFees' | 'TooExpensive' | 'Trap' | 'UnhandledXcmVersion' | 'WeightLimitReached' | 'Barrier' | 'WeightNotComputable';
}
- /** @name XcmV2WeightLimit (130) */
+ /** @name XcmV2WeightLimit (131) */
export interface XcmV2WeightLimit extends Enum {
readonly isUnlimited: boolean;
readonly isLimited: boolean;
@@ -1313,7 +1316,7 @@
readonly type: 'Unlimited' | 'Limited';
}
- /** @name XcmVersionedMultiAssets (131) */
+ /** @name XcmVersionedMultiAssets (132) */
export interface XcmVersionedMultiAssets extends Enum {
readonly isV0: boolean;
readonly asV0: Vec<XcmV0MultiAsset>;
@@ -1322,10 +1325,10 @@
readonly type: 'V0' | 'V1';
}
- /** @name CumulusPalletXcmCall (146) */
+ /** @name CumulusPalletXcmCall (147) */
export type CumulusPalletXcmCall = Null;
- /** @name CumulusPalletDmpQueueCall (147) */
+ /** @name CumulusPalletDmpQueueCall (148) */
export interface CumulusPalletDmpQueueCall extends Enum {
readonly isServiceOverweight: boolean;
readonly asServiceOverweight: {
@@ -1335,7 +1338,7 @@
readonly type: 'ServiceOverweight';
}
- /** @name PalletInflationCall (148) */
+ /** @name PalletInflationCall (149) */
export interface PalletInflationCall extends Enum {
readonly isStartInflation: boolean;
readonly asStartInflation: {
@@ -1344,7 +1347,7 @@
readonly type: 'StartInflation';
}
- /** @name PalletUniqueCall (149) */
+ /** @name PalletUniqueCall (150) */
export interface PalletUniqueCall extends Enum {
readonly isCreateCollection: boolean;
readonly asCreateCollection: {
@@ -1364,12 +1367,12 @@
readonly isAddToAllowList: boolean;
readonly asAddToAllowList: {
readonly collectionId: u32;
- readonly address: PalletCommonAccountBasicCrossAccountIdRepr;
+ readonly address: PalletEvmAccountBasicCrossAccountIdRepr;
} & Struct;
readonly isRemoveFromAllowList: boolean;
readonly asRemoveFromAllowList: {
readonly collectionId: u32;
- readonly address: PalletCommonAccountBasicCrossAccountIdRepr;
+ readonly address: PalletEvmAccountBasicCrossAccountIdRepr;
} & Struct;
readonly isSetPublicAccessMode: boolean;
readonly asSetPublicAccessMode: {
@@ -1389,12 +1392,12 @@
readonly isAddCollectionAdmin: boolean;
readonly asAddCollectionAdmin: {
readonly collectionId: u32;
- readonly newAdminId: PalletCommonAccountBasicCrossAccountIdRepr;
+ readonly newAdminId: PalletEvmAccountBasicCrossAccountIdRepr;
} & Struct;
readonly isRemoveCollectionAdmin: boolean;
readonly asRemoveCollectionAdmin: {
readonly collectionId: u32;
- readonly accountId: PalletCommonAccountBasicCrossAccountIdRepr;
+ readonly accountId: PalletEvmAccountBasicCrossAccountIdRepr;
} & Struct;
readonly isSetCollectionSponsor: boolean;
readonly asSetCollectionSponsor: {
@@ -1412,13 +1415,13 @@
readonly isCreateItem: boolean;
readonly asCreateItem: {
readonly collectionId: u32;
- readonly owner: PalletCommonAccountBasicCrossAccountIdRepr;
+ readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
readonly data: UpDataStructsCreateItemData;
} & Struct;
readonly isCreateMultipleItems: boolean;
readonly asCreateMultipleItems: {
readonly collectionId: u32;
- readonly owner: PalletCommonAccountBasicCrossAccountIdRepr;
+ readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
readonly itemsData: Vec<UpDataStructsCreateItemData>;
} & Struct;
readonly isCreateMultipleItemsEx: boolean;
@@ -1440,28 +1443,28 @@
readonly isBurnFrom: boolean;
readonly asBurnFrom: {
readonly collectionId: u32;
- readonly from: PalletCommonAccountBasicCrossAccountIdRepr;
+ readonly from: PalletEvmAccountBasicCrossAccountIdRepr;
readonly itemId: u32;
readonly value: u128;
} & Struct;
readonly isTransfer: boolean;
readonly asTransfer: {
- readonly recipient: PalletCommonAccountBasicCrossAccountIdRepr;
+ readonly recipient: PalletEvmAccountBasicCrossAccountIdRepr;
readonly collectionId: u32;
readonly itemId: u32;
readonly value: u128;
} & Struct;
readonly isApprove: boolean;
readonly asApprove: {
- readonly spender: PalletCommonAccountBasicCrossAccountIdRepr;
+ readonly spender: PalletEvmAccountBasicCrossAccountIdRepr;
readonly collectionId: u32;
readonly itemId: u32;
readonly amount: u128;
} & Struct;
readonly isTransferFrom: boolean;
readonly asTransferFrom: {
- readonly from: PalletCommonAccountBasicCrossAccountIdRepr;
- readonly recipient: PalletCommonAccountBasicCrossAccountIdRepr;
+ readonly from: PalletEvmAccountBasicCrossAccountIdRepr;
+ readonly recipient: PalletEvmAccountBasicCrossAccountIdRepr;
readonly collectionId: u32;
readonly itemId: u32;
readonly value: u128;
@@ -1505,7 +1508,7 @@
readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'SetPublicAccessMode' | 'SetMintPermission' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetVariableMetaData' | 'SetMetaUpdatePermissionFlag' | 'SetSchemaVersion' | 'SetOffchainSchema' | 'SetConstOnChainSchema' | 'SetVariableOnChainSchema' | 'SetCollectionLimits';
}
- /** @name UpDataStructsCollectionMode (155) */
+ /** @name UpDataStructsCollectionMode (156) */
export interface UpDataStructsCollectionMode extends Enum {
readonly isNft: boolean;
readonly isFungible: boolean;
@@ -1514,7 +1517,7 @@
readonly type: 'Nft' | 'Fungible' | 'ReFungible';
}
- /** @name UpDataStructsCreateCollectionData (156) */
+ /** @name UpDataStructsCreateCollectionData (157) */
export interface UpDataStructsCreateCollectionData extends Struct {
readonly mode: UpDataStructsCollectionMode;
readonly access: Option<UpDataStructsAccessMode>;
@@ -1530,21 +1533,21 @@
readonly metaUpdatePermission: Option<UpDataStructsMetaUpdatePermission>;
}
- /** @name UpDataStructsAccessMode (158) */
+ /** @name UpDataStructsAccessMode (159) */
export interface UpDataStructsAccessMode extends Enum {
readonly isNormal: boolean;
readonly isAllowList: boolean;
readonly type: 'Normal' | 'AllowList';
}
- /** @name UpDataStructsSchemaVersion (161) */
+ /** @name UpDataStructsSchemaVersion (162) */
export interface UpDataStructsSchemaVersion extends Enum {
readonly isImageURL: boolean;
readonly isUnique: boolean;
readonly type: 'ImageURL' | 'Unique';
}
- /** @name UpDataStructsCollectionLimits (164) */
+ /** @name UpDataStructsCollectionLimits (165) */
export interface UpDataStructsCollectionLimits extends Struct {
readonly accountTokenOwnershipLimit: Option<u32>;
readonly sponsoredDataSize: Option<u32>;
@@ -1557,7 +1560,7 @@
readonly transfersEnabled: Option<bool>;
}
- /** @name UpDataStructsSponsoringRateLimit (166) */
+ /** @name UpDataStructsSponsoringRateLimit (167) */
export interface UpDataStructsSponsoringRateLimit extends Enum {
readonly isSponsoringDisabled: boolean;
readonly isBlocks: boolean;
@@ -1565,7 +1568,7 @@
readonly type: 'SponsoringDisabled' | 'Blocks';
}
- /** @name UpDataStructsMetaUpdatePermission (170) */
+ /** @name UpDataStructsMetaUpdatePermission (171) */
export interface UpDataStructsMetaUpdatePermission extends Enum {
readonly isItemOwner: boolean;
readonly isAdmin: boolean;
@@ -1573,8 +1576,8 @@
readonly type: 'ItemOwner' | 'Admin' | 'None';
}
- /** @name PalletCommonAccountBasicCrossAccountIdRepr (172) */
- export interface PalletCommonAccountBasicCrossAccountIdRepr extends Enum {
+ /** @name PalletEvmAccountBasicCrossAccountIdRepr (173) */
+ export interface PalletEvmAccountBasicCrossAccountIdRepr extends Enum {
readonly isSubstrate: boolean;
readonly asSubstrate: AccountId32;
readonly isEthereum: boolean;
@@ -1582,7 +1585,7 @@
readonly type: 'Substrate' | 'Ethereum';
}
- /** @name UpDataStructsCreateItemData (174) */
+ /** @name UpDataStructsCreateItemData (175) */
export interface UpDataStructsCreateItemData extends Enum {
readonly isNft: boolean;
readonly asNft: UpDataStructsCreateNftData;
@@ -1593,30 +1596,30 @@
readonly type: 'Nft' | 'Fungible' | 'ReFungible';
}
- /** @name UpDataStructsCreateNftData (175) */
+ /** @name UpDataStructsCreateNftData (176) */
export interface UpDataStructsCreateNftData extends Struct {
readonly constData: Bytes;
readonly variableData: Bytes;
}
- /** @name UpDataStructsCreateFungibleData (177) */
+ /** @name UpDataStructsCreateFungibleData (178) */
export interface UpDataStructsCreateFungibleData extends Struct {
readonly value: u128;
}
- /** @name UpDataStructsCreateReFungibleData (178) */
+ /** @name UpDataStructsCreateReFungibleData (179) */
export interface UpDataStructsCreateReFungibleData extends Struct {
readonly constData: Bytes;
readonly variableData: Bytes;
readonly pieces: u128;
}
- /** @name UpDataStructsCreateItemExData (180) */
+ /** @name UpDataStructsCreateItemExData (181) */
export interface UpDataStructsCreateItemExData extends Enum {
readonly isNft: boolean;
readonly asNft: Vec<UpDataStructsCreateNftExData>;
readonly isFungible: boolean;
- readonly asFungible: BTreeMap<PalletCommonAccountBasicCrossAccountIdRepr, u128>;
+ readonly asFungible: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;
readonly isRefungibleMultipleItems: boolean;
readonly asRefungibleMultipleItems: Vec<UpDataStructsCreateRefungibleExData>;
readonly isRefungibleMultipleOwners: boolean;
@@ -1624,24 +1627,24 @@
readonly type: 'Nft' | 'Fungible' | 'RefungibleMultipleItems' | 'RefungibleMultipleOwners';
}
- /** @name UpDataStructsCreateNftExData (182) */
+ /** @name UpDataStructsCreateNftExData (183) */
export interface UpDataStructsCreateNftExData extends Struct {
readonly constData: Bytes;
readonly variableData: Bytes;
- readonly owner: PalletCommonAccountBasicCrossAccountIdRepr;
+ readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
}
- /** @name UpDataStructsCreateRefungibleExData (189) */
+ /** @name UpDataStructsCreateRefungibleExData (190) */
export interface UpDataStructsCreateRefungibleExData extends Struct {
readonly constData: Bytes;
readonly variableData: Bytes;
- readonly users: BTreeMap<PalletCommonAccountBasicCrossAccountIdRepr, u128>;
+ readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;
}
- /** @name PalletTemplateTransactionPaymentCall (192) */
+ /** @name PalletTemplateTransactionPaymentCall (193) */
export type PalletTemplateTransactionPaymentCall = Null;
- /** @name PalletEvmCall (193) */
+ /** @name PalletEvmCall (194) */
export interface PalletEvmCall extends Enum {
readonly isWithdraw: boolean;
readonly asWithdraw: {
@@ -1686,7 +1689,7 @@
readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2';
}
- /** @name PalletEthereumCall (199) */
+ /** @name PalletEthereumCall (200) */
export interface PalletEthereumCall extends Enum {
readonly isTransact: boolean;
readonly asTransact: {
@@ -1695,7 +1698,7 @@
readonly type: 'Transact';
}
- /** @name EthereumTransactionTransactionV2 (200) */
+ /** @name EthereumTransactionTransactionV2 (201) */
export interface EthereumTransactionTransactionV2 extends Enum {
readonly isLegacy: boolean;
readonly asLegacy: EthereumTransactionLegacyTransaction;
@@ -1706,7 +1709,7 @@
readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';
}
- /** @name EthereumTransactionLegacyTransaction (201) */
+ /** @name EthereumTransactionLegacyTransaction (202) */
export interface EthereumTransactionLegacyTransaction extends Struct {
readonly nonce: U256;
readonly gasPrice: U256;
@@ -1717,7 +1720,7 @@
readonly signature: EthereumTransactionTransactionSignature;
}
- /** @name EthereumTransactionTransactionAction (202) */
+ /** @name EthereumTransactionTransactionAction (203) */
export interface EthereumTransactionTransactionAction extends Enum {
readonly isCall: boolean;
readonly asCall: H160;
@@ -1725,14 +1728,14 @@
readonly type: 'Call' | 'Create';
}
- /** @name EthereumTransactionTransactionSignature (203) */
+ /** @name EthereumTransactionTransactionSignature (204) */
export interface EthereumTransactionTransactionSignature extends Struct {
readonly v: u64;
readonly r: H256;
readonly s: H256;
}
- /** @name EthereumTransactionEip2930Transaction (205) */
+ /** @name EthereumTransactionEip2930Transaction (206) */
export interface EthereumTransactionEip2930Transaction extends Struct {
readonly chainId: u64;
readonly nonce: U256;
@@ -1747,13 +1750,13 @@
readonly s: H256;
}
- /** @name EthereumTransactionAccessListItem (207) */
+ /** @name EthereumTransactionAccessListItem (208) */
export interface EthereumTransactionAccessListItem extends Struct {
readonly address: H160;
- readonly slots: Vec<H256>;
+ readonly storageKeys: Vec<H256>;
}
- /** @name EthereumTransactionEip1559Transaction (208) */
+ /** @name EthereumTransactionEip1559Transaction (209) */
export interface EthereumTransactionEip1559Transaction extends Struct {
readonly chainId: u64;
readonly nonce: U256;
@@ -1769,7 +1772,7 @@
readonly s: H256;
}
- /** @name PalletEvmMigrationCall (209) */
+ /** @name PalletEvmMigrationCall (210) */
export interface PalletEvmMigrationCall extends Enum {
readonly isBegin: boolean;
readonly asBegin: {
@@ -1788,7 +1791,7 @@
readonly type: 'Begin' | 'SetData' | 'Finish';
}
- /** @name PalletSudoEvent (212) */
+ /** @name PalletSudoEvent (213) */
export interface PalletSudoEvent extends Enum {
readonly isSudid: boolean;
readonly asSudid: {
@@ -1805,7 +1808,7 @@
readonly type: 'Sudid' | 'KeyChanged' | 'SudoAsDone';
}
- /** @name SpRuntimeDispatchError (214) */
+ /** @name SpRuntimeDispatchError (215) */
export interface SpRuntimeDispatchError extends Enum {
readonly isOther: boolean;
readonly isCannotLookup: boolean;
@@ -1822,13 +1825,13 @@
readonly type: 'Other' | 'CannotLookup' | 'BadOrigin' | 'Module' | 'ConsumerRemaining' | 'NoProviders' | 'TooManyConsumers' | 'Token' | 'Arithmetic';
}
- /** @name SpRuntimeModuleError (215) */
+ /** @name SpRuntimeModuleError (216) */
export interface SpRuntimeModuleError extends Struct {
readonly index: u8;
readonly error: u8;
}
- /** @name SpRuntimeTokenError (216) */
+ /** @name SpRuntimeTokenError (217) */
export interface SpRuntimeTokenError extends Enum {
readonly isNoFunds: boolean;
readonly isWouldDie: boolean;
@@ -1840,7 +1843,7 @@
readonly type: 'NoFunds' | 'WouldDie' | 'BelowMinimum' | 'CannotCreate' | 'UnknownAsset' | 'Frozen' | 'Unsupported';
}
- /** @name SpRuntimeArithmeticError (217) */
+ /** @name SpRuntimeArithmeticError (218) */
export interface SpRuntimeArithmeticError extends Enum {
readonly isUnderflow: boolean;
readonly isOverflow: boolean;
@@ -1848,13 +1851,13 @@
readonly type: 'Underflow' | 'Overflow' | 'DivisionByZero';
}
- /** @name PalletSudoError (218) */
+ /** @name PalletSudoError (219) */
export interface PalletSudoError extends Enum {
readonly isRequireSudo: boolean;
readonly type: 'RequireSudo';
}
- /** @name FrameSystemAccountInfo (219) */
+ /** @name FrameSystemAccountInfo (220) */
export interface FrameSystemAccountInfo extends Struct {
readonly nonce: u32;
readonly consumers: u32;
@@ -1863,19 +1866,19 @@
readonly data: PalletBalancesAccountData;
}
- /** @name FrameSupportWeightsPerDispatchClassU64 (220) */
+ /** @name FrameSupportWeightsPerDispatchClassU64 (221) */
export interface FrameSupportWeightsPerDispatchClassU64 extends Struct {
readonly normal: u64;
readonly operational: u64;
readonly mandatory: u64;
}
- /** @name SpRuntimeDigest (221) */
+ /** @name SpRuntimeDigest (222) */
export interface SpRuntimeDigest extends Struct {
readonly logs: Vec<SpRuntimeDigestDigestItem>;
}
- /** @name SpRuntimeDigestDigestItem (223) */
+ /** @name SpRuntimeDigestDigestItem (224) */
export interface SpRuntimeDigestDigestItem extends Enum {
readonly isOther: boolean;
readonly asOther: Bytes;
@@ -1889,14 +1892,14 @@
readonly type: 'Other' | 'Consensus' | 'Seal' | 'PreRuntime' | 'RuntimeEnvironmentUpdated';
}
- /** @name FrameSystemEventRecord (225) */
+ /** @name FrameSystemEventRecord (226) */
export interface FrameSystemEventRecord extends Struct {
readonly phase: FrameSystemPhase;
readonly event: Event;
readonly topics: Vec<H256>;
}
- /** @name FrameSystemEvent (227) */
+ /** @name FrameSystemEvent (228) */
export interface FrameSystemEvent extends Enum {
readonly isExtrinsicSuccess: boolean;
readonly asExtrinsicSuccess: {
@@ -1924,14 +1927,14 @@
readonly type: 'ExtrinsicSuccess' | 'ExtrinsicFailed' | 'CodeUpdated' | 'NewAccount' | 'KilledAccount' | 'Remarked';
}
- /** @name FrameSupportWeightsDispatchInfo (228) */
+ /** @name FrameSupportWeightsDispatchInfo (229) */
export interface FrameSupportWeightsDispatchInfo extends Struct {
readonly weight: u64;
readonly class: FrameSupportWeightsDispatchClass;
readonly paysFee: FrameSupportWeightsPays;
}
- /** @name FrameSupportWeightsDispatchClass (229) */
+ /** @name FrameSupportWeightsDispatchClass (230) */
export interface FrameSupportWeightsDispatchClass extends Enum {
readonly isNormal: boolean;
readonly isOperational: boolean;
@@ -1939,14 +1942,14 @@
readonly type: 'Normal' | 'Operational' | 'Mandatory';
}
- /** @name FrameSupportWeightsPays (230) */
+ /** @name FrameSupportWeightsPays (231) */
export interface FrameSupportWeightsPays extends Enum {
readonly isYes: boolean;
readonly isNo: boolean;
readonly type: 'Yes' | 'No';
}
- /** @name OrmlVestingModuleEvent (231) */
+ /** @name OrmlVestingModuleEvent (232) */
export interface OrmlVestingModuleEvent extends Enum {
readonly isVestingScheduleAdded: boolean;
readonly asVestingScheduleAdded: {
@@ -1966,7 +1969,7 @@
readonly type: 'VestingScheduleAdded' | 'Claimed' | 'VestingSchedulesUpdated';
}
- /** @name CumulusPalletXcmpQueueEvent (232) */
+ /** @name CumulusPalletXcmpQueueEvent (233) */
export interface CumulusPalletXcmpQueueEvent extends Enum {
readonly isSuccess: boolean;
readonly asSuccess: Option<H256>;
@@ -1987,7 +1990,7 @@
readonly type: 'Success' | 'Fail' | 'BadVersion' | 'BadFormat' | 'UpwardMessageSent' | 'XcmpMessageSent' | 'OverweightEnqueued' | 'OverweightServiced';
}
- /** @name PalletXcmEvent (233) */
+ /** @name PalletXcmEvent (234) */
export interface PalletXcmEvent extends Enum {
readonly isAttempted: boolean;
readonly asAttempted: XcmV2TraitsOutcome;
@@ -2024,7 +2027,7 @@
readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail';
}
- /** @name XcmV2TraitsOutcome (234) */
+ /** @name XcmV2TraitsOutcome (235) */
export interface XcmV2TraitsOutcome extends Enum {
readonly isComplete: boolean;
readonly asComplete: u64;
@@ -2035,7 +2038,7 @@
readonly type: 'Complete' | 'Incomplete' | 'Error';
}
- /** @name CumulusPalletXcmEvent (236) */
+ /** @name CumulusPalletXcmEvent (237) */
export interface CumulusPalletXcmEvent extends Enum {
readonly isInvalidFormat: boolean;
readonly asInvalidFormat: U8aFixed;
@@ -2046,7 +2049,7 @@
readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward';
}
- /** @name CumulusPalletDmpQueueEvent (237) */
+ /** @name CumulusPalletDmpQueueEvent (238) */
export interface CumulusPalletDmpQueueEvent extends Enum {
readonly isInvalidFormat: boolean;
readonly asInvalidFormat: U8aFixed;
@@ -2063,12 +2066,12 @@
readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward' | 'WeightExhausted' | 'OverweightEnqueued' | 'OverweightServiced';
}
- /** @name PalletUniqueRawEvent (238) */
+ /** @name PalletUniqueRawEvent (239) */
export interface PalletUniqueRawEvent extends Enum {
readonly isCollectionSponsorRemoved: boolean;
readonly asCollectionSponsorRemoved: u32;
readonly isCollectionAdminAdded: boolean;
- readonly asCollectionAdminAdded: ITuple<[u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
+ readonly asCollectionAdminAdded: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
readonly isCollectionOwnedChanged: boolean;
readonly asCollectionOwnedChanged: ITuple<[u32, AccountId32]>;
readonly isCollectionSponsorSet: boolean;
@@ -2078,11 +2081,11 @@
readonly isSponsorshipConfirmed: boolean;
readonly asSponsorshipConfirmed: ITuple<[u32, AccountId32]>;
readonly isCollectionAdminRemoved: boolean;
- readonly asCollectionAdminRemoved: ITuple<[u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
+ readonly asCollectionAdminRemoved: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
readonly isAllowListAddressRemoved: boolean;
- readonly asAllowListAddressRemoved: ITuple<[u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
+ readonly asAllowListAddressRemoved: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
readonly isAllowListAddressAdded: boolean;
- readonly asAllowListAddressAdded: ITuple<[u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
+ readonly asAllowListAddressAdded: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
readonly isCollectionLimitSet: boolean;
readonly asCollectionLimitSet: u32;
readonly isMintPermissionSet: boolean;
@@ -2098,24 +2101,24 @@
readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'ConstOnChainSchemaSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'MintPermissionSet' | 'OffchainSchemaSet' | 'PublicAccessModeSet' | 'SchemaVersionSet' | 'VariableOnChainSchemaSet';
}
- /** @name PalletCommonEvent (239) */
+ /** @name PalletCommonEvent (240) */
export interface PalletCommonEvent extends Enum {
readonly isCollectionCreated: boolean;
readonly asCollectionCreated: ITuple<[u32, u8, AccountId32]>;
readonly isCollectionDestroyed: boolean;
readonly asCollectionDestroyed: u32;
readonly isItemCreated: boolean;
- readonly asItemCreated: ITuple<[u32, u32, PalletCommonAccountBasicCrossAccountIdRepr, u128]>;
+ readonly asItemCreated: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;
readonly isItemDestroyed: boolean;
- readonly asItemDestroyed: ITuple<[u32, u32, PalletCommonAccountBasicCrossAccountIdRepr, u128]>;
+ readonly asItemDestroyed: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;
readonly isTransfer: boolean;
- readonly asTransfer: ITuple<[u32, u32, PalletCommonAccountBasicCrossAccountIdRepr, PalletCommonAccountBasicCrossAccountIdRepr, u128]>;
+ readonly asTransfer: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;
readonly isApproved: boolean;
- readonly asApproved: ITuple<[u32, u32, PalletCommonAccountBasicCrossAccountIdRepr, PalletCommonAccountBasicCrossAccountIdRepr, u128]>;
+ readonly asApproved: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;
readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved';
}
- /** @name PalletEvmEvent (240) */
+ /** @name PalletEvmEvent (241) */
export interface PalletEvmEvent extends Enum {
readonly isLog: boolean;
readonly asLog: EthereumLog;
@@ -2134,21 +2137,21 @@
readonly type: 'Log' | 'Created' | 'CreatedFailed' | 'Executed' | 'ExecutedFailed' | 'BalanceDeposit' | 'BalanceWithdraw';
}
- /** @name EthereumLog (241) */
+ /** @name EthereumLog (242) */
export interface EthereumLog extends Struct {
readonly address: H160;
readonly topics: Vec<H256>;
readonly data: Bytes;
}
- /** @name PalletEthereumEvent (242) */
+ /** @name PalletEthereumEvent (243) */
export interface PalletEthereumEvent extends Enum {
readonly isExecuted: boolean;
readonly asExecuted: ITuple<[H160, H160, H256, EvmCoreErrorExitReason]>;
readonly type: 'Executed';
}
- /** @name EvmCoreErrorExitReason (243) */
+ /** @name EvmCoreErrorExitReason (244) */
export interface EvmCoreErrorExitReason extends Enum {
readonly isSucceed: boolean;
readonly asSucceed: EvmCoreErrorExitSucceed;
@@ -2161,7 +2164,7 @@
readonly type: 'Succeed' | 'Error' | 'Revert' | 'Fatal';
}
- /** @name EvmCoreErrorExitSucceed (244) */
+ /** @name EvmCoreErrorExitSucceed (245) */
export interface EvmCoreErrorExitSucceed extends Enum {
readonly isStopped: boolean;
readonly isReturned: boolean;
@@ -2169,7 +2172,7 @@
readonly type: 'Stopped' | 'Returned' | 'Suicided';
}
- /** @name EvmCoreErrorExitError (245) */
+ /** @name EvmCoreErrorExitError (246) */
export interface EvmCoreErrorExitError extends Enum {
readonly isStackUnderflow: boolean;
readonly isStackOverflow: boolean;
@@ -2190,13 +2193,13 @@
readonly type: 'StackUnderflow' | 'StackOverflow' | 'InvalidJump' | 'InvalidRange' | 'DesignatedInvalid' | 'CallTooDeep' | 'CreateCollision' | 'CreateContractLimit' | 'InvalidCode' | 'OutOfOffset' | 'OutOfGas' | 'OutOfFund' | 'PcUnderflow' | 'CreateEmpty' | 'Other';
}
- /** @name EvmCoreErrorExitRevert (248) */
+ /** @name EvmCoreErrorExitRevert (249) */
export interface EvmCoreErrorExitRevert extends Enum {
readonly isReverted: boolean;
readonly type: 'Reverted';
}
- /** @name EvmCoreErrorExitFatal (249) */
+ /** @name EvmCoreErrorExitFatal (250) */
export interface EvmCoreErrorExitFatal extends Enum {
readonly isNotSupported: boolean;
readonly isUnhandledInterrupt: boolean;
@@ -2207,7 +2210,7 @@
readonly type: 'NotSupported' | 'UnhandledInterrupt' | 'CallErrorAsFatal' | 'Other';
}
- /** @name FrameSystemPhase (250) */
+ /** @name FrameSystemPhase (251) */
export interface FrameSystemPhase extends Enum {
readonly isApplyExtrinsic: boolean;
readonly asApplyExtrinsic: u32;
@@ -2216,27 +2219,27 @@
readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';
}
- /** @name FrameSystemLastRuntimeUpgradeInfo (252) */
+ /** @name FrameSystemLastRuntimeUpgradeInfo (253) */
export interface FrameSystemLastRuntimeUpgradeInfo extends Struct {
readonly specVersion: Compact<u32>;
readonly specName: Text;
}
- /** @name FrameSystemLimitsBlockWeights (253) */
+ /** @name FrameSystemLimitsBlockWeights (254) */
export interface FrameSystemLimitsBlockWeights extends Struct {
readonly baseBlock: u64;
readonly maxBlock: u64;
readonly perClass: FrameSupportWeightsPerDispatchClassWeightsPerClass;
}
- /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (254) */
+ /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (255) */
export interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct {
readonly normal: FrameSystemLimitsWeightsPerClass;
readonly operational: FrameSystemLimitsWeightsPerClass;
readonly mandatory: FrameSystemLimitsWeightsPerClass;
}
- /** @name FrameSystemLimitsWeightsPerClass (255) */
+ /** @name FrameSystemLimitsWeightsPerClass (256) */
export interface FrameSystemLimitsWeightsPerClass extends Struct {
readonly baseExtrinsic: u64;
readonly maxExtrinsic: Option<u64>;
@@ -2244,25 +2247,25 @@
readonly reserved: Option<u64>;
}
- /** @name FrameSystemLimitsBlockLength (257) */
+ /** @name FrameSystemLimitsBlockLength (258) */
export interface FrameSystemLimitsBlockLength extends Struct {
readonly max: FrameSupportWeightsPerDispatchClassU32;
}
- /** @name FrameSupportWeightsPerDispatchClassU32 (258) */
+ /** @name FrameSupportWeightsPerDispatchClassU32 (259) */
export interface FrameSupportWeightsPerDispatchClassU32 extends Struct {
readonly normal: u32;
readonly operational: u32;
readonly mandatory: u32;
}
- /** @name FrameSupportWeightsRuntimeDbWeight (259) */
+ /** @name FrameSupportWeightsRuntimeDbWeight (260) */
export interface FrameSupportWeightsRuntimeDbWeight extends Struct {
readonly read: u64;
readonly write: u64;
}
- /** @name SpVersionRuntimeVersion (260) */
+ /** @name SpVersionRuntimeVersion (261) */
export interface SpVersionRuntimeVersion extends Struct {
readonly specName: Text;
readonly implName: Text;
@@ -2274,7 +2277,7 @@
readonly stateVersion: u8;
}
- /** @name FrameSystemError (264) */
+ /** @name FrameSystemError (265) */
export interface FrameSystemError extends Enum {
readonly isInvalidSpecName: boolean;
readonly isSpecVersionNeedsToIncrease: boolean;
@@ -2285,7 +2288,7 @@
readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered';
}
- /** @name OrmlVestingModuleError (266) */
+ /** @name OrmlVestingModuleError (267) */
export interface OrmlVestingModuleError extends Enum {
readonly isZeroVestingPeriod: boolean;
readonly isZeroVestingPeriodCount: boolean;
@@ -2296,21 +2299,21 @@
readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded';
}
- /** @name CumulusPalletXcmpQueueInboundChannelDetails (268) */
+ /** @name CumulusPalletXcmpQueueInboundChannelDetails (269) */
export interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {
readonly sender: u32;
readonly state: CumulusPalletXcmpQueueInboundState;
readonly messageMetadata: Vec<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;
}
- /** @name CumulusPalletXcmpQueueInboundState (269) */
+ /** @name CumulusPalletXcmpQueueInboundState (270) */
export interface CumulusPalletXcmpQueueInboundState extends Enum {
readonly isOk: boolean;
readonly isSuspended: boolean;
readonly type: 'Ok' | 'Suspended';
}
- /** @name PolkadotParachainPrimitivesXcmpMessageFormat (272) */
+ /** @name PolkadotParachainPrimitivesXcmpMessageFormat (273) */
export interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {
readonly isConcatenatedVersionedXcm: boolean;
readonly isConcatenatedEncodedBlob: boolean;
@@ -2318,7 +2321,7 @@
readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';
}
- /** @name CumulusPalletXcmpQueueOutboundChannelDetails (275) */
+ /** @name CumulusPalletXcmpQueueOutboundChannelDetails (276) */
export interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {
readonly recipient: u32;
readonly state: CumulusPalletXcmpQueueOutboundState;
@@ -2327,14 +2330,14 @@
readonly lastIndex: u16;
}
- /** @name CumulusPalletXcmpQueueOutboundState (276) */
+ /** @name CumulusPalletXcmpQueueOutboundState (277) */
export interface CumulusPalletXcmpQueueOutboundState extends Enum {
readonly isOk: boolean;
readonly isSuspended: boolean;
readonly type: 'Ok' | 'Suspended';
}
- /** @name CumulusPalletXcmpQueueQueueConfigData (278) */
+ /** @name CumulusPalletXcmpQueueQueueConfigData (279) */
export interface CumulusPalletXcmpQueueQueueConfigData extends Struct {
readonly suspendThreshold: u32;
readonly dropThreshold: u32;
@@ -2344,7 +2347,7 @@
readonly xcmpMaxIndividualWeight: u64;
}
- /** @name CumulusPalletXcmpQueueError (280) */
+ /** @name CumulusPalletXcmpQueueError (281) */
export interface CumulusPalletXcmpQueueError extends Enum {
readonly isFailedToSend: boolean;
readonly isBadXcmOrigin: boolean;
@@ -2354,7 +2357,7 @@
readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit';
}
- /** @name PalletXcmError (281) */
+ /** @name PalletXcmError (282) */
export interface PalletXcmError extends Enum {
readonly isUnreachable: boolean;
readonly isSendFailure: boolean;
@@ -2372,29 +2375,29 @@
readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed';
}
- /** @name CumulusPalletXcmError (282) */
+ /** @name CumulusPalletXcmError (283) */
export type CumulusPalletXcmError = Null;
- /** @name CumulusPalletDmpQueueConfigData (283) */
+ /** @name CumulusPalletDmpQueueConfigData (284) */
export interface CumulusPalletDmpQueueConfigData extends Struct {
readonly maxIndividual: u64;
}
- /** @name CumulusPalletDmpQueuePageIndexData (284) */
+ /** @name CumulusPalletDmpQueuePageIndexData (285) */
export interface CumulusPalletDmpQueuePageIndexData extends Struct {
readonly beginUsed: u32;
readonly endUsed: u32;
readonly overweightCount: u64;
}
- /** @name CumulusPalletDmpQueueError (287) */
+ /** @name CumulusPalletDmpQueueError (288) */
export interface CumulusPalletDmpQueueError extends Enum {
readonly isUnknown: boolean;
readonly isOverLimit: boolean;
readonly type: 'Unknown' | 'OverLimit';
}
- /** @name PalletUniqueError (291) */
+ /** @name PalletUniqueError (292) */
export interface PalletUniqueError extends Enum {
readonly isCollectionDecimalPointLimitExceeded: boolean;
readonly isConfirmUnsetSponsorFail: boolean;
@@ -2402,7 +2405,7 @@
readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument';
}
- /** @name UpDataStructsCollection (292) */
+ /** @name UpDataStructsCollection (293) */
export interface UpDataStructsCollection extends Struct {
readonly owner: AccountId32;
readonly mode: UpDataStructsCollectionMode;
@@ -2420,7 +2423,7 @@
readonly metaUpdatePermission: UpDataStructsMetaUpdatePermission;
}
- /** @name UpDataStructsSponsorshipState (293) */
+ /** @name UpDataStructsSponsorshipState (294) */
export interface UpDataStructsSponsorshipState extends Enum {
readonly isDisabled: boolean;
readonly isUnconfirmed: boolean;
@@ -2430,14 +2433,14 @@
readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';
}
- /** @name UpDataStructsCollectionStats (296) */
+ /** @name UpDataStructsCollectionStats (297) */
export interface UpDataStructsCollectionStats extends Struct {
readonly created: u32;
readonly destroyed: u32;
readonly alive: u32;
}
- /** @name PalletCommonError (297) */
+ /** @name PalletCommonError (298) */
export interface PalletCommonError extends Enum {
readonly isCollectionNotFound: boolean;
readonly isMustBeTokenOwner: boolean;
@@ -2462,10 +2465,11 @@
readonly isCantApproveMoreThanOwned: boolean;
readonly isAddressIsZero: boolean;
readonly isUnsupportedOperation: boolean;
- readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'TokenVariableDataLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation';
+ readonly isNotSufficientFounds: boolean;
+ readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'TokenVariableDataLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds';
}
- /** @name PalletFungibleError (299) */
+ /** @name PalletFungibleError (300) */
export interface PalletFungibleError extends Enum {
readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;
readonly isFungibleItemsHaveNoId: boolean;
@@ -2473,34 +2477,34 @@
readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData';
}
- /** @name PalletRefungibleItemData (300) */
+ /** @name PalletRefungibleItemData (301) */
export interface PalletRefungibleItemData extends Struct {
readonly constData: Bytes;
readonly variableData: Bytes;
}
- /** @name PalletRefungibleError (304) */
+ /** @name PalletRefungibleError (305) */
export interface PalletRefungibleError extends Enum {
readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;
readonly isWrongRefungiblePieces: boolean;
readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces';
}
- /** @name PalletNonfungibleItemData (305) */
+ /** @name PalletNonfungibleItemData (306) */
export interface PalletNonfungibleItemData extends Struct {
readonly constData: Bytes;
readonly variableData: Bytes;
- readonly owner: PalletCommonAccountBasicCrossAccountIdRepr;
+ readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
}
- /** @name PalletNonfungibleError (306) */
+ /** @name PalletNonfungibleError (307) */
export interface PalletNonfungibleError extends Enum {
readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;
readonly isNonfungibleItemsHaveNoAmount: boolean;
readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount';
}
- /** @name PalletEvmError (308) */
+ /** @name PalletEvmError (309) */
export interface PalletEvmError extends Enum {
readonly isBalanceLow: boolean;
readonly isFeeOverflow: boolean;
@@ -2511,7 +2515,7 @@
readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce';
}
- /** @name FpRpcTransactionStatus (311) */
+ /** @name FpRpcTransactionStatus (312) */
export interface FpRpcTransactionStatus extends Struct {
readonly transactionHash: H256;
readonly transactionIndex: u32;
@@ -2522,10 +2526,10 @@
readonly logsBloom: EthbloomBloom;
}
- /** @name EthbloomBloom (314) */
+ /** @name EthbloomBloom (315) */
export interface EthbloomBloom extends U8aFixed {}
- /** @name EthereumReceiptReceiptV3 (316) */
+ /** @name EthereumReceiptReceiptV3 (317) */
export interface EthereumReceiptReceiptV3 extends Enum {
readonly isLegacy: boolean;
readonly asLegacy: EthereumReceiptEip658ReceiptData;
@@ -2536,7 +2540,7 @@
readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';
}
- /** @name EthereumReceiptEip658ReceiptData (317) */
+ /** @name EthereumReceiptEip658ReceiptData (318) */
export interface EthereumReceiptEip658ReceiptData extends Struct {
readonly statusCode: u8;
readonly usedGas: U256;
@@ -2544,14 +2548,14 @@
readonly logs: Vec<EthereumLog>;
}
- /** @name EthereumBlock (318) */
+ /** @name EthereumBlock (319) */
export interface EthereumBlock extends Struct {
readonly header: EthereumHeader;
readonly transactions: Vec<EthereumTransactionTransactionV2>;
readonly ommers: Vec<EthereumHeader>;
}
- /** @name EthereumHeader (319) */
+ /** @name EthereumHeader (320) */
export interface EthereumHeader extends Struct {
readonly parentHash: H256;
readonly ommersHash: H256;
@@ -2570,24 +2574,24 @@
readonly nonce: EthereumTypesHashH64;
}
- /** @name EthereumTypesHashH64 (320) */
+ /** @name EthereumTypesHashH64 (321) */
export interface EthereumTypesHashH64 extends U8aFixed {}
- /** @name PalletEthereumError (325) */
+ /** @name PalletEthereumError (326) */
export interface PalletEthereumError extends Enum {
readonly isInvalidSignature: boolean;
readonly isPreLogExists: boolean;
readonly type: 'InvalidSignature' | 'PreLogExists';
}
- /** @name PalletEvmCoderSubstrateError (326) */
+ /** @name PalletEvmCoderSubstrateError (327) */
export interface PalletEvmCoderSubstrateError extends Enum {
readonly isOutOfGas: boolean;
readonly isOutOfFund: boolean;
readonly type: 'OutOfGas' | 'OutOfFund';
}
- /** @name PalletEvmContractHelpersSponsoringModeT (327) */
+ /** @name PalletEvmContractHelpersSponsoringModeT (328) */
export interface PalletEvmContractHelpersSponsoringModeT extends Enum {
readonly isDisabled: boolean;
readonly isAllowlisted: boolean;
@@ -2595,20 +2599,20 @@
readonly type: 'Disabled' | 'Allowlisted' | 'Generous';
}
- /** @name PalletEvmContractHelpersError (329) */
+ /** @name PalletEvmContractHelpersError (330) */
export interface PalletEvmContractHelpersError extends Enum {
readonly isNoPermission: boolean;
readonly type: 'NoPermission';
}
- /** @name PalletEvmMigrationError (330) */
+ /** @name PalletEvmMigrationError (331) */
export interface PalletEvmMigrationError extends Enum {
readonly isAccountNotEmpty: boolean;
readonly isAccountIsNotMigrating: boolean;
readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';
}
- /** @name SpRuntimeMultiSignature (332) */
+ /** @name SpRuntimeMultiSignature (333) */
export interface SpRuntimeMultiSignature extends Enum {
readonly isEd25519: boolean;
readonly asEd25519: SpCoreEd25519Signature;
@@ -2619,31 +2623,31 @@
readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';
}
- /** @name SpCoreEd25519Signature (333) */
+ /** @name SpCoreEd25519Signature (334) */
export interface SpCoreEd25519Signature extends U8aFixed {}
- /** @name SpCoreSr25519Signature (335) */
+ /** @name SpCoreSr25519Signature (336) */
export interface SpCoreSr25519Signature extends U8aFixed {}
- /** @name SpCoreEcdsaSignature (336) */
+ /** @name SpCoreEcdsaSignature (337) */
export interface SpCoreEcdsaSignature extends U8aFixed {}
- /** @name FrameSystemExtensionsCheckSpecVersion (339) */
+ /** @name FrameSystemExtensionsCheckSpecVersion (340) */
export type FrameSystemExtensionsCheckSpecVersion = Null;
- /** @name FrameSystemExtensionsCheckGenesis (340) */
+ /** @name FrameSystemExtensionsCheckGenesis (341) */
export type FrameSystemExtensionsCheckGenesis = Null;
- /** @name FrameSystemExtensionsCheckNonce (343) */
+ /** @name FrameSystemExtensionsCheckNonce (344) */
export interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}
- /** @name FrameSystemExtensionsCheckWeight (344) */
+ /** @name FrameSystemExtensionsCheckWeight (345) */
export type FrameSystemExtensionsCheckWeight = Null;
- /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (345) */
+ /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (346) */
export interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}
- /** @name UniqueRuntimeRuntime (346) */
- export type UniqueRuntimeRuntime = Null;
+ /** @name OpalRuntimeRuntime (347) */
+ export type OpalRuntimeRuntime = Null;
} // declare module
tests/src/interfaces/unique/definitions.tsdiffbeforeafterboth--- a/tests/src/interfaces/unique/definitions.ts
+++ b/tests/src/interfaces/unique/definitions.ts
@@ -22,7 +22,7 @@
isOptional?: true;
};
-const CROSS_ACCOUNT_ID_TYPE = 'PalletCommonAccountBasicCrossAccountIdRepr';
+const CROSS_ACCOUNT_ID_TYPE = 'PalletEvmAccountBasicCrossAccountIdRepr';
const collectionParam = {name: 'collection', type: 'u32'};
const tokenParam = {name: 'tokenId', type: 'u32'};
@@ -38,8 +38,8 @@
export default {
types,
rpc: {
- adminlist: fun('Get admin list', [collectionParam], 'Vec<PalletCommonAccountBasicCrossAccountIdRepr>'),
- allowlist: fun('Get allowlist', [collectionParam], 'Vec<PalletCommonAccountBasicCrossAccountIdRepr>'),
+ adminlist: fun('Get admin list', [collectionParam], 'Vec<PalletEvmAccountBasicCrossAccountIdRepr>'),
+ allowlist: fun('Get allowlist', [collectionParam], 'Vec<PalletEvmAccountBasicCrossAccountIdRepr>'),
accountTokens: fun('Get tokens owned by account', [collectionParam, crossAccountParam()], 'Vec<u32>'),
collectionTokens: fun('Get tokens contained in collection', [collectionParam], 'Vec<u32>'),
@@ -55,5 +55,7 @@
collectionById: fun('Get collection by specified id', [collectionParam], 'Option<UpDataStructsCollection>'),
collectionStats: fun('Get collection stats', [], 'UpDataStructsCollectionStats'),
allowed: fun('Check if user is allowed to use collection', [collectionParam, crossAccountParam()], 'bool'),
+ nextSponsored: fun('Get number of blocks when sponsored transaction is available', [collectionParam, crossAccountParam(), tokenParam], 'Option<u64>'),
+ effectiveCollectionLimits: fun('Get effective collection limits', [collectionParam], 'Option<UpDataStructsCollectionLimits>'),
},
};
tests/src/interfaces/unique/types.tsdiffbeforeafterboth--- a/tests/src/interfaces/unique/types.ts
+++ b/tests/src/interfaces/unique/types.ts
@@ -6,6 +6,9 @@
import type { AccountId32, Call, H160, H256, MultiAddress, Perbill } from '@polkadot/types/interfaces/runtime';
import type { Event } from '@polkadot/types/interfaces/system';
+/** @name BTreeSet */
+export interface BTreeSet extends Vec<Bytes> {}
+
/** @name CumulusPalletDmpQueueCall */
export interface CumulusPalletDmpQueueCall extends Enum {
readonly isServiceOverweight: boolean;
@@ -299,7 +302,7 @@
/** @name EthereumTransactionAccessListItem */
export interface EthereumTransactionAccessListItem extends Struct {
readonly address: H160;
- readonly slots: Vec<H256>;
+ readonly storageKeys: Vec<H256>;
}
/** @name EthereumTransactionEip1559Transaction */
@@ -654,6 +657,9 @@
readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';
}
+/** @name OpalRuntimeRuntime */
+export interface OpalRuntimeRuntime extends Null {}
+
/** @name OrmlVestingModuleCall */
export interface OrmlVestingModuleCall extends Enum {
readonly isClaim: boolean;
@@ -856,15 +862,6 @@
export interface PalletBalancesReserveData extends Struct {
readonly id: U8aFixed;
readonly amount: u128;
-}
-
-/** @name PalletCommonAccountBasicCrossAccountIdRepr */
-export interface PalletCommonAccountBasicCrossAccountIdRepr extends Enum {
- readonly isSubstrate: boolean;
- readonly asSubstrate: AccountId32;
- readonly isEthereum: boolean;
- readonly asEthereum: H160;
- readonly type: 'Substrate' | 'Ethereum';
}
/** @name PalletCommonError */
@@ -892,7 +889,8 @@
readonly isCantApproveMoreThanOwned: boolean;
readonly isAddressIsZero: boolean;
readonly isUnsupportedOperation: boolean;
- readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'TokenVariableDataLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation';
+ readonly isNotSufficientFounds: boolean;
+ readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'TokenVariableDataLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds';
}
/** @name PalletCommonEvent */
@@ -902,13 +900,13 @@
readonly isCollectionDestroyed: boolean;
readonly asCollectionDestroyed: u32;
readonly isItemCreated: boolean;
- readonly asItemCreated: ITuple<[u32, u32, PalletCommonAccountBasicCrossAccountIdRepr, u128]>;
+ readonly asItemCreated: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;
readonly isItemDestroyed: boolean;
- readonly asItemDestroyed: ITuple<[u32, u32, PalletCommonAccountBasicCrossAccountIdRepr, u128]>;
+ readonly asItemDestroyed: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;
readonly isTransfer: boolean;
- readonly asTransfer: ITuple<[u32, u32, PalletCommonAccountBasicCrossAccountIdRepr, PalletCommonAccountBasicCrossAccountIdRepr, u128]>;
+ readonly asTransfer: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;
readonly isApproved: boolean;
- readonly asApproved: ITuple<[u32, u32, PalletCommonAccountBasicCrossAccountIdRepr, PalletCommonAccountBasicCrossAccountIdRepr, u128]>;
+ readonly asApproved: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;
readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved';
}
@@ -935,6 +933,15 @@
readonly type: 'Executed';
}
+/** @name PalletEvmAccountBasicCrossAccountIdRepr */
+export interface PalletEvmAccountBasicCrossAccountIdRepr extends Enum {
+ readonly isSubstrate: boolean;
+ readonly asSubstrate: AccountId32;
+ readonly isEthereum: boolean;
+ readonly asEthereum: H160;
+ readonly type: 'Substrate' | 'Ethereum';
+}
+
/** @name PalletEvmCall */
export interface PalletEvmCall extends Enum {
readonly isWithdraw: boolean;
@@ -1085,7 +1092,7 @@
export interface PalletNonfungibleItemData extends Struct {
readonly constData: Bytes;
readonly variableData: Bytes;
- readonly owner: PalletCommonAccountBasicCrossAccountIdRepr;
+ readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
}
/** @name PalletRefungibleError */
@@ -1259,12 +1266,12 @@
readonly isAddToAllowList: boolean;
readonly asAddToAllowList: {
readonly collectionId: u32;
- readonly address: PalletCommonAccountBasicCrossAccountIdRepr;
+ readonly address: PalletEvmAccountBasicCrossAccountIdRepr;
} & Struct;
readonly isRemoveFromAllowList: boolean;
readonly asRemoveFromAllowList: {
readonly collectionId: u32;
- readonly address: PalletCommonAccountBasicCrossAccountIdRepr;
+ readonly address: PalletEvmAccountBasicCrossAccountIdRepr;
} & Struct;
readonly isSetPublicAccessMode: boolean;
readonly asSetPublicAccessMode: {
@@ -1284,12 +1291,12 @@
readonly isAddCollectionAdmin: boolean;
readonly asAddCollectionAdmin: {
readonly collectionId: u32;
- readonly newAdminId: PalletCommonAccountBasicCrossAccountIdRepr;
+ readonly newAdminId: PalletEvmAccountBasicCrossAccountIdRepr;
} & Struct;
readonly isRemoveCollectionAdmin: boolean;
readonly asRemoveCollectionAdmin: {
readonly collectionId: u32;
- readonly accountId: PalletCommonAccountBasicCrossAccountIdRepr;
+ readonly accountId: PalletEvmAccountBasicCrossAccountIdRepr;
} & Struct;
readonly isSetCollectionSponsor: boolean;
readonly asSetCollectionSponsor: {
@@ -1307,13 +1314,13 @@
readonly isCreateItem: boolean;
readonly asCreateItem: {
readonly collectionId: u32;
- readonly owner: PalletCommonAccountBasicCrossAccountIdRepr;
+ readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
readonly data: UpDataStructsCreateItemData;
} & Struct;
readonly isCreateMultipleItems: boolean;
readonly asCreateMultipleItems: {
readonly collectionId: u32;
- readonly owner: PalletCommonAccountBasicCrossAccountIdRepr;
+ readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
readonly itemsData: Vec<UpDataStructsCreateItemData>;
} & Struct;
readonly isCreateMultipleItemsEx: boolean;
@@ -1335,28 +1342,28 @@
readonly isBurnFrom: boolean;
readonly asBurnFrom: {
readonly collectionId: u32;
- readonly from: PalletCommonAccountBasicCrossAccountIdRepr;
+ readonly from: PalletEvmAccountBasicCrossAccountIdRepr;
readonly itemId: u32;
readonly value: u128;
} & Struct;
readonly isTransfer: boolean;
readonly asTransfer: {
- readonly recipient: PalletCommonAccountBasicCrossAccountIdRepr;
+ readonly recipient: PalletEvmAccountBasicCrossAccountIdRepr;
readonly collectionId: u32;
readonly itemId: u32;
readonly value: u128;
} & Struct;
readonly isApprove: boolean;
readonly asApprove: {
- readonly spender: PalletCommonAccountBasicCrossAccountIdRepr;
+ readonly spender: PalletEvmAccountBasicCrossAccountIdRepr;
readonly collectionId: u32;
readonly itemId: u32;
readonly amount: u128;
} & Struct;
readonly isTransferFrom: boolean;
readonly asTransferFrom: {
- readonly from: PalletCommonAccountBasicCrossAccountIdRepr;
- readonly recipient: PalletCommonAccountBasicCrossAccountIdRepr;
+ readonly from: PalletEvmAccountBasicCrossAccountIdRepr;
+ readonly recipient: PalletEvmAccountBasicCrossAccountIdRepr;
readonly collectionId: u32;
readonly itemId: u32;
readonly value: u128;
@@ -1413,7 +1420,7 @@
readonly isCollectionSponsorRemoved: boolean;
readonly asCollectionSponsorRemoved: u32;
readonly isCollectionAdminAdded: boolean;
- readonly asCollectionAdminAdded: ITuple<[u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
+ readonly asCollectionAdminAdded: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
readonly isCollectionOwnedChanged: boolean;
readonly asCollectionOwnedChanged: ITuple<[u32, AccountId32]>;
readonly isCollectionSponsorSet: boolean;
@@ -1423,11 +1430,11 @@
readonly isSponsorshipConfirmed: boolean;
readonly asSponsorshipConfirmed: ITuple<[u32, AccountId32]>;
readonly isCollectionAdminRemoved: boolean;
- readonly asCollectionAdminRemoved: ITuple<[u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
+ readonly asCollectionAdminRemoved: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
readonly isAllowListAddressRemoved: boolean;
- readonly asAllowListAddressRemoved: ITuple<[u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
+ readonly asAllowListAddressRemoved: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
readonly isAllowListAddressAdded: boolean;
- readonly asAllowListAddressAdded: ITuple<[u32, PalletCommonAccountBasicCrossAccountIdRepr]>;
+ readonly asAllowListAddressAdded: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;
readonly isCollectionLimitSet: boolean;
readonly asCollectionLimitSet: u32;
readonly isMintPermissionSet: boolean;
@@ -1707,7 +1714,7 @@
/** @name SpTrieStorageProof */
export interface SpTrieStorageProof extends Struct {
- readonly trieNodes: Vec<Bytes>;
+ readonly trieNodes: BTreeSet;
}
/** @name SpVersionRuntimeVersion */
@@ -1722,9 +1729,6 @@
readonly stateVersion: u8;
}
-/** @name UniqueRuntimeRuntime */
-export interface UniqueRuntimeRuntime extends Null {}
-
/** @name UpDataStructsAccessMode */
export interface UpDataStructsAccessMode extends Enum {
readonly isNormal: boolean;
@@ -1816,7 +1820,7 @@
readonly isNft: boolean;
readonly asNft: Vec<UpDataStructsCreateNftExData>;
readonly isFungible: boolean;
- readonly asFungible: BTreeMap<PalletCommonAccountBasicCrossAccountIdRepr,u128>;
+ readonly asFungible: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr,u128>;
readonly isRefungibleMultipleItems: boolean;
readonly asRefungibleMultipleItems: Vec<UpDataStructsCreateRefungibleExData>;
readonly isRefungibleMultipleOwners: boolean;
@@ -1834,7 +1838,7 @@
export interface UpDataStructsCreateNftExData extends Struct {
readonly constData: Bytes;
readonly variableData: Bytes;
- readonly owner: PalletCommonAccountBasicCrossAccountIdRepr;
+ readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
}
/** @name UpDataStructsCreateReFungibleData */
@@ -1848,7 +1852,7 @@
export interface UpDataStructsCreateRefungibleExData extends Struct {
readonly constData: Bytes;
readonly variableData: Bytes;
- readonly users: BTreeMap<PalletCommonAccountBasicCrossAccountIdRepr, u128>;
+ readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;
}
/** @name UpDataStructsMetaUpdatePermission */
tests/src/limits.test.tsdiffbeforeafterboth--- a/tests/src/limits.test.ts
+++ b/tests/src/limits.test.ts
@@ -395,4 +395,73 @@
expect(aliceBalanceAfterSponsoredTransaction1 < aliceBalanceBefore).to.be.true;
//expect(aliceBalanceAfterSponsoredTransaction1).to.be.lessThan(aliceBalanceBefore);
});
+
+ it('Effective collection limits', async () => {
+ await usingApi(async (api) => {
+ const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+
+ { // Check that limits is undefined
+ const collection = await api.rpc.unique.collectionById(collectionId);
+ expect(collection.isSome).to.be.true;
+ const limits = collection.unwrap().limits;
+ expect(limits).to.be.any;
+
+ expect(limits.accountTokenOwnershipLimit.toHuman()).to.be.null;
+ expect(limits.sponsoredDataSize.toHuman()).to.be.null;
+ expect(limits.sponsoredDataRateLimit.toHuman()).to.be.null;
+ expect(limits.tokenLimit.toHuman()).to.be.null;
+ expect(limits.sponsorTransferTimeout.toHuman()).to.be.null;
+ expect(limits.sponsorApproveTimeout.toHuman()).to.be.null;
+ expect(limits.ownerCanTransfer.toHuman()).to.be.null;
+ expect(limits.ownerCanDestroy.toHuman()).to.be.null;
+ expect(limits.transfersEnabled.toHuman()).to.be.null;
+ }
+
+ { // Check that limits is undefined for non-existent collection
+ const limits = await api.rpc.unique.effectiveCollectionLimits(11111);
+ expect(limits.toHuman()).to.be.null;
+ }
+
+ { // Check that default values defined for collection limits
+ const limitsOpt = await api.rpc.unique.effectiveCollectionLimits(collectionId);
+ expect(limitsOpt.isNone).to.be.false;
+ const limits = limitsOpt.unwrap();
+
+ expect(limits.accountTokenOwnershipLimit.toHuman()).to.be.eq('100,000');
+ expect(limits.sponsoredDataSize.toHuman()).to.be.eq('2,048');
+ expect(limits.sponsoredDataRateLimit.toHuman()).to.be.eq('SponsoringDisabled');
+ expect(limits.tokenLimit.toHuman()).to.be.eq('4,294,967,295');
+ expect(limits.sponsorTransferTimeout.toHuman()).to.be.eq('5');
+ expect(limits.sponsorApproveTimeout.toHuman()).to.be.eq('5');
+ expect(limits.ownerCanTransfer.toHuman()).to.be.true;
+ expect(limits.ownerCanDestroy.toHuman()).to.be.true;
+ expect(limits.transfersEnabled.toHuman()).to.be.true;
+ }
+
+ { //Check the values for collection limits
+ await setCollectionLimitsExpectSuccess(alice, collectionId, {
+ accountTokenOwnershipLimit: 99_999,
+ sponsoredDataSize: 1024,
+ tokenLimit: 123,
+ transfersEnabled: false,
+ });
+
+ const limitsOpt = await api.rpc.unique.effectiveCollectionLimits(collectionId);
+ expect(limitsOpt.isNone).to.be.false;
+ const limits = limitsOpt.unwrap();
+
+ expect(limits.accountTokenOwnershipLimit.toHuman()).to.be.eq('99,999');
+ expect(limits.sponsoredDataSize.toHuman()).to.be.eq('1,024');
+ expect(limits.sponsoredDataRateLimit.toHuman()).to.be.eq('SponsoringDisabled');
+ expect(limits.tokenLimit.toHuman()).to.be.eq('123');
+ expect(limits.sponsorTransferTimeout.toHuman()).to.be.eq('5');
+ expect(limits.sponsorApproveTimeout.toHuman()).to.be.eq('5');
+ expect(limits.ownerCanTransfer.toHuman()).to.be.true;
+ expect(limits.ownerCanDestroy.toHuman()).to.be.true;
+ expect(limits.transfersEnabled.toHuman()).to.be.false;
+ }
+ });
+ });
});
+
+
tests/src/nextSponsoring.test.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/nextSponsoring.test.ts
@@ -0,0 +1,110 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Unique Network is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+import {ApiPromise} from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
+import chai from 'chai';
+import chaiAsPromised from 'chai-as-promised';
+import privateKey from './substrate/privateKey';
+import {default as usingApi} from './substrate/substrate-api';
+import {
+ createCollectionExpectSuccess,
+ setCollectionSponsorExpectSuccess,
+ confirmSponsorshipExpectSuccess,
+ createItemExpectSuccess,
+ transferExpectSuccess,
+ normalizeAccountId,
+ getNextSponsored,
+} from './util/helpers';
+
+chai.use(chaiAsPromised);
+const expect = chai.expect;
+
+
+
+describe('Integration Test getNextSponsored(collection_id, owner, item_id):', () => {
+ let alice: IKeyringPair;
+ let bob: IKeyringPair;
+
+ before(async () => {
+ await usingApi(async () => {
+ alice = privateKey('//Alice');
+ bob = privateKey('//Bob');
+ });
+ });
+
+ it('NFT', async () => {
+ await usingApi(async (api: ApiPromise) => {
+
+ // Not existing collection
+ expect(await getNextSponsored(api, 0, normalizeAccountId(alice), 0)).to.be.equal(-1);
+
+ const collectionId = await createCollectionExpectSuccess();
+ const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', alice.address);
+
+ // Check with Disabled sponsoring state
+ expect(await getNextSponsored(api, collectionId, normalizeAccountId(alice), itemId)).to.be.equal(-1);
+ await setCollectionSponsorExpectSuccess(collectionId, bob.address);
+
+ // Check with Unconfirmed sponsoring state
+ expect(await getNextSponsored(api, collectionId, normalizeAccountId(alice), itemId)).to.be.equal(-1);
+ await confirmSponsorshipExpectSuccess(collectionId, '//Bob');
+
+ // Check with Confirmed sponsoring state
+ expect(await getNextSponsored(api, collectionId, normalizeAccountId(alice), itemId)).to.be.equal(0);
+
+ // After transfer
+ await transferExpectSuccess(collectionId, itemId, alice, bob, 1);
+ expect(await getNextSponsored(api, collectionId, normalizeAccountId(alice), itemId)).to.be.equal(5);
+
+ // Not existing token
+ expect(await getNextSponsored(api, collectionId, normalizeAccountId(alice), itemId+1)).to.be.equal(-1);
+ });
+ });
+
+ it('Fungible', async () => {
+ await usingApi(async (api: ApiPromise) => {
+
+ const createMode = 'Fungible';
+ const funCollectionId = await createCollectionExpectSuccess({mode: {type: createMode, decimalPoints: 0}});
+ await createItemExpectSuccess(alice, funCollectionId, createMode);
+ await setCollectionSponsorExpectSuccess(funCollectionId, bob.address);
+ await confirmSponsorshipExpectSuccess(funCollectionId, '//Bob');
+ expect(await getNextSponsored(api, funCollectionId, normalizeAccountId(alice), 0)).to.be.equal(0);
+
+ await transferExpectSuccess(funCollectionId, 0, alice, bob, 10, 'Fungible');
+ expect(await getNextSponsored(api, funCollectionId, normalizeAccountId(alice), 0)).to.be.equal(5);
+ });
+ });
+
+ it('ReFungible', async () => {
+ await usingApi(async (api: ApiPromise) => {
+
+ const createMode = 'ReFungible';
+ const refunCollectionId = await createCollectionExpectSuccess({mode: {type: createMode}});
+ const refunItemId = await createItemExpectSuccess(alice, refunCollectionId, createMode);
+ await setCollectionSponsorExpectSuccess(refunCollectionId, bob.address);
+ await confirmSponsorshipExpectSuccess(refunCollectionId, '//Bob');
+ expect(await getNextSponsored(api, refunCollectionId, normalizeAccountId(alice), refunItemId)).to.be.equal(0);
+
+ await transferExpectSuccess(refunCollectionId, refunItemId, alice, bob, 10, 'ReFungible');
+ expect(await getNextSponsored(api, refunCollectionId, normalizeAccountId(alice), refunItemId)).to.be.equal(5);
+
+ // Not existing token
+ expect(await getNextSponsored(api, refunCollectionId, normalizeAccountId(alice), refunItemId+1)).to.be.equal(-1);
+ });
+ });
+});
tests/src/util/helpers.tsdiffbeforeafterboth--- a/tests/src/util/helpers.ts
+++ b/tests/src/util/helpers.ts
@@ -352,15 +352,12 @@
// Run the CreateCollection transaction
const alicePrivateKey = privateKey('//Alice');
const tx = api.tx.unique.createCollectionEx({name: strToUTF16(name), description: strToUTF16(description), tokenPrefix: strToUTF16(tokenPrefix), mode: modeprm as any});
- const events = await expect(submitTransactionExpectFailAsync(alicePrivateKey, tx)).to.be.rejected;
- const result = getCreateCollectionResult(events);
+ await expect(submitTransactionExpectFailAsync(alicePrivateKey, tx)).to.be.rejected;
// Get number of collections after the transaction
const collectionCountAfter = await getCreatedCollectionCount(api);
// What to expect
- // tslint:disable-next-line:no-unused-expression
- expect(result.success).to.be.false;
expect(collectionCountAfter).to.be.equal(collectionCountBefore, 'Error: Collection with incorrect data created.');
});
}
@@ -619,6 +616,15 @@
});
}
+export async function getNextSponsored(
+ api: ApiPromise,
+ collectionId: number,
+ account: string | CrossAccountId,
+ tokenId: number,
+): Promise<number> {
+ return Number((await api.rpc.unique.nextSponsored(collectionId, account, tokenId)).unwrapOr(-1));
+}
+
export async function toggleContractAllowlistExpectSuccess(sender: IKeyringPair, contractAddress: AccountId | string, value = true) {
await usingApi(async (api) => {
const tx = api.tx.unique.toggleContractAllowList(contractAddress, value);
@@ -847,6 +853,13 @@
return balance;
}
+export async function transferBalanceTo(api: ApiPromise, source: IKeyringPair, target: string, amount = 1000n * UNIQUE) {
+ const tx = api.tx.balances.transfer(target, amount);
+ const events = await submitTransactionAsync(source, tx);
+ const result = getGenericResult(events);
+ expect(result.success).to.be.true;
+}
+
export async function
scheduleTransferExpectSuccess(
collectionId: number,