From c98260f5228b4aa7cc0e13f2887485b3d1a505f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89lo=C3=AFs?= <c@elo.tf> Date: Tue, 11 Jan 2022 02:28:13 +0100 Subject: [PATCH] upgrade substrate to monthly-2022-01 --- .github/workflows/build-push-template.yml | 19 - .gitlab-ci.yml | 7 +- Cargo.lock | 3268 +++++++------- Cargo.toml | 71 +- integration-tests/Cargo.toml | 20 + integration-tests/src/balance_transfer.rs | 52 + integration-tests/src/common.rs | 93 + integration-tests/src/lib.rs | 20 + node/Cargo.toml | 190 +- node/src/chain_spec/gdev.rs | 11 +- node/src/chain_spec/gtest.rs | 6 +- node/src/cli.rs | 5 +- node/src/command.rs | 20 +- node/src/rpc.rs | 6 +- node/src/service.rs | 267 +- node/src/service/client.rs | 179 +- pallets/certification/Cargo.toml | 35 +- pallets/certification/src/lib.rs | 510 ++- pallets/certification/src/mock.rs | 7 +- pallets/certification/src/traits.rs | 4 + pallets/certification/src/types.rs | 44 + pallets/identity/Cargo.toml | 35 +- pallets/identity/src/lib.rs | 108 +- pallets/identity/src/mock.rs | 44 +- pallets/identity/src/tests.rs | 2 +- pallets/identity/src/traits.rs | 33 +- pallets/identity/src/types.rs | 84 + pallets/ud-accounts-storage/Cargo.toml | 39 +- pallets/ud-accounts-storage/src/lib.rs | 7 +- pallets/universal-dividend/Cargo.toml | 52 +- pallets/universal-dividend/src/lib.rs | 88 +- pallets/universal-dividend/src/mock.rs | 8 +- pallets/universal-dividend/src/tests.rs | 5 +- resources/metadata.scale | Bin 0 -> 56297 bytes runtime/common/Cargo.toml | 29 +- runtime/common/src/apis.rs | 6 +- runtime/common/src/authorizations.rs | 92 +- runtime/common/src/entities.rs | 12 +- runtime/common/src/handlers.rs | 36 +- runtime/common/src/pallets_config.rs | 136 +- runtime/common/src/providers.rs | 27 +- runtime/g1/Cargo.toml | 128 +- runtime/g1/src/lib.rs | 53 +- runtime/g1/src/parameters.rs | 14 + runtime/gdev/Cargo.toml | 123 +- runtime/gdev/src/lib.rs | 54 +- runtime/gdev/src/parameters.rs | 20 +- runtime/gtest/Cargo.toml | 129 +- runtime/gtest/src/lib.rs | 51 +- runtime/gtest/src/parameters.rs | 13 + rust-toolchain | 4 +- tests/README.md | 88 - tests/constants.ts | 6 - tests/dev-node.ts | 131 - tests/package-lock.json | 4870 --------------------- tests/package.json | 57 - tests/tsconfig.json | 7 - types-bundle/types_definition.json | 53 - 58 files changed, 3401 insertions(+), 8077 deletions(-) delete mode 100644 .github/workflows/build-push-template.yml create mode 100644 integration-tests/Cargo.toml create mode 100644 integration-tests/src/balance_transfer.rs create mode 100644 integration-tests/src/common.rs create mode 100644 integration-tests/src/lib.rs create mode 100644 pallets/certification/src/types.rs create mode 100644 pallets/identity/src/types.rs create mode 100644 resources/metadata.scale delete mode 100644 tests/README.md delete mode 100644 tests/constants.ts delete mode 100644 tests/dev-node.ts delete mode 100644 tests/package-lock.json delete mode 100644 tests/package.json delete mode 100644 tests/tsconfig.json delete mode 100644 types-bundle/types_definition.json diff --git a/.github/workflows/build-push-template.yml b/.github/workflows/build-push-template.yml deleted file mode 100644 index be8bf9218..000000000 --- a/.github/workflows/build-push-template.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Build and Push template - -on: - push: - branches: - - master - -jobs: - build-push-template: - if: ${{ github.repository == 'substrate-developer-hub/substrate-node-template' }} - runs-on: ubuntu-18.04 - steps: - - name: Trigger playground inclusion - uses: peter-evans/repository-dispatch@v1 - with: - token: ${{ secrets.REPO_ACCESS_TOKEN }} - repository: paritytech/substrate-playground - event-type: template-updated - client-payload: '{"id": "node-template"}' diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index be03c6d6f..41c38b8bb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -16,15 +16,15 @@ workflow: .env: image: paritytech/ci-linux:production tags: - - elois-tauon + - elois-boson fmt_and_clippy: extends: .env rules: - if: $CI_COMMIT_TAG when: never - - if: $CI_MERGE_REQUEST_ID - - when: on_success + - if: $CI_PIPELINE_SOURCE == "merge_request_event" + - when: manual stage: quality script: - cargo fmt -- --version @@ -43,4 +43,5 @@ tests: - when: manual stage: tests script: + - cargo build - cargo test diff --git a/Cargo.lock b/Cargo.lock index eecbf7959..898ea3f7b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,20 +14,20 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.15.2" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7a2e47a1fbe209ee101dd6d61285226744c6c8d3c21c8dc878ba6cb9f467f3a" +checksum = "3e61f2b7f93d2c7d2b08263acaa4a363b3e276806c68af6134c44f523bf1aacd" dependencies = [ - "gimli 0.24.0", + "gimli 0.25.0", ] [[package]] name = "addr2line" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e61f2b7f93d2c7d2b08263acaa4a363b3e276806c68af6134c44f523bf1aacd" +checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" dependencies = [ - "gimli 0.25.0", + "gimli 0.26.1", ] [[package]] @@ -38,56 +38,37 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aead" -version = "0.3.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fc95d1bdb8e6666b2b217308eeeb09f2d6728d104be3e31916cc74d15420331" +checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" dependencies = [ "generic-array 0.14.4", ] [[package]] name = "aes" -version = "0.5.0" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd2bc6d3f370b5666245ff421e231cba4353df936e26986d2918e61a8fd6aef6" +checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" dependencies = [ - "aes-soft", - "aesni", - "block-cipher", + "cfg-if 1.0.0", + "cipher", + "cpufeatures 0.2.1", + "opaque-debug 0.3.0", ] [[package]] name = "aes-gcm" -version = "0.7.0" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0301c9e9c443494d970a07885e8cf3e587bae8356a1d5abd0999068413f7205f" +checksum = "df5f85a83a7d8b0442b6aa7b504b8212c1733da07b98aae43d4bc21b2cb3cdf6" dependencies = [ "aead", "aes", - "block-cipher", + "cipher", + "ctr", "ghash", - "subtle 2.4.1", -] - -[[package]] -name = "aes-soft" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63dd91889c49327ad7ef3b500fd1109dbd3c509a03db0d4a9ce413b79f575cb6" -dependencies = [ - "block-cipher", - "byteorder", - "opaque-debug 0.3.0", -] - -[[package]] -name = "aesni" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6fe808308bb07d393e2ea47780043ec47683fcf19cf5efc8ca51c50cc8c68a" -dependencies = [ - "block-cipher", - "opaque-debug 0.3.0", + "subtle", ] [[package]] @@ -279,16 +260,16 @@ dependencies = [ [[package]] name = "async-std" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9f06685bad74e0570f5213741bea82158279a4103d988e57bfada11ad230341" +checksum = "f8056f1455169ab86dd47b47391e4ab0cbd25410a70e9fe675544f49bafaf952" dependencies = [ "async-channel", "async-global-executor", "async-io", "async-lock", "async-process", - "crossbeam-utils 0.8.5", + "crossbeam-utils", "futures-channel", "futures-core", "futures-io", @@ -342,7 +323,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb4401f0a3622dad2e0763fa79e0eb328bc70fb7dccfdd645341f00d671247d6" dependencies = [ - "bytes 1.0.1", + "bytes 1.1.0", "futures-sink", "futures-util", "memchr", @@ -355,7 +336,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0de5164e5edbf51c45fb8c2d9664ae1c095cce1b265ecf7569093c0d66ef690" dependencies = [ - "bytes 1.0.1", + "bytes 1.1.0", "futures-sink", "futures-util", "memchr", @@ -396,16 +377,16 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "backtrace" -version = "0.3.61" +version = "0.3.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7a905d892734eea339e896738c14b9afce22b5318f64b951e70bf3844419b01" +checksum = "321629d8ba6513061f26707241fa9bc89524ff1cd7a915a97ef0c62c666ce1b6" dependencies = [ - "addr2line 0.16.0", + "addr2line 0.17.0", "cc", "cfg-if 1.0.0", "libc", "miniz_oxide", - "object 0.26.1", + "object", "rustc-demangle", ] @@ -417,21 +398,30 @@ checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" [[package]] name = "base58" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" +checksum = "6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581" [[package]] name = "base64" -version = "0.12.3" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] -name = "base64" -version = "0.13.0" +name = "beef" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +checksum = "bed554bd50246729a1ec158d08aa3235d1b69d94ad120ebe187e28894787e736" +dependencies = [ + "serde", +] + +[[package]] +name = "bimap" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50ae17cabbc8a38a1e3e4c1a6a664e9a09672dc14d0896fa8d865d3a5a446b07" [[package]] name = "bincode" @@ -571,15 +561,6 @@ dependencies = [ "generic-array 0.14.4", ] -[[package]] -name = "block-cipher" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f337a3e6da609650eb74e02bc9fac7b735049f7623ab12f2e4c719316fcc7e80" -dependencies = [ - "generic-array 0.14.4", -] - [[package]] name = "block-padding" version = "0.1.5" @@ -664,21 +645,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" dependencies = [ "byteorder", - "either", "iovec", ] [[package]] name = "bytes" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" - -[[package]] -name = "bytes" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" +checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" [[package]] name = "cache-padded" @@ -706,14 +680,13 @@ dependencies = [ [[package]] name = "cargo_metadata" -version = "0.13.1" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "081e3f0755c1f380c2d010481b6fa2e02973586d5f2b24eebb7a2a1d98b143d8" +checksum = "ba2ae6de944143141f6155a473a6b02f66c7c3f9f47316f802f80204ebfe6e12" dependencies = [ "camino", "cargo-platform", - "semver 0.11.0", - "semver-parser 0.10.2", + "semver 1.0.4", "serde", "serde_json", ] @@ -750,27 +723,35 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chacha20" -version = "0.5.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "244fbce0d47e97e8ef2f63b81d5e05882cb518c68531eb33194990d7b7e85845" +checksum = "fee7ad89dc1128635074c268ee661f90c3f7e83d9fd12910608c36b47d6c3412" dependencies = [ - "stream-cipher", + "cfg-if 1.0.0", + "cipher", + "cpufeatures 0.1.5", "zeroize", ] [[package]] name = "chacha20poly1305" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bf18d374d66df0c05cdddd528a7db98f78c28e2519b120855c4f84c5027b1f5" +checksum = "1580317203210c517b6d44794abfbe600698276db18127e37ad3e69bf5e848e5" dependencies = [ "aead", "chacha20", + "cipher", "poly1305", - "stream-cipher", "zeroize", ] +[[package]] +name = "chameleon" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12bd83544cd11113170ce1eee45383928f3f720bc8b305af18c2a3da3547e1ae" + [[package]] name = "chrono" version = "0.4.19" @@ -791,15 +772,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff0e3bc0b6446b3f9663c1a6aba6ef06c5aeaa1bc92bd18077be337198ab9768" dependencies = [ "multibase", - "multihash", + "multihash 0.13.2", "unsigned-varint 0.5.1", ] [[package]] name = "cipher" -version = "0.2.5" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" +checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" dependencies = [ "generic-array 0.14.4", ] @@ -824,21 +805,12 @@ dependencies = [ "ansi_term 0.11.0", "atty", "bitflags", - "strsim", + "strsim 0.8.0", "textwrap", "unicode-width", "vec_map", ] -[[package]] -name = "cloudabi" -version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -dependencies = [ - "bitflags", -] - [[package]] name = "common-runtime" version = "0.8.0-dev" @@ -849,8 +821,9 @@ dependencies = [ "pallet-identity", "pallet-ud-accounts-storage", "parity-scale-codec", + "scale-info", "serde", - "smallvec 1.6.1", + "smallvec", "sp-arithmetic", "sp-core", "sp-runtime", @@ -880,9 +853,9 @@ checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" [[package]] name = "core-foundation" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" +checksum = "6888e10551bb93e424d8df1d07f1a8b4fceb0001a3a4b048bfc47554946f47b3" dependencies = [ "core-foundation-sys", "libc", @@ -890,9 +863,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.7.0" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" [[package]] name = "cpp_demangle" @@ -913,43 +886,45 @@ dependencies = [ ] [[package]] -name = "cpuid-bool" -version = "0.2.0" +name = "cpufeatures" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb25d077389e53838a8158c8e99174c5a9d902dee4904320db714f3c653ffba" +checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" +dependencies = [ + "libc", +] [[package]] name = "cranelift-bforest" -version = "0.74.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8ca3560686e7c9c7ed7e0fe77469f2410ba5d7781b1acaa9adc8d8deea28e3e" +checksum = "cc0cb7df82c8cf8f2e6a8dd394a0932a71369c160cc9b027dca414fced242513" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.74.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf9bf1ffffb6ce3d2e5ebc83549bd2436426c99b31cc550d521364cbe35d276" +checksum = "fe4463c15fa42eee909e61e5eac4866b7c6d22d0d8c621e57a0c5380753bfa8c" dependencies = [ "cranelift-bforest", "cranelift-codegen-meta", "cranelift-codegen-shared", "cranelift-entity", - "gimli 0.24.0", + "gimli 0.25.0", "log", "regalloc", - "serde", - "smallvec 1.6.1", + "smallvec", "target-lexicon", ] [[package]] name = "cranelift-codegen-meta" -version = "0.74.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cc21936a5a6d07e23849ffe83e5c1f6f50305c074f4b2970ca50c13bf55b821" +checksum = "793f6a94a053a55404ea16e1700202a88101672b8cd6b4df63e13cde950852bf" dependencies = [ "cranelift-codegen-shared", "cranelift-entity", @@ -957,59 +932,56 @@ dependencies = [ [[package]] name = "cranelift-codegen-shared" -version = "0.74.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca5b6ffaa87560bebe69a5446449da18090b126037920b0c1c6d5945f72faf6b" -dependencies = [ - "serde", -] +checksum = "44aa1846df275bce5eb30379d65964c7afc63c05a117076e62a119c25fe174be" [[package]] name = "cranelift-entity" -version = "0.74.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d6b4a8bef04f82e4296782646f733c641d09497df2fabf791323fefaa44c64c" +checksum = "a3a45d8d6318bf8fc518154d9298eab2a8154ec068a8885ff113f6db8d69bb3a" dependencies = [ "serde", ] [[package]] name = "cranelift-frontend" -version = "0.74.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b783b351f966fce33e3c03498cb116d16d97a8f9978164a60920bd0d3a99c" +checksum = "e07339bd461766deb7605169de039e01954768ff730fa1254e149001884a8525" dependencies = [ "cranelift-codegen", "log", - "smallvec 1.6.1", + "smallvec", "target-lexicon", ] [[package]] name = "cranelift-native" -version = "0.74.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77c88d3dd48021ff1e37e978a00098524abd3513444ae252c08d37b310b3d2a" +checksum = "03e2fca76ff57e0532936a71e3fc267eae6a19a86656716479c66e7f912e3d7b" dependencies = [ "cranelift-codegen", + "libc", "target-lexicon", ] [[package]] name = "cranelift-wasm" -version = "0.74.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edb6d408e2da77cdbbd65466298d44c86ae71c1785d2ab0d8657753cdb4d9d89" +checksum = "1f46fec547a1f8a32c54ea61c28be4f4ad234ad95342b718a9a9adcaadb0c778" dependencies = [ "cranelift-codegen", "cranelift-entity", "cranelift-frontend", - "itertools 0.10.1", + "itertools", "log", - "serde", - "smallvec 1.6.1", - "thiserror", + "smallvec", "wasmparser", + "wasmtime-types", ] [[package]] @@ -1028,18 +1000,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4" dependencies = [ "cfg-if 1.0.0", - "crossbeam-utils 0.8.5", -] - -[[package]] -name = "crossbeam-deque" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20ff29ded3204c5106278a81a38f4b482636ed4fa1e6cfbeef193291beb29ed" -dependencies = [ - "crossbeam-epoch 0.8.2", - "crossbeam-utils 0.7.2", - "maybe-uninit", + "crossbeam-utils", ] [[package]] @@ -1049,23 +1010,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" dependencies = [ "cfg-if 1.0.0", - "crossbeam-epoch 0.9.5", - "crossbeam-utils 0.8.5", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" -dependencies = [ - "autocfg", - "cfg-if 0.1.10", - "crossbeam-utils 0.7.2", - "lazy_static", - "maybe-uninit", - "memoffset 0.5.6", - "scopeguard", + "crossbeam-epoch", + "crossbeam-utils", ] [[package]] @@ -1075,34 +1021,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd" dependencies = [ "cfg-if 1.0.0", - "crossbeam-utils 0.8.5", + "crossbeam-utils", "lazy_static", - "memoffset 0.6.4", + "memoffset", "scopeguard", ] -[[package]] -name = "crossbeam-queue" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570" -dependencies = [ - "cfg-if 0.1.10", - "crossbeam-utils 0.7.2", - "maybe-uninit", -] - -[[package]] -name = "crossbeam-utils" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" -dependencies = [ - "autocfg", - "cfg-if 0.1.10", - "lazy_static", -] - [[package]] name = "crossbeam-utils" version = "0.8.5" @@ -1121,31 +1045,31 @@ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "crypto-mac" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ - "generic-array 0.12.4", - "subtle 1.0.0", + "generic-array 0.14.4", + "subtle", ] [[package]] name = "crypto-mac" -version = "0.8.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" dependencies = [ "generic-array 0.14.4", - "subtle 2.4.1", + "subtle", ] [[package]] name = "ct-logs" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c8e13110a84b6315df212c045be706af261fd364791cad863285439ebba672e" +checksum = "c1a816186fa68d9e426e3cb4ae4dff1fcd8e4a2c34b781bf7a822574a0d0aac8" dependencies = [ - "sct", + "sct 0.6.1", ] [[package]] @@ -1158,6 +1082,15 @@ dependencies = [ "syn", ] +[[package]] +name = "ctr" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" +dependencies = [ + "cipher", +] + [[package]] name = "cuckoofilter" version = "0.5.0" @@ -1178,7 +1111,7 @@ dependencies = [ "byteorder", "digest 0.8.1", "rand_core 0.5.1", - "subtle 2.4.1", + "subtle", "zeroize", ] @@ -1191,10 +1124,45 @@ dependencies = [ "byteorder", "digest 0.9.0", "rand_core 0.5.1", - "subtle 2.4.1", + "subtle", "zeroize", ] +[[package]] +name = "darling" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0d720b8683f8dd83c65155f0530560cba68cd2bf395f6513a483caee57ff7f4" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a340f241d2ceed1deb47ae36c4144b2707ec7dd0b649f894cb39bb595986324" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72c41b3b7352feb3211a0d743dc5700a4e3b60f51bd2b368892d1e0f9a95f44b" +dependencies = [ + "darling_core", + "quote", + "syn", +] + [[package]] name = "data-encoding" version = "2.3.2" @@ -1254,9 +1222,9 @@ dependencies = [ [[package]] name = "directories" -version = "3.0.2" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e69600ff1703123957937708eb27f7a564e48885c537782722ed0ba3189ce1d7" +checksum = "f51c5d4ddabd36886dd3e1438cb358cdcb0d7c499cb99cb4ac2e38e18b5cb210" dependencies = [ "dirs-sys", ] @@ -1309,6 +1277,12 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" +[[package]] +name = "dtoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" + [[package]] name = "dyn-clonable" version = "0.9.0" @@ -1355,7 +1329,7 @@ dependencies = [ "ed25519", "rand 0.7.3", "serde", - "sha2 0.9.5", + "sha2 0.9.9", "zeroize", ] @@ -1384,26 +1358,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" dependencies = [ "atty", - "humantime", + "humantime 1.3.0", "log", "regex", "termcolor", ] [[package]] -name = "environmental" -version = "1.1.3" +name = "env_logger" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b91989ae21441195d7d9b9993a2f9295c7e1a8c96255d8b729accddc124797" +checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3" +dependencies = [ + "atty", + "humantime 2.1.0", + "log", + "regex", + "termcolor", +] [[package]] -name = "erased-serde" -version = "0.3.16" +name = "environmental" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3de9ad4541d99dc22b59134e7ff8dc3d6c988c89ecd7324bf10a8362b07a2afa" -dependencies = [ - "serde", -] +checksum = "68b91989ae21441195d7d9b9993a2f9295c7e1a8c96255d8b729accddc124797" [[package]] name = "errno" @@ -1441,28 +1419,6 @@ dependencies = [ "futures 0.3.16", ] -[[package]] -name = "failure" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" -dependencies = [ - "backtrace", - "failure_derive", -] - -[[package]] -name = "failure_derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - [[package]] name = "fake-simd" version = "0.1.2" @@ -1499,15 +1455,15 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fdbe0d94371f9ce939b555dd342d0686cc4c0cadbcd4b61d70af5ff97eb4126" dependencies = [ - "env_logger", + "env_logger 0.7.1", "log", ] [[package]] name = "finality-grandpa" -version = "0.14.3" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c832d0ed507622c7cb98e9b7f10426850fc9d38527ab8071778dcc3a81d45875" +checksum = "e8ac3ff5224ef91f3c97e03eb1de2db82743427e91aaa5ac635f454f0b164f5a" dependencies = [ "either", "futures 0.3.16", @@ -1515,7 +1471,7 @@ dependencies = [ "log", "num-traits", "parity-scale-codec", - "parking_lot 0.11.1", + "parking_lot", "scale-info", ] @@ -1533,9 +1489,9 @@ dependencies = [ [[package]] name = "fixedbitset" -version = "0.2.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" +checksum = "279fb028e20b3c4c320317955b77c5e0c9701f05a1d309905d6fc702cdc5053e" [[package]] name = "flate2" @@ -1559,7 +1515,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "parity-scale-codec", ] @@ -1577,7 +1533,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "frame-support", "frame-system", @@ -1585,7 +1541,9 @@ dependencies = [ "log", "parity-scale-codec", "paste", + "scale-info", "sp-api", + "sp-application-crypto", "sp-io", "sp-runtime", "sp-runtime-interface", @@ -1596,13 +1554,15 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "Inflector", "chrono", "frame-benchmarking", "frame-support", "handlebars", + "linked-hash-map", + "log", "parity-scale-codec", "sc-cli", "sc-client-db", @@ -1620,11 +1580,12 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "sp-core", "sp-io", "sp-runtime", @@ -1634,19 +1595,20 @@ dependencies = [ [[package]] name = "frame-metadata" -version = "14.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +version = "14.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37ed5e5c346de62ca5c184b4325a6600d1eaca210666e4606fe4e449574978d0" dependencies = [ + "cfg-if 1.0.0", "parity-scale-codec", + "scale-info", "serde", - "sp-core", - "sp-std", ] [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "bitflags", "frame-metadata", @@ -1656,10 +1618,12 @@ dependencies = [ "once_cell", "parity-scale-codec", "paste", + "scale-info", "serde", - "smallvec 1.6.1", + "smallvec", "sp-arithmetic", "sp-core", + "sp-core-hashing-proc-macro", "sp-inherents", "sp-io", "sp-runtime", @@ -1667,12 +1631,13 @@ dependencies = [ "sp-state-machine", "sp-std", "sp-tracing", + "tt-call", ] [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -1684,10 +1649,10 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "frame-support-procedural-tools-derive", - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -1696,7 +1661,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "proc-macro2", "quote", @@ -1706,12 +1671,12 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "frame-support", - "impl-trait-for-tuples", "log", "parity-scale-codec", + "scale-info", "serde", "sp-core", "sp-io", @@ -1723,12 +1688,13 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "sp-core", "sp-runtime", "sp-std", @@ -1737,7 +1703,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "parity-scale-codec", "sp-api", @@ -1765,12 +1731,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "fuchsia-cprng" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" - [[package]] name = "fuchsia-zircon" version = "0.3.3" @@ -1816,9 +1776,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.16" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74ed2411805f6e4e3d9bc904c95d5d423b89b3b25dc0250aa74729de20629ff9" +checksum = "ba3dda0b6588335f360afc675d0564c17a77a2bda81ca178a4b6081bd86c7f0b" dependencies = [ "futures-core", "futures-sink", @@ -1826,19 +1786,9 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af51b1b4a7fdff033703db39de8802c673eb91855f2e0d47dcf3bf2c0ef01f99" - -[[package]] -name = "futures-cpupool" -version = "0.1.8" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" -dependencies = [ - "futures 0.1.31", - "num_cpus", -] +checksum = "d0c8ff0461b82559810cdccfde3215c3f373807f5e5232b71479bff7bb2583d7" [[package]] name = "futures-executor" @@ -1854,9 +1804,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.16" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b0e06c393068f3a6ef246c75cdca793d6a46347e75286933e5e75fd2fd11582" +checksum = "b1f9d34af5a1aac6fb380f735fe510746c38067c5bf16c7fd250280503c971b2" [[package]] name = "futures-lite" @@ -1875,12 +1825,10 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.16" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c54913bae956fb8df7f4dc6fc90362aa72e69148e3f39041fbe8742d21e0ac57" +checksum = "6dbd947adfffb0efc70599b3ddcf7b5597bb5fa9e245eb99f62b3a5f7bb8bd3c" dependencies = [ - "autocfg", - "proc-macro-hack", "proc-macro2", "quote", "syn", @@ -1894,20 +1842,20 @@ checksum = "3a1387e07917c711fb4ee4f48ea0adb04a3c9739e53ef85bf43ae1edc2937a8b" dependencies = [ "futures-io", "rustls 0.19.1", - "webpki", + "webpki 0.21.4", ] [[package]] name = "futures-sink" -version = "0.3.16" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0f30aaa67363d119812743aa5f33c201a7a66329f97d1a887022971feea4b53" +checksum = "e3055baccb68d74ff6480350f8d6eb8fcfa3aa11bdc1a1ae3afdd0514617d508" [[package]] name = "futures-task" -version = "0.3.16" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe54a98670017f3be909561f6ad13e810d9a51f3f061b902062ca3da80799f2" +checksum = "6ee7c6485c30167ce4dfb83ac568a849fe53274c831081476ee13e0dce1aad72" [[package]] name = "futures-timer" @@ -1923,11 +1871,10 @@ checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" [[package]] name = "futures-util" -version = "0.3.16" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eb846bfd58e44a8481a00049e82c43e0ccb5d61f8dc071057cb19249dd4d78" +checksum = "d9b5cf40b47a271f77a8b1bec03ca09044d99d2372c0de244e66430761127164" dependencies = [ - "autocfg", "futures 0.1.31", "futures-channel", "futures-core", @@ -1938,8 +1885,6 @@ dependencies = [ "memchr", "pin-project-lite 0.2.7", "pin-utils", - "proc-macro-hack", - "proc-macro-nested", "slab", ] @@ -1960,16 +1905,20 @@ dependencies = [ "pallet-certification", "pallet-grandpa", "pallet-identity", + "pallet-multisig", "pallet-randomness-collective-flip", + "pallet-scheduler", "pallet-sudo", "pallet-timestamp", "pallet-transaction-payment", "pallet-transaction-payment-rpc-runtime-api", "pallet-ud-accounts-storage", "pallet-universal-dividend", + "pallet-utility", "parity-scale-codec", + "scale-info", "serde", - "smallvec 1.6.1", + "smallvec", "sp-api", "sp-arithmetic", "sp-block-builder", @@ -2010,12 +1959,15 @@ dependencies = [ "pallet-identity", "pallet-multisig", "pallet-randomness-collective-flip", + "pallet-scheduler", "pallet-sudo", "pallet-transaction-payment", "pallet-transaction-payment-rpc-runtime-api", "pallet-ud-accounts-storage", "pallet-universal-dividend", + "pallet-utility", "parity-scale-codec", + "scale-info", "serde", "sp-api", "sp-arithmetic", @@ -2058,8 +2010,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ "cfg-if 1.0.0", + "js-sys", "libc", "wasi 0.9.0+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] @@ -2075,9 +2029,9 @@ dependencies = [ [[package]] name = "ghash" -version = "0.3.1" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97304e4cd182c3846f7575ced3890c53012ce534ad9114046b0a9e00bb30a375" +checksum = "1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99" dependencies = [ "opaque-debug 0.3.0", "polyval", @@ -2085,9 +2039,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.24.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4075386626662786ddb0ec9081e7c7eeb1ba31951f447ca780ef9f5d568189" +checksum = "f0a01e0497841a3b2db4f8afa483cce65f7e96a3498bd6c541734792aeac8fe7" dependencies = [ "fallible-iterator", "indexmap", @@ -2096,9 +2050,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.25.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0a01e0497841a3b2db4f8afa483cce65f7e96a3498bd6c541734792aeac8fe7" +checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" [[package]] name = "glob" @@ -2149,16 +2103,20 @@ dependencies = [ "pallet-certification", "pallet-grandpa", "pallet-identity", + "pallet-multisig", "pallet-randomness-collective-flip", + "pallet-scheduler", "pallet-sudo", "pallet-timestamp", "pallet-transaction-payment", "pallet-transaction-payment-rpc-runtime-api", "pallet-ud-accounts-storage", "pallet-universal-dividend", + "pallet-utility", "parity-scale-codec", + "scale-info", "serde", - "smallvec 1.6.1", + "smallvec", "sp-api", "sp-arithmetic", "sp-block-builder", @@ -2176,47 +2134,28 @@ dependencies = [ [[package]] name = "h2" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" -dependencies = [ - "byteorder", - "bytes 0.4.12", - "fnv", - "futures 0.1.31", - "http 0.1.21", - "indexmap", - "log", - "slab", - "string", - "tokio-io", -] - -[[package]] -name = "h2" -version = "0.2.7" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e4728fd124914ad25e99e3d15a9361a879f6620f63cb56bbb08f95abb97a535" +checksum = "0c9de88456263e249e241fcd211d3954e2c9b0ef7ccfc235a444eb367cae3689" dependencies = [ - "bytes 0.5.6", + "bytes 1.1.0", "fnv", "futures-core", "futures-sink", "futures-util", - "http 0.2.4", + "http", "indexmap", "slab", - "tokio 0.2.25", + "tokio", "tokio-util", "tracing", - "tracing-futures", ] [[package]] name = "handlebars" -version = "3.5.5" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4498fc115fa7d34de968184e473529abb40eeb6be8bc5f7faba3d08c316cb3e3" +checksum = "2483bce82dd3ed52509d0117e4a30a488bd608be250ed7a0185301314239ed31" dependencies = [ "log", "pest", @@ -2288,33 +2227,33 @@ checksum = "b07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336f" [[package]] name = "hmac" -version = "0.7.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" dependencies = [ - "crypto-mac 0.7.0", - "digest 0.8.1", + "crypto-mac 0.8.0", + "digest 0.9.0", ] [[package]] name = "hmac" -version = "0.8.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" +checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" dependencies = [ - "crypto-mac 0.8.0", + "crypto-mac 0.11.1", "digest 0.9.0", ] [[package]] name = "hmac-drbg" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6e570451493f10f6581b48cdd530413b63ea9e780f544bfd3bdcaa0d89d1a7b" +checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" dependencies = [ - "digest 0.8.1", - "generic-array 0.12.4", - "hmac 0.7.1", + "digest 0.9.0", + "generic-array 0.14.4", + "hmac 0.8.1", ] [[package]] @@ -2328,48 +2267,26 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "http" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6ccf5ede3a895d8856620237b2f02972c1bbc78d2965ad7fe8838d4a0ed41f0" -dependencies = [ - "bytes 0.4.12", - "fnv", - "itoa", -] - [[package]] name = "http" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "527e8c9ac747e28542699a951517aa9a6945af506cd1f2e1b53a576c17b6cc11" dependencies = [ - "bytes 1.0.1", + "bytes 1.1.0", "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "http 0.1.21", - "tokio-buf", + "itoa 0.4.7", ] [[package]] name = "http-body" -version = "0.3.1" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" +checksum = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6" dependencies = [ - "bytes 0.5.6", - "http 0.2.4", + "bytes 1.1.0", + "http", + "pin-project-lite 0.2.7", ] [[package]] @@ -2380,9 +2297,9 @@ checksum = "acd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503" [[package]] name = "httpdate" -version = "0.3.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" [[package]] name = "humantime" @@ -2394,77 +2311,74 @@ dependencies = [ ] [[package]] -name = "hyper" -version = "0.12.36" +name = "humantime" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c843caf6296fc1f93444735205af9ed4e109a539005abb2564ae1d6fad34c52" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "futures-cpupool", - "h2 0.1.26", - "http 0.1.21", - "http-body 0.1.0", - "httparse", - "iovec", - "itoa", - "log", - "net2", - "rustc_version 0.2.3", - "time", - "tokio 0.1.22", - "tokio-buf", - "tokio-executor", - "tokio-io", - "tokio-reactor", - "tokio-tcp", - "tokio-threadpool", - "tokio-timer", - "want 0.2.0", -] +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.13.10" +version = "0.14.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a6f157065790a3ed2f88679250419b5cdd96e714a0d65f7797fd337186e96bb" +checksum = "b7ec3e62bdc98a2f0393a5048e4c30ef659440ea6e0e572965103e72bd836f55" dependencies = [ - "bytes 0.5.6", + "bytes 1.1.0", "futures-channel", "futures-core", "futures-util", - "h2 0.2.7", - "http 0.2.4", - "http-body 0.3.1", + "h2", + "http", + "http-body", "httparse", "httpdate", - "itoa", - "pin-project 1.0.8", - "socket2 0.3.19", - "tokio 0.2.25", + "itoa 0.4.7", + "pin-project-lite 0.2.7", + "socket2 0.4.1", + "tokio", "tower-service", "tracing", - "want 0.3.0", + "want", ] [[package]] name = "hyper-rustls" -version = "0.21.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37743cc83e8ee85eacfce90f2f4102030d9ff0a95244098d781e9bee4a90abb6" +checksum = "5f9f7a97316d44c0af9b0301e65010573a853a9fc97046d7331d7f6bc0fd5a64" dependencies = [ - "bytes 0.5.6", "ct-logs", "futures-util", - "hyper 0.13.10", + "hyper", + "log", + "rustls 0.19.1", + "rustls-native-certs 0.5.0", + "tokio", + "tokio-rustls 0.22.0", + "webpki 0.21.4", +] + +[[package]] +name = "hyper-rustls" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d87c48c02e0dc5e3b849a2041db3029fd066650f8f717c07bf8ed78ccb895cac" +dependencies = [ + "http", + "hyper", "log", - "rustls 0.18.1", - "rustls-native-certs", - "tokio 0.2.25", - "tokio-rustls", - "webpki", + "rustls 0.20.2", + "rustls-native-certs 0.6.1", + "tokio", + "tokio-rustls 0.23.2", + "webpki-roots 0.22.2", ] +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "idna" version = "0.1.5" @@ -2592,6 +2506,16 @@ dependencies = [ "futures-timer 2.0.2", ] +[[package]] +name = "io-lifetimes" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "278e90d6f8a6c76a8334b336e306efa3c5f2b604048cbfd486d6f49878e3af14" +dependencies = [ + "rustc_version 0.4.0", + "winapi 0.3.9", +] + [[package]] name = "iovec" version = "0.1.4" @@ -2603,9 +2527,9 @@ dependencies = [ [[package]] name = "ip_network" -version = "0.3.4" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ee15951c035f79eddbef745611ec962f63f4558f1dadf98ab723cc603487c6f" +checksum = "aa2f047c0a98b2f299aa5d6d7088443570faae494e9ae1305e48be000c9e0eb1" [[package]] name = "ipconfig" @@ -2625,15 +2549,6 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9" -[[package]] -name = "itertools" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.10.1" @@ -2649,6 +2564,12 @@ version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" +[[package]] +name = "itoa" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" + [[package]] name = "jobserver" version = "0.1.24" @@ -2669,12 +2590,12 @@ dependencies = [ [[package]] name = "jsonrpc-client-transports" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "489b9c612e60c766f751ab40fcb43cbb55a1e10bb44a9b4307ed510ca598cbd7" +checksum = "d2b99d4207e2a04fb4581746903c2bb7eb376f88de9c699d0f3e10feeac0cd3a" dependencies = [ - "failure", - "futures 0.1.31", + "derive_more", + "futures 0.3.16", "jsonrpc-core", "jsonrpc-pubsub", "log", @@ -2685,11 +2606,13 @@ dependencies = [ [[package]] name = "jsonrpc-core" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0745a6379e3edc893c84ec203589790774e4247420033e71a76d3ab4687991fa" +checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" dependencies = [ - "futures 0.1.31", + "futures 0.3.16", + "futures-executor", + "futures-util", "log", "serde", "serde_derive", @@ -2698,18 +2621,19 @@ dependencies = [ [[package]] name = "jsonrpc-core-client" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f764902d7b891344a0acb65625f32f6f7c6db006952143bd650209fbe7d94db" +checksum = "b51da17abecbdab3e3d4f26b01c5ec075e88d3abe3ab3b05dc9aa69392764ec0" dependencies = [ + "futures 0.3.16", "jsonrpc-client-transports", ] [[package]] name = "jsonrpc-derive" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99a847f9ec7bb52149b2786a17c9cb260d6effc6b8eeb8c16b343a487a7563a3" +checksum = "5b939a78fa820cdfcb7ee7484466746a7377760970f6f9c6fe19f9edcc8a38d2" dependencies = [ "proc-macro-crate 0.1.5", "proc-macro2", @@ -2719,76 +2643,197 @@ dependencies = [ [[package]] name = "jsonrpc-http-server" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb5c4513b7b542f42da107942b7b759f27120b5cc894729f88254b28dff44b7" +checksum = "e1dea6e07251d9ce6a552abfb5d7ad6bc290a4596c8dcc3d795fae2bbdc1f3ff" dependencies = [ - "hyper 0.12.36", + "futures 0.3.16", + "hyper", "jsonrpc-core", "jsonrpc-server-utils", "log", "net2", - "parking_lot 0.10.2", + "parking_lot", "unicase", ] [[package]] name = "jsonrpc-ipc-server" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf50e53e4eea8f421a7316c5f63e395f7bc7c4e786a6dc54d76fab6ff7aa7ce7" +checksum = "382bb0206323ca7cda3dcd7e245cea86d37d02457a02a975e3378fb149a48845" dependencies = [ + "futures 0.3.16", "jsonrpc-core", "jsonrpc-server-utils", "log", "parity-tokio-ipc", - "parking_lot 0.10.2", - "tokio-service", + "parking_lot", + "tower-service", ] [[package]] name = "jsonrpc-pubsub" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "639558e0604013be9787ae52f798506ae42bf4220fe587bdc5625871cc8b9c77" +checksum = "240f87695e6c6f62fb37f05c02c04953cf68d6408b8c1c89de85c7a0125b1011" dependencies = [ + "futures 0.3.16", "jsonrpc-core", + "lazy_static", "log", - "parking_lot 0.10.2", + "parking_lot", "rand 0.7.3", "serde", ] [[package]] name = "jsonrpc-server-utils" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72f1f3990650c033bd8f6bd46deac76d990f9bbfb5f8dc8c4767bf0a00392176" +checksum = "fa4fdea130485b572c39a460d50888beb00afb3e35de23ccd7fad8ff19f0e0d4" dependencies = [ - "bytes 0.4.12", + "bytes 1.1.0", + "futures 0.3.16", "globset", "jsonrpc-core", "lazy_static", "log", - "tokio 0.1.22", - "tokio-codec", + "tokio", + "tokio-stream", + "tokio-util", "unicase", ] [[package]] name = "jsonrpc-ws-server" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6596fe75209b73a2a75ebe1dce4e60e03b88a2b25e8807b667597f6315150d22" +checksum = "f892c7d766369475ab7b0669f417906302d7c0fb521285c0a0c92e52e7c8e946" dependencies = [ + "futures 0.3.16", "jsonrpc-core", "jsonrpc-server-utils", "log", "parity-ws", - "parking_lot 0.10.2", + "parking_lot", "slab", ] +[[package]] +name = "jsonrpsee" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "726b6cb76e568aefc4cc127fdb39cb9d92c176f4df0385eaf8053f770351719c" +dependencies = [ + "jsonrpsee-client-transport", + "jsonrpsee-core", + "jsonrpsee-http-client", + "jsonrpsee-proc-macros", + "jsonrpsee-types", + "jsonrpsee-ws-client", +] + +[[package]] +name = "jsonrpsee-client-transport" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bc39096d2bd470ecbd5ed96c8464e2b2c2ef7ec6f8cb9611604255608624773" +dependencies = [ + "futures 0.3.16", + "http", + "jsonrpsee-core", + "jsonrpsee-types", + "pin-project", + "rustls-native-certs 0.6.1", + "soketto", + "thiserror", + "tokio", + "tokio-rustls 0.23.2", + "tokio-util", + "tracing", + "webpki-roots 0.22.2", +] + +[[package]] +name = "jsonrpsee-core" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b863e5e86a11bfaf46bb3ab5aba184671bd62058e8e3ab741c3395904c7afbf3" +dependencies = [ + "anyhow", + "arrayvec 0.7.1", + "async-trait", + "beef", + "futures-channel", + "futures-util", + "hyper", + "jsonrpsee-types", + "rustc-hash", + "serde", + "serde_json", + "soketto", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "jsonrpsee-http-client" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7ca9f9028b3a9cd3c7c5b876f037def9368c6ba6498fd2d3162bdbece1d0ef9" +dependencies = [ + "async-trait", + "hyper", + "hyper-rustls 0.23.0", + "jsonrpsee-core", + "jsonrpsee-types", + "rustc-hash", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "jsonrpsee-proc-macros" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a74ecebba6051b2f745bdc286d3b5ae7c5ff4a71828f7285662acc79cdc113c" +dependencies = [ + "proc-macro-crate 1.1.0", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "jsonrpsee-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e169725e476234f3f96079fb9d8a6d00226db602d3fa056f044994239a490d78" +dependencies = [ + "anyhow", + "beef", + "serde", + "serde_json", + "thiserror", + "tracing", +] + +[[package]] +name = "jsonrpsee-ws-client" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c97f67449d58b8d90ad57986d12dacab8fd594759ff64eb5e6b6e84e470db977" +dependencies = [ + "jsonrpsee-client-transport", + "jsonrpsee-core", + "jsonrpsee-types", +] + [[package]] name = "keccak" version = "0.1.0" @@ -2821,7 +2866,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45a3f58dc069ec0e205a27f5b45920722a46faed802a0541538241af6228f512" dependencies = [ "parity-util-mem", - "smallvec 1.6.1", + "smallvec", ] [[package]] @@ -2832,14 +2877,14 @@ checksum = "c3b6b85fc643f5acd0bffb2cc8a6d150209379267af0d41db72170021841f9f5" dependencies = [ "kvdb", "parity-util-mem", - "parking_lot 0.11.1", + "parking_lot", ] [[package]] name = "kvdb-rocksdb" -version = "0.12.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d169dbb316aa0fa185d02d847c047f1aa20e292cf1563d790c13536a2a732c8" +checksum = "9b1b6ea8f2536f504b645ad78419c8246550e19d2c3419a167080ce08edee35a" dependencies = [ "fs-swap", "kvdb", @@ -2847,10 +2892,10 @@ dependencies = [ "num_cpus", "owning_ref", "parity-util-mem", - "parking_lot 0.11.1", + "parking_lot", "regex", "rocksdb", - "smallvec 1.6.1", + "smallvec", ] [[package]] @@ -2908,6 +2953,7 @@ dependencies = [ "sp-core", "sp-finality-grandpa", "sp-inherents", + "sp-keyring", "sp-offchain", "sp-runtime", "sp-session", @@ -2920,11 +2966,24 @@ dependencies = [ "substrate-frame-rpc-system", ] +[[package]] +name = "lc-core-integration-tests" +version = "3.0.0" +dependencies = [ + "env_logger 0.9.0", + "parity-scale-codec", + "portpicker", + "serde_json", + "sp-keyring", + "subxt", + "tokio", +] + [[package]] name = "libc" -version = "0.2.99" +version = "0.2.112" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7f823d141fe0a24df1e23b4af4e3c7ba9e5966ec514ea068c93024aa7deb765" +checksum = "1b03d17f364a3a042d5e5d46b053bbbf82c92c9430c592dd4c064dc6ee997125" [[package]] name = "libloading" @@ -2954,12 +3013,12 @@ checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a" [[package]] name = "libp2p" -version = "0.37.1" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08053fbef67cd777049ef7a95ebaca2ece370b4ed7712c3fa404d69a88cb741b" +checksum = "3bec54343492ba5940a6c555e512c6721139835d28c59bc22febece72dfd0d9d" dependencies = [ "atomic", - "bytes 1.0.1", + "bytes 1.1.0", "futures 0.3.16", "lazy_static", "libp2p-core", @@ -2970,12 +3029,14 @@ dependencies = [ "libp2p-identify", "libp2p-kad", "libp2p-mdns", + "libp2p-metrics", "libp2p-mplex", "libp2p-noise", "libp2p-ping", "libp2p-plaintext", "libp2p-pnet", "libp2p-relay", + "libp2p-rendezvous", "libp2p-request-response", "libp2p-swarm", "libp2p-swarm-derive", @@ -2984,18 +3045,18 @@ dependencies = [ "libp2p-wasm-ext", "libp2p-websocket", "libp2p-yamux", - "parity-multiaddr", - "parking_lot 0.11.1", - "pin-project 1.0.8", - "smallvec 1.6.1", + "multiaddr", + "parking_lot", + "pin-project", + "smallvec", "wasm-timer", ] [[package]] name = "libp2p-core" -version = "0.28.3" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "554d3e7e9e65f939d66b75fd6a4c67f258fe250da61b91f46c545fc4a89b51d9" +checksum = "bef22d9bba1e8bcb7ec300073e6802943fe8abb8190431842262b5f1c30abba1" dependencies = [ "asn1_der", "bs58", @@ -3007,18 +3068,18 @@ dependencies = [ "lazy_static", "libsecp256k1", "log", - "multihash", + "multiaddr", + "multihash 0.14.0", "multistream-select", - "parity-multiaddr", - "parking_lot 0.11.1", - "pin-project 1.0.8", + "parking_lot", + "pin-project", "prost", "prost-build", - "rand 0.7.3", + "rand 0.8.4", "ring", "rw-stream-sink", - "sha2 0.9.5", - "smallvec 1.6.1", + "sha2 0.9.9", + "smallvec", "thiserror", "unsigned-varint 0.7.0", "void", @@ -3027,9 +3088,9 @@ dependencies = [ [[package]] name = "libp2p-deflate" -version = "0.28.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2181a641cd15f9b6ba71b1335800f309012a0a97a29ffaabbbf40e9d3d58f08" +checksum = "51a800adb195f33de63f4b17b63fe64cfc23bf2c6a0d3d0d5321328664e65197" dependencies = [ "flate2", "futures 0.3.16", @@ -3038,23 +3099,23 @@ dependencies = [ [[package]] name = "libp2p-dns" -version = "0.28.1" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62e63dab8b5ff35e0c101a3e51e843ba782c07bbb1682f5fd827622e0d02b98b" +checksum = "bb8f89d15cb6e3c5bc22afff7513b11bab7856f2872d3cfba86f7f63a06bc498" dependencies = [ "async-std-resolver", "futures 0.3.16", "libp2p-core", "log", - "smallvec 1.6.1", + "smallvec", "trust-dns-resolver", ] [[package]] name = "libp2p-floodsub" -version = "0.29.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48a9b570f6766301d9c4aa00fce3554cad1598e2f466debbc4dde909028417cf" +checksum = "aab3d7210901ea51b7bae2b581aa34521797af8c4ec738c980bda4a06434067f" dependencies = [ "cuckoofilter", "fnv", @@ -3065,19 +3126,19 @@ dependencies = [ "prost", "prost-build", "rand 0.7.3", - "smallvec 1.6.1", + "smallvec", ] [[package]] name = "libp2p-gossipsub" -version = "0.30.1" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7b0c8506a6ec3344b9e706d7c7a6dba826f8ede735cfe13dde12a8c263c4af9" +checksum = "dfeead619eb5dac46e65acc78c535a60aaec803d1428cca6407c3a4fc74d698d" dependencies = [ "asynchronous-codec 0.6.0", - "base64 0.13.0", + "base64", "byteorder", - "bytes 1.0.1", + "bytes 1.1.0", "fnv", "futures 0.3.16", "hex_fmt", @@ -3088,37 +3149,38 @@ dependencies = [ "prost-build", "rand 0.7.3", "regex", - "sha2 0.9.5", - "smallvec 1.6.1", + "sha2 0.9.9", + "smallvec", "unsigned-varint 0.7.0", "wasm-timer", ] [[package]] name = "libp2p-identify" -version = "0.29.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f668f00efd9883e8b7bcc582eaf0164615792608f886f6577da18bcbeea0a46" +checksum = "cca1275574183f288ff8b72d535d5ffa5ea9292ef7829af8b47dcb197c7b0dcd" dependencies = [ "futures 0.3.16", "libp2p-core", "libp2p-swarm", "log", + "lru 0.6.6", "prost", "prost-build", - "smallvec 1.6.1", + "smallvec", "wasm-timer", ] [[package]] name = "libp2p-kad" -version = "0.30.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b07312ebe5ee4fd2404447a0609814574df55c65d4e20838b957bbd34907d820" +checksum = "a2297dc0ca285f3a09d1368bde02449e539b46f94d32d53233f53f6625bcd3ba" dependencies = [ "arrayvec 0.5.2", "asynchronous-codec 0.6.0", - "bytes 1.0.1", + "bytes 1.1.0", "either", "fnv", "futures 0.3.16", @@ -3128,8 +3190,8 @@ dependencies = [ "prost", "prost-build", "rand 0.7.3", - "sha2 0.9.5", - "smallvec 1.6.1", + "sha2 0.9.9", + "smallvec", "uint", "unsigned-varint 0.7.0", "void", @@ -3138,9 +3200,9 @@ dependencies = [ [[package]] name = "libp2p-mdns" -version = "0.30.2" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4efa70c1c3d2d91237f8546e27aeb85e287d62c066a7b4f3ea6a696d43ced714" +checksum = "14c864b64bdc8a84ff3910a0df88e6535f256191a450870f1e7e10cbf8e64d45" dependencies = [ "async-io", "data-encoding", @@ -3152,36 +3214,50 @@ dependencies = [ "libp2p-swarm", "log", "rand 0.8.4", - "smallvec 1.6.1", + "smallvec", "socket2 0.4.1", "void", ] +[[package]] +name = "libp2p-metrics" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4af432fcdd2f8ba4579b846489f8f0812cfd738ced2c0af39df9b1c48bbb6ab2" +dependencies = [ + "libp2p-core", + "libp2p-identify", + "libp2p-kad", + "libp2p-ping", + "libp2p-swarm", + "open-metrics-client", +] + [[package]] name = "libp2p-mplex" -version = "0.28.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85e9b544335d1ed30af71daa96edbefadef6f19c7a55f078b9fc92c87163105d" +checksum = "7f2cd64ef597f40e14bfce0497f50ecb63dd6d201c61796daeb4227078834fbf" dependencies = [ "asynchronous-codec 0.6.0", - "bytes 1.0.1", + "bytes 1.1.0", "futures 0.3.16", "libp2p-core", "log", "nohash-hasher", - "parking_lot 0.11.1", + "parking_lot", "rand 0.7.3", - "smallvec 1.6.1", + "smallvec", "unsigned-varint 0.7.0", ] [[package]] name = "libp2p-noise" -version = "0.30.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36db0f0db3b0433f5b9463f1c0cd9eadc0a3734a9170439ce501ff99733a88bd" +checksum = "a8772c7a99088221bb7ca9c5c0574bf55046a7ab4c319f3619b275f28c8fb87a" dependencies = [ - "bytes 1.0.1", + "bytes 1.1.0", "curve25519-dalek 3.2.0", "futures 0.3.16", "lazy_static", @@ -3189,8 +3265,8 @@ dependencies = [ "log", "prost", "prost-build", - "rand 0.7.3", - "sha2 0.9.5", + "rand 0.8.4", + "sha2 0.9.9", "snow", "static_assertions", "x25519-dalek", @@ -3199,9 +3275,9 @@ dependencies = [ [[package]] name = "libp2p-ping" -version = "0.29.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4bfaffac63bf3c7ec11ed9d8879d455966ddea7e78ee14737f0b6dce0d1cd1" +checksum = "80ef7b0ec5cf06530d9eb6cf59ae49d46a2c45663bde31c25a12f682664adbcf" dependencies = [ "futures 0.3.16", "libp2p-core", @@ -3214,12 +3290,12 @@ dependencies = [ [[package]] name = "libp2p-plaintext" -version = "0.28.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c8c37b4d2a075b4be8442760a5f8c037180f0c8dd5b5734b9978ab868b3aa11" +checksum = "5fba1a6ff33e4a274c89a3b1d78b9f34f32af13265cc5c46c16938262d4e945a" dependencies = [ "asynchronous-codec 0.6.0", - "bytes 1.0.1", + "bytes 1.1.0", "futures 0.3.16", "libp2p-core", "log", @@ -3231,13 +3307,13 @@ dependencies = [ [[package]] name = "libp2p-pnet" -version = "0.20.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce3374f3b28162db9d3442c9347c4f14cb01e8290052615c7d341d40eae0599" +checksum = "0f1a458bbda880107b5b36fcb9b5a1ef0c329685da0e203ed692a8ebe64cc92c" dependencies = [ "futures 0.3.16", "log", - "pin-project 1.0.8", + "pin-project", "rand 0.7.3", "salsa20", "sha3", @@ -3245,68 +3321,89 @@ dependencies = [ [[package]] name = "libp2p-relay" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b8786aca3f18671d8776289706a5521f6c9124a820f69e358de214b9939440d" +checksum = "2852b61c90fa8ce3c8fcc2aba76e6cefc20d648f9df29157d6b3a916278ef3e3" dependencies = [ "asynchronous-codec 0.6.0", - "bytes 1.0.1", + "bytes 1.1.0", "futures 0.3.16", "futures-timer 3.0.2", "libp2p-core", "libp2p-swarm", "log", - "pin-project 1.0.8", + "pin-project", "prost", "prost-build", "rand 0.7.3", - "smallvec 1.6.1", + "smallvec", "unsigned-varint 0.7.0", "void", "wasm-timer", ] [[package]] -name = "libp2p-request-response" -version = "0.11.0" +name = "libp2p-rendezvous" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14a6d2b9e7677eff61dc3d2854876aaf3976d84a01ef6664b610c77a0c9407c5" +dependencies = [ + "asynchronous-codec 0.6.0", + "bimap", + "futures 0.3.16", + "libp2p-core", + "libp2p-swarm", + "log", + "prost", + "prost-build", + "rand 0.8.4", + "sha2 0.9.9", + "thiserror", + "unsigned-varint 0.7.0", + "void", + "wasm-timer", +] + +[[package]] +name = "libp2p-request-response" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cdbe172f08e6d0f95fa8634e273d4c4268c4063de2e33e7435194b0130c62e3" +checksum = "a877a4ced6d46bf84677e1974e8cf61fb434af73b2e96fb48d6cb6223a4634d8" dependencies = [ "async-trait", - "bytes 1.0.1", + "bytes 1.1.0", "futures 0.3.16", "libp2p-core", "libp2p-swarm", "log", - "lru", - "minicbor", + "lru 0.7.2", "rand 0.7.3", - "smallvec 1.6.1", + "smallvec", "unsigned-varint 0.7.0", "wasm-timer", ] [[package]] name = "libp2p-swarm" -version = "0.29.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e04d8e1eef675029ec728ba14e8d0da7975d84b6679b699b4ae91a1de9c3a92" +checksum = "3f5184a508f223bc100a12665517773fb8730e9f36fc09eefb670bf01b107ae9" dependencies = [ "either", "futures 0.3.16", "libp2p-core", "log", "rand 0.7.3", - "smallvec 1.6.1", + "smallvec", "void", "wasm-timer", ] [[package]] name = "libp2p-swarm-derive" -version = "0.23.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "365b0a699fea5168676840567582a012ea297b1ca02eee467e58301b9c9c5eed" +checksum = "072c290f727d39bdc4e9d6d1c847978693d25a673bd757813681e33e5f6c00c2" dependencies = [ "quote", "syn", @@ -3314,9 +3411,9 @@ dependencies = [ [[package]] name = "libp2p-tcp" -version = "0.28.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b1a27d21c477951799e99d5c105d78868258502ce092988040a808d5a19bbd9" +checksum = "7399c5b6361ef525d41c11fcf51635724f832baf5819b30d3d873eabb4fbae4b" dependencies = [ "async-io", "futures 0.3.16", @@ -3331,9 +3428,9 @@ dependencies = [ [[package]] name = "libp2p-uds" -version = "0.28.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffd6564bb3b7ff203661ccbb69003c2b551e34cef974f2d6c6a28306a12170b5" +checksum = "b8b7563e46218165dfd60f64b96f7ce84590d75f53ecbdc74a7dd01450dc5973" dependencies = [ "async-std", "futures 0.3.16", @@ -3343,9 +3440,9 @@ dependencies = [ [[package]] name = "libp2p-wasm-ext" -version = "0.28.2" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d413e4cf9b8e5dfbcd2a60d3dc5a3391308bdb463684093d4f67137b7113de" +checksum = "1008a302b73c5020251f9708c653f5ed08368e530e247cc9cd2f109ff30042cf" dependencies = [ "futures 0.3.16", "js-sys", @@ -3357,9 +3454,9 @@ dependencies = [ [[package]] name = "libp2p-websocket" -version = "0.29.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cace60995ef6f637e4752cccbb2590f6bc358e8741a0d066307636c69a4b3a74" +checksum = "22e12df82d1ed64969371a9e65ea92b91064658604cc2576c2757f18ead9a1cf" dependencies = [ "either", "futures 0.3.16", @@ -3370,18 +3467,18 @@ dependencies = [ "rw-stream-sink", "soketto", "url 2.2.2", - "webpki-roots", + "webpki-roots 0.21.1", ] [[package]] name = "libp2p-yamux" -version = "0.32.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f35da42cfc6d5cb0dcf3ad6881bc68d146cdf38f98655e09e33fbba4d13eabc4" +checksum = "4e7362abb8867d7187e7e93df17f460d554c997fc5c8ac57dc1259057f6889af" dependencies = [ "futures 0.3.16", "libp2p-core", - "parking_lot 0.11.1", + "parking_lot", "thiserror", "yamux", ] @@ -3400,20 +3497,52 @@ dependencies = [ [[package]] name = "libsecp256k1" -version = "0.3.5" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc1e2c808481a63dc6da2074752fdd4336a3c8fcc68b83db6f1fd5224ae7962" +checksum = "b0452aac8bab02242429380e9b2f94ea20cea2b37e2c1777a1358799bbe97f37" dependencies = [ "arrayref", - "crunchy", - "digest 0.8.1", + "base64", + "digest 0.9.0", "hmac-drbg", - "rand 0.7.3", - "sha2 0.8.2", - "subtle 2.4.1", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.8.4", + "serde", + "sha2 0.9.9", "typenum", ] +[[package]] +name = "libsecp256k1-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c" +dependencies = [ + "libsecp256k1-core", +] + [[package]] name = "libz-sys" version = "1.1.3" @@ -3442,28 +3571,25 @@ dependencies = [ [[package]] name = "linregress" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6e407dadb4ca4b31bc69c27aff00e7ca4534fdcee855159b039a7cebb5f395" +checksum = "d6c601a85f5ecd1aba625247bca0031585fb1c446461b142878a16f8245ddeb8" dependencies = [ "nalgebra", "statrs", ] [[package]] -name = "lock_api" -version = "0.3.4" +name = "linux-raw-sys" +version = "0.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75" -dependencies = [ - "scopeguard", -] +checksum = "687387ff42ec7ea4f2149035a5675fedb675d26f98db90a1846ac63d3addb5f5" [[package]] name = "lock_api" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0382880606dff6d15c9476c416d18690b72742aa7b605bb6dd6ec9030fbf07eb" +checksum = "712a4d093c9976e24e7dbca41db895dabcbac38eb5f4045393d17a95bdfb1109" dependencies = [ "scopeguard", ] @@ -3487,6 +3613,15 @@ dependencies = [ "hashbrown", ] +[[package]] +name = "lru" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "274353858935c992b13c0ca408752e2121da852d07dec7ce5f108c77dfa14d1f" +dependencies = [ + "hashbrown", +] + [[package]] name = "lru-cache" version = "0.1.2" @@ -3496,6 +3631,26 @@ dependencies = [ "linked-hash-map", ] +[[package]] +name = "lz4" +version = "1.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac20ed6991e01bf6a2e68cc73df2b389707403662a8ba89f68511fb340f724c" +dependencies = [ + "libc", + "lz4-sys", +] + +[[package]] +name = "lz4-sys" +version = "1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dca79aa95d8b3226213ad454d328369853be3a1382d89532a854f4d69640acae" +dependencies = [ + "cc", + "libc", +] + [[package]] name = "mach" version = "0.3.2" @@ -3541,12 +3696,6 @@ dependencies = [ "rawpointer", ] -[[package]] -name = "maybe-uninit" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" - [[package]] name = "memchr" version = "2.4.1" @@ -3563,12 +3712,12 @@ dependencies = [ ] [[package]] -name = "memoffset" -version = "0.5.6" +name = "memmap2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" +checksum = "4647a11b578fead29cdbb34d4adef8dd3dc35b876c9c6d5240d83f205abfe96e" dependencies = [ - "autocfg", + "libc", ] [[package]] @@ -3582,9 +3731,9 @@ dependencies = [ [[package]] name = "memory-db" -version = "0.27.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de006e09d04fc301a5f7e817b75aa49801c4479a8af753764416b085337ddcc5" +checksum = "d505169b746dacf02f7d14d8c80b34edfd8212159c63d23c977739a0d960c626" dependencies = [ "hash-db", "hashbrown", @@ -3609,26 +3758,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "minicbor" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51aa5bb0ca22415daca596a227b507f880ad1b2318a87fa9325312a5d285ca0d" -dependencies = [ - "minicbor-derive", -] - -[[package]] -name = "minicbor-derive" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54999f917cd092b13904737e26631aa2b2b88d625db68e4bab461dcd8006c788" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "miniz_oxide" version = "0.4.4" @@ -3659,38 +3788,28 @@ dependencies = [ ] [[package]] -name = "mio-extras" -version = "2.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" -dependencies = [ - "lazycell", - "log", - "mio", - "slab", -] - -[[package]] -name = "mio-named-pipes" -version = "0.1.7" +name = "mio" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0840c1c50fd55e521b247f949c241c9997709f23bd7f023b9762cd561e935656" +checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" dependencies = [ + "libc", "log", - "mio", "miow 0.3.7", + "ntapi", "winapi 0.3.9", ] [[package]] -name = "mio-uds" -version = "0.6.8" +name = "mio-extras" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0" +checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" dependencies = [ - "iovec", - "libc", - "mio", + "lazycell", + "log", + "mio 0.6.23", + "slab", ] [[package]] @@ -3720,6 +3839,24 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0debeb9fcf88823ea64d64e4a815ab1643f33127d995978e099942ce38f25238" +[[package]] +name = "multiaddr" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48ee4ea82141951ac6379f964f71b20876d43712bea8faf6dd1a375e08a46499" +dependencies = [ + "arrayref", + "bs58", + "byteorder", + "data-encoding", + "multihash 0.14.0", + "percent-encoding 2.1.0", + "serde", + "static_assertions", + "unsigned-varint 0.7.0", + "url 2.2.2", +] + [[package]] name = "multibase" version = "0.8.0" @@ -3743,18 +3880,31 @@ dependencies = [ "digest 0.9.0", "generic-array 0.14.4", "multihash-derive", - "sha2 0.9.5", + "sha2 0.9.9", "sha3", "unsigned-varint 0.5.1", ] +[[package]] +name = "multihash" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "752a61cd890ff691b4411423d23816d5866dd5621e4d1c5687a53b94b5a979d8" +dependencies = [ + "digest 0.9.0", + "generic-array 0.14.4", + "multihash-derive", + "sha2 0.9.9", + "unsigned-varint 0.7.0", +] + [[package]] name = "multihash-derive" version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "424f6e86263cd5294cbd7f1e95746b95aca0e0d66bff31e5a40d6baa87b4aa99" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro-error", "proc-macro2", "quote", @@ -3774,11 +3924,11 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d91ec0a2440aaff5f78ec35631a7027d50386c6163aa975f7caa0d5da4b6ff8" dependencies = [ - "bytes 1.0.1", + "bytes 1.1.0", "futures 0.3.16", "log", - "pin-project 1.0.8", - "smallvec 1.6.1", + "pin-project", + "smallvec", "unsigned-varint 0.7.0", ] @@ -3813,11 +3963,11 @@ dependencies = [ [[package]] name = "names" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef320dab323286b50fb5cdda23f61c796a72a89998ab565ca32525c5c556f2da" +checksum = "10a8690bf09abf659851e58cd666c3d37ac6af07c2bd7a9e332cfba471715775" dependencies = [ - "rand 0.3.23", + "rand 0.8.4", ] [[package]] @@ -3855,6 +4005,15 @@ dependencies = [ "version_check", ] +[[package]] +name = "ntapi" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" +dependencies = [ + "winapi 0.3.9", +] + [[package]] name = "num-bigint" version = "0.2.6" @@ -3930,20 +4089,12 @@ dependencies = [ [[package]] name = "object" -version = "0.24.0" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5b3dd1c072ee7963717671d1ca129f1048fda25edea6b752bfc71ac8854170" +checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" dependencies = [ "crc32fast", "indexmap", -] - -[[package]] -name = "object" -version = "0.26.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee2766204889d09937d00bfbb7fec56bb2a199e2ade963cab19185d8a6104c7c" -dependencies = [ "memchr", ] @@ -3952,9 +4103,6 @@ name = "once_cell" version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" -dependencies = [ - "parking_lot 0.11.1", -] [[package]] name = "opaque-debug" @@ -3968,6 +4116,29 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +[[package]] +name = "open-metrics-client" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7337d80c23c2d8b1349563981bc4fb531220733743ba8115454a67b181173f0d" +dependencies = [ + "dtoa", + "itoa 0.4.7", + "open-metrics-client-derive-text-encode", + "owning_ref", +] + +[[package]] +name = "open-metrics-client-derive-text-encode" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a15c83b586f00268c619c1cb3340ec1a6f59dd9ba1d9833a273a68e6d5cd8ffc" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "openssl-probe" version = "0.1.4" @@ -3986,13 +4157,13 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "frame-support", "frame-system", - "pallet-session", "pallet-timestamp", "parity-scale-codec", + "scale-info", "sp-application-crypto", "sp-consensus-aura", "sp-runtime", @@ -4002,12 +4173,13 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "frame-support", "frame-system", "impl-trait-for-tuples", "parity-scale-codec", + "scale-info", "sp-authorship", "sp-runtime", "sp-std", @@ -4016,13 +4188,14 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "log", "parity-scale-codec", + "scale-info", "sp-runtime", "sp-std", ] @@ -4036,6 +4209,7 @@ dependencies = [ "frame-system", "maplit", "parity-scale-codec", + "scale-info", "serde", "sp-core", "sp-io", @@ -4046,7 +4220,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "frame-benchmarking", "frame-support", @@ -4055,6 +4229,7 @@ dependencies = [ "pallet-authorship", "pallet-session", "parity-scale-codec", + "scale-info", "sp-application-crypto", "sp-core", "sp-finality-grandpa", @@ -4073,6 +4248,7 @@ dependencies = [ "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "serde", "sp-core", "sp-io", @@ -4083,12 +4259,12 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "frame-support", "frame-system", "parity-scale-codec", - "sp-core", + "scale-info", "sp-io", "sp-runtime", "sp-std", @@ -4097,12 +4273,28 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "frame-support", "frame-system", "parity-scale-codec", "safe-mix", + "scale-info", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-scheduler" +version = "4.0.0-dev" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" +dependencies = [ + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-io", "sp-runtime", "sp-std", ] @@ -4110,7 +4302,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "frame-support", "frame-system", @@ -4118,6 +4310,7 @@ dependencies = [ "log", "pallet-timestamp", "parity-scale-codec", + "scale-info", "sp-core", "sp-io", "sp-runtime", @@ -4130,11 +4323,12 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "sp-io", "sp-runtime", "sp-std", @@ -4143,14 +4337,14 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", - "impl-trait-for-tuples", "log", "parity-scale-codec", + "scale-info", "sp-inherents", "sp-io", "sp-runtime", @@ -4161,13 +4355,14 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "serde", - "smallvec 1.6.1", + "smallvec", "sp-core", "sp-io", "sp-runtime", @@ -4177,7 +4372,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -4194,7 +4389,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -4211,6 +4406,7 @@ dependencies = [ "frame-system", "pallet-balances", "parity-scale-codec", + "scale-info", "serde", "sp-core", "sp-io", @@ -4227,6 +4423,7 @@ dependencies = [ "frame-system", "pallet-balances", "parity-scale-codec", + "scale-info", "serde", "sp-arithmetic", "sp-core", @@ -4235,11 +4432,26 @@ dependencies = [ "sp-std", ] +[[package]] +name = "pallet-utility" +version = "4.0.0-dev" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" +dependencies = [ + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + [[package]] name = "parity-db" -version = "0.2.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e337f62db341435f0da05b8f6b97e984ef4ea5800510cd07c2d624688c40b47" +checksum = "78a95abf24f1097c6e3181abbbbfc3630b3b5e681470940f719b69acb4911c7f" dependencies = [ "blake2-rfc", "crc32fast", @@ -4247,34 +4459,18 @@ dependencies = [ "hex", "libc", "log", - "memmap2", - "parking_lot 0.11.1", + "lz4", + "memmap2 0.2.3", + "parking_lot", "rand 0.8.4", -] - -[[package]] -name = "parity-multiaddr" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58341485071825827b7f03cf7efd1cb21e6a709bea778fb50227fd45d2f361b4" -dependencies = [ - "arrayref", - "bs58", - "byteorder", - "data-encoding", - "multihash", - "percent-encoding 2.1.0", - "serde", - "static_assertions", - "unsigned-varint 0.7.0", - "url 2.2.2", + "snap", ] [[package]] name = "parity-scale-codec" -version = "2.2.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8975095a2a03bbbdc70a74ab11a4f76a6d0b84680d87c68d722531b0ac28e8a9" +checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" dependencies = [ "arrayvec 0.7.1", "bitvec 0.20.4", @@ -4286,11 +4482,11 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "2.2.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40dbbfef7f0a1143c5b06e0d76a6278e25dac0bc1af4be51a0fbb73f07e7ad09" +checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -4304,36 +4500,31 @@ checksum = "aa9777aa91b8ad9dd5aaa04a9b6bcb02c7f1deb952fca5a66034d5e63afc5c6f" [[package]] name = "parity-tokio-ipc" -version = "0.4.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e57fea504fea33f9fbb5f49f378359030e7e026a6ab849bb9e8f0787376f1bf" +checksum = "9981e32fb75e004cc148f5fb70342f393830e0a4aa62e3cc93b50976218d42b6" dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", + "futures 0.3.16", "libc", "log", - "mio-named-pipes", - "miow 0.3.7", "rand 0.7.3", - "tokio 0.1.22", - "tokio-named-pipes", - "tokio-uds", + "tokio", "winapi 0.3.9", ] [[package]] name = "parity-util-mem" -version = "0.10.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ad6f1acec69b95caf435bbd158d486e5a0a44fcf51531e84922c59ff09e8457" +checksum = "6f4cb4e169446179cbc6b8b6320cc9fca49bd2e94e8db25f25f200a8ea774770" dependencies = [ "cfg-if 1.0.0", "hashbrown", "impl-trait-for-tuples", "parity-util-mem-derive", - "parking_lot 0.11.1", + "parking_lot", "primitive-types", - "smallvec 1.6.1", + "smallvec", "winapi 0.3.9", ] @@ -4364,101 +4555,51 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be5e13c266502aadf83426d87d81a0f5d1ef45b8027f5a471c360abfe4bfae92" [[package]] -name = "parity-ws" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322d72dfe461b8b9e367d057ceace105379d64d5b03907d23c481ccf3fbf8aa4" -dependencies = [ - "byteorder", - "bytes 0.4.12", - "httparse", - "log", - "mio", - "mio-extras", - "rand 0.7.3", - "sha-1 0.8.2", - "slab", - "url 2.2.2", -] - -[[package]] -name = "parking" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" - -[[package]] -name = "parking_lot" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" -dependencies = [ - "lock_api 0.3.4", - "parking_lot_core 0.6.2", - "rustc_version 0.2.3", -] - -[[package]] -name = "parking_lot" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505e" -dependencies = [ - "lock_api 0.3.4", - "parking_lot_core 0.7.2", -] - -[[package]] -name = "parking_lot" +name = "parity-ws" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" +checksum = "5983d3929ad50f12c3eb9a6743f19d691866ecd44da74c0a3308c3f8a56df0c6" dependencies = [ - "instant", - "lock_api 0.4.4", - "parking_lot_core 0.8.3", + "byteorder", + "bytes 0.4.12", + "httparse", + "log", + "mio 0.6.23", + "mio-extras", + "rand 0.7.3", + "sha-1 0.8.2", + "slab", + "url 2.2.2", ] [[package]] -name = "parking_lot_core" -version = "0.6.2" +name = "parking" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" -dependencies = [ - "cfg-if 0.1.10", - "cloudabi", - "libc", - "redox_syscall 0.1.57", - "rustc_version 0.2.3", - "smallvec 0.6.14", - "winapi 0.3.9", -] +checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" [[package]] -name = "parking_lot_core" -version = "0.7.2" +name = "parking_lot" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d58c7c768d4ba344e3e8d72518ac13e259d7c7ade24167003b8488e10b6740a3" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" dependencies = [ - "cfg-if 0.1.10", - "cloudabi", - "libc", - "redox_syscall 0.1.57", - "smallvec 1.6.1", - "winapi 0.3.9", + "instant", + "lock_api", + "parking_lot_core", ] [[package]] name = "parking_lot_core" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7a782938e745763fe6907fc6ba86946d72f49fe7e21de074e08128a99fb018" +checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" dependencies = [ "cfg-if 1.0.0", "instant", "libc", - "redox_syscall 0.2.10", - "smallvec 1.6.1", + "redox_syscall", + "smallvec", "winapi 0.3.9", ] @@ -4468,16 +4609,6 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acbf547ad0c65e31259204bd90935776d1c693cec2f4ff7abb7a1bbbd40dfe58" -[[package]] -name = "pbkdf2" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9" -dependencies = [ - "byteorder", - "crypto-mac 0.7.0", -] - [[package]] name = "pbkdf2" version = "0.4.0" @@ -4488,10 +4619,13 @@ dependencies = [ ] [[package]] -name = "pdqselect" -version = "0.1.0" +name = "pbkdf2" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec91767ecc0a0bbe558ce8c9da33c068066c57ecc8bb8477ef8c1ad3ef77c27" +checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" +dependencies = [ + "crypto-mac 0.11.1", +] [[package]] name = "peeking_take_while" @@ -4556,41 +4690,21 @@ dependencies = [ [[package]] name = "petgraph" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7" +checksum = "4a13a2fa9d0b63e5f22328828741e523766fff0ee9e779316902290dff3f824f" dependencies = [ "fixedbitset", "indexmap", ] -[[package]] -name = "pin-project" -version = "0.4.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "918192b5c59119d51e0cd221f4d49dde9112824ba717369e903c97d076083d0f" -dependencies = [ - "pin-project-internal 0.4.28", -] - [[package]] name = "pin-project" version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "576bc800220cc65dac09e99e97b08b358cfab6e17078de8dc5fee223bd2d0c08" dependencies = [ - "pin-project-internal 1.0.8", -] - -[[package]] -name = "pin-project-internal" -version = "0.4.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be26700300be6d9d23264c73211d8190e755b6b5ca7a1b28230025511b52a5e" -dependencies = [ - "proc-macro2", - "quote", - "syn", + "pin-project-internal", ] [[package]] @@ -4630,9 +4744,9 @@ checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" [[package]] name = "platforms" -version = "1.1.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989d43012e2ca1c4a02507c67282691a0a3207f9dc67cec596b43fe925b3d325" +checksum = "e8d0eef3571242013a0d5dc84861c3ae4a652e56e12adf8bdc26ff5f8cb34c94" [[package]] name = "polling" @@ -4649,25 +4763,36 @@ dependencies = [ [[package]] name = "poly1305" -version = "0.6.2" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b7456bc1ad2d4cf82b3a016be4c2ac48daf11bf990c1603ebd447fe6f30fca8" +checksum = "048aeb476be11a4b6ca432ca569e375810de9294ae78f4774e78ea98a9246ede" dependencies = [ - "cpuid-bool", + "cpufeatures 0.2.1", + "opaque-debug 0.3.0", "universal-hash", ] [[package]] name = "polyval" -version = "0.4.5" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eebcc4aa140b9abd2bc40d9c3f7ccec842679cd79045ac3a7ac698c1a064b7cd" +checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" dependencies = [ - "cpuid-bool", + "cfg-if 1.0.0", + "cpufeatures 0.2.1", "opaque-debug 0.3.0", "universal-hash", ] +[[package]] +name = "portpicker" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be97d76faf1bfab666e1375477b23fde79eccf0276e9b63b92a39d676a889ba9" +dependencies = [ + "rand 0.8.4", +] + [[package]] name = "ppv-lite86" version = "0.2.10" @@ -4683,6 +4808,7 @@ dependencies = [ "fixed-hash", "impl-codec", "impl-serde", + "scale-info", "uint", ] @@ -4697,9 +4823,9 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fdbd1df62156fbc5945f4762632564d7d038153091c3fcf1067f6aef7cff92" +checksum = "1ebace6889caf889b4d3f76becee12e90353f2b8c7d875534a71e5742f8f6f83" dependencies = [ "thiserror", "toml", @@ -4729,77 +4855,67 @@ dependencies = [ "version_check", ] -[[package]] -name = "proc-macro-hack" -version = "0.5.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" - -[[package]] -name = "proc-macro-nested" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" - [[package]] name = "proc-macro2" -version = "1.0.28" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7ed8b8c7b886ea3ed7dde405212185f423ab44682667c8c6dd14aa1d9f6612" +checksum = "ba508cc11742c0dc5c1659771673afbab7a0efab23aa17e854cbab0837ed0b43" dependencies = [ "unicode-xid", ] [[package]] name = "prometheus" -version = "0.11.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8425533e7122f0c3cc7a37e6244b16ad3a2cc32ae7ac6276e2a75da0d9c200d" +checksum = "b7f64969ffd5dd8f39bd57a68ac53c163a095ed9d0fb707146da1b27025a3504" dependencies = [ "cfg-if 1.0.0", "fnv", "lazy_static", - "parking_lot 0.11.1", - "regex", + "memchr", + "parking_lot", "thiserror", ] [[package]] name = "prost" -version = "0.7.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e6984d2f1a23009bd270b8bb56d0926810a3d483f59c987d77969e9d8e840b2" +checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" dependencies = [ - "bytes 1.0.1", + "bytes 1.1.0", "prost-derive", ] [[package]] name = "prost-build" -version = "0.7.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d3ebd75ac2679c2af3a92246639f9fcc8a442ee420719cc4fe195b98dd5fa3" +checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5" dependencies = [ - "bytes 1.0.1", + "bytes 1.1.0", "heck", - "itertools 0.9.0", + "itertools", + "lazy_static", "log", "multimap", "petgraph", "prost", "prost-types", + "regex", "tempfile", "which", ] [[package]] name = "prost-derive" -version = "0.7.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "169a15f3008ecb5160cba7d37bcd690a7601b6d30cfb87a117d45e59d52af5d4" +checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" dependencies = [ "anyhow", - "itertools 0.9.0", + "itertools", "proc-macro2", "quote", "syn", @@ -4807,11 +4923,11 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.7.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b518d7cdd93dab1d1122cf07fa9a60771836c668dde9d9e2a139f957f0d9f1bb" +checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a" dependencies = [ - "bytes 1.0.1", + "bytes 1.1.0", "prost", ] @@ -4826,9 +4942,9 @@ dependencies = [ [[package]] name = "pwasm-utils" -version = "0.18.1" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0c1a2f10b47d446372a4f397c58b329aaea72b2daf9395a623a411cb8ccb54f" +checksum = "880b3384fb00b8f6ecccd5d358b93bd2201900ae3daad213791d1864f6441f5c" dependencies = [ "byteorder", "log", @@ -4860,9 +4976,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05" dependencies = [ "proc-macro2", ] @@ -4879,29 +4995,6 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" -[[package]] -name = "rand" -version = "0.3.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" -dependencies = [ - "libc", - "rand 0.4.6", -] - -[[package]] -name = "rand" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" -dependencies = [ - "fuchsia-cprng", - "libc", - "rand_core 0.3.1", - "rdrand", - "winapi 0.3.9", -] - [[package]] name = "rand" version = "0.7.3" @@ -4948,21 +5041,6 @@ dependencies = [ "rand_core 0.6.3", ] -[[package]] -name = "rand_core" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -dependencies = [ - "rand_core 0.4.2", -] - -[[package]] -name = "rand_core" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" - [[package]] name = "rand_core" version = "0.5.1" @@ -5031,7 +5109,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" dependencies = [ "autocfg", - "crossbeam-deque 0.8.1", + "crossbeam-deque", "either", "rayon-core", ] @@ -5043,27 +5121,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" dependencies = [ "crossbeam-channel", - "crossbeam-deque 0.8.1", - "crossbeam-utils 0.8.5", + "crossbeam-deque", + "crossbeam-utils", "lazy_static", "num_cpus", ] -[[package]] -name = "rdrand" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -dependencies = [ - "rand_core 0.3.1", -] - -[[package]] -name = "redox_syscall" -version = "0.1.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" - [[package]] name = "redox_syscall" version = "0.2.10" @@ -5080,7 +5143,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" dependencies = [ "getrandom 0.2.3", - "redox_syscall 0.2.10", + "redox_syscall", ] [[package]] @@ -5105,14 +5168,13 @@ dependencies = [ [[package]] name = "regalloc" -version = "0.0.31" +version = "0.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "571f7f397d61c4755285cd37853fe8e03271c243424a907415909379659381c5" +checksum = "a6304468554ed921da3d32c355ea107b8d13d7b8996c3adfb7aab48d3bc321f4" dependencies = [ "log", "rustc-hash", - "serde", - "smallvec 1.6.1", + "smallvec", ] [[package]] @@ -5174,9 +5236,9 @@ dependencies = [ [[package]] name = "retain_mut" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9c17925a9027d298a4603d286befe3f9dc0e8ed02523141914eb628798d6e5b" +checksum = "11000e6ba5020e53e7cc26f73b91ae7d5496b4977851479edb66b694c0675c21" [[package]] name = "ring" @@ -5213,6 +5275,23 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "rsix" +version = "0.23.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f64c5788d5aab8b75441499d99576a24eb09f76fb267b36fec7e3d970c66431" +dependencies = [ + "bitflags", + "cc", + "errno", + "io-lifetimes", + "itoa 0.4.7", + "libc", + "linux-raw-sys", + "once_cell", + "rustc_version 0.4.0", +] + [[package]] name = "rustc-demangle" version = "0.1.20" @@ -5249,62 +5328,80 @@ dependencies = [ "semver 0.11.0", ] +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver 1.0.4", +] + [[package]] name = "rustls" -version = "0.18.1" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d1126dcf58e93cee7d098dbda643b5f92ed724f1f6a63007c1116eed6700c81" +checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" dependencies = [ - "base64 0.12.3", + "base64", "log", "ring", - "sct", - "webpki", + "sct 0.6.1", + "webpki 0.21.4", ] [[package]] name = "rustls" -version = "0.19.1" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" +checksum = "d37e5e2290f3e040b594b1a9e04377c2c671f1a1cfd9bfdef82106ac1c113f84" dependencies = [ - "base64 0.13.0", "log", "ring", - "sct", - "webpki", + "sct 0.7.0", + "webpki 0.22.0", ] [[package]] name = "rustls-native-certs" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "629d439a7672da82dd955498445e496ee2096fe2117b9f796558a43fdb9e59b8" +checksum = "5a07b7c1885bd8ed3831c289b7870b13ef46fe0e856d288c30d9cc17d75a2092" dependencies = [ "openssl-probe", - "rustls 0.18.1", + "rustls 0.19.1", "schannel", "security-framework", ] [[package]] -name = "ruzstd" -version = "0.2.4" +name = "rustls-native-certs" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cada0ef59efa6a5f4dc5e491f93d9f31e3fc7758df421ff1de8a706338e1100" +checksum = "5ca9ebdfa27d3fc180e42879037b5338ab1c040c06affd00d8338598e7800943" dependencies = [ - "byteorder", - "twox-hash", + "openssl-probe", + "rustls-pemfile", + "schannel", + "security-framework", ] [[package]] -name = "rw-stream-sink" +name = "rustls-pemfile" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4da5fcb054c46f5a5dff833b129285a93d3f0179531735e6c866e8cc307d2020" +checksum = "5eebeaeb360c87bfb72e84abdb3447159c0eaececf1bef2aecd65a8be949d1c9" +dependencies = [ + "base64", +] + +[[package]] +name = "rw-stream-sink" +version = "0.2.1" +source = "git+https://github.com/librelois/rw-stream-sink?branch=master#7a5614fa27964c082faeb67749f5c892a16317cd" dependencies = [ "futures 0.3.16", - "pin-project 0.4.28", + "pin-project", "static_assertions", ] @@ -5325,9 +5422,9 @@ dependencies = [ [[package]] name = "salsa20" -version = "0.7.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "399f290ffc409596022fce5ea5d4138184be4784f2b28c62c59f0d8389059a15" +checksum = "0c0fbb5f676da676c260ba276a8f43a8dc67cf02d1438423aeb1c677a7212686" dependencies = [ "cipher", ] @@ -5343,8 +5440,8 @@ dependencies = [ [[package]] name = "sc-allocator" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +version = "4.1.0-dev" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "log", "sp-core", @@ -5355,7 +5452,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "futures 0.3.16", "futures-timer 3.0.2", @@ -5378,7 +5475,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -5394,19 +5491,16 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "impl-trait-for-tuples", + "memmap2 0.5.0", "parity-scale-codec", "sc-chain-spec-derive", - "sc-consensus-babe", - "sc-consensus-epochs", - "sc-finality-grandpa", "sc-network", "sc-telemetry", "serde", "serde_json", - "sp-consensus-babe", "sp-core", "sp-runtime", ] @@ -5414,9 +5508,9 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -5425,7 +5519,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "chrono", "fdlimit", @@ -5444,6 +5538,7 @@ dependencies = [ "sc-service", "sc-telemetry", "sc-tracing", + "sc-utils", "serde", "serde_json", "sp-blockchain", @@ -5452,54 +5547,46 @@ dependencies = [ "sp-keystore", "sp-panic-handler", "sp-runtime", - "sp-utils", "sp-version", "structopt", "thiserror", "tiny-bip39", - "tokio 0.2.25", + "tokio", ] [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ - "derive_more", "fnv", "futures 0.3.16", "hash-db", - "kvdb", - "lazy_static", "log", "parity-scale-codec", - "parking_lot 0.11.1", + "parking_lot", "sc-executor", "sc-transaction-pool-api", + "sc-utils", "sp-api", "sp-blockchain", "sp-consensus", "sp-core", "sp-database", "sp-externalities", - "sp-inherents", "sp-keystore", "sp-runtime", "sp-state-machine", - "sp-std", "sp-storage", "sp-trie", - "sp-utils", - "sp-version", "substrate-prometheus-endpoint", ] [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ - "blake2-rfc", "hash-db", "kvdb", "kvdb-memorydb", @@ -5508,10 +5595,8 @@ dependencies = [ "log", "parity-db", "parity-scale-codec", - "parity-util-mem", - "parking_lot 0.11.1", + "parking_lot", "sc-client-api", - "sc-executor", "sc-state-db", "sp-arithmetic", "sp-blockchain", @@ -5520,21 +5605,21 @@ dependencies = [ "sp-runtime", "sp-state-machine", "sp-trie", - "substrate-prometheus-endpoint", ] [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "async-trait", "futures 0.3.16", "futures-timer 3.0.2", "libp2p", "log", - "parking_lot 0.11.1", + "parking_lot", "sc-client-api", + "sc-utils", "serde", "sp-api", "sp-blockchain", @@ -5542,21 +5627,18 @@ dependencies = [ "sp-core", "sp-runtime", "sp-state-machine", - "sp-utils", "substrate-prometheus-endpoint", "thiserror", - "wasm-timer", ] [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "async-trait", "derive_more", "futures 0.3.16", - "futures-timer 3.0.2", "log", "parity-scale-codec", "sc-block-builder", @@ -5573,38 +5655,33 @@ dependencies = [ "sp-consensus-slots", "sp-core", "sp-inherents", - "sp-io", "sp-keystore", "sp-runtime", - "sp-version", "substrate-prometheus-endpoint", ] [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "async-trait", "derive_more", "fork-tree", "futures 0.3.16", - "futures-timer 3.0.2", "log", "merlin", "num-bigint", "num-rational 0.2.4", "num-traits", "parity-scale-codec", - "parking_lot 0.11.1", - "pdqselect", + "parking_lot", "rand 0.7.3", "retain_mut", "sc-client-api", "sc-consensus", "sc-consensus-epochs", "sc-consensus-slots", - "sc-consensus-uncles", "sc-keystore", "sc-telemetry", "schnorrkel", @@ -5622,7 +5699,6 @@ dependencies = [ "sp-io", "sp-keystore", "sp-runtime", - "sp-utils", "sp-version", "substrate-prometheus-endpoint", ] @@ -5630,7 +5706,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "fork-tree", "parity-scale-codec", @@ -5643,7 +5719,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "assert_matches", "async-trait", @@ -5654,7 +5730,6 @@ dependencies = [ "jsonrpc-derive", "log", "parity-scale-codec", - "parking_lot 0.11.1", "sc-client-api", "sc-consensus", "sc-consensus-babe", @@ -5669,7 +5744,6 @@ dependencies = [ "sp-consensus-slots", "sp-core", "sp-inherents", - "sp-keyring", "sp-keystore", "sp-runtime", "sp-timestamp", @@ -5679,19 +5753,16 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "async-trait", "futures 0.3.16", "futures-timer 3.0.2", - "impl-trait-for-tuples", "log", "parity-scale-codec", "sc-client-api", "sc-consensus", "sc-telemetry", - "sp-api", - "sp-application-crypto", "sp-arithmetic", "sp-blockchain", "sp-consensus", @@ -5701,43 +5772,30 @@ dependencies = [ "sp-runtime", "sp-state-machine", "sp-timestamp", - "sp-trie", - "thiserror", -] - -[[package]] -name = "sc-consensus-uncles" -version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" -dependencies = [ - "sc-client-api", - "sp-authorship", - "sp-runtime", "thiserror", ] [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ - "derive_more", "lazy_static", "libsecp256k1", "log", + "lru 0.6.6", "parity-scale-codec", - "parity-wasm 0.42.2", - "parking_lot 0.11.1", + "parking_lot", "sc-executor-common", "sc-executor-wasmi", "sc-executor-wasmtime", "sp-api", "sp-core", + "sp-core-hashing-proc-macro", "sp-externalities", "sp-io", "sp-panic-handler", "sp-runtime-interface", - "sp-serializer", "sp-tasks", "sp-trie", "sp-version", @@ -5748,9 +5806,10 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "derive_more", + "environmental", "parity-scale-codec", "pwasm-utils", "sc-allocator", @@ -5765,12 +5824,13 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "log", "parity-scale-codec", "sc-allocator", "sc-executor-common", + "scoped-tls", "sp-core", "sp-runtime-interface", "sp-wasm-interface", @@ -5780,17 +5840,15 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "cfg-if 1.0.0", "libc", "log", "parity-scale-codec", "parity-wasm 0.42.2", - "pwasm-utils", "sc-allocator", "sc-executor-common", - "scoped-tls", "sp-core", "sp-runtime-interface", "sp-wasm-interface", @@ -5800,7 +5858,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "async-trait", "derive_more", @@ -5809,12 +5867,10 @@ dependencies = [ "fork-tree", "futures 0.3.16", "futures-timer 3.0.2", - "linked-hash-map", "log", "parity-scale-codec", - "parking_lot 0.11.1", - "pin-project 1.0.8", - "rand 0.7.3", + "parking_lot", + "rand 0.8.4", "sc-block-builder", "sc-client-api", "sc-consensus", @@ -5822,6 +5878,7 @@ dependencies = [ "sc-network", "sc-network-gossip", "sc-telemetry", + "sc-utils", "serde_json", "sp-api", "sp-application-crypto", @@ -5830,18 +5887,15 @@ dependencies = [ "sp-consensus", "sp-core", "sp-finality-grandpa", - "sp-inherents", "sp-keystore", "sp-runtime", - "sp-utils", "substrate-prometheus-endpoint", - "wasm-timer", ] [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "ansi_term 0.12.1", "futures 0.3.16", @@ -5853,63 +5907,36 @@ dependencies = [ "sc-transaction-pool-api", "sp-blockchain", "sp-runtime", - "wasm-timer", ] [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "async-trait", "derive_more", - "futures 0.3.16", - "futures-util", "hex", - "merlin", - "parking_lot 0.11.1", - "rand 0.7.3", + "parking_lot", "serde_json", "sp-application-crypto", "sp-core", "sp-keystore", - "subtle 2.4.1", -] - -[[package]] -name = "sc-light" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" -dependencies = [ - "hash-db", - "lazy_static", - "parity-scale-codec", - "parking_lot 0.11.1", - "sc-client-api", - "sc-executor", - "sp-api", - "sp-blockchain", - "sp-core", - "sp-externalities", - "sp-runtime", - "sp-state-machine", ] [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "async-std", "async-trait", "asynchronous-codec 0.5.0", "bitflags", - "bs58", - "bytes 1.0.1", + "bytes 1.1.0", "cid", "derive_more", "either", - "erased-serde", "fnv", "fork-tree", "futures 0.3.16", @@ -5920,11 +5947,10 @@ dependencies = [ "linked-hash-map", "linked_hash_set", "log", - "lru", - "nohash-hasher", + "lru 0.7.2", "parity-scale-codec", - "parking_lot 0.11.1", - "pin-project 1.0.8", + "parking_lot", + "pin-project", "prost", "prost-build", "rand 0.7.3", @@ -5932,85 +5958,84 @@ dependencies = [ "sc-client-api", "sc-consensus", "sc-peerset", + "sc-utils", "serde", "serde_json", - "smallvec 1.6.1", + "smallvec", "sp-arithmetic", "sp-blockchain", "sp-consensus", "sp-core", + "sp-finality-grandpa", "sp-runtime", - "sp-utils", "substrate-prometheus-endpoint", "thiserror", "unsigned-varint 0.6.0", "void", - "wasm-timer", "zeroize", ] [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "futures 0.3.16", "futures-timer 3.0.2", "libp2p", "log", - "lru", + "lru 0.7.2", "sc-network", "sp-runtime", "substrate-prometheus-endpoint", "tracing", - "wasm-timer", ] [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ - "bytes 0.5.6", + "bytes 1.1.0", "fnv", "futures 0.3.16", "futures-timer 3.0.2", "hex", - "hyper 0.13.10", - "hyper-rustls", - "log", + "hyper", + "hyper-rustls 0.22.1", "num_cpus", + "once_cell", "parity-scale-codec", - "parking_lot 0.11.1", + "parking_lot", "rand 0.7.3", "sc-client-api", - "sc-keystore", "sc-network", + "sc-utils", "sp-api", "sp-core", "sp-offchain", "sp-runtime", - "sp-utils", "threadpool", + "tracing", ] [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "futures 0.3.16", "libp2p", "log", + "sc-utils", "serde_json", - "sp-utils", "wasm-timer", ] [[package]] name = "sc-proposer-metrics" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +version = "0.10.0-dev" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -6019,7 +6044,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "futures 0.3.16", "hash-db", @@ -6027,15 +6052,14 @@ dependencies = [ "jsonrpc-pubsub", "log", "parity-scale-codec", - "parking_lot 0.11.1", + "parking_lot", "sc-block-builder", "sc-chain-spec", "sc-client-api", - "sc-executor", - "sc-keystore", "sc-rpc-api", "sc-tracing", "sc-transaction-pool-api", + "sc-utils", "serde_json", "sp-api", "sp-blockchain", @@ -6045,18 +6069,14 @@ dependencies = [ "sp-rpc", "sp-runtime", "sp-session", - "sp-state-machine", - "sp-tracing", - "sp-utils", "sp-version", ] [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ - "derive_more", "futures 0.3.16", "jsonrpc-core", "jsonrpc-core-client", @@ -6064,7 +6084,7 @@ dependencies = [ "jsonrpc-pubsub", "log", "parity-scale-codec", - "parking_lot 0.11.1", + "parking_lot", "sc-chain-spec", "sc-transaction-pool-api", "serde", @@ -6074,46 +6094,44 @@ dependencies = [ "sp-runtime", "sp-tracing", "sp-version", + "thiserror", ] [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ - "futures 0.1.31", + "futures 0.3.16", "jsonrpc-core", "jsonrpc-http-server", "jsonrpc-ipc-server", "jsonrpc-pubsub", "jsonrpc-ws-server", "log", - "serde", "serde_json", - "sp-runtime", "substrate-prometheus-endpoint", + "tokio", ] [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "async-trait", "directories", "exit-future", - "futures 0.1.31", "futures 0.3.16", "futures-timer 3.0.2", "hash-db", "jsonrpc-core", "jsonrpc-pubsub", - "lazy_static", "log", "parity-scale-codec", "parity-util-mem", - "parking_lot 0.11.1", - "pin-project 1.0.8", + "parking_lot", + "pin-project", "rand 0.7.3", "sc-block-builder", "sc-chain-spec", @@ -6123,7 +6141,6 @@ dependencies = [ "sc-executor", "sc-informant", "sc-keystore", - "sc-light", "sc-network", "sc-offchain", "sc-rpc", @@ -6132,6 +6149,7 @@ dependencies = [ "sc-tracing", "sc-transaction-pool", "sc-transaction-pool-api", + "sc-utils", "serde", "serde_json", "sp-api", @@ -6142,7 +6160,6 @@ dependencies = [ "sp-core", "sp-externalities", "sp-inherents", - "sp-io", "sp-keystore", "sp-runtime", "sp-session", @@ -6152,94 +6169,84 @@ dependencies = [ "sp-transaction-pool", "sp-transaction-storage-proof", "sp-trie", - "sp-utils", "sp-version", "substrate-prometheus-endpoint", "tempfile", "thiserror", + "tokio", "tracing", "tracing-futures", - "wasm-timer", ] [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "log", "parity-scale-codec", "parity-util-mem", "parity-util-mem-derive", - "parking_lot 0.11.1", + "parking_lot", "sc-client-api", "sp-core", - "thiserror", ] [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "chrono", "futures 0.3.16", "libp2p", "log", - "parking_lot 0.11.1", - "pin-project 1.0.8", + "parking_lot", + "pin-project", "rand 0.7.3", "serde", "serde_json", - "take_mut", "thiserror", - "void", "wasm-timer", ] [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "ansi_term 0.12.1", "atty", - "erased-serde", + "chrono", "lazy_static", + "libc", "log", "once_cell", - "parking_lot 0.11.1", + "parking_lot", "regex", "rustc-hash", "sc-client-api", "sc-rpc-server", - "sc-telemetry", "sc-tracing-proc-macro", "serde", - "serde_json", "sp-api", - "sp-block-builder", "sp-blockchain", "sp-core", "sp-rpc", "sp-runtime", - "sp-storage", "sp-tracing", "thiserror", "tracing", "tracing-log", "tracing-subscriber", - "wasm-bindgen", - "wasm-timer", - "web-sys", ] [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -6248,19 +6255,19 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ - "derive_more", "futures 0.3.16", "intervalier", "linked-hash-map", "log", "parity-scale-codec", "parity-util-mem", - "parking_lot 0.11.1", + "parking_lot", "retain_mut", "sc-client-api", "sc-transaction-pool-api", + "sc-utils", "serde", "sp-api", "sp-blockchain", @@ -6268,47 +6275,56 @@ dependencies = [ "sp-runtime", "sp-tracing", "sp-transaction-pool", - "sp-utils", "substrate-prometheus-endpoint", "thiserror", - "wasm-timer", ] [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "derive_more", "futures 0.3.16", "log", - "parity-scale-codec", "serde", "sp-blockchain", "sp-runtime", "thiserror", ] +[[package]] +name = "sc-utils" +version = "4.0.0-dev" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" +dependencies = [ + "futures 0.3.16", + "futures-timer 3.0.2", + "lazy_static", + "prometheus", +] + [[package]] name = "scale-info" -version = "0.10.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2e62ff266e136db561a007c84569985805f84a1d5a08278e52c36aacb6e061b" +checksum = "5c55b744399c25532d63a0d2789b109df8d46fc93752d46b0782991a931a782f" dependencies = [ "bitvec 0.20.4", "cfg-if 1.0.0", "derive_more", "parity-scale-codec", "scale-info-derive", + "serde", ] [[package]] name = "scale-info-derive" -version = "0.7.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b648fa291891a4c80187a25532f6a7d96b82c70353e30b868b14632b8fe043d6" +checksum = "baeb2780690380592f86205aa4ee49815feb2acad8c2f59e6dd207148c3f1fcd" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -6338,7 +6354,7 @@ dependencies = [ "rand 0.7.3", "rand_core 0.5.1", "sha2 0.8.2", - "subtle 2.4.1", + "subtle", "zeroize", ] @@ -6365,19 +6381,29 @@ dependencies = [ ] [[package]] -name = "secrecy" +name = "sct" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0673d6a6449f5e7d12a1caf424fd9363e2af3a4953023ed455e3c4beef4597c0" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "secrecy" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" dependencies = [ "zeroize", ] [[package]] name = "security-framework" -version = "1.0.0" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad502866817f0575705bd7be36e2b2535cc33262d493aa733a2ec862baa2bc2b" +checksum = "525bc1abfda2e1998d152c45cf13e696f76d0a4972310b22fac1658b05df7c87" dependencies = [ "bitflags", "core-foundation", @@ -6388,9 +6414,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "1.0.0" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51ceb04988b17b6d1dcd555390fa822ca5637b4a14e1f5099f13d351bed4d6c7" +checksum = "a9dd14d83160b528b7bfd66439110573efcfbe281b17fc2ca9f39f550d619c7e" dependencies = [ "core-foundation-sys", "libc", @@ -6421,6 +6447,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" dependencies = [ "semver-parser 0.10.2", +] + +[[package]] +name = "semver" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012" +dependencies = [ "serde", ] @@ -6441,18 +6475,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.127" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f03b9878abf6d14e6779d3f24f07b2cfa90352cfec4acc5aab8f1ac7f146fae8" +checksum = "97565067517b60e2d1ea8b268e59ce036de907ac523ad83a0475da04e818989a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.127" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a024926d3432516606328597e0f224a51355a493b49fdd67e9209187cbe55ecc" +checksum = "ed201699328568d8d08208fdd080e3ff594e6c422e438b6705905da01005d537" dependencies = [ "proc-macro2", "quote", @@ -6461,11 +6495,11 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.66" +version = "1.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "336b10da19a12ad094b59d870ebde26a45402e5b470add4b5fd03c5048a32127" +checksum = "ee2bb9cd061c5865d345bb02ca49fcef1391741b672b54a0bf7b679badec3142" dependencies = [ - "itoa", + "itoa 1.0.1", "ryu", "serde", ] @@ -6490,7 +6524,7 @@ checksum = "1a0c8611594e2ab4ebbf06ec7cbbf0a99450b8570e96cbf5188b5d5f6ef18d81" dependencies = [ "block-buffer 0.9.0", "cfg-if 1.0.0", - "cpufeatures", + "cpufeatures 0.1.5", "digest 0.9.0", "opaque-debug 0.3.0", ] @@ -6509,13 +6543,13 @@ dependencies = [ [[package]] name = "sha2" -version = "0.9.5" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b362ae5752fd2137731f9fa25fd4d9058af34666ca1966fb969119cc35719f12" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ "block-buffer 0.9.0", "cfg-if 1.0.0", - "cpufeatures", + "cpufeatures 0.2.1", "digest 0.9.0", "opaque-debug 0.3.0", ] @@ -6590,45 +6624,33 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c307a32c1c5c437f38c7fd45d753050587732ba8628319fbdf12a7e289ccc590" -[[package]] -name = "slog" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06" -dependencies = [ - "erased-serde", -] - [[package]] name = "smallvec" -version = "0.6.14" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97fcaeba89edba30f044a10c6a3cc39df9c3f17d7cd829dd1446cab35f890e0" -dependencies = [ - "maybe-uninit", -] +checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309" [[package]] -name = "smallvec" -version = "1.6.1" +name = "snap" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" +checksum = "45456094d1983e2ee2a18fdfebce3189fa451699d0502cb8e3b49dba5ba41451" [[package]] name = "snow" -version = "0.7.2" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "795dd7aeeee24468e5a32661f6d27f7b5cbed802031b2d7640c7b10f8fb2dd50" +checksum = "6142f7c25e94f6fd25a32c3348ec230df9109b463f59c8c7acc4bd34936babb7" dependencies = [ "aes-gcm", "blake2", "chacha20poly1305", - "rand 0.7.3", - "rand_core 0.5.1", + "rand 0.8.4", + "rand_core 0.6.3", "ring", - "rustc_version 0.2.3", - "sha2 0.9.5", - "subtle 2.4.1", + "rustc_version 0.3.3", + "sha2 0.9.9", + "subtle", "x25519-dalek", ] @@ -6655,24 +6677,24 @@ dependencies = [ [[package]] name = "soketto" -version = "0.4.2" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5c71ed3d54db0a699f4948e1bb3e45b450fa31fe602621dee6680361d569c88" +checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" dependencies = [ - "base64 0.12.3", - "bytes 0.5.6", + "base64", + "bytes 1.1.0", "flate2", "futures 0.3.16", "httparse", "log", - "rand 0.7.3", + "rand 0.8.4", "sha-1 0.9.7", ] [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "hash-db", "log", @@ -6689,10 +6711,10 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "blake2-rfc", - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -6700,10 +6722,11 @@ dependencies = [ [[package]] name = "sp-application-crypto" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +version = "4.0.0" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "parity-scale-codec", + "scale-info", "serde", "sp-core", "sp-io", @@ -6712,12 +6735,13 @@ dependencies = [ [[package]] name = "sp-arithmetic" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +version = "4.0.0" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "integer-sqrt", "num-traits", "parity-scale-codec", + "scale-info", "serde", "sp-debug-derive", "sp-std", @@ -6727,7 +6751,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "async-trait", "parity-scale-codec", @@ -6739,7 +6763,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "parity-scale-codec", "sp-api", @@ -6751,13 +6775,13 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "futures 0.3.16", "log", - "lru", + "lru 0.7.2", "parity-scale-codec", - "parking_lot 0.11.1", + "parking_lot", "sp-api", "sp-consensus", "sp-database", @@ -6769,36 +6793,30 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "async-trait", "futures 0.3.16", "futures-timer 3.0.2", "log", "parity-scale-codec", - "parking_lot 0.11.1", - "serde", - "sp-api", "sp-core", "sp-inherents", "sp-runtime", "sp-state-machine", "sp-std", - "sp-trie", - "sp-utils", "sp-version", - "substrate-prometheus-endpoint", "thiserror", - "wasm-timer", ] [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "async-trait", "parity-scale-codec", + "scale-info", "sp-api", "sp-application-crypto", "sp-consensus", @@ -6812,11 +6830,12 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "async-trait", "merlin", "parity-scale-codec", + "scale-info", "serde", "sp-api", "sp-application-crypto", @@ -6834,9 +6853,11 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "parity-scale-codec", + "scale-info", + "serde", "sp-arithmetic", "sp-runtime", ] @@ -6844,7 +6865,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -6855,10 +6876,11 @@ dependencies = [ [[package]] name = "sp-core" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +version = "4.1.0-dev" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "base58", + "bitflags", "blake2-rfc", "byteorder", "dyn-clonable", @@ -6875,19 +6897,22 @@ dependencies = [ "num-traits", "parity-scale-codec", "parity-util-mem", - "parking_lot 0.11.1", + "parking_lot", "primitive-types", "rand 0.7.3", "regex", + "scale-info", "schnorrkel", "secrecy", "serde", - "sha2 0.9.5", + "sha2 0.9.9", + "sp-core-hashing", "sp-debug-derive", "sp-externalities", "sp-runtime-interface", "sp-std", "sp-storage", + "ss58-registry", "substrate-bip39", "thiserror", "tiny-bip39", @@ -6897,19 +6922,43 @@ dependencies = [ "zeroize", ] +[[package]] +name = "sp-core-hashing" +version = "4.0.0" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" +dependencies = [ + "blake2-rfc", + "byteorder", + "sha2 0.9.9", + "sp-std", + "tiny-keccak", + "twox-hash", +] + +[[package]] +name = "sp-core-hashing-proc-macro" +version = "4.0.0-dev" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" +dependencies = [ + "proc-macro2", + "quote", + "sp-core-hashing", + "syn", +] + [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "kvdb", - "parking_lot 0.11.1", + "parking_lot", ] [[package]] name = "sp-debug-derive" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +version = "4.0.0" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "proc-macro2", "quote", @@ -6918,8 +6967,8 @@ dependencies = [ [[package]] name = "sp-externalities" -version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +version = "0.10.0" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "environmental", "parity-scale-codec", @@ -6930,11 +6979,12 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "finality-grandpa", "log", "parity-scale-codec", + "scale-info", "serde", "sp-api", "sp-application-crypto", @@ -6947,7 +6997,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -6960,19 +7010,18 @@ dependencies = [ [[package]] name = "sp-io" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +version = "4.0.0" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "futures 0.3.16", "hash-db", "libsecp256k1", "log", "parity-scale-codec", - "parking_lot 0.11.1", + "parking_lot", "sp-core", "sp-externalities", "sp-keystore", - "sp-maybe-compressed-blob", "sp-runtime-interface", "sp-state-machine", "sp-std", @@ -6986,7 +7035,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "lazy_static", "sp-core", @@ -6996,15 +7045,15 @@ dependencies = [ [[package]] name = "sp-keystore" -version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +version = "0.10.0" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "async-trait", "derive_more", "futures 0.3.16", "merlin", "parity-scale-codec", - "parking_lot 0.11.1", + "parking_lot", "schnorrkel", "serde", "sp-core", @@ -7013,17 +7062,16 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +version = "4.1.0-dev" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ - "ruzstd", "zstd", ] [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "sp-api", "sp-core", @@ -7032,27 +7080,28 @@ dependencies = [ [[package]] name = "sp-panic-handler" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +version = "4.0.0" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "backtrace", + "lazy_static", + "regex", ] [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "rustc-hash", "serde", "sp-core", - "tracing-core", ] [[package]] name = "sp-runtime" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +version = "4.0.0" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "either", "hash256-std-hasher", @@ -7061,7 +7110,9 @@ dependencies = [ "parity-scale-codec", "parity-util-mem", "paste", + "primitive-types", "rand 0.7.3", + "scale-info", "serde", "sp-application-crypto", "sp-arithmetic", @@ -7072,8 +7123,8 @@ dependencies = [ [[package]] name = "sp-runtime-interface" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +version = "4.1.0-dev" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -7089,11 +7140,11 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +version = "4.0.0" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "Inflector", - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -7101,8 +7152,8 @@ dependencies = [ [[package]] name = "sp-serializer" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +version = "4.0.0-dev" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "serde", "serde_json", @@ -7111,9 +7162,10 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "parity-scale-codec", + "scale-info", "sp-api", "sp-core", "sp-runtime", @@ -7124,25 +7176,26 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "parity-scale-codec", + "scale-info", "sp-runtime", "sp-std", ] [[package]] name = "sp-state-machine" -version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +version = "0.10.0" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "hash-db", "log", "num-traits", "parity-scale-codec", - "parking_lot 0.11.1", + "parking_lot", "rand 0.7.3", - "smallvec 1.6.1", + "smallvec", "sp-core", "sp-externalities", "sp-panic-handler", @@ -7156,13 +7209,13 @@ dependencies = [ [[package]] name = "sp-std" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +version = "4.0.0" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" [[package]] name = "sp-storage" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +version = "4.0.0" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "impl-serde", "parity-scale-codec", @@ -7175,7 +7228,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "log", "sp-core", @@ -7188,7 +7241,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -7199,21 +7252,14 @@ dependencies = [ "sp-runtime", "sp-std", "thiserror", - "wasm-timer", ] [[package]] name = "sp-tracing" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +version = "4.0.0" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ - "erased-serde", - "log", "parity-scale-codec", - "parking_lot 0.10.2", - "serde", - "serde_json", - "slog", "sp-std", "tracing", "tracing-core", @@ -7223,7 +7269,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "sp-api", "sp-runtime", @@ -7232,11 +7278,12 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "async-trait", "log", "parity-scale-codec", + "scale-info", "sp-core", "sp-inherents", "sp-runtime", @@ -7246,39 +7293,30 @@ dependencies = [ [[package]] name = "sp-trie" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +version = "4.0.0" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "hash-db", "memory-db", "parity-scale-codec", + "scale-info", "sp-core", "sp-std", "trie-db", "trie-root", ] -[[package]] -name = "sp-utils" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" -dependencies = [ - "futures 0.3.16", - "futures-core", - "futures-timer 3.0.2", - "lazy_static", - "prometheus", -] - [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "impl-serde", "parity-scale-codec", "parity-wasm 0.42.2", + "scale-info", "serde", + "sp-core-hashing-proc-macro", "sp-runtime", "sp-std", "sp-version-proc-macro", @@ -7288,10 +7326,9 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "parity-scale-codec", - "proc-macro-crate 1.0.0", "proc-macro2", "quote", "syn", @@ -7299,13 +7336,15 @@ dependencies = [ [[package]] name = "sp-wasm-interface" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +version = "4.1.0-dev" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "impl-trait-for-tuples", + "log", "parity-scale-codec", "sp-std", "wasmi", + "wasmtime", ] [[package]] @@ -7314,6 +7353,20 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +[[package]] +name = "ss58-registry" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c83f0afe7e571565ef9aae7b0e4fb30fcaec4ebb9aea2f00489b772782aa03a4" +dependencies = [ + "Inflector", + "proc-macro2", + "quote", + "serde", + "serde_json", + "unicode-xid", +] + [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -7340,35 +7393,22 @@ dependencies = [ ] [[package]] -name = "stream-cipher" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c80e15f898d8d8f25db24c253ea615cc14acf418ff307822995814e7d42cfa89" -dependencies = [ - "block-cipher", - "generic-array 0.14.4", -] - -[[package]] -name = "string" -version = "0.2.1" +name = "strsim" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" -dependencies = [ - "bytes 0.4.12", -] +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] name = "strsim" -version = "0.8.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "structopt" -version = "0.3.22" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69b041cdcb67226aca307e6e7be44c8806423d83e018bd662360a93dabce4d71" +checksum = "40b9788f4202aa75c240ecc9c15c65185e6a39ccdeb0fd5d008b98825464c87c" dependencies = [ "clap", "lazy_static", @@ -7377,9 +7417,9 @@ dependencies = [ [[package]] name = "structopt-derive" -version = "0.4.15" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7813934aecf5f51a54775e00068c237de98489463968231a51746bbbc03f9c10" +checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0" dependencies = [ "heck", "proc-macro-error", @@ -7390,18 +7430,18 @@ dependencies = [ [[package]] name = "strum" -version = "0.20.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7318c509b5ba57f18533982607f24070a55d353e90d4cae30c467cdb2ad5ac5c" +checksum = "f7ac893c7d471c8a21f31cfe213ec4f6d9afeed25537c772e08ef3f005f8729e" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.20.1" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee8bc6b87a5112aeeab1f4a9f7ab634fe6cbefc4850006df31267f4cfb9e3149" +checksum = "339f799d8b549e3744c7ac7feb216383e4005d94bdb22561b3ab8f3b808ae9fb" dependencies = [ "heck", "proc-macro2", @@ -7411,21 +7451,21 @@ dependencies = [ [[package]] name = "substrate-bip39" -version = "0.4.2" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bed6646a0159b9935b5d045611560eeef842b78d7adc3ba36f5ca325a13a0236" +checksum = "49eee6965196b32f882dd2ee85a92b1dbead41b04e53907f269de3b0dc04733c" dependencies = [ - "hmac 0.7.1", - "pbkdf2 0.3.0", + "hmac 0.11.0", + "pbkdf2 0.8.0", "schnorrkel", - "sha2 0.8.2", + "sha2 0.9.9", "zeroize", ] [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "platforms", ] @@ -7433,7 +7473,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.16", @@ -7445,7 +7485,6 @@ dependencies = [ "sc-client-api", "sc-rpc-api", "sc-transaction-pool-api", - "serde", "sp-api", "sp-block-builder", "sp-blockchain", @@ -7455,25 +7494,24 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +version = "0.10.0-dev" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "async-std", "derive_more", "futures-util", - "hyper 0.13.10", + "hyper", "log", "prometheus", - "tokio 0.2.25", + "tokio", ] [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?tag=monthly-2021-08#4d28ebeb8b027ca0227fe7779c5beb70a7b56467" +source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-01#f8ab3365a7feb0558c86899bd1d0a1ea249587a2" dependencies = [ "ansi_term 0.12.1", - "atty", "build-helper", "cargo_metadata", "sp-maybe-compressed-blob", @@ -7483,23 +7521,80 @@ dependencies = [ "wasm-gc-api", ] -[[package]] -name = "subtle" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" - [[package]] name = "subtle" version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +[[package]] +name = "subxt" +version = "0.15.0" +source = "git+https://github.com/librelois/subxt.git?branch=duniter-monthly-2022-01#0e3e6bf872ee9e3284a48a8f450721d5855a2020" +dependencies = [ + "async-trait", + "bitvec 0.20.4", + "chameleon", + "frame-metadata", + "futures 0.3.16", + "hex", + "jsonrpsee", + "log", + "num-traits", + "parity-scale-codec", + "scale-info", + "serde", + "serde_json", + "sp-core", + "sp-runtime", + "sp-version", + "subxt-macro", + "thiserror", + "url 2.2.2", +] + +[[package]] +name = "subxt-codegen" +version = "0.2.0" +source = "git+https://github.com/librelois/subxt.git?branch=duniter-monthly-2022-01#0e3e6bf872ee9e3284a48a8f450721d5855a2020" +dependencies = [ + "async-trait", + "darling", + "frame-metadata", + "heck", + "parity-scale-codec", + "proc-macro-crate 0.1.5", + "proc-macro-error", + "proc-macro2", + "quote", + "scale-info", + "syn", +] + +[[package]] +name = "subxt-macro" +version = "0.1.0" +source = "git+https://github.com/librelois/subxt.git?branch=duniter-monthly-2022-01#0e3e6bf872ee9e3284a48a8f450721d5855a2020" +dependencies = [ + "async-trait", + "darling", + "frame-metadata", + "heck", + "parity-scale-codec", + "proc-macro-crate 0.1.5", + "proc-macro-error", + "proc-macro2", + "quote", + "scale-info", + "subxt-codegen", + "syn", +] + [[package]] name = "syn" -version = "1.0.74" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1873d832550d4588c3dbc20f01361ab00bfe741048f71e3fecf145a7cc18b29c" +checksum = "a684ac3dcd8913827e18cd09a68384ee66c1de24157e3c556c9ab16d85695fb7" dependencies = [ "proc-macro2", "quote", @@ -7518,12 +7613,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "take_mut" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" - [[package]] name = "tap" version = "1.0.1" @@ -7545,7 +7634,7 @@ dependencies = [ "cfg-if 1.0.0", "libc", "rand 0.8.4", - "redox_syscall 0.2.10", + "redox_syscall", "remove_dir_all", "winapi 0.3.9", ] @@ -7570,18 +7659,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.26" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93119e4feac1cbe6c798c34d3a53ea0026b0b1de6a120deef895137c0529bfe2" +checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.26" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "060d69a0afe7796bf42e9e2ff91f5ee691fb15c53d38b4b62a9a53eb23164745" +checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" dependencies = [ "proc-macro2", "quote", @@ -7619,9 +7708,9 @@ dependencies = [ [[package]] name = "tiny-bip39" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9e44c4759bae7f1032e286a7ef990bd9ed23fe831b7eeba0beb97484c2e59b8" +checksum = "ffc59cb9dfc85bb312c3a78fd6aa8a8582e310b0fa885d5bb877f6dcc601839d" dependencies = [ "anyhow", "hmac 0.8.1", @@ -7629,9 +7718,10 @@ dependencies = [ "pbkdf2 0.4.0", "rand 0.7.3", "rustc-hash", - "sha2 0.9.5", + "sha2 0.9.9", "thiserror", "unicode-normalization", + "wasm-bindgen", "zeroize", ] @@ -7661,265 +7751,79 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "mio", - "num_cpus", - "tokio-codec", - "tokio-current-thread", - "tokio-executor", - "tokio-fs", - "tokio-io", - "tokio-reactor", - "tokio-sync", - "tokio-tcp", - "tokio-threadpool", - "tokio-timer", - "tokio-udp", - "tokio-uds", -] - -[[package]] -name = "tokio" -version = "0.2.25" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6703a273949a90131b290be1fe7b039d0fc884aa1935860dfcbe056f28cd8092" +checksum = "fbbf1c778ec206785635ce8ad57fe52b3009ae9e0c9f574a728f3049d3e55838" dependencies = [ - "bytes 0.5.6", - "fnv", - "futures-core", - "iovec", - "lazy_static", + "bytes 1.1.0", "libc", "memchr", - "mio", - "mio-uds", + "mio 0.7.14", "num_cpus", - "pin-project-lite 0.1.12", + "once_cell", + "pin-project-lite 0.2.7", "signal-hook-registry", - "slab", + "tokio-macros", "winapi 0.3.9", ] [[package]] -name = "tokio-buf" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" -dependencies = [ - "bytes 0.4.12", - "either", - "futures 0.1.31", -] - -[[package]] -name = "tokio-codec" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "tokio-io", -] - -[[package]] -name = "tokio-current-thread" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e" -dependencies = [ - "futures 0.1.31", - "tokio-executor", -] - -[[package]] -name = "tokio-executor" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671" -dependencies = [ - "crossbeam-utils 0.7.2", - "futures 0.1.31", -] - -[[package]] -name = "tokio-fs" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4" -dependencies = [ - "futures 0.1.31", - "tokio-io", - "tokio-threadpool", -] - -[[package]] -name = "tokio-io" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "log", -] - -[[package]] -name = "tokio-named-pipes" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d282d483052288b2308ba5ee795f5673b159c9bdf63c385a05609da782a5eae" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "mio", - "mio-named-pipes", - "tokio 0.1.22", -] - -[[package]] -name = "tokio-reactor" -version = "0.1.12" +name = "tokio-macros" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351" +checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7" dependencies = [ - "crossbeam-utils 0.7.2", - "futures 0.1.31", - "lazy_static", - "log", - "mio", - "num_cpus", - "parking_lot 0.9.0", - "slab", - "tokio-executor", - "tokio-io", - "tokio-sync", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "tokio-rustls" -version = "0.14.1" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e12831b255bcfa39dc0436b01e19fea231a37db570686c06ee72c423479f889a" +checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6" dependencies = [ - "futures-core", - "rustls 0.18.1", - "tokio 0.2.25", - "webpki", + "rustls 0.19.1", + "tokio", + "webpki 0.21.4", ] [[package]] -name = "tokio-service" -version = "0.1.0" +name = "tokio-rustls" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24da22d077e0f15f55162bdbdc661228c1581892f52074fb242678d015b45162" +checksum = "a27d5f2b839802bd8267fa19b0530f5a08b9c08cd417976be2a65d130fe1c11b" dependencies = [ - "futures 0.1.31", + "rustls 0.20.2", + "tokio", + "webpki 0.22.0", ] [[package]] -name = "tokio-sync" +name = "tokio-stream" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee" -dependencies = [ - "fnv", - "futures 0.1.31", -] - -[[package]] -name = "tokio-tcp" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "iovec", - "mio", - "tokio-io", - "tokio-reactor", -] - -[[package]] -name = "tokio-threadpool" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89" -dependencies = [ - "crossbeam-deque 0.7.4", - "crossbeam-queue", - "crossbeam-utils 0.7.2", - "futures 0.1.31", - "lazy_static", - "log", - "num_cpus", - "slab", - "tokio-executor", -] - -[[package]] -name = "tokio-timer" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296" -dependencies = [ - "crossbeam-utils 0.7.2", - "futures 0.1.31", - "slab", - "tokio-executor", -] - -[[package]] -name = "tokio-udp" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "log", - "mio", - "tokio-codec", - "tokio-io", - "tokio-reactor", -] - -[[package]] -name = "tokio-uds" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab57a4ac4111c8c9dbcf70779f6fc8bc35ae4b2454809febac840ad19bd7e4e0" +checksum = "50145484efff8818b5ccd256697f36863f587da82cf8b409c53adf1e840798e3" dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "iovec", - "libc", - "log", - "mio", - "mio-uds", - "tokio-codec", - "tokio-io", - "tokio-reactor", + "futures-core", + "pin-project-lite 0.2.7", + "tokio", ] [[package]] name = "tokio-util" -version = "0.3.1" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499" +checksum = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0" dependencies = [ - "bytes 0.5.6", + "bytes 1.1.0", "futures-core", + "futures-io", "futures-sink", "log", - "pin-project-lite 0.1.12", - "tokio 0.2.25", + "pin-project-lite 0.2.7", + "tokio", ] [[package]] @@ -7939,12 +7843,11 @@ checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" [[package]] name = "tracing" -version = "0.1.26" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d" +checksum = "375a639232caf30edfc78e8d89b2d4c375515393e7af7e16f01cd96917fb2105" dependencies = [ "cfg-if 1.0.0", - "log", "pin-project-lite 0.2.7", "tracing-attributes", "tracing-core", @@ -7952,9 +7855,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.15" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42e6fa53307c8a17e4ccd4dc81cf5ec38db9209f59b222210375b54ee40d1e2" +checksum = "f4f480b8f81512e825f337ad51e94c1eb5d3bbdf2b363dcd01e2b19a9ffe3f8e" dependencies = [ "proc-macro2", "quote", @@ -7963,9 +7866,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.19" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ca517f43f0fb96e0c3072ed5c275fe5eece87e8cb52f4a77b69226d3b1c9df8" +checksum = "1f4ed65637b8390770814083d20756f87bfa2c21bf2f110babdc5438351746e4" dependencies = [ "lazy_static", ] @@ -7976,7 +7879,7 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" dependencies = [ - "pin-project 1.0.8", + "pin-project", "tracing", ] @@ -8003,19 +7906,20 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.2.20" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9cbe87a2fa7e35900ce5de20220a582a9483a7063811defce79d7cbd59d4cfe" +checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71" dependencies = [ "ansi_term 0.12.1", "chrono", "lazy_static", "matchers", + "parking_lot", "regex", "serde", "serde_json", "sharded-slab", - "smallvec 1.6.1", + "smallvec", "thread_local", "tracing", "tracing-core", @@ -8025,22 +7929,22 @@ dependencies = [ [[package]] name = "trie-db" -version = "0.22.6" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eac131e334e81b6b3be07399482042838adcd7957aa0010231d0813e39e02fa" +checksum = "e3ddae50680c12ef75bfbf58416ca6622fa43d879553f6cb2ed1a817346e1ffe" dependencies = [ "hash-db", "hashbrown", "log", "rustc-hex", - "smallvec 1.6.1", + "smallvec", ] [[package]] name = "trie-root" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "652931506d2c1244d7217a70b99f56718a7b4161b37f04e7cd868072a99f68cd" +checksum = "9a36c5ca3911ed3c9a5416ee6c679042064b93fc637ded67e25f92e68d783891" dependencies = [ "hash-db", ] @@ -8063,7 +7967,7 @@ dependencies = [ "lazy_static", "log", "rand 0.8.4", - "smallvec 1.6.1", + "smallvec", "thiserror", "tinyvec", "url 2.2.2", @@ -8081,9 +7985,9 @@ dependencies = [ "lazy_static", "log", "lru-cache", - "parking_lot 0.11.1", + "parking_lot", "resolv-conf", - "smallvec 1.6.1", + "smallvec", "thiserror", "trust-dns-proto", ] @@ -8094,6 +7998,12 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" +[[package]] +name = "tt-call" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e66dcbec4290c69dd03c57e76c2469ea5c7ce109c6dd4351c13055cf71ea055" + [[package]] name = "twox-hash" version = "1.6.1" @@ -8178,7 +8088,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" dependencies = [ "generic-array 0.14.4", - "subtle 2.4.1", + "subtle", ] [[package]] @@ -8194,7 +8104,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35581ff83d4101e58b582e607120c7f5ffb17e632a980b1f38334d76b36908b2" dependencies = [ "asynchronous-codec 0.5.0", - "bytes 1.0.1", + "bytes 1.1.0", "futures-io", "futures-util", ] @@ -8206,7 +8116,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f8d425fafb8cd76bc3f22aace4af471d3156301d7508f2107e98fbeae10bc7f" dependencies = [ "asynchronous-codec 0.6.0", - "bytes 1.0.1", + "bytes 1.1.0", "futures-io", "futures-util", ] @@ -8291,17 +8201,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "want" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" -dependencies = [ - "futures 0.1.31", - "log", - "try-lock", -] - [[package]] name = "want" version = "0.3.0" @@ -8409,7 +8308,7 @@ checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" dependencies = [ "futures 0.3.16", "js-sys", - "parking_lot 0.11.1", + "parking_lot", "pin-utils", "wasm-bindgen", "wasm-bindgen-futures", @@ -8418,9 +8317,9 @@ dependencies = [ [[package]] name = "wasmi" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ee05bba3d1d994652079893941a2ef9324d2b58a63c31b40678fb7eddd7a5a" +checksum = "ca00c5147c319a8ec91ec1a0edbec31e566ce2c9cc93b3f9bb86a9efd0eb795d" dependencies = [ "downcast-rs", "libc", @@ -8442,15 +8341,15 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.78.2" +version = "0.81.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52144d4c78e5cf8b055ceab8e5fa22814ce4315d6002ad32cfd914f37c12fd65" +checksum = "98930446519f63d00a836efdc22f67766ceae8dbcc1571379f2bcabc6b2b9abc" [[package]] name = "wasmtime" -version = "0.27.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b310b9d20fcf59385761d1ade7a3ef06aecc380e3d3172035b919eaf7465d9f7" +checksum = "311d06b0c49346d1fbf48a17052e844036b95a7753c1afb34e8c0af3f6b5bb13" dependencies = [ "anyhow", "backtrace", @@ -8461,38 +8360,38 @@ dependencies = [ "lazy_static", "libc", "log", + "object", "paste", "psm", + "rayon", "region", "rustc-demangle", "serde", - "smallvec 1.6.1", "target-lexicon", "wasmparser", "wasmtime-cache", + "wasmtime-cranelift", "wasmtime-environ", "wasmtime-jit", - "wasmtime-profiling", "wasmtime-runtime", "winapi 0.3.9", ] [[package]] name = "wasmtime-cache" -version = "0.27.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d14d500d5c3dc5f5c097158feee123d64b3097f0d836a2a27dff9c761c73c843" +checksum = "36147930a4995137dc096e5b17a573b446799be2bbaea433e821ce6a80abe2c5" dependencies = [ "anyhow", - "base64 0.13.0", + "base64", "bincode", "directories-next", - "errno", "file-per-thread-logger", - "libc", "log", + "rsix", "serde", - "sha2 0.9.5", + "sha2 0.9.9", "toml", "winapi 0.3.9", "zstd", @@ -8500,29 +8399,20 @@ dependencies = [ [[package]] name = "wasmtime-cranelift" -version = "0.27.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c525b39f062eada7db3c1298287b96dcb6e472b9f6b22501300b28d9fa7582f6" +checksum = "ab3083a47e1ede38aac06a1d9831640d673f9aeda0b82a64e4ce002f3432e2e7" dependencies = [ + "anyhow", "cranelift-codegen", "cranelift-entity", "cranelift-frontend", + "cranelift-native", "cranelift-wasm", - "target-lexicon", - "wasmparser", - "wasmtime-environ", -] - -[[package]] -name = "wasmtime-debug" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5d2a763e7a6fc734218e0e463196762a4f409c483063d81e0e85f96343b2e0a" -dependencies = [ - "anyhow", - "gimli 0.24.0", + "gimli 0.25.0", + "log", "more-asserts", - "object 0.24.0", + "object", "target-lexicon", "thiserror", "wasmparser", @@ -8531,91 +8421,55 @@ dependencies = [ [[package]] name = "wasmtime-environ" -version = "0.27.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f64d0c2d881c31b0d65c1f2695e022d71eb60b9fbdd336aacca28208b58eac90" +checksum = "1c2d194b655321053bc4111a1aa4ead552655c8a17d17264bc97766e70073510" dependencies = [ + "anyhow", "cfg-if 1.0.0", - "cranelift-codegen", "cranelift-entity", - "cranelift-wasm", - "gimli 0.24.0", + "gimli 0.25.0", "indexmap", "log", "more-asserts", + "object", "serde", + "target-lexicon", "thiserror", "wasmparser", + "wasmtime-types", ] [[package]] name = "wasmtime-jit" -version = "0.27.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4539ea734422b7c868107e2187d7746d8affbcaa71916d72639f53757ad707" +checksum = "864ac8dfe4ce310ac59f16fdbd560c257389cb009ee5d030ac6e30523b023d11" dependencies = [ - "addr2line 0.15.2", + "addr2line 0.16.0", "anyhow", + "bincode", "cfg-if 1.0.0", - "cranelift-codegen", - "cranelift-entity", - "cranelift-frontend", - "cranelift-native", - "cranelift-wasm", - "gimli 0.24.0", + "gimli 0.25.0", "log", "more-asserts", - "object 0.24.0", - "rayon", + "object", "region", + "rsix", "serde", "target-lexicon", "thiserror", "wasmparser", - "wasmtime-cranelift", - "wasmtime-debug", "wasmtime-environ", - "wasmtime-obj", - "wasmtime-profiling", "wasmtime-runtime", "winapi 0.3.9", ] -[[package]] -name = "wasmtime-obj" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1a8ff85246d091828e2225af521a6208ed28c997bb5c39eb697366dc2e2f2b" -dependencies = [ - "anyhow", - "more-asserts", - "object 0.24.0", - "target-lexicon", - "wasmtime-debug", - "wasmtime-environ", -] - -[[package]] -name = "wasmtime-profiling" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e24364d522dcd67c897c8fffc42e5bdfc57207bbb6d7eeade0da9d4a7d70105b" -dependencies = [ - "anyhow", - "cfg-if 1.0.0", - "lazy_static", - "libc", - "serde", - "target-lexicon", - "wasmtime-environ", - "wasmtime-runtime", -] - [[package]] name = "wasmtime-runtime" -version = "0.27.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c51e57976e8a19a18a18e002c6eb12e5769554204238e47ff155fda1809ef0f7" +checksum = "ab97da813a26b98c9abfd3b0c2d99e42f6b78b749c0646344e2e262d212d8c8b" dependencies = [ "anyhow", "backtrace", @@ -8626,15 +8480,28 @@ dependencies = [ "libc", "log", "mach", - "memoffset 0.6.4", + "memoffset", "more-asserts", "rand 0.8.4", "region", + "rsix", "thiserror", "wasmtime-environ", "winapi 0.3.9", ] +[[package]] +name = "wasmtime-types" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff94409cc3557bfbbcce6b14520ccd6bd3727e965c0fe68d63ef2c185bf379c6" +dependencies = [ + "cranelift-entity", + "serde", + "thiserror", + "wasmparser", +] + [[package]] name = "web-sys" version = "0.3.53" @@ -8655,13 +8522,32 @@ dependencies = [ "untrusted", ] +[[package]] +name = "webpki" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "webpki-roots" version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aabe153544e473b775453675851ecc86863d2a81d786d741f6b76778f2a48940" dependencies = [ - "webpki", + "webpki 0.21.4", +] + +[[package]] +name = "webpki-roots" +version = "0.22.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "552ceb903e957524388c4d3475725ff2c8b7960922063af6ce53c9a43da07449" +dependencies = [ + "webpki 0.22.0", ] [[package]] @@ -8778,16 +8664,16 @@ dependencies = [ "futures 0.3.16", "log", "nohash-hasher", - "parking_lot 0.11.1", + "parking_lot", "rand 0.8.4", "static_assertions", ] [[package]] name = "zeroize" -version = "1.4.1" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "377db0846015f7ae377174787dd452e1c5f5a9050bc6f954911d01f116daa0cd" +checksum = "d68d9dcec5f9b43a30d38c49f91dfedfaac384cb8f085faca366c26207dd1619" dependencies = [ "zeroize_derive", ] @@ -8806,18 +8692,18 @@ dependencies = [ [[package]] name = "zstd" -version = "0.6.1+zstd.1.4.9" +version = "0.9.2+zstd.1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de55e77f798f205d8561b8fe2ef57abfb6e0ff2abe7fd3c089e119cdb5631a3" +checksum = "2390ea1bf6c038c39674f22d95f0564725fc06034a47129179810b2fc58caa54" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "3.0.1+zstd.1.4.9" +version = "4.1.3+zstd.1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1387cabcd938127b30ce78c4bf00b30387dddf704e3f0881dbc4ff62b5566f8c" +checksum = "e99d81b99fb3c2c2c794e3fe56c305c63d5173a16a46b5850b07c935ffc7db79" dependencies = [ "libc", "zstd-sys", @@ -8825,9 +8711,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "1.4.20+zstd.1.4.9" +version = "1.6.2+zstd.1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebd5b733d7cf2d9447e2c3e76a5589b4f5e5ae065c22a2bc0b023cbc331b6c8e" +checksum = "2daf2f248d9ea44454bfcb2516534e8b8ad2fc91bf818a1885495fc42bc8ac9f" dependencies = [ "cc", "libc", diff --git a/Cargo.toml b/Cargo.toml index 857702b7a..9b796d044 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,8 @@ [workspace] +resolver = "2" + members = [ + 'integration-tests', 'node', 'pallets/certification', 'pallets/identity', @@ -9,7 +12,69 @@ members = [ 'runtime/gdev', 'runtime/gtest' ] -[profile.dev] -opt-level = 3 + +# The list of dependencies below (which can be both direct and indirect dependencies) are crates +# that are suspected to be CPU-intensive, and that are unlikely to require debugging (as some of +# their debug info might be missing) or to require to be frequently recompiled. We compile these +# dependencies with `opt-level=3` even in "dev" mode in order to make "dev" mode more usable. +# The majority of these crates are cryptographic libraries. +# +# This list is only relevant when running `cargo build` from within +# the Duniter-v2s workspace. +# +# If you see an error mentioning "profile package spec ... did not match any packages", it +# probably concerns this list. +# +# This list is ordered alphabetically. +[profile.dev.package] +blake2 = { opt-level = 3 } +blake2-rfc = { opt-level = 3 } +blake2b_simd = { opt-level = 3 } +chacha20poly1305 = { opt-level = 3 } +cranelift-codegen = { opt-level = 3 } +cranelift-wasm = { opt-level = 3 } +crc32fast = { opt-level = 3 } +crossbeam-deque = { opt-level = 3 } +crypto-mac = { opt-level = 3 } +curve25519-dalek = { opt-level = 3 } +ed25519-dalek = { opt-level = 3 } +flate2 = { opt-level = 3 } +futures-channel = { opt-level = 3 } +hashbrown = { opt-level = 3 } +hash-db = { opt-level = 3 } +hmac = { opt-level = 3 } +httparse = { opt-level = 3 } +integer-sqrt = { opt-level = 3 } +keccak = { opt-level = 3 } +libm = { opt-level = 3 } +librocksdb-sys = { opt-level = 3 } +libsecp256k1 = { opt-level = 3 } +libz-sys = { opt-level = 3 } +mio = { opt-level = 3 } +nalgebra = { opt-level = 3 } +num-bigint = { opt-level = 3 } +parking_lot = { opt-level = 3 } +parking_lot_core = { opt-level = 3 } +percent-encoding = { opt-level = 3 } +primitive-types = { opt-level = 3 } +ring = { opt-level = 3 } +rustls = { opt-level = 3 } +sha2 = { opt-level = 3 } +sha3 = { opt-level = 3 } +smallvec = { opt-level = 3 } +snow = { opt-level = 3 } +twox-hash = { opt-level = 3 } +uint = { opt-level = 3 } +wasmi = { opt-level = 3 } +x25519-dalek = { opt-level = 3 } +yamux = { opt-level = 3 } +zeroize = { opt-level = 3 } + [profile.release] -panic = 'unwind' +# Substrate runtime requires unwinding. +panic = "unwind" + +[patch.crates-io] +# rw-stream-sink has not been updated for 2 years and uses a too old version of pin-project (v0.4.28) +# For the project to compile, we have to patch this dependency to force the use of pin-project v1.x +rw-stream-sink = { git = "https://github.com/librelois/rw-stream-sink", branch = "master" } diff --git a/integration-tests/Cargo.toml b/integration-tests/Cargo.toml new file mode 100644 index 000000000..70f506b27 --- /dev/null +++ b/integration-tests/Cargo.toml @@ -0,0 +1,20 @@ +[package] +authors = ['Axiom-Team Developers <https://axiom-team.fr>'] +description = 'lc-core integration tests.' +edition = '2018' +homepage = 'https://substrate.dev' +license = 'AGPL-3.0' +name = 'lc-core-integration-tests' +repository = 'https://git.duniter.org/nodes/rust/lc-core-substrate' +version = '3.0.0' + +[dev-dependencies] +env_logger = "0.9.0" +parity-scale-codec = "2.3.1" +portpicker = "0.1.1" +serde_json = "1.0.64" +subxt = { git = 'https://github.com/librelois/subxt.git', branch = 'duniter-monthly-2022-01' } +tokio = { version = "1.15.0", features = ["macros"] } + +# substrate dev-dependencies +sp-keyring = { git = "https://github.com/librelois/substrate.git", branch = "duniter-monthly-2022-01" } diff --git a/integration-tests/src/balance_transfer.rs b/integration-tests/src/balance_transfer.rs new file mode 100644 index 000000000..b10897ecc --- /dev/null +++ b/integration-tests/src/balance_transfer.rs @@ -0,0 +1,52 @@ +// Copyright 2021 Axiom-Team +// +// This file is part of Substrate-Libre-Currency. +// +// Substrate-Libre-Currency is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, version 3 of the License. +// +// Substrate-Libre-Currency is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with Substrate-Libre-Currency. If not, see <https://www.gnu.org/licenses/>. + +use crate::common::*; +use sp_keyring::AccountKeyring; +use subxt::PairSigner; + +#[tokio::test] +async fn test_balance_transfer() -> Result<(), Box<dyn std::error::Error>> { + env_logger::init(); + + // Spawn a node + let (api, client, _process) = spawn_node().await; + + let alice = PairSigner::new(AccountKeyring::Alice.pair()); + let dave = AccountKeyring::Dave.to_account_id(); + + let events = create_block_with_extrinsic( + &client, + api.tx() + .balances() + .transfer(dave.clone().into(), 512) + .create_signed(&alice, ()) + .await?, + ) + .await?; + + println!( + "Balance transfer extrinsic written in blockchain, events: {:?}", + events + ); + + // verify that Bob's free Balance increased + let dave_post = api.storage().system().account(dave, None).await?; + println!("Bob's Free Balance is now {}\n", dave_post.data.free); + assert_eq!(dave_post.data.free, 512); + + Ok(()) +} diff --git a/integration-tests/src/common.rs b/integration-tests/src/common.rs new file mode 100644 index 000000000..8bd321c85 --- /dev/null +++ b/integration-tests/src/common.rs @@ -0,0 +1,93 @@ +// Copyright 2021 Axiom-Team +// +// This file is part of Substrate-Libre-Currency. +// +// Substrate-Libre-Currency is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, version 3 of the License. +// +// Substrate-Libre-Currency is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with Substrate-Libre-Currency. If not, see <https://www.gnu.org/licenses/>. + +#[subxt::subxt(runtime_metadata_path = "../resources/metadata.scale")] +pub mod node_runtime {} + +use serde_json::Value; +use std::process::Command; +use subxt::{ClientBuilder, DefaultConfig, DefaultExtra}; + +pub type Api = node_runtime::RuntimeApi<DefaultConfig, DefaultExtra<DefaultConfig>>; +pub type Client = subxt::Client<DefaultConfig>; + +pub struct Process(std::process::Child); + +impl Drop for Process { + fn drop(&mut self) { + self.0.kill().expect("node already down"); + } +} + +pub async fn spawn_node() -> (Api, Client, Process) { + let p2p_port = portpicker::pick_unused_port().expect("No ports free"); + let rpc_port = portpicker::pick_unused_port().expect("No ports free"); + let ws_port = portpicker::pick_unused_port().expect("No ports free"); + let process = Process( + Command::new("../target/debug/lc-core") + .args([ + "--execution=Native", + "--no-telemetry", + "--no-prometheus", + "--dev", + "--sealing=manual", + "--tmp", + "--port", + &p2p_port.to_string(), + "--rpc-port", + &rpc_port.to_string(), + "--ws-port", + &ws_port.to_string(), + ]) + .spawn() + .expect("failed to spawn node"), + ); + std::thread::sleep(std::time::Duration::from_secs(4)); + + let client = ClientBuilder::new() + .set_url(format!("ws://127.0.0.1:{}", ws_port)) + .build() + .await + .expect("fail to connect to node"); + let api = client.clone().to_runtime_api::<Api>(); + + (api, client, process) +} + +pub async fn create_block_with_extrinsic( + client: &Client, + extrinsic: subxt::UncheckedExtrinsic<DefaultConfig, DefaultExtra<DefaultConfig>>, +) -> Result<subxt::TransactionEvents<DefaultConfig>, subxt::Error> { + // Get a hash of the extrinsic (we'll need this later). + use subxt::sp_runtime::traits::Hash as _; + let ext_hash = <DefaultConfig as subxt::Config>::Hashing::hash_of(&extrinsic); + // Submit and watch for transaction progress. + let sub = client.rpc().watch_extrinsic(extrinsic).await?; + let watcher = subxt::TransactionProgress::new(sub, client, ext_hash); + + // Create a non-empty block + let _: Value = client + .rpc() + .client + .request( + "engine_createBlock", + &[Value::Bool(false), Value::Bool(false), Value::Null], + ) + .await?; + + // Get extrinsic events + watcher.wait_for_in_block().await?.fetch_events().await +} diff --git a/integration-tests/src/lib.rs b/integration-tests/src/lib.rs new file mode 100644 index 000000000..a076a5bfa --- /dev/null +++ b/integration-tests/src/lib.rs @@ -0,0 +1,20 @@ +// Copyright 2021 Axiom-Team +// +// This file is part of Substrate-Libre-Currency. +// +// Substrate-Libre-Currency is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, version 3 of the License. +// +// Substrate-Libre-Currency is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with Substrate-Libre-Currency. If not, see <https://www.gnu.org/licenses/>. + +#[cfg(test)] +mod balance_transfer; +#[cfg(test)] +pub mod common; diff --git a/node/Cargo.toml b/node/Cargo.toml index e02005332..f86eb00c9 100644 --- a/node/Cargo.toml +++ b/node/Cargo.toml @@ -1,10 +1,3 @@ -[features] -runtime-benchmarks = ['gdev-runtime/runtime-benchmarks'] - -[build-dependencies.substrate-build-script-utils] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' - [package] authors = ['Axiom-Team Developers <https://axiom-team.fr>'] build = 'build.rs' @@ -19,172 +12,185 @@ version = '3.0.0' [package.metadata.docs.rs] targets = ['x86_64-unknown-linux-gnu'] +[[bin]] +name = 'lc-core' + +[features] +runtime-benchmarks = ['gdev-runtime/runtime-benchmarks'] + +[build-dependencies] +substrate-build-script-utils = { git = 'https://github.com/librelois/substrate.git', branch = 'duniter-monthly-2022-01' } + +# substrate dev-dependencies +sp-keyring = { git = "https://github.com/librelois/substrate.git", branch = "duniter-monthly-2022-01" } + [dependencies] -async-io = "1.3" -futures = { version = "0.3.1", features = ["compat"] } -jsonrpc-core = '15.1.0' -log = "0.4" -maplit = '1.0.2' + +# local dependencies common-runtime = { path = '../runtime/common' } g1-runtime = { path = '../runtime/g1' } gdev-runtime = { path = '../runtime/gdev' } gtest-runtime = { path = '../runtime/gtest' } + +# crates.io dependencies +async-io = "1.3" +futures = { version = "0.3.1", features = ["compat"] } +jsonrpc-core = '18.0.0' +log = "0.4" +maplit = '1.0.2' +serde_json = "1.0.64" structopt = '0.3.8' +# substrate dependencies + [dependencies.frame-benchmarking] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.frame-benchmarking-cli] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.pallet-grandpa] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.pallet-transaction-payment-rpc] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.pallet-transaction-payment-rpc-runtime-api] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sc-basic-authorship] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sc-chain-spec] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sc-cli] features = ['wasmtime'] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sc-client-api] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sc-consensus] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sc-consensus-aura] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sc-consensus-manual-seal] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sc-executor] features = ['wasmtime'] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sc-finality-grandpa] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sc-keystore] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sc-rpc] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sc-rpc-api] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sc-service] features = ['wasmtime'] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sc-telemetry] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sc-transaction-pool] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sc-transaction-pool-api] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' - -[dependencies.serde_json] -version = '1.0.64' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-api] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-block-builder] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-blockchain] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-consensus] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-consensus-aura] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-core] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-finality-grandpa] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-offchain] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-inherents] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-runtime] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-session] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-storage] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-timestamp] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-transaction-pool] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-trie] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.substrate-frame-rpc-system] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' - -[[bin]] -name = 'lc-core' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' diff --git a/node/src/chain_spec/gdev.rs b/node/src/chain_spec/gdev.rs index 254baa853..34f65b4b0 100644 --- a/node/src/chain_spec/gdev.rs +++ b/node/src/chain_spec/gdev.rs @@ -98,10 +98,13 @@ fn devnet_genesis( system: SystemConfig { // Add Wasm runtime to storage. code: wasm_binary.to_vec(), - changes_trie_config: Default::default(), }, balances: BalancesConfig { - balances: Vec::with_capacity(0), + balances: initial_identities + .values() + .cloned() + .map(|account_id| (account_id, 1_000)) + .collect(), }, grandpa: GrandpaConfig { authorities: initial_authorities @@ -111,7 +114,7 @@ fn devnet_genesis( }, sudo: SudoConfig { // Assign network admin rights. - key: root_key, + key: Some(root_key), }, identity: IdentityConfig { identities: initial_identities @@ -141,7 +144,7 @@ fn devnet_genesis( }, universal_dividend: UniversalDividendConfig { first_ud: 1_000, - initial_monetary_mass: 0, + initial_monetary_mass: initial_identities.len() as u64 * 1_000, }, } } diff --git a/node/src/chain_spec/gtest.rs b/node/src/chain_spec/gtest.rs index 100e251a5..7326f1c78 100644 --- a/node/src/chain_spec/gtest.rs +++ b/node/src/chain_spec/gtest.rs @@ -148,7 +148,6 @@ fn devnet_genesis( system: SystemConfig { // Add Wasm runtime to storage. code: wasm_binary.to_vec(), - changes_trie_config: Default::default(), }, balances: BalancesConfig { // Configure endowed accounts with initial balance of INITIAL_BALANCE. @@ -165,7 +164,7 @@ fn devnet_genesis( }, sudo: SudoConfig { // Assign network admin rights. - key: root_key, + key: Some(root_key), }, identity: IdentityConfig { identities: initial_identities @@ -211,7 +210,6 @@ fn testnet_genesis( system: SystemConfig { // Add Wasm runtime to storage. code: wasm_binary.to_vec(), - changes_trie_config: Default::default(), }, balances: BalancesConfig { // Configure endowed accounts with initial balance of INITIAL_BALANCE. @@ -228,7 +226,7 @@ fn testnet_genesis( }, sudo: SudoConfig { // Assign network admin rights. - key: root_key, + key: Some(root_key), }, identity: IdentityConfig { identities: initial_identities diff --git a/node/src/cli.rs b/node/src/cli.rs index 12d504002..60d8cfe38 100644 --- a/node/src/cli.rs +++ b/node/src/cli.rs @@ -82,8 +82,9 @@ impl FromStr for Sealing { "instant" => Self::Instant, "manual" => Self::Manual, s => { - let millis = - u64::from_str_radix(s, 10).map_err(|_| "couldn't decode sealing param")?; + let millis = s + .parse::<u64>() + .map_err(|_| "couldn't decode sealing param")?; Self::Interval(millis) } }) diff --git a/node/src/command.rs b/node/src/command.rs index 3423ddd6b..f506250c4 100644 --- a/node/src/command.rs +++ b/node/src/command.rs @@ -16,10 +16,10 @@ // limitations under the License. use crate::cli::{Cli, Subcommand}; -use crate::service::{GDevExecutor, GTestExecutor, IdentifyVariant}; +use crate::service::{G1Executor, GDevExecutor, GTestExecutor, IdentifyVariant}; use crate::{chain_spec, service}; use gdev_runtime::Block; -use sc_cli::{ChainSpec, Role, RuntimeVersion, SubstrateCli}; +use sc_cli::{ChainSpec, RuntimeVersion, SubstrateCli}; impl SubstrateCli for Cli { fn impl_name() -> String { @@ -168,7 +168,7 @@ pub fn run() -> sc_cli::Result<()> { let chain_spec = &runner.config().chain_spec; if chain_spec.is_main() { - todo!() + runner.sync_run(|config| cmd.run::<Block, G1Executor>(config)) } else if chain_spec.is_test() { runner.sync_run(|config| cmd.run::<Block, GTestExecutor>(config)) } else if chain_spec.is_dev() { @@ -186,17 +186,11 @@ pub fn run() -> sc_cli::Result<()> { let runner = cli.create_runner(&cli.run)?; runner.run_node_until_exit(|config| async move { if config.chain_spec.is_main() { - todo!() + service::new_full::<gtest_runtime::RuntimeApi, G1Executor>(config, None) + .map_err(sc_cli::Error::Service) } else if config.chain_spec.is_test() { - match config.role { - Role::Light => { - service::new_light::<gtest_runtime::RuntimeApi, GTestExecutor>(config) - } - _ => service::new_full::<gtest_runtime::RuntimeApi, GTestExecutor>( - config, None, - ), - } - .map_err(sc_cli::Error::Service) + service::new_full::<gtest_runtime::RuntimeApi, GTestExecutor>(config, None) + .map_err(sc_cli::Error::Service) } else if config.chain_spec.is_dev() { service::new_full::<gdev_runtime::RuntimeApi, GDevExecutor>( config, diff --git a/node/src/rpc.rs b/node/src/rpc.rs index d47586112..4a64fb4b8 100644 --- a/node/src/rpc.rs +++ b/node/src/rpc.rs @@ -47,7 +47,9 @@ pub struct FullDeps<C, P> { } /// Instantiate all full RPC extensions. -pub fn create_full<C, P>(deps: FullDeps<C, P>) -> jsonrpc_core::IoHandler<sc_rpc::Metadata> +pub fn create_full<C, P>( + deps: FullDeps<C, P>, +) -> Result<jsonrpc_core::IoHandler<sc_rpc_api::Metadata>, Box<dyn std::error::Error + Send + Sync>> where C: ProvideRuntimeApi<Block>, C: HeaderBackend<Block> + HeaderMetadata<Block, Error = BlockChainError> + 'static, @@ -91,5 +93,5 @@ where // to call into the runtime. // `io.extend_with(YourRpcTrait::to_delegate(YourRpcStruct::new(ReferenceToClient, ...)));` - io + Ok(io) } diff --git a/node/src/service.rs b/node/src/service.rs index 1a2cca33d..e4833286d 100644 --- a/node/src/service.rs +++ b/node/src/service.rs @@ -18,16 +18,14 @@ mod client; -pub use sc_executor::NativeExecutor; - use self::client::{Client, RuntimeApiCollection}; use async_io::Timer; use common_runtime::Block; use futures::{Stream, StreamExt}; -use sc_client_api::{ExecutorProvider, RemoteBackend}; +use sc_client_api::ExecutorProvider; use sc_consensus_aura::{ImportQueueParams, SlotProportion, StartAuraParams}; use sc_consensus_manual_seal::{run_manual_seal, EngineCommand, ManualSealParams}; -use sc_executor::native_executor_instance; +pub use sc_executor::NativeElseWasmExecutor; use sc_finality_grandpa::SharedVoterState; use sc_keystore::LocalKeystore; use sc_service::{error::Error as ServiceError, Configuration, PartialComponents, TaskManager}; @@ -38,27 +36,64 @@ use sp_core::H256; use sp_runtime::traits::BlakeTwo256; use std::{sync::Arc, time::Duration}; -type FullClient<RuntimeApi, Executor> = sc_service::TFullClient<Block, RuntimeApi, Executor>; +type FullClient<RuntimeApi, Executor> = + sc_service::TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>; type FullBackend = sc_service::TFullBackend<Block>; type FullSelectChain = sc_consensus::LongestChain<FullBackend, Block>; -type LightClient<RuntimeApi, Executor> = - sc_service::TLightClientWithBackend<Block, RuntimeApi, Executor, LightBackend>; -type LightBackend = sc_service::TLightBackendWithHash<Block, sp_runtime::traits::BlakeTwo256>; +pub struct GDevExecutor; +impl sc_executor::NativeExecutionDispatch for GDevExecutor { + /// Only enable the benchmarking host functions when we actually want to benchmark. + #[cfg(feature = "runtime-benchmarks")] + type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions; + /// Otherwise we only use the default Substrate host functions. + #[cfg(not(feature = "runtime-benchmarks"))] + type ExtendHostFunctions = (); + + fn dispatch(method: &str, data: &[u8]) -> Option<Vec<u8>> { + gdev_runtime::api::dispatch(method, data) + } + + fn native_version() -> sc_executor::NativeVersion { + gdev_runtime::native_version() + } +} + +pub struct GTestExecutor; +impl sc_executor::NativeExecutionDispatch for GTestExecutor { + /// Only enable the benchmarking host functions when we actually want to benchmark. + #[cfg(feature = "runtime-benchmarks")] + type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions; + /// Otherwise we only use the default Substrate host functions. + #[cfg(not(feature = "runtime-benchmarks"))] + type ExtendHostFunctions = (); + + fn dispatch(method: &str, data: &[u8]) -> Option<Vec<u8>> { + gtest_runtime::api::dispatch(method, data) + } + + fn native_version() -> sc_executor::NativeVersion { + gtest_runtime::native_version() + } +} -native_executor_instance!( - pub GDevExecutor, - gdev_runtime::api::dispatch, - gdev_runtime::native_version, - frame_benchmarking::benchmarking::HostFunctions, -); +pub struct G1Executor; +impl sc_executor::NativeExecutionDispatch for G1Executor { + /// Only enable the benchmarking host functions when we actually want to benchmark. + #[cfg(feature = "runtime-benchmarks")] + type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions; + /// Otherwise we only use the default Substrate host functions. + #[cfg(not(feature = "runtime-benchmarks"))] + type ExtendHostFunctions = (); + + fn dispatch(method: &str, data: &[u8]) -> Option<Vec<u8>> { + g1_runtime::api::dispatch(method, data) + } -native_executor_instance!( - pub GTestExecutor, - gtest_runtime::api::dispatch, - gtest_runtime::native_version, - frame_benchmarking::benchmarking::HostFunctions, -); + fn native_version() -> sc_executor::NativeVersion { + g1_runtime::native_version() + } +} /// Can be called for a `Configuration` to check if it is a configuration for /// a particular network. @@ -101,7 +136,19 @@ pub fn new_chain_ops( ServiceError, > { if config.chain_spec.is_main() { - todo!() + let PartialComponents { + client, + backend, + import_queue, + task_manager, + .. + } = new_partial::<g1_runtime::RuntimeApi, G1Executor>(config, false)?; + Ok(( + Arc::new(Client::G1(client)), + backend, + import_queue, + task_manager, + )) } else if config.chain_spec.is_test() { let PartialComponents { client, @@ -185,15 +232,25 @@ where }) .transpose()?; + let executor = NativeElseWasmExecutor::<Executor>::new( + config.wasm_method, + config.default_heap_pages, + config.max_runtime_instances, + config.runtime_cache_size, + ); + let (client, backend, keystore_container, task_manager) = - sc_service::new_full_parts::<Block, RuntimeApi, Executor>( - &config, + sc_service::new_full_parts::<Block, RuntimeApi, _>( + config, telemetry.as_ref().map(|(_, telemetry)| telemetry.handle()), + executor, )?; let client = Arc::new(client); let telemetry = telemetry.map(|(worker, telemetry)| { - task_manager.spawn_handle().spawn("telemetry", worker.run()); + task_manager + .spawn_handle() + .spawn("telemetry", None, worker.run()); telemetry }); @@ -307,6 +364,11 @@ where .network .extra_sets .push(sc_finality_grandpa::grandpa_peers_set_config()); + let warp_sync = Arc::new(sc_finality_grandpa::warp_proof::NetworkProvider::new( + backend.clone(), + grandpa_link.shared_authority_set().clone(), + Vec::default(), + )); let (network, system_rpc_tx, network_starter) = sc_service::build_network(sc_service::BuildNetworkParams { @@ -315,8 +377,8 @@ where transaction_pool: transaction_pool.clone(), spawn_handle: task_manager.spawn_handle(), import_queue, - on_demand: None, block_announce_validator_builder: None, + warp_sync: Some(warp_sync), })?; if config.offchain_worker.enabled { @@ -382,6 +444,7 @@ where task_manager.spawn_essential_handle().spawn_blocking( "authorship_task", + Some("block-authoring"), run_manual_seal(ManualSealParams { block_import, env: proposer_factory, @@ -431,9 +494,11 @@ where // the AURA authoring task is considered essential, i.e. if it // fails we take down the service with it. - task_manager - .spawn_essential_handle() - .spawn_blocking("aura", aura); + task_manager.spawn_essential_handle().spawn_blocking( + "aura", + Some("block-authoring"), + aura, + ); } } @@ -449,7 +514,7 @@ where command_sink_opt: command_sink_opt.clone(), }; - crate::rpc::create_full(deps) + crate::rpc::create_full(deps).map_err(Into::into) }) }; @@ -460,8 +525,6 @@ where task_manager: &mut task_manager, transaction_pool, rpc_extensions_builder, - on_demand: None, - remote_blockchain: None, backend, system_rpc_tx, config, @@ -508,6 +571,7 @@ where // if it fails we take down the service with it. task_manager.spawn_essential_handle().spawn_blocking( "grandpa-voter", + None, sc_finality_grandpa::run_grandpa_voter(grandpa_config)?, ); } @@ -515,144 +579,3 @@ where network_starter.start_network(); Ok(task_manager) } - -/// Builds a new service for a light client. -pub fn new_light<RuntimeApi, Executor>( - mut config: Configuration, -) -> Result<TaskManager, ServiceError> -where - RuntimeApi: sp_api::ConstructRuntimeApi<Block, LightClient<RuntimeApi, Executor>> - + Send - + Sync - + 'static, - RuntimeApi::RuntimeApi: - RuntimeApiCollection<StateBackend = sc_client_api::StateBackendFor<LightBackend, Block>>, - Executor: sc_executor::NativeExecutionDispatch + 'static, -{ - let telemetry = config - .telemetry_endpoints - .clone() - .filter(|x| !x.is_empty()) - .map(|endpoints| -> Result<_, sc_telemetry::Error> { - let worker = TelemetryWorker::new(16)?; - let telemetry = worker.handle().new_telemetry(endpoints); - Ok((worker, telemetry)) - }) - .transpose()?; - - let (client, backend, keystore_container, mut task_manager, on_demand) = - sc_service::new_light_parts::<Block, RuntimeApi, Executor>( - &config, - telemetry.as_ref().map(|(_, telemetry)| telemetry.handle()), - )?; - - let mut telemetry = telemetry.map(|(worker, telemetry)| { - task_manager.spawn_handle().spawn("telemetry", worker.run()); - telemetry - }); - - config - .network - .extra_sets - .push(sc_finality_grandpa::grandpa_peers_set_config()); - - let select_chain = sc_consensus::LongestChain::new(backend.clone()); - - let transaction_pool = Arc::new(sc_transaction_pool::BasicPool::new_light( - config.transaction_pool.clone(), - config.prometheus_registry(), - task_manager.spawn_essential_handle(), - client.clone(), - on_demand.clone(), - )); - - let (grandpa_block_import, grandpa_link) = sc_finality_grandpa::block_import( - client.clone(), - &(client.clone() as Arc<_>), - select_chain, - telemetry.as_ref().map(|x| x.handle()), - )?; - - let slot_duration = sc_consensus_aura::slot_duration(&*client)?.slot_duration(); - - let import_queue = - sc_consensus_aura::import_queue::<AuraPair, _, _, _, _, _, _>(ImportQueueParams { - block_import: grandpa_block_import.clone(), - justification_import: Some(Box::new(grandpa_block_import)), - client: client.clone(), - create_inherent_data_providers: move |_, ()| async move { - let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); - - let slot = - sp_consensus_aura::inherents::InherentDataProvider::from_timestamp_and_duration( - *timestamp, - slot_duration, - ); - - Ok((timestamp, slot)) - }, - spawner: &task_manager.spawn_essential_handle(), - can_author_with: sp_consensus::NeverCanAuthor, - registry: config.prometheus_registry(), - check_for_equivocation: Default::default(), - telemetry: telemetry.as_ref().map(|x| x.handle()), - })?; - - let (network, system_rpc_tx, network_starter) = - sc_service::build_network(sc_service::BuildNetworkParams { - config: &config, - client: client.clone(), - transaction_pool: transaction_pool.clone(), - spawn_handle: task_manager.spawn_handle(), - import_queue, - on_demand: Some(on_demand.clone()), - block_announce_validator_builder: None, - })?; - - if config.offchain_worker.enabled { - sc_service::build_offchain_workers( - &config, - task_manager.spawn_handle(), - client.clone(), - network.clone(), - ); - } - - let enable_grandpa = !config.disable_grandpa; - if enable_grandpa { - let name = config.network.node_name.clone(); - - let config = sc_finality_grandpa::Config { - gossip_duration: std::time::Duration::from_millis(333), - justification_period: 512, - name: Some(name), - observer_enabled: false, - keystore: None, - local_role: config.role.clone(), - telemetry: telemetry.as_ref().map(|x| x.handle()), - }; - - task_manager.spawn_handle().spawn_blocking( - "grandpa-observer", - sc_finality_grandpa::run_grandpa_observer(config, grandpa_link, network.clone())?, - ); - } - - sc_service::spawn_tasks(sc_service::SpawnTasksParams { - remote_blockchain: Some(backend.remote_blockchain()), - transaction_pool, - task_manager: &mut task_manager, - on_demand: Some(on_demand), - rpc_extensions_builder: Box::new(|_, _| ()), - config, - client, - keystore: keystore_container.sync_keystore(), - backend, - network, - system_rpc_tx, - telemetry: telemetry.as_mut(), - })?; - - network_starter.start_network(); - Ok(task_manager) -} diff --git a/node/src/service/client.rs b/node/src/service/client.rs index c9311401d..dcb19336f 100644 --- a/node/src/service/client.rs +++ b/node/src/service/client.rs @@ -23,23 +23,50 @@ use sp_runtime::{ traits::{BlakeTwo256, Block as BlockT}, Justifications, }; -use sp_storage::{ChildInfo, PrefixedStorageKey, StorageData, StorageKey}; +use sp_storage::{ChildInfo, StorageData, StorageKey}; use std::sync::Arc; /// A client instance. #[derive(Clone)] pub enum Client { - //G1(Arc<super::FullClient<g1_runtime::RuntimeApi, super::G1Executor>>), + G1(Arc<super::FullClient<g1_runtime::RuntimeApi, super::G1Executor>>), GTest(Arc<super::FullClient<gtest_runtime::RuntimeApi, super::GTestExecutor>>), GDev(Arc<super::FullClient<gdev_runtime::RuntimeApi, super::GDevExecutor>>), } +impl From<Arc<super::FullClient<g1_runtime::RuntimeApi, super::G1Executor>>> for Client { + fn from(client: Arc<super::FullClient<g1_runtime::RuntimeApi, super::G1Executor>>) -> Self { + Self::G1(client) + } +} + +impl From<Arc<super::FullClient<gtest_runtime::RuntimeApi, super::GTestExecutor>>> for Client { + fn from( + client: Arc<super::FullClient<gtest_runtime::RuntimeApi, super::GTestExecutor>>, + ) -> Self { + Self::GTest(client) + } +} + +impl From<Arc<super::FullClient<gdev_runtime::RuntimeApi, super::GDevExecutor>>> for Client { + fn from(client: Arc<super::FullClient<gdev_runtime::RuntimeApi, super::GDevExecutor>>) -> Self { + Self::GDev(client) + } +} + +macro_rules! match_client { + ($self:ident, $method:ident($($param:ident),*)) => { + match $self { + Self::G1(client) => client.$method($($param),*), + Self::GTest(client) => client.$method($($param),*), + Self::GDev(client) => client.$method($($param),*), + } + }; +} + impl sc_client_api::UsageProvider<Block> for Client { fn usage_info(&self) -> sc_client_api::ClientInfo<Block> { - match self { - Self::GTest(client) => client.usage_info(), - Self::GDev(client) => client.usage_info(), - } + match_client!(self, usage_info()) } } @@ -48,71 +75,47 @@ impl sc_client_api::BlockBackend<Block> for Client { &self, id: &BlockId<Block>, ) -> sp_blockchain::Result<Option<Vec<<Block as BlockT>::Extrinsic>>> { - match self { - Self::GTest(client) => client.block_body(id), - Self::GDev(client) => client.block_body(id), - } + match_client!(self, block_body(id)) } fn block_indexed_body( &self, id: &BlockId<Block>, ) -> sp_blockchain::Result<Option<Vec<Vec<u8>>>> { - match self { - Self::GTest(client) => client.block_indexed_body(id), - Self::GDev(client) => client.block_indexed_body(id), - } + match_client!(self, block_indexed_body(id)) } fn block(&self, id: &BlockId<Block>) -> sp_blockchain::Result<Option<SignedBlock<Block>>> { - match self { - Self::GTest(client) => client.block(id), - Self::GDev(client) => client.block(id), - } + match_client!(self, block(id)) } fn block_status(&self, id: &BlockId<Block>) -> sp_blockchain::Result<BlockStatus> { - match self { - Self::GTest(client) => client.block_status(id), - Self::GDev(client) => client.block_status(id), - } + match_client!(self, block_status(id)) } fn justifications(&self, id: &BlockId<Block>) -> sp_blockchain::Result<Option<Justifications>> { - match self { - Self::GTest(client) => client.justifications(id), - Self::GDev(client) => client.justifications(id), - } + match_client!(self, justifications(id)) } fn block_hash( &self, number: NumberFor<Block>, ) -> sp_blockchain::Result<Option<<Block as BlockT>::Hash>> { - match self { - Self::GTest(client) => client.block_hash(number), - Self::GDev(client) => client.block_hash(number), - } + match_client!(self, block_hash(number)) } fn indexed_transaction( &self, hash: &<Block as BlockT>::Hash, ) -> sp_blockchain::Result<Option<Vec<u8>>> { - match self { - Self::GTest(client) => client.indexed_transaction(hash), - Self::GDev(client) => client.indexed_transaction(hash), - } + match_client!(self, indexed_transaction(hash)) } fn has_indexed_transaction( &self, hash: &<Block as BlockT>::Hash, ) -> sp_blockchain::Result<bool> { - match self { - Self::GTest(client) => client.has_indexed_transaction(hash), - Self::GDev(client) => client.has_indexed_transaction(hash), - } + match_client!(self, has_indexed_transaction(hash)) } } @@ -122,10 +125,7 @@ impl sc_client_api::StorageProvider<Block, super::FullBackend> for Client { id: &BlockId<Block>, key: &StorageKey, ) -> sp_blockchain::Result<Option<StorageData>> { - match self { - Self::GTest(client) => client.storage(id, key), - Self::GDev(client) => client.storage(id, key), - } + match_client!(self, storage(id, key)) } fn storage_keys( @@ -133,10 +133,7 @@ impl sc_client_api::StorageProvider<Block, super::FullBackend> for Client { id: &BlockId<Block>, key_prefix: &StorageKey, ) -> sp_blockchain::Result<Vec<StorageKey>> { - match self { - Self::GTest(client) => client.storage_keys(id, key_prefix), - Self::GDev(client) => client.storage_keys(id, key_prefix), - } + match_client!(self, storage_keys(id, key_prefix)) } fn storage_hash( @@ -144,10 +141,7 @@ impl sc_client_api::StorageProvider<Block, super::FullBackend> for Client { id: &BlockId<Block>, key: &StorageKey, ) -> sp_blockchain::Result<Option<<Block as BlockT>::Hash>> { - match self { - Self::GTest(client) => client.storage_hash(id, key), - Self::GDev(client) => client.storage_hash(id, key), - } + match_client!(self, storage_hash(id, key)) } fn storage_pairs( @@ -155,10 +149,7 @@ impl sc_client_api::StorageProvider<Block, super::FullBackend> for Client { id: &BlockId<Block>, key_prefix: &StorageKey, ) -> sp_blockchain::Result<Vec<(StorageKey, StorageData)>> { - match self { - Self::GTest(client) => client.storage_pairs(id, key_prefix), - Self::GDev(client) => client.storage_pairs(id, key_prefix), - } + match_client!(self, storage_pairs(id, key_prefix)) } fn storage_keys_iter<'a>( @@ -169,10 +160,7 @@ impl sc_client_api::StorageProvider<Block, super::FullBackend> for Client { ) -> sp_blockchain::Result< KeyIterator<'a, <super::FullBackend as sc_client_api::Backend<Block>>::State, Block>, > { - match self { - Self::GTest(client) => client.storage_keys_iter(id, prefix, start_key), - Self::GDev(client) => client.storage_keys_iter(id, prefix, start_key), - } + match_client!(self, storage_keys_iter(id, prefix, start_key)) } fn child_storage( @@ -181,10 +169,7 @@ impl sc_client_api::StorageProvider<Block, super::FullBackend> for Client { child_info: &ChildInfo, key: &StorageKey, ) -> sp_blockchain::Result<Option<StorageData>> { - match self { - Self::GTest(client) => client.child_storage(id, child_info, key), - Self::GDev(client) => client.child_storage(id, child_info, key), - } + match_client!(self, child_storage(id, child_info, key)) } fn child_storage_keys( @@ -193,10 +178,7 @@ impl sc_client_api::StorageProvider<Block, super::FullBackend> for Client { child_info: &ChildInfo, key_prefix: &StorageKey, ) -> sp_blockchain::Result<Vec<StorageKey>> { - match self { - Self::GTest(client) => client.child_storage_keys(id, child_info, key_prefix), - Self::GDev(client) => client.child_storage_keys(id, child_info, key_prefix), - } + match_client!(self, child_storage_keys(id, child_info, key_prefix)) } fn child_storage_keys_iter<'a>( @@ -208,12 +190,10 @@ impl sc_client_api::StorageProvider<Block, super::FullBackend> for Client { ) -> sp_blockchain::Result< KeyIterator<'a, <super::FullBackend as sc_client_api::Backend<Block>>::State, Block>, > { - match self { - Self::GTest(client) => { - client.child_storage_keys_iter(id, child_info, prefix, start_key) - } - Self::GDev(client) => client.child_storage_keys_iter(id, child_info, prefix, start_key), - } + match_client!( + self, + child_storage_keys_iter(id, child_info, prefix, start_key) + ) } fn child_storage_hash( @@ -222,70 +202,29 @@ impl sc_client_api::StorageProvider<Block, super::FullBackend> for Client { child_info: &ChildInfo, key: &StorageKey, ) -> sp_blockchain::Result<Option<<Block as BlockT>::Hash>> { - match self { - Self::GTest(client) => client.child_storage_hash(id, child_info, key), - Self::GDev(client) => client.child_storage_hash(id, child_info, key), - } - } - - fn max_key_changes_range( - &self, - first: NumberFor<Block>, - last: BlockId<Block>, - ) -> sp_blockchain::Result<Option<(NumberFor<Block>, BlockId<Block>)>> { - match self { - Self::GTest(client) => client.max_key_changes_range(first, last), - Self::GDev(client) => client.max_key_changes_range(first, last), - } - } - - fn key_changes( - &self, - first: NumberFor<Block>, - last: BlockId<Block>, - storage_key: Option<&PrefixedStorageKey>, - key: &StorageKey, - ) -> sp_blockchain::Result<Vec<(NumberFor<Block>, u32)>> { - match self { - Self::GTest(client) => client.key_changes(first, last, storage_key, key), - Self::GDev(client) => client.key_changes(first, last, storage_key, key), - } + match_client!(self, child_storage_hash(id, child_info, key)) } } impl sp_blockchain::HeaderBackend<Block> for Client { fn header(&self, id: BlockId<Block>) -> sp_blockchain::Result<Option<Header>> { - match self { - Self::GTest(client) => client.header(&id), - Self::GDev(client) => client.header(&id), - } + let id = &id; + match_client!(self, header(id)) } fn info(&self) -> sp_blockchain::Info<Block> { - match self { - Self::GTest(client) => client.info(), - Self::GDev(client) => client.info(), - } + match_client!(self, info()) } fn status(&self, id: BlockId<Block>) -> sp_blockchain::Result<sp_blockchain::BlockStatus> { - match self { - Self::GTest(client) => client.status(id), - Self::GDev(client) => client.status(id), - } + match_client!(self, status(id)) } fn number(&self, hash: Hash) -> sp_blockchain::Result<Option<BlockNumber>> { - match self { - Self::GTest(client) => client.number(hash), - Self::GDev(client) => client.number(hash), - } + match_client!(self, number(hash)) } fn hash(&self, number: BlockNumber) -> sp_blockchain::Result<Option<Hash>> { - match self { - Self::GTest(client) => client.hash(number), - Self::GDev(client) => client.hash(number), - } + match_client!(self, hash(number)) } } diff --git a/pallets/certification/Cargo.toml b/pallets/certification/Cargo.toml index b48cb85eb..51b128621 100644 --- a/pallets/certification/Cargo.toml +++ b/pallets/certification/Cargo.toml @@ -24,27 +24,32 @@ std = [ ] try-runtime = ['frame-support/try-runtime'] +[dependencies] + +# substrate +scale-info = { version = "1.0", default-features = false, features = ["derive"] } + [dependencies.codec] default-features = false features = ['derive'] package = 'parity-scale-codec' -version = '2.2.0' +version = '2.3.1' [dependencies.frame-benchmarking] default-features = false -git = 'https://github.com/paritytech/substrate.git' +git = 'https://github.com/librelois/substrate.git' optional = true -tag = 'monthly-2021-08' +branch = 'duniter-monthly-2022-01' [dependencies.frame-support] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.frame-system] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.serde] version = "1.0.101" @@ -53,18 +58,18 @@ features = ["derive"] [dependencies.sp-core] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-runtime] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-std] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' ### DOC ### @@ -80,5 +85,5 @@ version = '1.0.2' [dev-dependencies.sp-io] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' diff --git a/pallets/certification/src/lib.rs b/pallets/certification/src/lib.rs index e9f965e66..85abc2f3b 100644 --- a/pallets/certification/src/lib.rs +++ b/pallets/certification/src/lib.rs @@ -17,6 +17,7 @@ #![cfg_attr(not(feature = "std"), no_std)] pub mod traits; +mod types; #[cfg(test)] mod mock; @@ -25,30 +26,40 @@ mod mock; mod tests; pub use pallet::*; +pub use types::*; use crate::traits::*; use codec::Codec; -use sp_runtime::traits::{AtLeast32BitUnsigned, Zero}; -use sp_std::{ - collections::{btree_map::BTreeMap, btree_set::BTreeSet}, - fmt::Debug, - vec::Vec, -}; +use frame_support::traits::{Instance, StorageVersion}; +use sp_runtime::traits::AtLeast32BitUnsigned; +use sp_std::{fmt::Debug, vec::Vec}; +#[frame_support::pallet] pub mod pallet { use super::*; use frame_support::pallet_prelude::*; + use frame_system::pallet_prelude::*; + use sp_std::collections::{btree_map::BTreeMap, btree_set::BTreeSet}; - /// Configure the pallet by specifying the parameters and types on which it depends. - pub trait Config<I: Instance = DefaultInstance>: frame_system::Config { + /// The current storage version. + const STORAGE_VERSION: StorageVersion = StorageVersion::new(1); + + #[pallet::pallet] + #[pallet::generate_store(pub(super) trait Store)] + #[pallet::storage_version(STORAGE_VERSION)] + pub struct Pallet<T, I = ()>(PhantomData<(T, I)>); + + #[pallet::config] + pub trait Config<I: 'static = ()>: frame_system::Config { /// Origin allowed to add a certification type AddCertOrigin: EnsureOrigin<(Self::Origin, Self::IdtyIndex, Self::IdtyIndex)>; + #[pallet::constant] /// Minimum duration between two certifications issued by the same issuer type CertPeriod: Get<Self::BlockNumber>; /// Origin allowed to delete a certification type DelCertOrigin: EnsureOrigin<(Self::Origin, Self::IdtyIndex, Self::IdtyIndex)>; - /// The overarching event type. - type Event: From<Event<Self, I>> + Into<<Self as frame_system::Config>::Event>; + /// Because this pallet emits events, it depends on the runtime's definition of an event. + type Event: From<Event<Self, I>> + IsType<<Self as frame_system::Config>::Event>; /// A short identity index. type IdtyIndex: Parameter + Member @@ -59,259 +70,312 @@ pub mod pallet { + MaybeSerializeDeserialize + Debug + MaxEncodedLen; + #[pallet::constant] /// Maximum number of active certifications by issuer type MaxByIssuer: Get<u8>; /// Handler for NewCert event type OnNewcert: OnNewcert<Self::IdtyIndex>; /// Handler for Removed event type OnRemovedCert: OnRemovedCert<Self::IdtyIndex>; + #[pallet::constant] /// Duration after which a certification is renewable - type RenewablePeriod: Get<Self::BlockNumber>; + type CertRenewablePeriod: Get<Self::BlockNumber>; + #[pallet::constant] /// Duration of validity of a certification type ValidityPeriod: Get<Self::BlockNumber>; } - frame_support::decl_event! { - pub enum Event<T, I=DefaultInstance> where - <T as Config<I>>::IdtyIndex, - { - /// New certification - /// \[issuer, issuer_issued_count, receiver, receiver_received_count\] - NewCert(IdtyIndex,u8, IdtyIndex, u32), - /// Removed certification - /// \[issuer, issuer_issued_count, receiver, receiver_received_count, expiration\] - RemovedCert(IdtyIndex, u8, IdtyIndex, u32, bool), - /// Renewed certification - /// \[issuer, receiver\] - RenewedCert(IdtyIndex, IdtyIndex), - } - } - - frame_support::decl_error! { - pub enum Error for Module<T: Config<I>, I: Instance> { - /// An identity must receive certifications before it can issue them. - IdtyMustReceiveCertsBeforeCanIssue, - /// This identity has already issued the maximum number of certifications - IssuedTooManyCert, - /// This certification has already been issued or renewed recently - NotRespectRenewablePeriod, - /// This identity has already issued a certification too recently - NotRespectCertPeriod, - } - } - - // STORAGE // - - // A value placed in storage that represents the current version of the Balances storage. - // This value is used by the `on_runtime_upgrade` logic to determine whether we run - // storage migration logic. This should match directly with the semantic versions of the Rust crate. - #[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug)] - pub enum Releases { - V1_0_0, - } - impl Default for Releases { - fn default() -> Self { - Releases::V1_0_0 - } - } - - #[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug)] - pub struct CertValue<T: Config<I>, I: Instance> { - renewable_on: T::BlockNumber, - removable_on: T::BlockNumber, - phantom: PhantomData<I>, + #[pallet::genesis_config] + pub struct GenesisConfig<T: Config<I>, I: 'static = ()> { + pub certs_by_issuer: BTreeMap<T::IdtyIndex, BTreeSet<T::IdtyIndex>>, + pub phantom: PhantomData<I>, } - #[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug)] - pub struct IdtyCertMeta<T: Config<I>, I: Instance> { - issued_count: u8, - next_issuable_on: T::BlockNumber, - received_count: u32, - phantom: PhantomData<I>, - } - impl<T: Config<I>, I: Instance> Default for IdtyCertMeta<T, I> { + #[cfg(feature = "std")] + impl<T: Config<I>, I: 'static> Default for GenesisConfig<T, I> { fn default() -> Self { Self { - issued_count: 0, - next_issuable_on: T::BlockNumber::zero(), - received_count: 0, - phantom: PhantomData, + certs_by_issuer: Default::default(), + phantom: Default::default(), } } } - frame_support::decl_storage! { - trait Store for Module<T: Config<I>, I: Instance=DefaultInstance> as Certification { - /// Storage version of the pallet. - StorageVersion get(fn storage_version): Releases; - /// Certifications by issuer - pub StorageIdtyCertMeta get(fn certs_by_issuer): - map hasher(twox_64_concat) T::IdtyIndex => IdtyCertMeta<T, I> = IdtyCertMeta { - issued_count: 0, - next_issuable_on: T::BlockNumber::zero(), - received_count: 0, - phantom: PhantomData, - }; - pub StorageCertsByIssuer get(fn cert): - double_map hasher(identity) T::IdtyIndex, hasher(identity) T::IdtyIndex - => Option<CertValue<T, I>>; - /// Certifications by receiver - pub StorageCertsByReceiver get(fn certs_by_receiver): - map hasher(twox_64_concat) T::IdtyIndex => Vec<T::IdtyIndex>; - /// Certifications removable on - pub StorageCertsRemovableOn get(fn certs_removable_on): - map hasher(twox_64_concat) T::BlockNumber => Vec<(T::IdtyIndex, T::IdtyIndex)>; - } - add_extra_genesis { - config(phantom): sp_std::marker::PhantomData<I>; - config(certs_by_issuer): BTreeMap<T::IdtyIndex, BTreeSet<T::IdtyIndex>>; - build(|config| { - let mut cert_meta_by_issuer = BTreeMap::<T::IdtyIndex, IdtyCertMeta<T, I>>::new(); - let mut certs_by_receiver = BTreeMap::<T::IdtyIndex, Vec<T::IdtyIndex>>::new(); - for (issuer, receivers) in &config.certs_by_issuer { - assert!(!receivers.contains(issuer), "Identity cannot tcertify it-self."); - assert!(!receivers.len() >= T::MaxByIssuer::get() as usize, "Identity n°{:?} exceed MaxByIssuer.", issuer); - - cert_meta_by_issuer.insert(*issuer, IdtyCertMeta { + #[pallet::genesis_build] + impl<T: Config<I>, I: 'static> GenesisBuild<T, I> for GenesisConfig<T, I> { + fn build(&self) { + let mut cert_meta_by_issuer = + BTreeMap::<T::IdtyIndex, IdtyCertMeta<T::BlockNumber>>::new(); + let mut certs_by_receiver = BTreeMap::<T::IdtyIndex, Vec<T::IdtyIndex>>::new(); + for (issuer, receivers) in &self.certs_by_issuer { + assert!( + !receivers.contains(issuer), + "Identity cannot certify it-self." + ); + assert!( + !receivers.len() >= T::MaxByIssuer::get() as usize, + "Identity n°{:?} exceed MaxByIssuer.", + issuer + ); + + cert_meta_by_issuer.insert( + *issuer, + IdtyCertMeta { issued_count: receivers.len() as u8, next_issuable_on: T::CertPeriod::get(), received_count: 0, - phantom: PhantomData, - }); - for receiver in receivers { - certs_by_receiver.entry(*receiver).or_default().push(*issuer); - } + }, + ); + for receiver in receivers { + certs_by_receiver + .entry(*receiver) + .or_default() + .push(*issuer); } + } - <StorageVersion<I>>::put(Releases::V1_0_0); - // Write StorageCertsByReceiver - for (receiver, mut issuers) in certs_by_receiver { - cert_meta_by_issuer.entry(receiver).and_modify(|cert_meta| cert_meta.received_count = issuers.len() as u32); - issuers.sort(); - <StorageCertsByReceiver<T, I>>::insert(receiver, issuers); - } - // Write StorageIdtyCertMeta - for (issuer, cert_meta) in cert_meta_by_issuer { - <StorageIdtyCertMeta<T, I>>::insert(issuer, cert_meta); - } - // Write StorageCertsByIssuer && StorageCertsRemovableOn - let mut all_couples = Vec::new(); - for (issuer, receivers) in &config.certs_by_issuer { - for receiver in receivers { - all_couples.push((*issuer, *receiver)); - <StorageCertsByIssuer<T, I>>::insert(issuer, receiver, CertValue { - renewable_on: T::RenewablePeriod::get(), + // Write StorageCertsByReceiver + for (receiver, mut issuers) in certs_by_receiver { + cert_meta_by_issuer + .entry(receiver) + .and_modify(|cert_meta| cert_meta.received_count = issuers.len() as u32); + issuers.sort(); + <StorageCertsByReceiver<T, I>>::insert(receiver, issuers); + } + // Write StorageIdtyCertMeta + for (issuer, cert_meta) in cert_meta_by_issuer { + <StorageIdtyCertMeta<T, I>>::insert(issuer, cert_meta); + } + // Write StorageCertsByIssuer && StorageCertsRemovableOn + let mut all_couples = Vec::new(); + for (issuer, receivers) in &self.certs_by_issuer { + for receiver in receivers { + all_couples.push((*issuer, *receiver)); + <StorageCertsByIssuer<T, I>>::insert( + issuer, + receiver, + CertValue { + renewable_on: T::CertRenewablePeriod::get(), removable_on: T::ValidityPeriod::get(), - phantom: PhantomData, - }); - } + }, + ); } - <StorageCertsRemovableOn<T, I>>::insert(T::ValidityPeriod::get(), all_couples); - }); + } + <StorageCertsRemovableOn<T, I>>::insert(T::ValidityPeriod::get(), all_couples); } } - // CALLS // + // STORAGE // - frame_support::decl_module! { - pub struct Module<T: Config<I>, I: Instance=DefaultInstance> for enum Call where origin: <T as frame_system::Config>::Origin { - type Error = Error<T, I>; + /// Certifications metada by issuer + #[pallet::storage] + #[pallet::getter(fn idty_cert_meta)] + pub type StorageIdtyCertMeta<T: Config<I>, I: 'static = ()> = + StorageMap<_, Blake2_128Concat, T::IdtyIndex, IdtyCertMeta<T::BlockNumber>, OptionQuery>; + + /// Certifications by issuer + #[pallet::storage] + #[pallet::getter(fn cert)] + /// Certifications by issuer + pub(super) type StorageCertsByIssuer<T: Config<I>, I: 'static = ()> = StorageDoubleMap< + _, + Identity, + T::IdtyIndex, + Identity, + T::IdtyIndex, + CertValue<T::BlockNumber>, + OptionQuery, + GetDefault, + ConstU32<4_000_000_000>, + >; + + /// Certifications by receiver + #[pallet::storage] + #[pallet::getter(fn certs_by_receiver)] + pub type StorageCertsByReceiver<T: Config<I>, I: 'static = ()> = + StorageMap<_, Blake2_128Concat, T::IdtyIndex, Vec<T::IdtyIndex>, OptionQuery>; + + /// Certifications removable on + #[pallet::storage] + #[pallet::getter(fn certs_removable_on)] + pub type StorageCertsRemovableOn<T: Config<I>, I: 'static = ()> = StorageMap< + _, + Blake2_128Concat, + T::BlockNumber, + Vec<(T::IdtyIndex, T::IdtyIndex)>, + OptionQuery, + >; + + #[pallet::event] + #[pallet::generate_deposit(pub(super) fn deposit_event)] + pub enum Event<T: Config<I>, I: 'static = ()> { + /// New certification + /// [issuer, issuer_issued_count, receiver, receiver_received_count] + NewCert { + issuer: T::IdtyIndex, + issuer_issued_count: u8, + receiver: T::IdtyIndex, + receiver_received_count: u32, + }, + /// Removed certification + /// [issuer, issuer_issued_count, receiver, receiver_received_count, expiration] + RemovedCert { + issuer: T::IdtyIndex, + issuer_issued_count: u8, + receiver: T::IdtyIndex, + receiver_received_count: u32, + expiration: bool, + }, + /// Renewed certification + /// [issuer, receiver] + RenewedCert { + issuer: T::IdtyIndex, + receiver: T::IdtyIndex, + }, + } - fn deposit_event() = default; + #[pallet::error] + pub enum Error<T, I = ()> { + /// An identity must receive certifications before it can issue them. + IdtyMustReceiveCertsBeforeCanIssue, + /// This identity has already issued the maximum number of certifications + IssuedTooManyCert, + /// This certification has already been issued or renewed recently + NotRespectRenewablePeriod, + /// This identity has already issued a certification too recently + NotRespectCertPeriod, + } - fn on_initialize(n: T::BlockNumber) -> Weight { - Self::prune_certifications(n) - } + #[pallet::hooks] + impl<T: Config<I>, I: 'static> Hooks<BlockNumberFor<T>> for Pallet<T, I> { + fn on_initialize(n: T::BlockNumber) -> Weight { + Self::prune_certifications(n) + } + } - #[weight = 0] - pub fn add_cert(origin, issuer: T::IdtyIndex, receiver: T::IdtyIndex) { - T::AddCertOrigin::ensure_origin((origin, issuer, receiver))?; - frame_support::runtime_print!("add_cert({:?}, {:?}): origin OK", issuer, receiver); + // CALLS // - let block_number = frame_system::pallet::Pallet::<T>::block_number(); + #[pallet::call] + impl<T: Config<I>, I: 'static> Pallet<T, I> { + #[pallet::weight(0)] + pub fn add_cert( + origin: OriginFor<T>, + issuer: T::IdtyIndex, + receiver: T::IdtyIndex, + ) -> DispatchResultWithPostInfo { + T::AddCertOrigin::ensure_origin((origin, issuer, receiver))?; + frame_support::runtime_print!("add_cert({:?}, {:?}): origin OK", issuer, receiver); + + let block_number = frame_system::pallet::Pallet::<T>::block_number(); + + let (create, issuer_issued_count) = if let Ok(mut issuer_idty_cert_meta) = + <StorageIdtyCertMeta<T, I>>::try_get(issuer) + { + // Verify rules CertPeriod and MaxByIssuer + frame_support::runtime_print!( + "add_cert({:?}, {:?}): Verify rules CertPeriod and MaxByIssuer", + issuer, + receiver + ); + if issuer_idty_cert_meta.next_issuable_on > block_number { + return Err(Error::<T, I>::NotRespectCertPeriod.into()); + } else if issuer_idty_cert_meta.issued_count >= T::MaxByIssuer::get() { + return Err(Error::<T, I>::IssuedTooManyCert.into()); + } - let (create, issuer_issued_count) = if let Ok(mut issuer_idty_cert_meta) = <StorageIdtyCertMeta<T, I>>::try_get(issuer) { - // Verify rules CertPeriod and MaxByIssuer - frame_support::runtime_print!("add_cert({:?}, {:?}): Verify rules CertPeriod and MaxByIssuer", issuer, receiver); - if issuer_idty_cert_meta.next_issuable_on > block_number { - return Err(Error::<T, I>::NotRespectCertPeriod.into()); - } else if issuer_idty_cert_meta.issued_count >= T::MaxByIssuer::get() { - return Err(Error::<T, I>::IssuedTooManyCert.into()); + // Verify rule CertRenewablePeriod + frame_support::runtime_print!( + "add_cert({:?}, {:?}): Verify rule CertRenewablePeriod", + issuer, + receiver + ); + let create = if let Ok(CertValue { renewable_on, .. }) = + <StorageCertsByIssuer<T, I>>::try_get(issuer, receiver) + { + if renewable_on > block_number { + return Err(Error::<T, I>::NotRespectRenewablePeriod.into()); } - - // Verify rule RenewablePeriod - frame_support::runtime_print!("add_cert({:?}, {:?}): Verify rule RenewablePeriod", issuer, receiver); - let create = if let Ok(CertValue { renewable_on, .. }) = <StorageCertsByIssuer<T, I>>::try_get(issuer, receiver) { - if renewable_on > block_number { - return Err(Error::<T, I>::NotRespectRenewablePeriod.into()); - } - false - } else { - true - }; - - // Write StorageIdtyCertMeta for issuer - issuer_idty_cert_meta.issued_count = issuer_idty_cert_meta.issued_count.saturating_add(1); - let issuer_issued_count = issuer_idty_cert_meta.issued_count; - issuer_idty_cert_meta.next_issuable_on = block_number + T::CertPeriod::get(); - <StorageIdtyCertMeta<T, I>>::insert(issuer, issuer_idty_cert_meta); - - (create, issuer_issued_count) + false } else { - // An identity must receive certifications before it can issue them. - return Err(Error::<T, I>::IdtyMustReceiveCertsBeforeCanIssue.into()); + true }; - // Write StorageIdtyCertMeta for receiver - frame_support::runtime_print!("add_cert({:?}, {:?}): Write StorageIdtyCertMeta for receiver", issuer, receiver); - let receiver_received_count = <StorageIdtyCertMeta<T, I>>::mutate_exists(receiver, |cert_meta_opt| { + // Write StorageIdtyCertMeta for issuer + issuer_idty_cert_meta.issued_count = + issuer_idty_cert_meta.issued_count.saturating_add(1); + let issuer_issued_count = issuer_idty_cert_meta.issued_count; + issuer_idty_cert_meta.next_issuable_on = block_number + T::CertPeriod::get(); + <StorageIdtyCertMeta<T, I>>::insert(issuer, issuer_idty_cert_meta); + + (create, issuer_issued_count) + } else { + // An identity must receive certifications before it can issue them. + return Err(Error::<T, I>::IdtyMustReceiveCertsBeforeCanIssue.into()); + }; + + // Write StorageIdtyCertMeta for receiver + frame_support::runtime_print!( + "add_cert({:?}, {:?}): Write StorageIdtyCertMeta for receiver", + issuer, + receiver + ); + let receiver_received_count = + <StorageIdtyCertMeta<T, I>>::mutate_exists(receiver, |cert_meta_opt| { let cert_meta = cert_meta_opt.get_or_insert(IdtyCertMeta::default()); cert_meta.received_count = cert_meta.received_count.saturating_add(1); cert_meta.received_count }); - // Write StorageCertsRemovableOn and StorageCertsByIssuer - let cert_value = CertValue { - renewable_on: block_number + T::RenewablePeriod::get(), - removable_on: block_number + T::ValidityPeriod::get(), - phantom: PhantomData, - }; - <StorageCertsRemovableOn<T, I>>::append(cert_value.removable_on, (issuer, receiver)); - <StorageCertsByIssuer<T, I>>::insert(issuer, receiver, cert_value); - - if create { - // Write StorageCertsByReceiver - <StorageCertsByReceiver<T, I>>::mutate_exists(receiver, |issuers_opt| { - let issuers = issuers_opt.get_or_insert(Vec::with_capacity(0)); - if let Err(index) = issuers.binary_search(&issuer) { - issuers.insert(index, issuer); - } - }); - Self::deposit_event(RawEvent::NewCert(issuer, issuer_issued_count, receiver, receiver_received_count)); - T::OnNewcert::on_new_cert(issuer, issuer_issued_count, receiver, receiver_received_count); - } else { - Self::deposit_event(RawEvent::RenewedCert(issuer, receiver)); - } - } - #[weight = 0] - pub fn del_cert(origin, issuer: T::IdtyIndex, receiver: T::IdtyIndex) { - T::DelCertOrigin::ensure_origin((origin, issuer, receiver))?; - Self::remove_cert_inner(issuer, receiver, None); + // Write StorageCertsRemovableOn and StorageCertsByIssuer + let cert_value = CertValue { + renewable_on: block_number + T::CertRenewablePeriod::get(), + removable_on: block_number + T::ValidityPeriod::get(), + }; + <StorageCertsRemovableOn<T, I>>::append(cert_value.removable_on, (issuer, receiver)); + <StorageCertsByIssuer<T, I>>::insert(issuer, receiver, cert_value); + + if create { + // Write StorageCertsByReceiver + <StorageCertsByReceiver<T, I>>::mutate_exists(receiver, |issuers_opt| { + let issuers = issuers_opt.get_or_insert(Vec::with_capacity(0)); + if let Err(index) = issuers.binary_search(&issuer) { + issuers.insert(index, issuer); + } + }); + Self::deposit_event(Event::NewCert { + issuer, + issuer_issued_count, + receiver, + receiver_received_count, + }); + T::OnNewcert::on_new_cert( + issuer, + issuer_issued_count, + receiver, + receiver_received_count, + ); + } else { + Self::deposit_event(Event::RenewedCert { issuer, receiver }); } + + Ok(().into()) + } + + #[pallet::weight(0)] + pub fn del_cert( + origin: OriginFor<T>, + issuer: T::IdtyIndex, + receiver: T::IdtyIndex, + ) -> DispatchResultWithPostInfo { + T::DelCertOrigin::ensure_origin((origin, issuer, receiver))?; + Self::remove_cert_inner(issuer, receiver, None); + Ok(().into()) } } // PUBLIC FUNCTIONS // - impl<T: Config<I>, I: Instance> Module<T, I> { - pub fn is_idty_allowed_to_create_cert(idty_index: T::IdtyIndex) -> bool { - if let Ok(cert_meta) = <StorageIdtyCertMeta<T, I>>::try_get(idty_index) { - cert_meta.next_issuable_on <= frame_system::pallet::Pallet::<T>::block_number() - && cert_meta.issued_count < T::MaxByIssuer::get() - } else { - true - } - } + impl<T: Config<I>, I: Instance> Pallet<T, I> { pub fn on_idty_removed(idty_index: T::IdtyIndex) -> Weight { let mut total_weight: Weight = 0; if let Ok(issuers) = <StorageCertsByReceiver<T, I>>::try_get(idty_index) { @@ -325,7 +389,7 @@ pub mod pallet { // INTERNAL FUNCTIONS // - impl<T: Config<I>, I: Instance> Module<T, I> { + impl<T: Config<I>, I: 'static> Pallet<T, I> { fn prune_certifications(block_number: T::BlockNumber) -> Weight { let mut total_weight: Weight = 0; @@ -377,13 +441,13 @@ pub mod pallet { cert_meta.received_count = cert_meta.received_count.saturating_sub(1); cert_meta.received_count }); - Self::deposit_event(RawEvent::RemovedCert( + Self::deposit_event(Event::RemovedCert { issuer, issuer_issued_count, receiver, receiver_received_count, - block_number_opt.is_some(), - )); + expiration: block_number_opt.is_some(), + }); total_weight += T::OnRemovedCert::on_removed_cert( issuer, issuer_issued_count, @@ -396,3 +460,15 @@ pub mod pallet { } } } + +impl<T: Config<I>, I: 'static> IsIdtyAllowedToCreateCert<T::IdtyIndex> for Pallet<T, I> { + fn is_idty_allowed_to_create_cert(idty_index: T::IdtyIndex) -> bool { + if let Ok(cert_meta) = <StorageIdtyCertMeta<T, I>>::try_get(idty_index) { + use frame_support::traits::Get as _; + cert_meta.next_issuable_on <= frame_system::pallet::Pallet::<T>::block_number() + && cert_meta.issued_count < T::MaxByIssuer::get() + } else { + true + } + } +} diff --git a/pallets/certification/src/mock.rs b/pallets/certification/src/mock.rs index 391fb7d65..eac33cc0f 100644 --- a/pallets/certification/src/mock.rs +++ b/pallets/certification/src/mock.rs @@ -17,7 +17,7 @@ use crate::{self as pallet_certification}; use frame_support::{ parameter_types, - traits::{AllowAll, OnFinalize, OnInitialize}, + traits::{Everything, OnFinalize, OnInitialize}, }; use frame_system as system; use sp_core::H256; @@ -51,7 +51,7 @@ parameter_types! { } impl system::Config for Test { - type BaseCallFilter = AllowAll; + type BaseCallFilter = Everything; type BlockWeights = (); type BlockLength = (); type DbWeight = (); @@ -74,6 +74,7 @@ impl system::Config for Test { type SystemWeightInfo = (); type SS58Prefix = SS58Prefix; type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; } pub struct EnsureRoot; @@ -106,7 +107,7 @@ impl pallet_certification::Config for Test { type MaxByIssuer = MaxByIssuer; type OnNewcert = (); type OnRemovedCert = (); - type RenewablePeriod = RenewablePeriod; + type CertRenewablePeriod = RenewablePeriod; type ValidityPeriod = ValidityPeriod; } diff --git a/pallets/certification/src/traits.rs b/pallets/certification/src/traits.rs index 38c4fa37d..0e195603f 100644 --- a/pallets/certification/src/traits.rs +++ b/pallets/certification/src/traits.rs @@ -14,6 +14,10 @@ // You should have received a copy of the GNU Affero General Public License // along with Substrate-Libre-Currency. If not, see <https://www.gnu.org/licenses/>. +pub trait IsIdtyAllowedToCreateCert<IdtyIndex> { + fn is_idty_allowed_to_create_cert(idty_index: IdtyIndex) -> bool; +} + pub trait OnNewcert<IdtyIndex> { fn on_new_cert( issuer: IdtyIndex, diff --git a/pallets/certification/src/types.rs b/pallets/certification/src/types.rs new file mode 100644 index 000000000..464df347a --- /dev/null +++ b/pallets/certification/src/types.rs @@ -0,0 +1,44 @@ +// Copyright 2021 Axiom-Team +// +// This file is part of Substrate-Libre-Currency. +// +// Substrate-Libre-Currency is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, version 3 of the License. +// +// Substrate-Libre-Currency is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with Substrate-Libre-Currency. If not, see <https://www.gnu.org/licenses/>. + +//! Various basic types for use in the certification pallet. + +use codec::{Decode, Encode}; +use frame_support::pallet_prelude::*; +use scale_info::TypeInfo; + +#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug, TypeInfo)] +pub struct CertValue<BlockNumber> { + pub renewable_on: BlockNumber, + pub removable_on: BlockNumber, +} + +#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug, TypeInfo)] +pub struct IdtyCertMeta<BlockNumber> { + pub issued_count: u8, + pub next_issuable_on: BlockNumber, + pub received_count: u32, +} + +impl<BlockNumber: Default> Default for IdtyCertMeta<BlockNumber> { + fn default() -> Self { + Self { + issued_count: 0, + next_issuable_on: BlockNumber::default(), + received_count: 0, + } + } +} diff --git a/pallets/identity/Cargo.toml b/pallets/identity/Cargo.toml index c137d3c06..df5c683e9 100644 --- a/pallets/identity/Cargo.toml +++ b/pallets/identity/Cargo.toml @@ -24,27 +24,32 @@ std = [ ] try-runtime = ['frame-support/try-runtime'] +[dependencies] + +# substrate +scale-info = { version = "1.0", default-features = false, features = ["derive"] } + [dependencies.codec] default-features = false features = ['derive'] package = 'parity-scale-codec' -version = '2.2.0' +version = '2.3.1' [dependencies.frame-benchmarking] default-features = false -git = 'https://github.com/paritytech/substrate.git' +git = 'https://github.com/librelois/substrate.git' optional = true -tag = 'monthly-2021-08' +branch = 'duniter-monthly-2022-01' [dependencies.frame-support] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.frame-system] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.serde] version = "1.0.101" @@ -53,18 +58,18 @@ features = ["derive"] [dependencies.sp-core] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-runtime] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-std] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' ### DOC ### @@ -77,5 +82,5 @@ version = '1.0.119' [dev-dependencies.sp-io] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' diff --git a/pallets/identity/src/lib.rs b/pallets/identity/src/lib.rs index a5ac4e31d..a11aaba47 100644 --- a/pallets/identity/src/lib.rs +++ b/pallets/identity/src/lib.rs @@ -15,8 +15,10 @@ // along with Substrate-Libre-Currency. If not, see <https://www.gnu.org/licenses/>. #![cfg_attr(not(feature = "std"), no_std)] +#![allow(clippy::type_complexity)] pub mod traits; +mod types; #[cfg(test)] mod mock; @@ -28,14 +30,12 @@ mod tests; mod benchmarking;*/ pub use pallet::*; +pub use types::*; use crate::traits::*; use codec::Codec; use frame_support::dispatch::Weight; -#[cfg(feature = "std")] -use serde::{Deserialize, Serialize}; use sp_runtime::traits::{AtLeast32BitUnsigned, One, Saturating, Zero}; -use sp_std::collections::btree_set::BTreeSet; use sp_std::fmt::Debug; use sp_std::prelude::*; @@ -44,6 +44,7 @@ pub mod pallet { use super::*; use frame_support::pallet_prelude::*; use frame_system::pallet_prelude::*; + use scale_info::TypeInfo; /// Configure the pallet by specifying the parameters and types on which it depends. #[pallet::config] @@ -61,6 +62,8 @@ pub mod pallet { type EnsureIdtyCallAllowed: EnsureIdtyCallAllowed<Self>; /// Identity custom data type IdtyData: Parameter + Member + MaybeSerializeDeserialize + Debug + Default; + /// Identity custom data provider + type IdtyDataProvider: ProvideIdtyData<Self>; /// Identity decentralized identifier type IdtyDid: IdtyDid; /// A short identity index. @@ -103,7 +106,7 @@ pub mod pallet { // A value placed in storage that represents the current version of the Balances storage. // This value is used by the `on_runtime_upgrade` logic to determine whether we run // storage migration logic. This should match directly with the semantic versions of the Rust crate. - #[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug)] + #[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug, TypeInfo)] pub enum Releases { V1_0_0, } @@ -113,66 +116,6 @@ pub mod pallet { } } - #[cfg_attr(feature = "std", derive(Deserialize, Serialize))] - #[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug)] - pub enum IdtyStatus { - Created, - ConfirmedByOwner, - Validated, - Expired, - } - impl Default for IdtyStatus { - fn default() -> Self { - IdtyStatus::Created - } - } - - #[cfg_attr(feature = "std", derive(Deserialize, Serialize))] - #[derive(Encode, Decode, Clone, PartialEq, Eq)] - pub struct IdtyValue<T: Config> { - pub did: T::IdtyDid, - pub expire_on: T::BlockNumber, - pub owner_key: T::AccountId, - pub removable_on: T::BlockNumber, - pub renewable_on: T::BlockNumber, - pub rights: Vec<(T::IdtyRight, Option<T::AccountId>)>, - pub status: IdtyStatus, - pub data: T::IdtyData, - } - impl<T: Config> Default for IdtyValue<T> { - fn default() -> Self { - Self { - did: Default::default(), - expire_on: frame_system::Pallet::<T>::block_number() - + T::MaxInactivityPeriod::get(), - owner_key: Default::default(), - removable_on: T::BlockNumber::zero(), - renewable_on: frame_system::Pallet::<T>::block_number() + T::RenewablePeriod::get(), - rights: Default::default(), - status: Default::default(), - data: Default::default(), - } - } - } - impl<T: Config> IdtyValue<T> { - pub fn get_right_key(&self, right: T::IdtyRight) -> Option<T::AccountId> { - if let Ok(index) = self - .rights - .binary_search_by(|(right_, _)| right_.cmp(&right)) - { - if self.rights[index].1.is_some() { - self.rights[index].1.clone() - } else if right.allow_owner_key() { - Some(self.owner_key.clone()) - } else { - None - } - } else { - None - } - } - } - /// Storage version of the pallet. #[pallet::storage] pub(super) type StorageVersion<T: Config> = StorageValue<_, Releases, ValueQuery>; @@ -180,8 +123,13 @@ pub mod pallet { /// Identities #[pallet::storage] #[pallet::getter(fn identity)] - pub type Identities<T: Config> = - StorageMap<_, Blake2_128Concat, T::IdtyIndex, IdtyValue<T>, ValueQuery>; + pub type Identities<T: Config> = StorageMap< + _, + Blake2_128Concat, + T::IdtyIndex, + IdtyValue<T::AccountId, T::BlockNumber, T::IdtyData, T::IdtyDid, T::IdtyRight>, + OptionQuery, + >; /// IdentitiesByDid #[pallet::storage] @@ -214,10 +162,10 @@ pub mod pallet { >; // GENESIS // - #[pallet::genesis_config] pub struct GenesisConfig<T: Config> { - pub identities: Vec<IdtyValue<T>>, + pub identities: + Vec<IdtyValue<T::AccountId, T::BlockNumber, T::IdtyData, T::IdtyDid, T::IdtyRight>>, } #[cfg(feature = "std")] @@ -232,7 +180,7 @@ pub mod pallet { #[pallet::genesis_build] impl<T: Config> GenesisBuild<T> for GenesisConfig<T> { fn build(&self) { - let mut dids = BTreeSet::new(); + let mut dids = sp_std::collections::btree_set::BTreeSet::new(); for idty_value in &self.identities { assert!( !dids.contains(&idty_value.did), @@ -290,11 +238,6 @@ pub mod pallet { // https://substrate.dev/docs/en/knowledgebase/runtime/events #[pallet::event] #[pallet::generate_deposit(pub(super) fn deposit_event)] - #[pallet::metadata( - T::IdtyDid = "IdtyDid", - T::IdtyRight = "IdtyRight", - T::AccountId = "AccountId" - )] pub enum Event<T: Config> { /// A new identity has been created /// [idty, owner_key] @@ -338,8 +281,9 @@ pub mod pallet { idty_did: T::IdtyDid, owner_key: T::AccountId, ) -> DispatchResultWithPostInfo { + T::EnsureIdtyCallAllowed::can_create_identity(origin, creator, &idty_did, &owner_key)?; let idty_data = - T::EnsureIdtyCallAllowed::create_identity(origin, creator, &idty_did, &owner_key)?; + T::IdtyDataProvider::provide_identity_data(creator, &idty_did, &owner_key); if <IdentitiesByDid<T>>::contains_key(&idty_did) { return Err(Error::<T>::IdtyAlreadyExist.into()); } @@ -707,8 +651,10 @@ pub mod pallet { impl<T: Config> Pallet<T> { pub fn set_idty_data(idty_index: T::IdtyIndex, idty_data: T::IdtyData) { - Identities::<T>::mutate_exists(idty_index, |idty_val| { - idty_val.get_or_insert(IdtyValue::default()).data = idty_data; + Identities::<T>::mutate_exists(idty_index, |idty_val_opt| { + if let Some(ref mut idty_val) = idty_val_opt { + idty_val.data = idty_data; + } }); } } @@ -750,10 +696,10 @@ pub mod pallet { if let Ok(idty_val) = <Identities<T>>::try_get(idty_index) { if idty_val.expire_on == block_number { <Identities<T>>::mutate_exists(idty_index, |idty_val_opt| { - idty_val_opt.get_or_insert(IdtyValue::default()).rights = - Vec::with_capacity(0); - idty_val_opt.get_or_insert(IdtyValue::default()).status = - IdtyStatus::Expired; + if let Some(ref mut idty_val) = idty_val_opt { + idty_val.rights = Vec::with_capacity(0); + idty_val.status = IdtyStatus::Expired; + } }); total_weight += T::OnIdtyChange::on_idty_change(idty_index, IdtyEvent::Expired); diff --git a/pallets/identity/src/mock.rs b/pallets/identity/src/mock.rs index e36c06d6e..fb6c72fbb 100644 --- a/pallets/identity/src/mock.rs +++ b/pallets/identity/src/mock.rs @@ -19,10 +19,12 @@ use crate::{self as pallet_identity}; use frame_support::{ codec::{Decode, Encode}, parameter_types, - traits::{AllowAll, OnFinalize, OnInitialize}, + traits::{Everything, OnFinalize, OnInitialize}, RuntimeDebug, }; use frame_system as system; +use scale_info::TypeInfo; +use serde::{Deserialize, Serialize}; use sp_core::H256; use sp_runtime::{ testing::Header, @@ -34,13 +36,38 @@ type AccountId = u64; type Block = frame_system::mocking::MockBlock<Test>; type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic<Test>; -#[cfg_attr(feature = "std", derive(Deserialize, Serialize))] -#[derive(Encode, Decode, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, RuntimeDebug)] +#[derive( + Encode, + Decode, + Default, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + RuntimeDebug, + Deserialize, + Serialize, + TypeInfo, +)] pub struct IdtyDid(pub u64); impl pallet_identity::traits::IdtyDid for IdtyDid {} -#[cfg_attr(feature = "std", derive(Deserialize, Serialize))] -#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, RuntimeDebug)] +#[derive( + Encode, + Decode, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + RuntimeDebug, + Deserialize, + Serialize, + TypeInfo, +)] pub enum IdtyRight { Right1, Right2, @@ -54,6 +81,9 @@ impl pallet_identity::traits::IdtyRight for IdtyRight { fn allow_owner_key(self) -> bool { self == Self::Right1 } + fn create_idty_right() -> Self { + Self::Right1 + } } // Configure a mock runtime to test the pallet. @@ -74,7 +104,7 @@ parameter_types! { } impl system::Config for Test { - type BaseCallFilter = AllowAll; + type BaseCallFilter = Everything; type BlockWeights = (); type BlockLength = (); type DbWeight = (); @@ -97,6 +127,7 @@ impl system::Config for Test { type SystemWeightInfo = (); type SS58Prefix = SS58Prefix; type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; } parameter_types! { @@ -114,6 +145,7 @@ impl pallet_identity::Config for Test { type DelRightOrigin = system::EnsureRoot<AccountId>; type EnsureIdtyCallAllowed = (); type IdtyData = (); + type IdtyDataProvider = (); type IdtyDid = IdtyDid; type IdtyIndex = u64; type IdtyValidationOrigin = system::EnsureRoot<AccountId>; diff --git a/pallets/identity/src/tests.rs b/pallets/identity/src/tests.rs index ba173f31c..309764491 100644 --- a/pallets/identity/src/tests.rs +++ b/pallets/identity/src/tests.rs @@ -99,7 +99,7 @@ fn test_two_identities() { ); // The Did(1) identity has no more rights, the inactivity period must start to run - let idty2 = Identity::identity(2); + let idty2 = Identity::identity(2).expect("idty not found"); assert!(idty2.rights.is_empty()); assert_eq!(idty2.removable_on, 7); }); diff --git a/pallets/identity/src/traits.rs b/pallets/identity/src/traits.rs index 441d4b05c..0550946da 100644 --- a/pallets/identity/src/traits.rs +++ b/pallets/identity/src/traits.rs @@ -21,27 +21,49 @@ use sp_runtime::traits::MaybeSerializeDeserialize; use sp_std::fmt::Debug; pub trait EnsureIdtyCallAllowed<T: Config> { - fn create_identity( + fn can_create_identity( origin: T::Origin, creator: T::IdtyIndex, idty_did: &T::IdtyDid, idty_owner_key: &T::AccountId, - ) -> Result<T::IdtyData, DispatchError>; + ) -> Result<(), DispatchError>; } + impl<T: Config> EnsureIdtyCallAllowed<T> for () { - fn create_identity( + fn can_create_identity( origin: T::Origin, _creator: T::IdtyIndex, _idty_did: &T::IdtyDid, _idty_owner_key: &T::AccountId, - ) -> Result<T::IdtyData, DispatchError> { + ) -> Result<(), DispatchError> { match ensure_root(origin) { - Ok(()) => Ok(T::IdtyData::default()), + Ok(()) => Ok(()), Err(_) => Err(DispatchError::BadOrigin), } } } +pub trait ProvideIdtyData<T: Config> { + fn provide_identity_data( + creator: T::IdtyIndex, + idty_did: &T::IdtyDid, + idty_owner_key: &T::AccountId, + ) -> T::IdtyData; +} + +impl<T: Config> ProvideIdtyData<T> for () +where + T::IdtyData: Default, +{ + fn provide_identity_data( + _creator: T::IdtyIndex, + _idty_did: &T::IdtyDid, + _idty_owner_key: &T::AccountId, + ) -> T::IdtyData { + Default::default() + } +} + pub trait IdtyDid: frame_support::Parameter + frame_support::pallet_prelude::Member @@ -63,6 +85,7 @@ pub trait IdtyRight: + Ord { fn allow_owner_key(self) -> bool; + fn create_idty_right() -> Self; } pub enum IdtyEvent<T: Config> { diff --git a/pallets/identity/src/types.rs b/pallets/identity/src/types.rs new file mode 100644 index 000000000..420c912a0 --- /dev/null +++ b/pallets/identity/src/types.rs @@ -0,0 +1,84 @@ +// Copyright 2021 Axiom-Team +// +// This file is part of Substrate-Libre-Currency. +// +// Substrate-Libre-Currency is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, version 3 of the License. +// +// Substrate-Libre-Currency is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with Substrate-Libre-Currency. If not, see <https://www.gnu.org/licenses/>. + +//! Various basic types for use in the certification pallet. + +use codec::{Decode, Encode}; +use frame_support::pallet_prelude::*; +use scale_info::TypeInfo; +#[cfg(feature = "std")] +use serde::{Deserialize, Serialize}; +use sp_std::vec::Vec; + +#[cfg_attr(feature = "std", derive(Deserialize, Serialize))] +#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug, TypeInfo)] +pub enum IdtyStatus { + Created, + ConfirmedByOwner, + Validated, + Expired, +} +impl Default for IdtyStatus { + fn default() -> Self { + IdtyStatus::Created + } +} + +#[cfg_attr(feature = "std", derive(Deserialize, Serialize))] +#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] +pub struct IdtyValue< + AccountId: Decode + Encode + TypeInfo, + BlockNumber: Decode + Encode + TypeInfo, + IdtyData: Decode + Encode + TypeInfo, + IdtyDid: Decode + Encode + TypeInfo, + IdtyRight: Decode + Encode + TypeInfo, +> { + pub did: IdtyDid, + pub expire_on: BlockNumber, + pub owner_key: AccountId, + pub removable_on: BlockNumber, + pub renewable_on: BlockNumber, + pub rights: Vec<(IdtyRight, Option<AccountId>)>, + pub status: IdtyStatus, + pub data: IdtyData, +} + +impl<AccountId, BlockNumber, IdtyData, IdtyDid, IdtyRight> + IdtyValue<AccountId, BlockNumber, IdtyData, IdtyDid, IdtyRight> +where + AccountId: Clone + Decode + Encode + TypeInfo, + BlockNumber: Decode + Encode + TypeInfo, + IdtyData: Decode + Encode + TypeInfo, + IdtyDid: Decode + Encode + TypeInfo, + IdtyRight: crate::traits::IdtyRight + Decode + Encode + TypeInfo, +{ + pub fn get_right_key(&self, right: IdtyRight) -> Option<AccountId> { + if let Ok(index) = self + .rights + .binary_search_by(|(right_, _)| right_.cmp(&right)) + { + if self.rights[index].1.is_some() { + self.rights[index].1.clone() + } else if right.allow_owner_key() { + Some(self.owner_key.clone()) + } else { + None + } + } else { + None + } + } +} diff --git a/pallets/ud-accounts-storage/Cargo.toml b/pallets/ud-accounts-storage/Cargo.toml index 3d13fa297..16eabf58b 100644 --- a/pallets/ud-accounts-storage/Cargo.toml +++ b/pallets/ud-accounts-storage/Cargo.toml @@ -21,32 +21,37 @@ std = [ ] try-runtime = ['frame-support/try-runtime'] +[dependencies] + +# substrate +scale-info = { version = "1.0", default-features = false, features = ["derive"] } + [dependencies.codec] default-features = false features = ['derive'] package = 'parity-scale-codec' -version = '2.2.0' +version = '2.3.1' [dependencies.frame-benchmarking] default-features = false -git = 'https://github.com/paritytech/substrate.git' +git = 'https://github.com/librelois/substrate.git' optional = true -tag = 'monthly-2021-08' +branch = 'duniter-monthly-2022-01' [dependencies.frame-support] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.frame-system] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-std] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' ### DOC ### @@ -59,20 +64,20 @@ version = '1.0.119' [dev-dependencies.pallet-balances] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dev-dependencies.sp-core] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dev-dependencies.sp-io] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dev-dependencies.sp-runtime] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' diff --git a/pallets/ud-accounts-storage/src/lib.rs b/pallets/ud-accounts-storage/src/lib.rs index baa99bdf0..f318148bb 100644 --- a/pallets/ud-accounts-storage/src/lib.rs +++ b/pallets/ud-accounts-storage/src/lib.rs @@ -32,10 +32,9 @@ use sp_std::prelude::*; #[frame_support::pallet] pub mod pallet { - use sp_std::collections::btree_set::BTreeSet; - use super::*; use frame_support::pallet_prelude::*; + use scale_info::TypeInfo; // CONFIG // @@ -51,7 +50,7 @@ pub mod pallet { // A value placed in storage that represents the current version of the Balances storage. // This value is used by the `on_runtime_upgrade` logic to determine whether we run // storage migration logic. This should match directly with the semantic versions of the Rust crate. - #[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug)] + #[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug, TypeInfo)] pub enum Releases { V1_0_0, } @@ -77,7 +76,7 @@ pub mod pallet { #[pallet::genesis_config] pub struct GenesisConfig<T: Config> { - pub ud_accounts: BTreeSet<T::AccountId>, + pub ud_accounts: sp_std::collections::btree_set::BTreeSet<T::AccountId>, } #[cfg(feature = "std")] diff --git a/pallets/universal-dividend/Cargo.toml b/pallets/universal-dividend/Cargo.toml index 36f1ae6f2..d30d51095 100644 --- a/pallets/universal-dividend/Cargo.toml +++ b/pallets/universal-dividend/Cargo.toml @@ -22,42 +22,52 @@ std = [ ] try-runtime = ['frame-support/try-runtime'] +[dependencies] + +# substrate +scale-info = { version = "1.0", default-features = false, features = ["derive"] } + [dependencies.codec] default-features = false features = ['derive'] package = 'parity-scale-codec' -version = '2.2.0' +version = '2.3.1' [dependencies.frame-benchmarking] default-features = false -git = 'https://github.com/paritytech/substrate.git' +git = 'https://github.com/librelois/substrate.git' optional = true -tag = 'monthly-2021-08' +branch = 'duniter-monthly-2022-01' [dependencies.frame-support] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.frame-system] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-arithmetic] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-io] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-std] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' + +[dependencies.sp-runtime] +default-features = false +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' ### DOC ### @@ -69,8 +79,8 @@ targets = ['x86_64-unknown-linux-gnu'] [dev-dependencies.pallet-balances] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dev-dependencies.serde] features = ["derive"] @@ -78,15 +88,15 @@ version = '1.0.119' [dev-dependencies.sp-core] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dev-dependencies.sp-io] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dev-dependencies.sp-runtime] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' diff --git a/pallets/universal-dividend/src/lib.rs b/pallets/universal-dividend/src/lib.rs index 16b33fdd7..d1ab546cd 100644 --- a/pallets/universal-dividend/src/lib.rs +++ b/pallets/universal-dividend/src/lib.rs @@ -27,11 +27,12 @@ mod tests; #[cfg(feature = "runtime-benchmarks")] mod benchmarking; -use frame_support::traits::Currency; +use frame_support::traits::{tokens::ExistenceRequirement, Currency}; use sp_arithmetic::{ per_things::Permill, - traits::{One, Zero}, + traits::{CheckedSub, One, Saturating, Zero}, }; +use sp_runtime::traits::StaticLookup; use sp_std::prelude::*; const OFFCHAIN_PREFIX_UD_HISTORY: &[u8] = b"ud::history::"; @@ -41,23 +42,13 @@ pub mod pallet { use super::*; use frame_support::pallet_prelude::*; use frame_system::pallet_prelude::*; + use scale_info::TypeInfo; pub type BalanceOf<T> = <<T as Config>::Currency as Currency<<T as frame_system::Config>::AccountId>>::Balance; #[pallet::config] pub trait Config: frame_system::Config { - #[pallet::constant] - /// Universal dividend creation period - type UdCreationPeriod: Get<Self::BlockNumber>; - #[pallet::constant] - /// Universal dividend reevaluation period (in number of creation period) - type UdReevalPeriod: Get<BalanceOf<Self>>; - #[pallet::constant] - /// Universal dividend reevaluation period in number of blocks - /// Must be equal to UdReevalPeriod * UdCreationPeriod - type UdReevalPeriodInBlocks: Get<Self::BlockNumber>; - // The currency type Currency: Currency<Self::AccountId>; /// Because this pallet emits events, it depends on the runtime's definition of an event. @@ -69,6 +60,25 @@ pub mod pallet { #[pallet::constant] /// Square of the money growth rate per ud reevaluation period type SquareMoneyGrowthRate: Get<Permill>; + #[pallet::constant] + /// Universal dividend creation period + type UdCreationPeriod: Get<Self::BlockNumber>; + #[pallet::constant] + /// Universal dividend first reevaluation (in block number) + /// Must be leess than UdReevalPeriodInBlocks + type UdFirstReeval: Get<Self::BlockNumber>; + #[pallet::constant] + /// Universal dividend reevaluation period (in number of creation period) + type UdReevalPeriod: Get<BalanceOf<Self>>; + #[pallet::constant] + /// Universal dividend reevaluation period in number of blocks + /// Must be equal to UdReevalPeriod * UdCreationPeriod + type UdReevalPeriodInBlocks: Get<Self::BlockNumber>; + #[pallet::constant] + /// The number of units to divide the amounts expressed in number of UDs + /// Example: If you wish to express the UD amounts with a maximum precision of the order + /// of the milliUD, choose 1000 + type UnitsPerUd: Get<BalanceOf<Self>>; } // STORAGE // @@ -80,7 +90,7 @@ pub mod pallet { // A value placed in storage that represents the current version of the Balances storage. // This value is used by the `on_runtime_upgrade` logic to determine whether we run // storage migration logic. This should match directly with the semantic versions of the Rust crate. - #[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug)] + #[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug, TypeInfo)] pub enum Releases { V1_0_0, } @@ -94,7 +104,7 @@ pub mod pallet { #[pallet::storage] pub(super) type StorageVersion<T: Config> = StorageValue<_, Releases, ValueQuery>; - #[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug)] + #[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug, TypeInfo)] pub struct LastReeval<T: Config> { members_count: BalanceOf<T>, monetary_mass: BalanceOf<T>, @@ -157,7 +167,9 @@ pub mod pallet { fn on_initialize(n: T::BlockNumber) -> Weight { if (n % T::UdCreationPeriod::get()).is_zero() { let current_members_count = T::MembersCount::get(); - if (n % T::UdReevalPeriodInBlocks::get()).is_zero() { + if (n % T::UdReevalPeriodInBlocks::get()).checked_sub(&T::UdFirstReeval::get()) + == Some(Zero::zero()) + { Self::reeval_ud(current_members_count) + Self::create_ud(current_members_count, n) } else { @@ -175,7 +187,6 @@ pub mod pallet { // https://substrate.dev/docs/en/knowledgebase/runtime/events #[pallet::event] #[pallet::generate_deposit(pub(super) fn deposit_event)] - #[pallet::metadata(T::AccountId = "AccountId", BalanceOf<T> = "Balance")] pub enum Event<T: Config> { /// A new universal dividend is created /// [ud_amout, members_count] @@ -204,6 +215,24 @@ pub mod pallet { total_weight } + fn do_transfer_ud( + origin: OriginFor<T>, + dest: <T::Lookup as StaticLookup>::Source, + value: BalanceOf<T>, + existence_requirement: ExistenceRequirement, + ) -> DispatchResultWithPostInfo { + let who = ensure_signed(origin)?; + let dest = T::Lookup::lookup(dest)?; + let ud_amount = <CurrentUdStorage<T>>::try_get() + .map_err(|_| DispatchError::Other("corrupted storage"))?; + T::Currency::transfer( + &who, + &dest, + value.saturating_mul(ud_amount) / T::UnitsPerUd::get(), + existence_requirement, + )?; + Ok(().into()) + } fn reeval_ud(members_count: BalanceOf<T>) -> Weight { let total_weight: Weight = 0; @@ -252,4 +281,29 @@ pub mod pallet { sp_io::offchain_index::set(key.as_ref(), ud_amount.encode().as_ref()); } } + + // CALLS // + + #[pallet::call] + impl<T: Config> Pallet<T> { + /// Transfer some liquid free balance to another account, in milliUD. + #[pallet::weight(0)] + pub fn transfer_ud( + origin: OriginFor<T>, + dest: <T::Lookup as StaticLookup>::Source, + #[pallet::compact] value: BalanceOf<T>, + ) -> DispatchResultWithPostInfo { + Self::do_transfer_ud(origin, dest, value, ExistenceRequirement::AllowDeath) + } + + /// Transfer some liquid free balance to another account, in milliUD. + #[pallet::weight(0)] + pub fn transfer_ud_keep_alive( + origin: OriginFor<T>, + dest: <T::Lookup as StaticLookup>::Source, + #[pallet::compact] value: BalanceOf<T>, + ) -> DispatchResultWithPostInfo { + Self::do_transfer_ud(origin, dest, value, ExistenceRequirement::KeepAlive) + } + } } diff --git a/pallets/universal-dividend/src/mock.rs b/pallets/universal-dividend/src/mock.rs index 145d0dcf6..ececa8976 100644 --- a/pallets/universal-dividend/src/mock.rs +++ b/pallets/universal-dividend/src/mock.rs @@ -18,7 +18,7 @@ use super::*; use crate::{self as pallet_universal_dividend}; use frame_support::{ parameter_types, - traits::{AllowAll, Get, OnFinalize, OnInitialize}, + traits::{Everything, Get, OnFinalize, OnInitialize}, }; use frame_system as system; use sp_core::H256; @@ -52,7 +52,7 @@ parameter_types! { } impl system::Config for Test { - type BaseCallFilter = AllowAll; + type BaseCallFilter = Everything; type BlockWeights = (); type BlockLength = (); type DbWeight = (); @@ -75,6 +75,7 @@ impl system::Config for Test { type SystemWeightInfo = (); type SS58Prefix = SS58Prefix; type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; } parameter_types! { @@ -98,6 +99,7 @@ parameter_types! { pub const MembersCount: u64 = 3; pub const SquareMoneyGrowthRate: Permill = Permill::from_percent(10); pub const UdCreationPeriod: BlockNumber = 2; + pub const UdFirstReeval: BlockNumber = 0; pub const UdReevalPeriod: Balance = 4; pub const UdReevalPeriodInBlocks: BlockNumber = 8; // 2 * 4 } @@ -116,8 +118,10 @@ impl pallet_universal_dividend::Config for Test { type MembersIds = FakeWot; type SquareMoneyGrowthRate = SquareMoneyGrowthRate; type UdCreationPeriod = UdCreationPeriod; + type UdFirstReeval = UdFirstReeval; type UdReevalPeriod = UdReevalPeriod; type UdReevalPeriodInBlocks = UdReevalPeriodInBlocks; + type UnitsPerUd = frame_support::traits::ConstU64<1_000>; } // Build genesis storage according to the mock runtime. diff --git a/pallets/universal-dividend/src/tests.rs b/pallets/universal-dividend/src/tests.rs index 8af0844e7..c6551c5ad 100644 --- a/pallets/universal-dividend/src/tests.rs +++ b/pallets/universal-dividend/src/tests.rs @@ -41,9 +41,10 @@ fn test_ud_creation() { // Block #2 must generate 7 events, 2 events per new account fed, plus 1 event for the creation of the UD. let events = System::events(); - assert_eq!(events.len(), 7); + println!("events: {:#?}", events); + assert_eq!(events.len(), 10); assert_eq!( - events[6], + events[9], EventRecord { phase: Phase::Initialization, event: Event::UniversalDividend(crate::Event::NewUdCreated(1000, 3)), diff --git a/resources/metadata.scale b/resources/metadata.scale new file mode 100644 index 0000000000000000000000000000000000000000..9477c5c7185d443dcb739fe13bb8fb98c0742bef GIT binary patch literal 56297 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 literal 0 HcmV?d00001 diff --git a/runtime/common/Cargo.toml b/runtime/common/Cargo.toml index 9767f45ca..798430382 100644 --- a/runtime/common/Cargo.toml +++ b/runtime/common/Cargo.toml @@ -35,21 +35,24 @@ pallet-identity = { path = '../../pallets/identity', default-features = false } pallet-ud-accounts-storage = { path = '../../pallets/ud-accounts-storage', default-features = false } smallvec = "1.6.1" +# substrate +scale-info = { version = "1.0", default-features = false, features = ["derive"] } + [dependencies.codec] default-features = false features = ['derive'] package = 'parity-scale-codec' -version = '2.2.0' +version = '2.3.1' [dependencies.frame-support] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.frame-system] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.serde] version = "1.0.101" @@ -58,20 +61,20 @@ features = ["derive"] [dependencies.sp-arithmetic] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-core] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-runtime] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-std] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' diff --git a/runtime/common/src/apis.rs b/runtime/common/src/apis.rs index d7eeff45d..dba0901a1 100644 --- a/runtime/common/src/apis.rs +++ b/runtime/common/src/apis.rs @@ -36,7 +36,7 @@ macro_rules! runtime_apis { impl sp_api::Metadata<Block> for Runtime { fn metadata() -> OpaqueMetadata { - Runtime::metadata().into() + OpaqueMetadata::new(Runtime::metadata().into()) } } @@ -96,6 +96,10 @@ macro_rules! runtime_apis { Grandpa::grandpa_authorities() } + fn current_set_id() -> fg_primitives::SetId { + Grandpa::current_set_id() + } + fn submit_report_equivocation_unsigned_extrinsic( _equivocation_proof: fg_primitives::EquivocationProof< <Block as BlockT>::Hash, diff --git a/runtime/common/src/authorizations.rs b/runtime/common/src/authorizations.rs index 4a4a6e591..f4c286882 100644 --- a/runtime/common/src/authorizations.rs +++ b/runtime/common/src/authorizations.rs @@ -18,10 +18,11 @@ use crate::entities::{IdtyData, IdtyDid, IdtyRight}; use crate::{BlockNumber, IdtyIndex}; use frame_support::pallet_prelude::DispatchError; use frame_support::traits::EnsureOrigin; +use pallet_certification::traits::IsIdtyAllowedToCreateCert; use pallet_identity::IdtyStatus; -pub struct EnsureIdtyCallAllowedImpl<Runtime, const IDTY_CREATE_PERIOD: BlockNumber>( - core::marker::PhantomData<Runtime>, +pub struct EnsureIdtyCallAllowedImpl<Runtime, IsIdtyAllowedToCreateCertImpl>( + core::marker::PhantomData<(Runtime, IsIdtyAllowedToCreateCertImpl)>, ); impl< Runtime: frame_system::Config<BlockNumber = BlockNumber> @@ -30,47 +31,46 @@ impl< IdtyDid = IdtyDid, IdtyIndex = IdtyIndex, IdtyRight = IdtyRight, - > + pallet_certification::Config<IdtyIndex = IdtyIndex>, - const IDTY_CREATE_PERIOD: BlockNumber, + >, + IsIdtyAllowedToCreateCertImpl: IsIdtyAllowedToCreateCert<IdtyIndex>, > pallet_identity::traits::EnsureIdtyCallAllowed<Runtime> - for EnsureIdtyCallAllowedImpl<Runtime, IDTY_CREATE_PERIOD> + for EnsureIdtyCallAllowedImpl<Runtime, IsIdtyAllowedToCreateCertImpl> { - fn create_identity( + fn can_create_identity( origin: Runtime::Origin, creator: IdtyIndex, _idty_did: &IdtyDid, _idty_owner_key: &Runtime::AccountId, - ) -> Result<IdtyData, DispatchError> { - let block_number = frame_system::Pallet::<Runtime>::block_number(); - let creator_idty_data = IdtyData { - can_create_on: block_number + IDTY_CREATE_PERIOD, - }; - let new_idty_data = IdtyData { can_create_on: 0 }; + ) -> Result<(), DispatchError> { match origin.into() { - Ok(frame_system::RawOrigin::Root) => { - pallet_identity::Pallet::<Runtime>::set_idty_data(creator, creator_idty_data); - Ok(new_idty_data) - } + Ok(frame_system::RawOrigin::Root) => Ok(()), Ok(frame_system::RawOrigin::Signed(signer)) => { - let creator_idty = pallet_identity::Pallet::<Runtime>::identity(creator); - - if let Some(authorized_key) = creator_idty.get_right_key(IdtyRight::CreateIdty) { - if signer != authorized_key { - frame_support::runtime_print!("signer != authorized_key"); - Err(DispatchError::Other("signer != authorized_key")) - } else if !pallet_certification::Pallet::<Runtime>::is_idty_allowed_to_create_cert(creator) { - frame_support::runtime_print!("not allowed to create cert"); - Err(DispatchError::Other("not allowed to create cert")) - } else if creator_idty.data.can_create_on > frame_system::Pallet::<Runtime>::block_number() { - frame_support::runtime_print!("Not respect IdtyCreatePeriod"); - Err(DispatchError::Other("Not respect IdtyCreatePeriod")) + if let Some(creator_idty) = pallet_identity::Pallet::<Runtime>::identity(creator) { + if let Some(authorized_key) = creator_idty.get_right_key(IdtyRight::CreateIdty) + { + if signer != authorized_key { + frame_support::runtime_print!("signer != authorized_key"); + Err(DispatchError::Other("signer != authorized_key")) + } else if !IsIdtyAllowedToCreateCertImpl::is_idty_allowed_to_create_cert( + creator, + ) { + frame_support::runtime_print!("not allowed to create cert"); + Err(DispatchError::Other("not allowed to create cert")) + } else if creator_idty.data.can_create_on + > frame_system::Pallet::<Runtime>::block_number() + { + frame_support::runtime_print!("Not respect IdtyCreatePeriod"); + Err(DispatchError::Other("Not respect IdtyCreatePeriod")) + } else { + Ok(()) + } } else { - pallet_identity::Pallet::<Runtime>::set_idty_data(creator, creator_idty_data); - Ok(new_idty_data) + frame_support::runtime_print!("Idty not have right CreateIdty"); + Err(DispatchError::Other("Idty not have right CreateIdty")) } } else { - frame_support::runtime_print!("Idty not have right CreateIdty"); - Err(DispatchError::Other("Idty not have right CreateIdty")) + frame_support::runtime_print!("Idty not found"); + Err(DispatchError::Other("Idty not found")) } } _ => { @@ -93,20 +93,30 @@ impl<Runtime: pallet_identity::Config<IdtyIndex = IdtyIndex, IdtyRight = IdtyRig match o.0.clone().into() { Ok(frame_system::RawOrigin::Root) => Ok(()), Ok(frame_system::RawOrigin::Signed(who)) => { - let issuer = pallet_identity::Pallet::<Runtime>::identity(o.1); - if let Some(allowed_key) = issuer.get_right_key(IdtyRight::StrongCert) { - if who == allowed_key { - let receiver = pallet_identity::Pallet::<Runtime>::identity(o.2); - match receiver.status { - IdtyStatus::ConfirmedByOwner | IdtyStatus::Validated => Ok(()), - IdtyStatus::Created | IdtyStatus::Expired => Err(o), + if let Some(issuer) = pallet_identity::Pallet::<Runtime>::identity(o.1) { + if let Some(allowed_key) = issuer.get_right_key(IdtyRight::StrongCert) { + if who == allowed_key { + if let Some(receiver) = + pallet_identity::Pallet::<Runtime>::identity(o.2) + { + match receiver.status { + IdtyStatus::ConfirmedByOwner | IdtyStatus::Validated => Ok(()), + IdtyStatus::Created | IdtyStatus::Expired => Err(o), + } + } else { + // Receiver not found + Err(o) + } + } else { + // Bad key + Err(o) } } else { - // Bad key + // Issuer has not right StrongCert Err(o) } } else { - // Issuer has not right StrongCert + // Issuer not found Err(o) } } diff --git a/runtime/common/src/entities.rs b/runtime/common/src/entities.rs index d0442983d..877ab4dab 100644 --- a/runtime/common/src/entities.rs +++ b/runtime/common/src/entities.rs @@ -16,12 +16,13 @@ use crate::BlockNumber; use frame_support::pallet_prelude::*; +use scale_info::TypeInfo; #[cfg(feature = "std")] use serde::{Deserialize, Serialize}; use sp_core::H256; #[cfg_attr(feature = "std", derive(Deserialize, Serialize))] -#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, RuntimeDebug)] +#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, RuntimeDebug, TypeInfo)] pub enum IdtyRight { CreateIdty, LightCert, @@ -41,10 +42,13 @@ impl pallet_identity::traits::IdtyRight for IdtyRight { //_ => false, } } + fn create_idty_right() -> Self { + Self::CreateIdty + } } #[cfg_attr(feature = "std", derive(Deserialize, Serialize))] -#[derive(Encode, Decode, Default, Clone, Copy, PartialEq, Eq, RuntimeDebug)] +#[derive(Encode, Decode, Default, Clone, Copy, PartialEq, Eq, RuntimeDebug, TypeInfo)] pub struct IdtyDid { pub hash: H256, pub planet: Planet, @@ -86,13 +90,13 @@ impl Ord for IdtyDid { impl pallet_identity::traits::IdtyDid for IdtyDid {} #[cfg_attr(feature = "std", derive(Deserialize, Serialize))] -#[derive(Encode, Decode, Default, Clone, Copy, PartialEq, Eq, RuntimeDebug)] +#[derive(Encode, Decode, Default, Clone, Copy, PartialEq, Eq, RuntimeDebug, TypeInfo)] pub struct IdtyData { pub can_create_on: BlockNumber, } #[cfg_attr(feature = "std", derive(Deserialize, Serialize))] -#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, RuntimeDebug)] +#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, RuntimeDebug, TypeInfo)] pub enum Planet { Earth, } diff --git a/runtime/common/src/handlers.rs b/runtime/common/src/handlers.rs index ce0e11543..47797dfdd 100644 --- a/runtime/common/src/handlers.rs +++ b/runtime/common/src/handlers.rs @@ -15,23 +15,23 @@ // along with Substrate-Libre-Currency. If not, see <https://www.gnu.org/licenses/>. use crate::entities::IdtyRight; +use frame_support::instances::Instance1; use frame_support::weights::Weight; use pallet_identity::traits::IdtyEvent; -type IdtyIndex<T> = <T as pallet_identity::Config>::IdtyIndex; - pub struct OnIdtyChangeHandler<Runtime>(core::marker::PhantomData<Runtime>); impl< - II, - Runtime: pallet_identity::Config<IdtyIndex = II> + pallet_certification::Config<IdtyIndex = II>, + IdtyIndex, + Runtime: pallet_identity::Config<IdtyIndex = IdtyIndex> + + pallet_certification::Config<Instance1, IdtyIndex = IdtyIndex>, > pallet_identity::traits::OnIdtyChange<Runtime> for OnIdtyChangeHandler<Runtime> { - fn on_idty_change(idty_index: IdtyIndex<Runtime>, idty_event: IdtyEvent<Runtime>) -> Weight { + fn on_idty_change(idty_index: IdtyIndex, idty_event: IdtyEvent<Runtime>) -> Weight { let total_weight = 0; match idty_event { IdtyEvent::Created { creator } => { // totad_weight += StrongCert::WeightInfo::add_cert(); - let _ = <pallet_certification::Pallet<Runtime>>::add_cert( + let _ = <pallet_certification::Pallet<Runtime, Instance1>>::add_cert( frame_system::Origin::<Runtime>::Root.into(), creator, idty_index, @@ -48,11 +48,13 @@ impl< pub struct OnRightKeyChangeHandler<Runtime>(core::marker::PhantomData<Runtime>); impl< - Runtime: pallet_identity::Config<IdtyRight = IdtyRight> + pallet_ud_accounts_storage::Config, + IdtyIndex, + Runtime: pallet_identity::Config<IdtyIndex = IdtyIndex, IdtyRight = IdtyRight> + + pallet_ud_accounts_storage::Config, > pallet_identity::traits::OnRightKeyChange<Runtime> for OnRightKeyChangeHandler<Runtime> { fn on_right_key_change( - _idty_index: IdtyIndex<Runtime>, + _idty_index: IdtyIndex, right: Runtime::IdtyRight, old_key_opt: Option<Runtime::AccountId>, new_key_opt: Option<Runtime::AccountId>, @@ -75,16 +77,17 @@ pub struct OnNewStrongCertHandler< const MIN_STRONG_CERT_FOR_STRONG_CERT: u32, >(core::marker::PhantomData<Runtime>); impl< - Runtime: pallet_identity::Config<IdtyRight = IdtyRight>, + IdtyIndex, + Runtime: pallet_identity::Config<IdtyIndex = IdtyIndex, IdtyRight = IdtyRight>, const MIN_STRONG_CERT_FOR_UD: u32, const MIN_STRONG_CERT_FOR_STRONG_CERT: u32, - > pallet_certification::traits::OnNewcert<IdtyIndex<Runtime>> + > pallet_certification::traits::OnNewcert<IdtyIndex> for OnNewStrongCertHandler<Runtime, MIN_STRONG_CERT_FOR_UD, MIN_STRONG_CERT_FOR_STRONG_CERT> { fn on_new_cert( - _issuer: IdtyIndex<Runtime>, + _issuer: IdtyIndex, _issuer_issued_count: u8, - receiver: IdtyIndex<Runtime>, + receiver: IdtyIndex, receiver_received_count: u32, ) -> frame_support::dispatch::Weight { let total_weight = 0; @@ -111,15 +114,16 @@ pub struct OnRemovedStrongCertHandler<Runtime, const MIN_STRONG_CERT_FOR_UD: u32 core::marker::PhantomData<Runtime>, ); impl< - Runtime: pallet_identity::Config<IdtyRight = IdtyRight>, + IdtyIndex, + Runtime: pallet_identity::Config<IdtyIndex = IdtyIndex, IdtyRight = IdtyRight>, const MIN_STRONG_CERT_FOR_UD: u32, - > pallet_certification::traits::OnRemovedCert<IdtyIndex<Runtime>> + > pallet_certification::traits::OnRemovedCert<IdtyIndex> for OnRemovedStrongCertHandler<Runtime, MIN_STRONG_CERT_FOR_UD> { fn on_removed_cert( - _issuer: IdtyIndex<Runtime>, + _issuer: IdtyIndex, _issuer_issued_count: u8, - receiver: IdtyIndex<Runtime>, + receiver: IdtyIndex, receiver_received_count: u32, _expiration: bool, ) -> frame_support::dispatch::Weight { diff --git a/runtime/common/src/pallets_config.rs b/runtime/common/src/pallets_config.rs index 32e6e4c4e..c57a126ca 100644 --- a/runtime/common/src/pallets_config.rs +++ b/runtime/common/src/pallets_config.rs @@ -19,9 +19,11 @@ macro_rules! pallets_config { {$($custom:tt)*} => { $($custom)* + // SYSTEM // + impl frame_system::Config for Runtime { /// The basic call filter to use in dispatchable. - type BaseCallFilter = frame_support::traits::AllowAll; + type BaseCallFilter = frame_support::traits::Everything; /// Block & extrinsics weights: base values and limits. type BlockWeights = BlockWeights; /// The maximum length of a block (in bytes). @@ -68,28 +70,44 @@ macro_rules! pallets_config { type SS58Prefix = SS58Prefix; /// The set code logic, just the default since we're not a parachain. type OnSetCode = (); + type MaxConsumers = frame_support::traits::ConstU32<16>; } - impl pallet_grandpa::Config for Runtime { - type Event = Event; - type Call = Call; + // SCHEDULER // - type KeyOwnerProofSystem = (); + parameter_types! { + pub MaximumSchedulerWeight: Weight = Perbill::from_percent(80) * + BlockWeights::get().max_block; + pub const MaxScheduledPerBlock: u32 = 50; + } + /// Used the compare the privilege of an origin inside the scheduler. + pub struct OriginPrivilegeCmp; + impl frame_support::traits::PrivilegeCmp<OriginCaller> for OriginPrivilegeCmp { + fn cmp_privilege(left: &OriginCaller, right: &OriginCaller) -> Option<core::cmp::Ordering> { + if left == right { + Some(core::cmp::Ordering::Equal) + } else { + None + } + } + } + impl pallet_scheduler::Config for Runtime { + type Event = Event; + type Origin = Origin; + type PalletsOrigin = OriginCaller; + type Call = Call; + type MaximumWeight = MaximumSchedulerWeight; + type ScheduleOrigin = frame_system::EnsureSigned<AccountId>; + type OriginPrivilegeCmp = OriginPrivilegeCmp; + type MaxScheduledPerBlock = MaxScheduledPerBlock; + type WeightInfo = pallet_scheduler::weights::SubstrateWeight<Runtime>; + type PreimageProvider = (); + type NoPreimagePostponement = (); + } - type KeyOwnerProof = - <Self::KeyOwnerProofSystem as KeyOwnerProofSystem<(KeyTypeId, GrandpaId)>>::Proof; - - type KeyOwnerIdentification = <Self::KeyOwnerProofSystem as KeyOwnerProofSystem<( - KeyTypeId, - GrandpaId, - )>>::IdentificationTuple; - - type HandleEquivocation = (); - - type WeightInfo = (); - } + // MONEY // - impl pallet_balances::Config for Runtime { + impl pallet_balances::Config for Runtime { type MaxLocks = MaxLocks; type MaxReserves = (); type ReserveIdentifier = [u8; 8]; @@ -106,16 +124,69 @@ macro_rules! pallets_config { impl pallet_transaction_payment::Config for Runtime { type OnChargeTransaction = CurrencyAdapter<Balances, ()>; type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = frame_support::traits::ConstU8<5>; type WeightToFee = common_runtime::fees::WeightToFeeImpl<Balance>; type FeeMultiplierUpdate = (); } - impl pallet_identity::Config for Runtime { + // CONSENSUS // + + impl pallet_grandpa::Config for Runtime { + type Event = Event; + type Call = Call; + + type KeyOwnerProofSystem = (); + + type KeyOwnerProof = + <Self::KeyOwnerProofSystem as KeyOwnerProofSystem<(KeyTypeId, GrandpaId)>>::Proof; + + type KeyOwnerIdentification = <Self::KeyOwnerProofSystem as KeyOwnerProofSystem<( + KeyTypeId, + GrandpaId, + )>>::IdentificationTuple; + + type HandleEquivocation = (); + + type WeightInfo = (); + + type MaxAuthorities = MaxAuthorities; + } + + // UTILITY // + + impl pallet_utility::Config for Runtime { + type Event = Event; + type Call = Call; + type PalletsOrigin = OriginCaller; + type WeightInfo = pallet_utility::weights::SubstrateWeight<Self>; + } + + // MONEY CREATION // + + impl pallet_universal_dividend::Config for Runtime { + type Currency = pallet_balances::Pallet<Runtime>; + type Event = Event; + type MembersCount = common_runtime::providers::UdAccountsProvider<Runtime>; + type MembersIds = common_runtime::providers::UdAccountsProvider<Runtime>; + type SquareMoneyGrowthRate = SquareMoneyGrowthRate; + type UdCreationPeriod = UdCreationPeriod; + type UdFirstReeval = UdFirstReeval; + type UdReevalPeriod = UdReevalPeriod; + type UdReevalPeriodInBlocks = UdReevalPeriodInBlocks; + type UnitsPerUd = frame_support::traits::ConstU64<1_000>; + } + + impl pallet_ud_accounts_storage::Config for Runtime {} + + // WEB OF TRUST // + + impl pallet_identity::Config for Runtime { type ConfirmPeriod = ConfirmPeriod; type Event = Event; type AddRightOrigin = EnsureRoot<Self::AccountId>; type DelRightOrigin = EnsureRoot<Self::AccountId>; - type EnsureIdtyCallAllowed = EnsureIdtyCallAllowedImpl<Runtime, IDTY_CREATE_PERIOD>; + type EnsureIdtyCallAllowed = EnsureIdtyCallAllowedImpl<Runtime, StrongCert>; + type IdtyDataProvider = IdtyDataProvider<Runtime, IDTY_CREATE_PERIOD>; type IdtyData = IdtyData; type IdtyDid = IdtyDid; type IdtyIndex = IdtyIndex; @@ -129,7 +200,7 @@ macro_rules! pallets_config { type ValidationPeriod = ValidationPeriod; } - impl pallet_certification::Config for Runtime { + impl pallet_certification::Config<frame_support::instances::Instance1> for Runtime { type AddCertOrigin = AddStrongCertOrigin<Runtime>; type CertPeriod = CertPeriod; type DelCertOrigin = DelStrongCertOrigin<Runtime>; @@ -139,21 +210,20 @@ macro_rules! pallets_config { type OnNewcert = OnNewStrongCertHandler<Runtime, MIN_STRONG_CERT_FOR_UD, MIN_STRONG_CERT_FOR_STRONG_CERT>; type OnRemovedCert = OnRemovedStrongCertHandler<Runtime, MIN_STRONG_CERT_FOR_UD>; - type RenewablePeriod = StrongCertRenewablePeriod; + type CertRenewablePeriod = StrongCertRenewablePeriod; type ValidityPeriod = ValidityPeriod; } - impl pallet_universal_dividend::Config for Runtime { - type Currency = pallet_balances::Pallet<Runtime>; - type Event = Event; - type MembersCount = common_runtime::providers::UdAccountsProvider<Runtime>; - type MembersIds = common_runtime::providers::UdAccountsProvider<Runtime>; - type SquareMoneyGrowthRate = SquareMoneyGrowthRate; - type UdCreationPeriod = UdCreationPeriod; - type UdReevalPeriod = UdReevalPeriod; - type UdReevalPeriodInBlocks = UdReevalPeriodInBlocks; - } + // MUNTISIG // - impl pallet_ud_accounts_storage::Config for Runtime {} + impl pallet_multisig::Config for Runtime { + type Event = Event; + type Call = Call; + type Currency = Balances; + type DepositBase = DepositBase; + type DepositFactor = DepositFactor; + type MaxSignatories = MaxSignatories; + type WeightInfo = pallet_multisig::weights::SubstrateWeight<Self>; + } }; } diff --git a/runtime/common/src/providers.rs b/runtime/common/src/providers.rs index 1f49810e9..73ba6e9bf 100644 --- a/runtime/common/src/providers.rs +++ b/runtime/common/src/providers.rs @@ -14,10 +14,35 @@ // You should have received a copy of the GNU Affero General Public License // along with Substrate-Libre-Currency. If not, see <https://www.gnu.org/licenses/>. -use crate::AccountId; +use crate::entities::{IdtyData, IdtyDid}; +use crate::{AccountId, BlockNumber, IdtyIndex}; use frame_support::traits::Get; use sp_std::vec::Vec; +pub struct IdtyDataProvider<Runtime, const IDTY_CREATE_PERIOD: BlockNumber>( + core::marker::PhantomData<Runtime>, +); +impl<Runtime, const IDTY_CREATE_PERIOD: BlockNumber> + pallet_identity::traits::ProvideIdtyData<Runtime> + for IdtyDataProvider<Runtime, IDTY_CREATE_PERIOD> +where + Runtime: frame_system::Config<AccountId = AccountId, BlockNumber = BlockNumber> + + pallet_identity::Config<IdtyData = IdtyData, IdtyDid = IdtyDid, IdtyIndex = IdtyIndex>, +{ + fn provide_identity_data( + creator: IdtyIndex, + _idty_did: &IdtyDid, + _idty_owner_key: &AccountId, + ) -> IdtyData { + let block_number = frame_system::Pallet::<Runtime>::block_number(); + let creator_idty_data = IdtyData { + can_create_on: block_number + IDTY_CREATE_PERIOD, + }; + pallet_identity::Pallet::<Runtime>::set_idty_data(creator, creator_idty_data); + Default::default() + } +} + pub struct UdAccountsProvider<Runtime>(core::marker::PhantomData<Runtime>); impl<Runtime: pallet_ud_accounts_storage::Config> Get<u64> for UdAccountsProvider<Runtime> { fn get() -> u64 { diff --git a/runtime/g1/Cargo.toml b/runtime/g1/Cargo.toml index 65ab2ec78..e16e91137 100644 --- a/runtime/g1/Cargo.toml +++ b/runtime/g1/Cargo.toml @@ -1,6 +1,6 @@ [build-dependencies.substrate-wasm-builder] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [package] authors = ['Axiom-Team Developers <https://axiom-team.fr>'] @@ -66,43 +66,46 @@ pallet-ud-accounts-storage = { path = '../../pallets/ud-accounts-storage', defau pallet-universal-dividend = { path = '../../pallets/universal-dividend', default-features = false } common-runtime = { path = "../common", default-features = false } +# substrate +scale-info = { version = "1.0", default-features = false, features = ["derive"] } + [dependencies.codec] default-features = false features = ['derive'] package = 'parity-scale-codec' -version = '2.2.0' +version = '2.3.1' [dependencies.frame-benchmarking] default-features = false -git = 'https://github.com/paritytech/substrate.git' +git = 'https://github.com/librelois/substrate.git' optional = true -tag = 'monthly-2021-08' +branch = 'duniter-monthly-2022-01' [dependencies.frame-executive] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.frame-support] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.frame-system] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.frame-system-benchmarking] default-features = false -git = 'https://github.com/paritytech/substrate.git' +git = 'https://github.com/librelois/substrate.git' optional = true -tag = 'monthly-2021-08' +branch = 'duniter-monthly-2022-01' [dependencies.frame-system-rpc-runtime-api] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.hex-literal] optional = true @@ -110,43 +113,58 @@ version = '0.3.1' [dependencies.pallet-aura] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.pallet-balances] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.pallet-grandpa] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' + +[dependencies.pallet-multisig] +default-features = false +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.pallet-randomness-collective-flip] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' + +[dependencies.pallet-scheduler] +default-features = false +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.pallet-sudo] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.pallet-timestamp] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.pallet-transaction-payment] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.pallet-transaction-payment-rpc-runtime-api] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' + +[dependencies.pallet-utility] +default-features = false +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.serde] version = "1.0.101" @@ -158,60 +176,60 @@ version = "1.6.1" [dependencies.sp-api] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-arithmetic] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-block-builder] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-consensus-aura] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-core] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-inherents] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-offchain] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-runtime] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-session] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-std] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-transaction-pool] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-version] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' diff --git a/runtime/g1/src/lib.rs b/runtime/g1/src/lib.rs index 2b756140a..1f6242d85 100644 --- a/runtime/g1/src/lib.rs +++ b/runtime/g1/src/lib.rs @@ -45,6 +45,7 @@ use common_runtime::{ OnIdtyChangeHandler, OnNewStrongCertHandler, OnRemovedStrongCertHandler, OnRightKeyChangeHandler, }, + providers::IdtyDataProvider, }; use frame_system::EnsureRoot; use pallet_grandpa::fg_primitives; @@ -104,6 +105,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 1, + state_version: 1, }; /// The version information used to identify this runtime when compiled natively. @@ -131,6 +133,8 @@ common_runtime::pallets_config! { impl pallet_randomness_collective_flip::Config for Runtime {} impl pallet_aura::Config for Runtime { type AuthorityId = sp_consensus_aura::sr25519::AuthorityId; + type DisabledValidators = (); + type MaxAuthorities = frame_support::pallet_prelude::ConstU32<32>; } impl pallet_timestamp::Config for Runtime { /// A timestamp: milliseconds since the unix epoch. @@ -152,18 +156,39 @@ construct_runtime!( NodeBlock = common_runtime::Block, UncheckedExtrinsic = UncheckedExtrinsic { - System: frame_system::{Pallet, Call, Config, Storage, Event<T>}, - RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, - Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent}, - Aura: pallet_aura::{Pallet, Config<T>}, - Grandpa: pallet_grandpa::{Pallet, Call, Storage, Config, Event}, - Balances: pallet_balances::{Pallet, Call, Storage, Config<T>, Event<T>}, - TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, - Sudo: pallet_sudo::{Pallet, Call, Config<T>, Storage, Event<T>}, - UdAccountsStorage: pallet_ud_accounts_storage::{Pallet, Config<T>, Storage}, - UniversalDividend: pallet_universal_dividend::{Pallet, Config<T>, Storage, Event<T>}, - Identity: pallet_identity::{Pallet, Call, Config<T>, Storage, Event<T>}, - StrongCert: pallet_certification::{Pallet, Call, Config<T>, Storage, Event<T>}, + // Basic stuff + System: frame_system::{Pallet, Call, Config, Storage, Event<T>} = 0, + Scheduler: pallet_scheduler::{Pallet, Call, Storage, Event<T>} = 1, + + // Must be before session. + Aura: pallet_aura::{Pallet, Config<T>} = 2, + + Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent} = 3, + + // Money management + Balances: pallet_balances::{Pallet, Call, Storage, Config<T>, Event<T>} = 5, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage} = 32, + + // Consensus support. + Grandpa: pallet_grandpa::{Pallet, Call, Storage, Config, Event} = 10, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage} = 11, + + // Governance stuff. + Sudo: pallet_sudo::{Pallet, Call, Config<T>, Storage, Event<T>} = 20, + + // Cunning utilities. + Utility: pallet_utility::{Pallet, Call, Event} = 30, + + // Money creation + UdAccountsStorage: pallet_ud_accounts_storage::{Pallet, Config<T>, Storage} = 40, + UniversalDividend: pallet_universal_dividend::{Pallet, Config<T>, Storage, Event<T>} = 41, + + // Web Of Trust + Identity: pallet_identity::{Pallet, Call, Config<T>, Storage, Event<T>} = 50, + StrongCert: pallet_certification::<Instance1>::{Pallet, Call, Config<T>, Storage, Event<T>} = 51, + + // Multisig dispatch. + Multisig: pallet_multisig::{Pallet, Call, Storage, Event<T>} = 60, } ); @@ -187,7 +212,7 @@ pub type Executive = frame_executive::Executive< Block, frame_system::ChainContext<Runtime>, Runtime, - AllPallets, + AllPalletsWithSystem, >; // All of our runtimes share most of their Runtime API implementations. @@ -207,7 +232,7 @@ common_runtime::runtime_apis! { } fn authorities() -> Vec<sp_consensus_aura::sr25519::AuthorityId> { - Aura::authorities() + Aura::authorities().into_inner() } } } diff --git a/runtime/g1/src/parameters.rs b/runtime/g1/src/parameters.rs index 3738ac605..6cdd3c1c3 100644 --- a/runtime/g1/src/parameters.rs +++ b/runtime/g1/src/parameters.rs @@ -24,6 +24,11 @@ parameter_types! { pub const MinimumPeriod: u64 = SLOT_DURATION / 2; } +// Consensus +parameter_types! { + pub const MaxAuthorities: u32 = 100; +} + // Balances frame_support::parameter_types! { pub const ExistentialDeposit: Balance = 500; @@ -59,6 +64,15 @@ parameter_types! { parameter_types! { pub const SquareMoneyGrowthRate: Permill = Permill::from_parts(2_381_440); // 0.002_381_440 = 0.0488^2 pub const UdCreationPeriod: BlockNumber = DAYS; + // TODO: this value will depend on the date of the migration + pub const UdFirstReeval: BlockNumber = 45 * DAYS; pub const UdReevalPeriod: Balance = 182; pub const UdReevalPeriodInBlocks: BlockNumber = 2_620_800; // 86400 * 182 / 6 } + +// Multisig +parameter_types! { + pub const DepositBase: Balance = 1000; + pub const DepositFactor: Balance = 10; + pub const MaxSignatories: u16 = 5; +} diff --git a/runtime/gdev/Cargo.toml b/runtime/gdev/Cargo.toml index 121e82af6..29fb2f9aa 100644 --- a/runtime/gdev/Cargo.toml +++ b/runtime/gdev/Cargo.toml @@ -1,6 +1,6 @@ [build-dependencies.substrate-wasm-builder] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [package] authors = ['Axiom-Team Developers <https://axiom-team.fr>'] @@ -67,43 +67,46 @@ pallet-ud-accounts-storage = { path = '../../pallets/ud-accounts-storage', defau pallet-universal-dividend = { path = '../../pallets/universal-dividend', default-features = false } common-runtime = { path = "../common", default-features = false } +# substrate +scale-info = { version = "1.0", default-features = false, features = ["derive"] } + [dependencies.codec] default-features = false features = ['derive'] package = 'parity-scale-codec' -version = '2.2.0' +version = '2.3.1' [dependencies.frame-benchmarking] default-features = false -git = 'https://github.com/paritytech/substrate.git' +git = 'https://github.com/librelois/substrate.git' optional = true -tag = 'monthly-2021-08' +branch = 'duniter-monthly-2022-01' [dependencies.frame-executive] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.frame-support] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.frame-system] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.frame-system-benchmarking] default-features = false -git = 'https://github.com/paritytech/substrate.git' +git = 'https://github.com/librelois/substrate.git' optional = true -tag = 'monthly-2021-08' +branch = 'duniter-monthly-2022-01' [dependencies.frame-system-rpc-runtime-api] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.hex-literal] optional = true @@ -111,43 +114,53 @@ version = '0.3.1' [dependencies.pallet-aura] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.pallet-balances] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.pallet-grandpa] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.pallet-multisig] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.pallet-randomness-collective-flip] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' + +[dependencies.pallet-scheduler] +default-features = false +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.pallet-sudo] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.pallet-transaction-payment] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.pallet-transaction-payment-rpc-runtime-api] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' + +[dependencies.pallet-utility] +default-features = false +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.serde] version = "1.0.101" @@ -156,60 +169,60 @@ features = ["derive"] [dependencies.sp-api] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-arithmetic] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-block-builder] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-consensus-aura] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-core] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-inherents] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-offchain] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-runtime] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-session] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-std] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-transaction-pool] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-version] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' diff --git a/runtime/gdev/src/lib.rs b/runtime/gdev/src/lib.rs index 2b3479c1f..a6c6f192d 100644 --- a/runtime/gdev/src/lib.rs +++ b/runtime/gdev/src/lib.rs @@ -44,6 +44,7 @@ use common_runtime::{ OnIdtyChangeHandler, OnNewStrongCertHandler, OnRemovedStrongCertHandler, OnRightKeyChangeHandler, }, + providers::IdtyDataProvider, }; use frame_system::EnsureRoot; use pallet_grandpa::fg_primitives; @@ -102,6 +103,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 1, + state_version: 1, }; /// The version information used to identify this runtime when compiled natively. @@ -132,16 +134,6 @@ common_runtime::pallets_config! { type Event = Event; type Call = Call; } - - impl pallet_multisig::Config for Runtime { - type Event = Event; - type Call = Call; - type Currency = Balances; - type DepositBase = DepositBase; - type DepositFactor = DepositFactor; - type MaxSignatories = MaxSignatories; - type WeightInfo = pallet_multisig::weights::SubstrateWeight<Self>; - } } // Create the runtime by composing the FRAME pallets that were previously configured. @@ -151,17 +143,33 @@ construct_runtime!( NodeBlock = common_runtime::Block, UncheckedExtrinsic = UncheckedExtrinsic { - System: frame_system::{Pallet, Call, Config, Storage, Event<T>}, - RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, - Grandpa: pallet_grandpa::{Pallet, Call, Storage, Config, Event}, - Balances: pallet_balances::{Pallet, Call, Storage, Config<T>, Event<T>}, - Multisig: pallet_multisig::{Pallet, Call, Storage, Event<T>}, - TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, - Sudo: pallet_sudo::{Pallet, Call, Config<T>, Storage, Event<T>}, - UdAccountsStorage: pallet_ud_accounts_storage::{Pallet, Config<T>, Storage}, - UniversalDividend: pallet_universal_dividend::{Pallet, Config<T>, Storage, Event<T>}, - Identity: pallet_identity::{Pallet, Call, Config<T>, Storage, Event<T>}, - StrongCert: pallet_certification::{Pallet, Call, Config<T>, Storage, Event<T>}, + // Basic stuff + System: frame_system::{Pallet, Call, Config, Storage, Event<T>} = 0, + Scheduler: pallet_scheduler::{Pallet, Call, Storage, Event<T>} = 1, + + Balances: pallet_balances::{Pallet, Call, Storage, Config<T>, Event<T>} = 5, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage} = 32, + + // Consensus support. + Grandpa: pallet_grandpa::{Pallet, Call, Storage, Config, Event} = 10, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage} = 11, + + // Governance stuff. + Sudo: pallet_sudo::{Pallet, Call, Config<T>, Storage, Event<T>} = 20, + + // Cunning utilities. + Utility: pallet_utility::{Pallet, Call, Event} = 30, + + // Universal dividend. + UdAccountsStorage: pallet_ud_accounts_storage::{Pallet, Config<T>, Storage} = 40, + UniversalDividend: pallet_universal_dividend::{Pallet, Config<T>, Storage, Event<T>} = 41, + + // Web Of Trust + Identity: pallet_identity::{Pallet, Call, Config<T>, Storage, Event<T>} = 50, + StrongCert: pallet_certification::<Instance1>::{Pallet, Call, Config<T>, Storage, Event<T>} = 51, + + // Multisig dispatch. + Multisig: pallet_multisig::{Pallet, Call, Storage, Event<T>} = 60, } ); @@ -185,7 +193,7 @@ pub type Executive = frame_executive::Executive< Block, frame_system::ChainContext<Runtime>, Runtime, - AllPallets, + AllPalletsWithSystem, >; // All of our runtimes share most of their Runtime API implementations. @@ -205,7 +213,7 @@ common_runtime::runtime_apis! { } fn authorities() -> Vec<sp_consensus_aura::sr25519::AuthorityId> { - Vec::with_capacity(0) + vec![] } } } diff --git a/runtime/gdev/src/parameters.rs b/runtime/gdev/src/parameters.rs index 8e44733c2..fd3b8fee5 100644 --- a/runtime/gdev/src/parameters.rs +++ b/runtime/gdev/src/parameters.rs @@ -25,18 +25,16 @@ frame_support::parameter_types! { pub const MaxLocks: u32 = 50; } +// Consensus +parameter_types! { + pub const MaxAuthorities: u32 = 10; +} + // Transaction payment frame_support::parameter_types! { pub const TransactionByteFee: Balance = 0; } -// Multisig -parameter_types! { - pub const DepositBase: Balance = 1000; - pub const DepositFactor: Balance = 10; - pub const MaxSignatories: u16 = 5; -} - // Identity pub const IDTY_CREATE_PERIOD: BlockNumber = 100; frame_support::parameter_types! { @@ -61,6 +59,14 @@ parameter_types! { parameter_types! { pub const SquareMoneyGrowthRate: Permill = Permill::one(); pub const UdCreationPeriod: BlockNumber = 10; + pub const UdFirstReeval: BlockNumber = 100; pub const UdReevalPeriod: Balance = 10; pub const UdReevalPeriodInBlocks: BlockNumber = 20 * 10; } + +// Multisig +parameter_types! { + pub const DepositBase: Balance = 1000; + pub const DepositFactor: Balance = 10; + pub const MaxSignatories: u16 = 5; +} diff --git a/runtime/gtest/Cargo.toml b/runtime/gtest/Cargo.toml index ded9a387b..bfaa95755 100644 --- a/runtime/gtest/Cargo.toml +++ b/runtime/gtest/Cargo.toml @@ -1,6 +1,6 @@ [build-dependencies.substrate-wasm-builder] -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [package] authors = ['Axiom-Team Developers <https://axiom-team.fr>'] @@ -66,43 +66,46 @@ pallet-ud-accounts-storage = { path = '../../pallets/ud-accounts-storage', defau pallet-universal-dividend = { path = '../../pallets/universal-dividend', default-features = false } common-runtime = { path = "../common", default-features = false } +# substrate +scale-info = { version = "1.0", default-features = false, features = ["derive"] } + [dependencies.codec] default-features = false features = ['derive'] package = 'parity-scale-codec' -version = '2.2.0' +version = '2.3.1' [dependencies.frame-benchmarking] default-features = false -git = 'https://github.com/paritytech/substrate.git' +git = 'https://github.com/librelois/substrate.git' optional = true -tag = 'monthly-2021-08' +branch = 'duniter-monthly-2022-01' [dependencies.frame-executive] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.frame-support] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.frame-system] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.frame-system-benchmarking] default-features = false -git = 'https://github.com/paritytech/substrate.git' +git = 'https://github.com/librelois/substrate.git' optional = true -tag = 'monthly-2021-08' +branch = 'duniter-monthly-2022-01' [dependencies.frame-system-rpc-runtime-api] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.hex-literal] optional = true @@ -110,43 +113,59 @@ version = '0.3.1' [dependencies.pallet-aura] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.pallet-balances] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.pallet-grandpa] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' + +[dependencies.pallet-multisig] +default-features = false +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.pallet-randomness-collective-flip] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' + +[dependencies.pallet-scheduler] +default-features = false +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.pallet-sudo] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.pallet-timestamp] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.pallet-transaction-payment] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.pallet-transaction-payment-rpc-runtime-api] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' + +[dependencies.pallet-utility] +default-features = false +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' + [dependencies.serde] version = "1.0.101" @@ -158,60 +177,60 @@ version = "1.6.1" [dependencies.sp-api] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-arithmetic] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-block-builder] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-consensus-aura] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-core] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-inherents] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-offchain] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-runtime] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-session] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-std] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-transaction-pool] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' [dependencies.sp-version] default-features = false -git = 'https://github.com/paritytech/substrate.git' -tag = 'monthly-2021-08' +git = 'https://github.com/librelois/substrate.git' +branch = 'duniter-monthly-2022-01' diff --git a/runtime/gtest/src/lib.rs b/runtime/gtest/src/lib.rs index 226c258f7..e20e00ab1 100644 --- a/runtime/gtest/src/lib.rs +++ b/runtime/gtest/src/lib.rs @@ -45,6 +45,7 @@ use common_runtime::{ OnIdtyChangeHandler, OnNewStrongCertHandler, OnRemovedStrongCertHandler, OnRightKeyChangeHandler, }, + providers::IdtyDataProvider, }; use frame_system::EnsureRoot; use pallet_grandpa::fg_primitives; @@ -104,6 +105,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 1, + state_version: 1, }; /// The version information used to identify this runtime when compiled natively. @@ -131,6 +133,8 @@ common_runtime::pallets_config! { impl pallet_randomness_collective_flip::Config for Runtime {} impl pallet_aura::Config for Runtime { type AuthorityId = sp_consensus_aura::sr25519::AuthorityId; + type DisabledValidators = (); + type MaxAuthorities = frame_support::pallet_prelude::ConstU32<32>; } impl pallet_timestamp::Config for Runtime { /// A timestamp: milliseconds since the unix epoch. @@ -152,18 +156,37 @@ construct_runtime!( NodeBlock = common_runtime::Block, UncheckedExtrinsic = UncheckedExtrinsic { - System: frame_system::{Pallet, Call, Config, Storage, Event<T>}, - RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage}, - Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent}, - Aura: pallet_aura::{Pallet, Config<T>}, - Grandpa: pallet_grandpa::{Pallet, Call, Storage, Config, Event}, - Balances: pallet_balances::{Pallet, Call, Storage, Config<T>, Event<T>}, - TransactionPayment: pallet_transaction_payment::{Pallet, Storage}, - Sudo: pallet_sudo::{Pallet, Call, Config<T>, Storage, Event<T>}, - UdAccountsStorage: pallet_ud_accounts_storage::{Pallet, Config<T>, Storage}, - UniversalDividend: pallet_universal_dividend::{Pallet, Config<T>, Storage, Event<T>}, - Identity: pallet_identity::{Pallet, Call, Config<T>, Storage, Event<T>}, - StrongCert: pallet_certification::{Pallet, Call, Config<T>, Storage, Event<T>}, + // Basic stuff + System: frame_system::{Pallet, Call, Config, Storage, Event<T>} = 0, + Scheduler: pallet_scheduler::{Pallet, Call, Storage, Event<T>} = 1, + + // Must be before session. + Aura: pallet_aura::{Pallet, Config<T>} = 2, + + Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent} = 3, + Balances: pallet_balances::{Pallet, Call, Storage, Config<T>, Event<T>} = 5, + TransactionPayment: pallet_transaction_payment::{Pallet, Storage} = 32, + + // Consensus support. + Grandpa: pallet_grandpa::{Pallet, Call, Storage, Config, Event} = 10, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage} = 11, + + // Governance stuff. + Sudo: pallet_sudo::{Pallet, Call, Config<T>, Storage, Event<T>} = 20, + + // Cunning utilities. + Utility: pallet_utility::{Pallet, Call, Event} = 30, + + // Universal dividend. + UdAccountsStorage: pallet_ud_accounts_storage::{Pallet, Config<T>, Storage} = 40, + UniversalDividend: pallet_universal_dividend::{Pallet, Config<T>, Storage, Event<T>} = 41, + + // Web Of Trust + Identity: pallet_identity::{Pallet, Call, Config<T>, Storage, Event<T>} = 50, + StrongCert: pallet_certification::<Instance1>::{Pallet, Call, Config<T>, Storage, Event<T>} = 51, + + // Multisig dispatch. + Multisig: pallet_multisig::{Pallet, Call, Storage, Event<T>} = 60, } ); @@ -187,7 +210,7 @@ pub type Executive = frame_executive::Executive< Block, frame_system::ChainContext<Runtime>, Runtime, - AllPallets, + AllPalletsWithSystem, >; // All of our runtimes share most of their Runtime API implementations. @@ -207,7 +230,7 @@ common_runtime::runtime_apis! { } fn authorities() -> Vec<sp_consensus_aura::sr25519::AuthorityId> { - Aura::authorities() + Aura::authorities().into_inner() } } } diff --git a/runtime/gtest/src/parameters.rs b/runtime/gtest/src/parameters.rs index 4b44b7081..8c3f78b74 100644 --- a/runtime/gtest/src/parameters.rs +++ b/runtime/gtest/src/parameters.rs @@ -24,6 +24,11 @@ parameter_types! { pub const MinimumPeriod: u64 = SLOT_DURATION / 2; } +// Consensus +parameter_types! { + pub const MaxAuthorities: u32 = 32; +} + // Balances frame_support::parameter_types! { pub const ExistentialDeposit: Balance = 500; @@ -59,6 +64,14 @@ parameter_types! { parameter_types! { pub const SquareMoneyGrowthRate: Permill = Permill::from_parts(2_381_440); // 0.002_381_440 = 0.0488^2 pub const UdCreationPeriod: BlockNumber = DAYS; + pub const UdFirstReeval: BlockNumber = 2 * DAYS; pub const UdReevalPeriod: Balance = 7; pub const UdReevalPeriodInBlocks: BlockNumber = 100800; // 86400 *7 / 6 } + +// Multisig +parameter_types! { + pub const DepositBase: Balance = 1000; + pub const DepositFactor: Balance = 10; + pub const MaxSignatories: u16 = 5; +} diff --git a/rust-toolchain b/rust-toolchain index e29d5e616..0f5159104 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1,5 +1,5 @@ [toolchain] -channel = "nightly-2021-02-24" +channel = "nightly-2021-09-10" components = [ "rustfmt", "clippy" ] targets = [ "wasm32-unknown-unknown" ] -profile = "minimal" \ No newline at end of file +profile = "minimal" diff --git a/tests/README.md b/tests/README.md deleted file mode 100644 index 31fff2e09..000000000 --- a/tests/README.md +++ /dev/null @@ -1,88 +0,0 @@ -# Functional testing for lc-core - -This folder contains a set of functional tests designed for lc-core. - -It is written in typescript, using Mocha/Chai as Test framework. - -## Test flow - -Each group will start a dev service with the -[development spec](../node/service/src/chain_spec) before executing the tests. - -## Installation - -``` -npm install -``` - -## Run the tests - -``` -npm run test -``` - -and to print more information: - -``` -npm run test-with-logs -``` - -## Write Tests - -## Verbose mode - -You can also add the node's logs to the output using the `LC_CORE_LOG` env variable. Ex: - -``` -LC_CORE_LOG="warn,rpc=trace" npm run test -``` - -The test script will find available ports above 20000 in order to ensure that it doesn't conflict -with any other running services. - -# Debugging a lc-core node - -The repository contains a pre-configured debugger configuration for VSCode with the **CodeLLDB** -(`vadimcn.vscode-lldb`) extension. - -Before debugging, you need to build the node with debug symbols with command -`RUSTFLAGS=-g cargo build --release` (available as a VSCode task). Then go in the **Debug** tab in -the left bar of VSCode and make sure **Launch lc-core Node (Linux)** is selected in the top -dropdown. **Build & Launch lc-core Node (Linux)** will trigger the build before launching the node. - -To launch the debug session click on the green "play" arrow next to the dropdown. It will take some -time before the node starts, but the terminal containing the node output will appear when it is -really starting. The node is listening on ports 19931 (p2p), 19932 (rpc) and 19933 (ws). - -You can explore the code and place a breakpoint on a line by left clicking on the left of the line -number. The execution will pause the next time this line is reached. The debug toolbar contains the -following buttons : - -- Resume/Pause : Resume the execution if paused, pause the execution at the current location - (pretty random) if running. -- Step over : Resume the execution until next line, or go one level up if the end of the current - scope is reached. -- Step into : Resume the execution to go inside the immediatly next function call if any, otherwise - step to next line. -- Step out : Resume the execution until the end of the scope is reached. -- Restart : Kill the program and start a new debuging session. -- Stop : Kill the program and end debugin session. - -Breakpoints stay between debugging sessions. When multiple function calls are made on the same line, -multiple step into, step out, step into, ... can be requiered to go inside one of the chained -calls. - -When paused, content of variables is showed in the debuging tab of VSCode. Some basic types are -displayed correctly (primitive types, Vec, Arc) but more complex types such as HashMap/BTreeMap -are not "smartly" displayed (content of the struct is shown by mapping is hidden in the complexity -of the implementation). - -## Running Typescript tests with a debug node - -By setting the environement variable `DEBUG_MODE=true`, the Typescript tests will not spawn its -own node and instead will connect to an external node running on ports 19931/19932/19933, which -are the ports used by the debug node. - -A VSCode test allow to quickly run the `test-single` test in debug mode. To run another test, -change the command in the `package.json`. Note that you should restart the node after running -one test file. \ No newline at end of file diff --git a/tests/constants.ts b/tests/constants.ts deleted file mode 100644 index 386b4a906..000000000 --- a/tests/constants.ts +++ /dev/null @@ -1,6 +0,0 @@ - -export const BINARY_PATH = process.env.BINARY_PATH || `../target/release/lc-core`; -export const DEBUG_MODE = process.env.DEBUG_MODE || false; -export const DISPLAY_LOG = process.env.MOONBEAM_LOG || false; -export const LC_CORE_LOG = process.env.LC_CORE_LOG || "info"; -export const SPAWNING_TIME = 10000; diff --git a/tests/dev-node.ts b/tests/dev-node.ts deleted file mode 100644 index c0f741338..000000000 --- a/tests/dev-node.ts +++ /dev/null @@ -1,131 +0,0 @@ -import tcpPortUsed from "tcp-port-used"; -import { spawn, ChildProcess } from "child_process"; -import { BINARY_PATH, DISPLAY_LOG, LC_CORE_LOG, SPAWNING_TIME } from "./constants"; -const debug = require("debug")("test:dev-node"); - -export async function findAvailablePorts() { - const availablePorts = await Promise.all( - [null, null, null].map(async (_, index) => { - let selectedPort = 0; - let port = 1024 + index * 20000 + (process.pid % 20000); - let endingPort = 65535; - while (!selectedPort && port < endingPort) { - const inUse = await tcpPortUsed.check(port, "127.0.0.1"); - if (!inUse) { - selectedPort = port; - } - port++; - } - if (!selectedPort) { - throw new Error(`No available port`); - } - return selectedPort; - }) - ); - - return { - p2pPort: availablePorts[0], - rpcPort: availablePorts[1], - wsPort: availablePorts[2], - }; -} - -// Stores if the node has already started. -// It is used when a test file contains multiple describeDevMoonbeam. Those are -// executed within the same PID and so would generate a race condition if started -// at the same time. -let nodeStarted = false; - -// This will start a moonbeam dev node, only 1 at a time (check every 100ms). -// This will prevent race condition on the findAvailablePorts which uses the PID of the process -export async function startMoonbeamDevNode(withWasm?: boolean): Promise<{ - p2pPort: number; - rpcPort: number; - wsPort: number; - runningNode: ChildProcess; -}> { - while (nodeStarted) { - // Wait 100ms to see if the node is free - await new Promise((resolve) => { - setTimeout(resolve, 100); - }); - } - nodeStarted = true; - const { p2pPort, rpcPort, wsPort } = await findAvailablePorts(); - - const cmd = BINARY_PATH; - const args = [ - withWasm ? `--execution=Wasm` : `--execution=Native`, // Faster execution using native - `--no-telemetry`, - `--no-prometheus`, - `--dev`, - `--sealing=manual`, - `-l${LC_CORE_LOG}`, - `--port=${p2pPort}`, - `--rpc-port=${rpcPort}`, - `--ws-port=${wsPort}`, - `--tmp`, - ]; - debug(`Starting dev node: --port=${p2pPort} --rpc-port=${rpcPort} --ws-port=${wsPort}`); - - const onProcessExit = function () { - runningNode && runningNode.kill(); - }; - const onProcessInterrupt = function () { - process.exit(2); - }; - - let runningNode: ChildProcess = null; - process.once("exit", onProcessExit); - process.once("SIGINT", onProcessInterrupt); - runningNode = spawn(cmd, args); - - runningNode.once("exit", () => { - process.removeListener("exit", onProcessExit); - process.removeListener("SIGINT", onProcessInterrupt); - nodeStarted = false; - debug(`Exiting dev node: --port=${p2pPort} --rpc-port=${rpcPort} --ws-port=${wsPort}`); - }); - - runningNode.on("error", (err) => { - if ((err as any).errno == "ENOENT") { - console.error( - `\x1b[31mMissing Moonbeam binary ` + - `(${BINARY_PATH}).\nPlease compile the Moonbeam project\x1b[0m` - ); - } else { - console.error(err); - } - process.exit(1); - }); - - const binaryLogs = []; - await new Promise<void>((resolve) => { - const timer = setTimeout(() => { - console.error(`\x1b[31m Failed to start Moonbeam Test Node.\x1b[0m`); - console.error(`Command: ${cmd} ${args.join(" ")}`); - console.error(`Logs:`); - console.error(binaryLogs.map((chunk) => chunk.toString()).join("\n")); - throw new Error("Failed to launch node"); - }, SPAWNING_TIME - 2000); - - const onData = async (chunk) => { - if (DISPLAY_LOG) { - console.log(chunk.toString()); - } - binaryLogs.push(chunk); - if (chunk.toString().match(/Development Service Ready/)) { - clearTimeout(timer); - if (!DISPLAY_LOG) { - runningNode.stderr.off("data", onData); - runningNode.stdout.off("data", onData); - } - resolve(); - } - }; - runningNode.stderr.on("data", onData); - runningNode.stdout.on("data", onData); - }); - - return { p2pPort, rpcPort, wsPort, runningNode }; -} diff --git a/tests/package-lock.json b/tests/package-lock.json deleted file mode 100644 index 95daa7563..000000000 --- a/tests/package-lock.json +++ /dev/null @@ -1,4870 +0,0 @@ -{ - "name": "ts-tests", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/runtime": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.8.tgz", - "integrity": "sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@ethereumjs/common": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.4.0.tgz", - "integrity": "sha512-UdkhFWzWcJCZVsj1O/H8/oqj/0RVYjLc1OhPjBrQdALAkQHpCp8xXI4WLnuGTADqTdJZww0NtgwG+TRPkXt27w==", - "requires": { - "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.0" - } - }, - "@ethereumjs/tx": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.0.tgz", - "integrity": "sha512-yTwEj2lVzSMgE6Hjw9Oa1DZks/nKTWM8Wn4ykDNapBPua2f4nXO3qKnni86O6lgDj5fVNRqbDsD0yy7/XNGDEA==", - "requires": { - "@ethereumjs/common": "^2.4.0", - "ethereumjs-util": "^7.1.0" - } - }, - "@ethersproject/abi": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.7.tgz", - "integrity": "sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw==", - "requires": { - "@ethersproject/address": "^5.0.4", - "@ethersproject/bignumber": "^5.0.7", - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/constants": "^5.0.4", - "@ethersproject/hash": "^5.0.4", - "@ethersproject/keccak256": "^5.0.3", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/properties": "^5.0.3", - "@ethersproject/strings": "^5.0.4" - } - }, - "@ethersproject/abstract-provider": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.4.0.tgz", - "integrity": "sha512-vPBR7HKUBY0lpdllIn7tLIzNN7DrVnhCLKSzY0l8WAwxz686m/aL7ASDzrVxV93GJtIub6N2t4dfZ29CkPOxgA==", - "requires": { - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/networks": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/transactions": "^5.4.0", - "@ethersproject/web": "^5.4.0" - } - }, - "@ethersproject/abstract-signer": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.4.0.tgz", - "integrity": "sha512-AieQAzt05HJZS2bMofpuxMEp81AHufA5D6M4ScKwtolj041nrfIbIi8ciNW7+F59VYxXq+V4c3d568Q6l2m8ew==", - "requires": { - "@ethersproject/abstract-provider": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0" - } - }, - "@ethersproject/address": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.4.0.tgz", - "integrity": "sha512-SD0VgOEkcACEG/C6xavlU1Hy3m5DGSXW3CUHkaaEHbAPPsgi0coP5oNPsxau8eTlZOk/bpa/hKeCNoK5IzVI2Q==", - "requires": { - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/rlp": "^5.4.0" - } - }, - "@ethersproject/base64": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.4.0.tgz", - "integrity": "sha512-CjQw6E17QDSSC5jiM9YpF7N1aSCHmYGMt9bWD8PWv6YPMxjsys2/Q8xLrROKI3IWJ7sFfZ8B3flKDTM5wlWuZQ==", - "requires": { - "@ethersproject/bytes": "^5.4.0" - } - }, - "@ethersproject/bignumber": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.4.0.tgz", - "integrity": "sha512-OXUu9f9hO3vGRIPxU40cignXZVaYyfx6j9NNMjebKdnaCL3anCLSSy8/b8d03vY6dh7duCC0kW72GEC4tZer2w==", - "requires": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "bn.js": "^4.11.9" - } - }, - "@ethersproject/bytes": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.4.0.tgz", - "integrity": "sha512-H60ceqgTHbhzOj4uRc/83SCN9d+BSUnOkrr2intevqdtEMO1JFVZ1XL84OEZV+QjV36OaZYxtnt4lGmxcGsPfA==", - "requires": { - "@ethersproject/logger": "^5.4.0" - } - }, - "@ethersproject/constants": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.4.0.tgz", - "integrity": "sha512-tzjn6S7sj9+DIIeKTJLjK9WGN2Tj0P++Z8ONEIlZjyoTkBuODN+0VfhAyYksKi43l1Sx9tX2VlFfzjfmr5Wl3Q==", - "requires": { - "@ethersproject/bignumber": "^5.4.0" - } - }, - "@ethersproject/hash": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.4.0.tgz", - "integrity": "sha512-xymAM9tmikKgbktOCjW60Z5sdouiIIurkZUr9oW5NOex5uwxrbsYG09kb5bMcNjlVeJD3yPivTNzViIs1GCbqA==", - "requires": { - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/address": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/strings": "^5.4.0" - } - }, - "@ethersproject/keccak256": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.4.0.tgz", - "integrity": "sha512-FBI1plWet+dPUvAzPAeHzRKiPpETQzqSUWR1wXJGHVWi4i8bOSrpC3NwpkPjgeXG7MnugVc1B42VbfnQikyC/A==", - "requires": { - "@ethersproject/bytes": "^5.4.0", - "js-sha3": "0.5.7" - }, - "dependencies": { - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" - } - } - }, - "@ethersproject/logger": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.4.0.tgz", - "integrity": "sha512-xYdWGGQ9P2cxBayt64d8LC8aPFJk6yWCawQi/4eJ4+oJdMMjEBMrIcIMZ9AxhwpPVmnBPrsB10PcXGmGAqgUEQ==" - }, - "@ethersproject/networks": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.4.1.tgz", - "integrity": "sha512-8SvowCKz9Uf4xC5DTKI8+il8lWqOr78kmiqAVLYT9lzB8aSmJHQMD1GSuJI0CW4hMAnzocpGpZLgiMdzsNSPig==", - "requires": { - "@ethersproject/logger": "^5.4.0" - } - }, - "@ethersproject/properties": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.4.0.tgz", - "integrity": "sha512-7jczalGVRAJ+XSRvNA6D5sAwT4gavLq3OXPuV/74o3Rd2wuzSL035IMpIMgei4CYyBdialJMrTqkOnzccLHn4A==", - "requires": { - "@ethersproject/logger": "^5.4.0" - } - }, - "@ethersproject/rlp": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.4.0.tgz", - "integrity": "sha512-0I7MZKfi+T5+G8atId9QaQKHRvvasM/kqLyAH4XxBCBchAooH2EX5rL9kYZWwcm3awYV+XC7VF6nLhfeQFKVPg==", - "requires": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0" - } - }, - "@ethersproject/signing-key": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.4.0.tgz", - "integrity": "sha512-q8POUeywx6AKg2/jX9qBYZIAmKSB4ubGXdQ88l40hmATj29JnG5pp331nAWwwxPn2Qao4JpWHNZsQN+bPiSW9A==", - "requires": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "bn.js": "^4.11.9", - "elliptic": "6.5.4", - "hash.js": "1.1.7" - } - }, - "@ethersproject/strings": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.4.0.tgz", - "integrity": "sha512-k/9DkH5UGDhv7aReXLluFG5ExurwtIpUfnDNhQA29w896Dw3i4uDTz01Quaptbks1Uj9kI8wo9tmW73wcIEaWA==", - "requires": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/logger": "^5.4.0" - } - }, - "@ethersproject/transactions": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.4.0.tgz", - "integrity": "sha512-s3EjZZt7xa4BkLknJZ98QGoIza94rVjaEed0rzZ/jB9WrIuu/1+tjvYCWzVrystXtDswy7TPBeIepyXwSYa4WQ==", - "requires": { - "@ethersproject/address": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/rlp": "^5.4.0", - "@ethersproject/signing-key": "^5.4.0" - } - }, - "@ethersproject/web": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.4.0.tgz", - "integrity": "sha512-1bUusGmcoRLYgMn6c1BLk1tOKUIFuTg8j+6N8lYlbMpDesnle+i3pGSagGNvwjaiLo4Y5gBibwctpPRmjrh4Og==", - "requires": { - "@ethersproject/base64": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/strings": "^5.4.0" - } - }, - "@polkadot/api": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-4.17.1.tgz", - "integrity": "sha512-uuNIKWC+PjM+1AARRu4NLWOEudZE6DW8UOlaubx3uGhPywqPIP+HGWP2I6PqRGYKARBWxxOvca1Q7WoKzpYC8w==", - "requires": { - "@babel/runtime": "^7.14.6", - "@polkadot/api-derive": "4.17.1", - "@polkadot/keyring": "^6.11.1", - "@polkadot/metadata": "4.17.1", - "@polkadot/rpc-core": "4.17.1", - "@polkadot/rpc-provider": "4.17.1", - "@polkadot/types": "4.17.1", - "@polkadot/types-known": "4.17.1", - "@polkadot/util": "^6.11.1", - "@polkadot/util-crypto": "^6.11.1", - "@polkadot/x-rxjs": "^6.11.1", - "eventemitter3": "^4.0.7" - } - }, - "@polkadot/api-derive": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-4.17.1.tgz", - "integrity": "sha512-mgq57F1yAiZjuiA0vrR2zWidyyd+mGe7Kbs4SxVeDWLsNbLc9+eASIfX7Hch2SDHIn3CQpv6DQqJH00uDfw9Lw==", - "requires": { - "@babel/runtime": "^7.14.6", - "@polkadot/api": "4.17.1", - "@polkadot/rpc-core": "4.17.1", - "@polkadot/types": "4.17.1", - "@polkadot/util": "^6.11.1", - "@polkadot/util-crypto": "^6.11.1", - "@polkadot/x-rxjs": "^6.11.1" - } - }, - "@polkadot/keyring": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-6.11.1.tgz", - "integrity": "sha512-rW8INl7pO6Dmaffd6Df1yAYCRWa2RmWQ0LGfJeA/M6seVIkI6J3opZqAd4q2Op+h9a7z4TESQGk8yggOEL+Csg==", - "requires": { - "@babel/runtime": "^7.14.6", - "@polkadot/util": "6.11.1", - "@polkadot/util-crypto": "6.11.1" - } - }, - "@polkadot/metadata": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/@polkadot/metadata/-/metadata-4.17.1.tgz", - "integrity": "sha512-219isiCWVfbu5JxZnOPj+cV4T+S0XHS4+Jal3t3xz9y4nbgr+25Pa4KInEsJPx0u8EZAxMeiUCX3vd5U7oe72g==", - "requires": { - "@babel/runtime": "^7.14.6", - "@polkadot/types": "4.17.1", - "@polkadot/types-known": "4.17.1", - "@polkadot/util": "^6.11.1", - "@polkadot/util-crypto": "^6.11.1" - } - }, - "@polkadot/networks": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-6.11.1.tgz", - "integrity": "sha512-0C6Ha2kvr42se3Gevx6UhHzv3KnPHML0N73Amjwvdr4y0HLZ1Nfw+vcm5yqpz5gpiehqz97XqFrsPRauYdcksQ==", - "requires": { - "@babel/runtime": "^7.14.6" - } - }, - "@polkadot/rpc-core": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-4.17.1.tgz", - "integrity": "sha512-1gqYaYuSSQsRmt3ol55jmjBP/euKyAh4PwSj94I2wu0fngK/FZwVZNDJZn/Ib68X/s38TBIgqJ6+YdUdr3z1xw==", - "requires": { - "@babel/runtime": "^7.14.6", - "@polkadot/metadata": "4.17.1", - "@polkadot/rpc-provider": "4.17.1", - "@polkadot/types": "4.17.1", - "@polkadot/util": "^6.11.1", - "@polkadot/x-rxjs": "^6.11.1" - } - }, - "@polkadot/rpc-provider": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-4.17.1.tgz", - "integrity": "sha512-vlU1H5mnfP0Ej8PbjcxwF9ZlT7LtcpekOKI4iYfMnfdelSUKUVyaD5PC8yRGIg9fxkorA6OM5AZs116jAl3TLA==", - "requires": { - "@babel/runtime": "^7.14.6", - "@polkadot/types": "4.17.1", - "@polkadot/util": "^6.11.1", - "@polkadot/util-crypto": "^6.11.1", - "@polkadot/x-fetch": "^6.11.1", - "@polkadot/x-global": "^6.11.1", - "@polkadot/x-ws": "^6.11.1", - "eventemitter3": "^4.0.7" - } - }, - "@polkadot/types": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-4.17.1.tgz", - "integrity": "sha512-rjW4OFdwvFekzN3ATLibC2JPSd8AWt5YepJhmuCPdwH26r3zB8bEC6dM7YQExLVUmygVPvgXk5ffHI6RAdXBMg==", - "requires": { - "@babel/runtime": "^7.14.6", - "@polkadot/metadata": "4.17.1", - "@polkadot/util": "^6.11.1", - "@polkadot/util-crypto": "^6.11.1", - "@polkadot/x-rxjs": "^6.11.1" - } - }, - "@polkadot/types-known": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-4.17.1.tgz", - "integrity": "sha512-YkOwGrO+k9aVrBR8FgYHnfJKhOfpdgC5ZRYNL/xJ9oa7lBYqPts9ENAxeBmJS/5IGeDF9f32MNyrCP2umeCXWg==", - "requires": { - "@babel/runtime": "^7.14.6", - "@polkadot/networks": "^6.11.1", - "@polkadot/types": "4.17.1", - "@polkadot/util": "^6.11.1" - } - }, - "@polkadot/util": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-6.11.1.tgz", - "integrity": "sha512-TEdCetr9rsdUfJZqQgX/vxLuV4XU8KMoKBMJdx+JuQ5EWemIdQkEtMBdL8k8udNGbgSNiYFA6rPppATeIxAScg==", - "requires": { - "@babel/runtime": "^7.14.6", - "@polkadot/x-textdecoder": "6.11.1", - "@polkadot/x-textencoder": "6.11.1", - "@types/bn.js": "^4.11.6", - "bn.js": "^4.11.9", - "camelcase": "^5.3.1", - "ip-regex": "^4.3.0" - } - }, - "@polkadot/util-crypto": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-6.11.1.tgz", - "integrity": "sha512-fWA1Nz17FxWJslweZS4l0Uo30WXb5mYV1KEACVzM+BSZAvG5eoiOAYX6VYZjyw6/7u53XKrWQlD83iPsg3KvZw==", - "requires": { - "@babel/runtime": "^7.14.6", - "@polkadot/networks": "6.11.1", - "@polkadot/util": "6.11.1", - "@polkadot/wasm-crypto": "^4.0.2", - "@polkadot/x-randomvalues": "6.11.1", - "base-x": "^3.0.8", - "base64-js": "^1.5.1", - "blakejs": "^1.1.1", - "bn.js": "^4.11.9", - "create-hash": "^1.2.0", - "elliptic": "^6.5.4", - "hash.js": "^1.1.7", - "js-sha3": "^0.8.0", - "scryptsy": "^2.1.0", - "tweetnacl": "^1.0.3", - "xxhashjs": "^0.2.2" - } - }, - "@polkadot/wasm-crypto": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-4.1.2.tgz", - "integrity": "sha512-2EKdOjIrD2xHP2rC+0G/3Qo6926nL/18vCFkd34lBd9zP9YNF2GDEtDY+zAeDIRFKe1sQHTpsKgNdYSWoV2eBg==", - "requires": { - "@babel/runtime": "^7.14.6", - "@polkadot/wasm-crypto-asmjs": "^4.1.2", - "@polkadot/wasm-crypto-wasm": "^4.1.2" - } - }, - "@polkadot/wasm-crypto-asmjs": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-4.1.2.tgz", - "integrity": "sha512-3Q+vVUxDAC2tXgKMM3lKzx2JW+tarDpTjkvdxIKATyi8Ek69KkUqvMyJD0VL/iFZOFZED0YDX9UU4XOJ/astlg==", - "requires": { - "@babel/runtime": "^7.14.6" - } - }, - "@polkadot/wasm-crypto-wasm": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-4.1.2.tgz", - "integrity": "sha512-/l4IBEdQ41szHdHkuF//z1qr+XmWuLHlpBA7s9Eb221m1Fir6AKoCHoh1hp1r3v0ecZYLKvak1B225w6JAU3Fg==", - "requires": { - "@babel/runtime": "^7.14.6" - } - }, - "@polkadot/x-fetch": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-6.11.1.tgz", - "integrity": "sha512-qJyLLnm+4SQEZ002UDz2wWnXbnnH84rIS0mLKZ5k82H4lMYY+PQflvzv6sbu463e/lgiEao+6zvWS6DSKv1Yog==", - "requires": { - "@babel/runtime": "^7.14.6", - "@polkadot/x-global": "6.11.1", - "@types/node-fetch": "^2.5.10", - "node-fetch": "^2.6.1" - } - }, - "@polkadot/x-global": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-6.11.1.tgz", - "integrity": "sha512-lsBK/e4KbjfieyRmnPs7bTiGbP/6EoCZz7rqD/voNS5qsJAaXgB9LR+ilubun9gK/TDpebyxgO+J19OBiQPIRw==", - "requires": { - "@babel/runtime": "^7.14.6" - } - }, - "@polkadot/x-randomvalues": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-6.11.1.tgz", - "integrity": "sha512-2MfUfGZSOkuPt7GF5OJkPDbl4yORI64SUuKM25EGrJ22o1UyoBnPOClm9eYujLMD6BfDZRM/7bQqqoLW+NuHVw==", - "requires": { - "@babel/runtime": "^7.14.6", - "@polkadot/x-global": "6.11.1" - } - }, - "@polkadot/x-rxjs": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-rxjs/-/x-rxjs-6.11.1.tgz", - "integrity": "sha512-zIciEmij7SUuXXg9g/683Irx6GogxivrQS2pgBir2DI/YZq+um52+Dqg1mqsEZt74N4KMTMnzAZAP6LJOBOMww==", - "requires": { - "@babel/runtime": "^7.14.6", - "rxjs": "^6.6.7" - } - }, - "@polkadot/x-textdecoder": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-6.11.1.tgz", - "integrity": "sha512-DI1Ym2lyDSS/UhnTT2e9WutukevFZ0WGpzj4eotuG2BTHN3e21uYtYTt24SlyRNMrWJf5+TkZItmZeqs1nwAfQ==", - "requires": { - "@babel/runtime": "^7.14.6", - "@polkadot/x-global": "6.11.1" - } - }, - "@polkadot/x-textencoder": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-6.11.1.tgz", - "integrity": "sha512-8ipjWdEuqFo+R4Nxsc3/WW9CSEiprX4XU91a37ZyRVC4e9R1bmvClrpXmRQLVcAQyhRvG8DKOOtWbz8xM+oXKg==", - "requires": { - "@babel/runtime": "^7.14.6", - "@polkadot/x-global": "6.11.1" - } - }, - "@polkadot/x-ws": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-6.11.1.tgz", - "integrity": "sha512-GNu4ywrMlVi0QF6QSpKwYWMK6JRK+kadgN/zEhMoH1z5h8LwpqDLv128j5WspWbQti2teCQtridjf7t2Lzoe8Q==", - "requires": { - "@babel/runtime": "^7.14.6", - "@polkadot/x-global": "6.11.1", - "@types/websocket": "^1.0.3", - "websocket": "^1.0.34" - } - }, - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "requires": { - "@types/node": "*" - } - }, - "@types/chai": { - "version": "4.2.21", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.21.tgz", - "integrity": "sha512-yd+9qKmJxm496BOV9CMNaey8TWsikaZOwMRwPHQIjcOJM9oV+fi9ZMNw3JsVnbEEbo2gRTDnGEBv8pjyn67hNg==" - }, - "@types/mocha": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", - "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==" - }, - "@types/node": { - "version": "16.4.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.4.0.tgz", - "integrity": "sha512-HrJuE7Mlqcjj+00JqMWpZ3tY8w7EUd+S0U3L1+PQSWiXZbOgyQDvi+ogoUxaHApPJq5diKxYBQwA3iIlNcPqOg==" - }, - "@types/node-fetch": { - "version": "2.5.11", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.11.tgz", - "integrity": "sha512-2upCKaqVZETDRb8A2VTaRymqFBEgH8u6yr96b/u3+1uQEPDRo3mJLEiPk7vdXBHRtjwkjqzFYMJXrt0Z9QsYjQ==", - "requires": { - "@types/node": "*", - "form-data": "^3.0.0" - } - }, - "@types/pbkdf2": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", - "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", - "requires": { - "@types/node": "*" - } - }, - "@types/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", - "requires": { - "@types/node": "*" - } - }, - "@types/websocket": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.3.tgz", - "integrity": "sha512-ZdoTSwmDsKR7l1I8fpfQtmTI/hUwlOvE3q0iyJsp4tXU0MkdrYowimDzwxjhQvxU4qjhHLd3a6ig0OXRbLgIdw==", - "requires": { - "@types/node": "*" - } - }, - "@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==" - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-align": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", - "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", - "requires": { - "string-width": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "available-typed-arrays": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.4.tgz", - "integrity": "sha512-SA5mXJWrId1TaQjfxUYghbqQ/hYioKmLJvPJyDuYRtXXenFNMjj4hSSt1Cf1xsuXSXrtxrVC5Ot4eU6cOtBDdA==" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base-x": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", - "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { - "tweetnacl": "^0.14.3" - }, - "dependencies": { - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - } - } - }, - "bignumber.js": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", - "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==" - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - }, - "blakejs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.1.tgz", - "integrity": "sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg==" - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - } - }, - "boxen": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", - "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", - "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^5.3.1", - "chalk": "^3.0.0", - "cli-boxes": "^2.2.0", - "string-width": "^4.1.0", - "term-size": "^2.1.0", - "type-fest": "^0.8.1", - "widest-line": "^3.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - }, - "dependencies": { - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - } - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - } - } - }, - "bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", - "requires": { - "base-x": "^3.0.2" - } - }, - "bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "requires": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" - }, - "buffer-to-arraybuffer": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", - "integrity": "sha1-YGSkD6dutDxyOrqe+PbhIW0QURo=" - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" - }, - "bufferutil": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.3.tgz", - "integrity": "sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw==", - "requires": { - "node-gyp-build": "^4.2.0" - } - }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - } - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=" - }, - "chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.3.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - }, - "cids": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz", - "integrity": "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==", - "requires": { - "buffer": "^5.5.0", - "class-is": "^1.1.0", - "multibase": "~0.6.0", - "multicodec": "^1.0.0", - "multihashes": "~0.4.15" - }, - "dependencies": { - "multicodec": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", - "integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==", - "requires": { - "buffer": "^5.6.0", - "varint": "^5.0.0" - } - } - } - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-is": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", - "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==" - }, - "cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "requires": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - } - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "requires": { - "safe-buffer": "5.1.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "content-hash": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz", - "integrity": "sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==", - "requires": { - "cids": "^0.7.1", - "multicodec": "^0.5.5", - "multihashes": "^0.4.15" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "crc-32": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", - "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", - "requires": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.1.0" - } - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" - }, - "cuint": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", - "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=" - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==" - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "requires": { - "type-detect": "^4.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" - }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "requires": { - "object-keys": "^1.0.12" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==" - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" - }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "requires": { - "is-obj": "^2.0.0" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "es-abstract": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", - "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.3", - "is-string": "^1.0.6", - "object-inspect": "^1.10.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "eth-ens-namehash": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", - "integrity": "sha1-IprEbsqG1S4MmR58sq74P/D2i88=", - "requires": { - "idna-uts46-hx": "^2.3.1", - "js-sha3": "^0.5.7" - }, - "dependencies": { - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" - } - } - }, - "eth-lib": { - "version": "0.1.29", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", - "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", - "requires": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "nano-json-stream-parser": "^0.1.2", - "servify": "^0.1.12", - "ws": "^3.0.0", - "xhr-request-promise": "^0.1.2" - } - }, - "ethereum-bloom-filters": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", - "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", - "requires": { - "js-sha3": "^0.8.0" - } - }, - "ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "requires": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "ethereumjs-util": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.0.tgz", - "integrity": "sha512-kR+vhu++mUDARrsMMhsjjzPduRVAeundLGXucGRHF3B4oEltOUspfgCVco4kckucj3FMlLaZHUl9n7/kdmr6Tw==", - "requires": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.4" - }, - "dependencies": { - "@types/bn.js": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", - "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", - "requires": { - "@types/node": "*" - } - }, - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - } - } - }, - "ethjs-unit": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", - "integrity": "sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=", - "requires": { - "bn.js": "4.11.6", - "number-to-bn": "1.7.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" - } - } - }, - "ethjs-util": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", - "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", - "requires": { - "is-hex-prefixed": "1.0.0", - "strip-hex-prefix": "1.0.0" - } - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "exit-on-epipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", - "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==" - }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", - "requires": { - "type": "^2.0.0" - }, - "dependencies": { - "type": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", - "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "filter-console": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/filter-console/-/filter-console-0.1.1.tgz", - "integrity": "sha512-zrXoV1Uaz52DqPs+qEwNJWJFAWZpYJ47UNmpN9q4j+/EYsz85uV0DC9k8tRND5kYmoVzL0W+Y75q4Rg8sRJCdg==" - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "requires": { - "minipass": "^2.6.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=" - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "requires": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "global-dirs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", - "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", - "requires": { - "ini": "1.3.7" - } - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==" - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "has-symbol-support-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" - }, - "has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "requires": { - "has-symbol-support-x": "^1.4.1" - } - }, - "has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - } - } - }, - "http-https": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", - "integrity": "sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs=" - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "idna-uts46-hx": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", - "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", - "requires": { - "punycode": "2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=" - } - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=" - }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==" - }, - "ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==" - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "is-arguments": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", - "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", - "requires": { - "call-bind": "^1.0.0" - } - }, - "is-bigint": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", - "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==" - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-boolean-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", - "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "requires": { - "ci-info": "^2.0.0" - } - }, - "is-date-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", - "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" - }, - "is-generator-function": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.9.tgz", - "integrity": "sha512-ZJ34p1uvIfptHCN7sFTjGibB9/oBg17sHqzDLfuwhvmN/qLVvIQXRQ8licZQ35WJ8KuEQt/etnnzQFI9C9Ue/A==" - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-hex-prefixed": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=" - }, - "is-installed-globally": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", - "requires": { - "global-dirs": "^2.0.1", - "is-path-inside": "^3.0.1" - } - }, - "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" - }, - "is-npm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", - "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==" - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-number-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", - "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==" - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" - }, - "is-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", - "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==" - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" - }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" - }, - "is-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", - "requires": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" - } - }, - "is-retry-allowed": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-string": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", - "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==" - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typed-array": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz", - "integrity": "sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==", - "requires": { - "available-typed-arrays": "^1.0.2", - "call-bind": "^1.0.2", - "es-abstract": "^1.18.0-next.2", - "foreach": "^2.0.5", - "has-symbols": "^1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" - }, - "is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" - }, - "is2": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.7.tgz", - "integrity": "sha512-4vBQoURAXC6hnLFxD4VW7uc04XiwTTl/8ydYJxKvPwkWQrSjInkuM5VZVg6BGr1/natq69zDuvO9lGpLClJqvA==", - "requires": { - "deep-is": "^0.1.3", - "ip-regex": "^4.1.0", - "is-url": "^1.2.4" - } - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", - "requires": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" - } - }, - "js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" - }, - "js-yaml": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", - "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", - "requires": { - "argparse": "^2.0.1" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "keccak": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.1.tgz", - "integrity": "sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA==", - "requires": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - } - }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "requires": { - "json-buffer": "3.0.0" - } - }, - "latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "requires": { - "package-json": "^6.3.0" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "requires": { - "p-locate": "^5.0.0" - } - }, - "log-symbols": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", - "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", - "requires": { - "chalk": "^4.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.48.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", - "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==" - }, - "mime-types": { - "version": "2.1.31", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", - "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", - "requires": { - "mime-db": "1.48.0" - } - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", - "requires": { - "dom-walk": "^0.1.0" - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "requires": { - "minipass": "^2.9.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - }, - "mkdirp-promise": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", - "integrity": "sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE=", - "requires": { - "mkdirp": "*" - } - }, - "mocha": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz", - "integrity": "sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==", - "requires": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.1", - "debug": "4.3.1", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.1.6", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.0.0", - "log-symbols": "4.0.0", - "minimatch": "3.0.4", - "ms": "2.1.3", - "nanoid": "3.1.20", - "serialize-javascript": "5.0.1", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "wide-align": "1.1.3", - "workerpool": "6.1.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } - } - }, - "mock-fs": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz", - "integrity": "sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "multibase": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz", - "integrity": "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==", - "requires": { - "base-x": "^3.0.8", - "buffer": "^5.5.0" - } - }, - "multicodec": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz", - "integrity": "sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==", - "requires": { - "varint": "^5.0.0" - } - }, - "multihashes": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz", - "integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==", - "requires": { - "buffer": "^5.5.0", - "multibase": "^0.7.0", - "varint": "^5.0.0" - }, - "dependencies": { - "multibase": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz", - "integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==", - "requires": { - "base-x": "^3.0.8", - "buffer": "^5.5.0" - } - } - } - }, - "nano-json-stream-parser": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", - "integrity": "sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18=" - }, - "nanoid": { - "version": "3.1.20", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", - "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==" - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" - }, - "node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" - }, - "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" - }, - "node-gyp-build": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", - "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==" - }, - "nodemon": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.12.tgz", - "integrity": "sha512-egCTmNZdObdBxUBw6ZNwvZ/xzk24CKRs5K6d+5zbmrMr7rOpPmfPeF6OxM3DDpaRx331CQRFEktn+wrFFfBSOA==", - "requires": { - "chokidar": "^3.2.2", - "debug": "^3.2.6", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", - "pstree.remy": "^1.1.7", - "semver": "^5.7.1", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.3", - "update-notifier": "^4.1.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "requires": { - "abbrev": "1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" - }, - "npm-watch": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/npm-watch/-/npm-watch-0.9.0.tgz", - "integrity": "sha512-C5Rgh5+jvY33K1EH8Qjr1hfpH9Nhasc90QJ0W+JyKg2ogE0LOCZI4xirC8QmywW7XinyBpynwxlrN6aPfjc3Hw==", - "requires": { - "nodemon": "^2.0.7", - "through2": "^4.0.2" - } - }, - "number-to-bn": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", - "integrity": "sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=", - "requires": { - "bn.js": "4.11.6", - "strip-hex-prefix": "1.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" - } - } - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==" - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "oboe": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz", - "integrity": "sha1-VVQoTFQ6ImbXo48X4HOCH73jk80=", - "requires": { - "http-https": "^1.0.0" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "requires": { - "p-limit": "^3.0.2" - } - }, - "p-timeout": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", - "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", - "requires": { - "p-finally": "^1.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, - "package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "requires": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-headers": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz", - "integrity": "sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA==" - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==" - }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" - }, - "polkadot-launch": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/polkadot-launch/-/polkadot-launch-1.7.0.tgz", - "integrity": "sha512-1zn87/erTmTM1BkS04M845IdBZMbxc5x57NeKFCOYR6geuRjoUpa+l6zDxjbWw4r8p/GR4hGdcpwioQAM0ZokA==", - "requires": { - "@polkadot/api": "^4.15.1", - "@polkadot/util": "^6.9.1", - "@polkadot/util-crypto": "^6.9.1", - "filter-console": "^0.1.1", - "typescript": "^4.1.5", - "yargs": "^15.4.1", - "yarn": "^1.22.10" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "typescript": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", - "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==" - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - }, - "printj": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", - "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==" - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" - }, - "pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "requires": { - "escape-goat": "^2.0.0" - } - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - }, - "query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", - "requires": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - } - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "requires": { - "picomatch": "^2.2.1" - } - }, - "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" - }, - "registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", - "requires": { - "rc": "^1.2.8" - } - }, - "registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "requires": { - "rc": "^1.2.8" - } - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "rlp": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.6.tgz", - "integrity": "sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg==", - "requires": { - "bn.js": "^4.11.1" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" - }, - "scryptsy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/scryptsy/-/scryptsy-2.1.0.tgz", - "integrity": "sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w==" - }, - "secp256k1": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", - "integrity": "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==", - "requires": { - "elliptic": "^6.5.2", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "servify": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", - "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", - "requires": { - "body-parser": "^1.16.0", - "cors": "^2.8.1", - "express": "^4.14.0", - "request": "^2.79.0", - "xhr": "^2.3.3" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" - }, - "simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" - }, - "simple-get": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", - "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", - "requires": { - "decompress-response": "^3.3.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "dependencies": { - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - } - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "strip-hex-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", - "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", - "requires": { - "is-hex-prefixed": "1.0.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "swarm-js": { - "version": "0.1.40", - "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.40.tgz", - "integrity": "sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA==", - "requires": { - "bluebird": "^3.5.0", - "buffer": "^5.0.5", - "eth-lib": "^0.1.26", - "fs-extra": "^4.0.2", - "got": "^7.1.0", - "mime-types": "^2.1.16", - "mkdirp-promise": "^5.0.1", - "mock-fs": "^4.1.0", - "setimmediate": "^1.0.5", - "tar": "^4.0.2", - "xhr-request": "^1.0.1" - }, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "got": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", - "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", - "requires": { - "decompress-response": "^3.2.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-plain-obj": "^1.1.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "p-cancelable": "^0.3.0", - "p-timeout": "^1.1.1", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "url-parse-lax": "^1.0.0", - "url-to-options": "^1.0.1" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" - }, - "p-cancelable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", - "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==" - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "requires": { - "prepend-http": "^1.0.1" - } - } - } - }, - "tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - } - } - }, - "tcp-port-used": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tcp-port-used/-/tcp-port-used-1.0.2.tgz", - "integrity": "sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==", - "requires": { - "debug": "4.3.1", - "is2": "^2.0.6" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "term-size": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==" - }, - "through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "requires": { - "readable-stream": "3" - } - }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" - }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "requires": { - "nopt": "~1.0.10" - } - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "ts-node": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", - "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", - "requires": { - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.17", - "yn": "3.1.1" - }, - "dependencies": { - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" - } - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==" - }, - "ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" - }, - "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - } - }, - "undefsafe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", - "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", - "requires": { - "debug": "^2.2.0" - } - }, - "underscore": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", - "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==" - }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "requires": { - "crypto-random-string": "^2.0.0" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "update-notifier": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", - "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", - "requires": { - "boxen": "^4.2.0", - "chalk": "^3.0.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.1", - "is-npm": "^4.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.0.0", - "pupa": "^2.0.1", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - }, - "dependencies": { - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "requires": { - "prepend-http": "^2.0.0" - } - }, - "url-set-query": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", - "integrity": "sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk=" - }, - "url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" - }, - "utf-8-validate": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.5.tgz", - "integrity": "sha512-+pnxRYsS/axEpkrrEpzYfNZGXp0IjC/9RIxwM5gntY4Koi8SHmUGSfxfWqxZdRxrtaoVstuOzUp/rbs3JSPELQ==", - "requires": { - "node-gyp-build": "^4.2.0" - } - }, - "utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", - "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" - }, - "util": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", - "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", - "requires": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "safe-buffer": "^5.1.2", - "which-typed-array": "^1.1.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - }, - "varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "web3": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.4.0.tgz", - "integrity": "sha512-faT3pIX+1tuo+wqmUFQPe10MUGaB1UvRYxw9dmVJFLxaRAIfXErSilOf3jFhSwKbbPNkwG0bTiudCLN9JgeS7A==", - "requires": { - "web3-bzz": "1.4.0", - "web3-core": "1.4.0", - "web3-eth": "1.4.0", - "web3-eth-personal": "1.4.0", - "web3-net": "1.4.0", - "web3-shh": "1.4.0", - "web3-utils": "1.4.0" - } - }, - "web3-bzz": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.4.0.tgz", - "integrity": "sha512-KhXmz8hcfGsqhplB7NrekAeNkG2edHjXV4bL3vnXde8RGMWpabpSNxuwiGv+dv/3nWlrHatH0vGooONYCkP5TA==", - "requires": { - "@types/node": "^12.12.6", - "got": "9.6.0", - "swarm-js": "^0.1.40", - "underscore": "1.12.1" - }, - "dependencies": { - "@types/node": { - "version": "12.20.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.16.tgz", - "integrity": "sha512-6CLxw83vQf6DKqXxMPwl8qpF8I7THFZuIwLt4TnNsumxkp1VsRZWT8txQxncT/Rl2UojTsFzWgDG4FRMwafrlA==" - } - } - }, - "web3-core": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.4.0.tgz", - "integrity": "sha512-VRNMNqwzvPeKIet2l9BMApPHoUv0UqwaZH0lZJhG2RBko42w9Xls+pQwfVNSV16j04t/ehm1aLRV2Sx6lzVfRg==", - "requires": { - "@types/bn.js": "^4.11.5", - "@types/node": "^12.12.6", - "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.4.0", - "web3-core-method": "1.4.0", - "web3-core-requestmanager": "1.4.0", - "web3-utils": "1.4.0" - }, - "dependencies": { - "@types/node": { - "version": "12.20.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.16.tgz", - "integrity": "sha512-6CLxw83vQf6DKqXxMPwl8qpF8I7THFZuIwLt4TnNsumxkp1VsRZWT8txQxncT/Rl2UojTsFzWgDG4FRMwafrlA==" - } - } - }, - "web3-core-helpers": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.4.0.tgz", - "integrity": "sha512-8Ebq0nmRfzw7iPoXbIRHEWOuPh+1cOV3OOEvKm5Od3McZOjja914vdk+DM3MgmbSpDzYJRFM6KoF0+Z/U/1bPw==", - "requires": { - "underscore": "1.12.1", - "web3-eth-iban": "1.4.0", - "web3-utils": "1.4.0" - } - }, - "web3-core-method": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.4.0.tgz", - "integrity": "sha512-KW9922fEkgKu8zDcJR8Iikg/epsuWMArAUVTipKVwzAI5TVdvOMRgSe/b7IIDRUIeoeXMARmJ+PrAlx+IU2acQ==", - "requires": { - "@ethersproject/transactions": "^5.0.0-beta.135", - "underscore": "1.12.1", - "web3-core-helpers": "1.4.0", - "web3-core-promievent": "1.4.0", - "web3-core-subscriptions": "1.4.0", - "web3-utils": "1.4.0" - } - }, - "web3-core-promievent": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.4.0.tgz", - "integrity": "sha512-YEwko22kcry7lHwbe0k80BrjXCZ+73jMdvZtptRH5k2B+XZ1XtmXwYL1PFIlZy9V0zgZijdg+3GabCnAHjVXAw==", - "requires": { - "eventemitter3": "4.0.4" - }, - "dependencies": { - "eventemitter3": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", - "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" - } - } - }, - "web3-core-requestmanager": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.4.0.tgz", - "integrity": "sha512-qIwKJO5T0KkUAIL7y9JRSUkk3+LaCwghdUHK8FzbMvq6R1W9lgCBnccqFGEI76EJjHvsiw4kEKBEXowdB3xenQ==", - "requires": { - "underscore": "1.12.1", - "util": "^0.12.0", - "web3-core-helpers": "1.4.0", - "web3-providers-http": "1.4.0", - "web3-providers-ipc": "1.4.0", - "web3-providers-ws": "1.4.0" - } - }, - "web3-core-subscriptions": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.4.0.tgz", - "integrity": "sha512-/UMC9rSLEd0U+h6Qanx6CM29o/cfUyGWgl/HM6O/AIuth9G+34QBuKDa11Gr2Qg6F8Lr9tSFm8QIGVniOx9i5A==", - "requires": { - "eventemitter3": "4.0.4", - "underscore": "1.12.1", - "web3-core-helpers": "1.4.0" - }, - "dependencies": { - "eventemitter3": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", - "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" - } - } - }, - "web3-eth": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.4.0.tgz", - "integrity": "sha512-L990eMJeWh4h/Z3M8MJb9HrKq8tqvzdGZ7igdzd6Ba3B/VKgGFAJ/4XIqtLwAJ1Wg5Cj8my60tYY+34c2cLefw==", - "requires": { - "underscore": "1.12.1", - "web3-core": "1.4.0", - "web3-core-helpers": "1.4.0", - "web3-core-method": "1.4.0", - "web3-core-subscriptions": "1.4.0", - "web3-eth-abi": "1.4.0", - "web3-eth-accounts": "1.4.0", - "web3-eth-contract": "1.4.0", - "web3-eth-ens": "1.4.0", - "web3-eth-iban": "1.4.0", - "web3-eth-personal": "1.4.0", - "web3-net": "1.4.0", - "web3-utils": "1.4.0" - } - }, - "web3-eth-abi": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.4.0.tgz", - "integrity": "sha512-FtmWipG/dSSkTGFb72JCwky7Jd0PIvd0kGTInWQwIEZlw5qMOYl61WZ9gwfojFHvHF6q1eKncerQr+MRXHO6zg==", - "requires": { - "@ethersproject/abi": "5.0.7", - "underscore": "1.12.1", - "web3-utils": "1.4.0" - } - }, - "web3-eth-accounts": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.4.0.tgz", - "integrity": "sha512-tETHBvfO3Z7BXZ7HJIwuX7ol6lPefP55X7b4IiX82C1PujHwsxENY7c/3wyxzqKoDyH6zfyEQo17yhxkhsM1oA==", - "requires": { - "@ethereumjs/common": "^2.3.0", - "@ethereumjs/tx": "^3.2.1", - "crypto-browserify": "3.12.0", - "eth-lib": "0.2.8", - "ethereumjs-util": "^7.0.10", - "scrypt-js": "^3.0.1", - "underscore": "1.12.1", - "uuid": "3.3.2", - "web3-core": "1.4.0", - "web3-core-helpers": "1.4.0", - "web3-core-method": "1.4.0", - "web3-utils": "1.4.0" - }, - "dependencies": { - "eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "requires": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - } - } - }, - "web3-eth-contract": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.4.0.tgz", - "integrity": "sha512-GfIhOzfp/ZXKd+1tFEH3ePq0DEsvq9XO5tOsI0REDtEYUj2GNxO5e/x/Fhekk7iLZ7xAqSzDMweFruDQ1fxn0A==", - "requires": { - "@types/bn.js": "^4.11.5", - "underscore": "1.12.1", - "web3-core": "1.4.0", - "web3-core-helpers": "1.4.0", - "web3-core-method": "1.4.0", - "web3-core-promievent": "1.4.0", - "web3-core-subscriptions": "1.4.0", - "web3-eth-abi": "1.4.0", - "web3-utils": "1.4.0" - } - }, - "web3-eth-ens": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.4.0.tgz", - "integrity": "sha512-jR1KorjU1erpYFpFzsMXAWZnHhqUqWPBq/4+BGVj7/pJ43+A3mrE1eB0zl91Dwc1RTNwOhB02iOj1c9OlpGr3g==", - "requires": { - "content-hash": "^2.5.2", - "eth-ens-namehash": "2.0.8", - "underscore": "1.12.1", - "web3-core": "1.4.0", - "web3-core-helpers": "1.4.0", - "web3-core-promievent": "1.4.0", - "web3-eth-abi": "1.4.0", - "web3-eth-contract": "1.4.0", - "web3-utils": "1.4.0" - } - }, - "web3-eth-iban": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.4.0.tgz", - "integrity": "sha512-YNx748VzwiBe0gvtZjvU9BQsooZ9s9sAlmiDWJOMcvMbUTDhC7SvxA7vV/vrnOxL6oGHRh0U/azsYNxxlKiTBw==", - "requires": { - "bn.js": "^4.11.9", - "web3-utils": "1.4.0" - } - }, - "web3-eth-personal": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.4.0.tgz", - "integrity": "sha512-8Ip6xZ8plmWqAD4ESbKUIPVV9gfTAFFm0ff1FQIw9I9kYvFlBIPzukvm852w2SftGem+/iRH+2+2mK7HvuKXZQ==", - "requires": { - "@types/node": "^12.12.6", - "web3-core": "1.4.0", - "web3-core-helpers": "1.4.0", - "web3-core-method": "1.4.0", - "web3-net": "1.4.0", - "web3-utils": "1.4.0" - }, - "dependencies": { - "@types/node": { - "version": "12.20.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.16.tgz", - "integrity": "sha512-6CLxw83vQf6DKqXxMPwl8qpF8I7THFZuIwLt4TnNsumxkp1VsRZWT8txQxncT/Rl2UojTsFzWgDG4FRMwafrlA==" - } - } - }, - "web3-net": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.4.0.tgz", - "integrity": "sha512-41WkKobL+KnKC0CY0RZ1KhMMyR/hMFGlbHZQac4KtB7ro1UdXeK+RiYX+GzSr1h7j9Dj+dQZqyBs70cxmL9cPQ==", - "requires": { - "web3-core": "1.4.0", - "web3-core-method": "1.4.0", - "web3-utils": "1.4.0" - } - }, - "web3-providers-http": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.4.0.tgz", - "integrity": "sha512-A9nLF4XGZfDb1KYYuKRwHY1H90Ee/0I0CqQQEELI0yuY9eca50qdCHEg3sJhvqBIG44JCm83amOGxR8wi+76tQ==", - "requires": { - "web3-core-helpers": "1.4.0", - "xhr2-cookies": "1.1.0" - } - }, - "web3-providers-ipc": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.4.0.tgz", - "integrity": "sha512-ul/tSNUI5anhdBGBV+FWFH9EJgO73/G21haFDEXvTnSJQa9/byj401H/E2Xd8BXGk+2XB+CCGLZBiuAjhhhtTA==", - "requires": { - "oboe": "2.1.5", - "underscore": "1.12.1", - "web3-core-helpers": "1.4.0" - } - }, - "web3-providers-ws": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.4.0.tgz", - "integrity": "sha512-E5XfF58RLXuCtGiMSXxXEtjceCfPli+I4MDYCKx/J/bDJ6qvLUM2OnnGEmE7pq1Z03h0xh1ZezaB/qoweK3ZIQ==", - "requires": { - "eventemitter3": "4.0.4", - "underscore": "1.12.1", - "web3-core-helpers": "1.4.0", - "websocket": "^1.0.32" - }, - "dependencies": { - "eventemitter3": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", - "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" - } - } - }, - "web3-shh": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.4.0.tgz", - "integrity": "sha512-OZMkMgo+VZnu1ErhIFXW+5ExnPKQg9v8/2DHGVtNEwuC5OHYuAEF5U7MQgbxYJYwbRmxQCt/hA3VwKjnkbmSAA==", - "requires": { - "web3-core": "1.4.0", - "web3-core-method": "1.4.0", - "web3-core-subscriptions": "1.4.0", - "web3-net": "1.4.0" - } - }, - "web3-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.4.0.tgz", - "integrity": "sha512-b8mEhwh/J928Xk+SQFjtqrR2EGPhpknWLcIt9aCpVPVRXiqjUGo/kpOHKz0azu9c6/onEJ9tWXZt0cVjmH0N5Q==", - "requires": { - "bn.js": "^4.11.9", - "eth-lib": "0.2.8", - "ethereum-bloom-filters": "^1.0.6", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "underscore": "1.12.1", - "utf8": "3.0.0" - }, - "dependencies": { - "eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "requires": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - } - } - }, - "websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "requires": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, - "which-typed-array": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", - "integrity": "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==", - "requires": { - "available-typed-arrays": "^1.0.2", - "call-bind": "^1.0.0", - "es-abstract": "^1.18.0-next.1", - "foreach": "^2.0.5", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.1", - "is-typed-array": "^1.1.3" - } - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "requires": { - "string-width": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, - "workerpool": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", - "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==" - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" - }, - "xhr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", - "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", - "requires": { - "global": "~4.4.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "xhr-request": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", - "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", - "requires": { - "buffer-to-arraybuffer": "^0.0.5", - "object-assign": "^4.1.1", - "query-string": "^5.0.1", - "simple-get": "^2.7.0", - "timed-out": "^4.0.1", - "url-set-query": "^1.0.0", - "xhr": "^2.0.4" - } - }, - "xhr-request-promise": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz", - "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", - "requires": { - "xhr-request": "^1.1.0" - } - }, - "xhr2-cookies": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", - "integrity": "sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg=", - "requires": { - "cookiejar": "^2.1.1" - } - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "xxhashjs": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", - "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", - "requires": { - "cuint": "^0.2.2" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - }, - "yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=" - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" - }, - "yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "requires": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "dependencies": { - "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==" - } - } - }, - "yarn": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.22.10.tgz", - "integrity": "sha512-IanQGI9RRPAN87VGTF7zs2uxkSyQSrSPsju0COgbsKQOOXr5LtcVPeyXWgwVa0ywG3d8dg6kSYKGBuYK021qeA==" - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" - } - } -} diff --git a/tests/package.json b/tests/package.json deleted file mode 100644 index 045c0c487..000000000 --- a/tests/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "ts-tests", - "version": "1.0.0", - "description": "", - "main": "index.js", - "watch": { - "build": { - "patterns": [ - "../" - ], - "ignore": [ - "../tests", - "../target", - "../build" - ], - "extensions": "rs", - "quiet": true, - "inherit": true - }, - "test": { - "patterns": [ - "../target/release/lc-core", - "./tests/**" - ], - "extensions": "ts,html,scss", - "quiet": true, - "inherit": true, - "runOnChangeOnly": true - } - }, - "scripts": { - "test-with-logs": "mocha --printlogs -r ts-node/register 'tests/**/test-*.ts'", - "test": "TS_NODE_TRANSPILE_ONLY=true mocha --parallel -r ts-node/register 'tests/**/test-*.ts'", - "watch": "npm-watch", - "build": "cargo build --release", - "test-single": "mocha -r ts-node/register 'tests/test-stake.ts'", - "current-test": "mocha -r ts-node/register", - "lint": "npx prettier --write --ignore-path .gitignore '**/*.(yml|js|ts|json)'" - }, - "author": "", - "license": "ISC", - "dependencies": { - "@polkadot/api": "^4.17.1", - "@polkadot/types": "^4.17.1", - "@types/chai": "^4.2.11", - "@types/mocha": "^8.2.2", - "chai": "^4.3.4", - "mocha": "^8.3.2", - "npm-watch": "^0.9.0", - "polkadot-launch": "^1.6.2", - "rimraf": "^3.0.2", - "tcp-port-used": "^1.0.2", - "ts-node": "9.1", - "typescript": "^3.9.6", - "web3": "^1.3.5" - } -} diff --git a/tests/tsconfig.json b/tests/tsconfig.json deleted file mode 100644 index 6f527790e..000000000 --- a/tests/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2020", - "moduleResolution": "node", - "esModuleInterop": true - } -} diff --git a/types-bundle/types_definition.json b/types-bundle/types_definition.json deleted file mode 100644 index 0c5c82382..000000000 --- a/types-bundle/types_definition.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "Balance": "u64", - "CertValue": { - "chainable_on": "BlockNumber", - "removable_on": "BlockNumber" - }, - "IdtyCertMeta": { - "issued_count": "u8", - "next_issuable_on": "BlockNumber", - "received_count": "u32" - }, - "IdtyData": { - "can_create_on": "BlockNumber" - }, - "IdtyDid": { - "hash": "[u8; 32]", - "planet": "Planet", - "latitude": "u32", - "longitude": "u32" - }, - "IdtyIndex": "u64", - "IdtyRight": { - "_enum": [ - "CreateIdty", - "LightCert", - "StrongCert", - "Ud" - ] - }, - "IdtyStatus": { - "_enum": [ - "Created", - "ConfirmedByOwner", - "Validated", - "Expired" - ] - }, - "IdtyValue": { - "did": "IdtyDid", - "expire_on": "BlockNumber", - "owner_key": "AccountId", - "removable_on": "BlockNumber", - "renewable_on": "BlockNumber", - "rights": "Vec<(T::IdtyRight, Option<T::AccountId>)>", - "status": "IdtyStatus", - "data": "IdtyData" - }, - "Planet": { - "_enum": [ - "Earth" - ] - } -} -- GitLab