difftreelog
Merge remote-tracking branch 'origin/develop' into feature/NFTPAR-281_overflow_tests
in: master
36 files changed
Cargo.lockdiffbeforeafterboth248248249[[package]]249[[package]]250name = "async-process"250name = "async-process"251version = "1.0.1"251version = "1.0.2"252source = "registry+https://github.com/rust-lang/crates.io-index"252source = "registry+https://github.com/rust-lang/crates.io-index"253checksum = "4c8cea09c1fb10a317d1b5af8024eeba256d6554763e85ecd90ff8df31c7bbda"253checksum = "ef37b86e2fa961bae5a4d212708ea0154f904ce31d1a4a7f47e1bbc33a0c040b"254dependencies = [254dependencies = [255 "async-io",255 "async-io",256 "blocking",256 "blocking",257 "cfg-if 0.1.10",257 "cfg-if 1.0.0",258 "event-listener",258 "event-listener",259 "futures-lite",259 "futures-lite",260 "once_cell",260 "once_cell",534534535[[package]]535[[package]]536name = "bstr"536name = "bstr"537version = "0.2.14"537version = "0.2.15"538source = "registry+https://github.com/rust-lang/crates.io-index"538source = "registry+https://github.com/rust-lang/crates.io-index"539checksum = "473fc6b38233f9af7baa94fb5852dca389e3d95b8e21c8e3719301462c5d9faf"539checksum = "a40b47ad93e1a5404e6c18dec46b628214fee441c70f4ab5d6942142cc268a3d"540dependencies = [540dependencies = [541 "memchr",541 "memchr",542]542]1378[[package]]1378[[package]]1379name = "fork-tree"1379name = "fork-tree"1380version = "2.0.1"1380version = "2.0.1"1381source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"1381source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"1382dependencies = [1382dependencies = [1383 "parity-scale-codec",1383 "parity-scale-codec",1384]1384]1396[[package]]1396[[package]]1397name = "frame-benchmarking"1397name = "frame-benchmarking"1398version = "2.0.1"1398version = "2.0.1"1399source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"1399source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"1400dependencies = [1400dependencies = [1401 "frame-support",1401 "frame-support",1402 "frame-system",1402 "frame-system",1414[[package]]1414[[package]]1415name = "frame-benchmarking-cli"1415name = "frame-benchmarking-cli"1416version = "2.0.1"1416version = "2.0.1"1417source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"1417source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"1418dependencies = [1418dependencies = [1419 "Inflector",1419 "Inflector",1420 "chrono",1420 "chrono",1437[[package]]1437[[package]]1438name = "frame-executive"1438name = "frame-executive"1439version = "2.0.1"1439version = "2.0.1"1440source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"1440source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"1441dependencies = [1441dependencies = [1442 "frame-support",1442 "frame-support",1443 "frame-system",1443 "frame-system",1453[[package]]1453[[package]]1454name = "frame-metadata"1454name = "frame-metadata"1455version = "12.0.1"1455version = "12.0.1"1456source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"1456source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"1457dependencies = [1457dependencies = [1458 "parity-scale-codec",1458 "parity-scale-codec",1459 "serde",1459 "serde",1464[[package]]1464[[package]]1465name = "frame-support"1465name = "frame-support"1466version = "2.0.1"1466version = "2.0.1"1467source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"1467source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"1468dependencies = [1468dependencies = [1469 "bitflags",1469 "bitflags",1470 "frame-metadata",1470 "frame-metadata",1471 "frame-support-procedural",1471 "frame-support-procedural",1472 "impl-trait-for-tuples 0.2.0",1472 "impl-trait-for-tuples 0.2.1",1473 "log",1473 "log",1474 "once_cell",1474 "once_cell",1475 "parity-scale-codec",1475 "parity-scale-codec",1489[[package]]1489[[package]]1490name = "frame-support-procedural"1490name = "frame-support-procedural"1491version = "2.0.1"1491version = "2.0.1"1492source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"1492source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"1493dependencies = [1493dependencies = [1494 "Inflector",1494 "Inflector",1495 "frame-support-procedural-tools",1495 "frame-support-procedural-tools",1501[[package]]1501[[package]]1502name = "frame-support-procedural-tools"1502name = "frame-support-procedural-tools"1503version = "2.0.1"1503version = "2.0.1"1504source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"1504source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"1505dependencies = [1505dependencies = [1506 "frame-support-procedural-tools-derive",1506 "frame-support-procedural-tools-derive",1507 "proc-macro-crate",1507 "proc-macro-crate",1513[[package]]1513[[package]]1514name = "frame-support-procedural-tools-derive"1514name = "frame-support-procedural-tools-derive"1515version = "2.0.1"1515version = "2.0.1"1516source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"1516source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"1517dependencies = [1517dependencies = [1518 "proc-macro2",1518 "proc-macro2",1519 "quote",1519 "quote",1523[[package]]1523[[package]]1524name = "frame-system"1524name = "frame-system"1525version = "2.0.1"1525version = "2.0.1"1526source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"1526source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"1527dependencies = [1527dependencies = [1528 "frame-support",1528 "frame-support",1529 "impl-trait-for-tuples 0.2.0",1529 "impl-trait-for-tuples 0.2.1",1530 "parity-scale-codec",1530 "parity-scale-codec",1531 "serde",1531 "serde",1532 "sp-core",1532 "sp-core",1539[[package]]1539[[package]]1540name = "frame-system-benchmarking"1540name = "frame-system-benchmarking"1541version = "2.0.1"1541version = "2.0.1"1542source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"1542source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"1543dependencies = [1543dependencies = [1544 "frame-benchmarking",1544 "frame-benchmarking",1545 "frame-support",1545 "frame-support",1553[[package]]1553[[package]]1554name = "frame-system-rpc-runtime-api"1554name = "frame-system-rpc-runtime-api"1555version = "2.0.1"1555version = "2.0.1"1556source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"1556source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"1557dependencies = [1557dependencies = [1558 "parity-scale-codec",1558 "parity-scale-codec",1559 "sp-api",1559 "sp-api",211521152116[[package]]2116[[package]]2117name = "hyper"2117name = "hyper"2118version = "0.13.9"2118version = "0.13.10"2119source = "registry+https://github.com/rust-lang/crates.io-index"2119source = "registry+https://github.com/rust-lang/crates.io-index"2120checksum = "f6ad767baac13b44d4529fcf58ba2cd0995e36e7b435bc5b039de6f47e880dbf"2120checksum = "8a6f157065790a3ed2f88679250419b5cdd96e714a0d65f7797fd337186e96bb"2121dependencies = [2121dependencies = [2122 "bytes 0.5.6",2122 "bytes 0.5.6",2123 "futures-channel",2123 "futures-channel",2146 "bytes 0.5.6",2146 "bytes 0.5.6",2147 "ct-logs",2147 "ct-logs",2148 "futures-util",2148 "futures-util",2149 "hyper 0.13.9",2149 "hyper 0.13.10",2150 "log",2150 "log",2151 "rustls 0.18.1",2151 "rustls 0.18.1",2152 "rustls-native-certs",2152 "rustls-native-certs",216821682169[[package]]2169[[package]]2170name = "idna"2170name = "idna"2171version = "0.2.0"2171version = "0.2.1"2172source = "registry+https://github.com/rust-lang/crates.io-index"2172source = "registry+https://github.com/rust-lang/crates.io-index"2173checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9"2173checksum = "de910d521f7cc3135c4de8db1cb910e0b5ed1dc6f57c381cd07e8e661ce10094"2174dependencies = [2174dependencies = [2175 "matches",2175 "matches",2176 "unicode-bidi",2176 "unicode-bidi",224522452246[[package]]2246[[package]]2247name = "impl-trait-for-tuples"2247name = "impl-trait-for-tuples"2248version = "0.2.0"2248version = "0.2.1"2249source = "registry+https://github.com/rust-lang/crates.io-index"2249source = "registry+https://github.com/rust-lang/crates.io-index"2250checksum = "6f65a8ecf74feeacdab8d38cb129e550ca871cccaa7d1921d8636ecd75534903"2250checksum = "d5dacb10c5b3bb92d46ba347505a9041e676bb20ad220101326bffb0c93031ee"2251dependencies = [2251dependencies = [2252 "proc-macro2",2252 "proc-macro2",2253 "quote",2253 "quote",255325532554[[package]]2554[[package]]2555name = "libc"2555name = "libc"2556version = "0.2.85"2556version = "0.2.86"2557source = "registry+https://github.com/rust-lang/crates.io-index"2557source = "registry+https://github.com/rust-lang/crates.io-index"2558checksum = "7ccac4b00700875e6a07c6cde370d44d32fa01c5a65cdd2fca6858c479d28bb3"2558checksum = "b7282d924be3275cec7f6756ff4121987bc6481325397dde6ba3e7802b1a8b1c"255925592560[[package]]2560[[package]]2561name = "libloading"2561name = "libloading"3631[[package]]3631[[package]]3632name = "pallet-aura"3632name = "pallet-aura"3633version = "2.0.1"3633version = "2.0.1"3634source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"3634source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"3635dependencies = [3635dependencies = [3636 "frame-support",3636 "frame-support",3637 "frame-system",3637 "frame-system",3650[[package]]3650[[package]]3651name = "pallet-authorship"3651name = "pallet-authorship"3652version = "2.0.1"3652version = "2.0.1"3653source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"3653source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"3654dependencies = [3654dependencies = [3655 "frame-support",3655 "frame-support",3656 "frame-system",3656 "frame-system",3657 "impl-trait-for-tuples 0.2.0",3657 "impl-trait-for-tuples 0.2.1",3658 "parity-scale-codec",3658 "parity-scale-codec",3659 "sp-authorship",3659 "sp-authorship",3660 "sp-inherents",3660 "sp-inherents",3665[[package]]3665[[package]]3666name = "pallet-balances"3666name = "pallet-balances"3667version = "2.0.1"3667version = "2.0.1"3668source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"3668source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"3669dependencies = [3669dependencies = [3670 "frame-benchmarking",3670 "frame-benchmarking",3671 "frame-support",3671 "frame-support",3679[[package]]3679[[package]]3680name = "pallet-contracts"3680name = "pallet-contracts"3681version = "2.0.1"3681version = "2.0.1"3682source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"3682source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"3683dependencies = [3683dependencies = [3684 "frame-support",3684 "frame-support",3685 "frame-system",3685 "frame-system",3700[[package]]3700[[package]]3701name = "pallet-contracts-primitives"3701name = "pallet-contracts-primitives"3702version = "2.0.1"3702version = "2.0.1"3703source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"3703source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"3704dependencies = [3704dependencies = [3705 "bitflags",3705 "bitflags",3706 "parity-scale-codec",3706 "parity-scale-codec",3711[[package]]3711[[package]]3712name = "pallet-contracts-proc-macro"3712name = "pallet-contracts-proc-macro"3713version = "0.1.0"3713version = "0.1.0"3714source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"3714source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"3715dependencies = [3715dependencies = [3716 "proc-macro2",3716 "proc-macro2",3717 "quote",3717 "quote",3721[[package]]3721[[package]]3722name = "pallet-contracts-rpc"3722name = "pallet-contracts-rpc"3723version = "0.8.1"3723version = "0.8.1"3724source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"3724source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"3725dependencies = [3725dependencies = [3726 "jsonrpc-core",3726 "jsonrpc-core",3727 "jsonrpc-core-client",3727 "jsonrpc-core-client",3740[[package]]3740[[package]]3741name = "pallet-contracts-rpc-runtime-api"3741name = "pallet-contracts-rpc-runtime-api"3742version = "0.8.1"3742version = "0.8.1"3743source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"3743source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"3744dependencies = [3744dependencies = [3745 "pallet-contracts-primitives",3745 "pallet-contracts-primitives",3746 "parity-scale-codec",3746 "parity-scale-codec",3752[[package]]3752[[package]]3753name = "pallet-grandpa"3753name = "pallet-grandpa"3754version = "2.0.1"3754version = "2.0.1"3755source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"3755source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"3756dependencies = [3756dependencies = [3757 "frame-benchmarking",3757 "frame-benchmarking",3758 "frame-support",3758 "frame-support",3794[[package]]3794[[package]]3795name = "pallet-randomness-collective-flip"3795name = "pallet-randomness-collective-flip"3796version = "2.0.1"3796version = "2.0.1"3797source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"3797source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"3798dependencies = [3798dependencies = [3799 "frame-support",3799 "frame-support",3800 "frame-system",3800 "frame-system",3807[[package]]3807[[package]]3808name = "pallet-session"3808name = "pallet-session"3809version = "2.0.1"3809version = "2.0.1"3810source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"3810source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"3811dependencies = [3811dependencies = [3812 "frame-support",3812 "frame-support",3813 "frame-system",3813 "frame-system",3827[[package]]3827[[package]]3828name = "pallet-sudo"3828name = "pallet-sudo"3829version = "2.0.1"3829version = "2.0.1"3830source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"3830source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"3831dependencies = [3831dependencies = [3832 "frame-support",3832 "frame-support",3833 "frame-system",3833 "frame-system",3841[[package]]3841[[package]]3842name = "pallet-timestamp"3842name = "pallet-timestamp"3843version = "2.0.1"3843version = "2.0.1"3844source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"3844source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"3845dependencies = [3845dependencies = [3846 "frame-benchmarking",3846 "frame-benchmarking",3847 "frame-support",3847 "frame-support",3848 "frame-system",3848 "frame-system",3849 "impl-trait-for-tuples 0.2.0",3849 "impl-trait-for-tuples 0.2.1",3850 "parity-scale-codec",3850 "parity-scale-codec",3851 "serde",3851 "serde",3852 "sp-inherents",3852 "sp-inherents",3859[[package]]3859[[package]]3860name = "pallet-transaction-payment"3860name = "pallet-transaction-payment"3861version = "2.0.1"3861version = "2.0.1"3862source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"3862source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"3863dependencies = [3863dependencies = [3864 "frame-support",3864 "frame-support",3865 "frame-system",3865 "frame-system",3875[[package]]3875[[package]]3876name = "pallet-transaction-payment-rpc"3876name = "pallet-transaction-payment-rpc"3877version = "2.0.1"3877version = "2.0.1"3878source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"3878source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"3879dependencies = [3879dependencies = [3880 "jsonrpc-core",3880 "jsonrpc-core",3881 "jsonrpc-core-client",3881 "jsonrpc-core-client",3892[[package]]3892[[package]]3893name = "pallet-transaction-payment-rpc-runtime-api"3893name = "pallet-transaction-payment-rpc-runtime-api"3894version = "2.0.1"3894version = "2.0.1"3895source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"3895source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"3896dependencies = [3896dependencies = [3897 "pallet-transaction-payment",3897 "pallet-transaction-payment",3898 "parity-scale-codec",3898 "parity-scale-codec",3903[[package]]3903[[package]]3904name = "pallet-treasury"3904name = "pallet-treasury"3905version = "2.0.1"3905version = "2.0.1"3906source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"3906source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"3907dependencies = [3907dependencies = [3908 "frame-support",3908 "frame-support",3909 "frame-system",3909 "frame-system",3910 "impl-trait-for-tuples 0.2.0",3910 "impl-trait-for-tuples 0.2.1",3911 "pallet-balances",3911 "pallet-balances",3912 "parity-scale-codec",3912 "parity-scale-codec",3913 "serde",3913 "serde",3918[[package]]3918[[package]]3919name = "pallet-vesting"3919name = "pallet-vesting"3920version = "2.0.1"3920version = "2.0.1"3921source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"3921source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"3922dependencies = [3922dependencies = [3923 "enumflags2",3923 "enumflags2",3924 "frame-support",3924 "frame-support",4019dependencies = [4019dependencies = [4020 "cfg-if 1.0.0",4020 "cfg-if 1.0.0",4021 "hashbrown",4021 "hashbrown",4022 "impl-trait-for-tuples 0.2.0",4022 "impl-trait-for-tuples 0.2.1",4023 "parity-util-mem-derive",4023 "parity-util-mem-derive",4024 "parking_lot 0.11.1",4024 "parking_lot 0.11.1",4025 "primitive-types",4025 "primitive-types",5010[[package]]5010[[package]]5011name = "sc-basic-authorship"5011name = "sc-basic-authorship"5012version = "0.8.1"5012version = "0.8.1"5013source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5013source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5014dependencies = [5014dependencies = [5015 "futures 0.3.12",5015 "futures 0.3.12",5016 "futures-timer 3.0.2",5016 "futures-timer 3.0.2",5033[[package]]5033[[package]]5034name = "sc-block-builder"5034name = "sc-block-builder"5035version = "0.8.1"5035version = "0.8.1"5036source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5036source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5037dependencies = [5037dependencies = [5038 "parity-scale-codec",5038 "parity-scale-codec",5039 "sc-client-api",5039 "sc-client-api",5050[[package]]5050[[package]]5051name = "sc-chain-spec"5051name = "sc-chain-spec"5052version = "2.0.1"5052version = "2.0.1"5053source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5053source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5054dependencies = [5054dependencies = [5055 "impl-trait-for-tuples 0.2.0",5055 "impl-trait-for-tuples 0.2.1",5056 "parity-scale-codec",5056 "parity-scale-codec",5057 "sc-chain-spec-derive",5057 "sc-chain-spec-derive",5058 "sc-consensus-babe",5058 "sc-consensus-babe",5071[[package]]5071[[package]]5072name = "sc-chain-spec-derive"5072name = "sc-chain-spec-derive"5073version = "2.0.1"5073version = "2.0.1"5074source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5074source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5075dependencies = [5075dependencies = [5076 "proc-macro-crate",5076 "proc-macro-crate",5077 "proc-macro2",5077 "proc-macro2",5082[[package]]5082[[package]]5083name = "sc-cli"5083name = "sc-cli"5084version = "0.8.1"5084version = "0.8.1"5085source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5085source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5086dependencies = [5086dependencies = [5087 "chrono",5087 "chrono",5088 "fdlimit",5088 "fdlimit",5120[[package]]5120[[package]]5121name = "sc-client-api"5121name = "sc-client-api"5122version = "2.0.1"5122version = "2.0.1"5123source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5123source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5124dependencies = [5124dependencies = [5125 "derive_more",5125 "derive_more",5126 "fnv",5126 "fnv",5154[[package]]5154[[package]]5155name = "sc-client-db"5155name = "sc-client-db"5156version = "0.8.1"5156version = "0.8.1"5157source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5157source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5158dependencies = [5158dependencies = [5159 "blake2-rfc",5159 "blake2-rfc",5160 "hash-db",5160 "hash-db",5184[[package]]5184[[package]]5185name = "sc-consensus"5185name = "sc-consensus"5186version = "0.8.1"5186version = "0.8.1"5187source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5187source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5188dependencies = [5188dependencies = [5189 "sc-client-api",5189 "sc-client-api",5190 "sp-blockchain",5190 "sp-blockchain",5195[[package]]5195[[package]]5196name = "sc-consensus-aura"5196name = "sc-consensus-aura"5197version = "0.8.1"5197version = "0.8.1"5198source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5198source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5199dependencies = [5199dependencies = [5200 "derive_more",5200 "derive_more",5201 "futures 0.3.12",5201 "futures 0.3.12",5226[[package]]5226[[package]]5227name = "sc-consensus-babe"5227name = "sc-consensus-babe"5228version = "0.8.1"5228version = "0.8.1"5229source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5229source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5230dependencies = [5230dependencies = [5231 "derive_more",5231 "derive_more",5232 "fork-tree",5232 "fork-tree",5271[[package]]5271[[package]]5272name = "sc-consensus-epochs"5272name = "sc-consensus-epochs"5273version = "0.8.1"5273version = "0.8.1"5274source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5274source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5275dependencies = [5275dependencies = [5276 "fork-tree",5276 "fork-tree",5277 "parity-scale-codec",5277 "parity-scale-codec",5284[[package]]5284[[package]]5285name = "sc-consensus-slots"5285name = "sc-consensus-slots"5286version = "0.8.1"5286version = "0.8.1"5287source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5287source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5288dependencies = [5288dependencies = [5289 "futures 0.3.12",5289 "futures 0.3.12",5290 "futures-timer 3.0.2",5290 "futures-timer 3.0.2",5310[[package]]5310[[package]]5311name = "sc-consensus-uncles"5311name = "sc-consensus-uncles"5312version = "0.8.1"5312version = "0.8.1"5313source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5313source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5314dependencies = [5314dependencies = [5315 "log",5315 "log",5316 "sc-client-api",5316 "sc-client-api",5324[[package]]5324[[package]]5325name = "sc-executor"5325name = "sc-executor"5326version = "0.8.1"5326version = "0.8.1"5327source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5327source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5328dependencies = [5328dependencies = [5329 "derive_more",5329 "derive_more",5330 "lazy_static",5330 "lazy_static",5353[[package]]5353[[package]]5354name = "sc-executor-common"5354name = "sc-executor-common"5355version = "0.8.1"5355version = "0.8.1"5356source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5356source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5357dependencies = [5357dependencies = [5358 "derive_more",5358 "derive_more",5359 "parity-scale-codec",5359 "parity-scale-codec",5369[[package]]5369[[package]]5370name = "sc-executor-wasmi"5370name = "sc-executor-wasmi"5371version = "0.8.1"5371version = "0.8.1"5372source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5372source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5373dependencies = [5373dependencies = [5374 "log",5374 "log",5375 "parity-scale-codec",5375 "parity-scale-codec",5384[[package]]5384[[package]]5385name = "sc-executor-wasmtime"5385name = "sc-executor-wasmtime"5386version = "0.8.1"5386version = "0.8.1"5387source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5387source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5388dependencies = [5388dependencies = [5389 "log",5389 "log",5390 "parity-scale-codec",5390 "parity-scale-codec",5402[[package]]5402[[package]]5403name = "sc-finality-grandpa"5403name = "sc-finality-grandpa"5404version = "0.8.1"5404version = "0.8.1"5405source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5405source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5406dependencies = [5406dependencies = [5407 "derive_more",5407 "derive_more",5408 "finality-grandpa",5408 "finality-grandpa",5440[[package]]5440[[package]]5441name = "sc-informant"5441name = "sc-informant"5442version = "0.8.1"5442version = "0.8.1"5443source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5443source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5444dependencies = [5444dependencies = [5445 "ansi_term 0.12.1",5445 "ansi_term 0.12.1",5446 "futures 0.3.12",5446 "futures 0.3.12",5458[[package]]5458[[package]]5459name = "sc-keystore"5459name = "sc-keystore"5460version = "2.0.1"5460version = "2.0.1"5461source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5461source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5462dependencies = [5462dependencies = [5463 "async-trait",5463 "async-trait",5464 "derive_more",5464 "derive_more",5478[[package]]5478[[package]]5479name = "sc-light"5479name = "sc-light"5480version = "2.0.1"5480version = "2.0.1"5481source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5481source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5482dependencies = [5482dependencies = [5483 "hash-db",5483 "hash-db",5484 "lazy_static",5484 "lazy_static",5497[[package]]5497[[package]]5498name = "sc-network"5498name = "sc-network"5499version = "0.8.1"5499version = "0.8.1"5500source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5500source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5501dependencies = [5501dependencies = [5502 "async-std",5502 "async-std",5503 "async-trait",5503 "async-trait",5549[[package]]5549[[package]]5550name = "sc-network-gossip"5550name = "sc-network-gossip"5551version = "0.8.1"5551version = "0.8.1"5552source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5552source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5553dependencies = [5553dependencies = [5554 "futures 0.3.12",5554 "futures 0.3.12",5555 "futures-timer 3.0.2",5555 "futures-timer 3.0.2",5565[[package]]5565[[package]]5566name = "sc-offchain"5566name = "sc-offchain"5567version = "2.0.1"5567version = "2.0.1"5568source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5568source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5569dependencies = [5569dependencies = [5570 "bytes 0.5.6",5570 "bytes 0.5.6",5571 "fnv",5571 "fnv",5572 "futures 0.3.12",5572 "futures 0.3.12",5573 "futures-timer 3.0.2",5573 "futures-timer 3.0.2",5574 "hyper 0.13.9",5574 "hyper 0.13.10",5575 "hyper-rustls",5575 "hyper-rustls",5576 "log",5576 "log",5577 "num_cpus",5577 "num_cpus",5592[[package]]5592[[package]]5593name = "sc-peerset"5593name = "sc-peerset"5594version = "2.0.1"5594version = "2.0.1"5595source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5595source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5596dependencies = [5596dependencies = [5597 "futures 0.3.12",5597 "futures 0.3.12",5598 "libp2p",5598 "libp2p",5605[[package]]5605[[package]]5606name = "sc-proposer-metrics"5606name = "sc-proposer-metrics"5607version = "0.8.1"5607version = "0.8.1"5608source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5608source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5609dependencies = [5609dependencies = [5610 "log",5610 "log",5611 "substrate-prometheus-endpoint",5611 "substrate-prometheus-endpoint",5614[[package]]5614[[package]]5615name = "sc-rpc"5615name = "sc-rpc"5616version = "2.0.1"5616version = "2.0.1"5617source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5617source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5618dependencies = [5618dependencies = [5619 "futures 0.3.12",5619 "futures 0.3.12",5620 "hash-db",5620 "hash-db",5648[[package]]5648[[package]]5649name = "sc-rpc-api"5649name = "sc-rpc-api"5650version = "0.8.1"5650version = "0.8.1"5651source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5651source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5652dependencies = [5652dependencies = [5653 "derive_more",5653 "derive_more",5654 "futures 0.3.12",5654 "futures 0.3.12",5672[[package]]5672[[package]]5673name = "sc-rpc-server"5673name = "sc-rpc-server"5674version = "2.0.1"5674version = "2.0.1"5675source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5675source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5676dependencies = [5676dependencies = [5677 "futures 0.1.30",5677 "futures 0.1.30",5678 "jsonrpc-core",5678 "jsonrpc-core",5690[[package]]5690[[package]]5691name = "sc-service"5691name = "sc-service"5692version = "0.8.1"5692version = "0.8.1"5693source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5693source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5694dependencies = [5694dependencies = [5695 "directories 3.0.1",5695 "directories 3.0.1",5696 "exit-future",5696 "exit-future",5753[[package]]5753[[package]]5754name = "sc-state-db"5754name = "sc-state-db"5755version = "0.8.1"5755version = "0.8.1"5756source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5756source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5757dependencies = [5757dependencies = [5758 "log",5758 "log",5759 "parity-scale-codec",5759 "parity-scale-codec",5768[[package]]5768[[package]]5769name = "sc-telemetry"5769name = "sc-telemetry"5770version = "2.0.1"5770version = "2.0.1"5771source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5771source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5772dependencies = [5772dependencies = [5773 "chrono",5773 "chrono",5774 "futures 0.3.12",5774 "futures 0.3.12",5790[[package]]5790[[package]]5791name = "sc-tracing"5791name = "sc-tracing"5792version = "2.0.1"5792version = "2.0.1"5793source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5793source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5794dependencies = [5794dependencies = [5795 "ansi_term 0.12.1",5795 "ansi_term 0.12.1",5796 "atty",5796 "atty",5818[[package]]5818[[package]]5819name = "sc-tracing-proc-macro"5819name = "sc-tracing-proc-macro"5820version = "2.0.0"5820version = "2.0.0"5821source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5821source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5822dependencies = [5822dependencies = [5823 "proc-macro-crate",5823 "proc-macro-crate",5824 "proc-macro2",5824 "proc-macro2",5829[[package]]5829[[package]]5830name = "sc-transaction-graph"5830name = "sc-transaction-graph"5831version = "2.0.1"5831version = "2.0.1"5832source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5832source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5833dependencies = [5833dependencies = [5834 "derive_more",5834 "derive_more",5835 "futures 0.3.12",5835 "futures 0.3.12",5851[[package]]5851[[package]]5852name = "sc-transaction-pool"5852name = "sc-transaction-pool"5853version = "2.0.1"5853version = "2.0.1"5854source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"5854source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"5855dependencies = [5855dependencies = [5856 "futures 0.3.12",5856 "futures 0.3.12",5857 "futures-diagnose",5857 "futures-diagnose",601460146015[[package]]6015[[package]]6016name = "serde_json"6016name = "serde_json"6017version = "1.0.61"6017version = "1.0.62"6018source = "registry+https://github.com/rust-lang/crates.io-index"6018source = "registry+https://github.com/rust-lang/crates.io-index"6019checksum = "4fceb2595057b6891a4ee808f70054bd2d12f0e97f1cbb78689b59f676df325a"6019checksum = "ea1c6153794552ea7cf7cf63b1231a25de00ec90db326ba6264440fa08e31486"6020dependencies = [6020dependencies = [6021 "itoa",6021 "itoa",6022 "ryu",6022 "ryu",610261026103[[package]]6103[[package]]6104name = "signal-hook"6104name = "signal-hook"6105version = "0.1.17"6105version = "0.3.4"6106source = "registry+https://github.com/rust-lang/crates.io-index"6106source = "registry+https://github.com/rust-lang/crates.io-index"6107checksum = "7e31d442c16f047a671b5a71e2161d6e68814012b7f5379d269ebd915fac2729"6107checksum = "780f5e3fe0c66f67197236097d89de1e86216f1f6fdeaf47c442f854ab46c240"6108dependencies = [6108dependencies = [6109 "libc",6109 "libc",6110 "signal-hook-registry",6110 "signal-hook-registry",6206[[package]]6206[[package]]6207name = "sp-allocator"6207name = "sp-allocator"6208version = "2.0.1"6208version = "2.0.1"6209source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6209source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6210dependencies = [6210dependencies = [6211 "log",6211 "log",6212 "sp-core",6212 "sp-core",6218[[package]]6218[[package]]6219name = "sp-api"6219name = "sp-api"6220version = "2.0.1"6220version = "2.0.1"6221source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6221source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6222dependencies = [6222dependencies = [6223 "hash-db",6223 "hash-db",6224 "parity-scale-codec",6224 "parity-scale-codec",6234[[package]]6234[[package]]6235name = "sp-api-proc-macro"6235name = "sp-api-proc-macro"6236version = "2.0.1"6236version = "2.0.1"6237source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6237source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6238dependencies = [6238dependencies = [6239 "blake2-rfc",6239 "blake2-rfc",6240 "proc-macro-crate",6240 "proc-macro-crate",6246[[package]]6246[[package]]6247name = "sp-application-crypto"6247name = "sp-application-crypto"6248version = "2.0.1"6248version = "2.0.1"6249source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6249source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6250dependencies = [6250dependencies = [6251 "parity-scale-codec",6251 "parity-scale-codec",6252 "serde",6252 "serde",6258[[package]]6258[[package]]6259name = "sp-arithmetic"6259name = "sp-arithmetic"6260version = "2.0.1"6260version = "2.0.1"6261source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6261source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6262dependencies = [6262dependencies = [6263 "integer-sqrt",6263 "integer-sqrt",6264 "num-traits",6264 "num-traits",6271[[package]]6271[[package]]6272name = "sp-authorship"6272name = "sp-authorship"6273version = "2.0.1"6273version = "2.0.1"6274source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6274source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6275dependencies = [6275dependencies = [6276 "parity-scale-codec",6276 "parity-scale-codec",6277 "sp-inherents",6277 "sp-inherents",6282[[package]]6282[[package]]6283name = "sp-block-builder"6283name = "sp-block-builder"6284version = "2.0.1"6284version = "2.0.1"6285source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6285source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6286dependencies = [6286dependencies = [6287 "parity-scale-codec",6287 "parity-scale-codec",6288 "sp-api",6288 "sp-api",6294[[package]]6294[[package]]6295name = "sp-blockchain"6295name = "sp-blockchain"6296version = "2.0.1"6296version = "2.0.1"6297source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6297source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6298dependencies = [6298dependencies = [6299 "futures 0.3.12",6299 "futures 0.3.12",6300 "log",6300 "log",6312[[package]]6312[[package]]6313name = "sp-chain-spec"6313name = "sp-chain-spec"6314version = "2.0.1"6314version = "2.0.1"6315source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6315source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6316dependencies = [6316dependencies = [6317 "serde",6317 "serde",6318 "serde_json",6318 "serde_json",6321[[package]]6321[[package]]6322name = "sp-consensus"6322name = "sp-consensus"6323version = "0.8.1"6323version = "0.8.1"6324source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6324source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6325dependencies = [6325dependencies = [6326 "futures 0.3.12",6326 "futures 0.3.12",6327 "futures-timer 3.0.2",6327 "futures-timer 3.0.2",6347[[package]]6347[[package]]6348name = "sp-consensus-aura"6348name = "sp-consensus-aura"6349version = "0.8.1"6349version = "0.8.1"6350source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6350source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6351dependencies = [6351dependencies = [6352 "parity-scale-codec",6352 "parity-scale-codec",6353 "sp-api",6353 "sp-api",6361[[package]]6361[[package]]6362name = "sp-consensus-babe"6362name = "sp-consensus-babe"6363version = "0.8.1"6363version = "0.8.1"6364source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6364source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6365dependencies = [6365dependencies = [6366 "merlin",6366 "merlin",6367 "parity-scale-codec",6367 "parity-scale-codec",6381[[package]]6381[[package]]6382name = "sp-consensus-slots"6382name = "sp-consensus-slots"6383version = "0.8.1"6383version = "0.8.1"6384source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6384source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6385dependencies = [6385dependencies = [6386 "parity-scale-codec",6386 "parity-scale-codec",6387 "sp-runtime",6387 "sp-runtime",6390[[package]]6390[[package]]6391name = "sp-consensus-vrf"6391name = "sp-consensus-vrf"6392version = "0.8.1"6392version = "0.8.1"6393source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6393source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6394dependencies = [6394dependencies = [6395 "parity-scale-codec",6395 "parity-scale-codec",6396 "schnorrkel",6396 "schnorrkel",6402[[package]]6402[[package]]6403name = "sp-core"6403name = "sp-core"6404version = "2.0.1"6404version = "2.0.1"6405source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6405source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6406dependencies = [6406dependencies = [6407 "base58",6407 "base58",6408 "blake2-rfc",6408 "blake2-rfc",6446[[package]]6446[[package]]6447name = "sp-database"6447name = "sp-database"6448version = "2.0.1"6448version = "2.0.1"6449source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6449source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6450dependencies = [6450dependencies = [6451 "kvdb",6451 "kvdb",6452 "parking_lot 0.11.1",6452 "parking_lot 0.11.1",6455[[package]]6455[[package]]6456name = "sp-debug-derive"6456name = "sp-debug-derive"6457version = "2.0.1"6457version = "2.0.1"6458source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6458source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6459dependencies = [6459dependencies = [6460 "proc-macro2",6460 "proc-macro2",6461 "quote",6461 "quote",6465[[package]]6465[[package]]6466name = "sp-externalities"6466name = "sp-externalities"6467version = "0.8.1"6467version = "0.8.1"6468source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6468source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6469dependencies = [6469dependencies = [6470 "environmental",6470 "environmental",6471 "parity-scale-codec",6471 "parity-scale-codec",6476[[package]]6476[[package]]6477name = "sp-finality-grandpa"6477name = "sp-finality-grandpa"6478version = "2.0.1"6478version = "2.0.1"6479source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6479source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6480dependencies = [6480dependencies = [6481 "finality-grandpa",6481 "finality-grandpa",6482 "log",6482 "log",6493[[package]]6493[[package]]6494name = "sp-inherents"6494name = "sp-inherents"6495version = "2.0.1"6495version = "2.0.1"6496source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6496source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6497dependencies = [6497dependencies = [6498 "parity-scale-codec",6498 "parity-scale-codec",6499 "parking_lot 0.11.1",6499 "parking_lot 0.11.1",6505[[package]]6505[[package]]6506name = "sp-io"6506name = "sp-io"6507version = "2.0.1"6507version = "2.0.1"6508source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6508source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6509dependencies = [6509dependencies = [6510 "futures 0.3.12",6510 "futures 0.3.12",6511 "hash-db",6511 "hash-db",6529[[package]]6529[[package]]6530name = "sp-keyring"6530name = "sp-keyring"6531version = "2.0.1"6531version = "2.0.1"6532source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6532source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6533dependencies = [6533dependencies = [6534 "lazy_static",6534 "lazy_static",6535 "sp-core",6535 "sp-core",6540[[package]]6540[[package]]6541name = "sp-keystore"6541name = "sp-keystore"6542version = "0.8.0"6542version = "0.8.0"6543source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6543source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6544dependencies = [6544dependencies = [6545 "async-trait",6545 "async-trait",6546 "derive_more",6546 "derive_more",6557[[package]]6557[[package]]6558name = "sp-offchain"6558name = "sp-offchain"6559version = "2.0.1"6559version = "2.0.1"6560source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6560source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6561dependencies = [6561dependencies = [6562 "sp-api",6562 "sp-api",6563 "sp-core",6563 "sp-core",6567[[package]]6567[[package]]6568name = "sp-panic-handler"6568name = "sp-panic-handler"6569version = "2.0.1"6569version = "2.0.1"6570source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6570source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6571dependencies = [6571dependencies = [6572 "backtrace",6572 "backtrace",6573]6573]657465746575[[package]]6575[[package]]6576name = "sp-rpc"6576name = "sp-rpc"6577version = "2.0.1"6577version = "2.0.1"6578source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6578source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6579dependencies = [6579dependencies = [6580 "serde",6580 "serde",6581 "sp-core",6581 "sp-core",6584[[package]]6584[[package]]6585name = "sp-runtime"6585name = "sp-runtime"6586version = "2.0.1"6586version = "2.0.1"6587source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6587source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6588dependencies = [6588dependencies = [6589 "either",6589 "either",6590 "hash256-std-hasher",6590 "hash256-std-hasher",6591 "impl-trait-for-tuples 0.2.0",6591 "impl-trait-for-tuples 0.2.1",6592 "log",6592 "log",6593 "parity-scale-codec",6593 "parity-scale-codec",6594 "parity-util-mem",6594 "parity-util-mem",6605[[package]]6605[[package]]6606name = "sp-runtime-interface"6606name = "sp-runtime-interface"6607version = "2.0.1"6607version = "2.0.1"6608source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6608source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6609dependencies = [6609dependencies = [6610 "impl-trait-for-tuples 0.2.0",6610 "impl-trait-for-tuples 0.2.1",6611 "parity-scale-codec",6611 "parity-scale-codec",6612 "primitive-types",6612 "primitive-types",6613 "sp-externalities",6613 "sp-externalities",6622[[package]]6622[[package]]6623name = "sp-runtime-interface-proc-macro"6623name = "sp-runtime-interface-proc-macro"6624version = "2.0.1"6624version = "2.0.1"6625source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6625source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6626dependencies = [6626dependencies = [6627 "Inflector",6627 "Inflector",6628 "proc-macro-crate",6628 "proc-macro-crate",6634[[package]]6634[[package]]6635name = "sp-sandbox"6635name = "sp-sandbox"6636version = "0.8.1"6636version = "0.8.1"6637source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6637source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6638dependencies = [6638dependencies = [6639 "parity-scale-codec",6639 "parity-scale-codec",6640 "sp-core",6640 "sp-core",6647[[package]]6647[[package]]6648name = "sp-serializer"6648name = "sp-serializer"6649version = "2.0.1"6649version = "2.0.1"6650source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6650source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6651dependencies = [6651dependencies = [6652 "serde",6652 "serde",6653 "serde_json",6653 "serde_json",6656[[package]]6656[[package]]6657name = "sp-session"6657name = "sp-session"6658version = "2.0.1"6658version = "2.0.1"6659source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6659source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6660dependencies = [6660dependencies = [6661 "parity-scale-codec",6661 "parity-scale-codec",6662 "sp-api",6662 "sp-api",6669[[package]]6669[[package]]6670name = "sp-staking"6670name = "sp-staking"6671version = "2.0.1"6671version = "2.0.1"6672source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6672source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6673dependencies = [6673dependencies = [6674 "parity-scale-codec",6674 "parity-scale-codec",6675 "sp-runtime",6675 "sp-runtime",6679[[package]]6679[[package]]6680name = "sp-state-machine"6680name = "sp-state-machine"6681version = "0.8.1"6681version = "0.8.1"6682source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6682source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6683dependencies = [6683dependencies = [6684 "hash-db",6684 "hash-db",6685 "log",6685 "log",6701[[package]]6701[[package]]6702name = "sp-std"6702name = "sp-std"6703version = "2.0.1"6703version = "2.0.1"6704source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6704source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"670567056706[[package]]6706[[package]]6707name = "sp-storage"6707name = "sp-storage"6708version = "2.0.1"6708version = "2.0.1"6709source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6709source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6710dependencies = [6710dependencies = [6711 "impl-serde",6711 "impl-serde",6712 "parity-scale-codec",6712 "parity-scale-codec",6719[[package]]6719[[package]]6720name = "sp-tasks"6720name = "sp-tasks"6721version = "2.0.0"6721version = "2.0.0"6722source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6722source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6723dependencies = [6723dependencies = [6724 "log",6724 "log",6725 "sp-core",6725 "sp-core",6732[[package]]6732[[package]]6733name = "sp-timestamp"6733name = "sp-timestamp"6734version = "2.0.1"6734version = "2.0.1"6735source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6735source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6736dependencies = [6736dependencies = [6737 "impl-trait-for-tuples 0.2.0",6737 "impl-trait-for-tuples 0.2.1",6738 "parity-scale-codec",6738 "parity-scale-codec",6739 "sp-api",6739 "sp-api",6740 "sp-inherents",6740 "sp-inherents",6746[[package]]6746[[package]]6747name = "sp-tracing"6747name = "sp-tracing"6748version = "2.0.1"6748version = "2.0.1"6749source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6749source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6750dependencies = [6750dependencies = [6751 "log",6751 "log",6752 "parity-scale-codec",6752 "parity-scale-codec",6759[[package]]6759[[package]]6760name = "sp-transaction-pool"6760name = "sp-transaction-pool"6761version = "2.0.1"6761version = "2.0.1"6762source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6762source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6763dependencies = [6763dependencies = [6764 "derive_more",6764 "derive_more",6765 "futures 0.3.12",6765 "futures 0.3.12",6775[[package]]6775[[package]]6776name = "sp-trie"6776name = "sp-trie"6777version = "2.0.1"6777version = "2.0.1"6778source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6778source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6779dependencies = [6779dependencies = [6780 "hash-db",6780 "hash-db",6781 "memory-db",6781 "memory-db",6789[[package]]6789[[package]]6790name = "sp-utils"6790name = "sp-utils"6791version = "2.0.1"6791version = "2.0.1"6792source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6792source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6793dependencies = [6793dependencies = [6794 "futures 0.3.12",6794 "futures 0.3.12",6795 "futures-core",6795 "futures-core",6801[[package]]6801[[package]]6802name = "sp-version"6802name = "sp-version"6803version = "2.0.1"6803version = "2.0.1"6804source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6804source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6805dependencies = [6805dependencies = [6806 "impl-serde",6806 "impl-serde",6807 "parity-scale-codec",6807 "parity-scale-codec",6813[[package]]6813[[package]]6814name = "sp-wasm-interface"6814name = "sp-wasm-interface"6815version = "2.0.1"6815version = "2.0.1"6816source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6816source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6817dependencies = [6817dependencies = [6818 "impl-trait-for-tuples 0.2.0",6818 "impl-trait-for-tuples 0.2.1",6819 "parity-scale-codec",6819 "parity-scale-codec",6820 "sp-std",6820 "sp-std",6821 "wasmi",6821 "wasmi",6934[[package]]6934[[package]]6935name = "substrate-build-script-utils"6935name = "substrate-build-script-utils"6936version = "2.0.1"6936version = "2.0.1"6937source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6937source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6938dependencies = [6938dependencies = [6939 "platforms",6939 "platforms",6940]6940]694169416942[[package]]6942[[package]]6943name = "substrate-frame-rpc-system"6943name = "substrate-frame-rpc-system"6944version = "2.0.1"6944version = "2.0.1"6945source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6945source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6946dependencies = [6946dependencies = [6947 "frame-system-rpc-runtime-api",6947 "frame-system-rpc-runtime-api",6948 "futures 0.3.12",6948 "futures 0.3.12",6965[[package]]6965[[package]]6966name = "substrate-prometheus-endpoint"6966name = "substrate-prometheus-endpoint"6967version = "0.8.1"6967version = "0.8.1"6968source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"6968source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#c8641b52ea9acfd2cee6df8653b453edbe0bbed7"6969dependencies = [6969dependencies = [6970 "async-std",6970 "async-std",6971 "derive_more",6971 "derive_more",6972 "futures-util",6972 "futures-util",6973 "hyper 0.13.9",6973 "hyper 0.13.10",6974 "log",6974 "log",6975 "prometheus",6975 "prometheus",6976 "tokio 0.2.25",6976 "tokio 0.2.25",759975997600[[package]]7600[[package]]7601name = "unicode-normalization"7601name = "unicode-normalization"7602version = "0.1.16"7602version = "0.1.17"7603source = "registry+https://github.com/rust-lang/crates.io-index"7603source = "registry+https://github.com/rust-lang/crates.io-index"7604checksum = "a13e63ab62dbe32aeee58d1c5408d35c36c392bba5d9d3142287219721afe606"7604checksum = "07fbfce1c8a97d547e8b5334978438d9d6ec8c20e38f56d4a4374d181493eaef"7605dependencies = [7605dependencies = [7606 "tinyvec",7606 "tinyvec",7607]7607]7676checksum = "5909f2b0817350449ed73e8bcd81c8c3c8d9a7a5d8acba4b27db277f1868976e"7676checksum = "5909f2b0817350449ed73e8bcd81c8c3c8d9a7a5d8acba4b27db277f1868976e"7677dependencies = [7677dependencies = [7678 "form_urlencoded",7678 "form_urlencoded",7679 "idna 0.2.0",7679 "idna 0.2.1",7680 "matches",7680 "matches",7681 "percent-encoding 2.1.0",7681 "percent-encoding 2.1.0",7682]7682]Dockerfilediffbeforeafterboth1# ===== BUILD ======1# ===== BUILD ======223FROM phusion/baseimage:0.10.2 as builder3FROM phusion/baseimage:18.04-1.0.0 as builder4LABEL maintainer="gz@usetech.com"4LABEL maintainer="gz@usetech.com"556ENV WASM_TOOLCHAIN=nightly-2020-10-016ENV WASM_TOOLCHAIN=nightly-2021-01-27778ARG PROFILE=release8ARG PROFILE=release99373738# ===== RUN ======38# ===== RUN ======393940FROM phusion/baseimage:0.10.240FROM phusion/baseimage:18.04-1.0.041ARG PROFILE=release41ARG PROFILE=release424243COPY --from=builder /nft_parachain/target/$PROFILE/nft /usr/local/bin43COPY --from=builder /nft_parachain/target/$PROFILE/nft /usr/local/binpallets/nft/src/lib.rsdiffbeforeafterboth54mod default_weights;54mod default_weights;555556pub const MAX_DECIMAL_POINTS: DecimalPoints = 30;56pub const MAX_DECIMAL_POINTS: DecimalPoints = 30;57pub const MAX_REFUNGIBLE_PIECES: u128 = 1_000_000_000_000_000_000_000;57pub const MAX_SPONSOR_TIMEOUT: u32 = 10_368_000;58pub const MAX_SPONSOR_TIMEOUT: u32 = 10_368_000;58pub const MAX_TOKEN_OWNERSHIP: u32 = 10_000_000;59pub const MAX_TOKEN_OWNERSHIP: u32 = 10_000_000;596071 NFT,72 NFT,72 // decimal points73 // decimal points73 Fungible(DecimalPoints),74 Fungible(DecimalPoints),74 // decimal points75 ReFungible(DecimalPoints),75 ReFungible,76}76}777778impl Default for CollectionMode {78impl Default for CollectionMode {87 CollectionMode::Invalid => 0,87 CollectionMode::Invalid => 0,88 CollectionMode::NFT => 1,88 CollectionMode::NFT => 1,89 CollectionMode::Fungible(_) => 2,89 CollectionMode::Fungible(_) => 2,90 CollectionMode::ReFungible(_) => 3,90 CollectionMode::ReFungible => 3,91 }91 }92 }92 }93}93}185185186 // Timeouts for item types in passed blocks186 // Timeouts for item types in passed blocks187 pub sponsor_transfer_timeout: u32,187 pub sponsor_transfer_timeout: u32,188 pub owner_can_transfer: bool,189 pub owner_can_destroy: bool,188}190}189191190impl Default for CollectionLimits {192impl Default for CollectionLimits {193 account_token_ownership_limit: 10_000_000, 195 account_token_ownership_limit: 10_000_000, 194 token_limit: u32::max_value(),196 token_limit: u32::max_value(),195 sponsored_data_size: u32::max_value(), 197 sponsored_data_size: u32::max_value(), 196 sponsor_transfer_timeout: 14400 }198 sponsor_transfer_timeout: 14400,199 owner_can_transfer: true,200 owner_can_destroy: true201 }197 }202 }198}203}266pub struct CreateReFungibleData {271pub struct CreateReFungibleData {267 pub const_data: Vec<u8>,272 pub const_data: Vec<u8>,268 pub variable_data: Vec<u8>,273 pub variable_data: Vec<u8>,274 pub pieces: u128,269}275}270276271#[derive(Encode, Decode, Debug, Clone, PartialEq)]277#[derive(Encode, Decode, Debug, Clone, PartialEq)]377 /// Collection limit bounds per collection exceeded383 /// Collection limit bounds per collection exceeded378 CollectionLimitBoundsExceeded,384 CollectionLimitBoundsExceeded,379 /// Schema data size limit bound exceeded385 /// Schema data size limit bound exceeded380 SchemaDataLimitExceeded386 SchemaDataLimitExceeded,387 /// Maximum refungibility exceeded388 WrongRefungiblePieces381 }389 }382}390}383391548556549 let decimal_points = match mode {557 let decimal_points = match mode {550 CollectionMode::Fungible(points) => points,558 CollectionMode::Fungible(points) => points,551 CollectionMode::ReFungible(points) => points,552 _ => 0559 _ => 0553 };560 };554561933940934 Self::can_create_items_in_collection(collection_id, &target_collection, &sender, &owner)?;941 Self::can_create_items_in_collection(collection_id, &target_collection, &sender, &owner)?;935 Self::validate_create_item_args(&target_collection, &data)?;942 Self::validate_create_item_args(&target_collection, &data)?;936 Self::create_item_no_validation(collection_id, &target_collection, owner, data)?;943 Self::create_item_no_validation(collection_id, owner, data)?;937944938 Ok(())945 Ok(())939 }946 }973 Self::validate_create_item_args(&target_collection, data)?;980 Self::validate_create_item_args(&target_collection, data)?;974 }981 }975 for data in &items_data {982 for data in &items_data {976 Self::create_item_no_validation(collection_id, &target_collection, owner.clone(), data.clone())?;983 Self::create_item_no_validation(collection_id, owner.clone(), data.clone())?;977 }984 }978985979 Ok(())986 Ok(())1012 {1019 {1013 CollectionMode::NFT => Self::burn_nft_item(collection_id, item_id)?,1020 CollectionMode::NFT => Self::burn_nft_item(collection_id, item_id)?,1014 CollectionMode::Fungible(_) => Self::burn_fungible_item(&sender, collection_id, value)?,1021 CollectionMode::Fungible(_) => Self::burn_fungible_item(&sender, collection_id, value)?,1015 CollectionMode::ReFungible(_) => Self::burn_refungible_item(collection_id, item_id, &sender)?,1022 CollectionMode::ReFungible => Self::burn_refungible_item(collection_id, item_id, &sender)?,1016 _ => ()1023 _ => ()1017 };1024 };101810251154 {1161 {1155 CollectionMode::NFT => Self::transfer_nft(collection_id, item_id, from, recipient)?,1162 CollectionMode::NFT => Self::transfer_nft(collection_id, item_id, from, recipient)?,1156 CollectionMode::Fungible(_) => Self::transfer_fungible(collection_id, value, &from, &recipient)?,1163 CollectionMode::Fungible(_) => Self::transfer_fungible(collection_id, value, &from, &recipient)?,1157 CollectionMode::ReFungible(_) => Self::transfer_refungible(collection_id, item_id, value, from.clone(), recipient)?,1164 CollectionMode::ReFungible => Self::transfer_refungible(collection_id, item_id, value, from.clone(), recipient)?,1158 _ => ()1165 _ => ()1159 };1166 };116011671211 match target_collection.mode1218 match target_collection.mode1212 {1219 {1213 CollectionMode::NFT => Self::set_nft_variable_data(collection_id, item_id, data)?,1220 CollectionMode::NFT => Self::set_nft_variable_data(collection_id, item_id, data)?,1214 CollectionMode::ReFungible(_) => Self::set_re_fungible_variable_data(collection_id, item_id, data)?,1221 CollectionMode::ReFungible => Self::set_re_fungible_variable_data(collection_id, item_id, data)?,1215 CollectionMode::Fungible(_) => fail!(Error::<T>::CantStoreMetadataInFungibleTokens),1222 CollectionMode::Fungible(_) => fail!(Error::<T>::CantStoreMetadataInFungibleTokens),1216 _ => fail!(Error::<T>::UnexpectedCollectionType)1223 _ => fail!(Error::<T>::UnexpectedCollectionType)1217 };1224 };1551 {1558 {1552 CollectionMode::NFT => Self::transfer_nft(collection_id, item_id, sender.clone(), recipient)?,1559 CollectionMode::NFT => Self::transfer_nft(collection_id, item_id, sender.clone(), recipient)?,1553 CollectionMode::Fungible(_) => Self::transfer_fungible(collection_id, value, &sender, &recipient)?,1560 CollectionMode::Fungible(_) => Self::transfer_fungible(collection_id, value, &sender, &recipient)?,1554 CollectionMode::ReFungible(_) => Self::transfer_refungible(collection_id, item_id, value, sender.clone(), recipient)?,1561 CollectionMode::ReFungible => Self::transfer_refungible(collection_id, item_id, value, sender.clone(), recipient)?,1555 _ => ()1562 _ => ()1556 };1563 };155715641603 fail!(Error::<T>::NotFungibleDataUsedToMintFungibleCollectionToken);1610 fail!(Error::<T>::NotFungibleDataUsedToMintFungibleCollectionToken);1604 }1611 }1605 },1612 },1606 CollectionMode::ReFungible(_) => {1613 CollectionMode::ReFungible => {1607 if let CreateItemData::ReFungible(data) = data {1614 if let CreateItemData::ReFungible(data) = data {160816151609 // check sizes1616 // check sizes1610 ensure!(ChainLimit::get().custom_data_limit >= data.const_data.len() as u32, Error::<T>::TokenConstDataLimitExceeded);1617 ensure!(ChainLimit::get().custom_data_limit >= data.const_data.len() as u32, Error::<T>::TokenConstDataLimitExceeded);1611 ensure!(ChainLimit::get().custom_data_limit >= data.variable_data.len() as u32, Error::<T>::TokenVariableDataLimitExceeded);1618 ensure!(ChainLimit::get().custom_data_limit >= data.variable_data.len() as u32, Error::<T>::TokenVariableDataLimitExceeded);16191620 // Check refungibility limits1621 ensure!(data.pieces <= MAX_REFUNGIBLE_PIECES, Error::<T>::WrongRefungiblePieces);1622 ensure!(data.pieces > 0, Error::<T>::WrongRefungiblePieces);1612 } else {1623 } else {1613 fail!(Error::<T>::NotReFungibleDataUsedToMintReFungibleCollectionToken);1624 fail!(Error::<T>::NotReFungibleDataUsedToMintReFungibleCollectionToken);1614 }1625 }1619 Ok(())1630 Ok(())1620 }1631 }162116321622 fn create_item_no_validation(collection_id: CollectionId, collection: &CollectionType<T::AccountId>, owner: T::AccountId, data: CreateItemData) -> DispatchResult {1633 fn create_item_no_validation(collection_id: CollectionId, owner: T::AccountId, data: CreateItemData) -> DispatchResult {1623 match data1634 match data1624 {1635 {1625 CreateItemData::NFT(data) => {1636 CreateItemData::NFT(data) => {1636 },1647 },1637 CreateItemData::ReFungible(data) => {1648 CreateItemData::ReFungible(data) => {1638 let mut owner_list = Vec::new();1649 let mut owner_list = Vec::new();1639 let value = (10 as u128).pow(collection.decimal_points as u32);1640 owner_list.push(Ownership {owner: owner.clone(), fraction: value});1650 owner_list.push(Ownership {owner: owner.clone(), fraction: data.pieces});164116511642 let item = ReFungibleItemType {1652 let item = ReFungibleItemType {1643 owner: owner_list,1653 owner: owner_list,1866 CollectionMode::Fungible(_) => {1876 CollectionMode::Fungible(_) => {1867 <FungibleItemList<T>>::contains_key(collection_id, &subject)1877 <FungibleItemList<T>>::contains_key(collection_id, &subject)1868 }1878 }1869 CollectionMode::ReFungible(_) => {1879 CollectionMode::ReFungible => {1870 <ReFungibleItemList<T>>::get(collection_id, item_id)1880 <ReFungibleItemList<T>>::get(collection_id, item_id)1871 .owner1881 .owner1872 .iter()1882 .iter()1895 {1905 {1896 CollectionMode::NFT => <NftItemList<T>>::contains_key(collection_id, item_id),1906 CollectionMode::NFT => <NftItemList<T>>::contains_key(collection_id, item_id),1897 CollectionMode::Fungible(_) => <FungibleItemList<T>>::contains_key(collection_id, owner),1907 CollectionMode::Fungible(_) => <FungibleItemList<T>>::contains_key(collection_id, owner),1898 CollectionMode::ReFungible(_) => <ReFungibleItemList<T>>::contains_key(collection_id, item_id),1908 CollectionMode::ReFungible => <ReFungibleItemList<T>>::contains_key(collection_id, item_id),1899 _ => false1909 _ => false1900 };1910 };19011911242124312422 sponsored2432 sponsored2423 }2433 }2424 CollectionMode::ReFungible(_) => {2434 CollectionMode::ReFungible => {2425 2435 2426 // get correct limit2436 // get correct limit2427 let limit: u32 = if collection_limits.sponsor_transfer_timeout > 0 {2437 let limit: u32 = if collection_limits.sponsor_transfer_timeout > 0 {pallets/nft/src/tests.rsdiffbeforeafterboth35}35}363637fn default_re_fungible_data () -> CreateReFungibleData {37fn default_re_fungible_data () -> CreateReFungibleData {38 CreateReFungibleData { const_data: vec![1, 2, 3], variable_data: vec![3, 2, 1] }38 CreateReFungibleData { const_data: vec![1, 2, 3], variable_data: vec![3, 2, 1], pieces: 1023 }39}39}404041fn create_test_collection_for_owner(mode: &CollectionMode, owner: u64, id: CollectionId) -> CollectionId {41fn create_test_collection_for_owner(mode: &CollectionMode, owner: u64, id: CollectionId) -> CollectionId {113 }); 113 }); 114}114}115116#[test]117fn create_re_fungible_collection_fails_with_large_decimal_numbers() {118 new_test_ext().execute_with(|| {119 default_limits();120121 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();122 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();123 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();124125 let origin1 = Origin::signed(1);126 assert_noop!(TemplateModule::create_collection(127 origin1,128 col_name1,129 col_desc1,130 token_prefix1,131 CollectionMode::ReFungible(MAX_DECIMAL_POINTS + 1)132 ), Error::<Test>::CollectionDecimalPointLimitExceeded);133 });134}135115136#[test]116#[test]137fn create_nft_item() {117fn create_nft_item() {176fn create_refungible_item() {156fn create_refungible_item() {177 new_test_ext().execute_with(|| {157 new_test_ext().execute_with(|| {178 default_limits();158 default_limits();179 let collection_id = create_test_collection(&CollectionMode::ReFungible(3), 1);159 let collection_id = create_test_collection(&CollectionMode::ReFungible, 1);180160181 let data = default_re_fungible_data();161 let data = default_re_fungible_data();182 create_test_item(collection_id, &data.clone().into());162 create_test_item(collection_id, &data.clone().into());192 TemplateModule::refungible_item_id(collection_id, 1).owner[0],172 TemplateModule::refungible_item_id(collection_id, 1).owner[0],193 Ownership {173 Ownership {194 owner: 1,174 owner: 1,195 fraction: 1000175 fraction: 1023196 }176 }197 );177 );198 });178 });203 new_test_ext().execute_with(|| {183 new_test_ext().execute_with(|| {204 default_limits();184 default_limits();205 185 206 create_test_collection(&CollectionMode::ReFungible(3), 1);186 create_test_collection(&CollectionMode::ReFungible, 1);207187208 let origin1 = Origin::signed(1);188 let origin1 = Origin::signed(1);209189224 item.owner[0],204 item.owner[0],225 Ownership {205 Ownership {226 owner: 1,206 owner: 1,227 fraction: 1000207 fraction: 1023228 }208 }229 );209 );230 }210 }312 new_test_ext().execute_with(|| {292 new_test_ext().execute_with(|| {313 default_limits();293 default_limits();314 294 315 let collection_id = create_test_collection(&CollectionMode::ReFungible(3), 1);295 let collection_id = create_test_collection(&CollectionMode::ReFungible, 1);316296317 let data = default_re_fungible_data();297 let data = default_re_fungible_data();318 create_test_item(collection_id, &data.clone().into());298 create_test_item(collection_id, &data.clone().into());331 TemplateModule::refungible_item_id(collection_id, 1).owner[0],311 TemplateModule::refungible_item_id(collection_id, 1).owner[0],332 Ownership {312 Ownership {333 owner: 1,313 owner: 1,334 fraction: 1000314 fraction: 1023335 }315 }336 );316 );337 assert_eq!(TemplateModule::balance_count(1, 1), 1000);317 assert_eq!(TemplateModule::balance_count(1, 1), 1023);338 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);318 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);339319340 // change owner scenario320 // change owner scenario341 assert_ok!(TemplateModule::transfer(origin1.clone(), 2, 1, 1, 1000));321 assert_ok!(TemplateModule::transfer(origin1.clone(), 2, 1, 1, 1023));342 assert_eq!(322 assert_eq!(343 TemplateModule::refungible_item_id(1, 1).owner[0],323 TemplateModule::refungible_item_id(1, 1).owner[0],344 Ownership {324 Ownership {345 owner: 2,325 owner: 2,346 fraction: 1000326 fraction: 1023347 }327 }348 );328 );349 assert_eq!(TemplateModule::balance_count(1, 1), 0);329 assert_eq!(TemplateModule::balance_count(1, 1), 0);350 assert_eq!(TemplateModule::balance_count(1, 2), 1000);330 assert_eq!(TemplateModule::balance_count(1, 2), 1023);351 // assert_eq!(TemplateModule::address_tokens(1, 1), []);331 // assert_eq!(TemplateModule::address_tokens(1, 1), []);352 assert_eq!(TemplateModule::address_tokens(1, 2), [1]);332 assert_eq!(TemplateModule::address_tokens(1, 2), [1]);353333357 TemplateModule::refungible_item_id(1, 1).owner[0],337 TemplateModule::refungible_item_id(1, 1).owner[0],358 Ownership {338 Ownership {359 owner: 2,339 owner: 2,360 fraction: 500340 fraction: 523361 }341 }362 );342 );363 assert_eq!(343 assert_eq!(367 fraction: 500347 fraction: 500368 }348 }369 );349 );370 assert_eq!(TemplateModule::balance_count(1, 2), 500);350 assert_eq!(TemplateModule::balance_count(1, 2), 523);371 assert_eq!(TemplateModule::balance_count(1, 3), 500);351 assert_eq!(TemplateModule::balance_count(1, 3), 500);372 assert_eq!(TemplateModule::address_tokens(1, 2), [1]);352 assert_eq!(TemplateModule::address_tokens(1, 2), [1]);373 assert_eq!(TemplateModule::address_tokens(1, 3), [1]);353 assert_eq!(TemplateModule::address_tokens(1, 3), [1]);378 TemplateModule::refungible_item_id(1, 1).owner[0],358 TemplateModule::refungible_item_id(1, 1).owner[0],379 Ownership {359 Ownership {380 owner: 2,360 owner: 2,381 fraction: 300361 fraction: 323382 }362 }383 );363 );384 assert_eq!(364 assert_eq!(388 fraction: 700368 fraction: 700389 }369 }390 );370 );391 assert_eq!(TemplateModule::balance_count(1, 2), 300);371 assert_eq!(TemplateModule::balance_count(1, 2), 323);392 assert_eq!(TemplateModule::balance_count(1, 3), 700);372 assert_eq!(TemplateModule::balance_count(1, 3), 700);393 assert_eq!(TemplateModule::address_tokens(1, 2), [1]);373 assert_eq!(TemplateModule::address_tokens(1, 2), [1]);394 assert_eq!(TemplateModule::address_tokens(1, 3), [1]);374 assert_eq!(TemplateModule::address_tokens(1, 3), [1]);517 new_test_ext().execute_with(|| {497 new_test_ext().execute_with(|| {518 default_limits();498 default_limits();519 499 520 let collection_id = create_test_collection(&CollectionMode::ReFungible(3), 1);500 let collection_id = create_test_collection(&CollectionMode::ReFungible, 1);521 501 522 let origin1 = Origin::signed(1);502 let origin1 = Origin::signed(1);523 let origin2 = Origin::signed(2);503 let origin2 = Origin::signed(2);524504525 let data = default_re_fungible_data();505 let data = default_re_fungible_data();526 create_test_item(collection_id, &data.into());506 create_test_item(collection_id, &data.into());527507528 assert_eq!(TemplateModule::balance_count(1, 1), 1000);508 assert_eq!(TemplateModule::balance_count(1, 1), 1023);529 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);509 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);530510531 assert_ok!(TemplateModule::set_mint_permission(511 assert_ok!(TemplateModule::set_mint_permission(543 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 3));523 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 3));544524545 // do approve525 // do approve546 assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1, 1000));526 assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1, 1023));547 assert_eq!(TemplateModule::approved(1, (1, 1, 2)), 1000);527 assert_eq!(TemplateModule::approved(1, (1, 1, 2)), 1023);548528549 assert_ok!(TemplateModule::transfer_from(529 assert_ok!(TemplateModule::transfer_from(550 origin2.clone(),530 origin2.clone(),554 1,534 1,555 100535 100556 ));536 ));557 assert_eq!(TemplateModule::balance_count(1, 1), 900);537 assert_eq!(TemplateModule::balance_count(1, 1), 923);558 assert_eq!(TemplateModule::balance_count(1, 3), 100);538 assert_eq!(TemplateModule::balance_count(1, 3), 100);559 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);539 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);560 assert_eq!(TemplateModule::address_tokens(1, 3), [1]);540 assert_eq!(TemplateModule::address_tokens(1, 3), [1]);561541562 assert_eq!(542 assert_eq!(563 TemplateModule::approved(1, (1, 1, 2)),543 TemplateModule::approved(1, (1, 1, 2)),564 900544 923565 );545 );566 });546 });567}547}717 new_test_ext().execute_with(|| {697 new_test_ext().execute_with(|| {718 default_limits();698 default_limits();719 699 720 let collection_id = create_test_collection(&CollectionMode::ReFungible(3), 1);700 let collection_id = create_test_collection(&CollectionMode::ReFungible, 1);721 let origin1 = Origin::signed(1);701 let origin1 = Origin::signed(1);722702723 assert_ok!(TemplateModule::set_mint_permission(703 assert_ok!(TemplateModule::set_mint_permission(738 create_test_item(collection_id, &data.into());718 create_test_item(collection_id, &data.into());739719740 // check balance (collection with id = 1, user id = 2)720 // check balance (collection with id = 1, user id = 2)741 assert_eq!(TemplateModule::balance_count(1, 1), 1000);721 assert_eq!(TemplateModule::balance_count(1, 1), 1023);742722743 // burn item723 // burn item744 assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 1, 1000));724 assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 1, 1023));745 assert_noop!(725 assert_noop!(746 TemplateModule::burn_item(origin1.clone(), 1, 1, 1000),726 TemplateModule::burn_item(origin1.clone(), 1, 1, 1023),747 Error::<Test>::TokenNotFound727 Error::<Test>::TokenNotFound748 );728 );749729807 787 808 let nft_collection_id = create_test_collection(&CollectionMode::NFT, 1);788 let nft_collection_id = create_test_collection(&CollectionMode::NFT, 1);809 let fungible_collection_id = create_test_collection(&CollectionMode::Fungible(3), 2);789 let fungible_collection_id = create_test_collection(&CollectionMode::Fungible(3), 2);810 let re_fungible_collection_id = create_test_collection(&CollectionMode::ReFungible(3), 3);790 let re_fungible_collection_id = create_test_collection(&CollectionMode::ReFungible, 3);811 791 812 // check balance before792 // check balance before813 assert_eq!(TemplateModule::balance_count(nft_collection_id, 1), 0);793 assert_eq!(TemplateModule::balance_count(nft_collection_id, 1), 0);826 // check balance (collection with id = 1, user id = 1)806 // check balance (collection with id = 1, user id = 1)827 assert_eq!(TemplateModule::balance_count(nft_collection_id, 1), 1);807 assert_eq!(TemplateModule::balance_count(nft_collection_id, 1), 1);828 assert_eq!(TemplateModule::balance_count(fungible_collection_id, 1), 5);808 assert_eq!(TemplateModule::balance_count(fungible_collection_id, 1), 5);829 assert_eq!(TemplateModule::balance_count(re_fungible_collection_id, 1), 1000);809 assert_eq!(TemplateModule::balance_count(re_fungible_collection_id, 1), 1023);830 assert_eq!(TemplateModule::nft_item_id(nft_collection_id, 1).owner, 1);810 assert_eq!(TemplateModule::nft_item_id(nft_collection_id, 1).owner, 1);831 assert_eq!(TemplateModule::fungible_item_id(fungible_collection_id, 1).value, 5);811 assert_eq!(TemplateModule::fungible_item_id(fungible_collection_id, 1).value, 5);832 assert_eq!(TemplateModule::refungible_item_id(re_fungible_collection_id, 1).owner[0].owner, 1);812 assert_eq!(TemplateModule::refungible_item_id(re_fungible_collection_id, 1).owner[0].owner, 1);1905 new_test_ext().execute_with(|| {1885 new_test_ext().execute_with(|| {1906 default_limits();1886 default_limits();190718871908 let collection_id = create_test_collection(&CollectionMode::ReFungible(3), 1);1888 let collection_id = create_test_collection(&CollectionMode::ReFungible, 1);190918891910 let origin1 = Origin::signed(1);1890 let origin1 = Origin::signed(1);191118911982 }));1962 }));19831963198419641985 let collection_id = create_test_collection(&CollectionMode::ReFungible(3), 1);1965 let collection_id = create_test_collection(&CollectionMode::ReFungible, 1);198619661987 let origin1 = Origin::signed(1);1967 let origin1 = Origin::signed(1);19881968runtime_types.jsondiffbeforeafterboth1{1{2 "Schedule": {3 "version": "u32",4 "put_code_per_byte_cost": "Gas",5 "grow_mem_cost": "Gas",6 "regular_op_cost": "Gas",7 "return_data_per_byte_cost": "Gas",8 "event_data_per_byte_cost": "Gas",9 "event_per_topic_cost": "Gas",10 "event_base_cost": "Gas",11 "call_base_cost": "Gas",12 "instantiate_base_cost": "Gas",13 "dispatch_base_cost": "Gas",14 "sandbox_data_read_cost": "Gas",15 "sandbox_data_write_cost": "Gas",16 "transfer_cost": "Gas",17 "instantiate_cost": "Gas",18 "max_event_topics": "u32",19 "max_stack_height": "u32",20 "max_memory_pages": "u32",21 "max_table_size": "u32",22 "enable_println": "bool",23 "max_subject_len": "u32"24 },25 "AccessMode": {2 "AccessMode": {26 "_enum": [3 "_enum": [27 "Normal",4 "Normal",34 "Invalid": null,11 "Invalid": null,35 "NFT": null,12 "NFT": null,36 "Fungible": "DecimalPoints",13 "Fungible": "DecimalPoints",37 "ReFungible": "DecimalPoints"14 "ReFungible": null38 }15 }39 },16 },40 "Ownership": {17 "Ownership": {84 },61 },85 "CreateReFungibleData": {62 "CreateReFungibleData": {86 "const_data": "Vec<u8>",63 "const_data": "Vec<u8>",87 "variable_data": "Vec<u8>" 64 "variable_data": "Vec<u8>",65 "pieces": "u128"88 },66 },89 "CreateItemData": {67 "CreateItemData": {90 "_enum": {68 "_enum": {113 "VariableOnChainSchemaLimit": "u32",91 "VariableOnChainSchemaLimit": "u32",114 "ConstOnChainSchemaLimit": "u32"92 "ConstOnChainSchemaLimit": "u32"115 },93 },116 "CollectionLimits": {94 "CollectionLimits": {117 "AccountTokenOwnershipLimit": "u32",95 "AccountTokenOwnershipLimit": "u32",118 "SponsoredMintSize": "u32",96 "SponsoredMintSize": "u32",119 "TokenLimit": "u32",97 "TokenLimit": "u32",120 "SponsorTimeout": "u32"98 "SponsorTimeout": "u32",121 },122 "AccountInfo": "AccountInfoWithProviders",123 "AccountInfoWithProviders": {124 "nonce": "Index",125 "consumers": "RefCount",99 "OwnerCanTransfer": "bool",126 "providers": "RefCount",100 "OwnerCanDestroy": "bool"127 "data": "AccountData"101 }128 }129130 }102}131 tests/src/addCollectionAdmin.test.tsdiffbeforeafterboth1//
2// This file is subject to the terms and conditions defined in
3// file 'LICENSE', which is part of this source code package.
4//
5
1import { ApiPromise } from '@polkadot/api';
6import { ApiPromise } from '@polkadot/api';
2import BN from 'bn.js';
7import BN from 'bn.js';
112 ];
117 ];
113 const collectionId = await createCollectionExpectSuccess();
118 const collectionId = await createCollectionExpectSuccess();
114
119
115 const chainLimit = await api.query.nft.chainLimit() as unknown as { collections_admins_limit: BN };
120 const chainLimit = await api.query.nft.chainLimit() as unknown as { CollectionAdminsLimit: BN };
116 const chainLimitNumber = chainLimit.collections_admins_limit.toNumber();
121 const chainAdminLimit = chainLimit.CollectionAdminsLimit.toNumber();
117 expect(chainLimitNumber).to.be.equal(5);
122 expect(chainAdminLimit).to.be.equal(5);
118
123
119 for (let i = 0; i < chainLimitNumber; i++) {
124 for (let i = 0; i < chainAdminLimit; i++) {
120 const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, accounts[i]);
125 const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, accounts[i]);
121 await submitTransactionAsync(Alice, changeAdminTx);
126 await submitTransactionAsync(Alice, changeAdminTx);
122 const adminListAfterAddAdmin: any = (await api.query.nft.adminList(collectionId));
127 const adminListAfterAddAdmin: any = (await api.query.nft.adminList(collectionId));
123 expect(adminListAfterAddAdmin).to.be.contains(accounts[i]);
128 expect(adminListAfterAddAdmin).to.be.contains(accounts[i]);
124 }
129 }
125
130
126 const tx = api.tx.nft.addCollectionAdmin(collectionId, accounts[chainLimitNumber]);
131 const tx = api.tx.nft.addCollectionAdmin(collectionId, accounts[chainAdminLimit]);
127 await expect(submitTransactionExpectFailAsync(Alice, tx)).to.be.rejected;
132 await expect(submitTransactionExpectFailAsync(Alice, tx)).to.be.rejected;
128 });
133 });
129 });
134 });
tests/src/addToContractWhiteList.test.tsdiffbeforeafterboth1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//51import chai from "chai";6import chai from "chai";2import chaiAsPromised from 'chai-as-promised';7import chaiAsPromised from 'chai-as-promised';tests/src/addToWhiteList.test.tsdiffbeforeafterboth1//
2// This file is subject to the terms and conditions defined in
3// file 'LICENSE', which is part of this source code package.
4//
5
1import { IKeyringPair } from '@polkadot/types/types';
6import { IKeyringPair } from '@polkadot/types/types';
2import chai from 'chai';
7import chai from 'chai';
tests/src/approve.test.tsdiffbeforeafterboth34 await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);34 await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);35 // reFungible35 // reFungible36 const reFungibleCollectionId =36 const reFungibleCollectionId =37 await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});37 await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});38 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');38 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');39 await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);39 await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);40 });40 });56 await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 0);56 await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 0);57 // reFungible57 // reFungible58 const reFungibleCollectionId =58 const reFungibleCollectionId =59 await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});59 await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});60 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');60 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');61 await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 1);61 await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 1);62 await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 0);62 await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 0);95 await approveExpectFail(fungibleCollectionId, 1, Alice, Bob);95 await approveExpectFail(fungibleCollectionId, 1, Alice, Bob);96 // reFungible96 // reFungible97 const reFungibleCollectionId =97 const reFungibleCollectionId =98 await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});98 await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});99 await destroyCollectionExpectSuccess(reFungibleCollectionId);99 await destroyCollectionExpectSuccess(reFungibleCollectionId);100 await approveExpectFail(reFungibleCollectionId, 1, Alice, Bob);100 await approveExpectFail(reFungibleCollectionId, 1, Alice, Bob);101 });101 });113 await approveExpectFail(fungibleCollectionId, 2, Alice, Bob);113 await approveExpectFail(fungibleCollectionId, 2, Alice, Bob);114 // reFungible114 // reFungible115 const reFungibleCollectionId =115 const reFungibleCollectionId =116 await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});116 await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});117 await approveExpectFail(reFungibleCollectionId, 2, Alice, Bob);117 await approveExpectFail(reFungibleCollectionId, 2, Alice, Bob);118 });118 });119 });119 });132 await approveExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice);132 await approveExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice);133 // reFungible133 // reFungible134 const reFungibleCollectionId =134 const reFungibleCollectionId =135 await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});135 await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});136 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');136 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');137 await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice);137 await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice);138 });138 });tests/src/burnItem.test.tsdiffbeforeafterboth1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//51import { default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync } from './substrate/substrate-api';6import { default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync } from './substrate/substrate-api';2import { Keyring } from "@polkadot/api";7import { Keyring } from "@polkadot/api";70 });75 });71 it('Burn item in ReFungible collection', async () => {76 it('Burn item in ReFungible collection', async () => {72 const createMode = 'ReFungible';77 const createMode = 'ReFungible';73 const collectionId = await createCollectionExpectSuccess({mode: {type: createMode, decimalPoints: 2 }});78 const collectionId = await createCollectionExpectSuccess({mode: {type: createMode }});74 const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);79 const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);758076 await usingApi(async (api) => {81 await usingApi(async (api) => {919692 it('Burn owned portion of item in ReFungible collection', async () => {97 it('Burn owned portion of item in ReFungible collection', async () => {93 const createMode = 'ReFungible';98 const createMode = 'ReFungible';94 const collectionId = await createCollectionExpectSuccess({mode: {type: createMode, decimalPoints: 2 }});99 const collectionId = await createCollectionExpectSuccess({mode: {type: createMode}});95 const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);100 const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);9610197 await usingApi(async (api) => {102 await usingApi(async (api) => {tests/src/change-collection-owner.test.tsdiffbeforeafterboth1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//51import chai from 'chai';6import chai from 'chai';2import chaiAsPromised from 'chai-as-promised';7import chaiAsPromised from 'chai-as-promised';tests/src/confirmSponsorship.test.tsdiffbeforeafterboth115 });115 });116116117 it('ReFungible: Transfer fees are paid by the sponsor after confirmation', async () => {117 it('ReFungible: Transfer fees are paid by the sponsor after confirmation', async () => {118 const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0 }});118 const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});119 await setCollectionSponsorExpectSuccess(collectionId, bob.address);119 await setCollectionSponsorExpectSuccess(collectionId, bob.address);120 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');120 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');121121247 });247 });248248249 it('ReFungible: Sponsoring is rate limited', async () => {249 it('ReFungible: Sponsoring is rate limited', async () => {250 const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0 }});250 const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});251 await setCollectionSponsorExpectSuccess(collectionId, bob.address);251 await setCollectionSponsorExpectSuccess(collectionId, bob.address);252 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');252 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');253253tests/src/contracts.test.tsdiffbeforeafterboth1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//51import chai from "chai";6import chai from "chai";2import chaiAsPromised from 'chai-as-promised';7import chaiAsPromised from 'chai-as-promised';tests/src/createCollection.test.tsdiffbeforeafterboth28 await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
28 await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
29 });
29 });
30 it('Create new ReFungible collection', async () => {
30 it('Create new ReFungible collection', async () => {
31 await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
31 await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
32 });
32 });
33});
33});
34
34
tests/src/createItem.test.tsdiffbeforeafterboth1//
2// This file is subject to the terms and conditions defined in
3// file 'LICENSE', which is part of this source code package.
4//
5
1import { default as usingApi } from './substrate/substrate-api';
6import { default as usingApi } from './substrate/substrate-api';
2import { Keyring } from "@polkadot/api";
7import { Keyring } from "@polkadot/api";
28 });
33 });
29 it('Create new item in ReFungible collection', async () => {
34 it('Create new item in ReFungible collection', async () => {
30 const createMode = 'ReFungible';
35 const createMode = 'ReFungible';
31 const newCollectionID = await createCollectionExpectSuccess({mode: {type: createMode, decimalPoints: 0}});
36 const newCollectionID = await createCollectionExpectSuccess({mode: {type: createMode}});
32 await createItemExpectSuccess(alice, newCollectionID, createMode);
37 await createItemExpectSuccess(alice, newCollectionID, createMode);
33 });
38 });
34});
39});
tests/src/createMultipleItems.test.tsdiffbeforeafterboth565657 it('Create 0x31, 0x32, 0x33 items in active ReFungible collection and verify tokens data in chain', async () => {57 it('Create 0x31, 0x32, 0x33 items in active ReFungible collection and verify tokens data in chain', async () => {58 await usingApi(async (api: ApiPromise) => {58 await usingApi(async (api: ApiPromise) => {59 const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});59 const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});60 const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId) as unknown as BN;60 const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId) as unknown as BN;61 expect(itemsListIndexBefore.toNumber()).to.be.equal(0);61 expect(itemsListIndexBefore.toNumber()).to.be.equal(0);62 const Alice = privateKey('//Alice');62 const Alice = privateKey('//Alice');63 const args = [63 const args = [64 { Refungible: ['0x31', '0x31'] },64 {refungible: {const_data: [0x31], variable_data: [0x31], pieces: 1}},65 { Refungible: ['0x32', '0x32'] },65 {refungible: {const_data: [0x32], variable_data: [0x32], pieces: 1}},66 { Refungible: ['0x33', '0x33'] },66 {refungible: {const_data: [0x33], variable_data: [0x33], pieces: 1}},67 ];67 ];68 const createMultipleItemsTx = await api.tx.nft68 const createMultipleItemsTx = await api.tx.nft69 .createMultipleItems(collectionId, Alice.address, args);69 .createMultipleItems(collectionId, Alice.address, args);137137138 // ReFungible138 // ReFungible139 const collectionIdReFungible =139 const collectionIdReFungible =140 await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});140 await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});141 const argsReFungible = [141 const argsReFungible = [142 { ReFungible: ['1'.repeat(2049), '1'.repeat(2049)] },142 { ReFungible: ['1'.repeat(2049), '1'.repeat(2049)] },143 { ReFungible: ['2'.repeat(2049), '2'.repeat(2049)] },143 { ReFungible: ['2'.repeat(2049), '2'.repeat(2049)] },tests/src/creditFeesToTreasury.test.tsdiffbeforeafterboth17 transferExpectSuccess17 transferExpectSuccess18} from './util/helpers';18} from './util/helpers';1920import { default as waitNewBlocks } from './substrate/wait-new-blocks';192120chai.use(chaiAsPromised);22chai.use(chaiAsPromised);21const expect = chai.expect;23const expect = chai.expect;373938 it('Total issuance does not change', async () => {40 it('Total issuance does not change', async () => {39 await usingApi(async (api) => {41 await usingApi(async (api) => {42 await waitNewBlocks(api, 1);4340 const totalBefore = new BigNumber((await api.query.balances.totalIssuance()).toString());44 const totalBefore = new BigNumber((await api.query.balances.totalIssuance()).toString());4145545855 it('Sender balance decreased by fee+sent amount, Treasury balance increased by fee', async () => {59 it('Sender balance decreased by fee+sent amount, Treasury balance increased by fee', async () => {56 await usingApi(async (api) => {60 await usingApi(async (api) => {61 await waitNewBlocks(api, 1);6257 const alicePrivateKey = privateKey('//Alice');63 const alicePrivateKey = privateKey('//Alice');58 const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());64 const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());748075 it('Treasury balance increased by failed tx fee', async () => {81 it('Treasury balance increased by failed tx fee', async () => {76 await usingApi(async (api) => {82 await usingApi(async (api) => {83 await waitNewBlocks(api, 1);8477 const bobPrivateKey = privateKey('//Bob');85 const bobPrivateKey = privateKey('//Bob');78 const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());86 const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());9210093 it('NFT Transactions also send fees to Treasury', async () => {101 it('NFT Transactions also send fees to Treasury', async () => {94 await usingApi(async (api) => {102 await usingApi(async (api) => {103 await waitNewBlocks(api, 1);10495 const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());105 const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());96 const aliceBalanceBefore = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());106 const aliceBalanceBefore = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());108118109 it('Fees are sane', async () => {119 it('Fees are sane', async () => {110 await usingApi(async (api) => {120 await usingApi(async (api) => {111 const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());112 const aliceBalanceBefore = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());121 const aliceBalanceBefore = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());113122114 await createCollectionExpectSuccess();123 await createCollectionExpectSuccess();115124116 const treasuryBalanceAfter = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());117 const aliceBalanceAfter = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());125 const aliceBalanceAfter = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());118 const fee = aliceBalanceBefore.minus(aliceBalanceAfter);126 const fee = aliceBalanceBefore.minus(aliceBalanceAfter);119 const treasuryIncrease = treasuryBalanceAfter.minus(treasuryBalanceBefore);120127121 expect(fee.dividedBy(1e15).toNumber()).to.be.lessThan(saneMaximumFee);128 expect(fee.dividedBy(1e15).toNumber()).to.be.lessThan(saneMaximumFee);122 expect(fee.dividedBy(1e15).toNumber()).to.be.greaterThan(saneMinimumFee);129 expect(fee.dividedBy(1e15).toNumber()).to.be.greaterThan(saneMinimumFee);tests/src/destroyCollection.test.tsdiffbeforeafterboth1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//51import chai from 'chai';6import chai from 'chai';2import chaiAsPromised from 'chai-as-promised';7import chaiAsPromised from 'chai-as-promised';3import { default as usingApi, submitTransactionAsync } from "./substrate/substrate-api";8import { default as usingApi } from "./substrate/substrate-api";4import { createCollectionExpectSuccess, createCollectionExpectFailure, destroyCollectionExpectSuccess, destroyCollectionExpectFailure } from "./util/helpers";9import { createCollectionExpectSuccess, destroyCollectionExpectSuccess, destroyCollectionExpectFailure } from "./util/helpers";5import type { AccountId, EventRecord } from '@polkadot/types/interfaces';6import privateKey from './substrate/privateKey';7108chai.use(chaiAsPromised);11chai.use(chaiAsPromised);9const expect = chai.expect;101211describe('integration test: ext. destroyCollection():', () => {13describe('integration test: ext. destroyCollection():', () => {12 it('NFT collection can be destroyed', async () => {14 it('NFT collection can be destroyed', async () => {18 await destroyCollectionExpectSuccess(collectionId);20 await destroyCollectionExpectSuccess(collectionId);19 });21 });20 it('ReFungible collection can be destroyed', async () => {22 it('ReFungible collection can be destroyed', async () => {21 const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});23 const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});22 await destroyCollectionExpectSuccess(collectionId);24 await destroyCollectionExpectSuccess(collectionId);23 });25 });24});26});tests/src/enableContractSponsoring.test.tsdiffbeforeafterboth1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//51import { IKeyringPair } from '@polkadot/types/types';6import { IKeyringPair } from '@polkadot/types/types';2import chai from 'chai';7import chai from 'chai';tests/src/removeCollectionAdmin.test.tsdiffbeforeafterboth1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//51import { ApiPromise } from '@polkadot/api';6import { ApiPromise } from '@polkadot/api';2import BN from 'bn.js';3import chai from 'chai';7import chai from 'chai';4import chaiAsPromised from 'chai-as-promised';8import chaiAsPromised from 'chai-as-promised';5import privateKey from './substrate/privateKey';9import privateKey from './substrate/privateKey';tests/src/removeFromContractWhiteList.test.tsdiffbeforeafterbothno changes
tests/src/removeFromWhiteList.test.tsdiffbeforeafterboth1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//51import chai from 'chai';6import chai from 'chai';2import chaiAsPromised from 'chai-as-promised';7import chaiAsPromised from 'chai-as-promised';tests/src/setCollectionLimits.test.tsdiffbeforeafterboth1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//51// https://unique-network.readthedocs.io/en/latest/jsapi.html#setchainlimits6// https://unique-network.readthedocs.io/en/latest/jsapi.html#setchainlimits2import { ApiPromise, Keyring } from '@polkadot/api';7import { ApiPromise, Keyring } from '@polkadot/api';tests/src/setCollectionSponsor.test.tsdiffbeforeafterboth9import { createCollectionExpectSuccess, setCollectionSponsorExpectSuccess, destroyCollectionExpectSuccess, setCollectionSponsorExpectFailure } from "./util/helpers";9import { createCollectionExpectSuccess, setCollectionSponsorExpectSuccess, destroyCollectionExpectSuccess, setCollectionSponsorExpectFailure } from "./util/helpers";10import { Keyring } from "@polkadot/api";10import { Keyring } from "@polkadot/api";11import { IKeyringPair } from "@polkadot/types/types";11import { IKeyringPair } from "@polkadot/types/types";12import type { AccountId } from '@polkadot/types/interfaces';131214chai.use(chaiAsPromised);13chai.use(chaiAsPromised);15const expect = chai.expect;14const expect = chai.expect;34 await setCollectionSponsorExpectSuccess(collectionId, bob.address);33 await setCollectionSponsorExpectSuccess(collectionId, bob.address);35 });34 });36 it('Set ReFungible collection sponsor', async () => {35 it('Set ReFungible collection sponsor', async () => {37 const collectionId = await createCollectionExpectSuccess({ mode: {type: 'ReFungible', decimalPoints: 0} });36 const collectionId = await createCollectionExpectSuccess({ mode: {type: 'ReFungible'} });38 await setCollectionSponsorExpectSuccess(collectionId, bob.address);37 await setCollectionSponsorExpectSuccess(collectionId, bob.address);39 });38 });4039tests/src/setConstOnChainSchema.test.tsdiffbeforeafterboth1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//51import { Keyring } from '@polkadot/api';6import { Keyring } from '@polkadot/api';2import { IKeyringPair } from '@polkadot/types/types';7import { IKeyringPair } from '@polkadot/types/types';tests/src/setContractSponsoringRateLimit.test.tsdiffbeforeafterboth1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//51import { IKeyringPair } from '@polkadot/types/types';6import { IKeyringPair } from '@polkadot/types/types';2import privateKey from './substrate/privateKey';7import privateKey from './substrate/privateKey';tests/src/setMintPermission.test.tsdiffbeforeafterboth1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//51import { IKeyringPair } from '@polkadot/types/types';6import { IKeyringPair } from '@polkadot/types/types';2import privateKey from './substrate/privateKey';7import privateKey from './substrate/privateKey';tests/src/setPublicAccessMode.test.tsdiffbeforeafterboth1//
2// This file is subject to the terms and conditions defined in
3// file 'LICENSE', which is part of this source code package.
4//
5
1// https://unique-network.readthedocs.io/en/latest/jsapi.html#setschemaversion
6// https://unique-network.readthedocs.io/en/latest/jsapi.html#setschemaversion
2import { ApiPromise, Keyring } from '@polkadot/api';
7import { ApiPromise, Keyring } from '@polkadot/api';
tests/src/setSchemaVersion.test.tsdiffbeforeafterboth1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//51// https://unique-network.readthedocs.io/en/latest/jsapi.html#setschemaversion6// https://unique-network.readthedocs.io/en/latest/jsapi.html#setschemaversion2import { ApiPromise, Keyring } from '@polkadot/api';7import { ApiPromise, Keyring } from '@polkadot/api';3import { IKeyringPair } from '@polkadot/types/types';8import { IKeyringPair } from '@polkadot/types/types';4import BN from 'bn.js';5import chai from 'chai';9import chai from 'chai';6import chaiAsPromised from 'chai-as-promised';10import chaiAsPromised from 'chai-as-promised';7import usingApi, {submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';11import usingApi, {submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';tests/src/setVariableMetaData.test.tsdiffbeforeafterboth1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//51import { IKeyringPair } from '@polkadot/types/types';6import { IKeyringPair } from '@polkadot/types/types';2import chai from 'chai';7import chai from 'chai';tests/src/setVariableOnChainSchema.test.tsdiffbeforeafterboth1//
2// This file is subject to the terms and conditions defined in
3// file 'LICENSE', which is part of this source code package.
4//
5
1import { Keyring } from '@polkadot/api';
6import { Keyring } from '@polkadot/api';
2import { IKeyringPair } from '@polkadot/types/types';
7import { IKeyringPair } from '@polkadot/types/types';
tests/src/toggleContractWhiteList.test.tsdiffbeforeafterboth1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//51import chai from "chai";6import chai from "chai";2import chaiAsPromised from 'chai-as-promised';7import chaiAsPromised from 'chai-as-promised';tests/src/transfer.test.tsdiffbeforeafterboth63 });63 });64 });64 });656566 it('Create collection, balance transfers and check balance', async () => {66 it('User can transfer owned token', async () => {67 await usingApi(async (api) => {67 await usingApi(async (api) => {68 const Alice = privateKey('//Alice');68 const Alice = privateKey('//Alice');69 const Bob = privateKey('//Bob');69 const Bob = privateKey('//Bob');77 await transferExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1, 'Fungible');77 await transferExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1, 'Fungible');78 // reFungible78 // reFungible79 const reFungibleCollectionId = await79 const reFungibleCollectionId = await80 createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});80 createCollectionExpectSuccess({mode: {type: 'ReFungible'}});81 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');81 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');82 await transferExpectSuccess(reFungibleCollectionId,82 await transferExpectSuccess(reFungibleCollectionId,83 newReFungibleTokenId, Alice, Bob, 1, 'ReFungible');83 newReFungibleTokenId, Alice, Bob, 100, 'ReFungible');84 });84 });85 });85 });86});86});119 await transferExpectFail(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1, 'Fungible');119 await transferExpectFail(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1, 'Fungible');120 // reFungible120 // reFungible121 const reFungibleCollectionId = await121 const reFungibleCollectionId = await122 createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});122 createCollectionExpectSuccess({mode: {type: 'ReFungible'}});123 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');123 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');124 await destroyCollectionExpectSuccess(reFungibleCollectionId);124 await destroyCollectionExpectSuccess(reFungibleCollectionId);125 await transferExpectFail(reFungibleCollectionId,125 await transferExpectFail(reFungibleCollectionId,134 await transferExpectFail(fungibleCollectionId, 2, Alice, Bob, 1, 'Fungible');134 await transferExpectFail(fungibleCollectionId, 2, Alice, Bob, 1, 'Fungible');135 // reFungible135 // reFungible136 const reFungibleCollectionId = await136 const reFungibleCollectionId = await137 createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});137 createCollectionExpectSuccess({mode: {type: 'ReFungible'}});138 await transferExpectFail(reFungibleCollectionId,138 await transferExpectFail(reFungibleCollectionId,139 2, Alice, Bob, 1, 'ReFungible');139 2, Alice, Bob, 1, 'ReFungible');140 });140 });151 await transferExpectFail(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1, 'Fungible');151 await transferExpectFail(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1, 'Fungible');152 // reFungible152 // reFungible153 const reFungibleCollectionId = await153 const reFungibleCollectionId = await154 createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});154 createCollectionExpectSuccess({mode: {type: 'ReFungible'}});155 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');155 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');156 await burnItemExpectSuccess(Alice, reFungibleCollectionId, newReFungibleTokenId, 1);156 await burnItemExpectSuccess(Alice, reFungibleCollectionId, newReFungibleTokenId, 1);157 await transferExpectFail(reFungibleCollectionId,157 await transferExpectFail(reFungibleCollectionId,168 await transferExpectFail(fungibleCollectionId, newFungibleTokenId, Charlie, Bob, 1, 'Fungible');168 await transferExpectFail(fungibleCollectionId, newFungibleTokenId, Charlie, Bob, 1, 'Fungible');169 // reFungible169 // reFungible170 const reFungibleCollectionId = await170 const reFungibleCollectionId = await171 createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});171 createCollectionExpectSuccess({mode: {type: 'ReFungible'}});172 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');172 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');173 await transferExpectFail(reFungibleCollectionId,173 await transferExpectFail(reFungibleCollectionId,174 newReFungibleTokenId, Charlie, Bob, 1, 'ReFungible');174 newReFungibleTokenId, Charlie, Bob, 1, 'ReFungible');tests/src/transferFrom.test.tsdiffbeforeafterboth15 destroyCollectionExpectSuccess,15 destroyCollectionExpectSuccess,16 transferFromExpectFail,16 transferFromExpectFail,17 transferFromExpectSuccess,17 transferFromExpectSuccess,18 burnItemExpectSuccess,18} from './util/helpers';19} from './util/helpers';192020chai.use(chaiAsPromised);21chai.use(chaiAsPromised);25 await usingApi(async (api: ApiPromise) => {26 await usingApi(async (api: ApiPromise) => {26 const Alice = privateKey('//Alice');27 const Alice = privateKey('//Alice');27 const Bob = privateKey('//Bob');28 const Bob = privateKey('//Bob');28 const Charlie = privateKey('//CHARLIE');29 const Charlie = privateKey('//Charlie');29 // nft30 // nft30 const nftCollectionId = await createCollectionExpectSuccess();31 const nftCollectionId = await createCollectionExpectSuccess();31 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');32 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');40 await transferFromExpectSuccess(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 1, 'Fungible');41 await transferFromExpectSuccess(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 1, 'Fungible');41 // reFungible42 // reFungible42 const reFungibleCollectionId = await43 const reFungibleCollectionId = await43 createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});44 createCollectionExpectSuccess({mode: {type: 'ReFungible'}});44 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');45 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');45 await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);46 await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 100);46 await transferFromExpectSuccess(reFungibleCollectionId,47 await transferFromExpectSuccess(reFungibleCollectionId,47 newReFungibleTokenId, Bob, Alice, Charlie, 1, 'ReFungible');48 newReFungibleTokenId, Bob, Alice, Charlie, 100, 'ReFungible');48 });49 });49 });50 });50});51});54 await usingApi(async (api: ApiPromise) => {55 await usingApi(async (api: ApiPromise) => {55 const Alice = privateKey('//Alice');56 const Alice = privateKey('//Alice');56 const Bob = privateKey('//Bob');57 const Bob = privateKey('//Bob');57 const Charlie = privateKey('//CHARLIE');58 const Charlie = privateKey('//Charlie');58 // nft59 // nft59 const nftCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number;60 const nftCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number;60 await approveExpectFail(nftCollectionCount + 1, 1, Alice, Bob);61 await approveExpectFail(nftCollectionCount + 1, 1, Alice, Bob);96 await usingApi(async (api: ApiPromise) => {97 await usingApi(async (api: ApiPromise) => {97 const Alice = privateKey('//Alice');98 const Alice = privateKey('//Alice');98 const Bob = privateKey('//Bob');99 const Bob = privateKey('//Bob');99 const Charlie = privateKey('//CHARLIE');100 const Charlie = privateKey('//Charlie');100 // nft101 // nft101 const nftCollectionId = await createCollectionExpectSuccess();102 const nftCollectionId = await createCollectionExpectSuccess();102 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');103 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');109 await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 1);110 await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 1);110 // reFungible111 // reFungible111 const reFungibleCollectionId = await112 const reFungibleCollectionId = await112 createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});113 createCollectionExpectSuccess({mode: {type: 'ReFungible'}});113 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');114 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');114 await transferFromExpectFail(reFungibleCollectionId,115 await transferFromExpectFail(reFungibleCollectionId,115 newReFungibleTokenId, Bob, Alice, Charlie, 1);116 newReFungibleTokenId, Bob, Alice, Charlie, 1);120 await usingApi(async (api: ApiPromise) => {121 await usingApi(async (api: ApiPromise) => {121 const Alice = privateKey('//Alice');122 const Alice = privateKey('//Alice');122 const Bob = privateKey('//Bob');123 const Bob = privateKey('//Bob');123 const Charlie = privateKey('//CHARLIE');124 const Charlie = privateKey('//Charlie');124 // nft125 // nft125 const nftCollectionId = await createCollectionExpectSuccess();126 const nftCollectionId = await createCollectionExpectSuccess();126 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');127 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');135 await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 2);136 await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 2);136 // reFungible137 // reFungible137 const reFungibleCollectionId = await138 const reFungibleCollectionId = await138 createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});139 createCollectionExpectSuccess({mode: {type: 'ReFungible'}});139 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');140 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');140 await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);141 await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);141 await transferFromExpectFail(reFungibleCollectionId,142 await transferFromExpectFail(reFungibleCollectionId,147 await usingApi(async (api: ApiPromise) => {148 await usingApi(async (api: ApiPromise) => {148 const Alice = privateKey('//Alice');149 const Alice = privateKey('//Alice');149 const Bob = privateKey('//Bob');150 const Bob = privateKey('//Bob');150 const Charlie = privateKey('//CHARLIE');151 const Charlie = privateKey('//Charlie');151 const Dave = privateKey('//DAVE');152 const Dave = privateKey('//Dave');152 // nft153 // nft153 const nftCollectionId = await createCollectionExpectSuccess();154 const nftCollectionId = await createCollectionExpectSuccess();154 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');155 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');174 }175 }175 // reFungible176 // reFungible176 const reFungibleCollectionId = await177 const reFungibleCollectionId = await177 createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});178 createCollectionExpectSuccess({mode: {type: 'ReFungible'}});178 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');179 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');179 try {180 try {180 await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, Dave, Bob);181 await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, Dave, Bob);185 }186 }186 });187 });187 });188 });189 it( 'transferFrom burnt token before approve NFT', async () => {190 await usingApi(async (api: ApiPromise) => {191 const Alice = privateKey('//Alice');192 const Bob = privateKey('//Bob');193 const Charlie = privateKey('//Charlie');194 // nft195 const nftCollectionId = await createCollectionExpectSuccess();196 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');197 await burnItemExpectSuccess(Alice, nftCollectionId, newNftTokenId, 1);198 await approveExpectFail(nftCollectionId, newNftTokenId, Alice, Bob);199 await transferFromExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, Charlie, 1); 200 });201 });202 it( 'transferFrom burnt token before approve Fungible', async () => {203 await usingApi(async (api: ApiPromise) => {204 const Alice = privateKey('//Alice');205 const Bob = privateKey('//Bob');206 const Charlie = privateKey('//Charlie');207 const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});208 const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');209 await burnItemExpectSuccess(Alice, fungibleCollectionId, 1, 10);210 await approveExpectFail(fungibleCollectionId, newFungibleTokenId, Alice, Bob);211 await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 1);212 213 });214 }); 215 it( 'transferFrom burnt token before approve ReFungible', async () => {216 await usingApi(async (api: ApiPromise) => {217 const Alice = privateKey('//Alice');218 const Bob = privateKey('//Bob');219 const Charlie = privateKey('//Charlie');220 const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});221 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');222 await burnItemExpectSuccess(Alice, reFungibleCollectionId, newReFungibleTokenId, 1);223 await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);224 await transferFromExpectFail(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice, Charlie, 1);225 226 });227 });228 229 it( 'transferFrom burnt token after approve NFT', async () => {230 await usingApi(async (api: ApiPromise) => {231 const Alice = privateKey('//Alice');232 const Bob = privateKey('//Bob');233 const Charlie = privateKey('//Charlie');234 // nft235 const nftCollectionId = await createCollectionExpectSuccess();236 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');237 await approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob);238 await burnItemExpectSuccess(Alice, nftCollectionId, newNftTokenId, 1);239 await transferFromExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, Charlie, 1); 240 });241 });242 it( 'transferFrom burnt token after approve Fungible', async () => {243 await usingApi(async (api: ApiPromise) => {244 const Alice = privateKey('//Alice');245 const Bob = privateKey('//Bob');246 const Charlie = privateKey('//Charlie');247 const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});248 const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');249 await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);250 await burnItemExpectSuccess(Alice, fungibleCollectionId, 1, 10);251 await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 1);252 253 });254 }); 255 it( 'transferFrom burnt token after approve ReFungible', async () => {256 await usingApi(async (api: ApiPromise) => {257 const Alice = privateKey('//Alice');258 const Bob = privateKey('//Bob');259 const Charlie = privateKey('//Charlie');260 const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});261 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');262 await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);263 await burnItemExpectSuccess(Alice, reFungibleCollectionId, newReFungibleTokenId, 1);264 await transferFromExpectFail(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice, Charlie, 1);265 266 });267 }); 188});268});189269tests/src/types.tsdiffbeforeafterboth1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//51import BN from 'bn.js';6import BN from 'bn.js';27tests/src/util/helpers.tsdiffbeforeafterboth126126127interface ReFungible {127interface ReFungible {128 type: 'ReFungible';128 type: 'ReFungible';129 decimalPoints: number;130}129}131132interface Nft {133 type: 'NFT'134}135136interface Fungible {137 type: 'Fungible',138 decimalPoints: number139}140141interface ReFungible {142 type: 'ReFungible',143 decimalPoints: number144}145130146type CollectionMode = Nft | Fungible | ReFungible | Invalid;131type CollectionMode = Nft | Fungible | ReFungible | Invalid;147132176 } else if (mode.type === 'Fungible') {161 } else if (mode.type === 'Fungible') {177 modeprm = {fungible: mode.decimalPoints};162 modeprm = {fungible: mode.decimalPoints};178 } else if (mode.type === 'ReFungible') {163 } else if (mode.type === 'ReFungible') {179 modeprm = {refungible: mode.decimalPoints};164 modeprm = {refungible: null};180 } else if (mode.type === 'Invalid') {165 } else if (mode.type === 'Invalid') {181 modeprm = {invalid: null};166 modeprm = {invalid: null};182 }167 }218 } else if (mode.type === 'Fungible') {203 } else if (mode.type === 'Fungible') {219 modeprm = {fungible: mode.decimalPoints};204 modeprm = {fungible: mode.decimalPoints};220 } else if (mode.type === 'ReFungible') {205 } else if (mode.type === 'ReFungible') {221 modeprm = {refungible: mode.decimalPoints};206 modeprm = {refungible: null};222 } else if (mode.type === 'Invalid') {207 } else if (mode.type === 'Invalid') {223 modeprm = {invalid: null};208 modeprm = {invalid: null};224 }209 }433 });419 });434}420}421422export async function toggleContractWhitelistExpectSuccess(sender: IKeyringPair, contractAddress: AccountId | string, enabled: boolean) {423 await usingApi(async (api) => {424 const tx = api.tx.nft.toggleContractWhiteList(contractAddress, true);425 const events = await submitTransactionAsync(sender, tx);426 const result = getGenericResult(events);427428 expect(result.success).to.be.true;429 });430}431432export async function isWhitelistedInContract(contractAddress: AccountId | string, user: string) {433 let whitelisted: boolean = false;434 await usingApi(async (api) => {435 whitelisted = (await api.query.nft.contractWhiteList(contractAddress, user)).toJSON() as boolean;436 });437 return whitelisted;438}439440export async function addToContractWhiteListExpectSuccess(sender: IKeyringPair, contractAddress: AccountId | string, user: string) {441 await usingApi(async (api) => {442 const tx = api.tx.nft.addToContractWhiteList(contractAddress, user);443 const events = await submitTransactionAsync(sender, tx);444 const result = getGenericResult(events);445446 expect(result.success).to.be.true;447 });448}449450export async function removeFromContractWhiteListExpectSuccess(sender: IKeyringPair, contractAddress: AccountId | string, user: string) {451 await usingApi(async (api) => {452 const tx = api.tx.nft.removeFromContractWhiteList(contractAddress, user);453 const events = await submitTransactionAsync(sender, tx);454 const result = getGenericResult(events);455456 expect(result.success).to.be.true;457 });458}459460export async function removeFromContractWhiteListExpectFailure(sender: IKeyringPair, contractAddress: AccountId | string, user: string) {461 await usingApi(async (api) => {462 const tx = api.tx.nft.removeFromContractWhiteList(contractAddress, user);463 const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;464 const result = getGenericResult(events);465466 expect(result.success).to.be.false;467 });468}435469436export async function setVariableMetaDataExpectSuccess(sender: IKeyringPair, collectionId: number, itemId: number, data: number[]) {470export async function setVariableMetaDataExpectSuccess(sender: IKeyringPair, collectionId: number, itemId: number, data: number[]) {437 await usingApi(async (api) => {471 await usingApi(async (api) => {483517484export async function518export async function485approveExpectSuccess(collectionId: number,519approveExpectSuccess(collectionId: number,486 tokenId: number, owner: IKeyringPair, approved: IKeyringPair, amount: number | bigint = 1) {520 tokenId: number, owner: IKeyringPair, approved: IKeyringPair, amount: number | bigint = 1) { //alice,bob487 await usingApi(async (api: ApiPromise) => {521 await usingApi(async (api: ApiPromise) => {488 const allowanceBefore =522 const allowanceBefore =489 await api.query.nft.allowances(collectionId, [tokenId, owner.address, approved.address]) as unknown as BN;523 await api.query.nft.allowances(collectionId, [tokenId, owner.address, approved.address]) as unknown as BN;501export async function535export async function502transferFromExpectSuccess(collectionId: number,536transferFromExpectSuccess(collectionId: number,503 tokenId: number,537 tokenId: number,504 accountApproved: IKeyringPair,538 accountApproved: IKeyringPair, //bob505 accountFrom: IKeyringPair,539 accountFrom: IKeyringPair, //alice506 accountTo: IKeyringPair,540 accountTo: IKeyringPair, //charlie507 value: number | bigint = 1,541 value: number | bigint = 1,508 type: string = 'NFT') {542 type: string = 'NFT') {509 await usingApi(async (api: ApiPromise) => {543 await usingApi(async (api: ApiPromise) => {658 if (createMode === 'Fungible') {692 if (createMode === 'Fungible') {659 const createData = {fungible: {value: 10}};693 const createData = {fungible: {value: 10}};660 tx = api.tx.nft.createItem(collectionId, owner, createData);694 tx = api.tx.nft.createItem(collectionId, owner, createData);661 } else {695 } else if (createMode === 'ReFungible') {696 const createData = {refungible: {const_data: [], variable_data: [], pieces: 100}};697 tx = api.tx.nft.createItem(collectionId, owner, createData);698 } else {662 tx = api.tx.nft.createItem(collectionId, owner, createMode);699 tx = api.tx.nft.createItem(collectionId, owner, createMode);663 }700 }664 const events = await submitTransactionAsync(sender, tx);701 const events = await submitTransactionAsync(sender, tx);