difftreelog
Merge remote-tracking branch 'origin/develop' into feature/NFTPAR-366_upstream_updates
in: master
27 files changed
.github/workflows/node_build_test.ymldiffbeforeafterboth--- a/.github/workflows/node_build_test.yml
+++ b/.github/workflows/node_build_test.yml
@@ -31,14 +31,14 @@
username: ${{ secrets.SERVER_USERNAME }}
key: ${{ secrets.KEY }}
port: ${{ secrets.SERVER_PORT }}
- # command_timeout: 200m
+ command_timeout: 240m
script: |
eval $(ssh-agent -s)
- ssh-add /home/devops/.ssh/git_hub
+ ssh-add /home/polkadot/.ssh/git_hub
git clone git@github.com:usetech-llc/nft_private.git
cd nft_private
git checkout develop
# git pull --all
chmod +x ci_node.sh
./ci_node.sh
- rm -rf /home/polkadot/nft_private
\ No newline at end of file
+ rm -rf /home/polkadot/nft_private
Cargo.lockdiffbeforeafterboth1583 "log",1583 "log",1584 "parity-scale-codec 2.0.1",1584 "parity-scale-codec 2.0.1",1585 "sc-client-api",1585 "sc-client-api",1586 "sp-api",1586 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1587 "sp-block-builder",1587 "sp-block-builder",1588 "sp-blockchain",1588 "sp-blockchain",1589 "sp-consensus",1589 "sp-consensus",1590 "sp-core",1590 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1591 "sp-inherents",1591 "sp-inherents 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1592 "sp-runtime",1592 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1593 "sp-timestamp",1593 "sp-timestamp 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1594 "substrate-prometheus-endpoint",1594 "substrate-prometheus-endpoint",1595]1595]159615961603 "kvdb-rocksdb",1603 "kvdb-rocksdb",1604 "parity-scale-codec 2.0.1",1604 "parity-scale-codec 2.0.1",1605 "parking_lot 0.11.1",1605 "parking_lot 0.11.1",1606 "sp-core",1606 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1607 "sp-database",1607 "sp-database",1608 "sp-runtime",1608 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1609]1609]161016101611[[package]]1611[[package]]1621 "futures-timer 3.0.2",1621 "futures-timer 3.0.2",1622 "log",1622 "log",1623 "sc-client-api",1623 "sc-client-api",1624 "sp-api",1624 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1625 "sp-blockchain",1625 "sp-blockchain",1626 "sp-runtime",1626 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1627]1627]162816281629[[package]]1629[[package]]1659 "sc-rpc",1659 "sc-rpc",1660 "sc-service",1660 "sc-service",1661 "sha3 0.8.2",1661 "sha3 0.8.2",1662 "sp-api",1662 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1663 "sp-blockchain",1663 "sp-blockchain",1664 "sp-io",1664 "sp-io 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1665 "sp-runtime",1665 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1666 "sp-storage",1666 "sp-storage 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1667 "sp-transaction-pool",1667 "sp-transaction-pool",1668]1668]166916691808 "parity-scale-codec 2.0.1",1808 "parity-scale-codec 2.0.1",1809 "rlp 0.5.0",1809 "rlp 0.5.0",1810 "sha3 0.8.2",1810 "sha3 0.8.2",1811 "sp-core",1811 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1812 "sp-runtime",1812 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1813 "sp-std",1813 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1814]1814]181518151816[[package]]1816[[package]]1822 "impl-trait-for-tuples 0.1.3",1822 "impl-trait-for-tuples 0.1.3",1823 "parity-scale-codec 2.0.1",1823 "parity-scale-codec 2.0.1",1824 "serde",1824 "serde",1825 "sp-core",1825 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1826 "sp-std",1826 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1827]1827]182818281829[[package]]1829[[package]]1835 "ethereum-types 0.11.0",1835 "ethereum-types 0.11.0",1836 "fp-evm",1836 "fp-evm",1837 "parity-scale-codec 2.0.1",1837 "parity-scale-codec 2.0.1",1838 "sp-api",1838 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1839 "sp-core",1839 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1840 "sp-io",1840 "sp-io 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1841 "sp-runtime",1841 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1842 "sp-std",1842 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1843]1843]184418441845[[package]]1845[[package]]1851 "ethereum-types 0.11.0",1851 "ethereum-types 0.11.0",1852 "fp-evm",1852 "fp-evm",1853 "parity-scale-codec 2.0.1",1853 "parity-scale-codec 2.0.1",1854 "sp-api",1854 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1855 "sp-core",1855 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1856 "sp-runtime",1856 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1857 "sp-std",1857 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1858]1858]185918591860[[package]]1860[[package]]1861name = "frame-benchmarking"1861name = "frame-benchmarking"1862version = "3.1.0"1862version = "3.1.0"1863source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"1863source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"1864dependencies = [1864dependencies = [1865 "frame-support",1865 "frame-support 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1866 "frame-system",1866 "frame-system 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1867 "linregress",1867 "linregress",1868 "log",1868 "log",1869 "parity-scale-codec 2.0.1",1869 "parity-scale-codec 2.0.1",1870 "paste 1.0.4",1870 "paste 1.0.4",1871 "sp-api",1871 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1872 "sp-io",1872 "sp-io 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1873 "sp-runtime",1873 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1874 "sp-runtime-interface",1874 "sp-runtime-interface 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1875 "sp-std",1875 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1876 "sp-storage",1876 "sp-storage 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1877]1877]18781879[[package]]1880name = "frame-benchmarking"1881version = "3.1.0"1882source = "registry+https://github.com/rust-lang/crates.io-index"1883checksum = "70fe99487f84579a3f2c4ba52650fec875492eea41be0e4eea8019187f105052"1884dependencies = [1885 "frame-support 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",1886 "frame-system 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",1887 "linregress",1888 "parity-scale-codec 2.0.1",1889 "paste 1.0.4",1890 "sp-api 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",1891 "sp-io 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",1892 "sp-runtime 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",1893 "sp-runtime-interface 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",1894 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",1895 "sp-storage 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",1896]187818971879[[package]]1898[[package]]1880name = "frame-benchmarking-cli"1899name = "frame-benchmarking-cli"1883dependencies = [1902dependencies = [1884 "Inflector",1903 "Inflector",1885 "chrono",1904 "chrono",1886 "frame-benchmarking",1905 "frame-benchmarking 3.1.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1887 "handlebars",1906 "handlebars",1888 "parity-scale-codec 2.0.1",1907 "parity-scale-codec 2.0.1",1889 "sc-cli",1908 "sc-cli",1890 "sc-client-db",1909 "sc-client-db",1891 "sc-executor",1910 "sc-executor",1892 "sc-service",1911 "sc-service",1893 "serde",1912 "serde",1894 "sp-core",1913 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1895 "sp-externalities",1914 "sp-externalities 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1896 "sp-keystore",1915 "sp-keystore 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1897 "sp-runtime",1916 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1898 "sp-state-machine",1917 "sp-state-machine 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1899 "structopt",1918 "structopt",1900]1919]190119201904version = "3.0.0"1923version = "3.0.0"1905source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"1924source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"1906dependencies = [1925dependencies = [1907 "frame-support",1926 "frame-support 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1908 "frame-system",1927 "frame-system 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1909 "parity-scale-codec 2.0.1",1928 "parity-scale-codec 2.0.1",1910 "serde",1929 "serde",1911 "sp-core",1930 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1912 "sp-io",1931 "sp-io 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1913 "sp-runtime",1932 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1914 "sp-std",1933 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1915 "sp-tracing",1934 "sp-tracing 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1916]1935]191719361918[[package]]1937[[package]]1922dependencies = [1941dependencies = [1923 "parity-scale-codec 2.0.1",1942 "parity-scale-codec 2.0.1",1924 "serde",1943 "serde",1925 "sp-core",1944 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1926 "sp-std",1945 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1927]1946]19471948[[package]]1949name = "frame-metadata"1950version = "13.0.0"1951source = "registry+https://github.com/rust-lang/crates.io-index"1952checksum = "073f7bef18421362441a1708f8528e442234954611f95bdc554b313fb321948e"1953dependencies = [1954 "parity-scale-codec 2.0.1",1955 "serde",1956 "sp-core 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",1957 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",1958]192819591929[[package]]1960[[package]]1930name = "frame-support"1961name = "frame-support"1931version = "3.0.0"1962version = "3.0.0"1932source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"1963source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"1933dependencies = [1964dependencies = [1934 "bitflags",1965 "bitflags",1935 "frame-metadata",1966 "frame-metadata 13.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1936 "frame-support-procedural",1967 "frame-support-procedural 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1937 "impl-trait-for-tuples 0.2.1",1968 "impl-trait-for-tuples 0.2.1",1938 "log",1969 "log",1939 "once_cell",1970 "once_cell",1940 "parity-scale-codec 2.0.1",1971 "parity-scale-codec 2.0.1",1941 "paste 1.0.4",1972 "paste 1.0.4",1942 "serde",1973 "serde",1943 "smallvec 1.6.1",1974 "smallvec 1.6.1",1944 "sp-arithmetic",1975 "sp-arithmetic 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1945 "sp-core",1976 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1946 "sp-inherents",1977 "sp-inherents 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1947 "sp-io",1978 "sp-io 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1948 "sp-runtime",1979 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1949 "sp-staking",1980 "sp-staking 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1950 "sp-state-machine",1981 "sp-state-machine 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1951 "sp-std",1982 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1952 "sp-tracing",1983 "sp-tracing 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1953]1984]19851986[[package]]1987name = "frame-support"1988version = "3.0.0"1989source = "registry+https://github.com/rust-lang/crates.io-index"1990checksum = "04e521e6214615bd82ba6b5fc7fd40a9cc14fdeb40f83da5eba12aa2f8179fb8"1991dependencies = [1992 "bitflags",1993 "frame-metadata 13.0.0 (registry+https://github.com/rust-lang/crates.io-index)",1994 "frame-support-procedural 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",1995 "impl-trait-for-tuples 0.2.1",1996 "log",1997 "once_cell",1998 "parity-scale-codec 2.0.1",1999 "paste 1.0.4",2000 "serde",2001 "smallvec 1.6.1",2002 "sp-arithmetic 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",2003 "sp-core 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",2004 "sp-inherents 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",2005 "sp-io 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",2006 "sp-runtime 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",2007 "sp-staking 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",2008 "sp-state-machine 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",2009 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",2010 "sp-tracing 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",2011]195420121955[[package]]2013[[package]]1956name = "frame-support-procedural"2014name = "frame-support-procedural"1957version = "3.0.0"2015version = "3.0.0"1958source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"2016source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"1959dependencies = [2017dependencies = [1960 "Inflector",2018 "Inflector",1961 "frame-support-procedural-tools",2019 "frame-support-procedural-tools 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1962 "proc-macro2",2020 "proc-macro2",1963 "quote",2021 "quote",1964 "syn",2022 "syn",1965]2023]20242025[[package]]2026name = "frame-support-procedural"2027version = "3.0.0"2028source = "registry+https://github.com/rust-lang/crates.io-index"2029checksum = "2668e24cbaba7f0e91d0c92a94bd1ae425a942608ad0b775db32477f5df4da9e"2030dependencies = [2031 "Inflector",2032 "frame-support-procedural-tools 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",2033 "proc-macro2",2034 "quote",2035 "syn",2036]196620371967[[package]]2038[[package]]1968name = "frame-support-procedural-tools"2039name = "frame-support-procedural-tools"1969version = "3.0.0"2040version = "3.0.0"1970source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"2041source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"1971dependencies = [2042dependencies = [1972 "frame-support-procedural-tools-derive",2043 "frame-support-procedural-tools-derive 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1973 "proc-macro-crate 1.0.0",2044 "proc-macro-crate 1.0.0",1974 "proc-macro2",2045 "proc-macro2",1975 "quote",2046 "quote",1976 "syn",2047 "syn",1977]2048]20492050[[package]]2051name = "frame-support-procedural-tools"2052version = "3.0.0"2053source = "registry+https://github.com/rust-lang/crates.io-index"2054checksum = "d4f88cfd111e004590f4542b75e6d3302137b9067d7e7219e4ac47a535c3b5c1"2055dependencies = [2056 "frame-support-procedural-tools-derive 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",2057 "proc-macro-crate 0.1.5",2058 "proc-macro2",2059 "quote",2060 "syn",2061]197820621979[[package]]2063[[package]]1980name = "frame-support-procedural-tools-derive"2064name = "frame-support-procedural-tools-derive"1986 "syn",2070 "syn",1987]2071]20722073[[package]]2074name = "frame-support-procedural-tools-derive"2075version = "3.0.0"2076source = "registry+https://github.com/rust-lang/crates.io-index"2077checksum = "79285388b120ac96c15a791c56b26b9264f7231324fbe0fd05026acd92bf2e6a"2078dependencies = [2079 "proc-macro2",2080 "quote",2081 "syn",2082]198820831989[[package]]2084[[package]]1990name = "frame-system"2085name = "frame-system"1991version = "3.0.0"2086version = "3.0.0"1992source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"2087source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"1993dependencies = [2088dependencies = [1994 "frame-support",2089 "frame-support 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",1995 "impl-trait-for-tuples 0.2.1",2090 "impl-trait-for-tuples 0.2.1",1996 "log",2091 "log",1997 "parity-scale-codec 2.0.1",2092 "parity-scale-codec 2.0.1",1998 "serde",2093 "serde",1999 "sp-core",2094 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",2000 "sp-io",2095 "sp-io 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",2001 "sp-runtime",2096 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",2002 "sp-std",2097 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",2003 "sp-version",2098 "sp-version 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",2004]2099]21002101[[package]]2102name = "frame-system"2103version = "3.0.0"2104source = "registry+https://github.com/rust-lang/crates.io-index"2105checksum = "f5fedbff05d665c00bf4e089b4377fcb15b8bd37ebc3e5fc06665474cf6e25d7"2106dependencies = [2107 "frame-support 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",2108 "impl-trait-for-tuples 0.2.1",2109 "parity-scale-codec 2.0.1",2110 "serde",2111 "sp-core 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",2112 "sp-io 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",2113 "sp-runtime 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",2114 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",2115 "sp-version 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",2116]200521172006[[package]]2118[[package]]2007name = "frame-system-benchmarking"2119name = "frame-system-benchmarking"2008version = "3.0.0"2120version = "3.0.0"2009source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"2121source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"2010dependencies = [2122dependencies = [2011 "frame-benchmarking",2123 "frame-benchmarking 3.1.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",2012 "frame-support",2124 "frame-support 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",2013 "frame-system",2125 "frame-system 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",2014 "parity-scale-codec 2.0.1",2126 "parity-scale-codec 2.0.1",2015 "sp-core",2127 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",2016 "sp-runtime",2128 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",2017 "sp-std",2129 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",2018]2130]201921312020[[package]]2132[[package]]2023source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"2135source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"2024dependencies = [2136dependencies = [2025 "parity-scale-codec 2.0.1",2137 "parity-scale-codec 2.0.1",2026 "sp-api",2138 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",2027]2139]202821402029[[package]]2141[[package]]4012 "fc-rpc-core",4124 "fc-rpc-core",4013 "flexi_logger",4125 "flexi_logger",4014 "fp-rpc",4126 "fp-rpc",4015 "frame-benchmarking",4127 "frame-benchmarking 3.1.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4016 "frame-benchmarking-cli",4128 "frame-benchmarking-cli",4017 "futures 0.3.12",4129 "futures 0.3.12",4018 "jsonrpc-core 15.1.0",4130 "jsonrpc-core 15.1.0",4040 "sc-transaction-pool",4152 "sc-transaction-pool",4041 "serde",4153 "serde",4042 "serde_json",4154 "serde_json",4043 "sp-api",4155 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4044 "sp-block-builder",4156 "sp-block-builder",4045 "sp-blockchain",4157 "sp-blockchain",4046 "sp-consensus",4158 "sp-consensus",4047 "sp-consensus-aura",4159 "sp-consensus-aura",4048 "sp-core",4160 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4049 "sp-finality-grandpa",4161 "sp-finality-grandpa",4050 "sp-inherents",4162 "sp-inherents 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4051 "sp-runtime",4163 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4052 "sp-timestamp",4164 "sp-timestamp 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4053 "sp-transaction-pool",4165 "sp-transaction-pool",4054 "structopt",4166 "structopt",4055 "substrate-build-script-utils",4167 "substrate-build-script-utils",4061version = "3.0.0"4173version = "3.0.0"4062dependencies = [4174dependencies = [4063 "fp-rpc",4175 "fp-rpc",4064 "frame-benchmarking",4176 "frame-benchmarking 3.1.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4065 "frame-executive",4177 "frame-executive",4066 "frame-support",4178 "frame-support 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4067 "frame-system",4179 "frame-system 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4068 "frame-system-benchmarking",4180 "frame-system-benchmarking",4069 "frame-system-rpc-runtime-api",4181 "frame-system-rpc-runtime-api",4070 "hex-literal",4182 "hex-literal",4071 "pallet-aura",4183 "pallet-aura",4072 "pallet-balances",4184 "pallet-balances 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4073 "pallet-contracts",4185 "pallet-contracts",4074 "pallet-contracts-primitives",4186 "pallet-contracts-primitives",4075 "pallet-contracts-rpc-runtime-api",4187 "pallet-contracts-rpc-runtime-api",4076 "pallet-ethereum",4188 "pallet-ethereum",4077 "pallet-evm",4189 "pallet-evm",4078 "pallet-grandpa",4190 "pallet-grandpa",4191 "pallet-inflation",4079 "pallet-nft",4192 "pallet-nft",4080 "pallet-randomness-collective-flip",4193 "pallet-randomness-collective-flip 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4081 "pallet-sudo",4194 "pallet-sudo",4082 "pallet-timestamp",4195 "pallet-timestamp 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4083 "pallet-transaction-payment",4196 "pallet-transaction-payment",4084 "pallet-transaction-payment-rpc-runtime-api",4197 "pallet-transaction-payment-rpc-runtime-api",4085 "pallet-treasury",4198 "pallet-treasury",4086 "pallet-vesting",4199 "pallet-vesting",4087 "parity-scale-codec 2.0.1",4200 "parity-scale-codec 2.0.1",4088 "serde",4201 "serde",4089 "smallvec 1.6.1",4202 "smallvec 1.6.1",4090 "sp-api",4203 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4091 "sp-arithmetic",4204 "sp-arithmetic 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4092 "sp-block-builder",4205 "sp-block-builder",4093 "sp-consensus-aura",4206 "sp-consensus-aura",4094 "sp-core",4207 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4095 "sp-inherents",4208 "sp-inherents 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4096 "sp-offchain",4209 "sp-offchain",4097 "sp-runtime",4210 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4098 "sp-session",4211 "sp-session",4099 "sp-std",4212 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4100 "sp-transaction-pool",4213 "sp-transaction-pool",4101 "sp-version",4214 "sp-version 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4102 "substrate-wasm-builder",4215 "substrate-wasm-builder",4103]4216]410442174244version = "3.0.0"4357version = "3.0.0"4245source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"4358source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"4246dependencies = [4359dependencies = [4247 "frame-support",4360 "frame-support 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4248 "frame-system",4361 "frame-system 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4249 "pallet-session",4362 "pallet-session",4250 "pallet-timestamp",4363 "pallet-timestamp 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4251 "parity-scale-codec 2.0.1",4364 "parity-scale-codec 2.0.1",4252 "serde",4365 "serde",4253 "sp-application-crypto",4366 "sp-application-crypto 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4254 "sp-consensus-aura",4367 "sp-consensus-aura",4255 "sp-runtime",4368 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4256 "sp-std",4369 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4257]4370]425843714259[[package]]4372[[package]]4260name = "pallet-authorship"4373name = "pallet-authorship"4261version = "3.0.0"4374version = "3.0.0"4262source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"4375source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"4263dependencies = [4376dependencies = [4264 "frame-support",4377 "frame-support 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4265 "frame-system",4378 "frame-system 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4266 "impl-trait-for-tuples 0.2.1",4379 "impl-trait-for-tuples 0.2.1",4267 "parity-scale-codec 2.0.1",4380 "parity-scale-codec 2.0.1",4268 "sp-authorship",4381 "sp-authorship",4269 "sp-inherents",4382 "sp-inherents 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4270 "sp-runtime",4383 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4271 "sp-std",4384 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4272]4385]427343864274[[package]]4387[[package]]4275name = "pallet-balances"4388name = "pallet-balances"4276version = "3.0.0"4389version = "3.0.0"4277source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"4390source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"4278dependencies = [4391dependencies = [4279 "frame-benchmarking",4392 "frame-benchmarking 3.1.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4280 "frame-support",4393 "frame-support 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4281 "frame-system",4394 "frame-system 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4282 "log",4395 "log",4283 "parity-scale-codec 2.0.1",4396 "parity-scale-codec 2.0.1",4284 "serde",4397 "serde",4285 "sp-runtime",4398 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4286 "sp-std",4399 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4287]4400]44014402[[package]]4403name = "pallet-balances"4404version = "3.0.0"4405source = "registry+https://github.com/rust-lang/crates.io-index"4406checksum = "41aaeaf084e594273f82bcbf96416ef1fcab602e15dd1df04b9930eceb2eb518"4407dependencies = [4408 "frame-benchmarking 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",4409 "frame-support 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",4410 "frame-system 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",4411 "parity-scale-codec 2.0.1",4412 "serde",4413 "sp-runtime 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",4414 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",4415]428844164289[[package]]4417[[package]]4290name = "pallet-contracts"4418name = "pallet-contracts"4291version = "3.0.0"4419version = "3.0.0"4292source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"4420source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"4293dependencies = [4421dependencies = [4294 "frame-support",4422 "frame-support 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4295 "frame-system",4423 "frame-system 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4296 "log",4424 "log",4297 "pallet-contracts-primitives",4425 "pallet-contracts-primitives",4298 "pallet-contracts-proc-macro",4426 "pallet-contracts-proc-macro",4299 "parity-scale-codec 2.0.1",4427 "parity-scale-codec 2.0.1",4300 "parity-wasm 0.41.0",4428 "parity-wasm 0.41.0",4301 "pwasm-utils 0.16.0",4429 "pwasm-utils 0.16.0",4302 "serde",4430 "serde",4303 "sp-core",4431 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4304 "sp-io",4432 "sp-io 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4305 "sp-runtime",4433 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4306 "sp-sandbox",4434 "sp-sandbox",4307 "sp-std",4435 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4308 "wasmi-validation",4436 "wasmi-validation",4309]4437]431044384315dependencies = [4443dependencies = [4316 "bitflags",4444 "bitflags",4317 "parity-scale-codec 2.0.1",4445 "parity-scale-codec 2.0.1",4318 "sp-runtime",4446 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4319 "sp-std",4447 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4320]4448]432144494322[[package]]4450[[package]]4341 "pallet-contracts-rpc-runtime-api",4469 "pallet-contracts-rpc-runtime-api",4342 "parity-scale-codec 2.0.1",4470 "parity-scale-codec 2.0.1",4343 "serde",4471 "serde",4344 "sp-api",4472 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4345 "sp-blockchain",4473 "sp-blockchain",4346 "sp-core",4474 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4347 "sp-rpc",4475 "sp-rpc",4348 "sp-runtime",4476 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4349]4477]435044784351[[package]]4479[[package]]4355dependencies = [4483dependencies = [4356 "pallet-contracts-primitives",4484 "pallet-contracts-primitives",4357 "parity-scale-codec 2.0.1",4485 "parity-scale-codec 2.0.1",4358 "sp-api",4486 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4359 "sp-runtime",4487 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4360 "sp-std",4488 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4361]4489]436244904363[[package]]4491[[package]]4372 "fp-evm",4500 "fp-evm",4373 "fp-rpc",4501 "fp-rpc",4374 "fp-storage",4502 "fp-storage",4375 "frame-support",4503 "frame-support 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4376 "frame-system",4504 "frame-system 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4377 "libsecp256k1",4505 "libsecp256k1",4378 "pallet-balances",4506 "pallet-balances 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4379 "pallet-evm",4507 "pallet-evm",4380 "pallet-timestamp",4508 "pallet-timestamp 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4381 "parity-scale-codec 2.0.1",4509 "parity-scale-codec 2.0.1",4382 "rlp 0.5.0",4510 "rlp 0.5.0",4383 "rustc-hex",4511 "rustc-hex",4384 "serde",4512 "serde",4385 "sha3 0.8.2",4513 "sha3 0.8.2",4386 "sp-io",4514 "sp-io 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4387 "sp-runtime",4515 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4388 "sp-std",4516 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4389]4517]439045184391[[package]]4519[[package]]4397 "evm-gasometer",4525 "evm-gasometer",4398 "evm-runtime",4526 "evm-runtime",4399 "fp-evm",4527 "fp-evm",4400 "frame-support",4528 "frame-support 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4401 "frame-system",4529 "frame-system 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4402 "impl-trait-for-tuples 0.2.1",4530 "impl-trait-for-tuples 0.2.1",4403 "log",4531 "log",4404 "pallet-balances",4532 "pallet-balances 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4405 "pallet-timestamp",4533 "pallet-timestamp 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4406 "parity-scale-codec 2.0.1",4534 "parity-scale-codec 2.0.1",4407 "primitive-types 0.9.0",4535 "primitive-types 0.9.0",4408 "rlp 0.5.0",4536 "rlp 0.5.0",4409 "serde",4537 "serde",4410 "sha3 0.8.2",4538 "sha3 0.8.2",4411 "sp-core",4539 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4412 "sp-io",4540 "sp-io 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4413 "sp-runtime",4541 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4414 "sp-std",4542 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4415]4543]441645444417[[package]]4545[[package]]4418name = "pallet-grandpa"4546name = "pallet-grandpa"4419version = "3.0.0"4547version = "3.0.0"4420source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"4548source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"4421dependencies = [4549dependencies = [4422 "frame-benchmarking",4550 "frame-benchmarking 3.1.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4423 "frame-support",4551 "frame-support 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4424 "frame-system",4552 "frame-system 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4425 "log",4553 "log",4426 "pallet-authorship",4554 "pallet-authorship",4427 "pallet-session",4555 "pallet-session",4428 "parity-scale-codec 2.0.1",4556 "parity-scale-codec 2.0.1",4429 "serde",4557 "serde",4430 "sp-application-crypto",4558 "sp-application-crypto 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4431 "sp-core",4559 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4432 "sp-finality-grandpa",4560 "sp-finality-grandpa",4433 "sp-runtime",4561 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4434 "sp-session",4562 "sp-session",4435 "sp-staking",4563 "sp-staking 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4436 "sp-std",4564 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4437]4565]45664567[[package]]4568name = "pallet-inflation"4569version = "3.0.0"4570dependencies = [4571 "frame-benchmarking 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",4572 "frame-support 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",4573 "frame-system 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",4574 "pallet-balances 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",4575 "pallet-randomness-collective-flip 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",4576 "pallet-timestamp 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",4577 "parity-scale-codec 2.0.1",4578 "serde",4579 "sp-core 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",4580 "sp-io 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",4581 "sp-runtime 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",4582 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",4583]443845844439[[package]]4585[[package]]4440name = "pallet-nft"4586name = "pallet-nft"4443 "ethereum",4589 "ethereum",4444 "ethereum-tx-sign",4590 "ethereum-tx-sign",4445 "fp-evm",4591 "fp-evm",4446 "frame-benchmarking",4592 "frame-benchmarking 3.1.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4447 "frame-support",4593 "frame-support 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4448 "frame-system",4594 "frame-system 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4449 "hex-literal",4595 "hex-literal",4450 "pallet-balances",4596 "pallet-balances 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4451 "pallet-contracts",4597 "pallet-contracts",4452 "pallet-ethereum",4598 "pallet-ethereum",4453 "pallet-evm",4599 "pallet-evm",4454 "pallet-randomness-collective-flip",4600 "pallet-randomness-collective-flip 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4455 "pallet-timestamp",4601 "pallet-timestamp 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4456 "pallet-transaction-payment",4602 "pallet-transaction-payment",4457 "parity-scale-codec 2.0.1",4603 "parity-scale-codec 2.0.1",4458 "rlp 0.5.0",4604 "rlp 0.5.0",4459 "serde",4605 "serde",4460 "sp-api",4606 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4461 "sp-core",4607 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4462 "sp-io",4608 "sp-io 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4463 "sp-runtime",4609 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4464 "sp-std",4610 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4465]4611]446646124467[[package]]4613[[package]]4468name = "pallet-randomness-collective-flip"4614name = "pallet-randomness-collective-flip"4469version = "3.0.0"4615version = "3.0.0"4470source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"4616source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"4471dependencies = [4617dependencies = [4472 "frame-support",4618 "frame-support 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4473 "frame-system",4619 "frame-system 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4474 "parity-scale-codec 2.0.1",4620 "parity-scale-codec 2.0.1",4475 "safe-mix",4621 "safe-mix",4476 "sp-runtime",4622 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4477 "sp-std",4623 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4478]4624]46254626[[package]]4627name = "pallet-randomness-collective-flip"4628version = "3.0.0"4629source = "registry+https://github.com/rust-lang/crates.io-index"4630checksum = "ca3ea6fa9aa36735ec11d7ec4d97dd6472650c0656fdc6d4adaca2578bd71134"4631dependencies = [4632 "frame-support 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",4633 "frame-system 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",4634 "parity-scale-codec 2.0.1",4635 "safe-mix",4636 "sp-runtime 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",4637 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",4638]447946394480[[package]]4640[[package]]4481name = "pallet-session"4641name = "pallet-session"4482version = "3.0.0"4642version = "3.0.0"4483source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"4643source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"4484dependencies = [4644dependencies = [4485 "frame-support",4645 "frame-support 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4486 "frame-system",4646 "frame-system 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4487 "impl-trait-for-tuples 0.2.1",4647 "impl-trait-for-tuples 0.2.1",4488 "pallet-timestamp",4648 "pallet-timestamp 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4489 "parity-scale-codec 2.0.1",4649 "parity-scale-codec 2.0.1",4490 "serde",4650 "serde",4491 "sp-core",4651 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4492 "sp-io",4652 "sp-io 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4493 "sp-runtime",4653 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4494 "sp-session",4654 "sp-session",4495 "sp-staking",4655 "sp-staking 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4496 "sp-std",4656 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4497 "sp-trie",4657 "sp-trie 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4498]4658]449946594500[[package]]4660[[package]]4501name = "pallet-sudo"4661name = "pallet-sudo"4502version = "3.0.0"4662version = "3.0.0"4503source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"4663source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"4504dependencies = [4664dependencies = [4505 "frame-support",4665 "frame-support 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4506 "frame-system",4666 "frame-system 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4507 "parity-scale-codec 2.0.1",4667 "parity-scale-codec 2.0.1",4508 "serde",4668 "serde",4509 "sp-io",4669 "sp-io 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4510 "sp-runtime",4670 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4511 "sp-std",4671 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4512]4672]451346734514[[package]]4674[[package]]4515name = "pallet-timestamp"4675name = "pallet-timestamp"4516version = "3.0.0"4676version = "3.0.0"4517source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"4677source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"4518dependencies = [4678dependencies = [4519 "frame-benchmarking",4679 "frame-benchmarking 3.1.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4520 "frame-support",4680 "frame-support 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4521 "frame-system",4681 "frame-system 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4522 "impl-trait-for-tuples 0.2.1",4682 "impl-trait-for-tuples 0.2.1",4523 "log",4683 "log",4524 "parity-scale-codec 2.0.1",4684 "parity-scale-codec 2.0.1",4525 "serde",4685 "serde",4526 "sp-inherents",4686 "sp-inherents 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4527 "sp-io",4687 "sp-io 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4528 "sp-runtime",4688 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4529 "sp-std",4689 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4530 "sp-timestamp",4690 "sp-timestamp 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4531]4691]46924693[[package]]4694name = "pallet-timestamp"4695version = "3.0.0"4696source = "registry+https://github.com/rust-lang/crates.io-index"4697checksum = "b17dd274716a55a2c3e34d9c0ed66aaac3d7e0393ec9fd985e2b8532d697a7f3"4698dependencies = [4699 "frame-benchmarking 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",4700 "frame-support 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",4701 "frame-system 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",4702 "impl-trait-for-tuples 0.2.1",4703 "parity-scale-codec 2.0.1",4704 "serde",4705 "sp-inherents 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",4706 "sp-runtime 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",4707 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",4708 "sp-timestamp 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",4709]453247104533[[package]]4711[[package]]4534name = "pallet-transaction-payment"4712name = "pallet-transaction-payment"4535version = "3.0.0"4713version = "3.0.0"4536source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"4714source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"4537dependencies = [4715dependencies = [4538 "frame-support",4716 "frame-support 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4539 "frame-system",4717 "frame-system 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4540 "parity-scale-codec 2.0.1",4718 "parity-scale-codec 2.0.1",4541 "serde",4719 "serde",4542 "smallvec 1.6.1",4720 "smallvec 1.6.1",4543 "sp-core",4721 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4544 "sp-io",4722 "sp-io 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4545 "sp-runtime",4723 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4546 "sp-std",4724 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4547]4725]454847264549[[package]]4727[[package]]4556 "jsonrpc-derive 15.1.0",4734 "jsonrpc-derive 15.1.0",4557 "pallet-transaction-payment-rpc-runtime-api",4735 "pallet-transaction-payment-rpc-runtime-api",4558 "parity-scale-codec 2.0.1",4736 "parity-scale-codec 2.0.1",4559 "sp-api",4737 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4560 "sp-blockchain",4738 "sp-blockchain",4561 "sp-core",4739 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4562 "sp-rpc",4740 "sp-rpc",4563 "sp-runtime",4741 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4564]4742]456547434566[[package]]4744[[package]]4570dependencies = [4748dependencies = [4571 "pallet-transaction-payment",4749 "pallet-transaction-payment",4572 "parity-scale-codec 2.0.1",4750 "parity-scale-codec 2.0.1",4573 "sp-api",4751 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4574 "sp-runtime",4752 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4575]4753]457647544577[[package]]4755[[package]]4578name = "pallet-treasury"4756name = "pallet-treasury"4579version = "3.0.0"4757version = "3.0.0"4580source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"4758source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"4581dependencies = [4759dependencies = [4582 "frame-support",4760 "frame-support 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4583 "frame-system",4761 "frame-system 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4584 "impl-trait-for-tuples 0.2.1",4762 "impl-trait-for-tuples 0.2.1",4585 "pallet-balances",4763 "pallet-balances 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4586 "parity-scale-codec 2.0.1",4764 "parity-scale-codec 2.0.1",4587 "serde",4765 "serde",4588 "sp-runtime",4766 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4589 "sp-std",4767 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4590]4768]459147694592[[package]]4770[[package]]4595source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"4773source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"4596dependencies = [4774dependencies = [4597 "enumflags2",4775 "enumflags2",4598 "frame-support",4776 "frame-support 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4599 "frame-system",4777 "frame-system 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4600 "parity-scale-codec 2.0.1",4778 "parity-scale-codec 2.0.1",4601 "serde",4779 "serde",4602 "sp-runtime",4780 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4603 "sp-std",4781 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",4604]4782]460547834606[[package]]4784[[package]]5818 "sc-client-api",5996 "sc-client-api",5819 "sc-proposer-metrics",5997 "sc-proposer-metrics",5820 "sc-telemetry",5998 "sc-telemetry",5821 "sp-api",5999 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5822 "sp-blockchain",6000 "sp-blockchain",5823 "sp-consensus",6001 "sp-consensus",5824 "sp-core",6002 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5825 "sp-inherents",6003 "sp-inherents 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5826 "sp-runtime",6004 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5827 "sp-transaction-pool",6005 "sp-transaction-pool",5828 "substrate-prometheus-endpoint",6006 "substrate-prometheus-endpoint",5829]6007]5835dependencies = [6013dependencies = [5836 "parity-scale-codec 2.0.1",6014 "parity-scale-codec 2.0.1",5837 "sc-client-api",6015 "sc-client-api",5838 "sp-api",6016 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5839 "sp-block-builder",6017 "sp-block-builder",5840 "sp-blockchain",6018 "sp-blockchain",5841 "sp-core",6019 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5842 "sp-inherents",6020 "sp-inherents 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5843 "sp-runtime",6021 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5844 "sp-state-machine",6022 "sp-state-machine 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5845]6023]584660245847[[package]]6025[[package]]5861 "serde_json",6039 "serde_json",5862 "sp-chain-spec",6040 "sp-chain-spec",5863 "sp-consensus-babe",6041 "sp-consensus-babe",5864 "sp-core",6042 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5865 "sp-runtime",6043 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5866]6044]586760455868[[package]]6046[[package]]5901 "serde",6079 "serde",5902 "serde_json",6080 "serde_json",5903 "sp-blockchain",6081 "sp-blockchain",5904 "sp-core",6082 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5905 "sp-keyring",6083 "sp-keyring",5906 "sp-keystore",6084 "sp-keystore 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5907 "sp-panic-handler",6085 "sp-panic-handler 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5908 "sp-runtime",6086 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5909 "sp-utils",6087 "sp-utils",5910 "sp-version",6088 "sp-version 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5911 "structopt",6089 "structopt",5912 "thiserror",6090 "thiserror",5913 "tiny-bip39",6091 "tiny-bip39",5929 "parity-scale-codec 2.0.1",6107 "parity-scale-codec 2.0.1",5930 "parking_lot 0.11.1",6108 "parking_lot 0.11.1",5931 "sc-executor",6109 "sc-executor",5932 "sp-api",6110 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5933 "sp-blockchain",6111 "sp-blockchain",5934 "sp-consensus",6112 "sp-consensus",5935 "sp-core",6113 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5936 "sp-database",6114 "sp-database",5937 "sp-externalities",6115 "sp-externalities 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5938 "sp-inherents",6116 "sp-inherents 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5939 "sp-keystore",6117 "sp-keystore 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5940 "sp-runtime",6118 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5941 "sp-state-machine",6119 "sp-state-machine 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5942 "sp-std",6120 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5943 "sp-storage",6121 "sp-storage 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5944 "sp-transaction-pool",6122 "sp-transaction-pool",5945 "sp-trie",6123 "sp-trie 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5946 "sp-utils",6124 "sp-utils",5947 "sp-version",6125 "sp-version 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5948 "substrate-prometheus-endpoint",6126 "substrate-prometheus-endpoint",5949]6127]595061285967 "sc-client-api",6145 "sc-client-api",5968 "sc-executor",6146 "sc-executor",5969 "sc-state-db",6147 "sc-state-db",5970 "sp-arithmetic",6148 "sp-arithmetic 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5971 "sp-blockchain",6149 "sp-blockchain",5972 "sp-consensus",6150 "sp-consensus",5973 "sp-core",6151 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5974 "sp-database",6152 "sp-database",5975 "sp-runtime",6153 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5976 "sp-state-machine",6154 "sp-state-machine 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5977 "sp-trie",6155 "sp-trie 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5978 "substrate-prometheus-endpoint",6156 "substrate-prometheus-endpoint",5979]6157]598061585986 "sc-client-api",6164 "sc-client-api",5987 "sp-blockchain",6165 "sp-blockchain",5988 "sp-consensus",6166 "sp-consensus",5989 "sp-runtime",6167 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",5990]6168]599161695992[[package]]6170[[package]]6004 "sc-client-api",6182 "sc-client-api",6005 "sc-consensus-slots",6183 "sc-consensus-slots",6006 "sc-telemetry",6184 "sc-telemetry",6007 "sp-api",6185 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6008 "sp-application-crypto",6186 "sp-application-crypto 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6009 "sp-block-builder",6187 "sp-block-builder",6010 "sp-blockchain",6188 "sp-blockchain",6011 "sp-consensus",6189 "sp-consensus",6012 "sp-consensus-aura",6190 "sp-consensus-aura",6013 "sp-consensus-slots",6191 "sp-consensus-slots",6014 "sp-core",6192 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6015 "sp-inherents",6193 "sp-inherents 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6016 "sp-io",6194 "sp-io 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6017 "sp-keystore",6195 "sp-keystore 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6018 "sp-runtime",6196 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6019 "sp-timestamp",6197 "sp-timestamp 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6020 "sp-version",6198 "sp-version 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6021 "substrate-prometheus-endpoint",6199 "substrate-prometheus-endpoint",6022]6200]602362016048 "sc-telemetry",6226 "sc-telemetry",6049 "schnorrkel",6227 "schnorrkel",6050 "serde",6228 "serde",6051 "sp-api",6229 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6052 "sp-application-crypto",6230 "sp-application-crypto 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6053 "sp-block-builder",6231 "sp-block-builder",6054 "sp-blockchain",6232 "sp-blockchain",6055 "sp-consensus",6233 "sp-consensus",6056 "sp-consensus-babe",6234 "sp-consensus-babe",6057 "sp-consensus-slots",6235 "sp-consensus-slots",6058 "sp-consensus-vrf",6236 "sp-consensus-vrf",6059 "sp-core",6237 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6060 "sp-inherents",6238 "sp-inherents 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6061 "sp-io",6239 "sp-io 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6062 "sp-keystore",6240 "sp-keystore 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6063 "sp-runtime",6241 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6064 "sp-timestamp",6242 "sp-timestamp 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6065 "sp-utils",6243 "sp-utils",6066 "sp-version",6244 "sp-version 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6067 "substrate-prometheus-endpoint",6245 "substrate-prometheus-endpoint",6068]6246]606962476077 "parking_lot 0.11.1",6255 "parking_lot 0.11.1",6078 "sc-client-api",6256 "sc-client-api",6079 "sp-blockchain",6257 "sp-blockchain",6080 "sp-runtime",6258 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6081]6259]608262606083[[package]]6261[[package]]6092 "parking_lot 0.11.1",6270 "parking_lot 0.11.1",6093 "sc-client-api",6271 "sc-client-api",6094 "sc-telemetry",6272 "sc-telemetry",6095 "sp-api",6273 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6096 "sp-application-crypto",6274 "sp-application-crypto 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6097 "sp-arithmetic",6275 "sp-arithmetic 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6098 "sp-blockchain",6276 "sp-blockchain",6099 "sp-consensus",6277 "sp-consensus",6100 "sp-consensus-slots",6278 "sp-consensus-slots",6101 "sp-core",6279 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6102 "sp-inherents",6280 "sp-inherents 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6103 "sp-runtime",6281 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6104 "sp-state-machine",6282 "sp-state-machine 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6105 "sp-trie",6283 "sp-trie 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6106 "thiserror",6284 "thiserror",6107]6285]610862866115 "sc-client-api",6293 "sc-client-api",6116 "sp-authorship",6294 "sp-authorship",6117 "sp-consensus",6295 "sp-consensus",6118 "sp-core",6296 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6119 "sp-inherents",6297 "sp-inherents 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6120 "sp-runtime",6298 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6121]6299]612263006123[[package]]6301[[package]]6135 "sc-executor-common",6313 "sc-executor-common",6136 "sc-executor-wasmi",6314 "sc-executor-wasmi",6137 "sc-executor-wasmtime",6315 "sc-executor-wasmtime",6138 "sp-api",6316 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6139 "sp-core",6317 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6140 "sp-externalities",6318 "sp-externalities 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6141 "sp-io",6319 "sp-io 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6142 "sp-panic-handler",6320 "sp-panic-handler 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6143 "sp-runtime-interface",6321 "sp-runtime-interface 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6144 "sp-serializer",6322 "sp-serializer",6145 "sp-tasks",6323 "sp-tasks",6146 "sp-trie",6324 "sp-trie 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6147 "sp-version",6325 "sp-version 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6148 "sp-wasm-interface",6326 "sp-wasm-interface 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6149 "wasmi",6327 "wasmi",6150]6328]615163296158 "parity-scale-codec 2.0.1",6336 "parity-scale-codec 2.0.1",6159 "parity-wasm 0.41.0",6337 "parity-wasm 0.41.0",6160 "sp-allocator",6338 "sp-allocator",6161 "sp-core",6339 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6162 "sp-serializer",6340 "sp-serializer",6163 "sp-wasm-interface",6341 "sp-wasm-interface 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6164 "thiserror",6342 "thiserror",6165 "wasmi",6343 "wasmi",6166]6344]6174 "parity-scale-codec 2.0.1",6352 "parity-scale-codec 2.0.1",6175 "sc-executor-common",6353 "sc-executor-common",6176 "sp-allocator",6354 "sp-allocator",6177 "sp-core",6355 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6178 "sp-runtime-interface",6356 "sp-runtime-interface 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6179 "sp-wasm-interface",6357 "sp-wasm-interface 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6180 "wasmi",6358 "wasmi",6181]6359]618263606192 "sc-executor-common",6370 "sc-executor-common",6193 "scoped-tls",6371 "scoped-tls",6194 "sp-allocator",6372 "sp-allocator",6195 "sp-core",6373 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6196 "sp-runtime-interface",6374 "sp-runtime-interface 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6197 "sp-wasm-interface",6375 "sp-wasm-interface 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6198 "wasmtime",6376 "wasmtime",6199]6377]620063786223 "sc-network-gossip",6401 "sc-network-gossip",6224 "sc-telemetry",6402 "sc-telemetry",6225 "serde_json",6403 "serde_json",6226 "sp-api",6404 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6227 "sp-application-crypto",6405 "sp-application-crypto 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6228 "sp-arithmetic",6406 "sp-arithmetic 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6229 "sp-blockchain",6407 "sp-blockchain",6230 "sp-consensus",6408 "sp-consensus",6231 "sp-core",6409 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6232 "sp-finality-grandpa",6410 "sp-finality-grandpa",6233 "sp-inherents",6411 "sp-inherents 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6234 "sp-keystore",6412 "sp-keystore 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6235 "sp-runtime",6413 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6236 "sp-utils",6414 "sp-utils",6237 "substrate-prometheus-endpoint",6415 "substrate-prometheus-endpoint",6238]6416]6249 "sc-client-api",6427 "sc-client-api",6250 "sc-network",6428 "sc-network",6251 "sp-blockchain",6429 "sp-blockchain",6252 "sp-runtime",6430 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6253 "sp-transaction-pool",6431 "sp-transaction-pool",6254 "sp-utils",6432 "sp-utils",6255 "wasm-timer",6433 "wasm-timer",6269 "parking_lot 0.11.1",6447 "parking_lot 0.11.1",6270 "rand 0.7.3",6448 "rand 0.7.3",6271 "serde_json",6449 "serde_json",6272 "sp-application-crypto",6450 "sp-application-crypto 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6273 "sp-core",6451 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6274 "sp-keystore",6452 "sp-keystore 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6275 "subtle 2.4.0",6453 "subtle 2.4.0",6276]6454]627764556286 "parking_lot 0.11.1",6464 "parking_lot 0.11.1",6287 "sc-client-api",6465 "sc-client-api",6288 "sc-executor",6466 "sc-executor",6289 "sp-api",6467 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6290 "sp-blockchain",6468 "sp-blockchain",6291 "sp-core",6469 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6292 "sp-externalities",6470 "sp-externalities 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6293 "sp-runtime",6471 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6294 "sp-state-machine",6472 "sp-state-machine 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6295]6473]629664746297[[package]]6475[[package]]6333 "serde",6511 "serde",6334 "serde_json",6512 "serde_json",6335 "smallvec 1.6.1",6513 "smallvec 1.6.1",6336 "sp-arithmetic",6514 "sp-arithmetic 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6337 "sp-blockchain",6515 "sp-blockchain",6338 "sp-consensus",6516 "sp-consensus",6339 "sp-core",6517 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6340 "sp-runtime",6518 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6341 "sp-utils",6519 "sp-utils",6342 "substrate-prometheus-endpoint",6520 "substrate-prometheus-endpoint",6343 "thiserror",6521 "thiserror",6358 "log",6536 "log",6359 "lru",6537 "lru",6360 "sc-network",6538 "sc-network",6361 "sp-runtime",6539 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6362 "substrate-prometheus-endpoint",6540 "substrate-prometheus-endpoint",6363 "wasm-timer",6541 "wasm-timer",6364]6542]6383 "sc-client-api",6561 "sc-client-api",6384 "sc-keystore",6562 "sc-keystore",6385 "sc-network",6563 "sc-network",6386 "sp-api",6564 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6387 "sp-core",6565 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6388 "sp-offchain",6566 "sp-offchain",6389 "sp-runtime",6567 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6390 "sp-utils",6568 "sp-utils",6391 "threadpool",6569 "threadpool",6392]6570]6432 "sc-rpc-api",6610 "sc-rpc-api",6433 "sc-tracing",6611 "sc-tracing",6434 "serde_json",6612 "serde_json",6435 "sp-api",6613 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6436 "sp-blockchain",6614 "sp-blockchain",6437 "sp-chain-spec",6615 "sp-chain-spec",6438 "sp-core",6616 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6439 "sp-keystore",6617 "sp-keystore 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6440 "sp-offchain",6618 "sp-offchain",6441 "sp-rpc",6619 "sp-rpc",6442 "sp-runtime",6620 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6443 "sp-session",6621 "sp-session",6444 "sp-state-machine",6622 "sp-state-machine 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6445 "sp-transaction-pool",6623 "sp-transaction-pool",6446 "sp-utils",6624 "sp-utils",6447 "sp-version",6625 "sp-version 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6448]6626]644966276450[[package]]6628[[package]]6464 "serde",6642 "serde",6465 "serde_json",6643 "serde_json",6466 "sp-chain-spec",6644 "sp-chain-spec",6467 "sp-core",6645 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6468 "sp-rpc",6646 "sp-rpc",6469 "sp-runtime",6647 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6470 "sp-transaction-pool",6648 "sp-transaction-pool",6471 "sp-version",6649 "sp-version 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6472]6650]647366516474[[package]]6652[[package]]6485 "log",6663 "log",6486 "serde",6664 "serde",6487 "serde_json",6665 "serde_json",6488 "sp-runtime",6666 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6489 "substrate-prometheus-endpoint",6667 "substrate-prometheus-endpoint",6490]6668]649166696526 "sc-transaction-pool",6704 "sc-transaction-pool",6527 "serde",6705 "serde",6528 "serde_json",6706 "serde_json",6529 "sp-api",6707 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6530 "sp-application-crypto",6708 "sp-application-crypto 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6531 "sp-block-builder",6709 "sp-block-builder",6532 "sp-blockchain",6710 "sp-blockchain",6533 "sp-consensus",6711 "sp-consensus",6534 "sp-core",6712 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6535 "sp-externalities",6713 "sp-externalities 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6536 "sp-inherents",6714 "sp-inherents 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6537 "sp-io",6715 "sp-io 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6538 "sp-keystore",6716 "sp-keystore 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6539 "sp-runtime",6717 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6540 "sp-session",6718 "sp-session",6541 "sp-state-machine",6719 "sp-state-machine 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6542 "sp-tracing",6720 "sp-tracing 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6543 "sp-transaction-pool",6721 "sp-transaction-pool",6544 "sp-trie",6722 "sp-trie 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6545 "sp-utils",6723 "sp-utils",6546 "sp-version",6724 "sp-version 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6547 "substrate-prometheus-endpoint",6725 "substrate-prometheus-endpoint",6548 "tempfile",6726 "tempfile",6549 "thiserror",6727 "thiserror",6563 "parity-util-mem-derive",6741 "parity-util-mem-derive",6564 "parking_lot 0.11.1",6742 "parking_lot 0.11.1",6565 "sc-client-api",6743 "sc-client-api",6566 "sp-core",6744 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6567 "thiserror",6745 "thiserror",6568]6746]656967476604 "sc-tracing-proc-macro",6782 "sc-tracing-proc-macro",6605 "serde",6783 "serde",6606 "serde_json",6784 "serde_json",6607 "sp-tracing",6785 "sp-tracing 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6608 "thiserror",6786 "thiserror",6609 "tracing",6787 "tracing",6610 "tracing-core",6788 "tracing-core",6639 "retain_mut",6817 "retain_mut",6640 "serde",6818 "serde",6641 "sp-blockchain",6819 "sp-blockchain",6642 "sp-core",6820 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6643 "sp-runtime",6821 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6644 "sp-transaction-pool",6822 "sp-transaction-pool",6645 "sp-utils",6823 "sp-utils",6646 "thiserror",6824 "thiserror",6661 "parking_lot 0.11.1",6839 "parking_lot 0.11.1",6662 "sc-client-api",6840 "sc-client-api",6663 "sc-transaction-graph",6841 "sc-transaction-graph",6664 "sp-api",6842 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6665 "sp-blockchain",6843 "sp-blockchain",6666 "sp-core",6844 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6667 "sp-runtime",6845 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6668 "sp-tracing",6846 "sp-tracing 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",6669 "sp-transaction-pool",6847 "sp-transaction-pool",6670 "sp-utils",6848 "sp-utils",6671 "substrate-prometheus-endpoint",6849 "substrate-prometheus-endpoint",7067source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"7245source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"7068dependencies = [7246dependencies = [7069 "log",7247 "log",7070 "sp-core",7248 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7071 "sp-std",7249 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7072 "sp-wasm-interface",7250 "sp-wasm-interface 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7073 "thiserror",7251 "thiserror",7074]7252]707572537081 "hash-db",7259 "hash-db",7082 "log",7260 "log",7083 "parity-scale-codec 2.0.1",7261 "parity-scale-codec 2.0.1",7084 "sp-api-proc-macro",7262 "sp-api-proc-macro 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7085 "sp-core",7263 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7086 "sp-runtime",7264 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7087 "sp-state-machine",7265 "sp-state-machine 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7088 "sp-std",7266 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7089 "sp-version",7267 "sp-version 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7090 "thiserror",7268 "thiserror",7091]7269]72707271[[package]]7272name = "sp-api"7273version = "3.0.0"7274source = "registry+https://github.com/rust-lang/crates.io-index"7275checksum = "e63c3460d5daecf67df542c34c2bbd636214a5a200d4bddcfa2ffb9e72c346af"7276dependencies = [7277 "hash-db",7278 "parity-scale-codec 2.0.1",7279 "sp-api-proc-macro 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7280 "sp-core 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7281 "sp-runtime 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7282 "sp-state-machine 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",7283 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7284 "sp-version 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7285 "thiserror",7286]709272877093[[package]]7288[[package]]7094name = "sp-api-proc-macro"7289name = "sp-api-proc-macro"7102 "syn",7297 "syn",7103]7298]72997300[[package]]7301name = "sp-api-proc-macro"7302version = "3.0.0"7303source = "registry+https://github.com/rust-lang/crates.io-index"7304checksum = "289624f4fe0f61e63a5019ed26c3bc732b5145eb52796ac6053cd72656d947a1"7305dependencies = [7306 "blake2-rfc",7307 "proc-macro-crate 0.1.5",7308 "proc-macro2",7309 "quote",7310 "syn",7311]710473127105[[package]]7313[[package]]7106name = "sp-application-crypto"7314name = "sp-application-crypto"7109dependencies = [7317dependencies = [7110 "parity-scale-codec 2.0.1",7318 "parity-scale-codec 2.0.1",7111 "serde",7319 "serde",7112 "sp-core",7320 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7113 "sp-io",7321 "sp-io 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7114 "sp-std",7322 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7115]7323]73247325[[package]]7326name = "sp-application-crypto"7327version = "3.0.0"7328source = "registry+https://github.com/rust-lang/crates.io-index"7329checksum = "c52e2e6d43036b97c4fce1ed87c5262c1ffdc78c655ada4d3024a3f8094bdd2c"7330dependencies = [7331 "parity-scale-codec 2.0.1",7332 "serde",7333 "sp-core 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7334 "sp-io 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7335 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7336]711673377117[[package]]7338[[package]]7118name = "sp-arithmetic"7339name = "sp-arithmetic"7123 "num-traits",7344 "num-traits",7124 "parity-scale-codec 2.0.1",7345 "parity-scale-codec 2.0.1",7125 "serde",7346 "serde",7126 "sp-debug-derive",7347 "sp-debug-derive 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7127 "sp-std",7348 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7128]7349]73507351[[package]]7352name = "sp-arithmetic"7353version = "3.0.0"7354source = "registry+https://github.com/rust-lang/crates.io-index"7355checksum = "d0f1c69966c192d1dee8521f0b29ece2b14db07b9b44d801a94e295234761645"7356dependencies = [7357 "integer-sqrt",7358 "num-traits",7359 "parity-scale-codec 2.0.1",7360 "serde",7361 "sp-debug-derive 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7362 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7363]712973647130[[package]]7365[[package]]7131name = "sp-authorship"7366name = "sp-authorship"7132version = "3.0.0"7367version = "3.0.0"7133source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"7368source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"7134dependencies = [7369dependencies = [7135 "parity-scale-codec 2.0.1",7370 "parity-scale-codec 2.0.1",7136 "sp-inherents",7371 "sp-inherents 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7137 "sp-runtime",7372 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7138 "sp-std",7373 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7139]7374]714073757141[[package]]7376[[package]]7144source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"7379source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"7145dependencies = [7380dependencies = [7146 "parity-scale-codec 2.0.1",7381 "parity-scale-codec 2.0.1",7147 "sp-api",7382 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7148 "sp-inherents",7383 "sp-inherents 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7149 "sp-runtime",7384 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7150 "sp-std",7385 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7151]7386]715273877153[[package]]7388[[package]]7160 "lru",7395 "lru",7161 "parity-scale-codec 2.0.1",7396 "parity-scale-codec 2.0.1",7162 "parking_lot 0.11.1",7397 "parking_lot 0.11.1",7163 "sp-api",7398 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7164 "sp-consensus",7399 "sp-consensus",7165 "sp-database",7400 "sp-database",7166 "sp-runtime",7401 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7167 "sp-state-machine",7402 "sp-state-machine 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7168 "thiserror",7403 "thiserror",7169]7404]717074057189 "parity-scale-codec 2.0.1",7424 "parity-scale-codec 2.0.1",7190 "parking_lot 0.11.1",7425 "parking_lot 0.11.1",7191 "serde",7426 "serde",7192 "sp-api",7427 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7193 "sp-core",7428 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7194 "sp-inherents",7429 "sp-inherents 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7195 "sp-runtime",7430 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7196 "sp-state-machine",7431 "sp-state-machine 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7197 "sp-std",7432 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7198 "sp-trie",7433 "sp-trie 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7199 "sp-utils",7434 "sp-utils",7200 "sp-version",7435 "sp-version 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7201 "substrate-prometheus-endpoint",7436 "substrate-prometheus-endpoint",7202 "thiserror",7437 "thiserror",7203 "wasm-timer",7438 "wasm-timer",7209source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"7444source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"7210dependencies = [7445dependencies = [7211 "parity-scale-codec 2.0.1",7446 "parity-scale-codec 2.0.1",7212 "sp-api",7447 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7213 "sp-application-crypto",7448 "sp-application-crypto 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7214 "sp-consensus-slots",7449 "sp-consensus-slots",7215 "sp-inherents",7450 "sp-inherents 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7216 "sp-runtime",7451 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7217 "sp-std",7452 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7218 "sp-timestamp",7453 "sp-timestamp 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7219]7454]722074557221[[package]]7456[[package]]7226 "merlin",7461 "merlin",7227 "parity-scale-codec 2.0.1",7462 "parity-scale-codec 2.0.1",7228 "serde",7463 "serde",7229 "sp-api",7464 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7230 "sp-application-crypto",7465 "sp-application-crypto 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7231 "sp-consensus",7466 "sp-consensus",7232 "sp-consensus-slots",7467 "sp-consensus-slots",7233 "sp-consensus-vrf",7468 "sp-consensus-vrf",7234 "sp-core",7469 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7235 "sp-inherents",7470 "sp-inherents 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7236 "sp-keystore",7471 "sp-keystore 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7237 "sp-runtime",7472 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7238 "sp-std",7473 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7239 "sp-timestamp",7474 "sp-timestamp 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7240]7475]724174767242[[package]]7477[[package]]7245source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"7480source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"7246dependencies = [7481dependencies = [7247 "parity-scale-codec 2.0.1",7482 "parity-scale-codec 2.0.1",7248 "sp-arithmetic",7483 "sp-arithmetic 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7249 "sp-runtime",7484 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7250]7485]725174867252[[package]]7487[[package]]7256dependencies = [7491dependencies = [7257 "parity-scale-codec 2.0.1",7492 "parity-scale-codec 2.0.1",7258 "schnorrkel",7493 "schnorrkel",7259 "sp-core",7494 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7260 "sp-runtime",7495 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7261 "sp-std",7496 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7262]7497]726374987264[[package]]7499[[package]]7291 "secrecy",7526 "secrecy",7292 "serde",7527 "serde",7293 "sha2 0.9.3",7528 "sha2 0.9.3",7294 "sp-debug-derive",7529 "sp-debug-derive 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7295 "sp-externalities",7530 "sp-externalities 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7296 "sp-runtime-interface",7531 "sp-runtime-interface 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7297 "sp-std",7532 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7298 "sp-storage",7533 "sp-storage 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7299 "substrate-bip39",7534 "substrate-bip39",7300 "thiserror",7535 "thiserror",7301 "tiny-bip39",7536 "tiny-bip39",7305 "zeroize",7540 "zeroize",7306]7541]75427543[[package]]7544name = "sp-core"7545version = "3.0.0"7546source = "registry+https://github.com/rust-lang/crates.io-index"7547checksum = "abbc8d4e9b8a7d5819ed26f1374017bb32833ef4890e4ff065e1da30669876bc"7548dependencies = [7549 "base58",7550 "blake2-rfc",7551 "byteorder",7552 "dyn-clonable",7553 "ed25519-dalek",7554 "futures 0.3.12",7555 "hash-db",7556 "hash256-std-hasher",7557 "hex",7558 "impl-serde",7559 "lazy_static",7560 "libsecp256k1",7561 "log",7562 "merlin",7563 "num-traits",7564 "parity-scale-codec 2.0.1",7565 "parity-util-mem",7566 "parking_lot 0.11.1",7567 "primitive-types 0.9.0",7568 "rand 0.7.3",7569 "regex",7570 "schnorrkel",7571 "secrecy",7572 "serde",7573 "sha2 0.9.3",7574 "sp-debug-derive 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7575 "sp-externalities 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",7576 "sp-runtime-interface 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7577 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7578 "sp-storage 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7579 "substrate-bip39",7580 "thiserror",7581 "tiny-bip39",7582 "tiny-keccak",7583 "twox-hash",7584 "wasmi",7585 "zeroize",7586]730775877308[[package]]7588[[package]]7309name = "sp-database"7589name = "sp-database"7324 "syn",7604 "syn",7325]7605]76067607[[package]]7608name = "sp-debug-derive"7609version = "3.0.0"7610source = "registry+https://github.com/rust-lang/crates.io-index"7611checksum = "e80275f23b4e7ba8f54dec5f90f016530e7307d2ee9445f617ab986cbe97f31e"7612dependencies = [7613 "proc-macro2",7614 "quote",7615 "syn",7616]732676177327[[package]]7618[[package]]7328name = "sp-externalities"7619name = "sp-externalities"7331dependencies = [7622dependencies = [7332 "environmental",7623 "environmental",7333 "parity-scale-codec 2.0.1",7624 "parity-scale-codec 2.0.1",7334 "sp-std",7625 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7335 "sp-storage",7626 "sp-storage 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7336]7627]76287629[[package]]7630name = "sp-externalities"7631version = "0.9.0"7632source = "registry+https://github.com/rust-lang/crates.io-index"7633checksum = "2fdc625f8c7b13b9a136d334888b21b5743d2081cb666cb03efca1dc9b8f74d1"7634dependencies = [7635 "environmental",7636 "parity-scale-codec 2.0.1",7637 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7638 "sp-storage 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7639]733776407338[[package]]7641[[package]]7339name = "sp-finality-grandpa"7642name = "sp-finality-grandpa"7344 "log",7647 "log",7345 "parity-scale-codec 2.0.1",7648 "parity-scale-codec 2.0.1",7346 "serde",7649 "serde",7347 "sp-api",7650 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7348 "sp-application-crypto",7651 "sp-application-crypto 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7349 "sp-core",7652 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7350 "sp-keystore",7653 "sp-keystore 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7351 "sp-runtime",7654 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7352 "sp-std",7655 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7353]7656]735476577355[[package]]7658[[package]]7359dependencies = [7662dependencies = [7360 "parity-scale-codec 2.0.1",7663 "parity-scale-codec 2.0.1",7361 "parking_lot 0.11.1",7664 "parking_lot 0.11.1",7362 "sp-core",7665 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7363 "sp-std",7666 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7364 "thiserror",7667 "thiserror",7365]7668]76697670[[package]]7671name = "sp-inherents"7672version = "3.0.0"7673source = "registry+https://github.com/rust-lang/crates.io-index"7674checksum = "2542380b535c6941502a0a3069a657eb5abb70fd67b11afa164d4a4b038ba73a"7675dependencies = [7676 "parity-scale-codec 2.0.1",7677 "parking_lot 0.11.1",7678 "sp-core 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7679 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7680 "thiserror",7681]736676827367[[package]]7683[[package]]7368name = "sp-io"7684name = "sp-io"7375 "log",7691 "log",7376 "parity-scale-codec 2.0.1",7692 "parity-scale-codec 2.0.1",7377 "parking_lot 0.11.1",7693 "parking_lot 0.11.1",7378 "sp-core",7694 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7379 "sp-externalities",7695 "sp-externalities 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7380 "sp-keystore",7696 "sp-keystore 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7381 "sp-runtime-interface",7697 "sp-runtime-interface 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7382 "sp-state-machine",7698 "sp-state-machine 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7383 "sp-std",7699 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7384 "sp-tracing",7700 "sp-tracing 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7385 "sp-trie",7701 "sp-trie 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7386 "sp-wasm-interface",7702 "sp-wasm-interface 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7387 "tracing",7703 "tracing",7388 "tracing-core",7704 "tracing-core",7389]7705]77067707[[package]]7708name = "sp-io"7709version = "3.0.0"7710source = "registry+https://github.com/rust-lang/crates.io-index"7711checksum = "33fd69f0a6e91bedc2fb1c5cc3689c212474b6c918274cb4cb14dbbe3c428c14"7712dependencies = [7713 "futures 0.3.12",7714 "hash-db",7715 "libsecp256k1",7716 "log",7717 "parity-scale-codec 2.0.1",7718 "parking_lot 0.11.1",7719 "sp-core 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7720 "sp-externalities 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",7721 "sp-keystore 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",7722 "sp-runtime-interface 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7723 "sp-state-machine 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",7724 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7725 "sp-tracing 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7726 "sp-trie 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7727 "sp-wasm-interface 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7728 "tracing",7729 "tracing-core",7730]739077317391[[package]]7732[[package]]7392name = "sp-keyring"7733name = "sp-keyring"7393version = "3.0.0"7734version = "3.0.0"7394source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"7735source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"7395dependencies = [7736dependencies = [7396 "lazy_static",7737 "lazy_static",7397 "sp-core",7738 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7398 "sp-runtime",7739 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7399 "strum",7740 "strum",7400]7741]740177427412 "parking_lot 0.11.1",7753 "parking_lot 0.11.1",7413 "schnorrkel",7754 "schnorrkel",7414 "serde",7755 "serde",7415 "sp-core",7756 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7416 "sp-externalities",7757 "sp-externalities 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7417]7758]77597760[[package]]7761name = "sp-keystore"7762version = "0.9.0"7763source = "registry+https://github.com/rust-lang/crates.io-index"7764checksum = "db6ccd2baf189112355338e8b224dc513cd239b974dbd717f12b3dc7a7248c3b"7765dependencies = [7766 "async-trait",7767 "derive_more",7768 "futures 0.3.12",7769 "merlin",7770 "parity-scale-codec 2.0.1",7771 "parking_lot 0.11.1",7772 "schnorrkel",7773 "sp-core 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7774 "sp-externalities 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",7775]741877767419[[package]]7777[[package]]7420name = "sp-offchain"7778name = "sp-offchain"7421version = "3.0.0"7779version = "3.0.0"7422source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"7780source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"7423dependencies = [7781dependencies = [7424 "sp-api",7782 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7425 "sp-core",7783 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7426 "sp-runtime",7784 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7427]7785]742877867429[[package]]7787[[package]]7434 "backtrace",7792 "backtrace",7435]7793]77947795[[package]]7796name = "sp-panic-handler"7797version = "3.0.0"7798source = "registry+https://github.com/rust-lang/crates.io-index"7799checksum = "54702e109f1c8a870dd4065a497d2612d42cec5817126e96cc0658c5ea975784"7800dependencies = [7801 "backtrace",7802]743678037437[[package]]7804[[package]]7438name = "sp-rpc"7805name = "sp-rpc"7439version = "3.0.0"7806version = "3.0.0"7440source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"7807source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"7441dependencies = [7808dependencies = [7442 "serde",7809 "serde",7443 "sp-core",7810 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7444]7811]744578127446[[package]]7813[[package]]7457 "paste 1.0.4",7824 "paste 1.0.4",7458 "rand 0.7.3",7825 "rand 0.7.3",7459 "serde",7826 "serde",7460 "sp-application-crypto",7827 "sp-application-crypto 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7461 "sp-arithmetic",7828 "sp-arithmetic 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7462 "sp-core",7829 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7463 "sp-io",7830 "sp-io 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7464 "sp-std",7831 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7465]7832]78337834[[package]]7835name = "sp-runtime"7836version = "3.0.0"7837source = "registry+https://github.com/rust-lang/crates.io-index"7838checksum = "dfa4b353b76f04616dbdb8d269d58dcac47acb31c006d3b70e7b64233e68695e"7839dependencies = [7840 "either",7841 "hash256-std-hasher",7842 "impl-trait-for-tuples 0.2.1",7843 "log",7844 "parity-scale-codec 2.0.1",7845 "parity-util-mem",7846 "paste 1.0.4",7847 "rand 0.7.3",7848 "serde",7849 "sp-application-crypto 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7850 "sp-arithmetic 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7851 "sp-core 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7852 "sp-io 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7853 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7854]746678557467[[package]]7856[[package]]7468name = "sp-runtime-interface"7857name = "sp-runtime-interface"7472 "impl-trait-for-tuples 0.2.1",7861 "impl-trait-for-tuples 0.2.1",7473 "parity-scale-codec 2.0.1",7862 "parity-scale-codec 2.0.1",7474 "primitive-types 0.9.0",7863 "primitive-types 0.9.0",7475 "sp-externalities",7864 "sp-externalities 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7476 "sp-runtime-interface-proc-macro",7865 "sp-runtime-interface-proc-macro 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7477 "sp-std",7866 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7478 "sp-storage",7867 "sp-storage 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7479 "sp-tracing",7868 "sp-tracing 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7480 "sp-wasm-interface",7869 "sp-wasm-interface 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7481 "static_assertions",7870 "static_assertions",7482]7871]78727873[[package]]7874name = "sp-runtime-interface"7875version = "3.0.0"7876source = "registry+https://github.com/rust-lang/crates.io-index"7877checksum = "b2e5c88b4bc8d607e4e2ff767a85db58cf7101f3dd6064f06929342ea67fe8fb"7878dependencies = [7879 "impl-trait-for-tuples 0.2.1",7880 "parity-scale-codec 2.0.1",7881 "primitive-types 0.9.0",7882 "sp-externalities 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",7883 "sp-runtime-interface-proc-macro 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7884 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7885 "sp-storage 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7886 "sp-tracing 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7887 "sp-wasm-interface 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7888 "static_assertions",7889]748378907484[[package]]7891[[package]]7485name = "sp-runtime-interface-proc-macro"7892name = "sp-runtime-interface-proc-macro"7493 "syn",7900 "syn",7494]7901]79027903[[package]]7904name = "sp-runtime-interface-proc-macro"7905version = "3.0.0"7906source = "registry+https://github.com/rust-lang/crates.io-index"7907checksum = "19a6c7c2251512c9e533d15db8a863b06ece1cbee778130dd9adbe44b6b39aa9"7908dependencies = [7909 "Inflector",7910 "proc-macro-crate 0.1.5",7911 "proc-macro2",7912 "quote",7913 "syn",7914]749579157496[[package]]7916[[package]]7497name = "sp-sandbox"7917name = "sp-sandbox"7498version = "0.9.0"7918version = "0.9.0"7499source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"7919source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"7500dependencies = [7920dependencies = [7501 "parity-scale-codec 2.0.1",7921 "parity-scale-codec 2.0.1",7502 "sp-core",7922 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7503 "sp-io",7923 "sp-io 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7504 "sp-std",7924 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7505 "sp-wasm-interface",7925 "sp-wasm-interface 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7506 "wasmi",7926 "wasmi",7507]7927]750879287521source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"7941source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"7522dependencies = [7942dependencies = [7523 "parity-scale-codec 2.0.1",7943 "parity-scale-codec 2.0.1",7524 "sp-api",7944 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7525 "sp-core",7945 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7526 "sp-runtime",7946 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7527 "sp-staking",7947 "sp-staking 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7528 "sp-std",7948 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7529]7949]753079507531[[package]]7951[[package]]7534source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"7954source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"7535dependencies = [7955dependencies = [7536 "parity-scale-codec 2.0.1",7956 "parity-scale-codec 2.0.1",7537 "sp-runtime",7957 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7538 "sp-std",7958 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7539]7959]79607961[[package]]7962name = "sp-staking"7963version = "3.0.0"7964source = "registry+https://github.com/rust-lang/crates.io-index"7965checksum = "fc729eb10f8809c61a1fe439ac118a4413de004aaf863003ee8752ac0b596e73"7966dependencies = [7967 "parity-scale-codec 2.0.1",7968 "sp-runtime 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7969 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",7970]754079717541[[package]]7972[[package]]7542name = "sp-state-machine"7973name = "sp-state-machine"7550 "parking_lot 0.11.1",7981 "parking_lot 0.11.1",7551 "rand 0.7.3",7982 "rand 0.7.3",7552 "smallvec 1.6.1",7983 "smallvec 1.6.1",7553 "sp-core",7984 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7554 "sp-externalities",7985 "sp-externalities 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7555 "sp-panic-handler",7986 "sp-panic-handler 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7556 "sp-std",7987 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7557 "sp-trie",7988 "sp-trie 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7558 "thiserror",7989 "thiserror",7559 "trie-db",7990 "trie-db",7560 "trie-root",7991 "trie-root",7561]7992]79937994[[package]]7995name = "sp-state-machine"7996version = "0.9.0"7997source = "registry+https://github.com/rust-lang/crates.io-index"7998checksum = "46fa4143e58e9130f726d4e8a9b86f3530a8bd19a2eedcdcf4af205f4b5a6d4f"7999dependencies = [8000 "hash-db",8001 "log",8002 "num-traits",8003 "parity-scale-codec 2.0.1",8004 "parking_lot 0.11.1",8005 "rand 0.7.3",8006 "smallvec 1.6.1",8007 "sp-core 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",8008 "sp-externalities 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",8009 "sp-panic-handler 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",8010 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",8011 "sp-trie 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",8012 "thiserror",8013 "trie-db",8014 "trie-root",8015]756280167563[[package]]8017[[package]]7564name = "sp-std"8018name = "sp-std"7565version = "3.0.0"8019version = "3.0.0"7566source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"8020source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"80218022[[package]]8023name = "sp-std"8024version = "3.0.0"8025source = "registry+https://github.com/rust-lang/crates.io-index"8026checksum = "35391ea974fa5ee869cb094d5b437688fbf3d8127d64d1b9fed5822a1ed39b12"756780277568[[package]]8028[[package]]7569name = "sp-storage"8029name = "sp-storage"7574 "parity-scale-codec 2.0.1",8034 "parity-scale-codec 2.0.1",7575 "ref-cast",8035 "ref-cast",7576 "serde",8036 "serde",7577 "sp-debug-derive",8037 "sp-debug-derive 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7578 "sp-std",8038 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7579]8039]80408041[[package]]8042name = "sp-storage"8043version = "3.0.0"8044source = "registry+https://github.com/rust-lang/crates.io-index"8045checksum = "86af458d4a0251c490cdde9dcaaccb88d398f3b97ac6694cdd49ed9337e6b961"8046dependencies = [8047 "impl-serde",8048 "parity-scale-codec 2.0.1",8049 "ref-cast",8050 "serde",8051 "sp-debug-derive 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",8052 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",8053]758080547581[[package]]8055[[package]]7582name = "sp-tasks"8056name = "sp-tasks"7583version = "3.0.0"8057version = "3.0.0"7584source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"8058source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"7585dependencies = [8059dependencies = [7586 "log",8060 "log",7587 "sp-core",8061 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7588 "sp-externalities",8062 "sp-externalities 0.9.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7589 "sp-io",8063 "sp-io 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7590 "sp-runtime-interface",8064 "sp-runtime-interface 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7591 "sp-std",8065 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7592]8066]759380677594[[package]]8068[[package]]7597source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"8071source = "git+https://github.com/paritytech/substrate.git?branch=frontier#39b31316815ec6d709e7ad7c1a31c436d14c53e6"7598dependencies = [8072dependencies = [7599 "parity-scale-codec 2.0.1",8073 "parity-scale-codec 2.0.1",7600 "sp-api",8074 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7601 "sp-inherents",8075 "sp-inherents 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7602 "sp-runtime",8076 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7603 "sp-std",8077 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7604 "wasm-timer",8078 "wasm-timer",7605]8079]80808081[[package]]8082name = "sp-timestamp"8083version = "3.0.0"8084source = "registry+https://github.com/rust-lang/crates.io-index"8085checksum = "27387c541197b9f47f3d9ddcab5649a3ecdca582d2f2ea2b511af24a3d3cbf83"8086dependencies = [8087 "impl-trait-for-tuples 0.2.1",8088 "parity-scale-codec 2.0.1",8089 "sp-api 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",8090 "sp-inherents 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",8091 "sp-runtime 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",8092 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",8093 "wasm-timer",8094]760680957607[[package]]8096[[package]]7608name = "sp-tracing"8097name = "sp-tracing"7611dependencies = [8100dependencies = [7612 "log",8101 "log",7613 "parity-scale-codec 2.0.1",8102 "parity-scale-codec 2.0.1",7614 "sp-std",8103 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7615 "tracing",8104 "tracing",7616 "tracing-core",8105 "tracing-core",7617 "tracing-subscriber",8106 "tracing-subscriber",7618]8107]81088109[[package]]8110name = "sp-tracing"8111version = "3.0.0"8112source = "registry+https://github.com/rust-lang/crates.io-index"8113checksum = "567382d8d4e14fb572752863b5cd57a78f9e9a6583332b590b726f061f3ea957"8114dependencies = [8115 "log",8116 "parity-scale-codec 2.0.1",8117 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",8118 "tracing",8119 "tracing-core",8120 "tracing-subscriber",8121]761981227620[[package]]8123[[package]]7621name = "sp-transaction-pool"8124name = "sp-transaction-pool"7627 "log",8130 "log",7628 "parity-scale-codec 2.0.1",8131 "parity-scale-codec 2.0.1",7629 "serde",8132 "serde",7630 "sp-api",8133 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7631 "sp-blockchain",8134 "sp-blockchain",7632 "sp-runtime",8135 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7633 "thiserror",8136 "thiserror",7634]8137]763581387641 "hash-db",8144 "hash-db",7642 "memory-db",8145 "memory-db",7643 "parity-scale-codec 2.0.1",8146 "parity-scale-codec 2.0.1",7644 "sp-core",8147 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7645 "sp-std",8148 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7646 "trie-db",8149 "trie-db",7647 "trie-root",8150 "trie-root",7648]8151]81528153[[package]]8154name = "sp-trie"8155version = "3.0.0"8156source = "registry+https://github.com/rust-lang/crates.io-index"8157checksum = "b85b7f745da41ef825c6f7b93f1fdc897b03df94a4884adfbb70fbcd0aed1298"8158dependencies = [8159 "hash-db",8160 "memory-db",8161 "parity-scale-codec 2.0.1",8162 "sp-core 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",8163 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",8164 "trie-db",8165 "trie-root",8166]764981677650[[package]]8168[[package]]7651name = "sp-utils"8169name = "sp-utils"7667 "impl-serde",8185 "impl-serde",7668 "parity-scale-codec 2.0.1",8186 "parity-scale-codec 2.0.1",7669 "serde",8187 "serde",7670 "sp-runtime",8188 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7671 "sp-std",8189 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7672]8190]81918192[[package]]8193name = "sp-version"8194version = "3.0.0"8195source = "registry+https://github.com/rust-lang/crates.io-index"8196checksum = "dbeffa538a13d715d30e01d57a2636ba32845b737a29a3ea32403576588222e7"8197dependencies = [8198 "impl-serde",8199 "parity-scale-codec 2.0.1",8200 "serde",8201 "sp-runtime 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",8202 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",8203]767382047674[[package]]8205[[package]]7675name = "sp-wasm-interface"8206name = "sp-wasm-interface"7678dependencies = [8209dependencies = [7679 "impl-trait-for-tuples 0.2.1",8210 "impl-trait-for-tuples 0.2.1",7680 "parity-scale-codec 2.0.1",8211 "parity-scale-codec 2.0.1",7681 "sp-std",8212 "sp-std 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7682 "wasmi",8213 "wasmi",7683]8214]82158216[[package]]8217name = "sp-wasm-interface"8218version = "3.0.0"8219source = "registry+https://github.com/rust-lang/crates.io-index"8220checksum = "b214e125666a6416cf30a70cc6a5dacd34a4e5197f8a3d479f714af7e1dc7a47"8221dependencies = [8222 "impl-trait-for-tuples 0.2.1",8223 "parity-scale-codec 2.0.1",8224 "sp-std 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",8225 "wasmi",8226]768482277685[[package]]8228[[package]]7686name = "spin"8229name = "spin"7816 "sc-client-api",8359 "sc-client-api",7817 "sc-rpc-api",8360 "sc-rpc-api",7818 "serde",8361 "serde",7819 "sp-api",8362 "sp-api 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7820 "sp-block-builder",8363 "sp-block-builder",7821 "sp-blockchain",8364 "sp-blockchain",7822 "sp-core",8365 "sp-core 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7823 "sp-runtime",8366 "sp-runtime 3.0.0 (git+https://github.com/paritytech/substrate.git?branch=frontier)",7824 "sp-transaction-pool",8367 "sp-transaction-pool",7825]8368]78268369Dockerfile-testsdiffbeforeafterboth--- a/Dockerfile-tests
+++ b/Dockerfile-tests
@@ -20,11 +20,14 @@
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
nvm install v15.0.1 && \
nvm use v15.0.1 && \
- npm install --save @polkadot/api
+ npm install --save @polkadot/api && \
+ npm install --save-dev mochawesome
CMD export NVM_DIR="$HOME/.nvm" && \
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
cd tests && \
- npm install --global yarn && \
+ npm install --global yarn && \
+ yarn add mochawesome && \
yarn install && \
- yarn test
+ yarn test --reporter mochawesome
+ # yarn test
ci_node.shdiffbeforeafterboth--- a/ci_node.sh
+++ b/ci_node.sh
@@ -1,10 +1,12 @@
#!/bin/bash
-docker-compose -f docker-compose-tests.yml up -d --build --force-recreate --no-deps
+#docker-compose -f docker-compose-tests.yml up -d --build --force-recreate --no-deps
+
+docker-compose -f docker-compose-tests.yml up -d --build
# validate if testing container finished
-while [ "$(docker ps | grep unit_test | wc -l)" -ge 1 ]; do echo "Unit test in process" && date && sleep 60; done && docker logs unit_test &> /home/polkadot/unit_test.log & \
-while [ "$(docker ps | grep integration_test | wc -l)" -ge 1 ]; do echo "Integration test in process" && sleep 60; done && docker logs integration_test &> /home/polkadot/integration_test.log
+while [ "$(docker ps | grep unit_test | wc -l)" -ge 1 ]; do echo "Unit tests in process" && sleep 600; done && docker logs unit_test &> /home/polkadot/report-log/unit_test.log & \
+while [ "$(docker ps | grep integration_test | wc -l)" -ge 1 ]; do echo "Integration tests in process" && sleep 600; done && docker logs integration_test &> /home/polkadot/report-log/integration_test.log
docker-compose -f docker-compose-tests.yml down -v
-echo "Wrokflow finished"
-docker system prune --force
\ No newline at end of file
+echo "Workflow finished"
+docker system prune --force
docker-compose-tests.ymldiffbeforeafterboth--- a/docker-compose-tests.yml
+++ b/docker-compose-tests.yml
@@ -21,14 +21,16 @@
build:
context: ./
dockerfile: Dockerfile-tests
- volumes:
+ volumes:
- ./tests/src/config_docker.ts:/nft_parachain/tests/src/config.ts
+ - /home/polkadot/mochawesome-report:/nft_parachain/tests/mochawesome-report
+ # command: bash -c 'while true; do sleep 20; df -h; done'
networks:
- node_test_network
depends_on:
- node_validator1
- unit_tests:
+ unit_tests:
container_name: unit_test
image: nft_unit_test
build:
@@ -43,4 +45,4 @@
networks:
node_test_network:
name: node_test_network
- driver: bridge
\ No newline at end of file
+ driver: bridge
pallets/inflation/Cargo.tomldiffbeforeafterboth--- /dev/null
+++ b/pallets/inflation/Cargo.toml
@@ -0,0 +1,48 @@
+[package]
+authors = ['Substrate DevHub <https://github.com/substrate-developer-hub>']
+description = 'Unqiue pallet inflation'
+edition = '2018'
+homepage = 'https://substrate.io'
+license = 'Unlicense'
+name = 'pallet-inflation'
+repository = 'https://github.com/usetech-llc/nft_private/'
+version = '3.0.0'
+
+[package.metadata.docs.rs]
+targets = ['x86_64-unknown-linux-gnu']
+
+# alias "parity-scale-code" to "codec"
+[dependencies.codec]
+default-features = false
+features = ['derive']
+package = 'parity-scale-codec'
+version = '2.0.0'
+
+[dependencies]
+serde = { version = "1.0.119" }
+frame-support = { default-features = false, version = '3.0.0' }
+frame-system = { default-features = false, version = '3.0.0' }
+pallet-balances = { default-features = false, version = '3.0.0' }
+pallet-timestamp = { default-features = false, version = '3.0.0' }
+pallet-randomness-collective-flip = { default-features = false, version = '3.0.0' }
+sp-std = { default-features = false, version = '3.0.0' }
+frame-benchmarking = { default-features = false, version = "3.0.0", optional = true }
+sp-core = { default-features = false, version = '3.0.0' }
+sp-io = { default-features = false, version = '3.0.0' }
+sp-runtime = { default-features = false, version = '3.0.0' }
+
+[features]
+default = ['std']
+std = [
+ 'codec/std',
+ 'serde/std',
+ 'frame-support/std',
+ 'frame-system/std',
+ 'pallet-balances/std',
+ 'pallet-timestamp/std',
+ 'pallet-randomness-collective-flip/std',
+ 'sp-std/std',
+ 'sp-runtime/std',
+ 'frame-benchmarking/std',
+]
+runtime-benchmarks = ["frame-benchmarking"]
pallets/inflation/src/benchmarking.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/inflation/src/benchmarking.rs
@@ -0,0 +1,19 @@
+#![cfg(feature = "runtime-benchmarks")]
+
+use super::*;
+use crate::Module as Inflation;
+
+use sp_std::prelude::*;
+use frame_system::RawOrigin;
+use frame_benchmarking::{benchmarks};
+use frame_support::traits::OnInitialize;
+
+benchmarks! {
+
+ on_initialize {
+ let block1: T::BlockNumber = T::BlockNumber::from(1u32);
+ let block2: T::BlockNumber = T::BlockNumber::from(2u32);
+ Inflation::<T>::on_initialize(block1); // Create Treasury account
+ }: { Inflation::<T>::on_initialize(block2); } // Benchmark deposit_into_existing path
+
+}
pallets/inflation/src/lib.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/inflation/src/lib.rs
@@ -0,0 +1,130 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
+#![recursion_limit = "1024"]
+
+#![cfg_attr(not(feature = "std"), no_std)]
+
+#[cfg(feature = "std")]
+pub use std::*;
+
+#[cfg(feature = "std")]
+pub use serde::*;
+
+#[cfg(feature = "runtime-benchmarks")]
+mod benchmarking;
+
+#[cfg(test)]
+mod tests;
+
+pub use frame_support::{
+ construct_runtime, decl_module, decl_storage,
+ ensure,
+ traits::{
+ Currency, ExistenceRequirement, Get, Imbalance, KeyOwnerProofSystem, OnUnbalanced,
+ Randomness, IsSubType, WithdrawReasons,
+ },
+ weights::{
+ constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight, WEIGHT_PER_SECOND},
+ DispatchInfo, GetDispatchInfo, IdentityFee, Pays, PostDispatchInfo, Weight,
+ WeightToFeePolynomial, DispatchClass,
+ },
+ StorageValue,
+ transactional,
+};
+
+// #[cfg(feature = "runtime-benchmarks")]
+pub use frame_support::dispatch::DispatchResult;
+
+use sp_runtime::{
+ Perbill,
+ traits::{Zero}
+};
+use sp_std::convert::TryInto;
+
+use frame_system::{self as system};
+
+/// The balance type of this module.
+pub type BalanceOf<T> =
+ <<T as Config>::Currency as Currency<<T as frame_system::Config>::AccountId>>::Balance;
+
+pub const YEAR: u32 = 5_259_600;
+pub const TOTAL_YEARS_UNTIL_FLAT: u32 = 9;
+pub const START_INFLATION_PERCENT: u32 = 10;
+pub const END_INFLATION_PERCENT: u32 = 4;
+
+pub trait Config: system::Config {
+ type Currency: Currency<Self::AccountId>;
+ type TreasuryAccountId: Get<Self::AccountId>;
+ type InflationBlockInterval: Get<Self::BlockNumber>;
+}
+
+decl_storage! {
+ trait Store for Module<T: Config> as Inflation {
+ /// starting year total issuance
+ pub StartingYearTotalIssuance get(fn starting_year_total_issuance): BalanceOf<T>;
+
+ /// Current block inflation
+ pub BlockInflation get(fn block_inflation): BalanceOf<T>;
+ }
+}
+
+decl_module! {
+ pub struct Module<T: Config> for enum Call
+ where
+ origin: T::Origin,
+ {
+ const InflationBlockInterval: T::BlockNumber = T::InflationBlockInterval::get();
+
+ fn on_initialize(now: T::BlockNumber) -> Weight
+ {
+ let mut consumed_weight = 0;
+ let mut add_weight = |reads, writes, weight| {
+ consumed_weight += T::DbWeight::get().reads_writes(reads, writes);
+ consumed_weight += weight;
+ };
+
+ let block_interval: u32 = T::InflationBlockInterval::get().try_into().unwrap_or(0);
+
+ // Recalculate inflation on the first block of the year (or if it is not initialized yet)
+ if (now % T::BlockNumber::from(YEAR)).is_zero() || <BlockInflation<T>>::get().is_zero() {
+ let current_year: u32 = (now / T::BlockNumber::from(YEAR)).try_into().unwrap_or(0);
+
+ let one_percent = Perbill::from_percent(1);
+
+ if current_year <= TOTAL_YEARS_UNTIL_FLAT {
+ let amount: BalanceOf<T> = Perbill::from_rational_approximation(
+ block_interval * (START_INFLATION_PERCENT * TOTAL_YEARS_UNTIL_FLAT - current_year * (START_INFLATION_PERCENT - END_INFLATION_PERCENT)),
+ YEAR * TOTAL_YEARS_UNTIL_FLAT
+ ) * ( one_percent * T::Currency::total_issuance() );
+ <BlockInflation<T>>::put(amount);
+ }
+ else {
+ let amount: BalanceOf<T> = Perbill::from_rational_approximation(
+ block_interval * END_INFLATION_PERCENT,
+ YEAR
+ ) * (one_percent * T::Currency::total_issuance());
+ <BlockInflation<T>>::put(amount);
+ }
+ <StartingYearTotalIssuance<T>>::set(T::Currency::total_issuance());
+
+ // First time deposit
+ T::Currency::deposit_creating(&T::TreasuryAccountId::get(), <BlockInflation<T>>::get());
+
+ add_weight(7, 6, 28_300_000);
+ }
+
+ // Apply inflation every InflationBlockInterval blocks and in the 1st block to initialize Treasury account
+ else if (now % T::BlockNumber::from(block_interval)).is_zero() {
+ T::Currency::deposit_into_existing(&T::TreasuryAccountId::get(), <BlockInflation<T>>::get()).ok();
+
+ add_weight(3, 2, 12_900_000);
+ }
+
+ consumed_weight
+ }
+
+ }
+}
pallets/inflation/src/tests.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/inflation/src/tests.rs
@@ -0,0 +1,241 @@
+#[cfg(test)]
+mod tests {
+ use crate as pallet_inflation;
+
+ use frame_system;
+ use frame_support::{traits::{Currency}, parameter_types};
+ use frame_support::{traits::OnInitialize};
+ use sp_core::H256;
+ use sp_runtime::{traits::{BlakeTwo256, IdentityLookup}, testing::Header};
+
+ type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic<Test>;
+ type Block = frame_system::mocking::MockBlock<Test>;
+
+ const YEAR: u64 = 5_259_600;
+
+ parameter_types! {
+ pub const ExistentialDeposit: u64 = 1;
+ pub const MaxLocks: u32 = 50;
+ }
+
+ impl pallet_balances::Config for Test {
+ type AccountStore = System;
+ type Balance = u64;
+ type DustRemoval = ();
+ type Event = ();
+ type ExistentialDeposit = ExistentialDeposit;
+ type WeightInfo = ();
+ type MaxLocks = MaxLocks;
+ }
+
+ frame_support::construct_runtime!(
+ pub enum Test where
+ Block = Block,
+ NodeBlock = Block,
+ UncheckedExtrinsic = UncheckedExtrinsic,
+ {
+ Balances: pallet_balances::{Module, Call, Storage},
+ System: frame_system::{Module, Call, Config, Storage, Event<T>},
+ Inflation: pallet_inflation::{Module, Call, Storage},
+ }
+ );
+
+ parameter_types! {
+ pub const BlockHashCount: u64 = 250;
+ pub BlockWeights: frame_system::limits::BlockWeights =
+ frame_system::limits::BlockWeights::simple_max(1024);
+ pub const SS58Prefix: u8 = 42;
+ }
+
+ impl frame_system::Config for Test {
+ type BaseCallFilter = ();
+ type BlockWeights = ();
+ type BlockLength = ();
+ type DbWeight = ();
+ type Origin = Origin;
+ type Call = Call;
+ type Index = u64;
+ type BlockNumber = u64;
+ type Hash = H256;
+ type Hashing = BlakeTwo256;
+ type AccountId = u64;
+ type Lookup = IdentityLookup<Self::AccountId>;
+ type Header = Header;
+ type Event = ();
+ type BlockHashCount = BlockHashCount;
+ type Version = ();
+ type PalletInfo = PalletInfo;
+ type AccountData = pallet_balances::AccountData<u64>;
+ type OnNewAccount = ();
+ type OnKilledAccount = ();
+ type SystemWeightInfo = ();
+ type SS58Prefix = SS58Prefix;
+ }
+
+ parameter_types! {
+ pub TreasuryAccountId: u64 = 1234;
+ pub const InflationBlockInterval: u32 = 100; // every time per how many blocks inflation is applied
+ }
+
+ impl pallet_inflation::Config for Test {
+ type Currency = Balances;
+ type TreasuryAccountId = TreasuryAccountId;
+ type InflationBlockInterval = InflationBlockInterval;
+ }
+
+ // Build genesis storage according to the mock runtime.
+ pub fn new_test_ext() -> sp_io::TestExternalities {
+ frame_system::GenesisConfig::default().build_storage::<Test>().unwrap().into()
+ }
+
+ #[test]
+ fn inflation_works() {
+ new_test_ext().execute_with(|| {
+ // Total issuance = 1_000_000_000
+ let initial_issuance: u64 = 1_000_000_000;
+ let _ = <Balances as Currency<_>>::deposit_creating(&1234, initial_issuance);
+ assert_eq!(Balances::free_balance(1234), initial_issuance);
+
+ // BlockInflation should be set after 1st block and
+ // first inflation deposit should be equal to BlockInflation
+ Inflation::on_initialize(1);
+ assert!(Inflation::block_inflation() > 0);
+ assert_eq!(Balances::free_balance(1234) - initial_issuance, Inflation::block_inflation());
+ });
+ }
+
+ #[test]
+ fn inflation_second_deposit() {
+ new_test_ext().execute_with(|| {
+ // Total issuance = 1_000_000_000
+ let initial_issuance: u64 = 1_000_000_000;
+ let _ = <Balances as Currency<_>>::deposit_creating(&1234, initial_issuance);
+ assert_eq!(Balances::free_balance(1234), initial_issuance);
+ Inflation::on_initialize(1);
+
+ // Next inflation deposit happens when block is multiple of InflationBlockInterval
+ let mut block: u32 = 2;
+ let balance_before: u64 = Balances::free_balance(1234);
+ while block % InflationBlockInterval::get() != 0 {
+ Inflation::on_initialize(block as u64);
+ block += 1;
+ }
+ let balance_just_before: u64 = Balances::free_balance(1234);
+ assert_eq!(balance_before, balance_just_before);
+
+ // The block with inflation
+ Inflation::on_initialize(block as u64);
+ let balance_after: u64 = Balances::free_balance(1234);
+ assert_eq!(balance_after - balance_just_before, Inflation::block_inflation());
+ });
+ }
+
+ #[test]
+ fn inflation_in_1_year() {
+ new_test_ext().execute_with(|| {
+ // Total issuance = 1_000_000_000
+ let initial_issuance: u64 = 1_000_000_000;
+ let _ = <Balances as Currency<_>>::deposit_creating(&1234, initial_issuance);
+ assert_eq!(Balances::free_balance(1234), initial_issuance);
+ Inflation::on_initialize(1);
+ let block_inflation_year_0 = Inflation::block_inflation();
+
+ Inflation::on_initialize(YEAR);
+ let block_inflation_year_1 = Inflation::block_inflation();
+
+ // Assert that year 1 inflation is less than year 0
+ assert!(block_inflation_year_0 > block_inflation_year_1);
+ });
+ }
+
+ #[test]
+ fn inflation_in_1_to_9_years() {
+ new_test_ext().execute_with(|| {
+ // Total issuance = 1_000_000_000
+ let initial_issuance: u64 = 1_000_000_000;
+ let _ = <Balances as Currency<_>>::deposit_creating(&1234, initial_issuance);
+ assert_eq!(Balances::free_balance(1234), initial_issuance);
+ Inflation::on_initialize(1);
+
+ for year in 1..=9 {
+ let block_inflation_year_before = Inflation::block_inflation();
+ Inflation::on_initialize(YEAR * year);
+ let block_inflation_year_after = Inflation::block_inflation();
+
+ // Assert that next year inflation is less than previous year inflation
+ assert!(block_inflation_year_before > block_inflation_year_after);
+ }
+
+ });
+ }
+
+ #[test]
+ fn inflation_after_year_10_is_flat() {
+ new_test_ext().execute_with(|| {
+ // Total issuance = 1_000_000_000
+ let initial_issuance: u64 = 1_000_000_000;
+ let _ = <Balances as Currency<_>>::deposit_creating(&1234, initial_issuance);
+ assert_eq!(Balances::free_balance(1234), initial_issuance);
+ Inflation::on_initialize(YEAR * 9);
+
+ for year in 10..=20 {
+ let block_inflation_year_before = Inflation::block_inflation();
+ Inflation::on_initialize(YEAR * year);
+ let block_inflation_year_after = Inflation::block_inflation();
+
+ // Assert that next year inflation is equal to previous year inflation
+ assert_eq!(block_inflation_year_before, block_inflation_year_after);
+ }
+ });
+ }
+
+ #[test]
+ fn inflation_rate_by_year() {
+ new_test_ext().execute_with(|| {
+ let payouts: u64 = YEAR / InflationBlockInterval::get() as u64;
+
+ // Inflation starts at 10% and does down by 2/3% every year until year 9 (included),
+ // then it is flat.
+ let payout_by_year: [u64; 11] = [
+ 1000,
+ 933,
+ 867,
+ 800,
+ 733,
+ 667,
+ 600,
+ 533,
+ 467,
+ 400,
+ 400
+ ];
+
+ // For accuracy total issuance = payout0 * payouts * 10;
+ let initial_issuance: u64 = payout_by_year[0] * payouts * 10;
+ let _ = <Balances as Currency<_>>::deposit_creating(&1234, initial_issuance);
+ assert_eq!(Balances::free_balance(1234), initial_issuance);
+
+ for year in 0..=10 {
+ // Year first block
+ Inflation::on_initialize(year*YEAR);
+ let mut actual_payout = Inflation::block_inflation();
+ assert_eq!(actual_payout, payout_by_year[year as usize]);
+
+ // Year second block
+ Inflation::on_initialize(year*YEAR+1);
+ actual_payout = Inflation::block_inflation();
+ assert_eq!(actual_payout, payout_by_year[year as usize]);
+
+ // Year middle block
+ Inflation::on_initialize(year*YEAR + YEAR/2);
+ actual_payout = Inflation::block_inflation();
+ assert_eq!(actual_payout, payout_by_year[year as usize]);
+
+ // Year last block
+ Inflation::on_initialize((year + 1)*YEAR-1);
+ actual_payout = Inflation::block_inflation();
+ assert_eq!(actual_payout, payout_by_year[year as usize]);
+ }
+ });
+ }
+}
pallets/nft/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/nft/src/benchmarking.rs
+++ b/pallets/nft/src/benchmarking.rs
@@ -1,420 +1,419 @@
-#[cfg(feature = "runtime-benchmarks")]
-// mod benchmarking {
- use super::*;
- use sp_std::prelude::*;
- use frame_system::RawOrigin;
- // use frame_support::{ensure, traits::OnFinalize};
- use frame_benchmarking::{benchmarks, account, whitelisted_caller}; // , TrackedStorageKey,
- use crate::Module as Nft;
+#![cfg(feature = "runtime-benchmarks")]
- const SEED: u32 = 1;
+use super::*;
+use crate::Module as Nft;
- fn default_nft_data() -> CreateItemData {
- CreateItemData::NFT(CreateNftData { const_data: vec![1, 2, 3], variable_data: vec![3, 2, 1] })
- }
-
- fn default_fungible_data () -> CreateItemData {
- CreateItemData::Fungible(CreateFungibleData { })
- }
-
- fn default_re_fungible_data () -> CreateItemData {
- CreateItemData::ReFungible(CreateReFungibleData { const_data: vec![1, 2, 3], variable_data: vec![3, 2, 1] })
- }
+use sp_std::prelude::*;
+use frame_system::RawOrigin;
+use frame_benchmarking::{benchmarks, account, whitelisted_caller}; // , TrackedStorageKey,
+const SEED: u32 = 1;
+/*
+fn default_nft_data() -> CreateItemData {
+ CreateItemData::NFT(CreateNftData { const_data: vec![1, 2, 3], variable_data: vec![3, 2, 1] })
+}
- benchmarks! {
+fn default_fungible_data () -> CreateItemData {
+ CreateItemData::Fungible(CreateFungibleData { })
+}
- _ {}
+fn default_re_fungible_data () -> CreateItemData {
+ CreateItemData::ReFungible(CreateReFungibleData { const_data: vec![1, 2, 3], variable_data: vec![3, 2, 1] })
+}
+*/
- create_collection {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::NFT;
- let caller: T::AccountId = account("caller", 0, SEED);
- }: create_collection(RawOrigin::Signed(caller.clone()), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode)
- verify {
- assert_eq!(Nft::<T>::collection(2).owner, caller);
- }
+benchmarks! {
- destroy_collection {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::NFT;
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- }: destroy_collection(RawOrigin::Signed(caller.clone()), 2)
+ create_collection {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = account("caller", 0, SEED);
+ }: _(RawOrigin::Signed(caller.clone()), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode)
+/*
+ verify {
+ assert_eq!(Nft::<T>::collection_id(2).owner, caller);
+ }
+ destroy_collection {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ }: _(RawOrigin::Signed(caller.clone()), 2)
- add_to_white_list {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::NFT;
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- let whitelist_account: T::AccountId = account("admin", 0, SEED);
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- }: add_to_white_list(RawOrigin::Signed(caller.clone()), 2, whitelist_account)
+ add_to_white_list {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ let whitelist_account: T::AccountId = account("admin", 0, SEED);
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ }: add_to_white_list(RawOrigin::Signed(caller.clone()), 2, whitelist_account)
- remove_from_white_list {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::NFT;
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- let whitelist_account: T::AccountId = account("admin", 0, SEED);
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- Nft::<T>::add_to_white_list(RawOrigin::Signed(caller.clone()).into(), 2, whitelist_account.clone())?;
- }: remove_from_white_list(RawOrigin::Signed(caller.clone()), 2, whitelist_account)
+ remove_from_white_list {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ let whitelist_account: T::AccountId = account("admin", 0, SEED);
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ Nft::<T>::add_to_white_list(RawOrigin::Signed(caller.clone()).into(), 2, whitelist_account.clone())?;
+ }: remove_from_white_list(RawOrigin::Signed(caller.clone()), 2, whitelist_account)
- set_public_access_mode {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::NFT;
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- }: set_public_access_mode(RawOrigin::Signed(caller.clone()), 2, AccessMode::WhiteList)
+ set_public_access_mode {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ }: set_public_access_mode(RawOrigin::Signed(caller.clone()), 2, AccessMode::WhiteList)
- set_mint_permission {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::NFT;
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- }: set_mint_permission(RawOrigin::Signed(caller.clone()), 2, true)
+ set_mint_permission {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ }: set_mint_permission(RawOrigin::Signed(caller.clone()), 2, true)
- change_collection_owner {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::NFT;
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- let new_owner: T::AccountId = account("admin", 0, SEED);
- }: change_collection_owner(RawOrigin::Signed(caller.clone()), 2, new_owner)
+ change_collection_owner {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let new_owner: T::AccountId = account("admin", 0, SEED);
+ }: change_collection_owner(RawOrigin::Signed(caller.clone()), 2, new_owner)
- add_collection_admin {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::NFT;
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- let new_admin: T::AccountId = account("admin", 0, SEED);
- }: add_collection_admin(RawOrigin::Signed(caller.clone()), 2, new_admin)
+ add_collection_admin {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let new_admin: T::AccountId = account("admin", 0, SEED);
+ }: add_collection_admin(RawOrigin::Signed(caller.clone()), 2, new_admin)
- remove_collection_admin {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::NFT;
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- let new_admin: T::AccountId = account("admin", 0, SEED);
- Nft::<T>::add_collection_admin(RawOrigin::Signed(caller.clone()).into(), 2, new_admin.clone())?;
- }: remove_collection_admin(RawOrigin::Signed(caller.clone()), 2, new_admin)
+ remove_collection_admin {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let new_admin: T::AccountId = account("admin", 0, SEED);
+ Nft::<T>::add_collection_admin(RawOrigin::Signed(caller.clone()).into(), 2, new_admin.clone())?;
+ }: remove_collection_admin(RawOrigin::Signed(caller.clone()), 2, new_admin)
- set_collection_sponsor {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::NFT;
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- }: set_collection_sponsor(RawOrigin::Signed(caller.clone()), 2, caller.clone())
+ set_collection_sponsor {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ }: set_collection_sponsor(RawOrigin::Signed(caller.clone()), 2, caller.clone())
- confirm_sponsorship {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::NFT;
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- Nft::<T>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone())?;
- }: confirm_sponsorship(RawOrigin::Signed(caller.clone()), 2)
+ confirm_sponsorship {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ Nft::<T>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone())?;
+ }: confirm_sponsorship(RawOrigin::Signed(caller.clone()), 2)
- remove_collection_sponsor {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::NFT;
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- Nft::<T>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone())?;
- Nft::<T>::confirm_sponsorship(RawOrigin::Signed(caller.clone()).into(), 2)?;
- }: remove_collection_sponsor(RawOrigin::Signed(caller.clone()), 2)
+ remove_collection_sponsor {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ Nft::<T>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone())?;
+ Nft::<T>::confirm_sponsorship(RawOrigin::Signed(caller.clone()).into(), 2)?;
+ }: remove_collection_sponsor(RawOrigin::Signed(caller.clone()), 2)
- // nft item
- create_item_nft {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::NFT;
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- let data = default_nft_data();
-
- }: create_item(RawOrigin::Signed(caller.clone()), 2, caller.clone(), data)
+ // nft item
+ create_item_nft {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let data = default_nft_data();
+
+ }: create_item(RawOrigin::Signed(caller.clone()), 2, caller.clone(), data)
- #[extra]
- create_item_nft_large {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::NFT;
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- let mut nft_data = CreateNftData {
- const_data: vec![],
- variable_data: vec![]
- };
- for i in 0..1998 {
- nft_data.const_data.push(10);
- nft_data.variable_data.push(10);
- }
- let data = CreateItemData::NFT(nft_data);
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ #[extra]
+ create_item_nft_large {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ let mut nft_data = CreateNftData {
+ const_data: vec![],
+ variable_data: vec![]
+ };
+ for i in 0..1998 {
+ nft_data.const_data.push(10);
+ nft_data.variable_data.push(10);
+ }
+ let data = CreateItemData::NFT(nft_data);
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- }: create_item(RawOrigin::Signed(caller.clone()), 2, caller.clone(), data)
+ }: create_item(RawOrigin::Signed(caller.clone()), 2, caller.clone(), data)
- // fungible item
- create_item_fungible {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::Fungible(3);
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- let data = default_fungible_data();
+ // fungible item
+ create_item_fungible {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::Fungible(3);
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let data = default_fungible_data();
- }: create_item(RawOrigin::Signed(caller.clone()), 2, caller.clone(), data)
+ }: create_item(RawOrigin::Signed(caller.clone()), 2, caller.clone(), data)
- // refungible item
- create_item_refungible {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::ReFungible(3);
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- let data = default_re_fungible_data();
+ // refungible item
+ create_item_refungible {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::ReFungible(3);
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let data = default_re_fungible_data();
- }: create_item(RawOrigin::Signed(caller.clone()), 2, caller.clone(), data)
+ }: create_item(RawOrigin::Signed(caller.clone()), 2, caller.clone(), data)
- burn_item {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::NFT;
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- let data = default_nft_data();
- Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
+ burn_item {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let data = default_nft_data();
+ Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
- }: burn_item(RawOrigin::Signed(caller.clone()), 2, 1)
+ }: burn_item(RawOrigin::Signed(caller.clone()), 2, 1)
- transfer_nft {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::NFT;
- let recipient: T::AccountId = account("recipient", 0, SEED);
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- let data = default_nft_data();
- Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
+ transfer_nft {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let recipient: T::AccountId = account("recipient", 0, SEED);
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let data = default_nft_data();
+ Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
- }: transfer(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1, 1)
-
- transfer_fungible {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::Fungible(3);
- let recipient: T::AccountId = account("recipient", 0, SEED);
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- let data = default_fungible_data();
- Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
+ }: transfer(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1, 1)
+
+ transfer_fungible {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::Fungible(3);
+ let recipient: T::AccountId = account("recipient", 0, SEED);
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let data = default_fungible_data();
+ Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
- }: transfer(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1, 1)
+ }: transfer(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1, 1)
- transfer_refungible {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::ReFungible(3);
- let recipient: T::AccountId = account("recipient", 0, SEED);
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- let data = default_re_fungible_data();
- Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
+ transfer_refungible {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::ReFungible(3);
+ let recipient: T::AccountId = account("recipient", 0, SEED);
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let data = default_re_fungible_data();
+ Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
- }: transfer(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1, 1)
+ }: transfer(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1, 1)
- approve {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::ReFungible(3);
- let recipient: T::AccountId = account("recipient", 0, SEED);
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- let data = default_re_fungible_data();
- Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
+ approve {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::ReFungible(3);
+ let recipient: T::AccountId = account("recipient", 0, SEED);
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let data = default_re_fungible_data();
+ Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
- }: approve(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1)
+ }: approve(RawOrigin::Signed(caller.clone()), recipient.clone(), 2, 1)
- // Nft
- transfer_from_nft {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::NFT;
- let recipient: T::AccountId = account("recipient", 0, SEED);
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- let data = default_nft_data();
- Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
- Nft::<T>::approve(RawOrigin::Signed(caller.clone()).into(), recipient.clone(), 2, 1)?;
+ // Nft
+ transfer_from_nft {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let recipient: T::AccountId = account("recipient", 0, SEED);
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let data = default_nft_data();
+ Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
+ Nft::<T>::approve(RawOrigin::Signed(caller.clone()).into(), recipient.clone(), 2, 1)?;
- }: transfer_from(RawOrigin::Signed(caller.clone()), caller.clone(), recipient.clone(), 2, 1, 1)
+ }: transfer_from(RawOrigin::Signed(caller.clone()), caller.clone(), recipient.clone(), 2, 1, 1)
- // Fungible
- transfer_from_fungible {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::Fungible(3);
- let recipient: T::AccountId = account("recipient", 0, SEED);
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- let data = default_fungible_data();
- Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
- Nft::<T>::approve(RawOrigin::Signed(caller.clone()).into(), recipient.clone(), 2, 1)?;
+ // Fungible
+ transfer_from_fungible {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::Fungible(3);
+ let recipient: T::AccountId = account("recipient", 0, SEED);
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let data = default_fungible_data();
+ Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
+ Nft::<T>::approve(RawOrigin::Signed(caller.clone()).into(), recipient.clone(), 2, 1)?;
- }: transfer_from(RawOrigin::Signed(caller.clone()), caller.clone(), recipient.clone(), 2, 1, 1)
+ }: transfer_from(RawOrigin::Signed(caller.clone()), caller.clone(), recipient.clone(), 2, 1, 1)
- // ReFungible
- transfer_from_refungible {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::ReFungible(3);
- let recipient: T::AccountId = account("recipient", 0, SEED);
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- let data = default_re_fungible_data();
- Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
- Nft::<T>::approve(RawOrigin::Signed(caller.clone()).into(), recipient.clone(), 2, 1)?;
+ // ReFungible
+ transfer_from_refungible {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::ReFungible(3);
+ let recipient: T::AccountId = account("recipient", 0, SEED);
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let data = default_re_fungible_data();
+ Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
+ Nft::<T>::approve(RawOrigin::Signed(caller.clone()).into(), recipient.clone(), 2, 1)?;
- }: transfer_from(RawOrigin::Signed(caller.clone()), caller.clone(), recipient.clone(), 2, 1, 1)
+ }: transfer_from(RawOrigin::Signed(caller.clone()), caller.clone(), recipient.clone(), 2, 1, 1)
- enable_contract_sponsoring {
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ enable_contract_sponsoring {
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- }: enable_contract_sponsoring(RawOrigin::Signed(caller.clone()), caller.clone(), true)
+ }: enable_contract_sponsoring(RawOrigin::Signed(caller.clone()), caller.clone(), true)
- set_offchain_schema {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::ReFungible(3);
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ set_offchain_schema {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::ReFungible(3);
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- }: set_offchain_schema(RawOrigin::Signed(caller.clone()), 2, [1,2,3].to_vec())
+ }: set_offchain_schema(RawOrigin::Signed(caller.clone()), 2, [1,2,3].to_vec())
- set_const_on_chain_schema {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::ReFungible(3);
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- }: set_const_on_chain_schema(RawOrigin::Signed(caller.clone()), 2, [1,2,3].to_vec())
-
- set_variable_on_chain_schema {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::ReFungible(3);
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- }: set_variable_on_chain_schema(RawOrigin::Signed(caller.clone()), 2, [1,2,3].to_vec())
+ set_const_on_chain_schema {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::ReFungible(3);
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ }: set_const_on_chain_schema(RawOrigin::Signed(caller.clone()), 2, [1,2,3].to_vec())
+
+ set_variable_on_chain_schema {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::ReFungible(3);
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ }: set_variable_on_chain_schema(RawOrigin::Signed(caller.clone()), 2, [1,2,3].to_vec())
- set_variable_meta_data {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::NFT;
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- let data = default_nft_data();
- Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
+ set_variable_meta_data {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let data = default_nft_data();
+ Nft::<T>::create_item(RawOrigin::Signed(caller.clone()).into(), 2, caller.clone(), data)?;
- }: set_variable_meta_data(RawOrigin::Signed(caller.clone()), 2, 1, [1, 2, 3].to_vec())
+ }: set_variable_meta_data(RawOrigin::Signed(caller.clone()), 2, 1, [1, 2, 3].to_vec())
- set_schema_version {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::NFT;
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- }: set_schema_version(RawOrigin::Signed(caller.clone()), 2, SchemaVersion::Unique)
+ set_schema_version {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ }: set_schema_version(RawOrigin::Signed(caller.clone()), 2, SchemaVersion::Unique)
- set_chain_limits {
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- let limits = ChainLimits {
- collection_numbers_limit: 0,
- account_token_ownership_limit: 0,
- collections_admins_limit: 0,
- custom_data_limit: 0,
- nft_sponsor_transfer_timeout: 0,
- fungible_sponsor_transfer_timeout: 0,
- refungible_sponsor_transfer_timeout: 0
- };
- }: set_chain_limits(RawOrigin::Signed(caller.clone()), limits)
+ set_chain_limits {
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ let limits = ChainLimits {
+ collection_numbers_limit: 0,
+ account_token_ownership_limit: 0,
+ collections_admins_limit: 0,
+ custom_data_limit: 0,
+ nft_sponsor_transfer_timeout: 0,
+ fungible_sponsor_transfer_timeout: 0,
+ refungible_sponsor_transfer_timeout: 0
+ };
+ }: set_chain_limits(RawOrigin::Signed(caller.clone()), limits)
- set_contract_sponsoring_rate_limit {
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::NFT;
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
- let block_number: T::BlockNumber = 0.into();
- }: set_contract_sponsoring_rate_limit(RawOrigin::Signed(caller.clone()), caller.clone(), block_number)
+ set_contract_sponsoring_rate_limit {
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+ let block_number: T::BlockNumber = 0.into();
+ }: set_contract_sponsoring_rate_limit(RawOrigin::Signed(caller.clone()), caller.clone(), block_number)
- set_collection_limits{
- let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
- let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
- let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
- let mode: CollectionMode = CollectionMode::NFT;
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
-
- let cl = CollectionLimits {
- account_token_ownership_limit: 0,
- sponsored_data_size: 0,
- token_limit: 0,
- sponsor_transfer_timeout: 0
- };
+ set_collection_limits{
+ let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
+ let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
+ let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
+ let mode: CollectionMode = CollectionMode::NFT;
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
+
+ let cl = CollectionLimits {
+ account_token_ownership_limit: 0,
+ sponsored_data_size: 0,
+ token_limit: 0,
+ sponsor_transfer_timeout: 0
+ };
- }: set_collection_limits(RawOrigin::Signed(caller.clone()), 2, cl)
+ }: set_collection_limits(RawOrigin::Signed(caller.clone()), 2, cl)
- add_to_contract_white_list{
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- }: add_to_contract_white_list(RawOrigin::Signed(caller.clone()), caller.clone(), caller.clone())
+ add_to_contract_white_list{
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ }: add_to_contract_white_list(RawOrigin::Signed(caller.clone()), caller.clone(), caller.clone())
- remove_from_contract_white_list{
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- Nft::<T>::add_to_contract_white_list(RawOrigin::Signed(caller.clone()).into(), caller.clone(), caller.clone())?;
- }: remove_from_contract_white_list(RawOrigin::Signed(caller.clone()), caller.clone(), caller.clone())
+ remove_from_contract_white_list{
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ Nft::<T>::add_to_contract_white_list(RawOrigin::Signed(caller.clone()).into(), caller.clone(), caller.clone())?;
+ }: remove_from_contract_white_list(RawOrigin::Signed(caller.clone()), caller.clone(), caller.clone())
- toggle_contract_white_list{
- let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
- }: toggle_contract_white_list(RawOrigin::Signed(caller.clone()), caller.clone(), true)
-}
\ No newline at end of file
+ toggle_contract_white_list{
+ let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
+ }: toggle_contract_white_list(RawOrigin::Signed(caller.clone()), caller.clone(), true)
+*/
+}
runtime/Cargo.tomldiffbeforeafterboth--- a/runtime/Cargo.toml
+++ b/runtime/Cargo.toml
@@ -26,6 +26,7 @@
# local dependencies
pallet-nft = { path = '../pallets/nft', default-features = false, version = '3.0.0' }
+pallet-inflation = { path = '../pallets/inflation', default-features = false, version = '3.0.0' }
# Substrate dependencies
frame-benchmarking = { default-features = false, optional = true, version = '3.0.0', git = "https://github.com/paritytech/substrate.git", branch = "frontier" }
@@ -75,6 +76,7 @@
'pallet-balances/runtime-benchmarks',
'pallet-timestamp/runtime-benchmarks',
'pallet-nft/runtime-benchmarks',
+ 'pallet-inflation/runtime-benchmarks',
'sp-runtime/runtime-benchmarks',
]
std = [
@@ -100,6 +102,7 @@
'pallet-evm/std',
'pallet-ethereum/std',
+ 'pallet-inflation/std',
'pallet-nft/std',
'fp-rpc/std',
'sp-api/std',
runtime/src/lib.rsdiffbeforeafterboth--- a/runtime/src/lib.rs
+++ b/runtime/src/lib.rs
@@ -576,7 +576,7 @@
pub const CollectionCreationPrice: Balance = 100 * UNIQUE;
}
-/// Used for the module nft in `./nft.rs`
+/// Used for the pallet nft in `./nft.rs`
impl pallet_nft::Config for Runtime {
type Event = Event;
type WeightInfo = nft_weights::WeightInfo;
@@ -594,6 +594,21 @@
type EthereumTransactionSender = pallet_ethereum::Module<Runtime>;
}
+/// Reimport pallet inflation
+extern crate pallet_inflation;
+pub use pallet_inflation::*;
+
+parameter_types! {
+ pub const InflationBlockInterval: BlockNumber = 100; // every time per how many blocks inflation is applied
+}
+
+/// Used for the pallet inflation
+impl pallet_inflation::Config for Runtime {
+ type Currency = Balances;
+ type TreasuryAccountId = TreasuryAccountId;
+ type InflationBlockInterval = InflationBlockInterval;
+}
+
construct_runtime!(
pub enum Runtime where
Block = Block,
@@ -611,6 +626,7 @@
Balances: pallet_balances::{Module, Call, Storage, Config<T>, Event<T>},
TransactionPayment: pallet_transaction_payment::{Module, Storage},
Sudo: pallet_sudo::{Module, Call, Config<T>, Storage, Event<T>},
+ Inflation: pallet_inflation::{Module, Call, Storage},
Nft: pallet_nft::{Module, Call, Config<T>, Storage, Event<T>},
Treasury: pallet_treasury::{Module, Call, Storage, Config, Event<T>},
Vesting: pallet_vesting::{Module, Call, Config<T>, Storage, Event<T>},
@@ -954,6 +970,7 @@
let params = (&config, &whitelist);
add_benchmark!(params, batches, pallet_nft, Nft);
+ add_benchmark!(params, batches, pallet_inflation, Inflation);
if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) }
Ok(batches)
tests/package.jsondiffbeforeafterboth--- a/tests/package.json
+++ b/tests/package.json
@@ -21,6 +21,7 @@
"test": "mocha --timeout 9999999 -r ts-node/register ./**/*.test.ts",
"load": "mocha --timeout 9999999 -r ts-node/register ./**/*.load.ts",
"loadTransfer": "ts-node src/transfer.nload.ts",
+ "testCollision": "mocha --timeout 9999999 -r ts-node/register ./src/collision-tests/*.test.ts",
"testAddCollectionAdmin": "mocha --timeout 9999999 -r ts-node/register ./**/addCollectionAdmin.test.ts",
"testSetSchemaVersion": "mocha --timeout 9999999 -r ts-node/register ./**/setSchemaVersion.test.ts",
"testSetVariableMetaData": "mocha --timeout 9999999 -r ts-node/register ./**/setVariableMetaData.test.ts",
@@ -49,7 +50,9 @@
"testSetContractSponsoringRateLimit": "mocha --timeout 9999999 -r ts-node/register ./**/setContractSponsoringRateLimit.test.ts",
"testSetOffchainSchema": "mocha --timeout 9999999 -r ts-node/register ./**/setOffchainSchema.test.ts",
"testOverflow": "mocha --timeout 9999999 -r ts-node/register ./**/overflow.test.ts",
- "testSetVariableMetadataSponsoringRateLimit": "mocha --timeout 9999999 -r ts-node/register ./**/setVariableMetadataSponsoringRateLimit.test.ts"
+ "testSetVariableMetadataSponsoringRateLimit": "mocha --timeout 9999999 -r ts-node/register ./**/setVariableMetadataSponsoringRateLimit.test.ts",
+ "testInflation": "mocha --timeout 9999999 -r ts-node/register ./**/inflation.test.ts",
+ "testPalletPresence": "mocha --timeout 9999999 -r ts-node/register ./**/pallet-presence.test.ts"
},
"author": "",
"license": "SEE LICENSE IN ../LICENSE",
tests/src/check-event/createMultipleItemsEvent.test.tsdiffbeforeafterboth--- a/tests/src/check-event/createMultipleItemsEvent.test.ts
+++ b/tests/src/check-event/createMultipleItemsEvent.test.ts
@@ -17,7 +17,7 @@
describe('Create Multiple Items Event event ', () => {
let Alice: IKeyringPair;
- const checkSection = 'ItemCreated (x3)';
+ const checkSection = 'ItemCreated';
const checkTreasury = 'Deposit';
const checkSystem = 'ExtrinsicSuccess';
before(async () => {
tests/src/collision-tests/admVsOwnerChanges.test.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/collision-tests/admVsOwnerChanges.test.ts
@@ -0,0 +1,55 @@
+import { IKeyringPair } from '@polkadot/types/types';
+import chai from 'chai';
+import chaiAsPromised from 'chai-as-promised';
+import { alicesPublicKey, bobsPublicKey } from '../accounts';
+import getBalance from '../substrate/get-balance';
+import privateKey from '../substrate/privateKey';
+import usingApi, { submitTransactionAsync } from '../substrate/substrate-api';
+import waitNewBlocks from '../substrate/wait-new-blocks';
+import {
+ createCollectionExpectSuccess,
+ createItemExpectSuccess,
+ setCollectionSponsorExpectSuccess,
+} from '../util/helpers';
+
+chai.use(chaiAsPromised);
+const expect = chai.expect;
+let Alice: IKeyringPair;
+let Bob: IKeyringPair;
+let Ferdie: IKeyringPair;
+
+before(async () => {
+ await usingApi(async () => {
+ Alice = privateKey('//Alice');
+ Bob = privateKey('//Bob');
+ Ferdie = privateKey('//Ferdie');
+ });
+});
+
+describe('Admin vs Owner changes token: ', () => {
+ // tslint:disable-next-line: max-line-length
+ it('The collection admin changes the owner of the token and in the same block the current owner transfers the token to another address ', async () => {
+ await usingApi(async (api) => {
+ const collectionId = await createCollectionExpectSuccess();
+ const changeAdminTxBob = api.tx.nft.addCollectionAdmin(collectionId, Bob.address);
+ await submitTransactionAsync(Alice, changeAdminTxBob);
+ const timeoutPromise = (timeout: number) => new Promise((resolve) => setTimeout(resolve, timeout));
+ const changeAdminTxFerdie = api.tx.nft.addCollectionAdmin(collectionId, Ferdie.address);
+ await submitTransactionAsync(Bob, changeAdminTxFerdie);
+ const itemId = await createItemExpectSuccess(Ferdie, collectionId, 'NFT');
+ //
+ const changeOwner = api.tx.nft.transferFrom(Ferdie.address, Bob.address, collectionId, itemId, 1);
+ const approve = api.tx.nft.approve(Bob.address, collectionId, itemId, 1);
+ const sendItem = api.tx.nft.transfer(Alice.address, collectionId, itemId, 1);
+ await Promise.all
+ ([
+ changeOwner.signAndSend(Alice),
+ approve.signAndSend(Bob),
+ sendItem.signAndSend(Ferdie),
+ ]);
+ const itemBefore: any = await api.query.nft.nftItemList(collectionId, itemId);
+ expect(itemBefore.Owner).not.to.be.eq(Bob.address);
+ await timeoutPromise(20000);
+ });
+ });
+});
tests/src/collision-tests/admVsOwnerData.test.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/collision-tests/admVsOwnerData.test.ts
@@ -0,0 +1,54 @@
+import { IKeyringPair } from '@polkadot/types/types';
+import chai from 'chai';
+import chaiAsPromised from 'chai-as-promised';
+import { alicesPublicKey, bobsPublicKey } from '../accounts';
+import getBalance from '../substrate/get-balance';
+import privateKey from '../substrate/privateKey';
+import usingApi, { submitTransactionAsync } from '../substrate/substrate-api';
+import waitNewBlocks from '../substrate/wait-new-blocks';
+import {
+ createCollectionExpectSuccess,
+ createItemExpectSuccess,
+ setCollectionSponsorExpectSuccess,
+} from '../util/helpers';
+
+chai.use(chaiAsPromised);
+const expect = chai.expect;
+let Alice: IKeyringPair;
+let Bob: IKeyringPair;
+let Ferdie: IKeyringPair;
+
+before(async () => {
+ await usingApi(async () => {
+ Alice = privateKey('//Alice');
+ Bob = privateKey('//Bob');
+ Ferdie = privateKey('//Ferdie');
+ });
+});
+
+describe('Admin vs Owner changes the data in the token: ', () => {
+ it('The collection admin changes the data in the token and in the same block the token owner also changes the data in it ', async () => {
+ await usingApi(async (api) => {
+ const AliceData = 1;
+ const BobData = 2;
+ const collectionId = await createCollectionExpectSuccess();
+ const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, Bob.address);
+ await submitTransactionAsync(Alice, changeAdminTx);
+ const timeoutPromise = (timeout: number) => new Promise((resolve) => setTimeout(resolve, timeout));
+ const itemId = await createItemExpectSuccess(Bob, collectionId, 'NFT');
+ //
+ // tslint:disable-next-line: max-line-length
+ const AliceTx = api.tx.nft.setVariableMetaData(collectionId, itemId, AliceData.toString());
+ // tslint:disable-next-line: max-line-length
+ const BobTx = api.tx.nft.setVariableMetaData(collectionId, itemId, BobData.toString());
+ await Promise.all
+ ([
+ AliceTx.signAndSend(Alice),
+ BobTx.signAndSend(Bob),
+ ]);
+ const item: any = await api.query.nft.nftItemList(collectionId, itemId);
+ expect(item.VariableData).not.to.be.eq(null); // Pseudo-random selection of one of two values
+ await timeoutPromise(20000);
+ });
+ });
+});
tests/src/collision-tests/admVsOwnerTake.test.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/collision-tests/admVsOwnerTake.test.ts
@@ -0,0 +1,54 @@
+import { IKeyringPair } from '@polkadot/types/types';
+import chai from 'chai';
+import chaiAsPromised from 'chai-as-promised';
+import { alicesPublicKey, bobsPublicKey } from '../accounts';
+import getBalance from '../substrate/get-balance';
+import privateKey from '../substrate/privateKey';
+import usingApi, { submitTransactionAsync } from '../substrate/substrate-api';
+import waitNewBlocks from '../substrate/wait-new-blocks';
+import {
+ createCollectionExpectSuccess,
+ createItemExpectSuccess,
+ setCollectionSponsorExpectSuccess,
+} from '../util/helpers';
+
+chai.use(chaiAsPromised);
+const expect = chai.expect;
+let Alice: IKeyringPair;
+let Bob: IKeyringPair;
+let Ferdie: IKeyringPair;
+
+before(async () => {
+ await usingApi(async () => {
+ Alice = privateKey('//Alice');
+ Bob = privateKey('//Bob');
+ Ferdie = privateKey('//Ferdie');
+ });
+});
+
+describe('Admin vs Owner take token: ', () => {
+ // tslint:disable-next-line: max-line-length
+ it('The collection admin burns the token and in the same block the token owner performs a transaction on it ', async () => {
+ await usingApi(async (api) => {
+ const collectionId = await createCollectionExpectSuccess();
+ const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, Bob.address);
+ await submitTransactionAsync(Alice, changeAdminTx);
+ const timeoutPromise = (timeout: number) => new Promise((resolve) => setTimeout(resolve, timeout));
+ const itemId = await createItemExpectSuccess(Bob, collectionId, 'NFT');
+ //
+ const sendItem = api.tx.nft.transfer(Ferdie.address, collectionId, itemId, 1);
+ const burnItem = api.tx.nft.burnItem(collectionId, itemId, 1);
+ await Promise.all
+ ([
+ sendItem.signAndSend(Bob),
+ burnItem.signAndSend(Alice),
+ ]);
+ await timeoutPromise(10000);
+ let itemBurn: boolean = false;
+ itemBurn = (await (api.query.nft.nftItemList(collectionId, itemId))).toJSON() as boolean;
+ // tslint:disable-next-line: no-unused-expression
+ expect(itemBurn).to.be.null;
+ await timeoutPromise(20000);
+ });
+ });
+});
tests/src/collision-tests/adminDestroyCollection.test.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/collision-tests/adminDestroyCollection.test.ts
@@ -0,0 +1,61 @@
+import { IKeyringPair } from '@polkadot/types/types';
+import BN from 'bn.js';
+import chai from 'chai';
+import chaiAsPromised from 'chai-as-promised';
+import privateKey from '../substrate/privateKey';
+import usingApi, { submitTransactionAsync, submitTransactionExpectFailAsync } from '../substrate/substrate-api';
+import {
+ createCollectionExpectSuccess,
+} from '../util/helpers';
+
+chai.use(chaiAsPromised);
+const expect = chai.expect;
+interface ITokenDataType {
+ Owner: number[];
+ ConstData: number[];
+ VariableData: number[];
+}
+let Alice: IKeyringPair;
+let Bob: IKeyringPair;
+let Ferdie: IKeyringPair;
+let Charlie: IKeyringPair;
+let Eve: IKeyringPair;
+let Dave: IKeyringPair;
+
+before(async () => {
+ await usingApi(async () => {
+ Alice = privateKey('//Alice');
+ Bob = privateKey('//Bob');
+ Ferdie = privateKey('//Ferdie');
+ Charlie = privateKey('//Charlie');
+ Eve = privateKey('//Eve');
+ Dave = privateKey('//Dave');
+ });
+});
+
+describe('Deleting a collection while add address to whitelist: ', () => {
+ // tslint:disable-next-line: max-line-length
+ it('Adding an address to the collection whitelist in a block by the admin, and deleting the collection by the owner ', async () => {
+ await usingApi(async (api) => {
+ const collectionId = await createCollectionExpectSuccess();
+ const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, Bob.address);
+ await submitTransactionAsync(Alice, changeAdminTx);
+ const timeoutPromise = (timeout: number) => new Promise((resolve) => setTimeout(resolve, timeout));
+ await timeoutPromise(10000);
+ //
+ const addWhitelistAdm = api.tx.nft.addToWhiteList(collectionId, Ferdie.address);
+ const destroyCollection = api.tx.nft.destroyCollection(collectionId);
+ await Promise.all
+ ([
+ addWhitelistAdm.signAndSend(Bob),
+ destroyCollection.signAndSend(Alice),
+ ]);
+ await timeoutPromise(10000);
+ let whiteList: boolean = false;
+ whiteList = (await api.query.nft.whiteList(collectionId, Ferdie.address)).toJSON() as boolean;
+ // tslint:disable-next-line: no-unused-expression
+ expect(whiteList).to.be.false;
+ await timeoutPromise(20000);
+ });
+ });
+});
tests/src/collision-tests/adminLimitsOff.test.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/collision-tests/adminLimitsOff.test.ts
@@ -0,0 +1,74 @@
+import { IKeyringPair } from '@polkadot/types/types';
+import BN from 'bn.js';
+import chai from 'chai';
+import chaiAsPromised from 'chai-as-promised';
+import privateKey from '../substrate/privateKey';
+import usingApi, { submitTransactionAsync, submitTransactionExpectFailAsync } from '../substrate/substrate-api';
+import {
+ createCollectionExpectSuccess,
+} from '../util/helpers';
+
+chai.use(chaiAsPromised);
+const expect = chai.expect;
+interface ITokenDataType {
+ Owner: number[];
+ ConstData: number[];
+ VariableData: number[];
+}
+let Alice: IKeyringPair;
+let Bob: IKeyringPair;
+let Ferdie: IKeyringPair;
+let Charlie: IKeyringPair;
+let Eve: IKeyringPair;
+let Dave: IKeyringPair;
+
+before(async () => {
+ await usingApi(async () => {
+ Alice = privateKey('//Alice');
+ Bob = privateKey('//Bob');
+ Ferdie = privateKey('//Ferdie');
+ Charlie = privateKey('//Charlie');
+ Eve = privateKey('//Eve');
+ Dave = privateKey('//Dave');
+ });
+});
+
+describe('Admin limit exceeded collection: ', () => {
+ // tslint:disable-next-line: max-line-length
+ it('In one block, the owner and admin add new admins to the collection more than the limit ', async () => {
+ await usingApi(async (api) => {
+ const collectionId = await createCollectionExpectSuccess();
+
+ const chainLimit = await api.query.nft.chainLimit() as unknown as { CollectionAdminsLimit: BN };
+ const chainAdminLimit = chainLimit.CollectionAdminsLimit.toNumber();
+ expect(chainAdminLimit).to.be.equal(5);
+
+ const changeAdminTx1 = api.tx.nft.addCollectionAdmin(collectionId, Eve.address);
+ await submitTransactionAsync(Alice, changeAdminTx1);
+ const changeAdminTx2 = api.tx.nft.addCollectionAdmin(collectionId, Dave.address);
+ await submitTransactionAsync(Alice, changeAdminTx2);
+ const changeAdminTx3 = api.tx.nft.addCollectionAdmin(collectionId, Bob.address);
+ await submitTransactionAsync(Alice, changeAdminTx3);
+
+ const timeoutPromise = (timeout: number) => new Promise((resolve) => setTimeout(resolve, timeout));
+ //
+ const addAdmOne = api.tx.nft.addCollectionAdmin(collectionId, Ferdie.address);
+ const addAdmTwo = api.tx.nft.addCollectionAdmin(collectionId, Charlie.address);
+ await Promise.all
+ ([
+ addAdmOne.signAndSend(Bob),
+ addAdmTwo.signAndSend(Alice),
+ ]);
+ await timeoutPromise(10000);
+ const changeAdminTx4 = api.tx.nft.addCollectionAdmin(collectionId, Alice.address);
+ // tslint:disable-next-line: no-unused-expression
+ expect(submitTransactionExpectFailAsync(Alice, changeAdminTx4)).to.be.rejected;
+
+ const adminListAfterAddAdmin: any = (await api.query.nft.adminList(collectionId));
+ expect(adminListAfterAddAdmin).to.be.contains(Eve.address);
+ expect(adminListAfterAddAdmin).to.be.contains(Ferdie.address);
+ expect(adminListAfterAddAdmin).not.to.be.contains(Alice.address);
+ await timeoutPromise(20000);
+ });
+ });
+});
tests/src/collision-tests/adminRightsOff.test.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/collision-tests/adminRightsOff.test.ts
@@ -0,0 +1,62 @@
+import { IKeyringPair } from '@polkadot/types/types';
+import BN from 'bn.js';
+import chai from 'chai';
+import chaiAsPromised from 'chai-as-promised';
+import privateKey from '../substrate/privateKey';
+import usingApi, { submitTransactionAsync, submitTransactionExpectFailAsync } from '../substrate/substrate-api';
+import {
+ createCollectionExpectSuccess,
+} from '../util/helpers';
+
+chai.use(chaiAsPromised);
+const expect = chai.expect;
+interface ITokenDataType {
+ Owner: number[];
+ ConstData: number[];
+ VariableData: number[];
+}
+let Alice: IKeyringPair;
+let Bob: IKeyringPair;
+let Ferdie: IKeyringPair;
+let Charlie: IKeyringPair;
+let Eve: IKeyringPair;
+let Dave: IKeyringPair;
+
+before(async () => {
+ await usingApi(async () => {
+ Alice = privateKey('//Alice');
+ Bob = privateKey('//Bob');
+ Ferdie = privateKey('//Ferdie');
+ Charlie = privateKey('//Charlie');
+ Eve = privateKey('//Eve');
+ Dave = privateKey('//Dave');
+ });
+});
+
+describe('Deprivation of admin rights: ', () => {
+ // tslint:disable-next-line: max-line-length
+ it('In the block, the collection admin adds a token or changes data, and the collection owner deprives the admin of rights ', async () => {
+ await usingApi(async (api) => {
+ const collectionId = await createCollectionExpectSuccess();
+ const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, Bob.address);
+ await submitTransactionAsync(Alice, changeAdminTx);
+ const timeoutPromise = (timeout: number) => new Promise((resolve) => setTimeout(resolve, timeout));
+ await timeoutPromise(10000);
+ //
+ const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }];
+ const addItemAdm = api.tx.nft.createMultipleItems(collectionId, Bob.address, args);
+ const removeAdm = api.tx.nft.removeCollectionAdmin(collectionId, Bob.address);
+ await Promise.all
+ ([
+ addItemAdm.signAndSend(Bob),
+ removeAdm.signAndSend(Alice),
+ ]);
+ await timeoutPromise(10000);
+ const itemsListIndex = await api.query.nft.itemListIndex(collectionId) as unknown as BN;
+ expect(itemsListIndex.toNumber()).to.be.equal(0);
+ const adminList: any = (await api.query.nft.adminList(collectionId));
+ expect(adminList).not.to.be.contains(Bob.address);
+ await timeoutPromise(20000);
+ });
+ });
+});
tests/src/collision-tests/setSponsorNewOwner.test.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/collision-tests/setSponsorNewOwner.test.ts
@@ -0,0 +1,53 @@
+import { IKeyringPair } from '@polkadot/types/types';
+import BN from 'bn.js';
+import chai from 'chai';
+import chaiAsPromised from 'chai-as-promised';
+import privateKey from '../substrate/privateKey';
+import usingApi, { submitTransactionAsync, submitTransactionExpectFailAsync } from '../substrate/substrate-api';
+import {
+ createCollectionExpectSuccess, createItemExpectSuccess, setCollectionSponsorExpectSuccess,
+} from '../util/helpers';
+
+chai.use(chaiAsPromised);
+const expect = chai.expect;
+interface ITokenDataType {
+ Owner: number[];
+ ConstData: number[];
+ VariableData: number[];
+}
+let Alice: IKeyringPair;
+let Bob: IKeyringPair;
+let Ferdie: IKeyringPair;
+
+before(async () => {
+ await usingApi(async () => {
+ Alice = privateKey('//Alice');
+ Bob = privateKey('//Bob');
+ Ferdie = privateKey('//Ferdie');
+ });
+});
+
+describe('Sponsored with new owner ', () => {
+ // tslint:disable-next-line: max-line-length
+ it('Confirmation of sponsorship of a collection in a block with a change in the owner of the collection: ', async () => {
+ await usingApi(async (api) => {
+ const collectionId = await createCollectionExpectSuccess();
+ await setCollectionSponsorExpectSuccess(collectionId, Bob.address);
+ const timeoutPromise = (timeout: number) => new Promise((resolve) => setTimeout(resolve, timeout));
+ await timeoutPromise(10000);
+ //
+ const confirmSponsorship = api.tx.nft.confirmSponsorship(collectionId);
+ const changeCollectionOwner = api.tx.nft.changeCollectionOwner(collectionId, Ferdie.address);
+ await Promise.all
+ ([
+ confirmSponsorship.signAndSend(Bob),
+ changeCollectionOwner.signAndSend(Alice),
+ ]);
+ await timeoutPromise(10000);
+ const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();
+ expect(collection.Sponsorship.Confirmed).to.be.eq(Bob.address);
+ expect(collection.Owner).to.be.eq(Ferdie.address);
+ await timeoutPromise(20000);
+ });
+ });
+});
tests/src/collision-tests/sponsorPayments.test.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/collision-tests/sponsorPayments.test.ts
@@ -0,0 +1,58 @@
+import { IKeyringPair } from '@polkadot/types/types';
+import chai from 'chai';
+import chaiAsPromised from 'chai-as-promised';
+import { alicesPublicKey, bobsPublicKey } from '../accounts';
+import getBalance from '../substrate/get-balance';
+import privateKey from '../substrate/privateKey';
+import usingApi, { submitTransactionAsync } from '../substrate/substrate-api';
+import waitNewBlocks from '../substrate/wait-new-blocks';
+import {
+ confirmSponsorshipExpectSuccess,
+ createCollectionExpectSuccess,
+ createItemExpectSuccess,
+ setCollectionSponsorExpectSuccess,
+} from '../util/helpers';
+
+chai.use(chaiAsPromised);
+const expect = chai.expect;
+let Alice: IKeyringPair;
+let Bob: IKeyringPair;
+let Ferdie: IKeyringPair;
+
+before(async () => {
+ await usingApi(async () => {
+ Alice = privateKey('//Alice');
+ Bob = privateKey('//Bob');
+ Ferdie = privateKey('//Ferdie');
+ });
+});
+
+describe('Payment of commission if one block: ', () => {
+ // tslint:disable-next-line: max-line-length
+ it('Payment of commission if one block contains transactions for payment from the sponsor\'s balance and his (sponsor\'s) exclusion from the collection ', async () => {
+ await usingApi(async (api) => {
+ const collectionId = await createCollectionExpectSuccess();
+ const changeAdminTxBob = api.tx.nft.addCollectionAdmin(collectionId, Bob.address);
+ await submitTransactionAsync(Alice, changeAdminTxBob);
+ const timeoutPromise = (timeout: number) => new Promise((resolve) => setTimeout(resolve, timeout));
+ const itemId = await createItemExpectSuccess(Bob, collectionId, 'NFT');
+ await setCollectionSponsorExpectSuccess(collectionId, Bob.address);
+ await confirmSponsorshipExpectSuccess(collectionId, '//Bob');
+ //
+ const [alicesBalanceBefore, bobsBalanceBefore] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);
+ const sendItem = api.tx.nft.transfer(Alice.address, collectionId, itemId, 1);
+ const revokeSponsor = api.tx.nft.removeCollectionSponsor(collectionId);
+ await Promise.all
+ ([
+ sendItem.signAndSend(Bob),
+ revokeSponsor.signAndSend(Alice),
+ ]);
+ const [alicesBalanceAfter, bobsBalanceAfter] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);
+ // tslint:disable-next-line:no-unused-expression
+ expect(alicesBalanceAfter === alicesBalanceBefore).to.be.true;
+ // tslint:disable-next-line:no-unused-expression
+ expect(bobsBalanceAfter === bobsBalanceBefore).to.be.true;
+ await timeoutPromise(20000);
+ });
+ });
+});
tests/src/collision-tests/tokenLimitsOff.test.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/collision-tests/tokenLimitsOff.test.ts
@@ -0,0 +1,84 @@
+import { IKeyringPair } from '@polkadot/types/types';
+import BN from 'bn.js';
+import chai from 'chai';
+import chaiAsPromised from 'chai-as-promised';
+import privateKey from '../substrate/privateKey';
+import usingApi, { submitTransactionAsync } from '../substrate/substrate-api';
+import {
+ addToWhiteListExpectSuccess,
+ createCollectionExpectSuccess,
+ getCreateItemResult,
+ setMintPermissionExpectSuccess,
+} from '../util/helpers';
+
+chai.use(chaiAsPromised);
+const expect = chai.expect;
+interface ITokenDataType {
+ Owner: number[];
+ ConstData: number[];
+ VariableData: number[];
+}
+let Alice: IKeyringPair;
+let Bob: IKeyringPair;
+let Ferdie: IKeyringPair;
+
+const AccountTokenOwnershipLimit = 4;
+const SponsoredMintSize = 4294967295;
+const TokenLimit = 4;
+const SponsorTimeout = 14400;
+const OwnerCanTransfer = false;
+const OwnerCanDestroy = false;
+
+before(async () => {
+ await usingApi(async () => {
+ Alice = privateKey('//Alice');
+ Bob = privateKey('//Bob');
+ Ferdie = privateKey('//Ferdie');
+ });
+});
+
+describe('Token limit exceeded collection: ', () => {
+ // tslint:disable-next-line: max-line-length
+ it('The number of tokens created in the collection from different addresses exceeds the allowed collection limit ', async () => {
+ await usingApi(async (api) => {
+ const collectionId = await createCollectionExpectSuccess();
+ await setMintPermissionExpectSuccess(Alice, collectionId, true);
+ await addToWhiteListExpectSuccess(Alice, collectionId, Ferdie.address);
+ await addToWhiteListExpectSuccess(Alice, collectionId, Bob.address);
+ const setCollectionLim = api.tx.nft.setCollectionLimits(
+ collectionId,
+ {
+ AccountTokenOwnershipLimit,
+ SponsoredMintSize,
+ TokenLimit,
+ // tslint:disable-next-line: object-literal-sort-keys
+ SponsorTimeout,
+ OwnerCanTransfer,
+ OwnerCanDestroy,
+ },
+ );
+ const subTx = await submitTransactionAsync(Alice, setCollectionLim);
+ const subTxTesult = getCreateItemResult(subTx);
+ // tslint:disable-next-line:no-unused-expression
+ expect(subTxTesult.success).to.be.true;
+ const timeoutPromise = (timeout: number) => new Promise((resolve) => setTimeout(resolve, timeout));
+ await timeoutPromise(10000);
+ //
+ const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }];
+ const mintItemOne = api.tx.nft
+ .createMultipleItems(collectionId, Ferdie.address, args);
+ const mintItemTwo = api.tx.nft
+ .createMultipleItems(collectionId, Bob.address, args);
+ await Promise.all
+ ([
+ mintItemOne.signAndSend(Ferdie),
+ mintItemTwo.signAndSend(Bob),
+ ]);
+ await timeoutPromise(10000);
+ const itemsListIndexAfter = await api.query.nft.itemListIndex(collectionId) as unknown as BN;
+ expect(itemsListIndexAfter.toNumber()).to.be.equal(3);
+ // TokenLimit = 4. The first transaction is successful. The second should fail.
+ await timeoutPromise(10000);
+ });
+ });
+});
tests/src/collision-tests/turnsOffMinting.test.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/collision-tests/turnsOffMinting.test.ts
@@ -0,0 +1,50 @@
+import { IKeyringPair } from '@polkadot/types/types';
+import chai from 'chai';
+import chaiAsPromised from 'chai-as-promised';
+import privateKey from '../substrate/privateKey';
+import usingApi, { submitTransactionAsync } from '../substrate/substrate-api';
+import waitNewBlocks from '../substrate/wait-new-blocks';
+import {
+ addToWhiteListExpectSuccess,
+ createCollectionExpectSuccess,
+ setMintPermissionExpectSuccess,
+} from '../util/helpers';
+
+chai.use(chaiAsPromised);
+const expect = chai.expect;
+let Alice: IKeyringPair;
+let Bob: IKeyringPair;
+let Ferdie: IKeyringPair;
+
+before(async () => {
+ await usingApi(async () => {
+ Alice = privateKey('//Alice');
+ Bob = privateKey('//Bob');
+ Ferdie = privateKey('//Ferdie');
+ });
+});
+
+describe('Turns off minting mode: ', () => {
+ // tslint:disable-next-line: max-line-length
+ it('The collection owner turns off minting mode and there are minting transactions in the same block ', async () => {
+ await usingApi(async (api) => {
+ const collectionId = await createCollectionExpectSuccess();
+ const timeoutPromise = (timeout: number) => new Promise((resolve) => setTimeout(resolve, timeout));
+ await setMintPermissionExpectSuccess(Alice, collectionId, true);
+ await addToWhiteListExpectSuccess(Alice, collectionId, Ferdie.address);
+ //
+ const mintItem = api.tx.nft.createItem(collectionId, Ferdie.address, 'NFT');
+ const offMinting = api.tx.nft.setMintPermission(collectionId, false);
+ await Promise.all
+ ([
+ mintItem.signAndSend(Ferdie),
+ offMinting.signAndSend(Alice),
+ ]);
+ let itemList: boolean = false;
+ itemList = (await (api.query.nft.nftItemList(collectionId, mintItem))).toJSON() as boolean;
+ // tslint:disable-next-line: no-unused-expression
+ expect(itemList).to.be.null;
+ await timeoutPromise(20000);
+ });
+ });
+});
tests/src/creditFeesToTreasury.test.tsdiffbeforeafterboth--- a/tests/src/creditFeesToTreasury.test.ts
+++ b/tests/src/creditFeesToTreasury.test.ts
@@ -18,6 +18,7 @@
} from './util/helpers';
import { default as waitNewBlocks } from './substrate/wait-new-blocks';
+import { ApiPromise } from '@polkadot/api';
chai.use(chaiAsPromised);
const expect = chai.expect;
@@ -30,6 +31,25 @@
let alice: IKeyringPair;
let bob: IKeyringPair;
+// Skip the inflation block pauses if the block is close to inflation block
+// until the inflation happens
+function skipInflationBlock(api: ApiPromise): Promise<void> {
+ const promise = new Promise<void>(async (resolve, reject) => {
+ const blockInterval = parseInt((await api.consts.inflation.inflationBlockInterval).toString());
+ const unsubscribe = await api.rpc.chain.subscribeNewHeads(head => {
+ const currentBlock = parseInt(head.number.toString());
+ if (currentBlock % blockInterval < blockInterval - 10) {
+ unsubscribe();
+ resolve();
+ } else {
+ console.log(`Skipping inflation block, current block: ${currentBlock}`);
+ }
+ });
+ });
+
+ return promise;
+}
+
describe('integration test: Fees must be credited to Treasury:', () => {
before(async () => {
await usingApi(async (api) => {
@@ -40,6 +60,7 @@
it('Total issuance does not change', async () => {
await usingApi(async (api) => {
+ await skipInflationBlock(api);
await waitNewBlocks(api, 1);
const totalBefore = new BigNumber((await api.query.balances.totalIssuance()).toString());
@@ -59,6 +80,7 @@
it('Sender balance decreased by fee+sent amount, Treasury balance increased by fee', async () => {
await usingApi(async (api) => {
+ await skipInflationBlock(api);
await waitNewBlocks(api, 1);
const alicePrivateKey = privateKey('//Alice');
@@ -81,6 +103,7 @@
it('Treasury balance increased by failed tx fee', async () => {
await usingApi(async (api) => {
+ await skipInflationBlock(api);
await waitNewBlocks(api, 1);
const bobPrivateKey = privateKey('//Bob');
@@ -101,6 +124,7 @@
it('NFT Transactions also send fees to Treasury', async () => {
await usingApi(async (api) => {
+ await skipInflationBlock(api);
await waitNewBlocks(api, 1);
const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());
@@ -119,6 +143,7 @@
it('Fees are sane', async () => {
await usingApi(async (api) => {
+ await skipInflationBlock(api);
await waitNewBlocks(api, 1);
const aliceBalanceBefore = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());
@@ -135,6 +160,7 @@
it('NFT Transfer fee is close to 0.1 Unique', async () => {
await usingApi(async (api) => {
+ await skipInflationBlock(api);
await waitNewBlocks(api, 1);
const collectionId = await createCollectionExpectSuccess();
@@ -147,7 +173,7 @@
// console.log(fee.toString());
const expectedTransferFee = 0.1;
- const tolerance = 0.00001;
+ const tolerance = 0.001;
expect(fee.dividedBy(1e15).minus(expectedTransferFee).abs().toNumber()).to.be.lessThan(tolerance);
});
});
tests/src/inflation.test.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/inflation.test.ts
@@ -0,0 +1,43 @@
+//
+// 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";
+import privateKey from "./substrate/privateKey";
+import { BigNumber } from 'bignumber.js';
+import { IKeyringPair } from '@polkadot/types/types';
+
+chai.use(chaiAsPromised);
+const expect = chai.expect;
+
+let alice: IKeyringPair;
+let bob: IKeyringPair;
+
+describe('integration test: Inflation', () => {
+ before(async () => {
+ await usingApi(async (api) => {
+ alice = privateKey('//Alice');
+ bob = privateKey('//Bob');
+ });
+ });
+
+ it('First year inflation is 10%', async () => {
+ await usingApi(async (api) => {
+
+ const blockInterval = parseInt((await api.consts.inflation.inflationBlockInterval).toString());
+ const totalIssuanceStart = new BigNumber((await api.query.inflation.startingYearTotalIssuance()).toString());
+ const blockInflation = new BigNumber((await api.query.inflation.blockInflation()).toString());
+
+ const YEAR = 5259600; // Blocks in one year
+ const totalExpectedInflation = totalIssuanceStart.multipliedBy(0.1);
+ const totalActualInflation = blockInflation.multipliedBy(YEAR / blockInterval);
+
+ const tolerance = 0.00001; // Relative difference per year between theoretical and actual inflation
+ expect(totalExpectedInflation.dividedBy(totalActualInflation).minus(1).abs().toNumber()).to.be.lessThan(tolerance);
+ });
+ });
+
+});
tests/src/pallet-presence.test.tsdiffbeforeafterboth--- a/tests/src/pallet-presence.test.ts
+++ b/tests/src/pallet-presence.test.ts
@@ -13,7 +13,7 @@
// Pallets that must always be present
const requiredPallets = [
- 'nft', 'balances', 'contracts', 'randomnesscollectiveflip', 'system', 'timestamp', 'transactionpayment', 'treasury', 'vesting'
+ 'nft', 'inflation', 'balances', 'contracts', 'randomnesscollectiveflip', 'system', 'timestamp', 'transactionpayment', 'treasury', 'vesting'
];
// Pallets that depend on consensus and governance configuration