git.delta.rocks / unique-network / refs/commits / 1d6108dcb420

difftreelog

Merge remote-tracking branch 'origin/develop' into feature/NFTPAR-281_overflow_tests

Yaroslav Bolyukin2021-02-11parents: #21f171f #e6241c6.patch.diff
in: master

36 files changed

modifiedCargo.lockdiffbeforeafterboth
248248
249[[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",
534534
535[[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",
21152115
2116[[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",
21682168
2169[[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",
22452245
2246[[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",
25532553
2554[[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"
25592559
2560[[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",
60146014
6015[[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",
61026102
6103[[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]
65746574
6575[[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"
67056705
6706[[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]
69416941
6942[[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",
75997599
7600[[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]
modifiedDockerfilediffbeforeafterboth
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,9 +1,9 @@
 # ===== BUILD ======
 
-FROM phusion/baseimage:0.10.2 as builder
+FROM phusion/baseimage:18.04-1.0.0 as builder
 LABEL maintainer="gz@usetech.com"
 
-ENV WASM_TOOLCHAIN=nightly-2020-10-01
+ENV WASM_TOOLCHAIN=nightly-2021-01-27
 
 ARG PROFILE=release
 
@@ -37,7 +37,7 @@
 
 # ===== RUN ======
 
-FROM phusion/baseimage:0.10.2
+FROM phusion/baseimage:18.04-1.0.0
 ARG PROFILE=release
 
 COPY --from=builder /nft_parachain/target/$PROFILE/nft /usr/local/bin
modifiedpallets/nft/src/lib.rsdiffbeforeafterboth
--- a/pallets/nft/src/lib.rs
+++ b/pallets/nft/src/lib.rs
@@ -54,6 +54,7 @@
 mod default_weights;
 
 pub const MAX_DECIMAL_POINTS: DecimalPoints = 30;
+pub const MAX_REFUNGIBLE_PIECES: u128 = 1_000_000_000_000_000_000_000;
 pub const MAX_SPONSOR_TIMEOUT: u32 = 10_368_000;
 pub const MAX_TOKEN_OWNERSHIP: u32 = 10_000_000;
 
@@ -71,8 +72,7 @@
     NFT,
     // decimal points
     Fungible(DecimalPoints),
-    // decimal points
-    ReFungible(DecimalPoints),
+    ReFungible,
 }
 
 impl Default for CollectionMode {
@@ -87,7 +87,7 @@
             CollectionMode::Invalid => 0,
             CollectionMode::NFT => 1,
             CollectionMode::Fungible(_) => 2,
-            CollectionMode::ReFungible(_) => 3,
+            CollectionMode::ReFungible => 3,
         }
     }
 }
@@ -185,6 +185,8 @@
 
     // Timeouts for item types in passed blocks
     pub sponsor_transfer_timeout: u32,
+    pub owner_can_transfer: bool,
+    pub owner_can_destroy: bool,
 }
 
 impl Default for CollectionLimits {
@@ -193,7 +195,10 @@
             account_token_ownership_limit: 10_000_000, 
             token_limit: u32::max_value(),
             sponsored_data_size: u32::max_value(), 
-            sponsor_transfer_timeout: 14400 }
+            sponsor_transfer_timeout: 14400,
+            owner_can_transfer: true,
+            owner_can_destroy: true
+        }
     }
 }
 
@@ -266,6 +271,7 @@
 pub struct CreateReFungibleData {
     pub const_data: Vec<u8>,
     pub variable_data: Vec<u8>,
+    pub pieces: u128,
 }
 
 #[derive(Encode, Decode, Debug, Clone, PartialEq)]
@@ -377,7 +383,9 @@
         /// Collection limit bounds per collection exceeded
         CollectionLimitBoundsExceeded,
         /// Schema data size limit bound exceeded
-        SchemaDataLimitExceeded
+        SchemaDataLimitExceeded,
+        /// Maximum refungibility exceeded
+        WrongRefungiblePieces
 	}
 }
 
@@ -548,7 +556,6 @@
 
             let decimal_points = match mode {
                 CollectionMode::Fungible(points) => points,
-                CollectionMode::ReFungible(points) => points,
                 _ => 0
             };
 
@@ -590,7 +597,7 @@
                 sponsor_confirmed: false,
                 variable_on_chain_schema: Vec::new(),
                 const_on_chain_schema: Vec::new(),
-                limits: CollectionLimits::default(),
+                limits: CollectionLimits::default()
             };
 
             // Add new collection to map
@@ -933,7 +940,7 @@
 
             Self::can_create_items_in_collection(collection_id, &target_collection, &sender, &owner)?;
             Self::validate_create_item_args(&target_collection, &data)?;
-            Self::create_item_no_validation(collection_id, &target_collection, owner, data)?;
+            Self::create_item_no_validation(collection_id, owner, data)?;
 
             Ok(())
         }
@@ -973,7 +980,7 @@
                 Self::validate_create_item_args(&target_collection, data)?;
             }
             for data in &items_data {
-                Self::create_item_no_validation(collection_id, &target_collection, owner.clone(), data.clone())?;
+                Self::create_item_no_validation(collection_id, owner.clone(), data.clone())?;
             }
 
             Ok(())
@@ -1012,7 +1019,7 @@
             {
                 CollectionMode::NFT => Self::burn_nft_item(collection_id, item_id)?,
                 CollectionMode::Fungible(_)  => Self::burn_fungible_item(&sender, collection_id, value)?,
-                CollectionMode::ReFungible(_)  => Self::burn_refungible_item(collection_id, item_id, &sender)?,
+                CollectionMode::ReFungible  => Self::burn_refungible_item(collection_id, item_id, &sender)?,
                 _ => ()
             };
 
@@ -1154,7 +1161,7 @@
             {
                 CollectionMode::NFT => Self::transfer_nft(collection_id, item_id, from, recipient)?,
                 CollectionMode::Fungible(_)  => Self::transfer_fungible(collection_id, value, &from, &recipient)?,
-                CollectionMode::ReFungible(_)  => Self::transfer_refungible(collection_id, item_id, value, from.clone(), recipient)?,
+                CollectionMode::ReFungible  => Self::transfer_refungible(collection_id, item_id, value, from.clone(), recipient)?,
                 _ => ()
             };
 
@@ -1211,7 +1218,7 @@
             match target_collection.mode
             {
                 CollectionMode::NFT => Self::set_nft_variable_data(collection_id, item_id, data)?,
-                CollectionMode::ReFungible(_)  => Self::set_re_fungible_variable_data(collection_id, item_id, data)?,
+                CollectionMode::ReFungible  => Self::set_re_fungible_variable_data(collection_id, item_id, data)?,
                 CollectionMode::Fungible(_) => fail!(Error::<T>::CantStoreMetadataInFungibleTokens),
                 _ => fail!(Error::<T>::UnexpectedCollectionType)
             };
@@ -1551,7 +1558,7 @@
         {
             CollectionMode::NFT => Self::transfer_nft(collection_id, item_id, sender.clone(), recipient)?,
             CollectionMode::Fungible(_)  => Self::transfer_fungible(collection_id, value, &sender, &recipient)?,
-            CollectionMode::ReFungible(_)  => Self::transfer_refungible(collection_id, item_id, value, sender.clone(), recipient)?,
+            CollectionMode::ReFungible  => Self::transfer_refungible(collection_id, item_id, value, sender.clone(), recipient)?,
             _ => ()
         };
 
@@ -1603,12 +1610,16 @@
                     fail!(Error::<T>::NotFungibleDataUsedToMintFungibleCollectionToken);
                 }
             },
-            CollectionMode::ReFungible(_) => {
+            CollectionMode::ReFungible => {
                 if let CreateItemData::ReFungible(data) = data {
 
                     // check sizes
                     ensure!(ChainLimit::get().custom_data_limit >= data.const_data.len() as u32, Error::<T>::TokenConstDataLimitExceeded);
                     ensure!(ChainLimit::get().custom_data_limit >= data.variable_data.len() as u32, Error::<T>::TokenVariableDataLimitExceeded);
+
+                    // Check refungibility limits
+                    ensure!(data.pieces <= MAX_REFUNGIBLE_PIECES, Error::<T>::WrongRefungiblePieces);
+                    ensure!(data.pieces > 0, Error::<T>::WrongRefungiblePieces);
                 } else {
                     fail!(Error::<T>::NotReFungibleDataUsedToMintReFungibleCollectionToken);
                 }
@@ -1619,7 +1630,7 @@
         Ok(())
     }
 
-    fn create_item_no_validation(collection_id: CollectionId, collection: &CollectionType<T::AccountId>, owner: T::AccountId, data: CreateItemData) -> DispatchResult {
+    fn create_item_no_validation(collection_id: CollectionId, owner: T::AccountId, data: CreateItemData) -> DispatchResult {
         match data
         {
             CreateItemData::NFT(data) => {
@@ -1636,8 +1647,7 @@
             },
             CreateItemData::ReFungible(data) => {
                 let mut owner_list = Vec::new();
-                let value = (10 as u128).pow(collection.decimal_points as u32);
-                owner_list.push(Ownership {owner: owner.clone(), fraction: value});
+                owner_list.push(Ownership {owner: owner.clone(), fraction: data.pieces});
 
                 let item = ReFungibleItemType {
                     owner: owner_list,
@@ -1866,7 +1876,7 @@
             CollectionMode::Fungible(_) => {
                 <FungibleItemList<T>>::contains_key(collection_id, &subject)
             }
-            CollectionMode::ReFungible(_) => {
+            CollectionMode::ReFungible => {
                 <ReFungibleItemList<T>>::get(collection_id, item_id)
                     .owner
                     .iter()
@@ -1895,7 +1905,7 @@
         {
             CollectionMode::NFT => <NftItemList<T>>::contains_key(collection_id, item_id),
             CollectionMode::Fungible(_)  => <FungibleItemList<T>>::contains_key(collection_id, owner),
-            CollectionMode::ReFungible(_)  => <ReFungibleItemList<T>>::contains_key(collection_id, item_id),
+            CollectionMode::ReFungible  => <ReFungibleItemList<T>>::contains_key(collection_id, item_id),
             _ => false
         };
 
@@ -2421,7 +2431,7 @@
 
                             sponsored
                         }
-                        CollectionMode::ReFungible(_) => {
+                        CollectionMode::ReFungible => {
     
                             // get correct limit
                             let limit: u32 = if collection_limits.sponsor_transfer_timeout > 0 {
modifiedpallets/nft/src/tests.rsdiffbeforeafterboth
--- a/pallets/nft/src/tests.rs
+++ b/pallets/nft/src/tests.rs
@@ -35,7 +35,7 @@
 }
 
 fn default_re_fungible_data () -> CreateReFungibleData {
-    CreateReFungibleData { const_data: vec![1, 2, 3], variable_data: vec![3, 2, 1] }
+    CreateReFungibleData { const_data: vec![1, 2, 3], variable_data: vec![3, 2, 1], pieces: 1023 }
 }
 
 fn create_test_collection_for_owner(mode: &CollectionMode, owner: u64, id: CollectionId) -> CollectionId {
@@ -114,26 +114,6 @@
 }
 
 #[test]
-fn create_re_fungible_collection_fails_with_large_decimal_numbers() {
-    new_test_ext().execute_with(|| {
-        default_limits();
-
-        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
-        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
-        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
-
-        let origin1 = Origin::signed(1);
-        assert_noop!(TemplateModule::create_collection(
-            origin1,
-            col_name1,
-            col_desc1,
-            token_prefix1,
-            CollectionMode::ReFungible(MAX_DECIMAL_POINTS + 1)
-        ), Error::<Test>::CollectionDecimalPointLimitExceeded);
-    });
-}
-
-#[test]
 fn create_nft_item() {
     new_test_ext().execute_with(|| {
         default_limits();
@@ -176,7 +156,7 @@
 fn create_refungible_item() {
     new_test_ext().execute_with(|| {
         default_limits();
-        let collection_id = create_test_collection(&CollectionMode::ReFungible(3), 1);
+        let collection_id = create_test_collection(&CollectionMode::ReFungible, 1);
 
         let data = default_re_fungible_data();
         create_test_item(collection_id, &data.clone().into());
@@ -192,7 +172,7 @@
             TemplateModule::refungible_item_id(collection_id, 1).owner[0],
             Ownership {
                 owner: 1,
-                fraction: 1000
+                fraction: 1023
             }
         );
     });
@@ -203,7 +183,7 @@
     new_test_ext().execute_with(|| {
         default_limits();
         
-        create_test_collection(&CollectionMode::ReFungible(3), 1);
+        create_test_collection(&CollectionMode::ReFungible, 1);
 
         let origin1 = Origin::signed(1);
 
@@ -224,7 +204,7 @@
                 item.owner[0],
                 Ownership {
                     owner: 1,
-                    fraction: 1000
+                    fraction: 1023
                 }
             );
         }
@@ -312,7 +292,7 @@
     new_test_ext().execute_with(|| {
         default_limits();
         
-        let collection_id = create_test_collection(&CollectionMode::ReFungible(3), 1);
+        let collection_id = create_test_collection(&CollectionMode::ReFungible, 1);
 
         let data = default_re_fungible_data();
         create_test_item(collection_id, &data.clone().into());
@@ -331,23 +311,23 @@
             TemplateModule::refungible_item_id(collection_id, 1).owner[0],
             Ownership {
                 owner: 1,
-                fraction: 1000
+                fraction: 1023
             }
         );
-        assert_eq!(TemplateModule::balance_count(1, 1), 1000);
+        assert_eq!(TemplateModule::balance_count(1, 1), 1023);
         assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
 
         // change owner scenario
-        assert_ok!(TemplateModule::transfer(origin1.clone(), 2, 1, 1, 1000));
+        assert_ok!(TemplateModule::transfer(origin1.clone(), 2, 1, 1, 1023));
         assert_eq!(
             TemplateModule::refungible_item_id(1, 1).owner[0],
             Ownership {
                 owner: 2,
-                fraction: 1000
+                fraction: 1023
             }
         );
         assert_eq!(TemplateModule::balance_count(1, 1), 0);
-        assert_eq!(TemplateModule::balance_count(1, 2), 1000);
+        assert_eq!(TemplateModule::balance_count(1, 2), 1023);
         // assert_eq!(TemplateModule::address_tokens(1, 1), []);
         assert_eq!(TemplateModule::address_tokens(1, 2), [1]);
 
@@ -357,7 +337,7 @@
             TemplateModule::refungible_item_id(1, 1).owner[0],
             Ownership {
                 owner: 2,
-                fraction: 500
+                fraction: 523
             }
         );
         assert_eq!(
@@ -367,7 +347,7 @@
                 fraction: 500
             }
         );
-        assert_eq!(TemplateModule::balance_count(1, 2), 500);
+        assert_eq!(TemplateModule::balance_count(1, 2), 523);
         assert_eq!(TemplateModule::balance_count(1, 3), 500);
         assert_eq!(TemplateModule::address_tokens(1, 2), [1]);
         assert_eq!(TemplateModule::address_tokens(1, 3), [1]);
@@ -378,7 +358,7 @@
             TemplateModule::refungible_item_id(1, 1).owner[0],
             Ownership {
                 owner: 2,
-                fraction: 300
+                fraction: 323
             }
         );
         assert_eq!(
@@ -388,7 +368,7 @@
                 fraction: 700
             }
         );
-        assert_eq!(TemplateModule::balance_count(1, 2), 300);
+        assert_eq!(TemplateModule::balance_count(1, 2), 323);
         assert_eq!(TemplateModule::balance_count(1, 3), 700);
         assert_eq!(TemplateModule::address_tokens(1, 2), [1]);
         assert_eq!(TemplateModule::address_tokens(1, 3), [1]);
@@ -517,7 +497,7 @@
     new_test_ext().execute_with(|| {
         default_limits();
         
-        let collection_id = create_test_collection(&CollectionMode::ReFungible(3), 1);
+        let collection_id = create_test_collection(&CollectionMode::ReFungible, 1);
         
         let origin1 = Origin::signed(1);
         let origin2 = Origin::signed(2);
@@ -525,7 +505,7 @@
         let data = default_re_fungible_data();
         create_test_item(collection_id, &data.into());
 
-        assert_eq!(TemplateModule::balance_count(1, 1), 1000);
+        assert_eq!(TemplateModule::balance_count(1, 1), 1023);
         assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
 
         assert_ok!(TemplateModule::set_mint_permission(
@@ -543,8 +523,8 @@
         assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 3));
 
         // do approve
-        assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1, 1000));
-        assert_eq!(TemplateModule::approved(1, (1, 1, 2)), 1000);
+        assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1, 1023));
+        assert_eq!(TemplateModule::approved(1, (1, 1, 2)), 1023);
 
         assert_ok!(TemplateModule::transfer_from(
             origin2.clone(),
@@ -554,14 +534,14 @@
             1,
             100
         ));
-        assert_eq!(TemplateModule::balance_count(1, 1), 900);
+        assert_eq!(TemplateModule::balance_count(1, 1), 923);
         assert_eq!(TemplateModule::balance_count(1, 3), 100);
         assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
         assert_eq!(TemplateModule::address_tokens(1, 3), [1]);
 
         assert_eq!(
             TemplateModule::approved(1, (1, 1, 2)),
-            900
+            923
         );
     });
 }
@@ -717,7 +697,7 @@
     new_test_ext().execute_with(|| {
         default_limits();
         
-        let collection_id = create_test_collection(&CollectionMode::ReFungible(3), 1);
+        let collection_id = create_test_collection(&CollectionMode::ReFungible, 1);
         let origin1 = Origin::signed(1);
 
         assert_ok!(TemplateModule::set_mint_permission(
@@ -738,12 +718,12 @@
         create_test_item(collection_id, &data.into());
 
         // check balance (collection with id = 1, user id = 2)
-        assert_eq!(TemplateModule::balance_count(1, 1), 1000);
+        assert_eq!(TemplateModule::balance_count(1, 1), 1023);
 
         // burn item
-        assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 1, 1000));
+        assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 1, 1023));
         assert_noop!(
-            TemplateModule::burn_item(origin1.clone(), 1, 1, 1000),
+            TemplateModule::burn_item(origin1.clone(), 1, 1, 1023),
             Error::<Test>::TokenNotFound
         );
 
@@ -807,7 +787,7 @@
         
         let nft_collection_id = create_test_collection(&CollectionMode::NFT, 1);
         let fungible_collection_id = create_test_collection(&CollectionMode::Fungible(3), 2);
-        let re_fungible_collection_id = create_test_collection(&CollectionMode::ReFungible(3), 3);
+        let re_fungible_collection_id = create_test_collection(&CollectionMode::ReFungible, 3);
         
         // check balance before
         assert_eq!(TemplateModule::balance_count(nft_collection_id, 1), 0);
@@ -826,7 +806,7 @@
         // check balance (collection with id = 1, user id = 1)
         assert_eq!(TemplateModule::balance_count(nft_collection_id, 1), 1);
         assert_eq!(TemplateModule::balance_count(fungible_collection_id, 1), 5);
-        assert_eq!(TemplateModule::balance_count(re_fungible_collection_id, 1), 1000);
+        assert_eq!(TemplateModule::balance_count(re_fungible_collection_id, 1), 1023);
         assert_eq!(TemplateModule::nft_item_id(nft_collection_id, 1).owner, 1);
         assert_eq!(TemplateModule::fungible_item_id(fungible_collection_id, 1).value, 5);
         assert_eq!(TemplateModule::refungible_item_id(re_fungible_collection_id, 1).owner[0].owner, 1);
@@ -1905,7 +1885,7 @@
     new_test_ext().execute_with(|| {
         default_limits();
 
-        let collection_id = create_test_collection(&CollectionMode::ReFungible(3), 1);
+        let collection_id = create_test_collection(&CollectionMode::ReFungible, 1);
 
         let origin1 = Origin::signed(1);
 
@@ -1982,7 +1962,7 @@
         }));
 
 
-        let collection_id = create_test_collection(&CollectionMode::ReFungible(3), 1);
+        let collection_id = create_test_collection(&CollectionMode::ReFungible, 1);
 
         let origin1 = Origin::signed(1);
 
modifiedruntime_types.jsondiffbeforeafterboth
--- a/runtime_types.json
+++ b/runtime_types.json
@@ -1,27 +1,4 @@
 {
-    "Schedule": {
-      "version": "u32",
-      "put_code_per_byte_cost": "Gas",
-      "grow_mem_cost": "Gas",
-      "regular_op_cost": "Gas",
-      "return_data_per_byte_cost": "Gas",
-      "event_data_per_byte_cost": "Gas",
-      "event_per_topic_cost": "Gas",
-      "event_base_cost": "Gas",
-      "call_base_cost": "Gas",
-      "instantiate_base_cost": "Gas",
-      "dispatch_base_cost": "Gas",
-      "sandbox_data_read_cost": "Gas",
-      "sandbox_data_write_cost": "Gas",
-      "transfer_cost": "Gas",
-      "instantiate_cost": "Gas",
-      "max_event_topics": "u32",
-      "max_stack_height": "u32",
-      "max_memory_pages": "u32",
-      "max_table_size": "u32",
-      "enable_println": "bool",
-      "max_subject_len": "u32"
-    },
     "AccessMode": {
       "_enum": [
         "Normal",
@@ -34,7 +11,7 @@
         "Invalid": null,
         "NFT": null,
         "Fungible": "DecimalPoints",
-        "ReFungible": "DecimalPoints"
+        "ReFungible": null
       }
     },
     "Ownership": {
@@ -84,7 +61,8 @@
     },
     "CreateReFungibleData": {
       "const_data": "Vec<u8>",
-      "variable_data": "Vec<u8>" 
+      "variable_data": "Vec<u8>",
+      "pieces": "u128"
     },
     "CreateItemData": {
       "_enum": {
@@ -117,15 +95,8 @@
       "AccountTokenOwnershipLimit": "u32",
       "SponsoredMintSize": "u32",
       "TokenLimit": "u32",
-      "SponsorTimeout": "u32"
-    },
-    "AccountInfo": "AccountInfoWithProviders",
-    "AccountInfoWithProviders": {
-      "nonce": "Index",
-      "consumers": "RefCount",
-      "providers": "RefCount",
-      "data": "AccountData"
+      "SponsorTimeout": "u32",
+      "OwnerCanTransfer": "bool",
+      "OwnerCanDestroy": "bool"
     }
-
-  }
-  
\ No newline at end of file
+}
\ No newline at end of file
modifiedtests/src/addCollectionAdmin.test.tsdiffbeforeafterboth
--- a/tests/src/addCollectionAdmin.test.ts
+++ b/tests/src/addCollectionAdmin.test.ts
@@ -1,4 +1,9 @@
-import { ApiPromise } from '@polkadot/api';
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
+import { ApiPromise } from '@polkadot/api';
 import BN from 'bn.js';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
@@ -112,18 +117,18 @@
       ];
       const collectionId = await createCollectionExpectSuccess();
 
-      const chainLimit = await api.query.nft.chainLimit() as unknown as { collections_admins_limit: BN };
-      const chainLimitNumber = chainLimit.collections_admins_limit.toNumber();
-      expect(chainLimitNumber).to.be.equal(5);
+      const chainLimit = await api.query.nft.chainLimit() as unknown as { CollectionAdminsLimit: BN };
+      const chainAdminLimit = chainLimit.CollectionAdminsLimit.toNumber();
+      expect(chainAdminLimit).to.be.equal(5);
 
-      for (let i = 0; i < chainLimitNumber; i++) {
+      for (let i = 0; i < chainAdminLimit; i++) {
         const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, accounts[i]);
         await submitTransactionAsync(Alice, changeAdminTx);
         const adminListAfterAddAdmin: any = (await api.query.nft.adminList(collectionId));
         expect(adminListAfterAddAdmin).to.be.contains(accounts[i]);
       }
 
-      const tx = api.tx.nft.addCollectionAdmin(collectionId, accounts[chainLimitNumber]);
+      const tx = api.tx.nft.addCollectionAdmin(collectionId, accounts[chainAdminLimit]);
       await expect(submitTransactionExpectFailAsync(Alice, tx)).to.be.rejected;
     });
   });
modifiedtests/src/addToContractWhiteList.test.tsdiffbeforeafterboth
--- a/tests/src/addToContractWhiteList.test.ts
+++ b/tests/src/addToContractWhiteList.test.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import chai from "chai";
 import chaiAsPromised from 'chai-as-promised';
 import usingApi, { submitTransactionAsync, submitTransactionExpectFailAsync } from "./substrate/substrate-api";
modifiedtests/src/addToWhiteList.test.tsdiffbeforeafterboth
--- a/tests/src/addToWhiteList.test.ts
+++ b/tests/src/addToWhiteList.test.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import { IKeyringPair } from '@polkadot/types/types';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
modifiedtests/src/approve.test.tsdiffbeforeafterboth
--- a/tests/src/approve.test.ts
+++ b/tests/src/approve.test.ts
@@ -34,7 +34,7 @@
       await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);
       // reFungible
       const reFungibleCollectionId =
-        await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
+        await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
       const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
       await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);
     });
@@ -56,7 +56,7 @@
       await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 0);
       // reFungible
       const reFungibleCollectionId =
-        await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
+        await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
       const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
       await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 1);
       await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 0);
