diff --git a/.github/workflows/publish-docker.yml b/.github/workflows/publish-docker.yml index 32c86f783..38f1703bb 100644 --- a/.github/workflows/publish-docker.yml +++ b/.github/workflows/publish-docker.yml @@ -19,18 +19,12 @@ jobs: fail-fast: false matrix: include: - - binary: tangle-standalone + - binary: tangle features: default - image_name: tangle-standalone - - binary: tangle-standalone - features: integration-tests - image_name: tangle-standalone-integration-tests - - binary: tangle-standalone + image_name: tangle + - binary: tangle features: txpool - image_name: tangle-standalone-txpool - - binary: tangle-standalone - features: relayer - image_name: tangle-standalone-relayer + image_name: tangle-txpool permissions: contents: read packages: write diff --git a/.github/workflows/publish-release-binary.yml b/.github/workflows/publish-release-binary.yml index 018057ea7..2a974f27b 100644 --- a/.github/workflows/publish-release-binary.yml +++ b/.github/workflows/publish-release-binary.yml @@ -28,37 +28,25 @@ jobs: run: sudo apt-get install protobuf-compiler - name: Build binary - run: cargo build --release -p tangle-standalone --locked + run: cargo build --release -p tangle --locked - name: Upload regular binary to release uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} - file: target/release/tangle-standalone - asset_name: tangle-standalone-linux-amd64 + file: target/release/tangle + asset_name: tangle-linux-amd64 tag: ${{ github.ref }} overwrite: true - name: Build binary with txpool - run: cargo build --release -p tangle-standalone --locked --features txpool + run: cargo build --release -p tangle --locked --features txpool - name: Upload txpool binaries to release uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} - file: target/release/tangle-standalone - asset_name: tangle-standalone-txpool-linux-amd64 - tag: ${{ github.ref }} - overwrite: true - - - name: Build binary with relayer - run: cargo build --release -p tangle-standalone --locked --features relayer - - - name: Upload relayer binaries to release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: target/release/tangle-standalone - asset_name: tangle-standalone-relayer-linux-amd64 + file: target/release/tangle + asset_name: tangle-txpool-linux-amd64 tag: ${{ github.ref }} overwrite: true \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 79e98208d..3a665d770 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12,15 +12,6 @@ dependencies = [ "regex", ] -[[package]] -name = "addr2line" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" -dependencies = [ - "gimli 0.26.2", -] - [[package]] name = "addr2line" version = "0.19.0" @@ -45,12 +36,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" -[[package]] -name = "adler32" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" - [[package]] name = "aead" version = "0.3.2" @@ -240,7 +225,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" dependencies = [ - "winapi 0.3.9", + "winapi", ] [[package]] @@ -1181,7 +1166,7 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4057f2c32adbb2fc158e22fb38433c8e9bbf76b75a4732c7c0cbaf695fb65568" dependencies = [ - "bytes 1.5.0", + "bytes", "futures-sink", "futures-util", "memchr", @@ -1209,12 +1194,6 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" -[[package]] -name = "atomic_refcell" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41e67cd8309bbd06cd603a9e693a784ac2e5d1e955f11286e355089fcab3047c" - [[package]] name = "atty" version = "0.2.14" @@ -1223,7 +1202,7 @@ checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ "hermit-abi 0.1.19", "libc", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -1254,12 +1233,12 @@ dependencies = [ "axum-core", "base64 0.21.5", "bitflags 1.3.2", - "bytes 1.5.0", + "bytes", "futures-util", "http", - "http-body 0.4.5", - "hyper 0.14.27", - "itoa 1.0.9", + "http-body", + "hyper", + "itoa", "matchit", "memchr", "mime", @@ -1269,11 +1248,11 @@ dependencies = [ "serde", "serde_json", "serde_path_to_error", - "serde_urlencoded 0.7.1", + "serde_urlencoded", "sha1", "sync_wrapper", - "tokio 1.34.0", - "tokio-tungstenite 0.20.1", + "tokio", + "tokio-tungstenite", "tower", "tower-layer", "tower-service", @@ -1297,10 +1276,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" dependencies = [ "async-trait", - "bytes 1.5.0", + "bytes", "futures-util", "http", - "http-body 0.4.5", + "http-body", "mime", "rustversion", "tower-layer", @@ -1318,7 +1297,7 @@ dependencies = [ "instant", "pin-project-lite 0.2.13", "rand 0.8.5", - "tokio 1.34.0", + "tokio", ] [[package]] @@ -1382,12 +1361,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581" -[[package]] -name = "base64" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" - [[package]] name = "base64" version = "0.13.1" @@ -1733,16 +1706,6 @@ dependencies = [ "serde", ] -[[package]] -name = "buf_redux" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b953a6887648bb07a535631f2bc00fbdb2a2216f135552cb3f534ed136b9c07f" -dependencies = [ - "memchr", - "safemem", -] - [[package]] name = "build-data" version = "0.1.5" @@ -1815,12 +1778,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" -[[package]] -name = "bytes" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" - [[package]] name = "bytes" version = "1.5.0" @@ -2055,6 +2012,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ckb-merkle-mountain-range" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ccb671c5921be8a84686e6212ca184cb1d7c51cadcdbfcbd1cc3f042f5dfb8" +dependencies = [ + "cfg-if 1.0.0", +] + [[package]] name = "clang-sys" version = "1.6.1" @@ -2494,15 +2460,6 @@ version = "0.82.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e3bfe172b83167604601faf9dc60453e0d0a93415b57a9c4d1a7ae6849185cf" -[[package]] -name = "cranelift-entity" -version = "0.92.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9e39cfc857e7e539aa623e03bb6bec11f54aef3dfdef41adcfa7b594af3b54" -dependencies = [ - "serde", -] - [[package]] name = "cranelift-entity" version = "0.95.1" @@ -2566,7 +2523,7 @@ dependencies = [ "log", "smallvec", "wasmparser 0.102.0", - "wasmtime-types 8.0.1", + "wasmtime-types", ] [[package]] @@ -2595,9 +2552,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "fca89a0e215bab21874660c67903c5f143333cab1da83d041c7ded6053774751" dependencies = [ "cfg-if 1.0.0", "crossbeam-epoch", @@ -2606,22 +2563,21 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.15" +version = "0.9.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "2d2fe95351b870527a5d09bf563ed3c97c0cffb87cf1c78a591bf48bb218d9aa" dependencies = [ "autocfg", "cfg-if 1.0.0", "crossbeam-utils", "memoffset 0.9.0", - "scopeguard", ] [[package]] name = "crossbeam-queue" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" +checksum = "b9bcf5bdbfdd6030fb4a1c497b5d5fc5921aa2f60d359a17e249c0e6df3de153" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -2629,9 +2585,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +checksum = "c06d96137f14f244c37f989d9fff8f95e6c18b918e71f36638f8c49112e4c78f" dependencies = [ "cfg-if 1.0.0", ] @@ -3180,7 +3136,7 @@ checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" dependencies = [ "libc", "redox_users", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -3203,7 +3159,7 @@ checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" dependencies = [ "libc", "redox_users", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -3285,12 +3241,6 @@ 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 = "dtoa" version = "1.0.9" @@ -3497,7 +3447,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe81b5c06ecfdbc71dd845216f225f53b62a10cb8a16c946836a3467f701d05b" dependencies = [ "base64 0.21.5", - "bytes 1.5.0", + "bytes", "hex", "k256", "log", @@ -3581,19 +3531,6 @@ dependencies = [ "syn 2.0.39", ] -[[package]] -name = "env_logger" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" -dependencies = [ - "atty", - "humantime", - "log", - "regex", - "termcolor", -] - [[package]] name = "env_logger" version = "0.10.1" @@ -3671,52 +3608,6 @@ dependencies = [ "webb-tree-hash-derive", ] -[[package]] -name = "eth2-to-substrate-relay" -version = "0.2.0-dev" -source = "git+https://github.com/webb-tools/pallet-eth2-light-client?tag=v0.5.0#0ac997902435ed0bebfd03fbb0dccc0473b8d621" -dependencies = [ - "anyhow", - "async-trait", - "atomic_refcell", - "backoff", - "bitvec", - "dotenvy", - "env_logger 0.9.3", - "eth-types", - "ethereum-types 0.14.1", - "ethereum_hashing", - "ethereum_ssz", - "funty", - "futures 0.3.29", - "hex", - "lazy_static", - "log", - "min-max", - "primitive-types 0.12.2", - "prometheus 0.9.0", - "reqwest", - "serde", - "serde_json", - "sp-core 16.0.0", - "sp-keyring 18.0.0", - "tokio 1.34.0", - "toml 0.5.11", - "tracing", - "types", - "warp", - "webb 0.7.4", - "webb-consensus-types", - "webb-eth-rpc-client", - "webb-eth2-pallet-init", - "webb-finality-update-verify", - "webb-lc-relay-config", - "webb-lc-relayer-context", - "webb-merkle-proof", - "webb-proposals 0.8.0", - "webb-tree-hash", -] - [[package]] name = "eth2_interop_keypairs" version = "0.2.0" @@ -3792,7 +3683,7 @@ version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a89fb87a9e103f71b903b80b670200b54cc67a07578f070681f1fffb7396fb7" dependencies = [ - "bytes 1.5.0", + "bytes", "ethereum-types 0.14.1", "hash-db 0.15.2", "hash256-std-hasher", @@ -3921,7 +3812,7 @@ dependencies = [ "ethers-providers", "futures-util", "once_cell", - "pin-project 1.1.3", + "pin-project", "serde", "serde_json", "thiserror", @@ -3974,7 +3865,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f03e0bdc216eeb9e355b90cf610ef6c5bb8aca631f97b5ae9980ce34ea7878d" dependencies = [ "arrayvec 0.7.4", - "bytes 1.5.0", + "bytes", "cargo_metadata 0.18.1", "chrono", "const-hex", @@ -4034,7 +3925,7 @@ dependencies = [ "serde", "serde_json", "thiserror", - "tokio 1.34.0", + "tokio", "tracing", "tracing-futures", "url", @@ -4049,7 +3940,7 @@ dependencies = [ "async-trait", "auto_impl", "base64 0.21.5", - "bytes 1.5.0", + "bytes", "const-hex", "enr", "ethers-core", @@ -4061,13 +3952,13 @@ dependencies = [ "instant", "jsonwebtoken", "once_cell", - "pin-project 1.1.3", + "pin-project", "reqwest", "serde", "serde_json", "thiserror", - "tokio 1.34.0", - "tokio-tungstenite 0.20.1", + "tokio", + "tokio-tungstenite", "tracing", "tracing-futures", "url", @@ -4122,7 +4013,7 @@ dependencies = [ "svm-rs", "thiserror", "tiny-keccak", - "tokio 1.34.0", + "tokio", "tracing", "walkdir", "yansi", @@ -4277,9 +4168,9 @@ dependencies = [ [[package]] name = "eyre" -version = "0.6.9" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80f656be11ddf91bd709454d15d5bd896fbaf4cc3314e69349e4d1569f5b46cd" +checksum = "b6267a1fa6f59179ea4afc8e50fd8612a3cc60bc858f786ff877a4a8cb042799" dependencies = [ "indenter", "once_cell", @@ -4398,7 +4289,7 @@ dependencies = [ "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "sp-storage 13.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "sqlx", - "tokio 1.34.0", + "tokio", ] [[package]] @@ -4421,7 +4312,7 @@ dependencies = [ "sp-consensus", "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", - "tokio 1.34.0", + "tokio", ] [[package]] @@ -4446,7 +4337,7 @@ dependencies = [ "log", "pallet-evm", "parity-scale-codec", - "prometheus 0.13.3", + "prometheus", "rand 0.8.5", "rlp", "sc-client-api", @@ -4475,7 +4366,7 @@ dependencies = [ "sp-timestamp", "substrate-prometheus-endpoint", "thiserror", - "tokio 1.34.0", + "tokio", ] [[package]] @@ -4563,7 +4454,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84f2e425d9790201ba4af4630191feac6dcc98765b118d4d18e91d23c2353866" dependencies = [ - "env_logger 0.10.1", + "env_logger", "log", ] @@ -5112,25 +5003,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" dependencies = [ "libc", - "winapi 0.3.9", + "winapi", ] [[package]] -name = "fuchsia-zircon" -version = "0.3.3" +name = "fs4" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +checksum = "2eeb4ed9e12f43b7fa0baae3f9cdda28352770132ef2e09a23760c29cae8bd47" dependencies = [ - "bitflags 1.3.2", - "fuchsia-zircon-sys", + "rustix 0.38.25", + "windows-sys 0.48.0", ] -[[package]] -name = "fuchsia-zircon-sys" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" - [[package]] name = "funty" version = "2.0.0" @@ -5341,7 +5226,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" dependencies = [ "libc", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -5469,33 +5354,13 @@ dependencies = [ "subtle", ] -[[package]] -name = "h2" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e4728fd124914ad25e99e3d15a9361a879f6620f63cb56bbb08f95abb97a535" -dependencies = [ - "bytes 0.5.6", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap 1.9.3", - "slab", - "tokio 0.2.25", - "tokio-util 0.3.1", - "tracing", - "tracing-futures", -] - [[package]] name = "h2" version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" dependencies = [ - "bytes 1.5.0", + "bytes", "fnv", "futures-core", "futures-sink", @@ -5503,8 +5368,8 @@ dependencies = [ "http", "indexmap 2.1.0", "slab", - "tokio 1.34.0", - "tokio-util 0.7.10", + "tokio", + "tokio-util", "tracing", ] @@ -5599,30 +5464,6 @@ dependencies = [ "hashbrown 0.14.3", ] -[[package]] -name = "headers" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" -dependencies = [ - "base64 0.21.5", - "bytes 1.5.0", - "headers-core", - "http", - "httpdate 1.0.3", - "mime", - "sha1", -] - -[[package]] -name = "headers-core" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" -dependencies = [ - "http", -] - [[package]] name = "heck" version = "0.3.3" @@ -5673,9 +5514,9 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "hkdf" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" dependencies = [ "hmac 0.12.1", ] @@ -5737,7 +5578,7 @@ checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" dependencies = [ "libc", "match_cfg", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -5746,19 +5587,9 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" dependencies = [ - "bytes 1.5.0", + "bytes", "fnv", - "itoa 1.0.9", -] - -[[package]] -name = "http-body" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" -dependencies = [ - "bytes 0.5.6", - "http", + "itoa", ] [[package]] @@ -5767,7 +5598,7 @@ version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ - "bytes 1.5.0", + "bytes", "http", "pin-project-lite 0.2.13", ] @@ -5784,12 +5615,6 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" -[[package]] -name = "httpdate" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" - [[package]] name = "httpdate" version = "1.0.3" @@ -5802,49 +5627,25 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" -[[package]] -name = "hyper" -version = "0.13.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a6f157065790a3ed2f88679250419b5cdd96e714a0d65f7797fd337186e96bb" -dependencies = [ - "bytes 0.5.6", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.2.7", - "http", - "http-body 0.3.1", - "httparse", - "httpdate 0.3.2", - "itoa 0.4.8", - "pin-project 1.1.3", - "socket2 0.3.19", - "tokio 0.2.25", - "tower-service", - "tracing", - "want", -] - [[package]] name = "hyper" version = "0.14.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" dependencies = [ - "bytes 1.5.0", + "bytes", "futures-channel", "futures-core", "futures-util", - "h2 0.3.22", + "h2", "http", - "http-body 0.4.5", + "http-body", "httparse", - "httpdate 1.0.3", - "itoa 1.0.9", + "httpdate", + "itoa", "pin-project-lite 0.2.13", "socket2 0.4.10", - "tokio 1.34.0", + "tokio", "tower-service", "tracing", "want", @@ -5858,11 +5659,11 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http", - "hyper 0.14.27", + "hyper", "log", "rustls 0.21.9", "rustls-native-certs", - "tokio 1.34.0", + "tokio", "tokio-rustls", "webpki-roots 0.25.3", ] @@ -5873,10 +5674,10 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ - "bytes 1.5.0", - "hyper 0.14.27", + "bytes", + "hyper", "native-tls", - "tokio 1.34.0", + "tokio", "tokio-native-tls", ] @@ -5955,7 +5756,7 @@ dependencies = [ "log", "rtnetlink", "system-configuration", - "tokio 1.34.0", + "tokio", "windows", ] @@ -6058,15 +5859,6 @@ dependencies = [ "generic-array 0.14.7", ] -[[package]] -name = "input_buffer" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19a8a95243d5a0398cae618ec29477c6e3cb631152be5c19481f80bc71559754" -dependencies = [ - "bytes 0.5.6", -] - [[package]] name = "instant" version = "0.1.12" @@ -6081,7 +5873,7 @@ name = "int_to_bytes" version = "0.2.0" source = "git+https://github.com/webb-tools/lighthouse.git?rev=ef72e752eaf45f4b7eb64dd8dbb0fe088f955df8#ef72e752eaf45f4b7eb64dd8dbb0fe088f955df8" dependencies = [ - "bytes 1.5.0", + "bytes", ] [[package]] @@ -6100,13 +5892,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e8a11ae2da61704edada656798b61c94b35ecac2c58eb955156987d5e6be90b" dependencies = [ "async-trait", - "bytes 1.5.0", + "bytes", "log", "rand 0.8.5", "rtcp", "rtp", "thiserror", - "tokio 1.34.0", + "tokio", "waitgroup", "webrtc-srtp", "webrtc-util", @@ -6129,15 +5921,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "iovec" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" -dependencies = [ - "libc", -] - [[package]] name = "ip_network" version = "0.4.1" @@ -6191,12 +5974,6 @@ dependencies = [ "either", ] -[[package]] -name = "itoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" - [[package]] name = "itoa" version = "1.0.9" @@ -6247,13 +6024,13 @@ dependencies = [ "http", "jsonrpsee-core", "jsonrpsee-types", - "pin-project 1.1.3", + "pin-project", "rustls-native-certs", "soketto", "thiserror", - "tokio 1.34.0", + "tokio", "tokio-rustls", - "tokio-util 0.7.10", + "tokio-util", "tracing", "webpki-roots 0.25.3", ] @@ -6273,7 +6050,7 @@ dependencies = [ "futures-timer", "futures-util", "globset", - "hyper 0.14.27", + "hyper", "jsonrpsee-types", "parking_lot 0.12.1", "rand 0.8.5", @@ -6282,7 +6059,7 @@ dependencies = [ "serde_json", "soketto", "thiserror", - "tokio 1.34.0", + "tokio", "tracing", ] @@ -6293,7 +6070,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7e5f9fabdd5d79344728521bb65e3106b49ec405a78b66fbff073b72b389fa43" dependencies = [ "async-trait", - "hyper 0.14.27", + "hyper", "hyper-rustls", "jsonrpsee-core", "jsonrpsee-types", @@ -6301,7 +6078,7 @@ dependencies = [ "serde", "serde_json", "thiserror", - "tokio 1.34.0", + "tokio", "tracing", ] @@ -6327,15 +6104,15 @@ dependencies = [ "futures-channel", "futures-util", "http", - "hyper 0.14.27", + "hyper", "jsonrpsee-core", "jsonrpsee-types", "serde", "serde_json", "soketto", - "tokio 1.34.0", + "tokio", "tokio-stream", - "tokio-util 0.7.10", + "tokio-util", "tower", "tracing", ] @@ -6403,16 +6180,6 @@ dependencies = [ "cpufeatures", ] -[[package]] -name = "kernel32-sys" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -dependencies = [ - "winapi 0.2.8", - "winapi-build", -] - [[package]] name = "kvdb" version = "0.13.0" @@ -6501,26 +6268,6 @@ version = "0.2.150" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" -[[package]] -name = "libflate" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ff4ae71b685bbad2f2f391fe74f6b7659a34871c08b210fdc039e43bee07d18" -dependencies = [ - "adler32", - "crc32fast", - "libflate_lz77", -] - -[[package]] -name = "libflate_lz77" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a52d3a8bfc85f250440e4424db7d857e241a3aebbbe301f3eb606ab15c39acbf" -dependencies = [ - "rle-decode-fast", -] - [[package]] name = "libloading" version = "0.7.4" @@ -6528,7 +6275,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" dependencies = [ "cfg-if 1.0.0", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -6543,7 +6290,7 @@ version = "0.51.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f210d259724eae82005b5c48078619b7745edb7b76de370b03f8ba59ea103097" dependencies = [ - "bytes 1.5.0", + "bytes", "futures 0.3.29", "futures-timer", "getrandom 0.2.11", @@ -6568,7 +6315,7 @@ dependencies = [ "libp2p-websocket", "libp2p-yamux", "multiaddr", - "pin-project 1.1.3", + "pin-project", ] [[package]] @@ -6613,7 +6360,7 @@ dependencies = [ "multistream-select", "once_cell", "parking_lot 0.12.1", - "pin-project 1.1.3", + "pin-project", "quick-protobuf", "rand 0.8.5", "rw-stream-sink", @@ -6685,7 +6432,7 @@ checksum = "39d5ef876a2b2323d63c258e63c2f8e36f205fe5a11f0b3095d59635650790ff" dependencies = [ "arrayvec 0.7.4", "asynchronous-codec", - "bytes 1.5.0", + "bytes", "either", "fnv", "futures 0.3.29", @@ -6721,7 +6468,7 @@ dependencies = [ "rand 0.8.5", "smallvec", "socket2 0.4.10", - "tokio 1.34.0", + "tokio", "trust-dns-proto", "void", ] @@ -6746,7 +6493,7 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c3673da89d29936bc6435bafc638e2f184180d554ce844db65915113f86ec5e" dependencies = [ - "bytes 1.5.0", + "bytes", "curve25519-dalek 3.2.0", "futures 0.3.29", "libp2p-core", @@ -6786,7 +6533,7 @@ version = "0.7.0-alpha.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6b26abd81cd2398382a1edfe739b539775be8a90fa6914f39b2ab49571ec735" dependencies = [ - "bytes 1.5.0", + "bytes", "futures 0.3.29", "futures-timer", "if-watch", @@ -6799,7 +6546,7 @@ dependencies = [ "rand 0.8.5", "rustls 0.20.9", "thiserror", - "tokio 1.34.0", + "tokio", ] [[package]] @@ -6835,7 +6582,7 @@ dependencies = [ "log", "rand 0.8.5", "smallvec", - "tokio 1.34.0", + "tokio", "void", ] @@ -6863,7 +6610,7 @@ dependencies = [ "libp2p-core", "log", "socket2 0.4.10", - "tokio 1.34.0", + "tokio", ] [[package]] @@ -6907,7 +6654,7 @@ checksum = "dba48592edbc2f60b4bc7c10d65445b0c3964c07df26fdf493b6880d33be36f8" dependencies = [ "async-trait", "asynchronous-codec", - "bytes 1.5.0", + "bytes", "futures 0.3.29", "futures-timer", "hex", @@ -6925,8 +6672,8 @@ dependencies = [ "stun", "thiserror", "tinytemplate", - "tokio 1.34.0", - "tokio-util 0.7.10", + "tokio", + "tokio-util", "webrtc", ] @@ -7372,16 +7119,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "memory-db" -version = "0.31.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e0c7cba9ce19ac7ffd2053ac9f49843bbd3f4318feedfd74e85c19d5fb0ba66" -dependencies = [ - "hash-db 0.15.2", - "hashbrown 0.12.3", -] - [[package]] name = "memory-db" version = "0.32.0" @@ -7391,12 +7128,6 @@ dependencies = [ "hash-db 0.16.0", ] -[[package]] -name = "memory_units" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" - [[package]] name = "merkle_proof" version = "0.2.0" @@ -7475,25 +7206,6 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -[[package]] -name = "mime_guess" -version = "2.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" -dependencies = [ - "mime", - "unicase", -] - -[[package]] -name = "min-max" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe75516622e34f7e712e0f60b6a9bb1b2df281d1985c11a21fa5dabc1e34885f" -dependencies = [ - "partial-min-max", -] - [[package]] name = "minimal-lexical" version = "0.2.1" @@ -7509,25 +7221,6 @@ dependencies = [ "adler", ] -[[package]] -name = "mio" -version = "0.6.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" -dependencies = [ - "cfg-if 0.1.10", - "fuchsia-zircon", - "fuchsia-zircon-sys", - "iovec", - "kernel32-sys", - "libc", - "log", - "miow", - "net2", - "slab", - "winapi 0.2.8", -] - [[package]] name = "mio" version = "0.8.9" @@ -7540,15 +7233,19 @@ dependencies = [ ] [[package]] -name = "miow" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" +name = "mmr-rpc" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ - "kernel32-sys", - "net2", - "winapi 0.2.8", - "ws2_32-sys", + "anyhow", + "jsonrpsee", + "parity-scale-codec", + "serde", + "sp-api", + "sp-blockchain", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-mmr-primitives", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", ] [[package]] @@ -7651,34 +7348,16 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" -[[package]] -name = "multipart" -version = "0.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d050aeedc89243f5347c3e237e3e13dc76fbe4ae3742a57b94dc14f69acf76d4" -dependencies = [ - "buf_redux", - "httparse", - "log", - "mime", - "mime_guess", - "quick-error", - "rand 0.7.3", - "safemem", - "tempfile", - "twoway", -] - [[package]] name = "multistream-select" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8552ab875c1313b97b8d20cb857b9fd63e2d1d6a0a1b53ce9821e575405f27a" dependencies = [ - "bytes 1.5.0", + "bytes", "futures 0.3.29", "log", - "pin-project 1.1.3", + "pin-project", "smallvec", "unsigned-varint", ] @@ -7737,17 +7416,6 @@ dependencies = [ "tempfile", ] -[[package]] -name = "net2" -version = "0.2.39" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b13b648036a2339d06de780866fbdfda0dde886de7b3af2ddeba8b14f4ee34ac" -dependencies = [ - "cfg-if 0.1.10", - "libc", - "winapi 0.3.9", -] - [[package]] name = "netlink-packet-core" version = "0.4.2" @@ -7792,13 +7460,13 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "65b4b14489ab424703c092062176d52ba55485a89c076b4f9db05092b7223aa6" dependencies = [ - "bytes 1.5.0", + "bytes", "futures 0.3.29", "log", "netlink-packet-core", "netlink-sys", "thiserror", - "tokio 1.34.0", + "tokio", ] [[package]] @@ -7807,11 +7475,11 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6471bf08e7ac0135876a9581bf3217ef0333c191c128d34878079f42ee150411" dependencies = [ - "bytes 1.5.0", + "bytes", "futures 0.3.29", "libc", "log", - "tokio 1.34.0", + "tokio", ] [[package]] @@ -7879,7 +7547,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" dependencies = [ "overload", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -7923,7 +7591,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" dependencies = [ "arrayvec 0.7.4", - "itoa 1.0.9", + "itoa", ] [[package]] @@ -8032,18 +7700,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "object" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53" -dependencies = [ - "crc32fast", - "hashbrown 0.12.3", - "indexmap 1.9.3", - "memchr", -] - [[package]] name = "object" version = "0.30.4" @@ -8109,7 +7765,7 @@ checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" dependencies = [ "arrayvec 0.7.4", "auto_impl", - "bytes 1.5.0", + "bytes", "ethereum-types 0.14.1", "open-fastrlp-derive", ] @@ -8120,7 +7776,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" dependencies = [ - "bytes 1.5.0", + "bytes", "proc-macro2", "quote", "syn 1.0.109", @@ -8239,33 +7895,40 @@ dependencies = [ ] [[package]] -name = "pallet-aura" +name = "pallet-authorship" version = "4.0.0-dev" source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "frame-support", "frame-system", - "log", - "pallet-timestamp", + "impl-trait-for-tuples", "parity-scale-codec", "scale-info", - "sp-application-crypto 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", - "sp-consensus-aura", "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", ] [[package]] -name = "pallet-authorship" +name = "pallet-babe" version = "4.0.0-dev" source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ + "frame-benchmarking", "frame-support", "frame-system", - "impl-trait-for-tuples", + "log", + "pallet-authorship", + "pallet-session", + "pallet-timestamp", "parity-scale-codec", "scale-info", + "sp-application-crypto 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-consensus-babe", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-io 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-session", + "sp-staking", "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", ] @@ -8524,33 +8187,6 @@ dependencies = [ "webb-tree-hash-derive", ] -[[package]] -name = "pallet-eth2-light-client-relayer-gadget" -version = "0.2.0-dev" -source = "git+https://github.com/webb-tools/pallet-eth2-light-client?tag=v0.5.0#0ac997902435ed0bebfd03fbb0dccc0473b8d621" -dependencies = [ - "anyhow", - "async-trait", - "backoff", - "eth2-to-substrate-relay", - "ethereum-types 0.14.1", - "subxt 0.29.0", - "tokio 1.34.0", - "tracing", - "webb-eth2-pallet-init", - "webb-lc-relay-config", - "webb-lc-relayer-context", - "webb-proposals 0.8.0", -] - -[[package]] -name = "pallet-eth2-light-client-relayer-gadget-cli" -version = "0.0.1" -source = "git+https://github.com/webb-tools/pallet-eth2-light-client?tag=v0.5.0#0ac997902435ed0bebfd03fbb0dccc0473b8d621" -dependencies = [ - "clap 4.4.10", -] - [[package]] name = "pallet-ethereum" version = "4.0.0-dev" @@ -9478,7 +9114,7 @@ dependencies = [ "arrayvec 0.7.4", "bitvec", "byte-slice-cast", - "bytes 1.5.0", + "bytes", "impl-trait-for-tuples", "parity-scale-codec-derive", "serde", @@ -9546,7 +9182,7 @@ dependencies = [ "libc", "redox_syscall 0.2.16", "smallvec", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -9562,12 +9198,6 @@ dependencies = [ "windows-targets 0.48.5", ] -[[package]] -name = "partial-min-max" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6448add382c60bbbc64f9dab41309a12ec530c05191601042f911356ac09758c" - [[package]] name = "partial_sort" version = "0.2.0" @@ -9807,33 +9437,13 @@ dependencies = [ "siphasher", ] -[[package]] -name = "pin-project" -version = "0.4.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ef0f924a5ee7ea9cbcea77529dba45f8a9ba9f622419fe3386ca581a3ae9d5a" -dependencies = [ - "pin-project-internal 0.4.30", -] - [[package]] name = "pin-project" version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" dependencies = [ - "pin-project-internal 1.1.3", -] - -[[package]] -name = "pin-project-internal" -version = "0.4.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "851c8d0ce9bebe43790dedfc86614c23494ac9f423dd618d3a61fc693eafe61e" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "pin-project-internal", ] [[package]] @@ -10220,36 +9830,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "procfs" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c434e93ef69c216e68e4f417c927b4f31502c3560b72cfdb6827e2321c5c6b3e" -dependencies = [ - "bitflags 1.3.2", - "byteorder", - "hex", - "lazy_static", - "libc", - "libflate", -] - -[[package]] -name = "prometheus" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0ced56dee39a6e960c15c74dc48849d614586db2eaada6497477af7c7811cd" -dependencies = [ - "cfg-if 0.1.10", - "fnv", - "lazy_static", - "libc", - "procfs", - "protobuf", - "spin 0.5.2", - "thiserror", -] - [[package]] name = "prometheus" version = "0.13.3" @@ -10270,8 +9850,8 @@ version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d6fa99d535dd930d1249e6c79cb3c2915f9172a540fe2b02a4c8f9ca954721e" dependencies = [ - "dtoa 1.0.9", - "itoa 1.0.9", + "dtoa", + "itoa", "parking_lot 0.12.1", "prometheus-client-derive-encode", ] @@ -10309,7 +9889,7 @@ version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" dependencies = [ - "bytes 1.5.0", + "bytes", "prost-derive", ] @@ -10319,7 +9899,7 @@ version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" dependencies = [ - "bytes 1.5.0", + "bytes", "heck 0.4.1", "itertools 0.10.5", "lazy_static", @@ -10357,12 +9937,6 @@ dependencies = [ "prost", ] -[[package]] -name = "protobuf" -version = "2.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" - [[package]] name = "psm" version = "0.1.21" @@ -10414,7 +9988,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1693116345026436eb2f10b677806169c1a1260c1c60eaaffe3fb5a29ae23d8b" dependencies = [ "asynchronous-codec", - "bytes 1.5.0", + "bytes", "quick-protobuf", "thiserror", "unsigned-varint", @@ -10437,7 +10011,7 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94b0b33c13a79f669c85defaf4c275dc86a0c0372807d0ca3d78e0bb87274863" dependencies = [ - "bytes 1.5.0", + "bytes", "rand 0.8.5", "ring 0.16.20", "rustc-hash", @@ -10644,18 +10218,18 @@ dependencies = [ [[package]] name = "ref-cast" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acde58d073e9c79da00f2b5b84eed919c8326832648a5b109b3fce1bb1175280" +checksum = "53313ec9f12686aeeffb43462c3ac77aa25f590a5f630eb2cde0de59417b29c7" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7473c2cfcf90008193dd0e3e16599455cb601a9fce322b5bb55de799664925" +checksum = "2566c4bf6845f2c2e83b27043c3f5dfcd5ba8f2937d6c00dc009bfb51a079dc4" dependencies = [ "proc-macro2", "quote", @@ -10744,7 +10318,7 @@ dependencies = [ "bitflags 1.3.2", "libc", "mach", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -10763,14 +10337,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" dependencies = [ "base64 0.21.5", - "bytes 1.5.0", + "bytes", "encoding_rs", "futures-core", "futures-util", - "h2 0.3.22", + "h2", "http", - "http-body 0.4.5", - "hyper 0.14.27", + "http-body", + "hyper", "hyper-rustls", "hyper-tls", "ipnet", @@ -10785,9 +10359,9 @@ dependencies = [ "rustls-pemfile", "serde", "serde_json", - "serde_urlencoded 0.7.1", + "serde_urlencoded", "system-configuration", - "tokio 1.34.0", + "tokio", "tokio-native-tls", "tokio-rustls", "tower-service", @@ -10857,7 +10431,7 @@ dependencies = [ "spin 0.5.2", "untrusted 0.7.1", "web-sys", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -10911,19 +10485,13 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "rle-decode-fast" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422" - [[package]] name = "rlp" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" dependencies = [ - "bytes 1.5.0", + "bytes", "rlp-derive", "rustc-hex", ] @@ -11034,7 +10602,7 @@ dependencies = [ "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "sp-io 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", - "tokio 1.34.0", + "tokio", ] [[package]] @@ -11098,7 +10666,7 @@ dependencies = [ "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "sp-transaction-pool", "substrate-prometheus-endpoint", - "tokio 1.34.0", + "tokio", "tracing", ] @@ -11130,7 +10698,7 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1919efd6d4a6a85d13388f9487549bb8e359f17198cc03ffd72f79b553873691" dependencies = [ - "bytes 1.5.0", + "bytes", "thiserror", "webrtc-util", ] @@ -11147,7 +10715,7 @@ dependencies = [ "netlink-proto", "nix", "thiserror", - "tokio 1.34.0", + "tokio", ] [[package]] @@ -11167,7 +10735,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2a095411ff00eed7b12e4c6a118ba984d113e1079582570d56a5ee723f11f80" dependencies = [ "async-trait", - "bytes 1.5.0", + "bytes", "rand 0.8.5", "serde", "thiserror", @@ -11375,7 +10943,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26338f5e09bb721b85b135ea05af7767c90b52f6de4f087d4f4a3a9d64e7dc04" dependencies = [ "futures 0.3.29", - "pin-project 1.1.3", + "pin-project", "static_assertions", ] @@ -11461,12 +11029,6 @@ name = "safe_arith" version = "0.1.0" source = "git+https://github.com/webb-tools/lighthouse.git?rev=ef72e752eaf45f4b7eb64dd8dbb0fe088f955df8#ef72e752eaf45f4b7eb64dd8dbb0fe088f955df8" -[[package]] -name = "safemem" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" - [[package]] name = "salsa20" version = "0.10.2" @@ -11496,6 +11058,34 @@ dependencies = [ "thiserror", ] +[[package]] +name = "sc-authority-discovery" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" +dependencies = [ + "async-trait", + "futures 0.3.29", + "futures-timer", + "ip_network", + "libp2p", + "log", + "multihash", + "parity-scale-codec", + "prost", + "prost-build", + "rand 0.8.5", + "sc-client-api", + "sc-network", + "sp-api", + "sp-authority-discovery", + "sp-blockchain", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-keystore 0.27.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "substrate-prometheus-endpoint", + "thiserror", +] + [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" @@ -11600,7 +11190,7 @@ dependencies = [ "sp-version", "thiserror", "tiny-bip39", - "tokio 1.34.0", + "tokio", ] [[package]] @@ -11745,6 +11335,28 @@ dependencies = [ "thiserror", ] +[[package]] +name = "sc-consensus-babe-rpc" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" +dependencies = [ + "futures 0.3.29", + "jsonrpsee", + "sc-consensus-babe", + "sc-consensus-epochs", + "sc-rpc-api", + "serde", + "sp-api", + "sp-application-crypto 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-blockchain", + "sp-consensus", + "sp-consensus-babe", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-keystore 0.27.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "thiserror", +] + [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" @@ -11799,6 +11411,26 @@ dependencies = [ "thiserror", ] +[[package]] +name = "sc-consensus-grandpa-rpc" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" +dependencies = [ + "finality-grandpa", + "futures 0.3.29", + "jsonrpsee", + "log", + "parity-scale-codec", + "sc-client-api", + "sc-consensus-grandpa", + "sc-rpc", + "serde", + "sp-blockchain", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "thiserror", +] + [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" @@ -11905,7 +11537,7 @@ dependencies = [ "sc-executor-common", "sp-runtime-interface 17.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "sp-wasm-interface 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", - "wasmtime 8.0.1", + "wasmtime", ] [[package]] @@ -11947,7 +11579,7 @@ dependencies = [ "async-channel 1.9.0", "async-trait", "asynchronous-codec", - "bytes 1.5.0", + "bytes", "either", "fnv", "futures 0.3.29", @@ -11960,7 +11592,7 @@ dependencies = [ "parity-scale-codec", "parking_lot 0.12.1", "partial_sort", - "pin-project 1.1.3", + "pin-project", "rand 0.8.5", "sc-client-api", "sc-network-common", @@ -12055,6 +11687,24 @@ dependencies = [ "thiserror", ] +[[package]] +name = "sc-network-statement" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" +dependencies = [ + "array-bytes 6.2.0", + "async-channel 1.9.0", + "futures 0.3.29", + "libp2p", + "log", + "parity-scale-codec", + "sc-network", + "sc-network-common", + "sp-consensus", + "sp-statement-store", + "substrate-prometheus-endpoint", +] + [[package]] name = "sc-network-sync" version = "0.10.0-dev" @@ -12113,11 +11763,11 @@ version = "4.0.0-dev" source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "array-bytes 6.2.0", - "bytes 1.5.0", + "bytes", "fnv", "futures 0.3.29", "futures-timer", - "hyper 0.14.27", + "hyper", "hyper-rustls", "libp2p", "log", @@ -12178,7 +11828,7 @@ dependencies = [ "sp-session", "sp-statement-store", "sp-version", - "tokio 1.34.0", + "tokio", ] [[package]] @@ -12210,7 +11860,7 @@ dependencies = [ "log", "serde_json", "substrate-prometheus-endpoint", - "tokio 1.34.0", + "tokio", "tower", "tower-http", ] @@ -12239,7 +11889,7 @@ dependencies = [ "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "sp-version", "thiserror", - "tokio 1.34.0", + "tokio", "tokio-stream", ] @@ -12257,7 +11907,7 @@ dependencies = [ "log", "parity-scale-codec", "parking_lot 0.12.1", - "pin-project 1.1.3", + "pin-project", "rand 0.8.5", "sc-block-builder", "sc-chain-spec", @@ -12302,7 +11952,7 @@ dependencies = [ "substrate-prometheus-endpoint", "tempfile", "thiserror", - "tokio 1.34.0", + "tokio", "tracing", "tracing-futures", ] @@ -12318,6 +11968,58 @@ dependencies = [ "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", ] +[[package]] +name = "sc-statement-store" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" +dependencies = [ + "log", + "parity-db", + "parking_lot 0.12.1", + "sc-client-api", + "sc-keystore", + "sp-api", + "sp-blockchain", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-statement-store", + "substrate-prometheus-endpoint", + "tokio", +] + +[[package]] +name = "sc-storage-monitor" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" +dependencies = [ + "clap 4.4.10", + "fs4", + "log", + "sc-client-db", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "thiserror", + "tokio", +] + +[[package]] +name = "sc-sync-state-rpc" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" +dependencies = [ + "jsonrpsee", + "parity-scale-codec", + "sc-chain-spec", + "sc-client-api", + "sc-consensus-babe", + "sc-consensus-epochs", + "sc-consensus-grandpa", + "serde", + "serde_json", + "sp-blockchain", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "thiserror", +] + [[package]] name = "sc-sysinfo" version = "6.0.0-dev" @@ -12347,7 +12049,7 @@ dependencies = [ "libp2p", "log", "parking_lot 0.12.1", - "pin-project 1.1.3", + "pin-project", "rand 0.8.5", "sc-utils", "serde", @@ -12449,7 +12151,7 @@ dependencies = [ "lazy_static", "log", "parking_lot 0.12.1", - "prometheus 0.13.3", + "prometheus", "sp-arithmetic 16.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", ] @@ -12708,12 +12410,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "scoped-tls" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - [[package]] name = "scopeguard" version = "1.2.0" @@ -12970,7 +12666,7 @@ version = "1.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" dependencies = [ - "itoa 1.0.9", + "itoa", "ryu", "serde", ] @@ -12981,7 +12677,7 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4beec8bce849d58d06238cb50db2e1c417cfeafa4c63f692b15c82b7c80f8335" dependencies = [ - "itoa 1.0.9", + "itoa", "serde", ] @@ -12994,18 +12690,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_urlencoded" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ec5d77e2d4c73717816afac02670d5c4f534ea95ed430442cad02e7a6e32c97" -dependencies = [ - "dtoa 0.4.8", - "itoa 0.4.8", - "serde", - "url", -] - [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -13013,7 +12697,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa 1.0.9", + "itoa", "ryu", "serde", ] @@ -13340,7 +13024,7 @@ dependencies = [ "num-rational", "num-traits", "pbkdf2 0.12.2", - "pin-project 1.1.3", + "pin-project", "rand 0.8.5", "rand_chacha 0.3.1", "ruzstd", @@ -13356,7 +13040,7 @@ dependencies = [ "soketto", "tiny-keccak", "twox-hash", - "wasmi 0.30.0", + "wasmi", ] [[package]] @@ -13411,17 +13095,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "socket2" -version = "0.3.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "winapi 0.3.9", -] - [[package]] name = "socket2" version = "0.4.10" @@ -13429,7 +13102,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" dependencies = [ "libc", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -13449,7 +13122,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" dependencies = [ "base64 0.13.1", - "bytes 1.5.0", + "bytes", "flate2", "futures 0.3.29", "http", @@ -13508,20 +13181,6 @@ dependencies = [ "syn 2.0.39", ] -[[package]] -name = "sp-application-crypto" -version = "17.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f08604ba4bd856311946722958711a08bded5c929e1227f7a697c58deb09468" -dependencies = [ - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 16.0.0", - "sp-io 17.0.0", - "sp-std 6.0.0", -] - [[package]] name = "sp-application-crypto" version = "23.0.0" @@ -13551,46 +13210,44 @@ dependencies = [ [[package]] name = "sp-arithmetic" -version = "12.0.0" +version = "16.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7796939f2e3b68a3b9410ea17a2063b78038cd366f57fa772dd3be0798bd3412" +checksum = "bb6020576e544c6824a51d651bc8df8e6ab67cd59f1c9ac09868bb81a5199ded" dependencies = [ "integer-sqrt", "num-traits", "parity-scale-codec", "scale-info", "serde", - "sp-std 6.0.0", + "sp-std 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "static_assertions", ] [[package]] name = "sp-arithmetic" version = "16.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb6020576e544c6824a51d651bc8df8e6ab67cd59f1c9ac09868bb81a5199ded" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ "integer-sqrt", "num-traits", "parity-scale-codec", "scale-info", "serde", - "sp-std 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "static_assertions", ] [[package]] -name = "sp-arithmetic" -version = "16.0.0" +name = "sp-authority-discovery" +version = "4.0.0-dev" source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ - "integer-sqrt", - "num-traits", "parity-scale-codec", "scale-info", - "serde", + "sp-api", + "sp-application-crypto 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", - "static_assertions", ] [[package]] @@ -13703,50 +13360,6 @@ dependencies = [ "sp-timestamp", ] -[[package]] -name = "sp-core" -version = "16.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c96dc3debbe5c22ebf18f99e6a53199efe748e6e584a1902adb88cbad66ae7c" -dependencies = [ - "array-bytes 4.2.0", - "base58", - "bitflags 1.3.2", - "blake2 0.10.6", - "bounded-collections", - "dyn-clonable", - "ed25519-zebra", - "futures 0.3.29", - "hash-db 0.15.2", - "hash256-std-hasher", - "impl-serde", - "lazy_static", - "libsecp256k1", - "log", - "merlin 2.0.1", - "parity-scale-codec", - "parking_lot 0.12.1", - "primitive-types 0.12.2", - "rand 0.8.5", - "regex", - "scale-info", - "schnorrkel 0.9.1", - "secp256k1 0.24.3", - "secrecy", - "serde", - "sp-core-hashing 6.0.0", - "sp-debug-derive 6.0.0", - "sp-externalities 0.17.0", - "sp-runtime-interface 13.0.0", - "sp-std 6.0.0", - "sp-storage 11.0.0", - "ss58-registry", - "substrate-bip39", - "thiserror", - "tiny-bip39", - "zeroize", -] - [[package]] name = "sp-core" version = "21.0.0" @@ -13839,21 +13452,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "sp-core-hashing" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbc2d1947252b7a4e403b0a260f596920443742791765ec111daa2bbf98eff25" -dependencies = [ - "blake2 0.10.6", - "byteorder", - "digest 0.10.7", - "sha2 0.10.8", - "sha3 0.10.8", - "sp-std 6.0.0", - "twox-hash", -] - [[package]] name = "sp-core-hashing" version = "9.0.0" @@ -13901,17 +13499,6 @@ dependencies = [ "parking_lot 0.12.1", ] -[[package]] -name = "sp-debug-derive" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66fb9dc63d54de7d7bed62a505b6e0bd66c122525ea1abb348f6564717c3df2d" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "sp-debug-derive" version = "8.0.0" @@ -13933,18 +13520,6 @@ dependencies = [ "syn 2.0.39", ] -[[package]] -name = "sp-externalities" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57052935c9c9b070ea6b339ef0da3bf241b7e065fc37f9c551669ee83ecfc3c1" -dependencies = [ - "environmental", - "parity-scale-codec", - "sp-std 6.0.0", - "sp-storage 11.0.0", -] - [[package]] name = "sp-externalities" version = "0.19.0" @@ -13993,39 +13568,13 @@ dependencies = [ "thiserror", ] -[[package]] -name = "sp-io" -version = "17.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578959f9a7e44fd2dd96e8b8bc893cea04fcd7c00a4ffbb0b91c5013899dd02b" -dependencies = [ - "bytes 1.5.0", - "ed25519 1.5.3", - "ed25519-dalek 1.0.1", - "futures 0.3.29", - "libsecp256k1", - "log", - "parity-scale-codec", - "secp256k1 0.24.3", - "sp-core 16.0.0", - "sp-externalities 0.17.0", - "sp-keystore 0.22.0", - "sp-runtime-interface 13.0.0", - "sp-state-machine 0.22.0", - "sp-std 6.0.0", - "sp-tracing 8.0.0", - "sp-trie 16.0.0", - "tracing", - "tracing-core", -] - [[package]] name = "sp-io" version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d597e35a9628fe7454b08965b2442e3ec0f264b0a90d41328e87422cec02e99" dependencies = [ - "bytes 1.5.0", + "bytes", "ed25519 1.5.3", "ed25519-dalek 1.0.1", "futures 0.3.29", @@ -14051,7 +13600,7 @@ name = "sp-io" version = "23.0.0" source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ - "bytes 1.5.0", + "bytes", "ed25519-dalek 2.1.0", "libsecp256k1", "log", @@ -14070,18 +13619,6 @@ dependencies = [ "tracing-core", ] -[[package]] -name = "sp-keyring" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc13a168cdc15e185db5cbe8644e3eaafa534e229593768b3044b60bea00fc8c" -dependencies = [ - "lazy_static", - "sp-core 16.0.0", - "sp-runtime 18.0.0", - "strum 0.24.1", -] - [[package]] name = "sp-keyring" version = "24.0.0" @@ -14105,23 +13642,6 @@ dependencies = [ "strum 0.24.1", ] -[[package]] -name = "sp-keystore" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "480dbd54b281c638209fbcfce69902b82a0a1af0e22219d46825eadced3136b6" -dependencies = [ - "async-trait", - "futures 0.3.29", - "merlin 2.0.1", - "parity-scale-codec", - "parking_lot 0.12.1", - "schnorrkel 0.9.1", - "sp-core 16.0.0", - "sp-externalities 0.17.0", - "thiserror", -] - [[package]] name = "sp-keystore" version = "0.27.0" @@ -14169,38 +13689,45 @@ dependencies = [ ] [[package]] -name = "sp-npos-elections" +name = "sp-mmr-primitives" version = "4.0.0-dev" source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ + "ckb-merkle-mountain-range", + "log", "parity-scale-codec", "scale-info", "serde", - "sp-arithmetic 16.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-api", "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-debug-derive 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "thiserror", ] [[package]] -name = "sp-offchain" +name = "sp-npos-elections" version = "4.0.0-dev" source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ - "sp-api", + "parity-scale-codec", + "scale-info", + "serde", + "sp-arithmetic 16.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", ] [[package]] -name = "sp-panic-handler" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4abed79c3d5b3622f65ab065676addd9923b9b122cd257df23e2757ce487c6d2" +name = "sp-offchain" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ - "backtrace", - "lazy_static", - "regex", + "sp-api", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", ] [[package]] @@ -14234,29 +13761,6 @@ dependencies = [ "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", ] -[[package]] -name = "sp-runtime" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8ab2fd44668d3e8674e2253a43852857a47d49be7db737e98bf157e4bcebefd" -dependencies = [ - "either", - "hash256-std-hasher", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "paste", - "rand 0.8.5", - "scale-info", - "serde", - "sp-application-crypto 17.0.0", - "sp-arithmetic 12.0.0", - "sp-core 16.0.0", - "sp-io 17.0.0", - "sp-std 6.0.0", - "sp-weights 14.0.0", -] - [[package]] name = "sp-runtime" version = "24.0.0" @@ -14302,32 +13806,13 @@ dependencies = [ "sp-weights 20.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", ] -[[package]] -name = "sp-runtime-interface" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb7707246cee4967a8cc71e3ef0e82f562e8b1020606447a6a12b99c7c1b443" -dependencies = [ - "bytes 1.5.0", - "impl-trait-for-tuples", - "parity-scale-codec", - "primitive-types 0.12.2", - "sp-externalities 0.17.0", - "sp-runtime-interface-proc-macro 9.0.0", - "sp-std 6.0.0", - "sp-storage 11.0.0", - "sp-tracing 8.0.0", - "sp-wasm-interface 10.0.0", - "static_assertions", -] - [[package]] name = "sp-runtime-interface" version = "17.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e676128182f90015e916f806cba635c8141e341e7abbc45d25525472e1bbce8" dependencies = [ - "bytes 1.5.0", + "bytes", "impl-trait-for-tuples", "parity-scale-codec", "primitive-types 0.12.2", @@ -14345,7 +13830,7 @@ name = "sp-runtime-interface" version = "17.0.0" source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ - "bytes 1.5.0", + "bytes", "impl-trait-for-tuples", "parity-scale-codec", "primitive-types 0.12.2", @@ -14358,19 +13843,6 @@ dependencies = [ "static_assertions", ] -[[package]] -name = "sp-runtime-interface-proc-macro" -version = "9.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2773c90e5765847c5e8b4a24b553d38a9ca52ded47c142cfcfb7948f42827af9" -dependencies = [ - "Inflector", - "proc-macro-crate 1.1.3", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "sp-runtime-interface-proc-macro" version = "11.0.0" @@ -14425,27 +13897,6 @@ dependencies = [ "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", ] -[[package]] -name = "sp-state-machine" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c957b8b4c252507c12674948db427c5e34fd1760ce256922f1ec5f89f781a4f" -dependencies = [ - "hash-db 0.15.2", - "log", - "parity-scale-codec", - "parking_lot 0.12.1", - "rand 0.8.5", - "smallvec", - "sp-core 16.0.0", - "sp-externalities 0.17.0", - "sp-panic-handler 6.0.0", - "sp-std 6.0.0", - "sp-trie 16.0.0", - "thiserror", - "tracing", -] - [[package]] name = "sp-state-machine" version = "0.28.0" @@ -14485,7 +13936,7 @@ dependencies = [ "sp-trie 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "thiserror", "tracing", - "trie-db 0.27.1", + "trie-db", ] [[package]] @@ -14512,12 +13963,6 @@ dependencies = [ "x25519-dalek 2.0.0", ] -[[package]] -name = "sp-std" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af0ee286f98455272f64ac5bb1384ff21ac029fbb669afbaf48477faff12760e" - [[package]] name = "sp-std" version = "8.0.0" @@ -14529,20 +13974,6 @@ name = "sp-std" version = "8.0.0" source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" -[[package]] -name = "sp-storage" -version = "11.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c20cb0c562d1a159ecb2c7ca786828c81e432c535474967d2df3a484977cea4" -dependencies = [ - "impl-serde", - "parity-scale-codec", - "ref-cast", - "serde", - "sp-debug-derive 6.0.0", - "sp-std 6.0.0", -] - [[package]] name = "sp-storage" version = "13.0.0" @@ -14585,25 +14016,12 @@ dependencies = [ [[package]] name = "sp-tracing" -version = "8.0.0" +version = "10.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e46bd547da89a9cda69b4ce4c91a5b7e1f86915190d83cd407b715d0c6bac042" +checksum = "357f7591980dd58305956d32f8f6646d0a8ea9ea0e7e868e46f53b68ddf00cec" dependencies = [ "parity-scale-codec", - "sp-std 6.0.0", - "tracing", - "tracing-core", - "tracing-subscriber 0.2.25", -] - -[[package]] -name = "sp-tracing" -version = "10.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357f7591980dd58305956d32f8f6646d0a8ea9ea0e7e868e46f53b68ddf00cec" -dependencies = [ - "parity-scale-codec", - "sp-std 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-std 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "tracing", "tracing-core", "tracing-subscriber 0.2.25", @@ -14645,30 +14063,6 @@ dependencies = [ "sp-trie 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", ] -[[package]] -name = "sp-trie" -version = "16.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8efbe5b6d29a18fea7c2f52e0098135f2f864b31d335d5105b40a349866ba874" -dependencies = [ - "ahash 0.8.6", - "hash-db 0.15.2", - "hashbrown 0.12.3", - "lazy_static", - "memory-db 0.31.0", - "nohash-hasher", - "parity-scale-codec", - "parking_lot 0.12.1", - "scale-info", - "schnellru", - "sp-core 16.0.0", - "sp-std 6.0.0", - "thiserror", - "tracing", - "trie-db 0.24.0", - "trie-root 0.17.0", -] - [[package]] name = "sp-trie" version = "22.0.0" @@ -14679,7 +14073,7 @@ dependencies = [ "hash-db 0.16.0", "hashbrown 0.13.2", "lazy_static", - "memory-db 0.32.0", + "memory-db", "nohash-hasher", "parity-scale-codec", "parking_lot 0.12.1", @@ -14689,8 +14083,8 @@ dependencies = [ "sp-std 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror", "tracing", - "trie-db 0.27.1", - "trie-root 0.18.0", + "trie-db", + "trie-root", ] [[package]] @@ -14702,7 +14096,7 @@ dependencies = [ "hash-db 0.16.0", "hashbrown 0.13.2", "lazy_static", - "memory-db 0.32.0", + "memory-db", "nohash-hasher", "parity-scale-codec", "parking_lot 0.12.1", @@ -14712,8 +14106,8 @@ dependencies = [ "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "thiserror", "tracing", - "trie-db 0.27.1", - "trie-root 0.18.0", + "trie-db", + "trie-root", ] [[package]] @@ -14744,21 +14138,6 @@ dependencies = [ "syn 2.0.39", ] -[[package]] -name = "sp-wasm-interface" -version = "10.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbc05650b6338808892a7b04f0c56bb1f7f928bfa9ac58e0af2c1e5bef33229" -dependencies = [ - "anyhow", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "sp-std 6.0.0", - "wasmi 0.13.2", - "wasmtime 5.0.1", -] - [[package]] name = "sp-wasm-interface" version = "14.0.0" @@ -14770,7 +14149,7 @@ dependencies = [ "log", "parity-scale-codec", "sp-std 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmtime 8.0.1", + "wasmtime", ] [[package]] @@ -14783,23 +14162,7 @@ dependencies = [ "log", "parity-scale-codec", "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", - "wasmtime 8.0.1", -] - -[[package]] -name = "sp-weights" -version = "14.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ebab7696f915aa548494aef3ca8d15217baf10458fe6edb87e60587a47de358" -dependencies = [ - "parity-scale-codec", - "scale-info", - "serde", - "smallvec", - "sp-arithmetic 12.0.0", - "sp-core 16.0.0", - "sp-debug-derive 6.0.0", - "sp-std 6.0.0", + "wasmtime", ] [[package]] @@ -14899,7 +14262,7 @@ dependencies = [ "ahash 0.8.6", "atoi", "byteorder", - "bytes 1.5.0", + "bytes", "crc", "crossbeam-queue", "dotenvy", @@ -14924,7 +14287,7 @@ dependencies = [ "smallvec", "sqlformat", "thiserror", - "tokio 1.34.0", + "tokio", "tokio-stream", "tracing", "url", @@ -14963,7 +14326,7 @@ dependencies = [ "sqlx-sqlite", "syn 1.0.109", "tempfile", - "tokio 1.34.0", + "tokio", "url", ] @@ -15046,7 +14409,7 @@ dependencies = [ "parking_lot 0.11.2", "parking_lot_core 0.8.6", "static_init_macro", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -15170,7 +14533,7 @@ dependencies = [ "ring 0.16.20", "subtle", "thiserror", - "tokio 1.34.0", + "tokio", "url", "webrtc-util", ] @@ -15234,11 +14597,28 @@ name = "substrate-prometheus-endpoint" version = "0.10.0-dev" source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" dependencies = [ - "hyper 0.14.27", + "hyper", "log", - "prometheus 0.13.3", + "prometheus", "thiserror", - "tokio 1.34.0", + "tokio", +] + +[[package]] +name = "substrate-state-trie-migration-rpc" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#c8d2251cafadc108ba2f1f8a3208dc547ff38901" +dependencies = [ + "jsonrpsee", + "parity-scale-codec", + "sc-client-api", + "sc-rpc-api", + "serde", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-state-machine 0.28.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-trie 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "trie-db", ] [[package]] @@ -15363,7 +14743,7 @@ dependencies = [ "subxt-metadata 0.29.0", "syn 2.0.39", "thiserror", - "tokio 1.34.0", + "tokio", ] [[package]] @@ -15383,7 +14763,7 @@ dependencies = [ "subxt-metadata 0.31.0", "syn 2.0.39", "thiserror", - "tokio 1.34.0", + "tokio", ] [[package]] @@ -15398,7 +14778,7 @@ dependencies = [ "serde_json", "smoldot-light", "thiserror", - "tokio 1.34.0", + "tokio", "tokio-stream", "tracing", ] @@ -15580,100 +14960,98 @@ dependencies = [ ] [[package]] -name = "tangle-mainnet-runtime" +name = "tangle" version = "0.5.0" dependencies = [ - "evm-tracer", + "clap 4.4.10", + "fc-api", + "fc-cli", + "fc-consensus", + "fc-db", + "fc-mapping-sync", + "fc-rpc", + "fc-rpc-core", + "fc-storage", "fp-account", + "fp-dynamic-fee", "fp-evm", "fp-rpc", - "fp-self-contained", "frame-benchmarking", - "frame-election-provider-support", - "frame-executive", - "frame-support", + "frame-benchmarking-cli", "frame-system", - "frame-system-benchmarking", "frame-system-rpc-runtime-api", + "futures 0.3.29", "hex-literal", + "jsonrpsee", "log", - "num_enum 0.5.11", - "pallet-airdrop-claims", - "pallet-aura", - "pallet-authorship", - "pallet-bags-list", - "pallet-balances", - "pallet-base-fee", - "pallet-bounties", - "pallet-child-bounties", - "pallet-collective", - "pallet-democracy", - "pallet-dynamic-fee", - "pallet-election-provider-multi-phase", - "pallet-elections-phragmen", - "pallet-eth2-light-client", - "pallet-ethereum", - "pallet-evm", - "pallet-evm-chain-id", - "pallet-evm-precompile-batch", - "pallet-evm-precompile-blake2", - "pallet-evm-precompile-bn128", - "pallet-evm-precompile-call-permit", - "pallet-evm-precompile-curve25519", - "pallet-evm-precompile-democracy", - "pallet-evm-precompile-dispatch", - "pallet-evm-precompile-ed25519", - "pallet-evm-precompile-modexp", - "pallet-evm-precompile-preimage", - "pallet-evm-precompile-proxy", - "pallet-evm-precompile-registry", - "pallet-evm-precompile-sha3fips", - "pallet-evm-precompile-simple", - "pallet-evm-precompile-staking", - "pallet-grandpa", - "pallet-hotfix-sufficients", - "pallet-identity", + "mmr-rpc", "pallet-im-online", - "pallet-indices", - "pallet-insecure-randomness-collective-flip", - "pallet-nomination-pools", - "pallet-offences", - "pallet-preimage", - "pallet-proxy", - "pallet-scheduler", - "pallet-session", - "pallet-staking", - "pallet-staking-reward-curve", - "pallet-sudo", - "pallet-timestamp", - "pallet-transaction-pause", "pallet-transaction-payment", - "pallet-transaction-payment-rpc-runtime-api", - "pallet-treasury", - "pallet-utility", - "pallet-vesting", + "pallet-transaction-payment-rpc", "parity-scale-codec", - "precompile-utils", + "primitives-ext", + "rand 0.7.3", + "rpc-debug", "rpc-primitives-debug", "rpc-primitives-txpool", - "scale-info", - "serde", + "rpc-trace", + "rpc-txpool", + "sc-authority-discovery", + "sc-basic-authorship", + "sc-chain-spec", + "sc-cli", + "sc-client-api", + "sc-consensus", + "sc-consensus-babe", + "sc-consensus-babe-rpc", + "sc-consensus-grandpa", + "sc-consensus-grandpa-rpc", + "sc-consensus-manual-seal", + "sc-consensus-slots", + "sc-executor", + "sc-keystore", + "sc-network", + "sc-network-common", + "sc-network-statement", + "sc-network-sync", + "sc-offchain", + "sc-rpc", + "sc-rpc-api", + "sc-rpc-spec-v2", + "sc-service", + "sc-statement-store", + "sc-storage-monitor", + "sc-sync-state-rpc", + "sc-sysinfo", + "sc-telemetry", + "sc-transaction-pool", + "sc-transaction-pool-api", + "serde_json", "sp-api", "sp-block-builder", - "sp-consensus-aura", + "sp-blockchain", + "sp-consensus", + "sp-consensus-babe", "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "sp-inherents", - "sp-io 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", - "sp-offchain", + "sp-keyring 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-keystore 0.27.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", - "sp-session", - "sp-staking", - "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", - "sp-transaction-pool", - "sp-version", - "static_assertions", - "substrate-wasm-builder", + "sp-statement-store", + "sp-timestamp", + "sp-transaction-storage-proof", + "sp-trie 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "substrate-build-script-utils", + "substrate-frame-rpc-system", + "substrate-prometheus-endpoint", + "substrate-state-trie-migration-rpc", "tangle-primitives", + "tangle-runtime", + "tangle-testnet-runtime", + "tokio", + "wasmer", + "webb-consensus-types", + "webb-proposals 0.8.0", ] [[package]] @@ -15696,7 +15074,7 @@ dependencies = [ "serde", "smallvec", "sp-arithmetic 16.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", - "sp-consensus-aura", + "sp-consensus-babe", "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", @@ -15726,87 +15104,100 @@ dependencies = [ ] [[package]] -name = "tangle-standalone" +name = "tangle-runtime" version = "0.5.0" dependencies = [ - "clap 4.4.10", - "fc-api", - "fc-cli", - "fc-consensus", - "fc-db", - "fc-mapping-sync", - "fc-rpc", - "fc-rpc-core", - "fc-storage", + "evm-tracer", "fp-account", - "fp-dynamic-fee", "fp-evm", "fp-rpc", + "fp-self-contained", "frame-benchmarking", - "frame-benchmarking-cli", + "frame-election-provider-support", + "frame-executive", + "frame-support", "frame-system", - "futures 0.3.29", - "hex", + "frame-system-benchmarking", + "frame-system-rpc-runtime-api", "hex-literal", - "jsonrpsee", "log", - "pallet-eth2-light-client-relayer-gadget", - "pallet-eth2-light-client-relayer-gadget-cli", + "num_enum 0.5.11", + "pallet-airdrop-claims", + "pallet-authorship", + "pallet-babe", + "pallet-bags-list", + "pallet-balances", + "pallet-base-fee", + "pallet-bounties", + "pallet-child-bounties", + "pallet-collective", + "pallet-democracy", + "pallet-dynamic-fee", + "pallet-election-provider-multi-phase", + "pallet-elections-phragmen", + "pallet-eth2-light-client", + "pallet-ethereum", + "pallet-evm", + "pallet-evm-chain-id", + "pallet-evm-precompile-batch", + "pallet-evm-precompile-blake2", + "pallet-evm-precompile-bn128", + "pallet-evm-precompile-call-permit", + "pallet-evm-precompile-curve25519", + "pallet-evm-precompile-democracy", + "pallet-evm-precompile-dispatch", + "pallet-evm-precompile-ed25519", + "pallet-evm-precompile-modexp", + "pallet-evm-precompile-preimage", + "pallet-evm-precompile-proxy", + "pallet-evm-precompile-registry", + "pallet-evm-precompile-sha3fips", + "pallet-evm-precompile-simple", + "pallet-evm-precompile-staking", + "pallet-grandpa", + "pallet-hotfix-sufficients", + "pallet-identity", "pallet-im-online", + "pallet-indices", + "pallet-insecure-randomness-collective-flip", + "pallet-nomination-pools", + "pallet-offences", + "pallet-preimage", + "pallet-proxy", + "pallet-scheduler", + "pallet-session", + "pallet-staking", + "pallet-staking-reward-curve", + "pallet-sudo", + "pallet-timestamp", + "pallet-transaction-pause", "pallet-transaction-payment", - "pallet-transaction-payment-rpc", + "pallet-transaction-payment-rpc-runtime-api", + "pallet-treasury", + "pallet-utility", + "pallet-vesting", "parity-scale-codec", - "primitives-ext", - "rand 0.7.3", - "rpc-debug", + "precompile-utils", "rpc-primitives-debug", "rpc-primitives-txpool", - "rpc-trace", - "rpc-txpool", - "sc-basic-authorship", - "sc-chain-spec", - "sc-cli", - "sc-client-api", - "sc-consensus", - "sc-consensus-aura", - "sc-consensus-grandpa", - "sc-consensus-manual-seal", - "sc-executor", - "sc-keystore", - "sc-network", - "sc-network-sync", - "sc-offchain", - "sc-rpc", - "sc-rpc-api", - "sc-service", - "sc-telemetry", - "sc-transaction-pool", - "sc-transaction-pool-api", - "serde_json", + "scale-info", + "serde", "sp-api", - "sp-application-crypto 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "sp-block-builder", - "sp-blockchain", - "sp-consensus-aura", + "sp-consensus-babe", "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "sp-inherents", - "sp-keyring 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", - "sp-keystore 0.27.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-io 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-offchain", "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", - "sp-timestamp", - "sp-trie 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", - "substrate-build-script-utils", - "substrate-frame-rpc-system", - "substrate-prometheus-endpoint", - "tangle-mainnet-runtime", + "sp-session", + "sp-staking", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-transaction-pool", + "sp-version", + "static_assertions", + "substrate-wasm-builder", "tangle-primitives", - "tangle-relayer-gadget", - "tangle-relayer-gadget-cli", - "tangle-testnet-runtime", - "tokio 1.34.0", - "wasmer", - "webb-consensus-types", - "webb-proposals 0.8.0", ] [[package]] @@ -15829,8 +15220,8 @@ dependencies = [ "log", "num_enum 0.5.11", "pallet-airdrop-claims", - "pallet-aura", "pallet-authorship", + "pallet-babe", "pallet-bags-list", "pallet-balances", "pallet-base-fee", @@ -15895,7 +15286,7 @@ dependencies = [ "serde", "sp-api", "sp-block-builder", - "sp-consensus-aura", + "sp-consensus-babe", "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", "sp-inherents", "sp-io 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", @@ -15920,7 +15311,7 @@ dependencies = [ "hex", "serde", "serde_json", - "tokio 1.34.0", + "tokio", "tracing", "webb 0.8.2", ] @@ -15958,7 +15349,7 @@ checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" dependencies = [ "dirs-next", "rustversion", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -16076,7 +15467,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" dependencies = [ "deranged", - "itoa 1.0.9", + "itoa", "powerfmt", "serde", "time-core", @@ -16151,23 +15542,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" -[[package]] -name = "tokio" -version = "0.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6703a273949a90131b290be1fe7b039d0fc884aa1935860dfcbe056f28cd8092" -dependencies = [ - "bytes 0.5.6", - "fnv", - "futures-core", - "iovec", - "lazy_static", - "memchr", - "mio 0.6.23", - "pin-project-lite 0.1.12", - "slab", -] - [[package]] name = "tokio" version = "1.34.0" @@ -16175,9 +15549,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9" dependencies = [ "backtrace", - "bytes 1.5.0", + "bytes", "libc", - "mio 0.8.9", + "mio", "num_cpus", "parking_lot 0.12.1", "pin-project-lite 0.2.13", @@ -16205,7 +15579,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" dependencies = [ "native-tls", - "tokio 1.34.0", + "tokio", ] [[package]] @@ -16215,7 +15589,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ "rustls 0.21.9", - "tokio 1.34.0", + "tokio", ] [[package]] @@ -16226,21 +15600,8 @@ checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" dependencies = [ "futures-core", "pin-project-lite 0.2.13", - "tokio 1.34.0", - "tokio-util 0.7.10", -] - -[[package]] -name = "tokio-tungstenite" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d9e878ad426ca286e4dcae09cbd4e1973a7f8987d97570e2469703dd7f5720c" -dependencies = [ - "futures-util", - "log", - "pin-project 0.4.30", - "tokio 0.2.25", - "tungstenite 0.11.1", + "tokio", + "tokio-util", ] [[package]] @@ -16252,38 +15613,24 @@ dependencies = [ "futures-util", "log", "rustls 0.21.9", - "tokio 1.34.0", + "tokio", "tokio-rustls", - "tungstenite 0.20.1", + "tungstenite", "webpki-roots 0.25.3", ] -[[package]] -name = "tokio-util" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499" -dependencies = [ - "bytes 0.5.6", - "futures-core", - "futures-sink", - "log", - "pin-project-lite 0.1.12", - "tokio 0.2.25", -] - [[package]] name = "tokio-util" version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" dependencies = [ - "bytes 1.5.0", + "bytes", "futures-core", "futures-io", "futures-sink", "pin-project-lite 0.2.13", - "tokio 1.34.0", + "tokio", "tracing", ] @@ -16374,9 +15721,9 @@ checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" dependencies = [ "futures-core", "futures-util", - "pin-project 1.1.3", + "pin-project", "pin-project-lite 0.2.13", - "tokio 1.34.0", + "tokio", "tower-layer", "tower-service", "tracing", @@ -16389,11 +15736,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140" dependencies = [ "bitflags 2.4.1", - "bytes 1.5.0", + "bytes", "futures-core", "futures-util", "http", - "http-body 0.4.5", + "http-body", "http-range-header", "pin-project-lite 0.2.13", "tower-layer", @@ -16452,7 +15799,7 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" dependencies = [ - "pin-project 1.1.3", + "pin-project", "tracing", ] @@ -16552,19 +15899,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "trie-db" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "004e1e8f92535694b4cb1444dc5a8073ecf0815e3357f729638b9f8fc4062908" -dependencies = [ - "hash-db 0.15.2", - "hashbrown 0.12.3", - "log", - "rustc-hex", - "smallvec", -] - [[package]] name = "trie-db" version = "0.27.1" @@ -16578,15 +15912,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "trie-root" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a36c5ca3911ed3c9a5416ee6c679042064b93fc637ded67e25f92e68d783891" -dependencies = [ - "hash-db 0.15.2", -] - [[package]] name = "trie-root" version = "0.18.0" @@ -16627,7 +15952,7 @@ dependencies = [ "socket2 0.4.10", "thiserror", "tinyvec", - "tokio 1.34.0", + "tokio", "tracing", "url", ] @@ -16647,7 +15972,7 @@ dependencies = [ "resolv-conf", "smallvec", "thiserror", - "tokio 1.34.0", + "tokio", "tracing", "trust-dns-proto", ] @@ -16679,25 +16004,6 @@ version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4f195fd851901624eee5a58c4bb2b4f06399148fcd0ed336e6f1cb60a9881df" -[[package]] -name = "tungstenite" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0308d80d86700c5878b9ef6321f020f29b1bb9d5ff3cab25e75e23f3a492a23" -dependencies = [ - "base64 0.12.3", - "byteorder", - "bytes 0.5.6", - "http", - "httparse", - "input_buffer", - "log", - "rand 0.7.3", - "sha-1", - "url", - "utf-8", -] - [[package]] name = "tungstenite" version = "0.20.1" @@ -16705,7 +16011,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" dependencies = [ "byteorder", - "bytes 1.5.0", + "bytes", "data-encoding", "http", "httparse", @@ -16733,26 +16039,17 @@ dependencies = [ "ring 0.16.20", "stun", "thiserror", - "tokio 1.34.0", + "tokio", "webrtc-util", ] -[[package]] -name = "twoway" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b11b2b5241ba34be09c3cc85a36e56e48f9888862e19cedf23336d35316ed1" -dependencies = [ - "memchr", -] - [[package]] name = "twox-hash" version = "1.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 0.1.10", "digest 0.10.7", "rand 0.8.5", "static_assertions", @@ -16889,15 +16186,6 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" -[[package]] -name = "unicase" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] - [[package]] name = "unicode-bidi" version = "0.3.13" @@ -16970,7 +16258,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" dependencies = [ "asynchronous-codec", - "bytes 1.5.0", + "bytes", "futures-io", "futures-util", ] @@ -16999,12 +16287,6 @@ dependencies = [ "serde", ] -[[package]] -name = "urlencoding" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a1f0175e03a0973cf4afd476bef05c26e228520400eb1fd473ad417b1c00ffb" - [[package]] name = "utf-8" version = "0.7.6" @@ -17100,34 +16382,6 @@ dependencies = [ "try-lock", ] -[[package]] -name = "warp" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f41be6df54c97904af01aa23e613d4521eed7ab23537cede692d4058f6449407" -dependencies = [ - "bytes 0.5.6", - "futures 0.3.29", - "headers", - "http", - "hyper 0.13.10", - "log", - "mime", - "mime_guess", - "multipart", - "pin-project 0.4.30", - "scoped-tls", - "serde", - "serde_json", - "serde_urlencoded 0.6.1", - "tokio 0.2.25", - "tokio-tungstenite 0.11.0", - "tower-service", - "tracing", - "tracing-futures", - "urlencoding", -] - [[package]] name = "wasi" version = "0.9.0+wasi-snapshot-preview1" @@ -17303,7 +16557,7 @@ dependencies = [ "wasmer-types", "wasmer-vm", "wat", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -17435,7 +16689,7 @@ dependencies = [ "wasmer-engine-universal-artifact", "wasmer-types", "wasmer-vm", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -17507,18 +16761,7 @@ dependencies = [ "thiserror", "wasmer-artifact", "wasmer-types", - "winapi 0.3.9", -] - -[[package]] -name = "wasmi" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06c326c93fbf86419608361a2c925a31754cf109da1b8b55737070b4d6669422" -dependencies = [ - "parity-wasm", - "wasmi-validation", - "wasmi_core 0.2.1", + "winapi", ] [[package]] @@ -17531,38 +16774,16 @@ dependencies = [ "smallvec", "spin 0.9.8", "wasmi_arena", - "wasmi_core 0.12.0", + "wasmi_core", "wasmparser-nostd", ] -[[package]] -name = "wasmi-validation" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ff416ad1ff0c42e5a926ed5d5fab74c0f098749aa0ad8b2a34b982ce0e867b" -dependencies = [ - "parity-wasm", -] - [[package]] name = "wasmi_arena" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "401c1f35e413fac1846d4843745589d9ec678977ab35a384db8ae7830525d468" -[[package]] -name = "wasmi_core" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d20cb3c59b788653d99541c646c561c9dd26506f25c0cebfe810659c54c6d7" -dependencies = [ - "downcast-rs", - "libm", - "memory_units", - "num-rational", - "num-traits", -] - [[package]] name = "wasmi_core" version = "0.12.0" @@ -17581,16 +16802,6 @@ version = "0.83.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "718ed7c55c2add6548cca3ddd6383d738cd73b892df400e96b9aa876f0141d7a" -[[package]] -name = "wasmparser" -version = "0.96.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adde01ade41ab9a5d10ec8ed0bb954238cf8625b5cd5a13093d6de2ad9c2be1a" -dependencies = [ - "indexmap 1.9.3", - "url", -] - [[package]] name = "wasmparser" version = "0.102.0" @@ -17610,31 +16821,6 @@ dependencies = [ "indexmap-nostd", ] -[[package]] -name = "wasmtime" -version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49ffcc607adc9da024e87ca814592d4bc67f5c5b58e488f5608d5734a1ebc23e" -dependencies = [ - "anyhow", - "bincode", - "cfg-if 1.0.0", - "indexmap 1.9.3", - "libc", - "log", - "object 0.29.0", - "once_cell", - "paste", - "psm", - "serde", - "target-lexicon", - "wasmparser 0.96.0", - "wasmtime-environ 5.0.1", - "wasmtime-jit 5.0.1", - "wasmtime-runtime 5.0.1", - "windows-sys 0.42.0", -] - [[package]] name = "wasmtime" version = "8.0.1" @@ -17657,21 +16843,12 @@ dependencies = [ "wasmparser 0.102.0", "wasmtime-cache", "wasmtime-cranelift", - "wasmtime-environ 8.0.1", - "wasmtime-jit 8.0.1", - "wasmtime-runtime 8.0.1", + "wasmtime-environ", + "wasmtime-jit", + "wasmtime-runtime", "windows-sys 0.45.0", ] -[[package]] -name = "wasmtime-asm-macros" -version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12cb5dc4d79cd7b2453c395f64e9013d2ad90bd083be556d5565cb224ebe8d57" -dependencies = [ - "cfg-if 1.0.0", -] - [[package]] name = "wasmtime-asm-macros" version = "8.0.1" @@ -17720,7 +16897,7 @@ dependencies = [ "thiserror", "wasmparser 0.102.0", "wasmtime-cranelift-shared", - "wasmtime-environ 8.0.1", + "wasmtime-environ", ] [[package]] @@ -17735,26 +16912,7 @@ dependencies = [ "gimli 0.27.3", "object 0.30.4", "target-lexicon", - "wasmtime-environ 8.0.1", -] - -[[package]] -name = "wasmtime-environ" -version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9350c919553cddf14f78f9452119c8004d7ef6bfebb79a41a21819ed0c5604d8" -dependencies = [ - "anyhow", - "cranelift-entity 0.92.1", - "gimli 0.26.2", - "indexmap 1.9.3", - "log", - "object 0.29.0", - "serde", - "target-lexicon", - "thiserror", - "wasmparser 0.96.0", - "wasmtime-types 5.0.1", + "wasmtime-environ", ] [[package]] @@ -17773,30 +16931,7 @@ dependencies = [ "target-lexicon", "thiserror", "wasmparser 0.102.0", - "wasmtime-types 8.0.1", -] - -[[package]] -name = "wasmtime-jit" -version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ba5779ea786386432b94c9fc9ad5597346c319e8239db0d98d5be5cc109a7e" -dependencies = [ - "addr2line 0.17.0", - "anyhow", - "bincode", - "cfg-if 1.0.0", - "cpp_demangle", - "gimli 0.26.2", - "log", - "object 0.29.0", - "rustc-demangle", - "serde", - "target-lexicon", - "wasmtime-environ 5.0.1", - "wasmtime-jit-icache-coherence 5.0.1", - "wasmtime-runtime 5.0.1", - "windows-sys 0.42.0", + "wasmtime-types", ] [[package]] @@ -17816,22 +16951,13 @@ dependencies = [ "rustc-demangle", "serde", "target-lexicon", - "wasmtime-environ 8.0.1", - "wasmtime-jit-debug 8.0.1", - "wasmtime-jit-icache-coherence 8.0.1", - "wasmtime-runtime 8.0.1", + "wasmtime-environ", + "wasmtime-jit-debug", + "wasmtime-jit-icache-coherence", + "wasmtime-runtime", "windows-sys 0.45.0", ] -[[package]] -name = "wasmtime-jit-debug" -version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9841a44c82c74101c10ad4f215392761a2523b3c6c838597962bdb6de75fdb3" -dependencies = [ - "once_cell", -] - [[package]] name = "wasmtime-jit-debug" version = "8.0.1" @@ -17843,17 +16969,6 @@ dependencies = [ "rustix 0.36.17", ] -[[package]] -name = "wasmtime-jit-icache-coherence" -version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd4356c2493002da3b111d470c2ecea65a3017009afce8adc46eaa5758739891" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "windows-sys 0.42.0", -] - [[package]] name = "wasmtime-jit-icache-coherence" version = "8.0.1" @@ -17865,30 +16980,6 @@ dependencies = [ "windows-sys 0.45.0", ] -[[package]] -name = "wasmtime-runtime" -version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd26efea7a790fcf430e663ba2519f0ab6eb8980adf8b0c58c62b727da77c2ec" -dependencies = [ - "anyhow", - "cc", - "cfg-if 1.0.0", - "indexmap 1.9.3", - "libc", - "log", - "mach", - "memfd", - "memoffset 0.6.5", - "paste", - "rand 0.8.5", - "rustix 0.36.17", - "wasmtime-asm-macros 5.0.1", - "wasmtime-environ 5.0.1", - "wasmtime-jit-debug 5.0.1", - "windows-sys 0.42.0", -] - [[package]] name = "wasmtime-runtime" version = "8.0.1" @@ -17907,24 +16998,12 @@ dependencies = [ "paste", "rand 0.8.5", "rustix 0.36.17", - "wasmtime-asm-macros 8.0.1", - "wasmtime-environ 8.0.1", - "wasmtime-jit-debug 8.0.1", + "wasmtime-asm-macros", + "wasmtime-environ", + "wasmtime-jit-debug", "windows-sys 0.45.0", ] -[[package]] -name = "wasmtime-types" -version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86e1e4f66a2b9a114f9def450ab9971828c968db6ea6fccd613724b771fa4913" -dependencies = [ - "cranelift-entity 0.92.1", - "serde", - "thiserror", - "wasmparser 0.96.0", -] - [[package]] name = "wasmtime-types" version = "8.0.1" @@ -18036,7 +17115,7 @@ dependencies = [ "futures 0.3.29", "hex", "hex-literal", - "tokio 1.34.0", + "tokio", "typed-builder 0.16.2", "webb 0.8.2", "webb-proposals 0.6.0", @@ -18102,7 +17181,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "tokio 1.34.0", + "tokio", "toml 0.5.11", "tree_hash", "types", @@ -18136,7 +17215,7 @@ dependencies = [ "serde_json", "sp-keyring 24.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "subxt 0.29.0", - "tokio 1.34.0", + "tokio", "toml 0.5.11", "types", "webb 0.7.4", @@ -18179,7 +17258,7 @@ dependencies = [ "native-tls", "sled", "subxt-signer", - "tokio 1.34.0", + "tokio", "tracing", "webb 0.8.2", "webb-proposals 0.6.0", @@ -18198,7 +17277,7 @@ dependencies = [ "ethereum-types 0.14.1", "hex", "sled", - "tokio 1.34.0", + "tokio", "tracing", "webb 0.8.2", "webb-event-watcher-traits", @@ -18226,7 +17305,7 @@ dependencies = [ "native-tls", "serde_json", "sled", - "tokio 1.34.0", + "tokio", "tracing", "typed-builder 0.16.2", "webb 0.8.2", @@ -18239,33 +17318,6 @@ dependencies = [ "webb-relayer-utils", ] -[[package]] -name = "webb-finality-update-verify" -version = "0.2.0-dev" -source = "git+https://github.com/webb-tools/pallet-eth2-light-client?tag=v0.5.0#0ac997902435ed0bebfd03fbb0dccc0473b8d621" -dependencies = [ - "anyhow", - "bitvec", - "eth-types", - "serde", - "webb-bls", - "webb-consensus-types", - "webb-tree-hash", -] - -[[package]] -name = "webb-lc-relay-config" -version = "0.2.0-dev" -source = "git+https://github.com/webb-tools/pallet-eth2-light-client?tag=v0.5.0#0ac997902435ed0bebfd03fbb0dccc0473b8d621" -dependencies = [ - "dotenvy", - "reqwest", - "serde", - "toml 0.5.11", - "webb-eth-rpc-client", - "webb-eth2-pallet-init", -] - [[package]] name = "webb-lc-relay-types" version = "0.2.0-dev" @@ -18276,25 +17328,12 @@ dependencies = [ "reqwest", "serde", "serde_json", - "tokio 1.34.0", + "tokio", "tracing", "typed-builder 0.16.2", "webb 0.7.4", ] -[[package]] -name = "webb-lc-relayer-context" -version = "0.2.0-dev" -source = "git+https://github.com/webb-tools/pallet-eth2-light-client?tag=v0.5.0#0ac997902435ed0bebfd03fbb0dccc0473b8d621" -dependencies = [ - "anyhow", - "subxt 0.29.0", - "tokio 1.34.0", - "tracing", - "webb-eth2-pallet-init", - "webb-lc-relay-config", -] - [[package]] name = "webb-light-client-primitives" version = "0.1.0" @@ -18361,7 +17400,7 @@ dependencies = [ "parking_lot 0.12.1", "sled", "subxt-signer", - "tokio 1.34.0", + "tokio", "tracing", "typed-builder 0.16.2", "webb 0.8.2", @@ -18415,7 +17454,7 @@ dependencies = [ "serde_json", "sled", "subxt-signer", - "tokio 1.34.0", + "tokio", "tower-http", "tracing", "url", @@ -18471,7 +17510,7 @@ dependencies = [ "serde", "serde_json", "subxt-signer", - "tokio 1.34.0", + "tokio", "tracing", "url", "webb 0.8.2", @@ -18490,7 +17529,7 @@ source = "git+https://github.com/webb-tools/relayer?branch=develop#e71db7888b2ae dependencies = [ "native-tls", "serde", - "tokio 1.34.0", + "tokio", "webb 0.8.2", "webb-relayer-store", "webb-relayer-tx-relay-utils", @@ -18510,7 +17549,7 @@ dependencies = [ "serde", "serde_json", "subxt-signer", - "tokio 1.34.0", + "tokio", "tokio-stream", "tracing", "webb 0.8.2", @@ -18553,7 +17592,7 @@ dependencies = [ "rand 0.8.5", "sled", "subxt-signer", - "tokio 1.34.0", + "tokio", "tracing", "url", "webb 0.8.2", @@ -18573,7 +17612,7 @@ dependencies = [ "once_cell", "serde", "subxt-signer", - "tokio 1.34.0", + "tokio", "tracing", "webb 0.8.2", "webb-chains-info", @@ -18626,9 +17665,9 @@ dependencies = [ "futures 0.3.29", "glob", "hex", - "hyper 0.14.27", + "hyper", "libsecp256k1", - "prometheus 0.13.3", + "prometheus", "reqwest", "serde", "serde_bytes", @@ -18709,7 +17748,7 @@ checksum = "2d3bc9049bdb2cea52f5fd4f6f728184225bdb867ed0dc2410eab6df5bdd67bb" dependencies = [ "arc-swap", "async-trait", - "bytes 1.5.0", + "bytes", "hex", "interceptor", "lazy_static", @@ -18728,7 +17767,7 @@ dependencies = [ "stun", "thiserror", "time", - "tokio 1.34.0", + "tokio", "turn", "url", "waitgroup", @@ -18748,11 +17787,11 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ef36a4d12baa6e842582fe9ec16a57184ba35e1a09308307b67d43ec8883100" dependencies = [ - "bytes 1.5.0", + "bytes", "derive_builder", "log", "thiserror", - "tokio 1.34.0", + "tokio", "webrtc-sctp", "webrtc-util", ] @@ -18790,7 +17829,7 @@ dependencies = [ "signature 1.6.4", "subtle", "thiserror", - "tokio 1.34.0", + "tokio", "webpki 0.21.4", "webrtc-util", "x25519-dalek 2.0.0", @@ -18812,7 +17851,7 @@ dependencies = [ "serde_json", "stun", "thiserror", - "tokio 1.34.0", + "tokio", "turn", "url", "uuid 1.6.1", @@ -18830,7 +17869,7 @@ dependencies = [ "log", "socket2 0.4.10", "thiserror", - "tokio 1.34.0", + "tokio", "webrtc-util", ] @@ -18841,7 +17880,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f72e1650a8ae006017d1a5280efb49e2610c19ccc3c0905b03b648aee9554991" dependencies = [ "byteorder", - "bytes 1.5.0", + "bytes", "rand 0.8.5", "rtp", "thiserror", @@ -18855,12 +17894,12 @@ checksum = "0d47adcd9427eb3ede33d5a7f3424038f63c965491beafcc20bc650a2f6679c0" dependencies = [ "arc-swap", "async-trait", - "bytes 1.5.0", + "bytes", "crc", "log", "rand 0.8.5", "thiserror", - "tokio 1.34.0", + "tokio", "webrtc-util", ] @@ -18875,7 +17914,7 @@ dependencies = [ "aes-gcm 0.9.4", "async-trait", "byteorder", - "bytes 1.5.0", + "bytes", "ctr 0.8.0", "hmac 0.11.0", "log", @@ -18884,7 +17923,7 @@ dependencies = [ "sha-1", "subtle", "thiserror", - "tokio 1.34.0", + "tokio", "webrtc-util", ] @@ -18896,7 +17935,7 @@ checksum = "93f1db1727772c05cf7a2cfece52c3aca8045ca1e176cd517d323489aa3c6d87" dependencies = [ "async-trait", "bitflags 1.3.2", - "bytes 1.5.0", + "bytes", "cc", "ipnet", "lazy_static", @@ -18905,8 +17944,8 @@ dependencies = [ "nix", "rand 0.8.5", "thiserror", - "tokio 1.34.0", - "winapi 0.3.9", + "tokio", + "winapi", ] [[package]] @@ -18937,12 +17976,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" -[[package]] -name = "winapi" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" - [[package]] name = "winapi" version = "0.3.9" @@ -18953,12 +17986,6 @@ dependencies = [ "winapi-x86_64-pc-windows-gnu", ] -[[package]] -name = "winapi-build" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" - [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" @@ -18971,7 +17998,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ - "winapi 0.3.9", + "winapi", ] [[package]] @@ -19012,21 +18039,6 @@ dependencies = [ "windows_x86_64_msvc 0.33.0", ] -[[package]] -name = "windows-sys" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - [[package]] name = "windows-sys" version = "0.45.0" @@ -19274,16 +18286,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "ws2_32-sys" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" -dependencies = [ - "winapi 0.2.8", - "winapi-build", -] - [[package]] name = "ws_stream_wasm" version = "0.7.4" diff --git a/Cargo.toml b/Cargo.toml index d7d172634..a4b35b4d8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -77,7 +77,7 @@ tangle-relayer-gadget = { packge = "tangle-relayer-gadget", path = "relayer-gadg tangle-relayer-gadget-cli = { packge = "tangle-relayer-gadget-cli", path = "relayer-gadget/cli" } tangle-testnet-runtime = { package = "tangle-testnet-runtime", path = "runtime/testnet" } -tangle-mainnet-runtime = { package = "tangle-mainnet-runtime", path = "runtime/mainnet" } +tangle-runtime = { package = "tangle-runtime", path = "runtime/mainnet" } # Arkworks ark-ec = { version = "^0.4.0", default-features = false } @@ -105,7 +105,7 @@ pallet-zksaas = { path = "pallets/zksaas", default-features = false } # Substrate dependencies sp-api = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } sp-block-builder = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } -sp-consensus-aura = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } +sp-consensus-babe = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } sp-core = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } sp-inherents = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } sp-io = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } @@ -114,6 +114,8 @@ sc-offchain = { git = "https://github.com/paritytech/polkadot-sdk", branch = "re sp-runtime = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } sp-session = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } sp-staking = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } +sp-statement-store = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } +sc-statement-store = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } sp-std = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } sp-transaction-pool = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } sp-version = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } @@ -135,6 +137,7 @@ sp-arithmetic = { git = "https://github.com/paritytech/polkadot-sdk", branch = " sp-trie = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } sp-rpc = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" } sp-weights = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" } +sc-network-statement = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } frame-benchmarking = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } frame-election-provider-support = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } @@ -144,12 +147,14 @@ frame-system = { git = "https://github.com/paritytech/polkadot-sdk", branch = "r frame-system-benchmarking = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } frame-system-rpc-runtime-api = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } frame-benchmarking-cli = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" } +sc-authority-discovery = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" } sc-basic-authorship = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" } sc-client-api = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" } sc-consensus = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" } -sc-consensus-aura = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" } +sc-consensus-babe = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" } sc-network-common = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" } sc-telemetry = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" } +sc-storage-monitor = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" } sc-transaction-pool = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" } sp-keyring = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" } frame-rpc-system = { default-features = false, package = "substrate-frame-rpc-system", git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" } @@ -162,10 +167,19 @@ try-runtime-cli = { default-features = false, git = "https://github.com/parityte sc-consensus-slots = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" } sp-consensus = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" } sp-keystore = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" } +sp-storage = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" } +sp-consensus-grandpa = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" } sc-client-db = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" } sp-application-crypto = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } +sp-transaction-storage-proof = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } +sc-consensus-babe-rpc = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } +sc-consensus-grandpa-rpc = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } +mmr-rpc = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } +sc-rpc-spec-v2 = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } +substrate-state-trie-migration-rpc = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } +sc-sync-state-rpc = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } -pallet-aura = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } +pallet-babe = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } pallet-bags-list = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } pallet-session = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0", default-features = false } diff --git a/README.md b/README.md index dd667508b..1dfd8bd58 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ If you want to use Nix for development, please follow following instructions

Run Standalone Local Testnet

-1. Build `tangle-standalone` node. +1. Build `tangle` node. ```bash cargo build --release ``` diff --git a/RELAYER.md b/RELAYER.md index 734a9fc6b..995395240 100644 --- a/RELAYER.md +++ b/RELAYER.md @@ -8,7 +8,7 @@ which is totally OK if you are not looking into running the webb relayer gadget. 1. Compile the tangle standalone node with relayer feature ```sh -cargo build --release -p tangle-standalone --features relayer +cargo build --release -p tangle --features relayer ``` 2. Create your .env file to store your secrets (during the development) @@ -75,7 +75,7 @@ events-watcher = { enabled = true, polling-interval = 3000, print-progress-inter 5. Start Tangle Node with the relayer config. ```sh -./target/release/tangle-standalone --tmp --chain local --validator --alice --rpc-cors all --rpc-methods=unsafe --rpc-port 9944 --relayer-config-dir ./relayer-config +./target/release/tangle --tmp --chain local --validator --alice --rpc-cors all --rpc-methods=unsafe --rpc-port 9944 --relayer-config-dir ./relayer-config ``` Now, you should notice that the error about not starting the relayer gadget is gone, and to verify everything is working diff --git a/chainspecs/testnet/tangle-standalone.json b/chainspecs/testnet/tangle-standalone.json index 08325091e..aa1dc7ce8 100644 --- a/chainspecs/testnet/tangle-standalone.json +++ b/chainspecs/testnet/tangle-standalone.json @@ -1,6 +1,6 @@ { "name": "Tangle Standalone Testnet", - "id": "tangle-standalone-testnet", + "id": "tangle-testnet", "chainType": "Development", "bootNodes": [ "/ip4/3.22.222.30/tcp/30333/p2p/12D3KooWRdvZ3PRteq8DC78Z3z5ZiehipKrKhHDRpgvCjc8XSeQx", diff --git a/dkg-liveness-test/.envrc b/dkg-liveness-test/.envrc deleted file mode 100644 index 4f721ca2c..000000000 --- a/dkg-liveness-test/.envrc +++ /dev/null @@ -1,5 +0,0 @@ -source_env_if_exists ../.envrc -dotenv_if_exists -layout node - -# vi: ft=sh diff --git a/dkg-liveness-test/index.js b/dkg-liveness-test/index.js deleted file mode 100644 index 88c1fb3b5..000000000 --- a/dkg-liveness-test/index.js +++ /dev/null @@ -1,51 +0,0 @@ -// Import the API -const { ApiPromise, WsProvider } = require("@polkadot/api"); -var assert = require("assert"); - -async function main() { - // Initialise the provider to connect to the local node - try { - const provider = new WsProvider("ws://127.0.0.1:9944"); - console.log(provider.isConnected); - - // Create the API and wait until ready - const api = await ApiPromise.create({ provider }); - - // Make our basic chain state/storage queries, all in one go - const [ - current_block, - current_session, - keygenThreshold, - signatureThreshold, - lastSessionRotationBlock, - jailedKeygenAuthorities, - jailedSigningAuthorities, - ] = await Promise.all([ - api.query.system.number(), - api.query.session.currentIndex(), - api.query.dkg.keygenThreshold(), - api.query.dkg.signatureThreshold(), - api.query.dkg.lastSessionRotationBlock(), - api.query.dkg.jailedKeygenAuthorities.entries(), - api.query.dkg.jailedSigningAuthorities.entries(), - ]); - - if (current_block > 0) { - console.log("Network produces blocks : ", current_block); - if (lastSessionRotationBlock > 0) { - console.log("DKG has rotated : ", lastSessionRotationBlock); - // ensure all params are normal - assert(jailedKeygenAuthorities.entries().length == 0); - assert(jailedSigningAuthorities.entries().length == 0); - assert(current_session != 0); - process.exit(0); - } - process.exit(0); - } - } catch (err) { - console.log("exiting due to error : ", err); - process.exit(1); - } -} - -main().catch(console.error); diff --git a/dkg-liveness-test/package.json b/dkg-liveness-test/package.json deleted file mode 100644 index eae16fb36..000000000 --- a/dkg-liveness-test/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "dkg-liveness-test", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/webb-tools/tangle-deployer.git" - }, - "author": "", - "license": "ISC", - "bugs": { - "url": "https://github.com/webb-tools/tangle-deployer/issues" - }, - "homepage": "https://github.com/webb-tools/tangle-deployer#readme", - "dependencies": { - "@polkadot/api": "^9.11.3", - "@slack/webhook": "^6.1.0", - "assert": "^2.0.0", - "dotenv": "^16.0.3" - } -} diff --git a/dkg-liveness-test/yarn.lock b/dkg-liveness-test/yarn.lock deleted file mode 100644 index 1f419ceb3..000000000 --- a/dkg-liveness-test/yarn.lock +++ /dev/null @@ -1,895 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/runtime@^7.20.13", "@babel/runtime@^7.20.6": - "integrity" "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==" - "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz" - "version" "7.21.0" - dependencies: - "regenerator-runtime" "^0.13.11" - -"@noble/hashes@1.2.0": - "integrity" "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==" - "resolved" "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz" - "version" "1.2.0" - -"@noble/secp256k1@1.7.1": - "integrity" "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==" - "resolved" "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz" - "version" "1.7.1" - -"@polkadot/api-augment@9.14.2": - "integrity" "sha512-19MmW8AHEcLkdcUIo3LLk0eCQgREWqNSxkUyOeWn7UiNMY1AhDOOwMStUBNCvrIDK6VL6GGc1sY7rkPCLMuKSw==" - "resolved" "https://registry.npmjs.org/@polkadot/api-augment/-/api-augment-9.14.2.tgz" - "version" "9.14.2" - dependencies: - "@babel/runtime" "^7.20.13" - "@polkadot/api-base" "9.14.2" - "@polkadot/rpc-augment" "9.14.2" - "@polkadot/types" "9.14.2" - "@polkadot/types-augment" "9.14.2" - "@polkadot/types-codec" "9.14.2" - "@polkadot/util" "^10.4.2" - -"@polkadot/api-base@9.14.2": - "integrity" "sha512-ky9fmzG1Tnrjr/SBZ0aBB21l0TFr+CIyQenQczoUyVgiuxVaI/2Bp6R2SFrHhG28P+PW2/RcYhn2oIAR2Z2fZQ==" - "resolved" "https://registry.npmjs.org/@polkadot/api-base/-/api-base-9.14.2.tgz" - "version" "9.14.2" - dependencies: - "@babel/runtime" "^7.20.13" - "@polkadot/rpc-core" "9.14.2" - "@polkadot/types" "9.14.2" - "@polkadot/util" "^10.4.2" - "rxjs" "^7.8.0" - -"@polkadot/api-derive@9.14.2": - "integrity" "sha512-yw9OXucmeggmFqBTMgza0uZwhNjPxS7MaT7lSCUIRKckl1GejdV+qMhL3XFxPFeYzXwzFpdPG11zWf+qJlalqw==" - "resolved" "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-9.14.2.tgz" - "version" "9.14.2" - dependencies: - "@babel/runtime" "^7.20.13" - "@polkadot/api" "9.14.2" - "@polkadot/api-augment" "9.14.2" - "@polkadot/api-base" "9.14.2" - "@polkadot/rpc-core" "9.14.2" - "@polkadot/types" "9.14.2" - "@polkadot/types-codec" "9.14.2" - "@polkadot/util" "^10.4.2" - "@polkadot/util-crypto" "^10.4.2" - "rxjs" "^7.8.0" - -"@polkadot/api@^9.11.3", "@polkadot/api@9.14.2": - "integrity" "sha512-R3eYFj2JgY1zRb+OCYQxNlJXCs2FA+AU4uIEiVcXnVLmR3M55tkRNEwYAZmiFxx0pQmegGgPMc33q7TWGdw24A==" - "resolved" "https://registry.npmjs.org/@polkadot/api/-/api-9.14.2.tgz" - "version" "9.14.2" - dependencies: - "@babel/runtime" "^7.20.13" - "@polkadot/api-augment" "9.14.2" - "@polkadot/api-base" "9.14.2" - "@polkadot/api-derive" "9.14.2" - "@polkadot/keyring" "^10.4.2" - "@polkadot/rpc-augment" "9.14.2" - "@polkadot/rpc-core" "9.14.2" - "@polkadot/rpc-provider" "9.14.2" - "@polkadot/types" "9.14.2" - "@polkadot/types-augment" "9.14.2" - "@polkadot/types-codec" "9.14.2" - "@polkadot/types-create" "9.14.2" - "@polkadot/types-known" "9.14.2" - "@polkadot/util" "^10.4.2" - "@polkadot/util-crypto" "^10.4.2" - "eventemitter3" "^5.0.0" - "rxjs" "^7.8.0" - -"@polkadot/keyring@^10.4.2": - "integrity" "sha512-7iHhJuXaHrRTG6cJDbZE9G+c1ts1dujp0qbO4RfAPmT7YUvphHvAtCKueN9UKPz5+TYDL+rP/jDEaSKU8jl/qQ==" - "resolved" "https://registry.npmjs.org/@polkadot/keyring/-/keyring-10.4.2.tgz" - "version" "10.4.2" - dependencies: - "@babel/runtime" "^7.20.13" - "@polkadot/util" "10.4.2" - "@polkadot/util-crypto" "10.4.2" - -"@polkadot/networks@^10.4.2", "@polkadot/networks@10.4.2": - "integrity" "sha512-FAh/znrEvWBiA/LbcT5GXHsCFUl//y9KqxLghSr/CreAmAergiJNT0MVUezC7Y36nkATgmsr4ylFwIxhVtuuCw==" - "resolved" "https://registry.npmjs.org/@polkadot/networks/-/networks-10.4.2.tgz" - "version" "10.4.2" - dependencies: - "@babel/runtime" "^7.20.13" - "@polkadot/util" "10.4.2" - "@substrate/ss58-registry" "^1.38.0" - -"@polkadot/rpc-augment@9.14.2": - "integrity" "sha512-mOubRm3qbKZTbP9H01XRrfTk7k5it9WyzaWAg72DJBQBYdgPUUkGSgpPD/Srkk5/5GAQTWVWL1I2UIBKJ4TJjQ==" - "resolved" "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-9.14.2.tgz" - "version" "9.14.2" - dependencies: - "@babel/runtime" "^7.20.13" - "@polkadot/rpc-core" "9.14.2" - "@polkadot/types" "9.14.2" - "@polkadot/types-codec" "9.14.2" - "@polkadot/util" "^10.4.2" - -"@polkadot/rpc-core@9.14.2": - "integrity" "sha512-krA/mtQ5t9nUQEsEVC1sjkttLuzN6z6gyJxK2IlpMS3S5ncy/R6w4FOpy+Q0H18Dn83JBo0p7ZtY7Y6XkK48Kw==" - "resolved" "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-9.14.2.tgz" - "version" "9.14.2" - dependencies: - "@babel/runtime" "^7.20.13" - "@polkadot/rpc-augment" "9.14.2" - "@polkadot/rpc-provider" "9.14.2" - "@polkadot/types" "9.14.2" - "@polkadot/util" "^10.4.2" - "rxjs" "^7.8.0" - -"@polkadot/rpc-provider@9.14.2": - "integrity" "sha512-YTSywjD5PF01V47Ru5tln2LlpUwJiSOdz6rlJXPpMaY53hUp7+xMU01FVAQ1bllSBNisSD1Msv/mYHq84Oai2g==" - "resolved" "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-9.14.2.tgz" - "version" "9.14.2" - dependencies: - "@babel/runtime" "^7.20.13" - "@polkadot/keyring" "^10.4.2" - "@polkadot/types" "9.14.2" - "@polkadot/types-support" "9.14.2" - "@polkadot/util" "^10.4.2" - "@polkadot/util-crypto" "^10.4.2" - "@polkadot/x-fetch" "^10.4.2" - "@polkadot/x-global" "^10.4.2" - "@polkadot/x-ws" "^10.4.2" - "eventemitter3" "^5.0.0" - "mock-socket" "^9.2.1" - "nock" "^13.3.0" - optionalDependencies: - "@substrate/connect" "0.7.19" - -"@polkadot/types-augment@9.14.2": - "integrity" "sha512-WO9d7RJufUeY3iFgt2Wz762kOu1tjEiGBR5TT4AHtpEchVHUeosVTrN9eycC+BhleqYu52CocKz6u3qCT/jKLg==" - "resolved" "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-9.14.2.tgz" - "version" "9.14.2" - dependencies: - "@babel/runtime" "^7.20.13" - "@polkadot/types" "9.14.2" - "@polkadot/types-codec" "9.14.2" - "@polkadot/util" "^10.4.2" - -"@polkadot/types-codec@9.14.2": - "integrity" "sha512-AJ4XF7W1no4PENLBRU955V6gDxJw0h++EN3YoDgThozZ0sj3OxyFupKgNBZcZb2V23H8JxQozzIad8k+nJbO1w==" - "resolved" "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-9.14.2.tgz" - "version" "9.14.2" - dependencies: - "@babel/runtime" "^7.20.13" - "@polkadot/util" "^10.4.2" - "@polkadot/x-bigint" "^10.4.2" - -"@polkadot/types-create@9.14.2": - "integrity" "sha512-nSnKpBierlmGBQT8r6/SHf6uamBIzk4WmdMsAsR4uJKJF1PtbIqx2W5PY91xWSiMSNMzjkbCppHkwaDAMwLGaw==" - "resolved" "https://registry.npmjs.org/@polkadot/types-create/-/types-create-9.14.2.tgz" - "version" "9.14.2" - dependencies: - "@babel/runtime" "^7.20.13" - "@polkadot/types-codec" "9.14.2" - "@polkadot/util" "^10.4.2" - -"@polkadot/types-known@9.14.2": - "integrity" "sha512-iM8WOCgguzJ3TLMqlm4K1gKQEwWm2zxEKT1HZZ1irs/lAbBk9MquDWDvebryiw3XsLB8xgrp3RTIBn2Q4FjB2A==" - "resolved" "https://registry.npmjs.org/@polkadot/types-known/-/types-known-9.14.2.tgz" - "version" "9.14.2" - dependencies: - "@babel/runtime" "^7.20.13" - "@polkadot/networks" "^10.4.2" - "@polkadot/types" "9.14.2" - "@polkadot/types-codec" "9.14.2" - "@polkadot/types-create" "9.14.2" - "@polkadot/util" "^10.4.2" - -"@polkadot/types-support@9.14.2": - "integrity" "sha512-VWCOPgXDK3XtXT7wMLyIWeNDZxUbNcw/8Pn6n6vMogs7o/n4h6WGbGMeTIQhPWyn831/RmkVs5+2DUC+2LlOhw==" - "resolved" "https://registry.npmjs.org/@polkadot/types-support/-/types-support-9.14.2.tgz" - "version" "9.14.2" - dependencies: - "@babel/runtime" "^7.20.13" - "@polkadot/util" "^10.4.2" - -"@polkadot/types@9.14.2": - "integrity" "sha512-hGLddTiJbvowhhUZJ3k+olmmBc1KAjWIQxujIUIYASih8FQ3/YJDKxaofGOzh0VygOKW3jxQBN2VZPofyDP9KQ==" - "resolved" "https://registry.npmjs.org/@polkadot/types/-/types-9.14.2.tgz" - "version" "9.14.2" - dependencies: - "@babel/runtime" "^7.20.13" - "@polkadot/keyring" "^10.4.2" - "@polkadot/types-augment" "9.14.2" - "@polkadot/types-codec" "9.14.2" - "@polkadot/types-create" "9.14.2" - "@polkadot/util" "^10.4.2" - "@polkadot/util-crypto" "^10.4.2" - "rxjs" "^7.8.0" - -"@polkadot/util-crypto@^10.4.2", "@polkadot/util-crypto@10.4.2": - "integrity" "sha512-RxZvF7C4+EF3fzQv8hZOLrYCBq5+wA+2LWv98nECkroChY3C2ZZvyWDqn8+aonNULt4dCVTWDZM0QIY6y4LUAQ==" - "resolved" "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-10.4.2.tgz" - "version" "10.4.2" - dependencies: - "@babel/runtime" "^7.20.13" - "@noble/hashes" "1.2.0" - "@noble/secp256k1" "1.7.1" - "@polkadot/networks" "10.4.2" - "@polkadot/util" "10.4.2" - "@polkadot/wasm-crypto" "^6.4.1" - "@polkadot/x-bigint" "10.4.2" - "@polkadot/x-randomvalues" "10.4.2" - "@scure/base" "1.1.1" - "ed2curve" "^0.3.0" - "tweetnacl" "^1.0.3" - -"@polkadot/util@*", "@polkadot/util@^10.4.2", "@polkadot/util@10.4.2": - "integrity" "sha512-0r5MGICYiaCdWnx+7Axlpvzisy/bi1wZGXgCSw5+ZTyPTOqvsYRqM2X879yxvMsGfibxzWqNzaiVjToz1jvUaA==" - "resolved" "https://registry.npmjs.org/@polkadot/util/-/util-10.4.2.tgz" - "version" "10.4.2" - dependencies: - "@babel/runtime" "^7.20.13" - "@polkadot/x-bigint" "10.4.2" - "@polkadot/x-global" "10.4.2" - "@polkadot/x-textdecoder" "10.4.2" - "@polkadot/x-textencoder" "10.4.2" - "@types/bn.js" "^5.1.1" - "bn.js" "^5.2.1" - -"@polkadot/wasm-bridge@6.4.1": - "integrity" "sha512-QZDvz6dsUlbYsaMV5biZgZWkYH9BC5AfhT0f0/knv8+LrbAoQdP3Asbvddw8vyU9sbpuCHXrd4bDLBwUCRfrBQ==" - "resolved" "https://registry.npmjs.org/@polkadot/wasm-bridge/-/wasm-bridge-6.4.1.tgz" - "version" "6.4.1" - dependencies: - "@babel/runtime" "^7.20.6" - -"@polkadot/wasm-crypto-asmjs@6.4.1": - "integrity" "sha512-UxZTwuBZlnODGIQdCsE2Sn/jU0O2xrNQ/TkhRFELfkZXEXTNu4lw6NpaKq7Iey4L+wKd8h4lT3VPVkMcPBLOvA==" - "resolved" "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-6.4.1.tgz" - "version" "6.4.1" - dependencies: - "@babel/runtime" "^7.20.6" - -"@polkadot/wasm-crypto-init@6.4.1": - "integrity" "sha512-1ALagSi/nfkyFaH6JDYfy/QbicVbSn99K8PV9rctDUfxc7P06R7CoqbjGQ4OMPX6w1WYVPU7B4jPHGLYBlVuMw==" - "resolved" "https://registry.npmjs.org/@polkadot/wasm-crypto-init/-/wasm-crypto-init-6.4.1.tgz" - "version" "6.4.1" - dependencies: - "@babel/runtime" "^7.20.6" - "@polkadot/wasm-bridge" "6.4.1" - "@polkadot/wasm-crypto-asmjs" "6.4.1" - "@polkadot/wasm-crypto-wasm" "6.4.1" - -"@polkadot/wasm-crypto-wasm@6.4.1": - "integrity" "sha512-3VV9ZGzh0ZY3SmkkSw+0TRXxIpiO0nB8lFwlRgcwaCihwrvLfRnH9GI8WE12mKsHVjWTEVR3ogzILJxccAUjDA==" - "resolved" "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-6.4.1.tgz" - "version" "6.4.1" - dependencies: - "@babel/runtime" "^7.20.6" - "@polkadot/wasm-util" "6.4.1" - -"@polkadot/wasm-crypto@^6.4.1": - "integrity" "sha512-FH+dcDPdhSLJvwL0pMLtn/LIPd62QDPODZRCmDyw+pFjLOMaRBc7raomWUOqyRWJTnqVf/iscc2rLVLNMyt7ag==" - "resolved" "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-6.4.1.tgz" - "version" "6.4.1" - dependencies: - "@babel/runtime" "^7.20.6" - "@polkadot/wasm-bridge" "6.4.1" - "@polkadot/wasm-crypto-asmjs" "6.4.1" - "@polkadot/wasm-crypto-init" "6.4.1" - "@polkadot/wasm-crypto-wasm" "6.4.1" - "@polkadot/wasm-util" "6.4.1" - -"@polkadot/wasm-util@6.4.1": - "integrity" "sha512-Uwo+WpEsDmFExWC5kTNvsVhvqXMZEKf4gUHXFn4c6Xz4lmieRT5g+1bO1KJ21pl4msuIgdV3Bksfs/oiqMFqlw==" - "resolved" "https://registry.npmjs.org/@polkadot/wasm-util/-/wasm-util-6.4.1.tgz" - "version" "6.4.1" - dependencies: - "@babel/runtime" "^7.20.6" - -"@polkadot/x-bigint@^10.4.2", "@polkadot/x-bigint@10.4.2": - "integrity" "sha512-awRiox+/XSReLzimAU94fPldowiwnnMUkQJe8AebYhNocAj6SJU00GNoj6j6tAho6yleOwrTJXZaWFBaQVJQNg==" - "resolved" "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-10.4.2.tgz" - "version" "10.4.2" - dependencies: - "@babel/runtime" "^7.20.13" - "@polkadot/x-global" "10.4.2" - -"@polkadot/x-fetch@^10.4.2": - "integrity" "sha512-Ubb64yaM4qwhogNP+4mZ3ibRghEg5UuCYRMNaCFoPgNAY8tQXuDKrHzeks3+frlmeH9YRd89o8wXLtWouwZIcw==" - "resolved" "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-10.4.2.tgz" - "version" "10.4.2" - dependencies: - "@babel/runtime" "^7.20.13" - "@polkadot/x-global" "10.4.2" - "@types/node-fetch" "^2.6.2" - "node-fetch" "^3.3.0" - -"@polkadot/x-global@^10.4.2", "@polkadot/x-global@10.4.2": - "integrity" "sha512-g6GXHD/ykZvHap3M6wh19dO70Zm43l4jEhlxf5LtTo5/0/UporFCXr2YJYZqfbn9JbQwl1AU+NroYio+vtJdiA==" - "resolved" "https://registry.npmjs.org/@polkadot/x-global/-/x-global-10.4.2.tgz" - "version" "10.4.2" - dependencies: - "@babel/runtime" "^7.20.13" - -"@polkadot/x-randomvalues@*", "@polkadot/x-randomvalues@10.4.2": - "integrity" "sha512-mf1Wbpe7pRZHO0V3V89isPLqZOy5XGX2bCqsfUWHgb1NvV1MMx5TjVjdaYyNlGTiOkAmJKlOHshcfPU2sYWpNg==" - "resolved" "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-10.4.2.tgz" - "version" "10.4.2" - dependencies: - "@babel/runtime" "^7.20.13" - "@polkadot/x-global" "10.4.2" - -"@polkadot/x-textdecoder@10.4.2": - "integrity" "sha512-d3ADduOKUTU+cliz839+KCFmi23pxTlabH7qh7Vs1GZQvXOELWdqFOqakdiAjtMn68n1KVF4O14Y+OUm7gp/zA==" - "resolved" "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-10.4.2.tgz" - "version" "10.4.2" - dependencies: - "@babel/runtime" "^7.20.13" - "@polkadot/x-global" "10.4.2" - -"@polkadot/x-textencoder@10.4.2": - "integrity" "sha512-mxcQuA1exnyv74Kasl5vxBq01QwckG088lYjc3KwmND6+pPrW2OWagbxFX5VFoDLDAE+UJtnUHsjdWyOTDhpQA==" - "resolved" "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-10.4.2.tgz" - "version" "10.4.2" - dependencies: - "@babel/runtime" "^7.20.13" - "@polkadot/x-global" "10.4.2" - -"@polkadot/x-ws@^10.4.2": - "integrity" "sha512-3gHSTXAWQu1EMcMVTF5QDKHhEHzKxhAArweEyDXE7VsgKUP/ixxw4hVZBrkX122iI5l5mjSiooRSnp/Zl3xqDQ==" - "resolved" "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-10.4.2.tgz" - "version" "10.4.2" - dependencies: - "@babel/runtime" "^7.20.13" - "@polkadot/x-global" "10.4.2" - "@types/websocket" "^1.0.5" - "websocket" "^1.0.34" - -"@scure/base@1.1.1": - "integrity" "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==" - "resolved" "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz" - "version" "1.1.1" - -"@slack/types@^1.2.1": - "integrity" "sha512-tA7GG7Tj479vojfV3AoxbckalA48aK6giGjNtgH6ihpLwTyHE3fIgRrvt8TWfLwW8X8dyu7vgmAsGLRG7hWWOg==" - "resolved" "https://registry.npmjs.org/@slack/types/-/types-1.10.0.tgz" - "version" "1.10.0" - -"@slack/webhook@^6.1.0": - "integrity" "sha512-7AYNISyAjn/lA/VDwZ307K5ft5DojXgBd3DRrGoFN8XxIwIyRALdFhxBiMgAqeJH8eWoktvNwLK24R9hREEqpA==" - "resolved" "https://registry.npmjs.org/@slack/webhook/-/webhook-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "@slack/types" "^1.2.1" - "@types/node" ">=12.0.0" - "axios" "^0.21.4" - -"@substrate/connect-extension-protocol@^1.0.1": - "integrity" "sha512-161JhCC1csjH3GE5mPLEd7HbWtwNSPJBg3p1Ksz9SFlTzj/bgEwudiRN2y5i0MoLGCIJRYKyKGMxVnd29PzNjg==" - "resolved" "https://registry.npmjs.org/@substrate/connect-extension-protocol/-/connect-extension-protocol-1.0.1.tgz" - "version" "1.0.1" - -"@substrate/connect@0.7.19": - "integrity" "sha512-+DDRadc466gCmDU71sHrYOt1HcI2Cbhm7zdCFjZfFVHXhC/E8tOdrVSglAH2HDEHR0x2SiHRxtxOGC7ak2Zjog==" - "resolved" "https://registry.npmjs.org/@substrate/connect/-/connect-0.7.19.tgz" - "version" "0.7.19" - dependencies: - "@substrate/connect-extension-protocol" "^1.0.1" - "@substrate/smoldot-light" "0.7.9" - "eventemitter3" "^4.0.7" - -"@substrate/smoldot-light@0.7.9": - "integrity" "sha512-HP8iP7sFYlpSgjjbo0lqHyU+gu9lL2hbDNce6dWk5/10mFFF9jKIFGfui4zCecUY808o/Go9pan/31kMJoLbug==" - "resolved" "https://registry.npmjs.org/@substrate/smoldot-light/-/smoldot-light-0.7.9.tgz" - "version" "0.7.9" - dependencies: - "pako" "^2.0.4" - "ws" "^8.8.1" - -"@substrate/ss58-registry@^1.38.0": - "integrity" "sha512-qZYpuE6n+mwew+X71dOur/CbMXj6rNW27o63JeJwdQH/GvcSKm3JLNhd+bGzwUKg0D/zD30Qc6p4JykArzM+tA==" - "resolved" "https://registry.npmjs.org/@substrate/ss58-registry/-/ss58-registry-1.39.0.tgz" - "version" "1.39.0" - -"@types/bn.js@^5.1.1": - "integrity" "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==" - "resolved" "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "@types/node" "*" - -"@types/node-fetch@^2.6.2": - "integrity" "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==" - "resolved" "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz" - "version" "2.6.2" - dependencies: - "@types/node" "*" - "form-data" "^3.0.0" - -"@types/node@*", "@types/node@>=12.0.0": - "integrity" "sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-18.15.3.tgz" - "version" "18.15.3" - -"@types/websocket@^1.0.5": - "integrity" "sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==" - "resolved" "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "@types/node" "*" - -"assert@^2.0.0": - "integrity" "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==" - "resolved" "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "es6-object-assign" "^1.1.0" - "is-nan" "^1.2.1" - "object-is" "^1.0.1" - "util" "^0.12.0" - -"asynckit@^0.4.0": - "integrity" "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - "version" "0.4.0" - -"available-typed-arrays@^1.0.5": - "integrity" "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" - "resolved" "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" - "version" "1.0.5" - -"axios@^0.21.4": - "integrity" "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==" - "resolved" "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz" - "version" "0.21.4" - dependencies: - "follow-redirects" "^1.14.0" - -"bn.js@^5.2.1": - "integrity" "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" - "version" "5.2.1" - -"bufferutil@^4.0.1": - "integrity" "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==" - "resolved" "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz" - "version" "4.0.7" - dependencies: - "node-gyp-build" "^4.3.0" - -"call-bind@^1.0.0", "call-bind@^1.0.2": - "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" - "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "function-bind" "^1.1.1" - "get-intrinsic" "^1.0.2" - -"combined-stream@^1.0.8": - "integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" - "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" - "version" "1.0.8" - dependencies: - "delayed-stream" "~1.0.0" - -"d@^1.0.1", "d@1": - "integrity" "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==" - "resolved" "https://registry.npmjs.org/d/-/d-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "es5-ext" "^0.10.50" - "type" "^1.0.1" - -"data-uri-to-buffer@^4.0.0": - "integrity" "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" - "resolved" "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz" - "version" "4.0.1" - -"debug@^2.2.0": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" - dependencies: - "ms" "2.0.0" - -"debug@^4.1.0": - "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - "version" "4.3.4" - dependencies: - "ms" "2.1.2" - -"define-properties@^1.1.3": - "integrity" "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==" - "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "has-property-descriptors" "^1.0.0" - "object-keys" "^1.1.1" - -"delayed-stream@~1.0.0": - "integrity" "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - "version" "1.0.0" - -"dotenv@^16.0.3": - "integrity" "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" - "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz" - "version" "16.0.3" - -"ed2curve@^0.3.0": - "integrity" "sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ==" - "resolved" "https://registry.npmjs.org/ed2curve/-/ed2curve-0.3.0.tgz" - "version" "0.3.0" - dependencies: - "tweetnacl" "1.x.x" - -"es5-ext@^0.10.35", "es5-ext@^0.10.50": - "integrity" "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==" - "resolved" "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz" - "version" "0.10.62" - dependencies: - "es6-iterator" "^2.0.3" - "es6-symbol" "^3.1.3" - "next-tick" "^1.1.0" - -"es6-iterator@^2.0.3": - "integrity" "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==" - "resolved" "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" - "version" "2.0.3" - dependencies: - "d" "1" - "es5-ext" "^0.10.35" - "es6-symbol" "^3.1.1" - -"es6-object-assign@^1.1.0": - "integrity" "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" - "resolved" "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz" - "version" "1.1.0" - -"es6-symbol@^3.1.1", "es6-symbol@^3.1.3": - "integrity" "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==" - "resolved" "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz" - "version" "3.1.3" - dependencies: - "d" "^1.0.1" - "ext" "^1.1.2" - -"eventemitter3@^4.0.7": - "integrity" "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" - "version" "4.0.7" - -"eventemitter3@^5.0.0": - "integrity" "sha512-riuVbElZZNXLeLEoprfNYoDSwTBRR44X3mnhdI1YcnENpWTCsTTVZ2zFuqQcpoyqPQIUXdiPEU0ECAq0KQRaHg==" - "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.0.tgz" - "version" "5.0.0" - -"ext@^1.1.2": - "integrity" "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==" - "resolved" "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz" - "version" "1.7.0" - dependencies: - "type" "^2.7.2" - -"fetch-blob@^3.1.2", "fetch-blob@^3.1.4": - "integrity" "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==" - "resolved" "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz" - "version" "3.2.0" - dependencies: - "node-domexception" "^1.0.0" - "web-streams-polyfill" "^3.0.3" - -"follow-redirects@^1.14.0": - "integrity" "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" - "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" - "version" "1.15.2" - -"for-each@^0.3.3": - "integrity" "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==" - "resolved" "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" - "version" "0.3.3" - dependencies: - "is-callable" "^1.1.3" - -"form-data@^3.0.0": - "integrity" "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==" - "resolved" "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "asynckit" "^0.4.0" - "combined-stream" "^1.0.8" - "mime-types" "^2.1.12" - -"formdata-polyfill@^4.0.10": - "integrity" "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==" - "resolved" "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz" - "version" "4.0.10" - dependencies: - "fetch-blob" "^3.1.2" - -"function-bind@^1.1.1": - "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" - "version" "1.1.1" - -"get-intrinsic@^1.0.2", "get-intrinsic@^1.1.1", "get-intrinsic@^1.1.3": - "integrity" "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==" - "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "function-bind" "^1.1.1" - "has" "^1.0.3" - "has-symbols" "^1.0.3" - -"gopd@^1.0.1": - "integrity" "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==" - "resolved" "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "get-intrinsic" "^1.1.3" - -"has-property-descriptors@^1.0.0": - "integrity" "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==" - "resolved" "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "get-intrinsic" "^1.1.1" - -"has-symbols@^1.0.2", "has-symbols@^1.0.3": - "integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" - "version" "1.0.3" - -"has-tostringtag@^1.0.0": - "integrity" "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==" - "resolved" "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "has-symbols" "^1.0.2" - -"has@^1.0.3": - "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" - "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "function-bind" "^1.1.1" - -"inherits@^2.0.3": - "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - "version" "2.0.4" - -"is-arguments@^1.0.4": - "integrity" "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==" - "resolved" "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-callable@^1.1.3": - "integrity" "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" - "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" - "version" "1.2.7" - -"is-generator-function@^1.0.7": - "integrity" "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==" - "resolved" "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" - "version" "1.0.10" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-nan@^1.2.1": - "integrity" "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==" - "resolved" "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "call-bind" "^1.0.0" - "define-properties" "^1.1.3" - -"is-typed-array@^1.1.10", "is-typed-array@^1.1.3": - "integrity" "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==" - "resolved" "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz" - "version" "1.1.10" - dependencies: - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.2" - "for-each" "^0.3.3" - "gopd" "^1.0.1" - "has-tostringtag" "^1.0.0" - -"is-typedarray@^1.0.0": - "integrity" "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - "resolved" "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" - "version" "1.0.0" - -"json-stringify-safe@^5.0.1": - "integrity" "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - "resolved" "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - "version" "5.0.1" - -"lodash@^4.17.21": - "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - "version" "4.17.21" - -"mime-db@1.52.0": - "integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - "version" "1.52.0" - -"mime-types@^2.1.12": - "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" - "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - "version" "2.1.35" - dependencies: - "mime-db" "1.52.0" - -"mock-socket@^9.2.1": - "integrity" "sha512-aw9F9T9G2zpGipLLhSNh6ZpgUyUl4frcVmRN08uE1NWPWg43Wx6+sGPDbQ7E5iFZZDJW5b5bypMeAEHqTbIFag==" - "resolved" "https://registry.npmjs.org/mock-socket/-/mock-socket-9.2.1.tgz" - "version" "9.2.1" - -"ms@2.0.0": - "integrity" "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - "version" "2.0.0" - -"ms@2.1.2": - "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - "version" "2.1.2" - -"next-tick@^1.1.0": - "integrity" "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - "resolved" "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz" - "version" "1.1.0" - -"nock@^13.3.0": - "integrity" "sha512-HHqYQ6mBeiMc+N038w8LkMpDCRquCHWeNmN3v6645P3NhN2+qXOBqvPqo7Rt1VyCMzKhJ733wZqw5B7cQVFNPg==" - "resolved" "https://registry.npmjs.org/nock/-/nock-13.3.0.tgz" - "version" "13.3.0" - dependencies: - "debug" "^4.1.0" - "json-stringify-safe" "^5.0.1" - "lodash" "^4.17.21" - "propagate" "^2.0.0" - -"node-domexception@^1.0.0": - "integrity" "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" - "resolved" "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz" - "version" "1.0.0" - -"node-fetch@^3.3.0": - "integrity" "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==" - "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz" - "version" "3.3.1" - dependencies: - "data-uri-to-buffer" "^4.0.0" - "fetch-blob" "^3.1.4" - "formdata-polyfill" "^4.0.10" - -"node-gyp-build@^4.3.0": - "integrity" "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==" - "resolved" "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz" - "version" "4.6.0" - -"object-is@^1.0.1": - "integrity" "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==" - "resolved" "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" - "version" "1.1.5" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - -"object-keys@^1.1.1": - "integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" - "version" "1.1.1" - -"pako@^2.0.4": - "integrity" "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" - "resolved" "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz" - "version" "2.1.0" - -"propagate@^2.0.0": - "integrity" "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==" - "resolved" "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz" - "version" "2.0.1" - -"regenerator-runtime@^0.13.11": - "integrity" "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" - "version" "0.13.11" - -"rxjs@^7.8.0": - "integrity" "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==" - "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz" - "version" "7.8.0" - dependencies: - "tslib" "^2.1.0" - -"tslib@^2.1.0": - "integrity" "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz" - "version" "2.5.0" - -"tweetnacl@^1.0.3", "tweetnacl@1.x.x": - "integrity" "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" - "resolved" "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz" - "version" "1.0.3" - -"type@^1.0.1": - "integrity" "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - "resolved" "https://registry.npmjs.org/type/-/type-1.2.0.tgz" - "version" "1.2.0" - -"type@^2.7.2": - "integrity" "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - "resolved" "https://registry.npmjs.org/type/-/type-2.7.2.tgz" - "version" "2.7.2" - -"typedarray-to-buffer@^3.1.5": - "integrity" "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==" - "resolved" "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" - "version" "3.1.5" - dependencies: - "is-typedarray" "^1.0.0" - -"utf-8-validate@^5.0.2", "utf-8-validate@>=5.0.2": - "integrity" "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==" - "resolved" "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz" - "version" "5.0.10" - dependencies: - "node-gyp-build" "^4.3.0" - -"util@^0.12.0": - "integrity" "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==" - "resolved" "https://registry.npmjs.org/util/-/util-0.12.5.tgz" - "version" "0.12.5" - dependencies: - "inherits" "^2.0.3" - "is-arguments" "^1.0.4" - "is-generator-function" "^1.0.7" - "is-typed-array" "^1.1.3" - "which-typed-array" "^1.1.2" - -"web-streams-polyfill@^3.0.3": - "integrity" "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" - "resolved" "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz" - "version" "3.2.1" - -"websocket@^1.0.34": - "integrity" "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==" - "resolved" "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz" - "version" "1.0.34" - dependencies: - "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-typed-array@^1.1.2": - "integrity" "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==" - "resolved" "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz" - "version" "1.1.9" - dependencies: - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.2" - "for-each" "^0.3.3" - "gopd" "^1.0.1" - "has-tostringtag" "^1.0.0" - "is-typed-array" "^1.1.10" - -"ws@^8.8.1": - "integrity" "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==" - "resolved" "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz" - "version" "8.13.0" - -"yaeti@^0.0.6": - "integrity" "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==" - "resolved" "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz" - "version" "0.0.6" diff --git a/docker/tangle-parachain-with-relayer/README.md b/docker/tangle-parachain-with-relayer/README.md deleted file mode 100644 index c2d93ddd1..000000000 --- a/docker/tangle-parachain-with-relayer/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# Tangle Relayer + Parachain Docker - -## Installation Instructions - -A Tangle parachain node and relayer can be spun up quickly using Docker. At the time of writing, the Docker version used was 19.03.6. When connecting to testnet, it will take a few hours/days to completely sync chain. Make sure that your system meets the requirements. - -Create a local directory to store the chain data: - -```bash -mkdir /var/lib/tangle/ -``` - -## Run via Docker Compose : - -The docker-compose file will spin up a container running tangle standalone node and another running relayer, but you have to set the following environment variables. -Remember to customize your the values depending on your environment and then copy paste this to CLI. - -```bash -export TANGLE_RELEASE_VERSION=main -export RELAYER_RELEASE_VERSION=0.5.0-rc1 -export BASE_PATH=/tmp/data/ -export CHAINSPEC_PATH=/tmp/chainspec -export WEBB_PORT=9955 -``` - -After that run : - -```bash -docker compose up -d -``` \ No newline at end of file diff --git a/docker/tangle-parachain-with-relayer/docker-compose.yml b/docker/tangle-parachain-with-relayer/docker-compose.yml deleted file mode 100644 index 989e362e6..000000000 --- a/docker/tangle-parachain-with-relayer/docker-compose.yml +++ /dev/null @@ -1,63 +0,0 @@ -# This an example of a docker compose file which contains both Relayer and Tangle Node. -version: "3" - -services: - webb_relayer: - # Here you should checkout - # https://github.com/webb-tools/relayer/pkgs/container/relayer/versions?filters%5Bversion_type%5D=tagged - # For the latest stable version. Only use "edge" if - # you know what you are doing, it will use the latest and maybe - # unstable version of the relayer. - image: ghcr.io/webb-tools/relayer:${RELAYER_RELEASE_VERSION} - container_name: webb_relayer - env_file: .env - depends_on: - - caddy - ports: - - "$WEBB_PORT:$WEBB_PORT" - volumes: - - $PWD/config:/config - - relayer_data:/store - restart: always - command: /webb-relayer -vvv -c /config - - tangle_parachain: - # Here you should checkout - # https://github.com/webb-tools/tangle/pkgs/container/tangle-parachain/versions?filters%5Bversion_type%5D=tagged - # For the latest stable version. Only use "main" if - # you know what you are doing, it will use the latest and maybe - # unstable version of the node. - image: ghcr.io/webb-tools/tangle/tangle-parachain:${TANGLE_RELEASE_VERSION} - container_name: tangle_parachain - env_file: .env - ports: - - "30333:30333" - - "9933:9933" - - "9944:9944" - - "9615:9615" - volumes: - - tangle_data:/data - restart: always - entrypoint: /tangle-parachain - command: - [ - "--base-path=/data", - "--collator", - "--chain=/data/chainspecs/parachain.json", - "--", - "--execution=wasm", - ] - -volumes: - relayer_data: - driver: local - driver_opts: - type: none - o: bind - device: $PWD/relayer/data - tangle_data: - driver: local - driver_opts: - type: none - o: bind - device: $PWD/tangle/collator \ No newline at end of file diff --git a/docker/tangle-parachain-with-relayer/env.example b/docker/tangle-parachain-with-relayer/env.example deleted file mode 100644 index d44535b51..000000000 --- a/docker/tangle-parachain-with-relayer/env.example +++ /dev/null @@ -1,5 +0,0 @@ -TANGLE_RELEASE_VERSION=main -RELAYER_RELEASE_VERSION=0.5.0-rc1 -BASE_PATH=/tmp/data/ -CHAINSPEC_PATH=/tmp/chainspec -WEBB_PORT=9955 \ No newline at end of file diff --git a/docker/tangle-parachain/README.md b/docker/tangle-parachain/README.md deleted file mode 100644 index c90e2caae..000000000 --- a/docker/tangle-parachain/README.md +++ /dev/null @@ -1,51 +0,0 @@ -# Tangle Parachain Docker - -## Installation Instructions - -A Tangle parachain node can be spun up quickly using Docker. At the time of writing, the Docker version used was 19.03.6. When connecting to testnet, it will take a few hours/days to completely sync the embedded relay chain. Make sure that your system meets the requirements. - -Create a local directory to store the chain data: - -```bash -mkdir /var/lib/tangle/ -``` - -Download the latest chainspec for parachain testnet - -```bash -https://github.com/webb-tools/tangle/blob/main/chainspecs/tangle-parachain.json -``` - -## Run via CLI : - -You can use the following command to pull the latest image and run from your CLI, remember to set `YOUR-NODE-NAME` in two different places - -```bash -docker run --platform linux/amd64 --network="host" -v "/var/lib/data" --entrypoint ./tangle-parachain \ -ghcr.io/webb-tools/tangle/tangle-parachain:main \ ---base-path=/data \ ---chain dev \ ---name="YOUR-NODE-NAME" \ ---execution wasm \ ---wasm-execution compiled \ ---trie-cache-size 0 \ --- \ ---execution wasm \ ---name="YOUR-NODE-NAME (Embedded Relay)" -``` - -## Run via Docker Compose : - -The docker-compose file will spin up a container running tangle standalone node, but you have to set the following environment variables. -Remember to customize your the values depending on your environment and then copy paste this to CLI. - -```bash -RELEASE_VERSION=main -CHAINSPEC_PATH=/tmp/chainspec/ -``` - -After that run : - -```bash -docker compose up -d -``` \ No newline at end of file diff --git a/docker/tangle-parachain/docker-compose.yml b/docker/tangle-parachain/docker-compose.yml deleted file mode 100644 index 30583ada8..000000000 --- a/docker/tangle-parachain/docker-compose.yml +++ /dev/null @@ -1,28 +0,0 @@ -# Docker compose file to start tangle parachain collator that connects to tangle testnet - -version: "3.7" -services: - - tangle: - image: ghcr.io/webb-tools/tangle/tangle-parachain:${RELEASE_VERSION} - network_mode: host - entrypoint: /tangle-parachain - command: - - "--chain" - - "--base-path=/data" - - "/var/lib/data/arana-alpha.json" - - "--collator" - - "--execution wasm" - - "--wasm-execution compiled" - - "--prometheus-external" - - "--name=YOUR-NODE-NAME" - - "--" - - "--execution wasm" - - "--name=YOUR-NODE-NAME (Relay)" - ports: - - "9944:9944" - - "9615:9615" - - "9933:9933" - - "30333:30333" - volumes: - - ${CHAINSPEC_PATH}:/var/lib/data/arana-alpha.json \ No newline at end of file diff --git a/docker/tangle-parachain/env.example b/docker/tangle-parachain/env.example deleted file mode 100644 index d6a9d82b8..000000000 --- a/docker/tangle-parachain/env.example +++ /dev/null @@ -1,2 +0,0 @@ -RELEASE_VERSION=main -CHAINSPEC_PATH=/tmp/chainspec \ No newline at end of file diff --git a/docker/tangle-standalone/README.md b/docker/tangle-standalone/README.md index c4373716b..2a6b78be9 100644 --- a/docker/tangle-standalone/README.md +++ b/docker/tangle-standalone/README.md @@ -21,8 +21,8 @@ https://github.com/webb-tools/tangle/blob/main/chainspecs/arana-alpha.json You can use the following command to pull the latest image and run from your CLI, remember to set `YOUR-NODE-NAME` ```bash -docker run --platform linux/amd64 --network="host" -v "/var/lib/data" --entrypoint ./tangle-standalone \ -ghcr.io/webb-tools/tangle/tangle-standalone:main \ +docker run --platform linux/amd64 --network="host" -v "/var/lib/data" --entrypoint ./tangle \ +ghcr.io/webb-tools/tangle/tangle:main \ --base-path=/var/lib/tangle/ \ --chain \ --name="YOUR-NODE-NAME" \ diff --git a/docker/tangle-standalone/docker-compose.yml b/docker/tangle-standalone/docker-compose.yml index 6ba4936e4..f840b6d9a 100644 --- a/docker/tangle-standalone/docker-compose.yml +++ b/docker/tangle-standalone/docker-compose.yml @@ -4,9 +4,9 @@ version: "3.7" services: tangle: - image: ghcr.io/webb-tools/tangle/tangle-standalone:${RELEASE_VERSION} + image: ghcr.io/webb-tools/tangle/tangle:${RELEASE_VERSION} network_mode: host - entrypoint: /tangle-standalone + entrypoint: /tangle command: - "--chain" - "/var/lib/data/arana-alpha.json" diff --git a/forge/.gitignore b/forge/.gitignore deleted file mode 100644 index 85198aaa5..000000000 --- a/forge/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -# Compiler files -cache/ -out/ - -# Ignores development broadcast logs -!/broadcast -/broadcast/*/31337/ -/broadcast/**/dry-run/ - -# Docs -docs/ - -# Dotenv file -.env diff --git a/forge/foundry.toml b/forge/foundry.toml deleted file mode 100644 index e883058fb..000000000 --- a/forge/foundry.toml +++ /dev/null @@ -1,6 +0,0 @@ -[profile.default] -src = "src" -out = "out" -libs = ["lib"] - -# See more config options https://github.com/foundry-rs/foundry/tree/master/config diff --git a/forge/lib/forge-std b/forge/lib/forge-std deleted file mode 160000 index 2f1126975..000000000 --- a/forge/lib/forge-std +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2f112697506eab12d433a65fdc31a639548fe365 diff --git a/forge/src/SigningRules.sol b/forge/src/SigningRules.sol deleted file mode 100644 index bf6afcdd5..000000000 --- a/forge/src/SigningRules.sol +++ /dev/null @@ -1,242 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - -import "forge-std/console.sol"; - -enum ProposalStatus {Inactive, Active, Passed, Executed, Cancelled} - -struct Proposal { - ProposalStatus _status; - uint256 _yesVotes; // bitmap, 256 maximum votes - uint8 _yesVotesTotal; - uint40 _proposedBlock; // 1099511627775 maximum block -} - -abstract contract SigningRules { - mapping (bytes32 => mapping (address => bool)) public isValidForwarder; - mapping (bytes32 => address) public admins; - mapping (bytes32 => address[]) public voters; - mapping (bytes32 => uint8) public threshold; - mapping (bytes32 => uint40) public expiry; - mapping (bytes32 => bool) public useDemocracy; - mapping (bytes32 => bool) public useValidators; - - // keccak256(proposalId, phase2JobHash) => Proposal - mapping(bytes32 => Proposal) public _proposals; - - bool public initialized; - // Limit voter number because proposal can fit only so much votes - uint256 constant public MAX_VOTERS = 256; - - event ProposalEvent( - ProposalStatus status, - bytes32 proposalId, - bytes32 phase2JobHash - ); - event ProposalVote( - ProposalStatus status, - bytes32 proposalId, - bytes32 phase2JobHash - ); - event FailedHandlerExecution( - bytes lowLevelData - ); - - modifier onlyAdmin(bytes32 id) { - require(admins[id] == msg.sender, "Only admin can call this function"); - _; - } - - function calculatePhase1ProposalId(bytes32 phase1JobId, bytes memory phase1JobDetails) public pure returns (bytes32) { - return keccak256(abi.encodePacked(phase1JobId, phase1JobDetails)); - } - - function calculatePhase2JobHash(bytes32 proposalId, bytes memory phase2JobDetails) public pure returns (bytes32) { - return keccak256(abi.encodePacked(proposalId, phase2JobDetails)); - } - - function initialize( - bytes32 phase1JobId, - bytes memory phase1JobDetails, - uint8 _threshold, - bool _useDemocracy, - address[] memory _voters, - uint40 _expiry - ) external { - require(_voters.length <= MAX_VOTERS, "Too many voters"); - require(initialized == false, "Already initialized"); - initialized = true; - - // Hash the job data to get the an ID for the job - bytes32 phase1ProposalId = keccak256(abi.encodePacked(phase1JobId, phase1JobDetails)); - threshold[phase1ProposalId] = _threshold; - useDemocracy[phase1ProposalId] = _useDemocracy; - expiry[phase1ProposalId] = _expiry; - admins[phase1ProposalId] = msg.sender; - - // If we have voters, add them to the list. - if (_voters.length > 0) { - voters[phase1ProposalId] = _voters; - } else { - // Otherwise, use the default list of being all validators ECDSA keys. - useValidators[phase1ProposalId] = true; - _refreshVoters(phase1ProposalId); - } - } - - /// @notice Refresh the list of voters for a proposal w/ validators - /// @param phase1ProposalId ID of the proposal to refresh voters for. - function refreshVoters(bytes32 phase1ProposalId) public onlyAdmin(phase1ProposalId) { - _refreshVoters(phase1ProposalId); - } - - /// @notice Set a forwarder to be used. - /// @notice Only callable by an address that currently has the admin role. - /// @param forwarder Forwarder address to be added. - /// @param valid Decision for the specific forwarder. - function adminSetForwarder(bytes32 proposalId, address forwarder, bool valid) external onlyAdmin(proposalId) { - isValidForwarder[proposalId][forwarder] = valid; - } - - function submitGovernanceProposal(bytes32 phase1JobId, bytes memory phase1JobDetails, bytes memory phase2JobDetails) public { - // Validate the governance proposal - bytes32 proposalId = keccak256(abi.encodePacked(phase1JobId, phase1JobDetails)); - bytes32 phase2JobHash = keccak256(abi.encodePacked(proposalId, phase2JobDetails)); - require(_proposals[phase2JobHash]._status != ProposalStatus.Executed, "Proposal must have been executed"); - require(useDemocracy[proposalId], "Proposal must allow using governance"); - // Submit the proposal to governance pallet - _submitToDemocracyPallet(phase1JobId, phase1JobDetails, phase2JobDetails); - } - - function voteProposal(bytes32 phase1JobId, bytes memory phase1JobDetails, bytes memory phase2JobDetails) public { - // Validate the job/details are AUP - require(_isVotableProposal(phase1JobId, phase1JobDetails, phase2JobDetails), "Proposal must be votable"); - // Check that we have received enough votes for the anchor update proposal. - // Execute the proposal happens in `_voteProposal` if this vote tips the balance. - bytes32 proposalId = keccak256(abi.encodePacked(phase1JobId, phase1JobDetails)); - bytes32 phase2JobHash = keccak256(abi.encodePacked(proposalId, phase2JobDetails)); - _voteProposal(proposalId, phase2JobHash); - } - - /// --------------------------------------------------------------------------------------- /// - /// ------------------------------------- Internals --------------------------------------- /// - /// --------------------------------------------------------------------------------------- /// - - /// @notice When called, {_msgSender()} will be marked as voting in favor of proposal. - /// @param phase1ProposalId ID of the proposal to vote on. - /// @notice Proposal must not have already been passed or executed. - /// @notice {_msgSender()} must not have already voted on proposal. - /// @notice Emits {ProposalEvent} event with status indicating the proposal status. - /// @notice Emits {ProposalVote} event. - function _voteProposal(bytes32 phase1ProposalId, bytes32 phase2JobHash) internal { - Proposal storage proposal = _proposals[phase2JobHash]; - if (proposal._status == ProposalStatus.Passed) { - _executeProposal(phase1ProposalId, phase2JobHash); - return; - } - - address sender = _msgSender(phase1ProposalId); - - require(uint(proposal._status) <= 1, "proposal already executed/cancelled"); - require(!_hasVoted(phase1ProposalId, phase2JobHash, sender), "relayer already voted"); - - if (proposal._status == ProposalStatus.Inactive) { - _proposals[phase2JobHash] = Proposal({ - _status : ProposalStatus.Active, - _yesVotes : 0, - _yesVotesTotal : 0, - _proposedBlock : uint40(block.number) // Overflow is desired. - }); - - emit ProposalEvent(ProposalStatus.Active, phase1ProposalId, phase2JobHash); - } else if (uint40(block.number - proposal._proposedBlock) > expiry[phase1ProposalId]) { - // if the number of blocks that has passed since this proposal was - // submitted exceeds the expiry threshold set, cancel the proposal - proposal._status = ProposalStatus.Cancelled; - - emit ProposalEvent(ProposalStatus.Cancelled, phase1ProposalId, phase2JobHash); - } - - if (proposal._status != ProposalStatus.Cancelled) { - proposal._yesVotes = (proposal._yesVotes | _voterBit(phase1ProposalId, sender)); - proposal._yesVotesTotal++; // TODO: check if bit counting is cheaper. - - emit ProposalVote(proposal._status, phase1ProposalId, phase2JobHash); - - // Finalize if _relayerThreshold has been reached - if (proposal._yesVotesTotal >= threshold[phase1ProposalId]) { - proposal._status = ProposalStatus.Passed; - emit ProposalEvent(ProposalStatus.Passed, phase1ProposalId, phase2JobHash); - } - } - _proposals[phase1ProposalId] = proposal; - - if (proposal._status == ProposalStatus.Passed) { - _executeProposal(phase1ProposalId, phase2JobHash); - } - } - - /// @notice Execute a proposal. - /// @param phase1ProposalId ID of the proposal to execute. - /// @notice Proposal must have Passed status. - /// @notice Emits {ProposalEvent} event with status {Executed}. - /// @notice Emits {FailedExecution} event with the failed reason. - function _executeProposal(bytes32 phase1ProposalId, bytes32 phase2JobHash) internal { - Proposal storage proposal = _proposals[phase2JobHash]; - require(proposal._status == ProposalStatus.Passed, "Proposal must have Passed status"); - proposal._status = ProposalStatus.Executed; - emit ProposalEvent(ProposalStatus.Executed, phase1ProposalId, phase2JobHash); - } - - function _voterIndex(bytes32 phase1ProposalId, address voter) internal view returns (uint) { - for (uint i = 0; i < voters[phase1ProposalId].length; i++) { - if (voters[phase1ProposalId][i] == voter) { - return i + 1; - } - } - return MAX_VOTERS; - } - - function _voterBit(bytes32 phase1ProposalId, address voter) internal view returns(uint) { - return uint(1) << (_voterIndex(phase1ProposalId, voter) - 1); - } - - function _hasVoted(bytes32 phase1ProposalId, bytes32 phase2JobHash, address voter) internal view returns(bool) { - Proposal storage proposal = _proposals[phase2JobHash]; - return (_voterBit(phase1ProposalId, voter) & uint(proposal._yesVotes)) > 0; - } - - function _msgSender(bytes32 proposalId) internal view returns (address) { - address signer = msg.sender; - if (msg.data.length >= 20 && isValidForwarder[proposalId][signer]) { - assembly { - signer := shr(96, calldataload(sub(calldatasize(), 20))) - } - } - return signer; - } - - /// --------------------------------------------------------------------------------------- /// - /// -------------------------------------- Virtuals --------------------------------------- /// - /// --------------------------------------------------------------------------------------- /// - - function _isVotableProposal(bytes32 phase1JobId, bytes memory phase1JobDetails, bytes memory phase2JobDetails) internal virtual returns (bool); - function _refreshVoters(bytes32 proposalId) internal virtual; - function _submitToDemocracyPallet(bytes32 phase1JobId, bytes memory phase1JobDetails, bytes memory phase2JobDetails) internal virtual; - - /// --------------------------------------------------------------------------------------- /// - /// -------------------------------------- Helpers ---------------------------------------- /// - /// --------------------------------------------------------------------------------------- /// - - function getProposalState(bytes32 phase2JobHash) public view returns (ProposalStatus) { - return _proposals[phase2JobHash]._status; - } - - function getProposalYesVotes(bytes32 phase2JobHash) public view returns (uint256) { - return _proposals[phase2JobHash]._yesVotes; - } - - function getProposalYesVotesTotal(bytes32 phase2JobHash) public view returns (uint8) { - return _proposals[phase2JobHash]._yesVotesTotal; - } -} \ No newline at end of file diff --git a/forge/test/SigningRules.sol b/forge/test/SigningRules.sol deleted file mode 100644 index b3d149424..000000000 --- a/forge/test/SigningRules.sol +++ /dev/null @@ -1,145 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - -import "forge-std/Test.sol"; -import "forge-std/console.sol"; -import "../src/SigningRules.sol"; -import { Proposal, ProposalStatus } from "../src/SigningRules.sol"; - -contract VotableSigningRules is SigningRules { - function _isVotableProposal(bytes32 phase1JobId, bytes memory phase1JobDetails, bytes memory phase2JobDetails) override pure internal returns (bool) { - require(phase1JobId != 0x0, "Phase 1 job ID must be 0x0"); - require(phase1JobDetails.length != 0, "Job details must be non-empty"); - require(phase2JobDetails.length != 0, "Job details must be non-empty"); - return true; - } - - function _refreshVoters(bytes32 proposalId) override internal { - // Do nothing - } - - function _submitToDemocracyPallet(bytes32 phase1JobId, bytes memory phase1JobDetails, bytes memory phase2JobDetails) override internal { - // Do nothing - } -} - -contract SigningRulesTest is Test { - VotableSigningRules public rules; - - function setUp() public { - rules = new VotableSigningRules(); - } - - function test_setup() public { - bytes32 phase1JobId = "1"; - bytes memory phase1JobDetails = "test"; - uint8 threshold = 1; - bool useDemocracy = false; - address[] memory voters = new address[](0); - uint40 expiry = 1000; - bytes32 proposalId = rules.calculatePhase1ProposalId(phase1JobId, phase1JobDetails); - rules.initialize(phase1JobId, phase1JobDetails, threshold, useDemocracy, voters, expiry); - assertTrue(rules.initialized()); - assertTrue(rules.threshold(proposalId) == threshold); - assertTrue(rules.useDemocracy(proposalId) == useDemocracy); - assertTrue(rules.expiry(proposalId) == expiry); - assertTrue(rules.useValidators(proposalId) == true); - assertTrue(rules.admins(proposalId) == address(this)); - } - - function test_submitAndVoteOnProposal() public { - bytes32 phase1JobId = "1"; - bytes memory phase1JobDetails = "test"; - bytes memory phase2JobDetails = "test"; - uint8 threshold = 2; - bool useDemocracy = false; - address[] memory voters = new address[](2); - voters[0] = vm.addr(1); - voters[1] = vm.addr(2); - uint40 expiry = 1000; - bytes32 phase1ProposalId = rules.calculatePhase1ProposalId(phase1JobId, phase1JobDetails); - rules.initialize(phase1JobId, phase1JobDetails, threshold, useDemocracy, voters, expiry); - vm.prank(vm.addr(1)); - rules.voteProposal(phase1JobId, phase1JobDetails, phase2JobDetails); - assertTrue(rules.getProposalState(phase1ProposalId) == ProposalStatus.Active); - - vm.expectRevert("relayer already voted"); - vm.prank(vm.addr(1)); - rules.voteProposal(phase1JobId, phase1JobDetails, phase2JobDetails); - - vm.prank(vm.addr(2)); - rules.voteProposal(phase1JobId, phase1JobDetails, phase2JobDetails); - assertTrue(rules.getProposalState(phase1ProposalId) == ProposalStatus.Passed); - } - - function test_submitAndVote255Participants() public { - bytes32 phase1JobId = "1"; - bytes memory phase1JobDetails = "test"; - bytes memory phase2JobDetails = "test"; - uint8 threshold = 255; - bool useDemocracy = false; - address[] memory voters = new address[](255); - for (uint8 i = 0; i < 255; i++) { - voters[i] = vm.addr(i + 1); - } - uint40 expiry = 1000; - bytes32 phase1ProposalId = rules.calculatePhase1ProposalId(phase1JobId, phase1JobDetails); - rules.initialize(phase1JobId, phase1JobDetails, threshold, useDemocracy, voters, expiry); - for (uint8 i = 0; i < 255; i++) { - vm.prank(vm.addr(i + 1)); - rules.voteProposal(phase1JobId, phase1JobDetails, phase2JobDetails); - - if (i < 254) { - assertTrue(rules.getProposalState(phase1ProposalId) == ProposalStatus.Active); - } - } - assertTrue(rules.getProposalState(phase1ProposalId) == ProposalStatus.Passed); - } - - function test_submitVoteAndExpireProposal() public { - bytes32 phase1JobId = "1"; - bytes memory phase1JobDetails = "test"; - bytes memory phase2JobDetails = "test"; - uint8 threshold = 2; - bool useDemocracy = false; - address[] memory voters = new address[](2); - voters[0] = vm.addr(1); - voters[1] = vm.addr(2); - uint40 expiry = 10; - uint nowBlockNumber = block.number; - bytes32 phase1ProposalId = rules.calculatePhase1ProposalId(phase1JobId, phase1JobDetails); - rules.initialize(phase1JobId, phase1JobDetails, threshold, useDemocracy, voters, expiry); - vm.prank(vm.addr(1)); - rules.voteProposal(phase1JobId, phase1JobDetails, phase2JobDetails); - assertTrue(rules.getProposalState(phase1ProposalId) == ProposalStatus.Active); - - vm.roll(nowBlockNumber + expiry + 1); - vm.prank(vm.addr(2)); - rules.voteProposal(phase1JobId, phase1JobDetails, phase2JobDetails); - assertTrue(rules.getProposalState(phase1ProposalId) == ProposalStatus.Cancelled); - vm.expectRevert("proposal already executed/cancelled"); - vm.prank(vm.addr(2)); - rules.voteProposal(phase1JobId, phase1JobDetails, phase2JobDetails); - } - - function test_adminFunctions() public { - bytes32 phase1JobId = "1"; - bytes memory phase1JobDetails = "test"; - uint8 threshold = 2; - bool useDemocracy = false; - address[] memory voters = new address[](2); - voters[0] = vm.addr(1); - voters[1] = vm.addr(2); - uint40 expiry = 1000; - bytes32 phase1ProposalId = rules.calculatePhase1ProposalId(phase1JobId, phase1JobDetails); - rules.initialize(phase1JobId, phase1JobDetails, threshold, useDemocracy, voters, expiry); - - rules.adminSetForwarder(phase1ProposalId, vm.addr(100), true); - assertTrue(rules.isValidForwarder(phase1ProposalId, vm.addr(100))); - assertFalse(rules.isValidForwarder(phase1ProposalId, vm.addr(101))); - - vm.expectRevert("Only admin can call this function"); - vm.prank(vm.addr(1)); - rules.adminSetForwarder(phase1ProposalId, vm.addr(100), false); - } -} diff --git a/light-client-configs/LIGHT-CLIENT.md b/light-client-configs/LIGHT-CLIENT.md deleted file mode 100644 index 76507edee..000000000 --- a/light-client-configs/LIGHT-CLIENT.md +++ /dev/null @@ -1,36 +0,0 @@ -## Running Tangle Node with Webb Light Client Relayer - -Following these steps will allow you to run Tangle Standalone Node with Webb Light Client Relayer included. - - -1. Compile the tangle standalone node with light client feature -```sh -cargo build --release -p tangle-standalone --features light-client -``` -2. Set you Infura API Key - -```bash -export ETH1_INFURA_API_KEY="your_infura_key" -``` -3. Create your Relayer configuration directory - -```sh -mkdir -p light-client-configs -touch light-client-configs/block-relay-config.toml -touch light-client-configs/init-pallet-config.toml -``` - -> You can check sample configuration files here [Light Client Relayer configuration](../light-client-configs/block-relay-config.toml) - - -4. Start Tangle Node with the light client relayer config. -Make sure to provide correct path for configuration files - -```sh -./target/release/tangle-standalone --tmp --chain local --validator --alice \ ---rpc-cors all --rpc-methods=unsafe --rpc-port 9944 \ ---light-client-init-pallet-config-path=./light-client-configs/init-pallet-config.toml \ ---light-client-relay-config-path=./light-client-configs/block-relay-config.toml \ -``` - -Now, you can see light client submitting beacon headers to tangle. diff --git a/light-client-configs/block-relay-config.toml b/light-client-configs/block-relay-config.toml deleted file mode 100644 index 837913352..000000000 --- a/light-client-configs/block-relay-config.toml +++ /dev/null @@ -1,19 +0,0 @@ -# Eth2substrate block relay configuration - -beacon_endpoint = "https://lodestar-mainnet.chainsafe.io" -eth1_endpoint = "https://mainnet.infura.io/v3/ETH1_INFURA_API_KEY" -network_name = "Mainnet" -headers_batch_size = 33 -substrate_endpoint = "ws://127.0.0.1:9944" -path_to_signer_secret_key = "/tmp/empty/secret_key" -ethereum_network = "Mainnet" -interval_between_light_client_updates_submission_in_epochs = 1 -max_blocks_for_finalization = 5000 -include_next_sync_committee_to_light_client = false -eth_requests_timeout_seconds = 30 -state_requests_timeout_seconds = 1000 -substrate_requests_timeout_seconds = 30 -sleep_time_on_sync_secs = 20 -sleep_time_after_submission_secs = 5 -hashes_gc_threshold = 51000 -beacon_rpc_version = "V1_5" diff --git a/light-client-configs/init-pallet-config.toml b/light-client-configs/init-pallet-config.toml deleted file mode 100644 index 9b875847e..000000000 --- a/light-client-configs/init-pallet-config.toml +++ /dev/null @@ -1,12 +0,0 @@ -ethereum_network = "Mainnet" -beacon_endpoint = "https://lodestar-mainnet.chainsafe.io" -eth1_endpoint = "https://mainnet.infura.io/v3/ETH1_INFURA_API_KEY" -eth_requests_timeout_seconds = 30 -validate_updates = true -verify_bls_signature = true -hashes_gc_threshold = 51000 -beacon_rpc_version = "V1_5" - -substrate_network_name = "Tangle" -substrate_endpoint = "ws://127.0.0.1:9944" -path_to_signer_secret_key = "/tmp/empty/secret_key" diff --git a/node/Cargo.toml b/node/Cargo.toml index 30e411494..a34c58c79 100644 --- a/node/Cargo.toml +++ b/node/Cargo.toml @@ -1,13 +1,13 @@ [package] -name = "tangle-standalone" +name = "tangle" +build = "build.rs" +description = "Tangle Standalone chain node" version = { workspace = true } authors = { workspace = true } -build = "build.rs" edition = { workspace = true } -homepage = { workspace = true } license = { workspace = true } +homepage = { workspace = true } repository = { workspace = true } -description = "A fresh FRAME-based Substrate node, ready for hacking." [package.metadata.wasm-pack.profile.release] # `wasm-opt` has some problems on linux, see @@ -15,7 +15,7 @@ description = "A fresh FRAME-based Substrate node, ready for hacking." wasm-opt = false [[bin]] -name = "tangle-standalone" +name = "tangle" [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] @@ -24,60 +24,52 @@ targets = ["x86_64-unknown-linux-gnu"] substrate-build-script-utils = { workspace = true } [dependencies] +serde_json = { workspace = true } +tokio = { workspace = true } clap = { workspace = true } +parity-scale-codec = { workspace = true } futures = { workspace = true } hex-literal = { workspace = true } log = { workspace = true } -parity-scale-codec = { workspace = true } rand = { workspace = true } -serde_json = { workspace = true } -tokio = { workspace = true } - -# Light client dependencies -pallet-eth2-light-client-relayer-gadget = { workspace = true, optional = true } -pallet-eth2-light-client-relayer-gadget-cli = { workspace = true, optional = true } -webb-consensus-types = { workspace = true } -webb-proposals = { workspace = true } - -tangle-relayer-gadget = { workspace = true, optional = true } -tangle-relayer-gadget-cli = { workspace = true, optional = true } # Substrate dependencies +sc-cli = { workspace = true } +sc-executor = { workspace = true } +sc-offchain = { workspace = true } +sc-keystore = { workspace = true } +sc-service = { workspace = true } +sp-core = { workspace = true } frame-benchmarking = { workspace = true } frame-benchmarking-cli = { workspace = true } frame-system = { workspace = true } sc-basic-authorship = { workspace = true } -sc-cli = { workspace = true } sc-client-api = { workspace = true } sc-consensus = { workspace = true } -sc-consensus-aura = { workspace = true } -sc-consensus-grandpa = { workspace = true } -sc-executor = { workspace = true } -sc-keystore = { workspace = true } +sc-consensus-babe = { workspace = true } sc-network = { workspace = true } -sc-network-sync = { workspace = true } -sc-offchain = { workspace = true } -sc-service = { workspace = true } sc-telemetry = { workspace = true } sc-transaction-pool = { workspace = true } -sp-consensus-aura = { workspace = true } -sp-core = { workspace = true } +sp-consensus-babe = { workspace = true } sp-inherents = { workspace = true } sp-keyring = { workspace = true } sp-runtime = { workspace = true } sp-trie = { workspace = true } +sc-consensus-grandpa = { workspace = true } +sc-network-sync = { workspace = true } +webb-consensus-types = { workspace = true } +webb-proposals = { workspace = true } sc-chain-spec = { workspace = true } -sc-consensus-manual-seal = { workspace = true } sc-rpc = { workspace = true } sc-rpc-api = { workspace = true } -sp-application-crypto = { workspace = true } sp-api = { workspace = true } sp-block-builder = { workspace = true } sp-blockchain = { workspace = true } sp-timestamp = { workspace = true } -substrate-frame-rpc-system = { workspace = true } substrate-prometheus-endpoint = { workspace = true } +substrate-frame-rpc-system = { workspace = true } +sc-consensus-manual-seal = { workspace = true } # RPC related dependencies jsonrpsee = { workspace = true } @@ -88,7 +80,6 @@ sc-transaction-pool-api = { workspace = true } wasmer = { version = "2.3" } # Frontier -fc-api = { workspace = true } fc-cli = { workspace = true } fc-consensus = { workspace = true } fc-db = { workspace = true } @@ -97,44 +88,52 @@ fc-rpc = { workspace = true, features = ["rpc-binary-search-estimate"] } fc-rpc-core = { workspace = true } fc-storage = { workspace = true } fp-account = { workspace = true } +fc-api = { workspace = true } fp-dynamic-fee = { workspace = true, features = ["default"] } fp-evm = { workspace = true, features = ["default"] } fp-rpc = { workspace = true, features = ["default"] } -hex = { workspace = true } -sp-keystore = { workspace = true } -primitives-ext = { workspace = true } +rpc-trace = { workspace = true } rpc-debug = { workspace = true } +rpc-txpool = { workspace = true } rpc-primitives-debug = { workspace = true } rpc-primitives-txpool = { workspace = true } -rpc-trace = { workspace = true } -rpc-txpool = { workspace = true } - -tangle-mainnet-runtime = { workspace = true } +primitives-ext = { workspace = true } +sp-transaction-storage-proof = { workspace = true } +sc-statement-store = { workspace = true } +sp-statement-store = { workspace = true } +sc-consensus-slots = { workspace = true } +sp-consensus = { workspace = true } +sp-keystore = { workspace = true } +sc-consensus-babe-rpc = { workspace = true } +sc-consensus-grandpa-rpc = { workspace = true } +mmr-rpc = { workspace = true } +sc-rpc-spec-v2 = { workspace = true } +substrate-state-trie-migration-rpc = { workspace = true } +sc-sync-state-rpc = { workspace = true } +sc-sysinfo = { workspace = true } +sc-authority-discovery = { workspace = true } +sc-storage-monitor = { workspace = true } +sc-network-statement = { workspace = true } +sc-network-common = { workspace = true } +frame-system-rpc-runtime-api = { workspace = true } +tangle-testnet-runtime = { workspace = true, optional = true } +tangle-runtime = { workspace = true } tangle-primitives = { workspace = true } -tangle-testnet-runtime = { workspace = true } [features] default = ["with-rocksdb-weights", "rocksdb", "sql"] runtime-benchmarks = ["tangle-testnet-runtime/runtime-benchmarks"] -integration-tests = ["tangle-testnet-runtime/integration-tests"] with-rocksdb-weights = ["tangle-testnet-runtime/with-rocksdb-weights"] with-paritydb-weights = ["tangle-testnet-runtime/with-paritydb-weights"] rocksdb = [ - "sc-cli/rocksdb", - "sc-service/rocksdb", - "fc-cli/rocksdb", - "fc-db/rocksdb", - "fc-mapping-sync/rocksdb", - "fc-rpc/rocksdb", + "sc-cli/rocksdb", + "sc-service/rocksdb", + "fc-cli/rocksdb", + "fc-db/rocksdb", + "fc-mapping-sync/rocksdb", + "fc-rpc/rocksdb", ] sql = ["fc-db/sql", "fc-mapping-sync/sql"] -txpool = ["fc-rpc/txpool"] -light-client = [ - "pallet-eth2-light-client-relayer-gadget", - "pallet-eth2-light-client-relayer-gadget-cli", -] -relayer = [ - "tangle-relayer-gadget", - "tangle-relayer-gadget-cli", -] +testnet = ["tangle-testnet-runtime"] +txpool = ["fc-rpc/txpool"] \ No newline at end of file diff --git a/node/src/benchmarking.rs b/node/src/benchmarking.rs deleted file mode 100644 index 4cc9ed325..000000000 --- a/node/src/benchmarking.rs +++ /dev/null @@ -1,117 +0,0 @@ -// This file is part of Substrate. - -// Copyright (C) 2022 Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -//! Setup code for [`super::command`] which would otherwise bloat that module. -//! -//! Should only be used for benchmarking as it may break in other contexts. - -use crate::service::{create_extrinsic, FullClient}; - -use sc_cli::Result; -use sp_inherents::{InherentData, InherentDataProvider}; -use sp_keyring::Sr25519Keyring; -use sp_runtime::OpaqueExtrinsic; -use std::{sync::Arc, time::Duration}; -use tangle_testnet_runtime::{AccountId, Balance, BalancesCall, SystemCall}; - -/// Generates `System::Remark` extrinsics for the benchmarks. -/// -/// Note: Should only be used for benchmarking. -pub struct RemarkBuilder { - client: Arc, -} - -impl RemarkBuilder { - /// Creates a new [`Self`] from the given client. - pub fn new(client: Arc) -> Self { - Self { client } - } -} - -impl frame_benchmarking_cli::ExtrinsicBuilder for RemarkBuilder { - fn pallet(&self) -> &str { - "system" - } - - fn extrinsic(&self) -> &str { - "remark" - } - - fn build(&self, nonce: u32) -> std::result::Result { - let acc = Sr25519Keyring::Bob.pair(); - let extrinsic: OpaqueExtrinsic = create_extrinsic( - self.client.as_ref(), - acc, - SystemCall::remark { remark: vec![] }, - Some(nonce), - ) - .into(); - - Ok(extrinsic) - } -} - -/// Generates `Balances::TransferKeepAlive` extrinsics for the benchmarks. -/// -/// Note: Should only be used for benchmarking. -pub struct TransferKeepAliveBuilder { - client: Arc, - dest: AccountId, - value: Balance, -} - -impl TransferKeepAliveBuilder { - /// Creates a new [`Self`] from the given client. - pub fn new(client: Arc, dest: AccountId, value: Balance) -> Self { - Self { client, dest, value } - } -} - -impl frame_benchmarking_cli::ExtrinsicBuilder for TransferKeepAliveBuilder { - fn pallet(&self) -> &str { - "balances" - } - - fn extrinsic(&self) -> &str { - "transfer_keep_alive" - } - - fn build(&self, nonce: u32) -> std::result::Result { - let acc = Sr25519Keyring::Bob.pair(); - let extrinsic: OpaqueExtrinsic = create_extrinsic( - self.client.as_ref(), - acc, - BalancesCall::transfer_keep_alive { dest: self.dest.clone().into(), value: self.value }, - Some(nonce), - ) - .into(); - - Ok(extrinsic) - } -} - -/// Generates inherent data for the `benchmark overhead` command. -pub fn inherent_benchmark_data() -> Result { - let mut inherent_data = InherentData::new(); - let d = Duration::from_millis(0); - let timestamp = sp_timestamp::InherentDataProvider::new(d.into()); - - futures::executor::block_on(timestamp.provide_inherent_data(&mut inherent_data)) - .map_err(|e| format!("creating inherent data: {e}"))?; - Ok(inherent_data) -} diff --git a/node/src/chainspec/mainnet.rs b/node/src/chainspec/mainnet.rs index 17320d78d..a5ba3d298 100644 --- a/node/src/chainspec/mainnet.rs +++ b/node/src/chainspec/mainnet.rs @@ -12,23 +12,21 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::collections::BTreeMap; - use crate::{ - distributions::{combine_distributions, develop, mainnet, testnet}, - mainnet_fixtures::{get_root_key, get_standalone_bootnodes}, + distributions::{combine_distributions, mainnet}, + mainnet_fixtures::{get_bootnodes, get_initial_authorities, get_root_key}, }; use core::marker::PhantomData; use pallet_im_online::sr25519::AuthorityId as ImOnlineId; use sc_consensus_grandpa::AuthorityId as GrandpaId; use sc_service::ChainType; -use sp_consensus_aura::sr25519::AuthorityId as AuraId; +use sp_consensus_babe::AuthorityId as BabeId; use sp_core::{sr25519, Pair, Public, H160}; use sp_runtime::traits::{IdentifyAccount, Verify}; -use tangle_mainnet_runtime::{ - AccountId, Balance, BalancesConfig, EVMChainIdConfig, EVMConfig, ElectionsConfig, - Eth2ClientConfig, ImOnlineConfig, MaxNominations, Perbill, RuntimeGenesisConfig, SessionConfig, - Signature, StakerStatus, StakingConfig, SudoConfig, SystemConfig, UNIT, WASM_BINARY, +use tangle_runtime::{ + AccountId, Balance, BalancesConfig, EVMChainIdConfig, Eth2ClientConfig, ImOnlineConfig, + Perbill, RuntimeGenesisConfig, SessionConfig, Signature, StakerStatus, StakingConfig, + SudoConfig, SystemConfig, UNIT, WASM_BINARY, }; use webb_consensus_types::network_config::{Network, NetworkConfig}; @@ -52,99 +50,21 @@ where AccountPublic::from(get_from_seed::(seed)).into_account() } -/// Generate an Aura authority key. -pub fn authority_keys_from_seed( - controller: &str, - stash: &str, -) -> (AccountId, AccountId, AuraId, GrandpaId, ImOnlineId) { - ( - get_account_id_from_seed::(controller), - get_account_id_from_seed::(stash), - get_from_seed::(controller), - get_from_seed::(controller), - get_from_seed::(stash), - ) -} - /// Generate the session keys from individual elements. /// /// The input must be a tuple of individual keys (a single arg for now since we /// have just one key). -fn dkg_session_keys( +fn generate_sesion_keys( grandpa: GrandpaId, - aura: AuraId, + babe: BabeId, im_online: ImOnlineId, -) -> tangle_mainnet_runtime::opaque::SessionKeys { - tangle_mainnet_runtime::opaque::SessionKeys { grandpa, aura, im_online } -} - -pub fn local_testnet_config(chain_id: u64) -> Result { - let wasm_binary = WASM_BINARY.ok_or_else(|| "Development wasm not available".to_string())?; - let mut properties = sc_chain_spec::Properties::new(); - properties.insert("tokenSymbol".into(), "TNT".into()); - properties.insert("tokenDecimals".into(), 18u32.into()); - properties.insert("ss58Format".into(), 42.into()); - - Ok(ChainSpec::from_genesis( - // Name - "Local Testnet", - // ID - "local_testnet", - ChainType::Local, - move || { - testnet_genesis( - wasm_binary, - // Initial PoA authorities - vec![ - authority_keys_from_seed("Alice", "Alice//stash"), - authority_keys_from_seed("Bob", "Bob//stash"), - authority_keys_from_seed("Charlie", "Charlie//stash"), - authority_keys_from_seed("Dave", "Dave//stash"), - authority_keys_from_seed("Eve", "Eve//stash"), - ], - vec![], - // Sudo account - get_account_id_from_seed::("Alice"), - // Pre-funded accounts - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - ], - chain_id, - combine_distributions(vec![ - develop::get_evm_balance_distribution(), - testnet::get_evm_balance_distribution(), - ]), - testnet::get_substrate_balance_distribution(), - true, - ) - }, - // Bootnodes - vec![], - // Telemetry - None, - // Protocol ID - None, - // Fork id - None, - // Properties - Some(properties), - // Extensions - None, - )) +) -> tangle_runtime::opaque::SessionKeys { + tangle_runtime::opaque::SessionKeys { grandpa, babe, im_online } } pub fn tangle_mainnet_config(chain_id: u64) -> Result { let wasm_binary = WASM_BINARY.ok_or_else(|| "tangle wasm not available".to_string())?; - let boot_nodes = get_standalone_bootnodes(); + let boot_nodes = get_bootnodes(); let mut properties = sc_chain_spec::Properties::new(); properties.insert("tokenSymbol".into(), "TNT".into()); properties.insert("tokenDecimals".into(), 18u32.into()); @@ -158,13 +78,7 @@ pub fn tangle_mainnet_config(chain_id: u64) -> Result { mainnet_genesis( wasm_binary, // Initial PoA authorities - vec![ - authority_keys_from_seed("Alice", "Alice//stash"), - authority_keys_from_seed("Bob", "Bob//stash"), - authority_keys_from_seed("Charlie", "Charlie//stash"), - authority_keys_from_seed("Dave", "Dave//stash"), - authority_keys_from_seed("Eve", "Eve//stash"), - ], + get_initial_authorities(), // Sudo account get_root_key(), // Pre-funded accounts @@ -207,126 +121,11 @@ pub fn tangle_mainnet_config(chain_id: u64) -> Result { )) } -/// Configure initial storage state for FRAME modules. -#[allow(clippy::too_many_arguments)] -fn testnet_genesis( - wasm_binary: &[u8], - initial_authorities: Vec<(AccountId, AccountId, AuraId, GrandpaId, ImOnlineId)>, - initial_nominators: Vec, - root_key: AccountId, - endowed_accounts: Vec, - chain_id: u64, - genesis_evm_distribution: Vec<(H160, fp_evm::GenesisAccount)>, - genesis_substrate_distribution: Vec<(AccountId, Balance)>, - _enable_println: bool, -) -> RuntimeGenesisConfig { - const ENDOWMENT: Balance = 10_000_000 * UNIT; - const STASH: Balance = ENDOWMENT / 100; - - // stakers: all validators and nominators. - let mut rng = rand::thread_rng(); - let stakers = initial_authorities - .iter() - .map(|x| (x.0.clone(), x.1.clone(), STASH, StakerStatus::Validator)) - .chain(initial_nominators.iter().map(|x| { - use rand::{seq::SliceRandom, Rng}; - let limit = (MaxNominations::get() as usize).min(initial_authorities.len()); - let count = rng.gen::() % limit; - let nominations = initial_authorities - .as_slice() - .choose_multiple(&mut rng, count) - .map(|choice| choice.0.clone()) - .collect::>(); - (x.clone(), x.clone(), STASH, StakerStatus::Nominator(nominations)) - })) - .collect::>(); - - let num_endowed_accounts = endowed_accounts.len(); - RuntimeGenesisConfig { - system: SystemConfig { - // Add Wasm runtime to storage. - code: wasm_binary.to_vec(), - ..Default::default() - }, - sudo: SudoConfig { key: Some(root_key) }, - balances: BalancesConfig { - // Configure endowed accounts with initial balance of 1 << 60. - balances: endowed_accounts - .iter() - .cloned() - .map(|k| (k, ENDOWMENT)) - .chain(genesis_substrate_distribution.iter().cloned().map(|(k, v)| (k, v))) - .collect(), - }, - vesting: Default::default(), - indices: Default::default(), - session: SessionConfig { - keys: initial_authorities - .iter() - .map(|x| { - ( - x.1.clone(), - x.0.clone(), - dkg_session_keys(x.3.clone(), x.2.clone(), x.4.clone()), - ) - }) - .collect::>(), - }, - staking: StakingConfig { - validator_count: initial_authorities.len() as u32, - minimum_validator_count: initial_authorities.len() as u32 - 1, - invulnerables: initial_authorities.iter().map(|x| x.0.clone()).collect(), - slash_reward_fraction: Perbill::from_percent(10), - stakers, - ..Default::default() - }, - democracy: Default::default(), - council: Default::default(), - elections: ElectionsConfig { - members: endowed_accounts - .iter() - .take((num_endowed_accounts + 1) / 2) - .cloned() - .map(|member| (member, STASH)) - .collect(), - }, - treasury: Default::default(), - aura: Default::default(), - grandpa: Default::default(), - im_online: ImOnlineConfig { keys: vec![] }, - eth_2_client: Eth2ClientConfig { - networks: vec![ - (webb_proposals::TypedChainId::Evm(1), NetworkConfig::new(&Network::Mainnet)), - (webb_proposals::TypedChainId::Evm(5), NetworkConfig::new(&Network::Goerli)), - ], - phantom: PhantomData, - }, - nomination_pools: Default::default(), - transaction_payment: Default::default(), - // EVM compatibility - evm_chain_id: EVMChainIdConfig { chain_id, ..Default::default() }, - evm: EVMConfig { - accounts: { - let mut map = BTreeMap::new(); - for (address, account) in genesis_evm_distribution { - map.insert(address, account); - } - map - }, - ..Default::default() - }, - ethereum: Default::default(), - dynamic_fee: Default::default(), - base_fee: Default::default(), - claims: Default::default(), - } -} - /// Configure initial storage state for FRAME modules. #[allow(clippy::too_many_arguments)] fn mainnet_genesis( wasm_binary: &[u8], - initial_authorities: Vec<(AccountId, AccountId, AuraId, GrandpaId, ImOnlineId)>, + initial_authorities: Vec<(AccountId, AccountId, BabeId, GrandpaId, ImOnlineId)>, root_key: AccountId, endowed_accounts: Vec, chain_id: u64, @@ -368,7 +167,7 @@ fn mainnet_genesis( ( x.1.clone(), x.0.clone(), - dkg_session_keys(x.3.clone(), x.2.clone(), x.4.clone()), + generate_sesion_keys(x.3.clone(), x.2.clone(), x.4.clone()), ) }) .collect::>(), @@ -385,7 +184,7 @@ fn mainnet_genesis( council: Default::default(), elections: Default::default(), treasury: Default::default(), - aura: Default::default(), + babe: Default::default(), grandpa: Default::default(), im_online: ImOnlineConfig { keys: vec![] }, nomination_pools: Default::default(), @@ -396,7 +195,7 @@ fn mainnet_genesis( ethereum: Default::default(), dynamic_fee: Default::default(), base_fee: Default::default(), - // ETH2 light client + claims: Default::default(), eth_2_client: Eth2ClientConfig { networks: vec![ (webb_proposals::TypedChainId::Evm(1), NetworkConfig::new(&Network::Mainnet)), @@ -404,6 +203,5 @@ fn mainnet_genesis( ], phantom: PhantomData, }, - claims: Default::default(), } } diff --git a/node/src/chainspec/testnet.rs b/node/src/chainspec/testnet.rs index 17cff378d..dff7a44bb 100644 --- a/node/src/chainspec/testnet.rs +++ b/node/src/chainspec/testnet.rs @@ -15,20 +15,18 @@ use std::collections::BTreeMap; use crate::{ distributions::{combine_distributions, develop, testnet}, - testnet_fixtures::{ - get_standalone_bootnodes, get_standalone_initial_authorities, get_testnet_root_key, - }, + testnet_fixtures::{get_bootnodes, get_initial_authorities, get_testnet_root_key}, }; use core::marker::PhantomData; use hex_literal::hex; use pallet_im_online::sr25519::AuthorityId as ImOnlineId; use sc_consensus_grandpa::AuthorityId as GrandpaId; use sc_service::ChainType; -use sp_consensus_aura::sr25519::AuthorityId as AuraId; +use sp_consensus_babe::AuthorityId as BabeId; use sp_core::{sr25519, Pair, Public, H160}; use sp_runtime::traits::{IdentifyAccount, Verify}; use tangle_testnet_runtime::{ - AccountId, Balance, BalancesConfig, EVMChainIdConfig, EVMConfig, ElectionsConfig, + AccountId, BabeConfig, Balance, BalancesConfig, EVMChainIdConfig, EVMConfig, ElectionsConfig, Eth2ClientConfig, ImOnlineConfig, MaxNominations, Perbill, RuntimeGenesisConfig, SessionConfig, Signature, StakerStatus, StakingConfig, SudoConfig, SystemConfig, UNIT, WASM_BINARY, }; @@ -54,15 +52,15 @@ where AccountPublic::from(get_from_seed::(seed)).into_account() } -/// Generate an Aura authority key. +/// Generate an babe authority key. pub fn authority_keys_from_seed( controller: &str, stash: &str, -) -> (AccountId, AccountId, AuraId, GrandpaId, ImOnlineId) { +) -> (AccountId, AccountId, BabeId, GrandpaId, ImOnlineId) { ( get_account_id_from_seed::(controller), get_account_id_from_seed::(stash), - get_from_seed::(controller), + get_from_seed::(controller), get_from_seed::(controller), get_from_seed::(stash), ) @@ -72,12 +70,12 @@ pub fn authority_keys_from_seed( /// /// The input must be a tuple of individual keys (a single arg for now since we /// have just one key). -fn dkg_session_keys( +fn generate_sesion_keys( grandpa: GrandpaId, - aura: AuraId, + babe: BabeId, im_online: ImOnlineId, ) -> tangle_testnet_runtime::opaque::SessionKeys { - tangle_testnet_runtime::opaque::SessionKeys { grandpa, aura, im_online } + tangle_testnet_runtime::opaque::SessionKeys { grandpa, babe, im_online } } pub fn local_testnet_config(chain_id: u64) -> Result { @@ -146,7 +144,7 @@ pub fn local_testnet_config(chain_id: u64) -> Result { pub fn tangle_testnet_config(chain_id: u64) -> Result { let wasm_binary = WASM_BINARY.ok_or_else(|| "tangle wasm not available".to_string())?; - let boot_nodes = get_standalone_bootnodes(); + let boot_nodes = get_bootnodes(); let mut properties = sc_chain_spec::Properties::new(); properties.insert("tokenSymbol".into(), "tTNT".into()); properties.insert("tokenDecimals".into(), 18u32.into()); @@ -154,13 +152,13 @@ pub fn tangle_testnet_config(chain_id: u64) -> Result { Ok(ChainSpec::from_genesis( "Tangle Standalone Testnet", - "tangle-standalone-testnet", + "tangle-testnet", ChainType::Development, move || { testnet_genesis( wasm_binary, // Initial PoA authorities - get_standalone_initial_authorities(), + get_initial_authorities(), // initial nominators vec![], // Sudo account @@ -221,7 +219,7 @@ pub fn tangle_testnet_config(chain_id: u64) -> Result { #[allow(clippy::too_many_arguments)] fn testnet_genesis( wasm_binary: &[u8], - initial_authorities: Vec<(AccountId, AccountId, AuraId, GrandpaId, ImOnlineId)>, + initial_authorities: Vec<(AccountId, AccountId, BabeId, GrandpaId, ImOnlineId)>, initial_nominators: Vec, root_key: AccountId, endowed_accounts: Vec, @@ -277,7 +275,7 @@ fn testnet_genesis( ( x.1.clone(), x.0.clone(), - dkg_session_keys(x.3.clone(), x.2.clone(), x.4.clone()), + generate_sesion_keys(x.3.clone(), x.2.clone(), x.4.clone()), ) }) .collect::>(), @@ -301,16 +299,12 @@ fn testnet_genesis( .collect(), }, treasury: Default::default(), - aura: Default::default(), + babe: BabeConfig { + epoch_config: Some(tangle_testnet_runtime::BABE_GENESIS_EPOCH_CONFIG), + ..Default::default() + }, grandpa: Default::default(), im_online: ImOnlineConfig { keys: vec![] }, - eth_2_client: Eth2ClientConfig { - networks: vec![ - (webb_proposals::TypedChainId::Evm(1), NetworkConfig::new(&Network::Mainnet)), - (webb_proposals::TypedChainId::Evm(5), NetworkConfig::new(&Network::Goerli)), - ], - phantom: PhantomData, - }, nomination_pools: Default::default(), transaction_payment: Default::default(), // EVM compatibility @@ -328,5 +322,13 @@ fn testnet_genesis( ethereum: Default::default(), dynamic_fee: Default::default(), base_fee: Default::default(), + eth_2_client: Eth2ClientConfig { + networks: vec![ + (webb_proposals::TypedChainId::Evm(1), NetworkConfig::new(&Network::Mainnet)), + (webb_proposals::TypedChainId::Evm(5), NetworkConfig::new(&Network::Goerli)), + ], + phantom: PhantomData, + }, + claims: Default::default(), } } diff --git a/node/src/cli.rs b/node/src/cli.rs index f0d60fdbb..67b91f7d4 100644 --- a/node/src/cli.rs +++ b/node/src/cli.rs @@ -11,7 +11,7 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -#![allow(clippy::all, deprecated)] +#![allow(clippy::all)] use sc_cli::RunCmd; use crate::service::EthConfiguration; @@ -30,18 +30,6 @@ pub struct Cli { #[command(flatten)] pub eth: EthConfiguration, - - #[cfg(feature = "relayer")] - #[clap(flatten)] - pub relayer_cmd: tangle_relayer_gadget_cli::RelayerCmd, - - #[cfg(feature = "light-client")] - #[clap(flatten)] - pub light_client_relayer_cmd: - pallet_eth2_light_client_relayer_gadget_cli::LightClientRelayerCmd, - - #[clap(short, long)] - pub auto_insert_keys: bool, } #[derive(Debug, clap::Subcommand)] diff --git a/node/src/command.rs b/node/src/command.rs index f7bc8d087..8fdf4dd02 100644 --- a/node/src/command.rs +++ b/node/src/command.rs @@ -12,17 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. use crate::{ - benchmarking::{inherent_benchmark_data, RemarkBuilder, TransferKeepAliveBuilder}, chainspec, cli::{Cli, Subcommand}, service, }; -use frame_benchmarking_cli::{BenchmarkCmd, ExtrinsicFactory, SUBSTRATE_REFERENCE_HARDWARE}; +use frame_benchmarking_cli::{BenchmarkCmd, SUBSTRATE_REFERENCE_HARDWARE}; use futures::TryFutureExt; use sc_cli::SubstrateCli; use sc_service::PartialComponents; -use sp_keyring::Sr25519Keyring; -use tangle_testnet_runtime::{Block, EXISTENTIAL_DEPOSIT}; +use tangle_primitives::Block; trait IdentifyChain { fn is_mainnet(&self) -> bool; @@ -49,7 +47,7 @@ impl IdentifyChain for T { impl SubstrateCli for Cli { fn impl_name() -> String { - "Tangle Standalone Substrate Node".into() + "Tangle Substrate Node".into() } fn impl_version() -> String { @@ -74,11 +72,10 @@ impl SubstrateCli for Cli { fn load_spec(&self, id: &str) -> Result, String> { Ok(match id { - "" | "local" => Box::new(chainspec::testnet::local_testnet_config(4006)?), + "" | "dev" | "local" => Box::new(chainspec::testnet::local_testnet_config(4006)?), // generates the spec for testnet "testnet" => Box::new(chainspec::testnet::tangle_testnet_config(4006)?), // generates the spec for mainnet - "mainnet-local" => Box::new(chainspec::mainnet::local_testnet_config(4006)?), "mainnet" => Box::new(chainspec::mainnet::tangle_mainnet_config(4006)?), "tangle-testnet" => Box::new(chainspec::testnet::ChainSpec::from_json_bytes( &include_bytes!("../../chainspecs/testnet/tangle-standalone.json")[..], @@ -186,34 +183,8 @@ pub fn run() -> sc_cli::Result<()> { cmd.run(config, client, db, storage) }, - BenchmarkCmd::Overhead(cmd) => { - let PartialComponents { client, .. } = - service::new_partial(&config, &cli.eth)?; - let ext_builder = RemarkBuilder::new(client.clone()); - - cmd.run( - config, - client, - inherent_benchmark_data()?, - Vec::new(), - &ext_builder, - ) - }, - BenchmarkCmd::Extrinsic(cmd) => { - let PartialComponents { client, .. } = - service::new_partial(&config, &cli.eth)?; - // Register the *Remark* and *TKA* builders. - let ext_factory = ExtrinsicFactory(vec![ - Box::new(RemarkBuilder::new(client.clone())), - Box::new(TransferKeepAliveBuilder::new( - client.clone(), - Sr25519Keyring::Alice.to_account_id(), - EXISTENTIAL_DEPOSIT, - )), - ]); - - cmd.run(client, inherent_benchmark_data()?, Vec::new(), &ext_factory) - }, + BenchmarkCmd::Overhead(_cmd) => Err("Unsupported benchmarking command".into()), + BenchmarkCmd::Extrinsic(_cmd) => Err("Unsupported benchmarking command".into()), BenchmarkCmd::Machine(cmd) => cmd.run(&config, SUBSTRATE_REFERENCE_HARDWARE.clone()), } @@ -272,11 +243,6 @@ pub fn run() -> sc_cli::Result<()> { rpc_config, eth_config: cli.eth, debug_output: cli.output_path, - #[cfg(feature = "relayer")] - relayer_cmd: cli.relayer_cmd, - #[cfg(feature = "light-client")] - light_client_relayer_cmd: cli.light_client_relayer_cmd, - auto_insert_keys: cli.auto_insert_keys, }) .map_err(Into::into) .await diff --git a/node/src/lib.rs b/node/src/lib.rs index 3ca758625..01ad1fc66 100644 --- a/node/src/lib.rs +++ b/node/src/lib.rs @@ -1,9 +1,8 @@ -pub mod benchmarking; pub mod chainspec; +pub mod cli; pub mod distributions; pub mod eth; pub mod mainnet_fixtures; pub mod rpc; pub mod service; pub mod testnet_fixtures; -pub mod utils; diff --git a/node/src/main.rs b/node/src/main.rs index 3263dab6a..0c8afb238 100644 --- a/node/src/main.rs +++ b/node/src/main.rs @@ -4,15 +4,13 @@ mod chainspec; #[macro_use] mod service; -mod benchmarking; mod cli; mod command; mod distributions; mod eth; -pub mod mainnet_fixtures; +mod mainnet_fixtures; mod rpc; mod testnet_fixtures; -mod utils; fn main() -> sc_cli::Result<()> { command::run() diff --git a/node/src/mainnet_fixtures.rs b/node/src/mainnet_fixtures.rs index 03819a1fb..b8c070f43 100644 --- a/node/src/mainnet_fixtures.rs +++ b/node/src/mainnet_fixtures.rs @@ -17,7 +17,7 @@ use hex_literal::hex; use pallet_im_online::sr25519::AuthorityId as ImOnlineId; use sc_consensus_grandpa::AuthorityId as GrandpaId; use sc_network::config::MultiaddrWithPeerId; -use sp_consensus_aura::sr25519::AuthorityId as AuraId; +use sp_consensus_babe::AuthorityId as BabeId; use sp_core::crypto::UncheckedInto; use tangle_testnet_runtime::AccountId; @@ -28,7 +28,7 @@ pub fn get_root_key() -> AccountId { } /// Mainnet bootnodes -pub fn get_standalone_bootnodes() -> Vec { +pub fn get_bootnodes() -> Vec { vec![ "/ip4/3.22.222.30/tcp/30333/p2p/12D3KooWRdvZ3PRteq8DC78Z3z5ZiehipKrKhHDRpgvCjc8XSeQx" .parse() @@ -49,8 +49,7 @@ pub fn get_standalone_bootnodes() -> Vec { } /// Standalone initial authorities -pub fn get_standalone_initial_authorities( -) -> Vec<(AccountId, AccountId, AuraId, GrandpaId, ImOnlineId)> { +pub fn get_initial_authorities() -> Vec<(AccountId, AccountId, BabeId, GrandpaId, ImOnlineId)> { vec![ // standalone 1 ( diff --git a/node/src/rpc/eth.rs b/node/src/rpc/eth.rs index a5b841bcd..7f11183ee 100644 --- a/node/src/rpc/eth.rs +++ b/node/src/rpc/eth.rs @@ -18,16 +18,15 @@ use sp_core::H256; use sp_inherents::CreateInherentDataProviders; use sp_runtime::traits::Block as BlockT; // Frontier -use fc_rpc::pending::AuraConsensusDataProvider; + pub use fc_rpc::{EthBlockDataCacheTask, EthConfig, OverrideHandle, StorageOverride}; pub use fc_rpc_core::types::{FeeHistoryCache, FeeHistoryCacheLimit, FilterPool}; pub use fc_storage::overrides_handle; use fp_rpc::{ConvertTransaction, ConvertTransactionRuntimeApi, EthereumRuntimeRPCApi}; #[cfg(feature = "txpool")] use rpc_txpool::TxPoolServer; -use sc_client_api::{AuxStore, UsageProvider}; -use sp_consensus_aura::AuraApi; -use tangle_primitives::AuraId; + +use sp_consensus_babe::BabeApi; #[derive(Clone)] pub struct TracingConfig { @@ -120,19 +119,19 @@ pub fn create_eth( where B: BlockT, C: CallApiAt + ProvideRuntimeApi, - C::Api: AuraApi + C::Api: BabeApi + BlockBuilderApi + ConvertTransactionRuntimeApi + EthereumRuntimeRPCApi, C::Api: rpc_primitives_debug::DebugRuntimeApi, C::Api: rpc_primitives_txpool::TxPoolRuntimeApi, - C: BlockchainEvents + AuxStore + UsageProvider + StorageProvider + 'static, + C: BlockchainEvents + StorageProvider + 'static, C: HeaderBackend + HeaderMetadata + StorageProvider, BE: Backend + 'static, P: TransactionPool + 'static, A: ChainApi + 'static, CT: ConvertTransaction<::Extrinsic> + Send + Sync + 'static, - CIDP: CreateInherentDataProviders + Send + 'static, + CIDP: CreateInherentDataProviders + Send + Sync + 'static, EC: EthConfig, { use fc_rpc::{ @@ -188,7 +187,7 @@ where execute_gas_limit_multiplier, forced_parent_hashes, pending_create_inherent_data_providers, - Some(Box::new(AuraConsensusDataProvider::new(client.clone()))), + None, ) .replace_config::() .into_rpc(), diff --git a/node/src/rpc/mod.rs b/node/src/rpc/mod.rs index e2bd827f6..732637414 100644 --- a/node/src/rpc/mod.rs +++ b/node/src/rpc/mod.rs @@ -8,6 +8,10 @@ use sc_client_api::{ backend::{Backend, StorageProvider}, client::BlockchainEvents, }; +use sc_consensus_babe::BabeWorkerHandle; +use sc_consensus_grandpa::{ + FinalityProofProvider, GrandpaJustificationStream, SharedAuthoritySet, SharedVoterState, +}; use sc_consensus_manual_seal::rpc::EngineCommand; use sc_rpc::SubscriptionTaskExecutor; use sc_rpc_api::DenyUnsafe; @@ -15,19 +19,43 @@ use sc_service::TransactionPool; use sc_transaction_pool::ChainApi; use sp_api::{CallApiAt, ProvideRuntimeApi}; use sp_blockchain::{Error as BlockChainError, HeaderBackend, HeaderMetadata}; +use sp_consensus::SelectChain; +use sp_consensus_babe::BabeApi; +use sp_keystore::KeystorePtr; use sp_runtime::traits::Block as BlockT; -use tangle_primitives::AuraId; +use tangle_runtime::BlockNumber; + // Runtime -use sc_client_api::{AuxStore, UsageProvider}; -use sp_inherents::CreateInherentDataProviders; -use tangle_testnet_runtime::{opaque::Block, AccountId, Balance, Hash, Index}; +use tangle_runtime::{opaque::Block, AccountId, Balance, Hash, Index}; pub mod eth; pub mod tracing; pub use self::eth::{create_eth, overrides_handle, EthDeps}; +/// Extra dependencies for BABE. +pub struct BabeDeps { + /// A handle to the BABE worker for issuing requests. + pub babe_worker_handle: BabeWorkerHandle, + /// The keystore that manages the keys of the node. + pub keystore: KeystorePtr, +} + +/// Extra dependencies for GRANDPA +pub struct GrandpaDeps { + /// Voting round info. + pub shared_voter_state: SharedVoterState, + /// Authority set info. + pub shared_authority_set: SharedAuthoritySet, + /// Receives notifications about justification events from Grandpa. + pub justification_stream: GrandpaJustificationStream, + /// Executor to drive the subscription manager in the Grandpa RPC handler. + pub subscription_executor: SubscriptionTaskExecutor, + /// Finality proof provider. + pub finality_provider: Arc>, +} + /// Full client dependencies. -pub struct FullDeps { +pub struct FullDeps { /// The client instance to use. pub client: Arc, /// Transaction pool instance. @@ -38,6 +66,12 @@ pub struct FullDeps { pub command_sink: Option>>, /// Ethereum-compatibility specific dependencies. pub eth: EthDeps, + /// BABE specific dependencies. + pub babe: BabeDeps, + /// The SelectChain Strategy + pub select_chain: SC, + /// GRANDPA specific dependencies. + pub grandpa: GrandpaDeps, } pub struct DefaultEthConfig(std::marker::PhantomData<(C, BE)>); @@ -53,8 +87,8 @@ where } /// Instantiate all Full RPC extensions. -pub fn create_full( - deps: FullDeps, +pub fn create_full( + deps: FullDeps, subscription_task_executor: SubscriptionTaskExecutor, pubsub_notification_sinks: Arc< fc_mapping_sync::EthereumBlockNotificationSinks< @@ -66,32 +100,52 @@ where C: CallApiAt + ProvideRuntimeApi, C::Api: substrate_frame_rpc_system::AccountNonceApi, C::Api: sp_block_builder::BlockBuilder, - C::Api: sp_consensus_aura::AuraApi, C::Api: pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi, C::Api: fp_rpc::ConvertTransactionRuntimeApi, C::Api: fp_rpc::EthereumRuntimeRPCApi, C::Api: rpc_primitives_debug::DebugRuntimeApi, C::Api: rpc_primitives_txpool::TxPoolRuntimeApi, - C: BlockchainEvents + AuxStore + UsageProvider + StorageProvider, + C::Api: BabeApi, + C: BlockchainEvents + 'static, C: HeaderBackend + HeaderMetadata - + StorageProvider - + 'static, + + StorageProvider, BE: Backend + 'static, P: TransactionPool + 'static, A: ChainApi + 'static, - CIDP: CreateInherentDataProviders + Send + 'static, CT: fp_rpc::ConvertTransaction<::Extrinsic> + Send + Sync + 'static, + SC: SelectChain + 'static, + B: sc_client_api::Backend + Send + Sync + 'static, + B::State: sc_client_api::backend::StateBackend, + CIDP: sp_inherents::CreateInherentDataProviders + Send + Sync + 'static, { use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApiServer}; + use sc_consensus_babe_rpc::{Babe, BabeApiServer}; + use sc_consensus_grandpa_rpc::{Grandpa, GrandpaApiServer}; use sc_consensus_manual_seal::rpc::{ManualSeal, ManualSealApiServer}; use substrate_frame_rpc_system::{System, SystemApiServer}; let mut io = RpcModule::new(()); - let FullDeps { client, pool, deny_unsafe, command_sink, eth } = deps; + let FullDeps { client, pool, deny_unsafe, command_sink, eth, babe, select_chain, grandpa } = + deps; + + let BabeDeps { keystore, babe_worker_handle } = babe; + + let GrandpaDeps { + shared_voter_state, + shared_authority_set, + justification_stream, + subscription_executor, + finality_provider, + } = grandpa; io.merge(System::new(client.clone(), pool, deny_unsafe).into_rpc())?; - io.merge(TransactionPayment::new(client).into_rpc())?; + io.merge(TransactionPayment::new(client.clone()).into_rpc())?; + + io.merge( + Babe::new(client.clone(), babe_worker_handle.clone(), keystore, select_chain, deny_unsafe) + .into_rpc(), + )?; if let Some(command_sink) = command_sink { io.merge( @@ -101,6 +155,17 @@ where )?; } + io.merge( + Grandpa::new( + subscription_executor, + shared_authority_set.clone(), + shared_voter_state, + justification_stream, + finality_provider, + ) + .into_rpc(), + )?; + // Ethereum compatibility RPCs let io = create_eth::<_, _, _, _, _, _, _, DefaultEthConfig>( io, @@ -108,5 +173,6 @@ where subscription_task_executor, pubsub_notification_sinks, )?; + Ok(io) } diff --git a/node/src/service.rs b/node/src/service.rs index 7f17123ba..1dba374c0 100644 --- a/node/src/service.rs +++ b/node/src/service.rs @@ -1,4 +1,3 @@ -#![allow(clippy::all)] // Copyright 2022 Webb Technologies Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -14,134 +13,100 @@ // limitations under the License. //! Service and ServiceFactory implementation. Specialized wrapper over substrate service. - pub use crate::eth::{db_config_dir, EthConfiguration}; use crate::eth::{ new_frontier_partial, spawn_frontier_tasks, BackendType, EthApi, FrontierBackend, FrontierBlockImport, FrontierPartialComponents, RpcConfig, }; use futures::{channel::mpsc, FutureExt}; -use parity_scale_codec::Encode; + use sc_client_api::{Backend, BlockBackend}; use sc_consensus::BasicQueue; -use sc_consensus_aura::ImportQueueParams; +use sc_consensus_babe::{BabeWorkerHandle, SlotProportion}; use sc_consensus_grandpa::SharedVoterState; pub use sc_executor::NativeElseWasmExecutor; -use sc_service::{error::Error as ServiceError, ChainType, Configuration, TaskManager}; +use sc_service::{error::Error as ServiceError, Configuration, TaskManager}; use sc_telemetry::{Telemetry, TelemetryWorker}; use sc_transaction_pool_api::OffchainTransactionPoolFactory; -use sp_api::ProvideRuntimeApi; -use sp_consensus_aura::sr25519::AuthorityPair as AuraPair; -use sp_core::{Pair, U256}; -use sp_runtime::{generic::Era, SaturatedConversion}; + +use sp_core::U256; use std::{path::Path, sync::Arc, time::Duration}; -use substrate_frame_rpc_system::AccountNonceApi; -use tangle_testnet_runtime::{self, opaque::Block, RuntimeApi, TransactionConverter}; -pub fn fetch_nonce(client: &FullClient, account: sp_core::sr25519::Pair) -> u32 { - let best_hash = client.chain_info().best_hash; - client - .runtime_api() - .account_nonce(best_hash, account.public().into()) - .expect("Fetching account nonce works; qed") -} +#[cfg(not(feature = "testnet"))] +use tangle_runtime::{self, opaque::Block, RuntimeApi, TransactionConverter}; + +#[cfg(feature = "testnet")] +use tangle_testnet_runtime::{self, opaque::Block, RuntimeApi, TransactionConverter}; /// The minimum period of blocks on which justifications will be /// imported and generated. const GRANDPA_JUSTIFICATION_PERIOD: u32 = 512; -// Our native executor instance. -pub struct ExecutorDispatch; - -impl sc_executor::NativeExecutionDispatch for ExecutorDispatch { - /// Only enable the benchmarking host functions when we actually want to benchmark. - #[cfg(feature = "runtime-benchmarks")] - type ExtendHostFunctions = - (frame_benchmarking::benchmarking::HostFunctions, primitives_ext::ext::HostFunctions); - /// Otherwise we only use the default Substrate host functions. - #[cfg(not(feature = "runtime-benchmarks"))] - type ExtendHostFunctions = primitives_ext::ext::HostFunctions; +#[cfg(not(feature = "testnet"))] +pub mod tangle { + // Our native executor instance. + pub struct ExecutorDispatch; + + impl sc_executor::NativeExecutionDispatch for ExecutorDispatch { + /// Only enable the benchmarking host functions when we actually want to benchmark. + #[cfg(feature = "runtime-benchmarks")] + type ExtendHostFunctions = + (frame_benchmarking::benchmarking::HostFunctions, primitives_ext::ext::HostFunctions); + /// Otherwise we only use the default Substrate host functions. + #[cfg(not(feature = "runtime-benchmarks"))] + type ExtendHostFunctions = primitives_ext::ext::HostFunctions; + + fn dispatch(method: &str, data: &[u8]) -> Option> { + tangle_runtime::api::dispatch(method, data) + } - fn dispatch(method: &str, data: &[u8]) -> Option> { - tangle_testnet_runtime::api::dispatch(method, data) + fn native_version() -> sc_executor::NativeVersion { + tangle_runtime::native_version() + } } +} - fn native_version() -> sc_executor::NativeVersion { - tangle_testnet_runtime::native_version() +#[cfg(feature = "testnet")] +pub mod testnet { + // Our native executor instance. + pub struct ExecutorDispatch; + + impl sc_executor::NativeExecutionDispatch for ExecutorDispatch { + /// Only enable the benchmarking host functions when we actually want to benchmark. + #[cfg(feature = "runtime-benchmarks")] + type ExtendHostFunctions = + (frame_benchmarking::benchmarking::HostFunctions, primitives_ext::ext::HostFunctions); + /// Otherwise we only use the default Substrate host functions. + #[cfg(not(feature = "runtime-benchmarks"))] + type ExtendHostFunctions = primitives_ext::ext::HostFunctions; + + fn dispatch(method: &str, data: &[u8]) -> Option> { + tangle_testnet_runtime::api::dispatch(method, data) + } + + fn native_version() -> sc_executor::NativeVersion { + tangle_testnet_runtime::native_version() + } } } +#[cfg(not(feature = "testnet"))] pub(crate) type FullClient = - sc_service::TFullClient>; + sc_service::TFullClient>; + +#[cfg(feature = "testnet")] +pub(crate) type FullClient = + sc_service::TFullClient>; + pub(crate) type FullBackend = sc_service::TFullBackend; type FullSelectChain = sc_consensus::LongestChain; type GrandpaLinkHalf = sc_consensus_grandpa::LinkHalf; type BoxBlockImport = sc_consensus::BoxBlockImport; -/// Create a transaction using the given `call` -/// -/// The transaction will be signed by `sender`. If `nonce` is `None` it will be fetched from the -/// state of the best block. -/// -/// Note: Should only be used for tests. -pub fn create_extrinsic( - client: &FullClient, - sender: sp_core::sr25519::Pair, - function: impl Into, - nonce: Option, -) -> tangle_testnet_runtime::UncheckedExtrinsic { - let function = function.into(); - let genesis_hash = client.block_hash(0).ok().flatten().expect("Genesis block exists; qed"); - let best_hash = client.chain_info().best_hash; - let best_block = client.chain_info().best_number; - let nonce = nonce.unwrap_or_else(|| fetch_nonce(client, sender.clone())); - - let period = tangle_testnet_runtime::BlockHashCount::get() - .checked_next_power_of_two() - .map(|c| c / 2) - .unwrap_or(2) as u64; - let tip = 0; - let extra: tangle_testnet_runtime::SignedExtra = ( - frame_system::CheckNonZeroSender::::new(), - frame_system::CheckSpecVersion::::new(), - frame_system::CheckTxVersion::::new(), - frame_system::CheckGenesis::::new(), - frame_system::CheckEra::::from(Era::Mortal( - period, - best_block.saturated_into(), - )), - frame_system::CheckNonce::::from(nonce), - frame_system::CheckWeight::::new(), - pallet_transaction_payment::ChargeTransactionPayment::::from(tip), - ); - - let raw_payload = tangle_testnet_runtime::SignedPayload::from_raw( - function.clone(), - extra.clone(), - ( - (), - tangle_testnet_runtime::VERSION.spec_version, - tangle_testnet_runtime::VERSION.transaction_version, - genesis_hash, - best_hash, - (), - (), - (), - ), - ); - let signature = raw_payload.using_encoded(|e| sender.sign(e)); - - tangle_testnet_runtime::UncheckedExtrinsic::new_signed( - function, - sp_runtime::AccountId32::from(sender.public()).into(), - tangle_testnet_runtime::Signature::Sr25519(signature), - extra, - ) -} - +#[allow(clippy::type_complexity)] pub fn new_partial( config: &Configuration, eth_config: &EthConfiguration, @@ -156,26 +121,14 @@ pub fn new_partial( Option, BoxBlockImport, GrandpaLinkHalf, + sc_consensus_babe::BabeLink, FrontierBackend, Arc>, + BabeWorkerHandle, ), >, ServiceError, > { - println!(" ++++++++++++++++++++++++ - +++++++++++++++++++++++++++ - +++++++++++++++++++++++++++ - +++ ++++++ +++ @%%%%%%%%%%% %%% - ++++++ ++++ +++++ %%%%%%%%%%%% %%%@ - ++++++++++++++++++++++++++ %%%% %%%%@ %%% %%@ @%%%%%%% %%%@ %%%%@ - ++++++++ %%%% @%%%%%%%@ %%%%%%%%% @%%%%%%%%% %%%@ %%%%%%%%% - ++++++++ %%%% %%%%%%%%% %%%% @%%%@ %%%% %%%% %%%@ %%%%%%%%%% - ++++++++++++++++++++++++++ %%%% %%%%%%%%% %%% %%%% %%% @%%% %%%@ @%%%%% %%%%% - ++++++ ++++ ++++++ %%%% %%%%%%%%% %%% %%%% %%%%%%%%%% %%%@ %%%%%%%%%@ - +++ ++++++ +++ %%%% %%%%%%%%% %%% %%%@ %%%%%%%%% %%% %%%%%%%@ - ++++ +++++++++ +++ %%%% %%%% - ++++++++++++++++++++++++++++ %%%%%%%%% - +++++++++++++++++++++++ %%%%% \n"); let telemetry = config .telemetry_endpoints .clone() @@ -250,33 +203,42 @@ pub fn new_partial( }, }; - let frontier_block_import = - FrontierBlockImport::new(grandpa_block_import.clone(), client.clone()); + let (block_import, babe_link) = sc_consensus_babe::block_import( + sc_consensus_babe::configuration(&*client)?, + grandpa_block_import.clone(), + client.clone(), + )?; + + let slot_duration = babe_link.config().slot_duration(); - let slot_duration = sc_consensus_aura::slot_duration(&*client)?; let target_gas_price = eth_config.target_gas_price; - let 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_slot_duration( - *timestamp, - slot_duration, - ); - let dynamic_fee = fp_dynamic_fee::InherentDataProvider(U256::from(target_gas_price)); - Ok((slot, timestamp, dynamic_fee)) - }; - let import_queue = - sc_consensus_aura::import_queue::(ImportQueueParams { + let frontier_block_import = FrontierBlockImport::new(block_import.clone(), client.clone()); + + let (import_queue, babe_worker_handle) = + sc_consensus_babe::import_queue(sc_consensus_babe::ImportQueueParams { + link: babe_link.clone(), block_import: frontier_block_import.clone(), justification_import: Some(Box::new(grandpa_block_import.clone())), client: client.clone(), - create_inherent_data_providers, + select_chain: select_chain.clone(), + create_inherent_data_providers: move |_, ()| async move { + let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); + + let slot = + sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_slot_duration( + *timestamp, + slot_duration, + ); + + let _dynamic_fee = + fp_dynamic_fee::InherentDataProvider(U256::from(target_gas_price)); + Ok((slot, timestamp)) + }, spawner: &task_manager.spawn_essential_handle(), registry: config.prometheus_registry(), - check_for_equivocation: Default::default(), telemetry: telemetry.as_ref().map(|x| x.handle()), - compatibility_mode: Default::default(), + offchain_tx_pool_factory: OffchainTransactionPoolFactory::new(transaction_pool.clone()), })?; Ok(sc_service::PartialComponents { @@ -291,8 +253,10 @@ pub fn new_partial( telemetry, Box::new(frontier_block_import), grandpa_link, + babe_link, frontier_backend, overrides, + babe_worker_handle, ), }) } @@ -301,26 +265,10 @@ pub struct RunFullParams { pub eth_config: EthConfiguration, pub rpc_config: RpcConfig, pub debug_output: Option, - #[cfg(feature = "relayer")] - pub relayer_cmd: tangle_relayer_gadget_cli::RelayerCmd, - #[cfg(feature = "light-client")] - pub light_client_relayer_cmd: - pallet_eth2_light_client_relayer_gadget_cli::LightClientRelayerCmd, - pub auto_insert_keys: bool, } /// Builds a new service for a full client. pub async fn new_full( - RunFullParams { - mut config, - eth_config, - rpc_config, - debug_output: _, - #[cfg(feature = "relayer")] - relayer_cmd, - #[cfg(feature = "light-client")] - light_client_relayer_cmd, - auto_insert_keys, - }: RunFullParams, + RunFullParams { mut config, eth_config, rpc_config, debug_output: _ }: RunFullParams, ) -> Result { let sc_service::PartialComponents { client, @@ -330,39 +278,18 @@ pub async fn new_full( keystore_container, select_chain, transaction_pool, - other: (mut telemetry, block_import, grandpa_link, frontier_backend, overrides), + other: + ( + mut telemetry, + block_import, + grandpa_link, + babe_link, + frontier_backend, + overrides, + babe_worker_handle, + ), } = new_partial(&config, ð_config)?; - if config.role.is_authority() { - if auto_insert_keys { - crate::utils::insert_controller_account_keys_into_keystore( - &config, - Some(keystore_container.keystore()), - ); - } else { - crate::utils::insert_dev_controller_account_keys_into_keystore( - &config, - Some(keystore_container.keystore()), - ); - } - - // finally check if keys are inserted correctly - if config.chain_spec.chain_type() != ChainType::Development { - if crate::utils::ensure_all_keys_exist_in_keystore(keystore_container.keystore()) - .is_err() - { - println!(" - ++++++++++++++++++++++++++++++++++++++++++++++++ - Validator keys not found, validator keys are essential to run a validator on - Tangle Network, refer to https://docs.webb.tools/docs/ecosystem-roles/validator/required-keys/ on - how to generate and insert keys. OR start the node with --auto-insert-keys to automatically generate the keys. - ++++++++++++++++++++++++++++++++++++++++++++++++ - \n"); - panic!("Keys not detected!") - } - } - } - let FrontierPartialComponents { filter_pool, fee_history_cache, fee_history_cache_limit } = new_frontier_partial(ð_config)?; @@ -397,7 +324,6 @@ pub async fn new_full( let role = config.role.clone(); let force_authoring = config.force_authoring; - let _backoff_authoring_blocks: Option<()> = None; let name = config.network.node_name.clone(); let enable_grandpa = !config.disable_grandpa; let prometheus_registry = config.prometheus_registry().cloned(); @@ -439,20 +365,8 @@ pub async fn new_full( // for ethereum-compatibility rpc. config.rpc_id_provider = Some(Box::new(fc_rpc::EthereumSubIdProvider)); - let slot_duration = sc_consensus_aura::slot_duration(&*client)?; + let slot_duration = babe_link.config().slot_duration(); let target_gas_price = eth_config.target_gas_price; - let pending_create_inherent_data_providers = move |_, ()| async move { - let current = sp_timestamp::InherentDataProvider::from_system_time(); - let next_slot = current.timestamp().as_millis() + slot_duration.as_millis(); - let timestamp = sp_timestamp::InherentDataProvider::new(next_slot.into()); - let slot = - sp_consensus_aura::inherents::InherentDataProvider::from_timestamp_and_slot_duration( - *timestamp, - slot_duration, - ); - let dynamic_fee = fp_dynamic_fee::InherentDataProvider(U256::from(target_gas_price)); - Ok((slot, timestamp, dynamic_fee)) - }; let ethapi_cmd = rpc_config.ethapi.clone(); let tracing_requesters = @@ -469,6 +383,20 @@ pub async fn new_full( } else { crate::rpc::tracing::RpcRequesters { debug: None, trace: None } }; + + let pending_create_inherent_data_providers = move |_, ()| async move { + let current = sp_timestamp::InherentDataProvider::from_system_time(); + let next_slot = current.timestamp().as_millis() + slot_duration.as_millis(); + let timestamp = sp_timestamp::InherentDataProvider::new(next_slot.into()); + let slot = + sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_slot_duration( + *timestamp, + slot_duration, + ); + let dynamic_fee = fp_dynamic_fee::InherentDataProvider(U256::from(target_gas_price)); + Ok((slot, timestamp, dynamic_fee)) + }; + let eth_rpc_params = crate::rpc::EthDeps { client: client.clone(), pool: transaction_pool.clone(), @@ -503,34 +431,52 @@ pub async fn new_full( pending_create_inherent_data_providers, }; + let keystore = keystore_container.keystore(); + let select_chain_clone = select_chain.clone(); let rpc_builder = { let client = client.clone(); let pool = transaction_pool.clone(); let pubsub_notification_sinks = pubsub_notification_sinks.clone(); - Box::new(move |deny_unsafe, subscription_task_executor| { - let deps = crate::rpc::FullDeps { - client: client.clone(), - pool: pool.clone(), - deny_unsafe, - command_sink: Some(command_sink.clone()), - eth: eth_rpc_params.clone(), - }; - if ethapi_cmd.contains(&EthApi::Debug) || ethapi_cmd.contains(&EthApi::Trace) { - crate::rpc::create_full( - deps, - subscription_task_executor, - pubsub_notification_sinks.clone(), - ) - .map_err(Into::into) - } else { + let justification_stream = grandpa_link.justification_stream(); + let shared_authority_set = grandpa_link.shared_authority_set().clone(); + let shared_voter_state = sc_consensus_grandpa::SharedVoterState::empty(); + let _shared_voter_state2 = shared_voter_state.clone(); + + let finality_proof_provider = sc_consensus_grandpa::FinalityProofProvider::new_for_service( + backend.clone(), + Some(shared_authority_set.clone()), + ); + + Box::new( + move |deny_unsafe, subscription_task_executor: sc_rpc::SubscriptionTaskExecutor| { + let deps = crate::rpc::FullDeps { + client: client.clone(), + pool: pool.clone(), + deny_unsafe, + command_sink: Some(command_sink.clone()), + eth: eth_rpc_params.clone(), + babe: crate::rpc::BabeDeps { + keystore: keystore.clone(), + babe_worker_handle: babe_worker_handle.clone(), + }, + select_chain: select_chain_clone.clone(), + grandpa: crate::rpc::GrandpaDeps { + shared_voter_state: shared_voter_state.clone(), + shared_authority_set: shared_authority_set.clone(), + justification_stream: justification_stream.clone(), + subscription_executor: subscription_task_executor.clone(), + finality_provider: finality_proof_provider.clone(), + }, + }; + crate::rpc::create_full( deps, subscription_task_executor, pubsub_notification_sinks.clone(), ) .map_err(Into::into) - } - }) + }, + ) }; spawn_frontier_tasks( @@ -547,49 +493,6 @@ pub async fn new_full( ) .await; - if role.is_authority() { - // setup relayer gadget params - #[cfg(feature = "relayer")] - let relayer_params = tangle_relayer_gadget::RelayerParams { - local_keystore: keystore_container.local_keystore(), - config_dir: relayer_cmd.relayer_config_dir, - database_path: config - .database - .path() - .and_then(|path| path.parent()) - .map(|p| p.to_path_buf()), - rpc_addr: config.rpc_addr, - }; - - // Start Webb Relayer Gadget as non-essential task. - #[cfg(feature = "relayer")] - task_manager.spawn_handle().spawn( - "relayer-gadget", - None, - tangle_relayer_gadget::start_relayer_gadget( - relayer_params, - sp_application_crypto::KeyTypeId(*b"role"), - ), - ); - - // Start Eth2 Light client Relayer Gadget - (MAINNET RELAYER) - #[cfg(feature = "light-client")] - task_manager.spawn_handle().spawn( - "mainnet-relayer-gadget", - None, - pallet_eth2_light_client_relayer_gadget::start_gadget( - pallet_eth2_light_client_relayer_gadget::Eth2LightClientParams { - lc_relay_config_path: light_client_relayer_cmd - .light_client_relay_config_path - .clone(), - lc_init_config_path: light_client_relayer_cmd - .light_client_init_pallet_config_path - .clone(), - eth2_chain_id: webb_proposals::TypedChainId::Evm(1), - }, - ), - ); - } let params = sc_service::SpawnTasksParams { network: network.clone(), client: client.clone(), @@ -615,43 +518,55 @@ pub async fn new_full( telemetry.as_ref().map(|x| x.handle()), ); - let slot_duration = sc_consensus_aura::slot_duration(&*client)?; - let target_gas_price = eth_config.target_gas_price; - let 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_slot_duration( - *timestamp, - slot_duration, - ); - let dynamic_fee = fp_dynamic_fee::InherentDataProvider(U256::from(target_gas_price)); - Ok((slot, timestamp, dynamic_fee)) - }; + let backoff_authoring_blocks = + Some(sc_consensus_slots::BackoffAuthoringOnFinalizedHeadLagging::default()); - let aura = sc_consensus_aura::start_aura::( - sc_consensus_aura::StartAuraParams { - slot_duration, - client, - select_chain, - block_import, - proposer_factory, - sync_oracle: sync_service.clone(), - justification_sync_link: sync_service.clone(), - create_inherent_data_providers, - force_authoring, - backoff_authoring_blocks: Option::<()>::None, - keystore: keystore_container.keystore(), - block_proposal_slot_portion: sc_consensus_aura::SlotProportion::new(2f32 / 3f32), - max_block_proposal_slot_portion: None, - telemetry: telemetry.as_ref().map(|x| x.handle()), - compatibility_mode: sc_consensus_aura::CompatibilityMode::None, + let babe_config = sc_consensus_babe::BabeParams { + keystore: keystore_container.keystore(), + client: client.clone(), + select_chain, + env: proposer_factory, + block_import, + sync_oracle: sync_service.clone(), + justification_sync_link: sync_service.clone(), + create_inherent_data_providers: move |parent, ()| { + let client_clone = client.clone(); + async move { + let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); + + let slot = + sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_slot_duration( + *timestamp, + slot_duration, + ); + + let storage_proof = + sp_transaction_storage_proof::registration::new_data_provider( + &*client_clone, + &parent, + )?; + let _dynamic_fee = + fp_dynamic_fee::InherentDataProvider(U256::from(target_gas_price)); + Ok((slot, timestamp, storage_proof)) + } }, - )?; + force_authoring, + backoff_authoring_blocks, + babe_link, + block_proposal_slot_portion: SlotProportion::new(0.5), + max_block_proposal_slot_portion: None, + telemetry: telemetry.as_ref().map(|x| x.handle()), + }; - // the AURA authoring task is considered essential, i.e. if it + let babe = sc_consensus_babe::start_babe(babe_config)?; + + // the BABE 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", Some("block-authoring"), aura); + task_manager.spawn_essential_handle().spawn_blocking( + "babe-proposer", + Some("block-authoring"), + babe, + ); } // if the node isn't actively participating in consensus then it doesn't @@ -702,6 +617,7 @@ pub async fn new_full( Ok(task_manager) } +#[allow(clippy::type_complexity)] pub fn new_chain_ops( config: &mut Configuration, eth_config: &EthConfiguration, @@ -713,5 +629,5 @@ pub fn new_chain_ops( let sc_service::PartialComponents { client, backend, import_queue, task_manager, other, .. } = new_partial(config, eth_config)?; - Ok((client, backend, import_queue, task_manager, other.3)) + Ok((client, backend, import_queue, task_manager, other.4)) } diff --git a/node/src/testnet_fixtures.rs b/node/src/testnet_fixtures.rs index bf7dd1983..e76496e3f 100644 --- a/node/src/testnet_fixtures.rs +++ b/node/src/testnet_fixtures.rs @@ -17,7 +17,7 @@ use hex_literal::hex; use pallet_im_online::sr25519::AuthorityId as ImOnlineId; use sc_consensus_grandpa::AuthorityId as GrandpaId; use sc_network::config::MultiaddrWithPeerId; -use sp_consensus_aura::sr25519::AuthorityId as AuraId; +use sp_consensus_babe::AuthorityId as BabeId; use sp_core::crypto::UncheckedInto; use tangle_testnet_runtime::AccountId; @@ -28,7 +28,7 @@ pub fn get_testnet_root_key() -> AccountId { } /// Standalone alpha bootnodes -pub fn get_standalone_bootnodes() -> Vec { +pub fn get_bootnodes() -> Vec { vec![ "/ip4/3.22.222.30/tcp/30333/p2p/12D3KooWRdvZ3PRteq8DC78Z3z5ZiehipKrKhHDRpgvCjc8XSeQx" .parse() @@ -49,8 +49,7 @@ pub fn get_standalone_bootnodes() -> Vec { } /// Standalone initial authorities -pub fn get_standalone_initial_authorities( -) -> Vec<(AccountId, AccountId, AuraId, GrandpaId, ImOnlineId)> { +pub fn get_initial_authorities() -> Vec<(AccountId, AccountId, BabeId, GrandpaId, ImOnlineId)> { vec![ // standalone 1 ( diff --git a/node/src/utils.rs b/node/src/utils.rs deleted file mode 100644 index 348f6ebbd..000000000 --- a/node/src/utils.rs +++ /dev/null @@ -1,123 +0,0 @@ -use sc_service::{ChainType, Configuration}; -use sp_core::{ed25519, sr25519, ByteArray, Pair, Public}; -use sp_keystore::{Keystore, KeystorePtr}; -use sp_runtime::{ - key_types::{ACCOUNT, AURA, GRANDPA, IM_ONLINE}, - KeyTypeId, -}; - -/// Helper function to generate a crypto pair from seed. -pub fn get_from_seed(seed: &str) -> ::Public { - TPublic::Pair::from_string(&format!("//{seed}"), None) - .expect("static values are valid; qed") - .public() -} - -/// Inserts a key of type `ACCOUNT` into the keystore for development/testing. -pub fn insert_controller_account_keys_into_keystore( - config: &Configuration, - key_store: Option, -) { - insert_account_keys_into_keystore::( - config, - ACCOUNT, - key_store.clone(), - "acco", - ); - insert_account_keys_into_keystore::( - config, - GRANDPA, - key_store.clone(), - "Grandpa", - ); - insert_account_keys_into_keystore::(config, AURA, key_store.clone(), "Aura"); - insert_account_keys_into_keystore::( - config, - IM_ONLINE, - key_store.clone(), - "ImOnline", - ); -} - -/// Inserts keys of specified type into the keystore. -fn insert_account_keys_into_keystore( - config: &Configuration, - key_type: KeyTypeId, - key_store: Option, - key_name: &str, -) { - let seed = &config.network.node_name[..]; - - let pub_key = get_from_seed::(seed).to_raw_vec(); - if let Some(keystore) = key_store { - let _ = Keystore::insert(&*keystore, key_type, &format!("//{seed}"), &pub_key); - } - - println!("++++++++++++++++++++++++++++++++++++++++++++++++ - AUTO GENERATED KEYS - {:?} key inserted to keystore - Seed : //{:?} - Pubkey : {:?} - STORE THE KEYS SAFELY, NOT TO BE SHARED WITH ANYONE ELSE. - ++++++++++++++++++++++++++++++++++++++++++++++++ - \n", key_name, seed, pub_key); -} - -/// Inserts a key of type `ACCOUNT` into the keystore for development/testing. -/// -/// Currently, this only successfully inserts keys if the seed is development related. -/// i.e. for Alice, Bob, Charlie, etc. -pub fn insert_dev_controller_account_keys_into_keystore( - config: &Configuration, - key_store: Option, -) { - insert_dev_account_keys_into_keystore::(config, ACCOUNT, key_store.clone()); -} - -/// Inserts keys of specified type into the keystore for predefined nodes in development mode. -pub fn insert_dev_account_keys_into_keystore( - config: &Configuration, - key_type: KeyTypeId, - key_store: Option, -) { - let chain_type = config.chain_spec.chain_type(); - let seed = &config.network.node_name[..]; - - match seed { - // When running the chain in dev or local test net, we insert the sr25519 account keys for - // collator accounts or validator accounts into the keystore Only if the node running is one - // of the predefined nodes Alice, Bob, Charlie, Dave, Eve or Ferdie - "Alice" | "Bob" | "Charlie" | "Dave" | "Eve" | "Ferdie" => { - if chain_type == ChainType::Development || chain_type == ChainType::Local { - let pub_key = get_from_seed::(seed).to_raw_vec(); - if let Some(keystore) = key_store { - let _ = Keystore::insert(&*keystore, key_type, &format!("//{seed}"), &pub_key); - } - } - }, - _ => {}, - } -} - -/// Ensures all keys exist in the keystore. -pub fn ensure_all_keys_exist_in_keystore(key_store: KeystorePtr) -> Result<(), String> { - let key_types = [ACCOUNT, GRANDPA, AURA, IM_ONLINE]; - - for key_type in key_types { - // Ensure key is present - if !ensure_keytype_exists_in_keystore(key_type, key_store.clone()) { - println!("{key_type:?} key not found!"); - return Err("Key not found!".to_string()) - } - } - - Ok(()) -} - -/// Checks if a key of a specific type exists in the keystore. -fn ensure_keytype_exists_in_keystore(key_type: KeyTypeId, key_store: KeystorePtr) -> bool { - match Keystore::keys(&key_store, key_type) { - Ok(keys) => !keys.is_empty(), - Err(_) => false, - } -} diff --git a/pallets/dkg/src/weights.rs b/pallets/dkg/src/weights.rs index 783a630d4..815ca1ac6 100644 --- a/pallets/dkg/src/weights.rs +++ b/pallets/dkg/src/weights.rs @@ -21,7 +21,7 @@ //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 128 // Executed Command: -// target/release/tangle-standalone +// target/release/tangle // benchmark // --chain=dev // --steps=50 diff --git a/pallets/jobs/src/weights.rs b/pallets/jobs/src/weights.rs index 17eb3a200..563980616 100644 --- a/pallets/jobs/src/weights.rs +++ b/pallets/jobs/src/weights.rs @@ -21,7 +21,7 @@ //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 128 // Executed Command: -// target/release/tangle-standalone +// target/release/tangle // benchmark // --chain=dev // --steps=50 diff --git a/pallets/roles/src/weights.rs b/pallets/roles/src/weights.rs index bcb3f0e67..e2e30c661 100644 --- a/pallets/roles/src/weights.rs +++ b/pallets/roles/src/weights.rs @@ -21,7 +21,7 @@ //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 128 // Executed Command: -// target/release/tangle-standalone +// target/release/tangle // benchmark // --chain=dev // --steps=50 diff --git a/pallets/transaction-pause/src/weights.rs b/pallets/transaction-pause/src/weights.rs index f616edda7..ecd83dcf4 100644 --- a/pallets/transaction-pause/src/weights.rs +++ b/pallets/transaction-pause/src/weights.rs @@ -23,7 +23,7 @@ //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 128 // Executed Command: -// target/release/tangle-standalone +// target/release/tangle // benchmark // --chain=dev // --steps=50 diff --git a/pallets/zksaas/src/weights.rs b/pallets/zksaas/src/weights.rs index 783a630d4..815ca1ac6 100644 --- a/pallets/zksaas/src/weights.rs +++ b/pallets/zksaas/src/weights.rs @@ -21,7 +21,7 @@ //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 128 // Executed Command: -// target/release/tangle-standalone +// target/release/tangle // benchmark // --chain=dev // --steps=50 diff --git a/primitives/Cargo.toml b/primitives/Cargo.toml index 6337fd3f2..4f7a3e8bd 100644 --- a/primitives/Cargo.toml +++ b/primitives/Cargo.toml @@ -15,7 +15,7 @@ scale-info = { workspace = true } serde = { workspace = true } smallvec = { workspace = true } sp-arithmetic = { workspace = true } -sp-consensus-aura = { workspace = true } +sp-consensus-babe = { workspace = true } sp-core = { workspace = true } sp-runtime = { workspace = true } sp-std = { workspace = true } @@ -40,7 +40,6 @@ std = [ "frame-support/std", "sp-runtime/std", "sp-core/std", - "sp-consensus-aura/std", "ark-std?/std", ] verifying = [ diff --git a/primitives/src/lib.rs b/primitives/src/lib.rs index a2fe9b290..709af70eb 100644 --- a/primitives/src/lib.rs +++ b/primitives/src/lib.rs @@ -22,7 +22,6 @@ use frame_support::{ }; use smallvec::smallvec; use sp_runtime::{ - generic, traits::{BlakeTwo256, IdentifyAccount, Verify}, MultiAddress, MultiSignature, Perbill, }; @@ -57,6 +56,18 @@ pub mod time { pub const MINUTES: BlockNumber = 60_000 / (MILLISECS_PER_BLOCK as BlockNumber); pub const HOURS: BlockNumber = MINUTES * 60; pub const DAYS: BlockNumber = HOURS * 24; + + // 1 in 4 blocks (on average, not counting collisions) will be primary BABE blocks. + pub const PRIMARY_PROBABILITY: (u64, u64) = (1, 4); + + // NOTE: Currently it is not possible to change the epoch duration after the chain has started. + // Attempting to do so will brick block production. + pub const EPOCH_DURATION_IN_BLOCKS: BlockNumber = 10 * MINUTES; + pub const EPOCH_DURATION_IN_SLOTS: u64 = { + const SLOT_FILL_RATE: f64 = MILLISECS_PER_BLOCK as f64 / SLOT_DURATION as f64; + + (EPOCH_DURATION_IN_BLOCKS as f64 * SLOT_FILL_RATE) as u64 + }; } /// Money matters. @@ -165,4 +176,4 @@ pub const MAX_POV_SIZE: u32 = 5 * 1024 * 1024; pub const MAXIMUM_BLOCK_WEIGHT: Weight = Weight::from_parts(WEIGHT_REF_TIME_PER_SECOND, MAX_POV_SIZE as u64); -pub use sp_consensus_aura::sr25519::AuthorityId as AuraId; +pub use sp_consensus_babe::AuthorityId as BabeId; diff --git a/primitives/src/types.rs b/primitives/src/types.rs index 286d89a07..0139b9389 100644 --- a/primitives/src/types.rs +++ b/primitives/src/types.rs @@ -14,13 +14,19 @@ // use super::*; pub mod jobs; -use sp_runtime::AccountId32; +use sp_runtime::{generic, AccountId32, OpaqueExtrinsic}; pub mod roles; -/// Reputation type -pub type Reputation = u128; + +/// Block header type as expected by this runtime. +pub type Header = generic::Header; + +/// Block type as expected by this runtime. +pub type Block = generic::Block; + /// Alias to 512-bit hash when used in the context of a transaction signature on the chain. pub type Signature = MultiSignature; + /// Some way of identifying an account on the chain. We intentionally make it equivalent /// to the public key of our transaction signing scheme. pub type AccountId = <::Signer as IdentifyAccount>::AccountId; @@ -30,18 +36,22 @@ pub struct WrappedAccountId32(pub [u8; 32]); /// The type for looking up accounts. pub type AccountIndex = u32; + /// Balance of an account. pub type Balance = u128; + /// Index of a transaction in the chain. pub type Index = u32; + /// A hash of some data used by the chain. pub type Hash = sp_core::H256; + /// An index to a block. pub type BlockNumber = u64; + /// The address format for describing accounts. pub type Address = MultiAddress; -/// Block header type as expected by this runtime. -pub type Header = generic::Header; + // Moment pub type Moment = u64; diff --git a/runtime/mainnet/Cargo.toml b/runtime/mainnet/Cargo.toml index 70888c746..ba515af53 100644 --- a/runtime/mainnet/Cargo.toml +++ b/runtime/mainnet/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "tangle-mainnet-runtime" +name = "tangle-runtime" version = { workspace = true } authors = { workspace = true } edition = { workspace = true } @@ -28,7 +28,7 @@ pallet-airdrop-claims = { workspace = true } # Substrate dependencies sp-api = { workspace = true } sp-block-builder = { workspace = true } -sp-consensus-aura = { workspace = true } +sp-consensus-babe = { workspace = true } sp-core = { workspace = true } sp-inherents = { workspace = true } sp-io = { workspace = true } @@ -48,7 +48,7 @@ frame-system = { workspace = true } frame-system-benchmarking = { workspace = true, optional = true } frame-system-rpc-runtime-api = { workspace = true } -pallet-aura = { workspace = true } +pallet-babe = { workspace = true } pallet-bags-list = { workspace = true } pallet-session = { workspace = true } @@ -162,14 +162,14 @@ std = [ "sp-block-builder/std", "sp-transaction-pool/std", "sp-inherents/std", - "sp-consensus-aura/std", + "sp-consensus-babe/std", "frame-support/std", "frame-executive/std", "frame-system/std", "frame-system-rpc-runtime-api/std", "frame-election-provider-support/std", "pallet-authorship/std", - "pallet-aura/std", + "pallet-babe/std", "pallet-bags-list/std", "pallet-bounties/std", "pallet-child-bounties/std", diff --git a/runtime/mainnet/src/frontier_evm.rs b/runtime/mainnet/src/frontier_evm.rs index 3c01c5889..e354b8527 100644 --- a/runtime/mainnet/src/frontier_evm.rs +++ b/runtime/mainnet/src/frontier_evm.rs @@ -41,8 +41,8 @@ impl> FindAuthor for FindAuthorTruncated { I: 'a + IntoIterator, { if let Some(author_index) = F::find_author(digests) { - let authority_id = Aura::authorities()[author_index as usize].clone(); - return Some(H160::from_slice(&authority_id.to_raw_vec()[4..24])) + let authority_id = Babe::authorities()[author_index as usize].clone(); + return Some(H160::from_slice(&authority_id.0.to_raw_vec()[4..24])) } None } @@ -151,7 +151,7 @@ impl pallet_evm::Config for Runtime { type OnChargeTransaction = pallet_evm::EVMCurrencyAdapter>; type OnCreate = (); - type FindAuthor = FindAuthorTruncated; + type FindAuthor = FindAuthorTruncated; type GasLimitPovSizeRatio = GasLimitPovSizeRatio; type Timestamp = Timestamp; type WeightInfo = pallet_evm::weights::SubstrateWeight; diff --git a/runtime/mainnet/src/lib.rs b/runtime/mainnet/src/lib.rs index bcb8c4c4d..24295b2d1 100644 --- a/runtime/mainnet/src/lib.rs +++ b/runtime/mainnet/src/lib.rs @@ -94,12 +94,11 @@ use sp_runtime::generic::Era; #[cfg(any(feature = "std", test))] pub use sp_runtime::BuildStorage; pub use sp_runtime::{MultiAddress, Perbill, Percent, Permill}; -use tangle_primitives::AuraId; + pub use tangle_primitives::{ currency::*, fee::*, time::*, AccountId, AccountIndex, Address, Balance, BlockNumber, Hash, - Header, Index, Moment, Reputation, Signature, AVERAGE_ON_INITIALIZE_RATIO, - EPOCH_DURATION_IN_BLOCKS, MAXIMUM_BLOCK_WEIGHT, NORMAL_DISPATCH_RATIO, SESSION_PERIOD_BLOCKS, - UNSIGNED_PROPOSAL_EXPIRY, + Header, Index, Moment, Signature, AVERAGE_ON_INITIALIZE_RATIO, EPOCH_DURATION_IN_BLOCKS, + MAXIMUM_BLOCK_WEIGHT, NORMAL_DISPATCH_RATIO, SESSION_PERIOD_BLOCKS, UNSIGNED_PROPOSAL_EXPIRY, }; use pallet_airdrop_claims::TestWeightInfo; @@ -110,6 +109,13 @@ use pallet_ethereum::{Call::transact, Transaction as EthereumTransaction}; use pallet_evm::{Account as EVMAccount, FeeCalculator, HashedAddressMapping, Runner}; pub type Nonce = u32; +/// The BABE epoch configuration at genesis. +pub const BABE_GENESIS_EPOCH_CONFIG: sp_consensus_babe::BabeEpochConfiguration = + sp_consensus_babe::BabeEpochConfiguration { + c: PRIMARY_PROBABILITY, + allowed_slots: sp_consensus_babe::AllowedSlots::PrimaryAndSecondaryPlainSlots, + }; + /// This runtime version. #[sp_version::runtime_version] pub const VERSION: RuntimeVersion = RuntimeVersion { @@ -164,7 +170,7 @@ pub mod opaque { impl_opaque_keys! { pub struct SessionKeys { - pub aura: Aura, + pub babe: Babe, pub grandpa: Grandpa, pub im_online: ImOnline, } @@ -216,7 +222,7 @@ parameter_types! { impl pallet_timestamp::Config for Runtime { /// A timestamp: milliseconds since the unix epoch. type Moment = u64; - type OnTimestampSet = (); + type OnTimestampSet = Babe; type MinimumPeriod = MinimumPeriod; type WeightInfo = (); } @@ -318,22 +324,28 @@ impl pallet_sudo::Config for Runtime { } parameter_types! { - #[derive(Serialize, Deserialize)] + // NOTE: Currently it is not possible to change the epoch duration after the chain has started. + // Attempting to do so will brick block production. + pub const EpochDuration: u64 = EPOCH_DURATION_IN_SLOTS; + pub const ExpectedBlockTime: Moment = MILLISECS_PER_BLOCK; + pub const ReportLongevity: u64 = + BondingDuration::get() as u64 * SessionsPerEra::get() as u64 * EpochDuration::get(); pub const MaxAuthorities: u32 = 1000; - #[derive(Serialize, Deserialize)] - pub const MaxProposalLength: u32 = 1000; + pub const MaxNominators: u32 = 1000; } -impl pallet_aura::Config for Runtime { - type AuthorityId = AuraId; - type DisabledValidators = (); +impl pallet_babe::Config for Runtime { + type EpochDuration = EpochDuration; + type ExpectedBlockTime = ExpectedBlockTime; + type EpochChangeTrigger = pallet_babe::ExternalTrigger; + type DisabledValidators = Session; + type WeightInfo = (); type MaxAuthorities = MaxAuthorities; - type AllowMultipleBlocksPerSlot = frame_support::traits::ConstBool; -} - -parameter_types! { - pub const ReportLongevity: u64 = - BondingDuration::get() as u64 * SessionsPerEra::get() as u64 * Period::get(); + type MaxNominators = MaxNominatorRewardedPerValidator; + type KeyOwnerProof = + >::Proof; + type EquivocationReportSystem = + pallet_babe::EquivocationReportSystem; } impl pallet_grandpa::Config for Runtime { @@ -352,7 +364,7 @@ parameter_types! { impl pallet_authorship::Config for Runtime { type EventHandler = Staking; - type FindAuthor = pallet_session::FindAccountFromAuthorIndex; + type FindAuthor = pallet_session::FindAccountFromAuthorIndex; } parameter_types! { @@ -1055,7 +1067,7 @@ construct_runtime!( TransactionPayment: pallet_transaction_payment, Authorship: pallet_authorship, - Aura: pallet_aura, + Babe: pallet_babe, Grandpa: pallet_grandpa, Indices: pallet_indices, @@ -1533,13 +1545,52 @@ impl_runtime_apis! { } } - impl sp_consensus_aura::AuraApi for Runtime { - fn slot_duration() -> sp_consensus_aura::SlotDuration { - sp_consensus_aura::SlotDuration::from_millis(Aura::slot_duration()) + impl sp_consensus_babe::BabeApi for Runtime { + fn configuration() -> sp_consensus_babe::BabeConfiguration { + let epoch_config = Babe::epoch_config().unwrap_or(BABE_GENESIS_EPOCH_CONFIG); + sp_consensus_babe::BabeConfiguration { + slot_duration: Babe::slot_duration(), + epoch_length: EpochDuration::get(), + c: epoch_config.c, + authorities: Babe::authorities().to_vec(), + randomness: Babe::randomness(), + allowed_slots: epoch_config.allowed_slots, + } + } + + fn current_epoch_start() -> sp_consensus_babe::Slot { + Babe::current_epoch_start() + } + + fn current_epoch() -> sp_consensus_babe::Epoch { + Babe::current_epoch() } - fn authorities() -> Vec { - Aura::authorities().into_inner() + fn next_epoch() -> sp_consensus_babe::Epoch { + Babe::next_epoch() + } + + fn generate_key_ownership_proof( + _slot: sp_consensus_babe::Slot, + authority_id: sp_consensus_babe::AuthorityId, + ) -> Option { + use parity_scale_codec::Encode; + + Historical::prove((sp_consensus_babe::KEY_TYPE, authority_id)) + .map(|p| p.encode()) + .map(sp_consensus_babe::OpaqueKeyOwnershipProof::new) + } + + fn submit_report_equivocation_unsigned_extrinsic( + equivocation_proof: sp_consensus_babe::EquivocationProof<::Header>, + key_owner_proof: sp_consensus_babe::OpaqueKeyOwnershipProof, + ) -> Option<()> { + let key_owner_proof = key_owner_proof.decode()?; + + Babe::submit_unsigned_equivocation_report( + equivocation_proof, + key_owner_proof, + ) } } diff --git a/runtime/testnet/Cargo.toml b/runtime/testnet/Cargo.toml index 775a2a9a4..a1bee8ff1 100644 --- a/runtime/testnet/Cargo.toml +++ b/runtime/testnet/Cargo.toml @@ -22,13 +22,10 @@ scale-info = { workspace = true } serde = { workspace = true } static_assertions = { workspace = true } -# Webb Substrate Dependencies -pallet-airdrop-claims = { workspace = true } - # Substrate dependencies sp-api = { workspace = true } sp-block-builder = { workspace = true } -sp-consensus-aura = { workspace = true } +sp-consensus-babe = { workspace = true } sp-core = { workspace = true } sp-inherents = { workspace = true } sp-io = { workspace = true } @@ -48,7 +45,7 @@ frame-system = { workspace = true } frame-system-benchmarking = { workspace = true, optional = true } frame-system-rpc-runtime-api = { workspace = true } -pallet-aura = { workspace = true } +pallet-babe = { workspace = true } pallet-bags-list = { workspace = true } pallet-session = { workspace = true } @@ -86,6 +83,7 @@ pallet-utility = { workspace = true } pallet-vesting = { workspace = true } # Webb dependencies +pallet-airdrop-claims = { workspace = true } pallet-dkg = { workspace = true } pallet-zksaas = { workspace = true } pallet-jobs = { workspace = true } @@ -112,6 +110,7 @@ pallet-evm-precompile-ed25519 = { workspace = true } pallet-evm-precompile-modexp = { workspace = true } pallet-evm-precompile-sha3fips = { workspace = true } pallet-evm-precompile-simple = { workspace = true } + pallet-hotfix-sufficients = { workspace = true } ## Moonbeam precompiles @@ -123,8 +122,6 @@ pallet-evm-precompile-proxy = { workspace = true } pallet-evm-precompile-registry = { workspace = true } pallet-evm-precompile-staking = { workspace = true } precompile-utils = { workspace = true } - -## Tangle precompiles pallet-evm-precompile-jobs = { workspace = true } evm-tracer = { workspace = true } @@ -168,14 +165,14 @@ std = [ "sp-block-builder/std", "sp-transaction-pool/std", "sp-inherents/std", - "sp-consensus-aura/std", + "sp-consensus-babe/std", "frame-support/std", "frame-executive/std", "frame-system/std", "frame-system-rpc-runtime-api/std", "frame-election-provider-support/std", "pallet-authorship/std", - "pallet-aura/std", + "pallet-babe/std", "pallet-bags-list/std", "pallet-bounties/std", "pallet-child-bounties/std", @@ -249,7 +246,6 @@ std = [ "pallet-evm-precompile-democracy/std", "pallet-evm-precompile-registry/std", "pallet-evm-precompile-staking/std", - "pallet-evm-precompile-jobs/std", ] integration-tests = ["tangle-primitives/integration-tests"] diff --git a/runtime/testnet/src/frontier_evm.rs b/runtime/testnet/src/frontier_evm.rs index 3c01c5889..e354b8527 100644 --- a/runtime/testnet/src/frontier_evm.rs +++ b/runtime/testnet/src/frontier_evm.rs @@ -41,8 +41,8 @@ impl> FindAuthor for FindAuthorTruncated { I: 'a + IntoIterator, { if let Some(author_index) = F::find_author(digests) { - let authority_id = Aura::authorities()[author_index as usize].clone(); - return Some(H160::from_slice(&authority_id.to_raw_vec()[4..24])) + let authority_id = Babe::authorities()[author_index as usize].clone(); + return Some(H160::from_slice(&authority_id.0.to_raw_vec()[4..24])) } None } @@ -151,7 +151,7 @@ impl pallet_evm::Config for Runtime { type OnChargeTransaction = pallet_evm::EVMCurrencyAdapter>; type OnCreate = (); - type FindAuthor = FindAuthorTruncated; + type FindAuthor = FindAuthorTruncated; type GasLimitPovSizeRatio = GasLimitPovSizeRatio; type Timestamp = Timestamp; type WeightInfo = pallet_evm::weights::SubstrateWeight; diff --git a/runtime/testnet/src/lib.rs b/runtime/testnet/src/lib.rs index 8914da67c..7fa07029c 100644 --- a/runtime/testnet/src/lib.rs +++ b/runtime/testnet/src/lib.rs @@ -43,7 +43,7 @@ pub use pallet_staking::StakerStatus; use pallet_transaction_payment::{ CurrencyAdapter, FeeDetails, Multiplier, RuntimeDispatchInfo, TargetedFeeAdjustment, }; -use parity_scale_codec::{Decode, Encode, MaxEncodedLen}; +use parity_scale_codec::{Decode, Encode}; use serde::{Deserialize, Serialize}; use sp_api::impl_runtime_apis; use sp_core::{crypto::KeyTypeId, OpaqueMetadata, H160, H256, U256}; @@ -61,22 +61,11 @@ use sp_runtime::{ ApplyExtrinsicResult, DispatchResult, FixedPointNumber, FixedU128, Perquintill, SaturatedConversion, }; -use sp_staking::{ - currency_to_vote::U128CurrencyToVote, - offence::{OffenceError, ReportOffence}, - SessionIndex, -}; use sp_std::prelude::*; #[cfg(feature = "std")] use sp_version::NativeVersion; use sp_version::RuntimeVersion; use static_assertions::const_assert; -use tangle_primitives::{ - jobs::{JobResult, JobSubmission, JobType, JobWithResult, ValidatorOffenceType}, - roles::ValidatorRewardDistribution, - traits::jobs::{JobToFee, MPCHandler}, - verifier::{arkworks::ArkworksVerifierGroth16Bn254, circom::CircomVerifierGroth16Bn254}, -}; #[cfg(any(feature = "std", test))] pub use frame_system::Call as SystemCall; @@ -84,7 +73,7 @@ pub use frame_system::Call as SystemCall; pub use frame_support::{ construct_runtime, dispatch::DispatchClass, - pallet_prelude::{Get, RuntimeDebug}, + pallet_prelude::Get, parameter_types, traits::{ ConstU128, ConstU16, ConstU32, Currency, EitherOfDiverse, EqualPrivilegeOnly, Everything, @@ -105,28 +94,46 @@ use sp_runtime::generic::Era; #[cfg(any(feature = "std", test))] pub use sp_runtime::BuildStorage; pub use sp_runtime::{MultiAddress, Perbill, Percent, Permill}; -use tangle_primitives::AuraId; +use sp_staking::{ + currency_to_vote::U128CurrencyToVote, + offence::{OffenceError, ReportOffence}, + SessionIndex, +}; pub use tangle_primitives::{ - currency::*, fee::*, time::*, AccountId, AccountIndex, Address, Balance, BlockNumber, Hash, - Header, Index, Moment, Reputation, Signature, AVERAGE_ON_INITIALIZE_RATIO, - EPOCH_DURATION_IN_BLOCKS, MAXIMUM_BLOCK_WEIGHT, NORMAL_DISPATCH_RATIO, SESSION_PERIOD_BLOCKS, - UNSIGNED_PROPOSAL_EXPIRY, + currency::*, + fee::*, + jobs::{JobResult, JobSubmission, JobType, JobWithResult, ValidatorOffenceType}, + roles::ValidatorRewardDistribution, + time::*, + traits::jobs::{JobToFee, MPCHandler}, + verifier::{arkworks::ArkworksVerifierGroth16Bn254, circom::CircomVerifierGroth16Bn254}, + AccountId, AccountIndex, Address, BabeId, Balance, BlockNumber, Hash, Header, Index, Moment, + Signature, AVERAGE_ON_INITIALIZE_RATIO, EPOCH_DURATION_IN_BLOCKS, MAXIMUM_BLOCK_WEIGHT, + NORMAL_DISPATCH_RATIO, SESSION_PERIOD_BLOCKS, UNSIGNED_PROPOSAL_EXPIRY, }; +use pallet_airdrop_claims::TestWeightInfo; + // Frontier use fp_rpc::TransactionStatus; use pallet_ethereum::{Call::transact, Transaction as EthereumTransaction}; -use pallet_evm::{Account as EVMAccount, FeeCalculator, Runner}; - +use pallet_evm::{Account as EVMAccount, FeeCalculator, HashedAddressMapping, Runner}; pub type Nonce = u32; +/// The BABE epoch configuration at genesis. +pub const BABE_GENESIS_EPOCH_CONFIG: sp_consensus_babe::BabeEpochConfiguration = + sp_consensus_babe::BabeEpochConfiguration { + c: PRIMARY_PROBABILITY, + allowed_slots: sp_consensus_babe::AllowedSlots::PrimaryAndSecondaryPlainSlots, + }; + /// This runtime version. #[sp_version::runtime_version] pub const VERSION: RuntimeVersion = RuntimeVersion { - spec_name: create_runtime_str!("tangle-standalone"), - impl_name: create_runtime_str!("tangle-standalone"), + spec_name: create_runtime_str!("tangle-testnet"), + impl_name: create_runtime_str!("tangle-testnet"), authoring_version: 1, - spec_version: 501, // v0.5.1 + spec_version: 1000, // v1.0.00 impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 1, @@ -174,7 +181,7 @@ pub mod opaque { impl_opaque_keys! { pub struct SessionKeys { - pub aura: Aura, + pub babe: Babe, pub grandpa: Grandpa, pub im_online: ImOnline, } @@ -226,7 +233,7 @@ parameter_types! { impl pallet_timestamp::Config for Runtime { /// A timestamp: milliseconds since the unix epoch. type Moment = u64; - type OnTimestampSet = (); + type OnTimestampSet = Babe; type MinimumPeriod = MinimumPeriod; type WeightInfo = (); } @@ -319,87 +326,6 @@ impl pallet_preimage::Config for Runtime { type WeightInfo = pallet_preimage::weights::SubstrateWeight; } -parameter_types! { - // One storage item; key size 32, value size 8; . - pub const ProxyDepositBase: Balance = deposit(1, 8); - // Additional storage item size of 33 bytes. - pub const ProxyDepositFactor: Balance = deposit(0, 33); - pub const AnnouncementDepositBase: Balance = deposit(1, 8); - pub const AnnouncementDepositFactor: Balance = deposit(0, 66); -} - -// The type used to represent the kinds of proxying allowed. -#[derive( - Copy, - Clone, - Eq, - PartialEq, - Ord, - PartialOrd, - Encode, - Decode, - RuntimeDebug, - MaxEncodedLen, - scale_info::TypeInfo, -)] -pub enum ProxyType { - Any, - NonTransfer, - Governance, - Staking, -} -impl Default for ProxyType { - fn default() -> Self { - Self::Any - } -} -impl InstanceFilter for ProxyType { - fn filter(&self, c: &RuntimeCall) -> bool { - match self { - ProxyType::Any => true, - ProxyType::NonTransfer => !matches!( - c, - RuntimeCall::Balances(..) | - RuntimeCall::Vesting(pallet_vesting::Call::vested_transfer { .. }) - ), - ProxyType::Governance => matches!( - c, - RuntimeCall::Democracy(..) | - RuntimeCall::Council(..) | - RuntimeCall::Elections(..) | - RuntimeCall::Treasury(..) - ), - ProxyType::Staking => { - matches!(c, RuntimeCall::Staking(..)) - }, - } - } - fn is_superset(&self, o: &Self) -> bool { - match (self, o) { - (x, y) if x == y => true, - (ProxyType::Any, _) => true, - (_, ProxyType::Any) => false, - (ProxyType::NonTransfer, _) => true, - _ => false, - } - } -} - -impl pallet_proxy::Config for Runtime { - type RuntimeEvent = RuntimeEvent; - type RuntimeCall = RuntimeCall; - type Currency = Balances; - type ProxyType = ProxyType; - type ProxyDepositBase = ProxyDepositBase; - type ProxyDepositFactor = ProxyDepositFactor; - type MaxProxies = ConstU32<32>; - type WeightInfo = pallet_proxy::weights::SubstrateWeight; - type MaxPending = ConstU32<32>; - type CallHasher = BlakeTwo256; - type AnnouncementDepositBase = AnnouncementDepositBase; - type AnnouncementDepositFactor = AnnouncementDepositFactor; -} - impl pallet_randomness_collective_flip::Config for Runtime {} impl pallet_sudo::Config for Runtime { @@ -409,22 +335,28 @@ impl pallet_sudo::Config for Runtime { } parameter_types! { - #[derive(Serialize, Deserialize)] + // NOTE: Currently it is not possible to change the epoch duration after the chain has started. + // Attempting to do so will brick block production. + pub const EpochDuration: u64 = EPOCH_DURATION_IN_SLOTS; + pub const ExpectedBlockTime: Moment = MILLISECS_PER_BLOCK; + pub const ReportLongevity: u64 = + BondingDuration::get() as u64 * SessionsPerEra::get() as u64 * EpochDuration::get(); pub const MaxAuthorities: u32 = 1000; - #[derive(Serialize, Deserialize)] - pub const MaxProposalLength: u32 = 1000; + pub const MaxNominators: u32 = 1000; } -impl pallet_aura::Config for Runtime { - type AuthorityId = AuraId; - type DisabledValidators = (); +impl pallet_babe::Config for Runtime { + type EpochDuration = EpochDuration; + type ExpectedBlockTime = ExpectedBlockTime; + type EpochChangeTrigger = pallet_babe::ExternalTrigger; + type DisabledValidators = Session; + type WeightInfo = (); type MaxAuthorities = MaxAuthorities; - type AllowMultipleBlocksPerSlot = frame_support::traits::ConstBool; -} - -parameter_types! { - pub const ReportLongevity: u64 = - BondingDuration::get() as u64 * SessionsPerEra::get() as u64 * Period::get(); + type MaxNominators = MaxNominatorRewardedPerValidator; + type KeyOwnerProof = + >::Proof; + type EquivocationReportSystem = + pallet_babe::EquivocationReportSystem; } impl pallet_grandpa::Config for Runtime { @@ -443,7 +375,7 @@ parameter_types! { impl pallet_authorship::Config for Runtime { type EventHandler = Staking; - type FindAuthor = pallet_session::FindAccountFromAuthorIndex; + type FindAuthor = pallet_session::FindAccountFromAuthorIndex; } parameter_types! { @@ -1086,6 +1018,20 @@ impl pallet_eth2_light_client::Config for Runtime { type Currency = Balances; } +parameter_types! { + pub Prefix: &'static [u8] = b"Claim TNTs to the account:"; +} + +impl pallet_airdrop_claims::Config for Runtime { + type RuntimeEvent = RuntimeEvent; + type VestingSchedule = Vesting; + type ForceOrigin = frame_system::EnsureRoot; + type AddressMapping = HashedAddressMapping; + type Prefix = Prefix; + type MoveClaimOrigin = frame_system::EnsureRoot; + type WeightInfo = TestWeightInfo; +} + parameter_types! { pub const JobsPalletId: PalletId = PalletId(*b"py/jobss"); } @@ -1166,7 +1112,7 @@ impl pallet_roles::Config for Runtime { type MaxRolesPerAccount = ConstU32<2>; type MPCHandler = MockMPCHandler; type InflationRewardPerSession = InflationRewardPerSession; - type AuthorityId = AuraId; + type AuthorityId = BabeId; type ValidatorSet = Historical; type ReportOffences = OffenceHandler; type ValidatorRewardDistribution = Reward; @@ -1203,28 +1149,6 @@ impl Contains for BaseFilter { // no paused call return false } - // Following staking pallet calls will be blocked and will be allowed to execute - // through role pallet. - let is_stake_unbound_call = - matches!(call, RuntimeCall::Staking(pallet_staking::Call::unbond { .. })); - - if is_stake_unbound_call { - // no unbond call - return false - } - - // no chill call - if matches!(call, RuntimeCall::Staking(pallet_staking::Call::chill { .. })) { - return false - } - - // no withdraw_unbonded call - let is_stake_withdraw_call = - matches!(call, RuntimeCall::Staking(pallet_staking::Call::withdraw_unbonded { .. })); - - if is_stake_withdraw_call { - return false - } let democracy_related = matches!( call, @@ -1256,7 +1180,7 @@ construct_runtime!( TransactionPayment: pallet_transaction_payment, Authorship: pallet_authorship, - Aura: pallet_aura, + Babe: pallet_babe, Grandpa: pallet_grandpa, Indices: pallet_indices, @@ -1277,7 +1201,6 @@ construct_runtime!( Scheduler: pallet_scheduler, Preimage: pallet_preimage, - Proxy: pallet_proxy, Offences: pallet_offences, TransactionPause: pallet_transaction_pause, @@ -1291,8 +1214,9 @@ construct_runtime!( DynamicFee: pallet_dynamic_fee, BaseFee: pallet_base_fee, HotfixSufficients: pallet_hotfix_sufficients, - Eth2Client: pallet_eth2_light_client, + Claims: pallet_airdrop_claims, + Eth2Client: pallet_eth2_light_client, Roles: pallet_roles, Jobs: pallet_jobs, Dkg: pallet_dkg, @@ -1738,13 +1662,52 @@ impl_runtime_apis! { } } - impl sp_consensus_aura::AuraApi for Runtime { - fn slot_duration() -> sp_consensus_aura::SlotDuration { - sp_consensus_aura::SlotDuration::from_millis(Aura::slot_duration()) + impl sp_consensus_babe::BabeApi for Runtime { + fn configuration() -> sp_consensus_babe::BabeConfiguration { + let epoch_config = Babe::epoch_config().unwrap_or(BABE_GENESIS_EPOCH_CONFIG); + sp_consensus_babe::BabeConfiguration { + slot_duration: Babe::slot_duration(), + epoch_length: EpochDuration::get(), + c: epoch_config.c, + authorities: Babe::authorities().to_vec(), + randomness: Babe::randomness(), + allowed_slots: epoch_config.allowed_slots, + } + } + + fn current_epoch_start() -> sp_consensus_babe::Slot { + Babe::current_epoch_start() + } + + fn current_epoch() -> sp_consensus_babe::Epoch { + Babe::current_epoch() } - fn authorities() -> Vec { - Aura::authorities().into_inner() + fn next_epoch() -> sp_consensus_babe::Epoch { + Babe::next_epoch() + } + + fn generate_key_ownership_proof( + _slot: sp_consensus_babe::Slot, + authority_id: sp_consensus_babe::AuthorityId, + ) -> Option { + use parity_scale_codec::Encode; + + Historical::prove((sp_consensus_babe::KEY_TYPE, authority_id)) + .map(|p| p.encode()) + .map(sp_consensus_babe::OpaqueKeyOwnershipProof::new) + } + + fn submit_report_equivocation_unsigned_extrinsic( + equivocation_proof: sp_consensus_babe::EquivocationProof<::Header>, + key_owner_proof: sp_consensus_babe::OpaqueKeyOwnershipProof, + ) -> Option<()> { + let key_owner_proof = key_owner_proof.decode()?; + + Babe::submit_unsigned_equivocation_report( + equivocation_proof, + key_owner_proof, + ) } } diff --git a/scripts/README.md b/scripts/README.md index eb6c26855..7c600a7ff 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -9,7 +9,7 @@ For running a standalone tangle network, Here are the steps that you need to fol 1. Compile the standalone in the `release` mode: ```sh -cargo b -rp tangle-standalone +cargo b -rp tangle ``` 2. Execute the `run-standalone.sh` script: ```sh diff --git a/scripts/build-standalone-docker.sh b/scripts/build-standalone-docker.sh index d85b721b2..55b82d3ec 100755 --- a/scripts/build-standalone-docker.sh +++ b/scripts/build-standalone-docker.sh @@ -10,7 +10,7 @@ cd "$PROJECT_ROOT" # Find the current version from Cargo.toml VERSION=$(grep "^version" ./standalone/node/Cargo.toml | grep -E -o "([0-9\.]+)") GITUSER=webb-tools -IMAGE_NAME=tangle-standalone +IMAGE_NAME=tangle # Build the image echo "Building ${GITUSER}/${IMAGE_NAME}:latest docker image, hang on!" diff --git a/scripts/ci-dkg-test.sh b/scripts/ci-dkg-test.sh deleted file mode 100755 index 92f821ced..000000000 --- a/scripts/ci-dkg-test.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env bash -set +e - -# launch the standalone network -echo "** Starting standalone network **" - -echo "Cleaning tmp directory" -rm -rf ./tmp -rm -rf ./chainspecs/standalone-local.json - -# The following line ensure we run from the project root -PROJECT_ROOT=$(git rev-parse --show-toplevel) -cd "$PROJECT_ROOT" - -echo "** Generating Standalone local chainspec" -./target/release/tangle-standalone build-spec --chain standalone-local > ./chainspecs/standalone-local.json - -echo "** Inserting keys **" -./scripts/insert_keys.sh - -echo "*** Start Tangle Standalone | Standalone Local Config ***" -# Node 1 -./target/release/tangle-standalone --base-path=./tmp/standalone1 -lerror --chain ./chainspecs/standalone-local.json --validator \ - --rpc-cors all --rpc-methods=unsafe \ - --port 30304 \ - > ~/1.log 2>&1 & -# Node 2 -./target/release/tangle-standalone --base-path=./tmp/standalone2 -lerror --chain ./chainspecs/standalone-local.json --validator \ - --rpc-cors all --rpc-methods=unsafe \ - --port 30305 \ - > ~/2.log 2>&1 & -# Node 3 -./target/release/tangle-standalone --base-path=./tmp/standalone3 -lerror --chain ./chainspecs/standalone-local.json --validator \ - --rpc-cors all --rpc-methods=unsafe \ - --port 30306 \ - > ~/3.log 2>&1 & -# Node 4 -./target/release/tangle-standalone --base-path=./tmp/standalone4 -lerror --chain ./chainspecs/standalone-local.json --validator \ - --rpc-cors all --rpc-methods=unsafe \ - --port 30307 \ - > ~/4.log 2>&1 & -# Node 5 -./target/release/tangle-standalone --base-path=./tmp/standalone5 -linfo --validator --chain ./chainspecs/standalone-local.json \ - --rpc-cors all --rpc-methods=unsafe \ - --port 30308 > ~/5.log 2>&1 & - -# wait for sometime for the network to be ready -echo "** Waiting for testnet to start producing blocks **" -sleep 120 - -echo "** Starting test suite **" - -cd dkg-liveness-test -npm install - -if ! node index.js ; then exit 1 ; fi - -echo "** Liveness testing completed **" - -# trap 'trap - SIGTERM && kill 0' SIGINT SIGTERM EXIT - -exit 0 diff --git a/scripts/run-standalone-local.sh b/scripts/run-standalone-local.sh index 4d2387599..a47392866 100755 --- a/scripts/run-standalone-local.sh +++ b/scripts/run-standalone-local.sh @@ -46,7 +46,7 @@ cd "$PROJECT_ROOT" echo "*** Start Tangle Testnet ***" # Alice -./target/release/tangle-standalone --tmp --chain local --validator -lerror --alice \ +./target/release/tangle --tmp --chain local --validator -lerror --alice \ --rpc-cors all --rpc-methods=unsafe --rpc-external \ --port ${ports[0]} \ --rpc-port 9944 \ @@ -56,7 +56,7 @@ echo "*** Start Tangle Testnet ***" --auto-insert-keys \ --node-key 0000000000000000000000000000000000000000000000000000000000000001 & # Bob -./target/release/tangle-standalone --tmp --chain local --validator -lerror --bob \ +./target/release/tangle --tmp --chain local --validator -lerror --bob \ --rpc-cors all --rpc-methods=unsafe --rpc-external \ --port ${ports[1]} \ --rpc-port 9945 \ @@ -64,7 +64,7 @@ echo "*** Start Tangle Testnet ***" --auto-insert-keys \ --bootnodes /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWEyoppNCUx8Yx66oV9fJnriXwCcXwDDUA2kj6vnc6iDEp & # Charlie -./target/release/tangle-standalone --tmp --chain local --validator -lerror --charlie \ +./target/release/tangle --tmp --chain local --validator -lerror --charlie \ --rpc-cors all --rpc-methods=unsafe --rpc-external \ --port ${ports[1]} \ --rpc-port 9946 \ @@ -72,7 +72,7 @@ echo "*** Start Tangle Testnet ***" --auto-insert-keys \ --bootnodes /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWEyoppNCUx8Yx66oV9fJnriXwCcXwDDUA2kj6vnc6iDEp & # Dave -./target/release/tangle-standalone --tmp --chain local --validator -lerror --dave \ +./target/release/tangle --tmp --chain local --validator -lerror --dave \ --rpc-cors all --rpc-methods=unsafe --rpc-external \ --port ${ports[1]} \ --rpc-port 9947 \ @@ -80,7 +80,7 @@ echo "*** Start Tangle Testnet ***" --auto-insert-keys \ --bootnodes /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWEyoppNCUx8Yx66oV9fJnriXwCcXwDDUA2kj6vnc6iDEp & # Eve -./target/release/tangle-standalone --tmp --chain local --validator -linfo --eve \ +./target/release/tangle --tmp --chain local --validator -linfo --eve \ --rpc-cors all --rpc-methods=unsafe --rpc-external \ --port ${ports[2]} \ --rpc-port 9948 \ diff --git a/types/src/interfaces/lookup.ts b/types/src/interfaces/lookup.ts index 4737026f4..2defccffb 100644 --- a/types/src/interfaces/lookup.ts +++ b/types/src/interfaces/lookup.ts @@ -61,7 +61,7 @@ export default { } }, /** - * Lookup19: frame_system::EventRecord + * Lookup19: frame_system::EventRecord **/ FrameSystemEventRecord: { phase: 'FrameSystemPhase', @@ -1569,7 +1569,7 @@ export default { } }, /** - * Lookup156: frame_support::traits::preimages::Bounded + * Lookup156: frame_support::traits::preimages::Bounded **/ FrameSupportPreimagesBounded: { _enum: { @@ -1725,7 +1725,7 @@ export default { } }, /** - * Lookup167: pallet_election_provider_multi_phase::RawSolution + * Lookup167: pallet_election_provider_multi_phase::RawSolution **/ PalletElectionProviderMultiPhaseRawSolution: { solution: 'TangleMainnetRuntimeNposSolution16', @@ -1733,7 +1733,7 @@ export default { round: 'u32' }, /** - * Lookup168: tangle_mainnet_runtime::NposSolution16 + * Lookup168: tangle_runtime::NposSolution16 **/ TangleMainnetRuntimeNposSolution16: { votes1: 'Vec<(Compact,Compact)>', @@ -1926,7 +1926,7 @@ export default { } }, /** - * Lookup234: tangle_mainnet_runtime::opaque::SessionKeys + * Lookup234: tangle_runtime::opaque::SessionKeys **/ TangleMainnetRuntimeOpaqueSessionKeys: { aura: 'SpConsensusAuraSr25519AppSr25519Public', @@ -2453,7 +2453,7 @@ export default { } }, /** - * Lookup297: tangle_mainnet_runtime::OriginCaller + * Lookup297: tangle_runtime::OriginCaller **/ TangleMainnetRuntimeOriginCaller: { _enum: { @@ -2770,7 +2770,7 @@ export default { amount: 'u128' }, /** - * Lookup340: tangle_mainnet_runtime::RuntimeHoldReason + * Lookup340: tangle_runtime::RuntimeHoldReason **/ TangleMainnetRuntimeRuntimeHoldReason: 'Null', /** @@ -2831,7 +2831,7 @@ export default { _enum: ['NotAssigned', 'NotOwner', 'InUse', 'NotTransfer', 'Permanent'] }, /** - * Lookup364: pallet_democracy::types::ReferendumInfo, Balance> + * Lookup364: pallet_democracy::types::ReferendumInfo, Balance> **/ PalletDemocracyReferendumInfo: { _enum: { @@ -2843,7 +2843,7 @@ export default { } }, /** - * Lookup365: pallet_democracy::types::ReferendumStatus, Balance> + * Lookup365: pallet_democracy::types::ReferendumStatus, Balance> **/ PalletDemocracyReferendumStatus: { end: 'u64', @@ -2962,7 +2962,7 @@ export default { targets: 'Vec' }, /** - * Lookup396: pallet_election_provider_multi_phase::signed::SignedSubmission + * Lookup396: pallet_election_provider_multi_phase::signed::SignedSubmission **/ PalletElectionProviderMultiPhaseSignedSignedSubmission: { who: 'AccountId32', @@ -3287,7 +3287,7 @@ export default { _enum: ['NotEnoughSpaceInUnbondPool', 'PoolNotFound', 'RewardPoolNotFound', 'SubPoolsNotFound', 'BondedStashKilledPrematurely'] }, /** - * Lookup465: pallet_scheduler::Scheduled, BlockNumber, tangle_mainnet_runtime::OriginCaller, sp_core::crypto::AccountId32> + * Lookup465: pallet_scheduler::Scheduled, BlockNumber, tangle_runtime::OriginCaller, sp_core::crypto::AccountId32> **/ PalletSchedulerScheduled: { maybeId: 'Option<[u8;32]>', @@ -3516,7 +3516,7 @@ export default { **/ PalletTransactionPaymentChargeTransactionPayment: 'Compact', /** - * Lookup527: tangle_mainnet_runtime::Runtime + * Lookup527: tangle_runtime::Runtime **/ TangleMainnetRuntimeRuntime: 'Null' };