@@ -95,7 +95,7 @@
       await approveExpectFail(fungibleCollectionId, 1, Alice, Bob);
       // reFungible
       const reFungibleCollectionId =
-        await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
+        await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
       await destroyCollectionExpectSuccess(reFungibleCollectionId);
       await approveExpectFail(reFungibleCollectionId, 1, Alice, Bob);
     });
@@ -113,7 +113,7 @@
       await approveExpectFail(fungibleCollectionId, 2, Alice, Bob);
       // reFungible
       const reFungibleCollectionId =
-        await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
+        await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
       await approveExpectFail(reFungibleCollectionId, 2, Alice, Bob);
     });
   });
@@ -132,7 +132,7 @@
       await approveExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice);
       // reFungible
       const reFungibleCollectionId =
-        await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
+        await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
       const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
       await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice);
     });
modifiedtests/src/burnItem.test.tsdiffbeforeafterboth
--- a/tests/src/burnItem.test.ts
+++ b/tests/src/burnItem.test.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import { default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync } from './substrate/substrate-api';
 import { Keyring } from "@polkadot/api";
 import { IKeyringPair } from "@polkadot/types/types";
@@ -70,7 +75,7 @@
   });
   it('Burn item in ReFungible collection', async () => {
     const createMode = 'ReFungible';
-    const collectionId = await createCollectionExpectSuccess({mode: {type: createMode, decimalPoints: 2 }});
+    const collectionId = await createCollectionExpectSuccess({mode: {type: createMode }});
     const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);
 
     await usingApi(async (api) => {
@@ -91,7 +96,7 @@
 
   it('Burn owned portion of item in ReFungible collection', async () => {
     const createMode = 'ReFungible';
-    const collectionId = await createCollectionExpectSuccess({mode: {type: createMode, decimalPoints: 2 }});
+    const collectionId = await createCollectionExpectSuccess({mode: {type: createMode}});
     const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);
 
     await usingApi(async (api) => {
@@ -107,7 +112,7 @@
       const tx = api.tx.nft.burnItem(collectionId, tokenId, 0);
       const events2 = await submitTransactionAsync(bob, tx);
       const result2 = getGenericResult(events2);
-  
+
       // Get balances 
       const balance: any = (await api.query.nft.reFungibleItemList(collectionId, tokenId)).toJSON();
       // console.log(balance);
modifiedtests/src/change-collection-owner.test.tsdiffbeforeafterboth
--- a/tests/src/change-collection-owner.test.ts
+++ b/tests/src/change-collection-owner.test.ts
@@ -1,4 +1,9 @@
-import chai from 'chai';
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
+import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import privateKey from './substrate/privateKey';
 import { default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync } from "./substrate/substrate-api";
modifiedtests/src/confirmSponsorship.test.tsdiffbeforeafterboth
--- a/tests/src/confirmSponsorship.test.ts
+++ b/tests/src/confirmSponsorship.test.ts
@@ -115,7 +115,7 @@
   });
 
   it('ReFungible: Transfer fees are paid by the sponsor after confirmation', async () => {
-    const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0 }});
+    const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
     await setCollectionSponsorExpectSuccess(collectionId, bob.address);
     await confirmSponsorshipExpectSuccess(collectionId, '//Bob');
 
@@ -247,7 +247,7 @@
   });
 
   it('ReFungible: Sponsoring is rate limited', async () => {
-    const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0 }});
+    const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
     await setCollectionSponsorExpectSuccess(collectionId, bob.address);
     await confirmSponsorshipExpectSuccess(collectionId, '//Bob');
 
modifiedtests/src/contracts.test.tsdiffbeforeafterboth
--- a/tests/src/contracts.test.ts
+++ b/tests/src/contracts.test.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import chai from "chai";
 import chaiAsPromised from 'chai-as-promised';
 import usingApi, { submitTransactionAsync, submitTransactionExpectFailAsync } from "./substrate/substrate-api";
modifiedtests/src/createCollection.test.tsdiffbeforeafterboth
--- a/tests/src/createCollection.test.ts
+++ b/tests/src/createCollection.test.ts
@@ -28,7 +28,7 @@
     await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
   });
   it('Create new ReFungible collection', async () => {
-    await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
+    await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
   });
 });
 
modifiedtests/src/createItem.test.tsdiffbeforeafterboth
--- a/tests/src/createItem.test.ts
+++ b/tests/src/createItem.test.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import { default as usingApi } from './substrate/substrate-api';
 import { Keyring } from "@polkadot/api";
 import { IKeyringPair } from "@polkadot/types/types";
@@ -28,7 +33,7 @@
   });
   it('Create new item in ReFungible collection', async () => {
     const createMode = 'ReFungible';
-    const newCollectionID = await createCollectionExpectSuccess({mode: {type: createMode, decimalPoints: 0}});
+    const newCollectionID = await createCollectionExpectSuccess({mode: {type: createMode}});
     await createItemExpectSuccess(alice, newCollectionID, createMode);
   });
 });
modifiedtests/src/createMultipleItems.test.tsdiffbeforeafterboth
--- a/tests/src/createMultipleItems.test.ts
+++ b/tests/src/createMultipleItems.test.ts
@@ -56,14 +56,14 @@
 
   it('Create  0x31, 0x32, 0x33 items in active ReFungible collection and verify tokens data in chain', async () => {
     await usingApi(async (api: ApiPromise) => {
-      const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
+      const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
       const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId) as unknown as BN;
       expect(itemsListIndexBefore.toNumber()).to.be.equal(0);
       const Alice = privateKey('//Alice');
       const args = [
-        { Refungible: ['0x31', '0x31'] },
-        { Refungible: ['0x32', '0x32'] },
-        { Refungible: ['0x33', '0x33'] },
+        {refungible: {const_data: [0x31], variable_data: [0x31], pieces: 1}},
+        {refungible: {const_data: [0x32], variable_data: [0x32], pieces: 1}},
+        {refungible: {const_data: [0x33], variable_data: [0x33], pieces: 1}},
       ];
       const createMultipleItemsTx = await api.tx.nft
         .createMultipleItems(collectionId, Alice.address, args);
@@ -137,7 +137,7 @@
 
       // ReFungible
       const collectionIdReFungible =
-        await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
+        await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
       const argsReFungible = [
         { ReFungible: ['1'.repeat(2049), '1'.repeat(2049)] },
         { ReFungible: ['2'.repeat(2049), '2'.repeat(2049)] },
modifiedtests/src/creditFeesToTreasury.test.tsdiffbeforeafterboth
--- a/tests/src/creditFeesToTreasury.test.ts
+++ b/tests/src/creditFeesToTreasury.test.ts
@@ -17,6 +17,8 @@
   transferExpectSuccess
 } from './util/helpers';
 
+import { default as waitNewBlocks } from './substrate/wait-new-blocks';
+
 chai.use(chaiAsPromised);
 const expect = chai.expect;
 
@@ -37,6 +39,8 @@
 
   it('Total issuance does not change', async () => {
     await usingApi(async (api) => {
+      await waitNewBlocks(api, 1);
+
       const totalBefore = new BigNumber((await api.query.balances.totalIssuance()).toString());
 
       const alicePrivateKey = privateKey('//Alice');
@@ -54,6 +58,8 @@
 
   it('Sender balance decreased by fee+sent amount, Treasury balance increased by fee', async () => {
     await usingApi(async (api) => {
+      await waitNewBlocks(api, 1);
+
       const alicePrivateKey = privateKey('//Alice');
       const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());
       const aliceBalanceBefore = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());
@@ -74,6 +80,8 @@
 
   it('Treasury balance increased by failed tx fee', async () => {
     await usingApi(async (api) => {
+      await waitNewBlocks(api, 1);
+
       const bobPrivateKey = privateKey('//Bob');
       const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());
       const bobBalanceBefore = new BigNumber((await api.query.system.account(bobsPublicKey)).data.free.toString());
@@ -92,6 +100,8 @@
 
   it('NFT Transactions also send fees to Treasury', async () => {
     await usingApi(async (api) => {
+      await waitNewBlocks(api, 1);
+
       const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());
       const aliceBalanceBefore = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());
 
@@ -108,15 +118,12 @@
 
   it('Fees are sane', async () => {
     await usingApi(async (api) => {
-      const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());
       const aliceBalanceBefore = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());
 
       await createCollectionExpectSuccess();
 
-      const treasuryBalanceAfter = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());
       const aliceBalanceAfter = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());
       const fee = aliceBalanceBefore.minus(aliceBalanceAfter);
-      const treasuryIncrease = treasuryBalanceAfter.minus(treasuryBalanceBefore);
 
       expect(fee.dividedBy(1e15).toNumber()).to.be.lessThan(saneMaximumFee);
       expect(fee.dividedBy(1e15).toNumber()).to.be.greaterThan(saneMinimumFee);
modifiedtests/src/destroyCollection.test.tsdiffbeforeafterboth
--- a/tests/src/destroyCollection.test.ts
+++ b/tests/src/destroyCollection.test.ts
@@ -1,12 +1,14 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
-import { default as usingApi, submitTransactionAsync } from "./substrate/substrate-api";
-import { createCollectionExpectSuccess, createCollectionExpectFailure, destroyCollectionExpectSuccess, destroyCollectionExpectFailure } from "./util/helpers";
-import type { AccountId, EventRecord } from '@polkadot/types/interfaces';
-import privateKey from './substrate/privateKey';
+import { default as usingApi } from "./substrate/substrate-api";
+import { createCollectionExpectSuccess, destroyCollectionExpectSuccess, destroyCollectionExpectFailure } from "./util/helpers";
 
 chai.use(chaiAsPromised);
-const expect = chai.expect;
 
 describe('integration test: ext. destroyCollection():', () => {
   it('NFT collection can be destroyed', async () => {
@@ -18,7 +20,7 @@
     await destroyCollectionExpectSuccess(collectionId);
   });
   it('ReFungible collection can be destroyed', async () => {
-    const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
+    const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
     await destroyCollectionExpectSuccess(collectionId);
   });
 });
modifiedtests/src/enableContractSponsoring.test.tsdiffbeforeafterboth
--- a/tests/src/enableContractSponsoring.test.ts
+++ b/tests/src/enableContractSponsoring.test.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import { IKeyringPair } from '@polkadot/types/types';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
modifiedtests/src/removeCollectionAdmin.test.tsdiffbeforeafterboth
--- a/tests/src/removeCollectionAdmin.test.ts
+++ b/tests/src/removeCollectionAdmin.test.ts
@@ -1,5 +1,9 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import { ApiPromise } from '@polkadot/api';
-import BN from 'bn.js';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import privateKey from './substrate/privateKey';
addedtests/src/removeFromContractWhiteList.test.tsdiffbeforeafterboth
--- /dev/null
+++ b/tests/src/removeFromContractWhiteList.test.ts
@@ -0,0 +1,72 @@
+import privateKey from "./substrate/privateKey";
+import usingApi from "./substrate/substrate-api";
+import { deployFlipper, toggleFlipValueExpectFailure, toggleFlipValueExpectSuccess } from "./util/contracthelpers";
+import { addToContractWhiteListExpectSuccess, isWhitelistedInContract, removeFromContractWhiteListExpectFailure, removeFromContractWhiteListExpectSuccess, toggleContractWhitelistExpectSuccess } from "./util/helpers";
+import { IKeyringPair } from '@polkadot/types/types';
+import { expect } from "chai";
+
+describe('Integration Test removeFromContractWhiteList', () => {
+    let bob: IKeyringPair;
+
+    before(() => {
+        bob = privateKey('//Bob');
+    });
+
+    it('user is no longer whitelisted after removal', async () => {
+        await usingApi(async (api) => {
+            const [flipper, deployer] = await deployFlipper(api);
+
+            await addToContractWhiteListExpectSuccess(deployer, flipper.address, bob.address);
+            await removeFromContractWhiteListExpectSuccess(deployer, flipper.address, bob.address);
+
+            expect(await isWhitelistedInContract(flipper.address, bob.address)).to.be.false;
+        });
+    });
+
+    it('user can\'t execute contract after removal', async () => {
+        await usingApi(async (api) => {
+            const [flipper, deployer] = await deployFlipper(api);
+            await toggleContractWhitelistExpectSuccess(deployer, flipper.address, true);
+
+            await addToContractWhiteListExpectSuccess(deployer, flipper.address, bob.address);
+            await toggleFlipValueExpectSuccess(bob, flipper);
+
+            await removeFromContractWhiteListExpectSuccess(deployer, flipper.address, bob.address);
+            await toggleFlipValueExpectFailure(bob, flipper);
+        });
+    });
+
+    it('can be called twice', async () => {
+        await usingApi(async (api) => {
+            const [flipper, deployer] = await deployFlipper(api);
+
+            await addToContractWhiteListExpectSuccess(deployer, flipper.address, bob.address);
+            await removeFromContractWhiteListExpectSuccess(deployer, flipper.address, bob.address);
+            await removeFromContractWhiteListExpectSuccess(deployer, flipper.address, bob.address);
+        });
+    });
+});
+
+describe('Negative Integration Test removeFromContractWhiteList', () => {
+    let alice: IKeyringPair;
+    let bob: IKeyringPair;
+
+    before(() => {
+        alice = privateKey('//Alice');
+        bob = privateKey('//Bob');
+    });
+
+    it('fails when called with non-contract address', async () => {
+        await usingApi(async () => {
+            await removeFromContractWhiteListExpectFailure(alice, alice.address, bob.address);
+        });
+    });
+
+    it('fails when executed by non owner', async () => {
+        await usingApi(async (api) => {
+            const [flipper, _] = await deployFlipper(api);
+
+            await removeFromContractWhiteListExpectFailure(alice, flipper.address, bob.address);
+        });
+    });
+});
modifiedtests/src/removeFromWhiteList.test.tsdiffbeforeafterboth
--- a/tests/src/removeFromWhiteList.test.ts
+++ b/tests/src/removeFromWhiteList.test.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import { default as usingApi } from './substrate/substrate-api';
modifiedtests/src/setCollectionLimits.test.tsdiffbeforeafterboth
--- a/tests/src/setCollectionLimits.test.ts
+++ b/tests/src/setCollectionLimits.test.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 // https://unique-network.readthedocs.io/en/latest/jsapi.html#setchainlimits
 import { ApiPromise, Keyring } from '@polkadot/api';
 import { IKeyringPair } from '@polkadot/types/types';
modifiedtests/src/setCollectionSponsor.test.tsdiffbeforeafterboth
--- a/tests/src/setCollectionSponsor.test.ts
+++ b/tests/src/setCollectionSponsor.test.ts
@@ -9,7 +9,6 @@
 import { createCollectionExpectSuccess, setCollectionSponsorExpectSuccess, destroyCollectionExpectSuccess, setCollectionSponsorExpectFailure } from "./util/helpers";
 import { Keyring } from "@polkadot/api";
 import { IKeyringPair } from "@polkadot/types/types";
-import type { AccountId } from '@polkadot/types/interfaces';
 
 chai.use(chaiAsPromised);
 const expect = chai.expect;
@@ -34,7 +33,7 @@
     await setCollectionSponsorExpectSuccess(collectionId, bob.address);
   });
   it('Set ReFungible collection sponsor', async () => {
-    const collectionId = await createCollectionExpectSuccess({ mode: {type: 'ReFungible', decimalPoints: 0} });
+    const collectionId = await createCollectionExpectSuccess({ mode: {type: 'ReFungible'} });
     await setCollectionSponsorExpectSuccess(collectionId, bob.address);
   });
 
modifiedtests/src/setConstOnChainSchema.test.tsdiffbeforeafterboth
--- a/tests/src/setConstOnChainSchema.test.ts
+++ b/tests/src/setConstOnChainSchema.test.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import { Keyring } from '@polkadot/api';
 import { IKeyringPair } from '@polkadot/types/types';
 import chai from 'chai';
modifiedtests/src/setContractSponsoringRateLimit.test.tsdiffbeforeafterboth
--- a/tests/src/setContractSponsoringRateLimit.test.ts
+++ b/tests/src/setContractSponsoringRateLimit.test.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import { IKeyringPair } from '@polkadot/types/types';
 import privateKey from './substrate/privateKey';
 import usingApi from './substrate/substrate-api';
modifiedtests/src/setMintPermission.test.tsdiffbeforeafterboth
--- a/tests/src/setMintPermission.test.ts
+++ b/tests/src/setMintPermission.test.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import { IKeyringPair } from '@polkadot/types/types';
 import privateKey from './substrate/privateKey';
 import usingApi from './substrate/substrate-api';
modifiedtests/src/setPublicAccessMode.test.tsdiffbeforeafterboth
--- a/tests/src/setPublicAccessMode.test.ts
+++ b/tests/src/setPublicAccessMode.test.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 // https://unique-network.readthedocs.io/en/latest/jsapi.html#setschemaversion
 import { ApiPromise, Keyring } from '@polkadot/api';
 import { IKeyringPair } from '@polkadot/types/types';
modifiedtests/src/setSchemaVersion.test.tsdiffbeforeafterboth
--- a/tests/src/setSchemaVersion.test.ts
+++ b/tests/src/setSchemaVersion.test.ts
@@ -1,7 +1,11 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 // https://unique-network.readthedocs.io/en/latest/jsapi.html#setschemaversion
 import { ApiPromise, Keyring } from '@polkadot/api';
 import { IKeyringPair } from '@polkadot/types/types';
-import BN from 'bn.js';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import usingApi, {submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';
modifiedtests/src/setVariableMetaData.test.tsdiffbeforeafterboth
--- a/tests/src/setVariableMetaData.test.ts
+++ b/tests/src/setVariableMetaData.test.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import { IKeyringPair } from '@polkadot/types/types';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
modifiedtests/src/setVariableOnChainSchema.test.tsdiffbeforeafterboth
--- a/tests/src/setVariableOnChainSchema.test.ts
+++ b/tests/src/setVariableOnChainSchema.test.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import { Keyring } from '@polkadot/api';
 import { IKeyringPair } from '@polkadot/types/types';
 import chai from 'chai';
modifiedtests/src/toggleContractWhiteList.test.tsdiffbeforeafterboth
--- a/tests/src/toggleContractWhiteList.test.ts
+++ b/tests/src/toggleContractWhiteList.test.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import chai from "chai";
 import chaiAsPromised from 'chai-as-promised';
 import usingApi, { submitTransactionAsync, submitTransactionExpectFailAsync } from "./substrate/substrate-api";
modifiedtests/src/transfer.test.tsdiffbeforeafterboth
--- a/tests/src/transfer.test.ts
+++ b/tests/src/transfer.test.ts
@@ -63,7 +63,7 @@
     });
   });
 
-  it('Create collection, balance transfers and check balance', async () => {
+  it('User can transfer owned token', async () => {
     await usingApi(async (api) => {
       const Alice = privateKey('//Alice');
       const Bob = privateKey('//Bob');
@@ -77,10 +77,10 @@
       await transferExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1, 'Fungible');
       // reFungible
       const reFungibleCollectionId = await
-        createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
+        createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
       const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
       await transferExpectSuccess(reFungibleCollectionId,
-        newReFungibleTokenId, Alice, Bob, 1, 'ReFungible');
+        newReFungibleTokenId, Alice, Bob, 100, 'ReFungible');
     });
   });
 });
@@ -119,7 +119,7 @@
     await transferExpectFail(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1, 'Fungible');
     // reFungible
     const reFungibleCollectionId = await
-      createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
+      createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
     const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
     await destroyCollectionExpectSuccess(reFungibleCollectionId);
     await transferExpectFail(reFungibleCollectionId,
@@ -134,7 +134,7 @@
     await transferExpectFail(fungibleCollectionId, 2, Alice, Bob, 1, 'Fungible');
     // reFungible
     const reFungibleCollectionId = await
-      createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
+      createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
     await transferExpectFail(reFungibleCollectionId,
       2, Alice, Bob, 1, 'ReFungible');
   });
@@ -151,7 +151,7 @@
     await transferExpectFail(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1, 'Fungible');
     // reFungible
     const reFungibleCollectionId = await
-      createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
+      createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
     const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
     await burnItemExpectSuccess(Alice, reFungibleCollectionId, newReFungibleTokenId, 1);
     await transferExpectFail(reFungibleCollectionId,
@@ -168,7 +168,7 @@
     await transferExpectFail(fungibleCollectionId, newFungibleTokenId, Charlie, Bob, 1, 'Fungible');
     // reFungible
     const reFungibleCollectionId = await
-      createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
+      createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
     const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
     await transferExpectFail(reFungibleCollectionId,
       newReFungibleTokenId, Charlie, Bob, 1, 'ReFungible');
modifiedtests/src/transferFrom.test.tsdiffbeforeafterboth
--- a/tests/src/transferFrom.test.ts
+++ b/tests/src/transferFrom.test.ts
@@ -15,6 +15,7 @@
   destroyCollectionExpectSuccess,
   transferFromExpectFail,
   transferFromExpectSuccess,
+  burnItemExpectSuccess,
 } from './util/helpers';
 
 chai.use(chaiAsPromised);
@@ -25,7 +26,7 @@
     await usingApi(async (api: ApiPromise) => {
       const Alice = privateKey('//Alice');
       const Bob = privateKey('//Bob');
-      const Charlie = privateKey('//CHARLIE');
+      const Charlie = privateKey('//Charlie');
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
       const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
@@ -40,11 +41,11 @@
       await transferFromExpectSuccess(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 1, 'Fungible');
       // reFungible
       const reFungibleCollectionId = await
-        createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
+        createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
       const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
-      await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);
+      await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 100);
       await transferFromExpectSuccess(reFungibleCollectionId,
-        newReFungibleTokenId, Bob, Alice, Charlie, 1, 'ReFungible');
+        newReFungibleTokenId, Bob, Alice, Charlie, 100, 'ReFungible');
     });
   });
 });
@@ -54,7 +55,7 @@
     await usingApi(async (api: ApiPromise) => {
       const Alice = privateKey('//Alice');
       const Bob = privateKey('//Bob');
-      const Charlie = privateKey('//CHARLIE');
+      const Charlie = privateKey('//Charlie');
       // nft
       const nftCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number;
       await approveExpectFail(nftCollectionCount + 1, 1, Alice, Bob);
@@ -96,7 +97,7 @@
     await usingApi(async (api: ApiPromise) => {
       const Alice = privateKey('//Alice');
       const Bob = privateKey('//Bob');
-      const Charlie = privateKey('//CHARLIE');
+      const Charlie = privateKey('//Charlie');
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
       const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
@@ -109,7 +110,7 @@
       await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 1);
       // reFungible
       const reFungibleCollectionId = await
-        createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
+        createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
       const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
       await transferFromExpectFail(reFungibleCollectionId,
         newReFungibleTokenId, Bob, Alice, Charlie, 1);
@@ -120,7 +121,7 @@
     await usingApi(async (api: ApiPromise) => {
       const Alice = privateKey('//Alice');
       const Bob = privateKey('//Bob');
-      const Charlie = privateKey('//CHARLIE');
+      const Charlie = privateKey('//Charlie');
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
       const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
@@ -135,7 +136,7 @@
       await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 2);
       // reFungible
       const reFungibleCollectionId = await
-        createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
+        createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
       const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
       await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);
       await transferFromExpectFail(reFungibleCollectionId,
@@ -147,8 +148,8 @@
     await usingApi(async (api: ApiPromise) => {
       const Alice = privateKey('//Alice');
       const Bob = privateKey('//Bob');
-      const Charlie = privateKey('//CHARLIE');
-      const Dave = privateKey('//DAVE');
+      const Charlie = privateKey('//Charlie');
+      const Dave = privateKey('//Dave');
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
       const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
@@ -174,7 +175,7 @@
       }
       // reFungible
       const reFungibleCollectionId = await
-        createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
+        createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
       const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
       try {
         await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, Dave, Bob);
@@ -185,4 +186,83 @@
       }
     });
   });
+  it( 'transferFrom burnt token before approve NFT', async () => {
+    await usingApi(async (api: ApiPromise) => {
+      const Alice = privateKey('//Alice');
+      const Bob = privateKey('//Bob');
+      const Charlie = privateKey('//Charlie');
+      // nft
+      const nftCollectionId = await createCollectionExpectSuccess();
+      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
+      await burnItemExpectSuccess(Alice, nftCollectionId, newNftTokenId, 1);
+      await approveExpectFail(nftCollectionId, newNftTokenId, Alice, Bob);
+      await transferFromExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, Charlie, 1);      
+    });
+  });
+  it( 'transferFrom burnt token before approve Fungible', async () => {
+    await usingApi(async (api: ApiPromise) => {
+    const Alice = privateKey('//Alice');
+      const Bob = privateKey('//Bob');
+      const Charlie = privateKey('//Charlie');
+      const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
+      const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
+      await burnItemExpectSuccess(Alice, fungibleCollectionId, 1, 10);
+      await approveExpectFail(fungibleCollectionId, newFungibleTokenId, Alice, Bob);
+      await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 1);
+          
+    });
+  }); 
+  it( 'transferFrom burnt token before approve ReFungible', async () => {
+    await usingApi(async (api: ApiPromise) => {
+    const Alice = privateKey('//Alice');
+      const Bob = privateKey('//Bob');
+      const Charlie = privateKey('//Charlie');
+      const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
+      const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
+      await burnItemExpectSuccess(Alice, reFungibleCollectionId, newReFungibleTokenId, 1);
+      await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);
+      await transferFromExpectFail(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice, Charlie, 1);
+          
+    });
+  });
+  
+  it( 'transferFrom burnt token after approve NFT', async () => {
+    await usingApi(async (api: ApiPromise) => {
+      const Alice = privateKey('//Alice');
+      const Bob = privateKey('//Bob');
+      const Charlie = privateKey('//Charlie');
+      // nft
+      const nftCollectionId = await createCollectionExpectSuccess();
+      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
+      await approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob);
+      await burnItemExpectSuccess(Alice, nftCollectionId, newNftTokenId, 1);
+      await transferFromExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, Charlie, 1);      
+    });
+  });
+  it( 'transferFrom burnt token after approve Fungible', async () => {
+    await usingApi(async (api: ApiPromise) => {
+    const Alice = privateKey('//Alice');
+      const Bob = privateKey('//Bob');
+      const Charlie = privateKey('//Charlie');
+      const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
+      const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
+      await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);
+      await burnItemExpectSuccess(Alice, fungibleCollectionId, 1, 10);
+      await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 1);
+          
+    });
+  }); 
+  it( 'transferFrom burnt token after approve ReFungible', async () => {
+    await usingApi(async (api: ApiPromise) => {
+    const Alice = privateKey('//Alice');
+      const Bob = privateKey('//Bob');
+      const Charlie = privateKey('//Charlie');
+      const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
+      const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
+      await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);
+      await burnItemExpectSuccess(Alice, reFungibleCollectionId, newReFungibleTokenId, 1);
+      await transferFromExpectFail(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice, Charlie, 1);
+          
+    });
+  }); 
 });
modifiedtests/src/types.tsdiffbeforeafterboth
--- a/tests/src/types.ts
+++ b/tests/src/types.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import BN from 'bn.js';
 
 export interface ICollectionInterface {
modifiedtests/src/util/helpers.tsdiffbeforeafterboth
--- a/tests/src/util/helpers.ts
+++ b/tests/src/util/helpers.ts
@@ -126,23 +126,8 @@
 
 interface ReFungible {
   type: 'ReFungible';
-  decimalPoints: number;
-}
-
-interface Nft {
-  type: 'NFT'
-}
-
-interface Fungible {
-  type: 'Fungible',
-  decimalPoints: number
 }
 
-interface ReFungible {
-  type: 'ReFungible',
-  decimalPoints: number
-}
-
 type CollectionMode = Nft | Fungible | ReFungible | Invalid;
 
 export type CreateCollectionParams = {
@@ -176,7 +161,7 @@
     } else if (mode.type === 'Fungible') {
       modeprm = {fungible: mode.decimalPoints};
     } else if (mode.type === 'ReFungible') {
-      modeprm = {refungible: mode.decimalPoints};
+      modeprm = {refungible: null};
     } else if (mode.type === 'Invalid') {
       modeprm = {invalid: null};
     }
@@ -218,7 +203,7 @@
   } else if (mode.type === 'Fungible') {
     modeprm = {fungible: mode.decimalPoints};
   } else if (mode.type === 'ReFungible') {
-    modeprm = {refungible: mode.decimalPoints};
+    modeprm = {refungible: null};
   } else if (mode.type === 'Invalid') {
     modeprm = {invalid: null};
   }
@@ -383,6 +368,7 @@
   });
 }
 
+
 export async function confirmSponsorshipExpectFailure(collectionId: number, senderSeed: string = '//Alice') {
   await usingApi(async (api) => {
 
@@ -433,6 +419,54 @@
   });
 }
 
+export async function toggleContractWhitelistExpectSuccess(sender: IKeyringPair, contractAddress: AccountId | string, enabled: boolean) {
+  await usingApi(async (api) => {
+    const tx = api.tx.nft.toggleContractWhiteList(contractAddress, true);
+    const events = await submitTransactionAsync(sender, tx);
+    const result = getGenericResult(events);
+
+    expect(result.success).to.be.true;
+  });
+}
+
+export async function isWhitelistedInContract(contractAddress: AccountId | string, user: string) {
+  let whitelisted: boolean = false;
+  await usingApi(async (api) => {
+    whitelisted = (await api.query.nft.contractWhiteList(contractAddress, user)).toJSON() as boolean;
+  });
+  return whitelisted;
+}
+
+export async function addToContractWhiteListExpectSuccess(sender: IKeyringPair, contractAddress: AccountId | string, user: string) {
+  await usingApi(async (api) => {
+    const tx = api.tx.nft.addToContractWhiteList(contractAddress, user);
+    const events = await submitTransactionAsync(sender, tx);
+    const result = getGenericResult(events);
+
+    expect(result.success).to.be.true;
+  });
+}
+
+export async function removeFromContractWhiteListExpectSuccess(sender: IKeyringPair, contractAddress: AccountId | string, user: string) {
+  await usingApi(async (api) => {
+    const tx = api.tx.nft.removeFromContractWhiteList(contractAddress, user);
+    const events = await submitTransactionAsync(sender, tx);
+    const result = getGenericResult(events);
+
+    expect(result.success).to.be.true;
+  });
+}
+
+export async function removeFromContractWhiteListExpectFailure(sender: IKeyringPair, contractAddress: AccountId | string, user: string) {
+  await usingApi(async (api) => {
+    const tx = api.tx.nft.removeFromContractWhiteList(contractAddress, user);
+    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;
+    const result = getGenericResult(events);
+
+    expect(result.success).to.be.false;
+  });
+}
+
 export async function setVariableMetaDataExpectSuccess(sender: IKeyringPair, collectionId: number, itemId: number, data: number[]) {
   await usingApi(async (api) => {
     const tx = api.tx.nft.setVariableMetaData(collectionId, itemId, '0x' + Buffer.from(data).toString('hex'));
@@ -483,7 +517,7 @@
 
 export async function
 approveExpectSuccess(collectionId: number,
-                     tokenId: number, owner: IKeyringPair, approved: IKeyringPair, amount: number | bigint = 1) {
+                     tokenId: number, owner: IKeyringPair, approved: IKeyringPair, amount: number | bigint = 1) { //alice,bob
   await usingApi(async (api: ApiPromise) => {
     const allowanceBefore =
       await api.query.nft.allowances(collectionId, [tokenId, owner.address, approved.address]) as unknown as BN;
@@ -501,9 +535,9 @@
 export async function
 transferFromExpectSuccess(collectionId: number,
                           tokenId: number,
-                          accountApproved: IKeyringPair,
-                          accountFrom: IKeyringPair,
-                          accountTo: IKeyringPair,
+                          accountApproved: IKeyringPair, //bob
+                          accountFrom: IKeyringPair, //alice
+                          accountTo: IKeyringPair, //charlie
                           value: number | bigint = 1,
                           type: string = 'NFT') {
   await usingApi(async (api: ApiPromise) => {
@@ -658,6 +692,9 @@
     if (createMode === 'Fungible') {
       const createData = {fungible: {value: 10}};
       tx = api.tx.nft.createItem(collectionId, owner, createData);
+    } else if (createMode === 'ReFungible') {
+      const createData = {refungible: {const_data: [], variable_data: [], pieces: 100}};
+      tx = api.tx.nft.createItem(collectionId, owner, createData);
     } else {
       tx = api.tx.nft.createItem(collectionId, owner, createMode);
     }