diff --git a/Cargo.lock b/Cargo.lock index abdc36630..73fc57e11 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -607,7 +607,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.1.0" -source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#c379d9da147b396c95945c536f2bc765480439db" +source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#8132ba015ca1b6d7cc888fa442c064b13e85d2f0" dependencies = [ "finality-grandpa", "frame-support", @@ -622,7 +622,7 @@ dependencies = [ [[package]] name = "bp-message-dispatch" version = "0.1.0" -source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#c379d9da147b396c95945c536f2bc765480439db" +source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#8132ba015ca1b6d7cc888fa442c064b13e85d2f0" dependencies = [ "bp-runtime", "frame-support", @@ -633,7 +633,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.1.0" -source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#c379d9da147b396c95945c536f2bc765480439db" +source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#8132ba015ca1b6d7cc888fa442c064b13e85d2f0" dependencies = [ "bitvec", "bp-runtime", @@ -648,7 +648,7 @@ dependencies = [ [[package]] name = "bp-runtime" version = "0.1.0" -source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#c379d9da147b396c95945c536f2bc765480439db" +source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#8132ba015ca1b6d7cc888fa442c064b13e85d2f0" dependencies = [ "frame-support", "hash-db", @@ -665,7 +665,7 @@ dependencies = [ [[package]] name = "bp-test-utils" version = "0.1.0" -source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#c379d9da147b396c95945c536f2bc765480439db" +source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#8132ba015ca1b6d7cc888fa442c064b13e85d2f0" dependencies = [ "bp-header-chain", "ed25519-dalek", @@ -694,7 +694,7 @@ dependencies = [ [[package]] name = "bridge-runtime-common" version = "0.1.0" -source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#c379d9da147b396c95945c536f2bc765480439db" +source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#8132ba015ca1b6d7cc888fa442c064b13e85d2f0" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -743,7 +743,7 @@ checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" [[package]] name = "bsc-primitives" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "array-bytes", "ethbloom", @@ -982,7 +982,7 @@ dependencies = [ [[package]] name = "common-runtime" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "darwinia-balances", "darwinia-support", @@ -1332,8 +1332,8 @@ dependencies = [ [[package]] name = "crab-runtime" -version = "0.11.6" -source = "git+https://github.com/darwinia-network/darwinia.git?branch=master#8e7403a4089783a165de9eec5c944b6f38b4508c" +version = "0.11.7" +source = "git+https://github.com/darwinia-network/darwinia.git?branch=master#6459922d19dd119000fa807350e98081b1a0a5ed" dependencies = [ "array-bytes", "bp-message-dispatch", @@ -1625,7 +1625,7 @@ dependencies = [ [[package]] name = "darwinia-balances" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "darwinia-balances-rpc-runtime-api", "darwinia-support", @@ -1640,7 +1640,7 @@ dependencies = [ [[package]] name = "darwinia-balances-rpc-runtime-api" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "darwinia-support", "parity-scale-codec", @@ -1652,7 +1652,7 @@ dependencies = [ [[package]] name = "darwinia-bridge-bsc" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "bsc-primitives", "frame-support", @@ -1667,7 +1667,7 @@ dependencies = [ [[package]] name = "darwinia-bridge-ethereum" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "array-bytes", "blake2-rfc", @@ -1690,8 +1690,8 @@ dependencies = [ [[package]] name = "darwinia-bridge-primitives" -version = "0.11.6" -source = "git+https://github.com/darwinia-network/darwinia.git?branch=master#8e7403a4089783a165de9eec5c944b6f38b4508c" +version = "0.11.7" +source = "git+https://github.com/darwinia-network/darwinia.git?branch=master#6459922d19dd119000fa807350e98081b1a0a5ed" dependencies = [ "bp-messages", "bp-runtime", @@ -1741,7 +1741,7 @@ dependencies = [ [[package]] name = "darwinia-claims" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "array-bytes", "darwinia-support", @@ -1758,8 +1758,8 @@ dependencies = [ [[package]] name = "darwinia-common-primitives" -version = "0.11.6" -source = "git+https://github.com/darwinia-network/darwinia.git?branch=master#8e7403a4089783a165de9eec5c944b6f38b4508c" +version = "0.11.7" +source = "git+https://github.com/darwinia-network/darwinia.git?branch=master#6459922d19dd119000fa807350e98081b1a0a5ed" dependencies = [ "parity-scale-codec", "sp-core", @@ -1768,8 +1768,8 @@ dependencies = [ [[package]] name = "darwinia-common-runtime" -version = "0.11.6" -source = "git+https://github.com/darwinia-network/darwinia.git?branch=master#8e7403a4089783a165de9eec5c944b6f38b4508c" +version = "0.11.7" +source = "git+https://github.com/darwinia-network/darwinia.git?branch=master#6459922d19dd119000fa807350e98081b1a0a5ed" dependencies = [ "darwinia-balances", "darwinia-common-primitives", @@ -1788,7 +1788,7 @@ dependencies = [ [[package]] name = "darwinia-democracy" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "darwinia-support", "frame-support", @@ -1803,7 +1803,7 @@ dependencies = [ [[package]] name = "darwinia-elections-phragmen" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "darwinia-support", "frame-support", @@ -1820,7 +1820,7 @@ dependencies = [ [[package]] name = "darwinia-evm" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "array-bytes", "darwinia-balances", @@ -1848,7 +1848,7 @@ dependencies = [ [[package]] name = "darwinia-evm-precompile-bridge-ethereum" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "darwinia-evm", "darwinia-evm-precompile-utils", @@ -1864,7 +1864,7 @@ dependencies = [ [[package]] name = "darwinia-evm-precompile-bridge-s2s" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -1887,7 +1887,7 @@ dependencies = [ [[package]] name = "darwinia-evm-precompile-dispatch" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "darwinia-evm", "darwinia-support", @@ -1902,7 +1902,7 @@ dependencies = [ [[package]] name = "darwinia-evm-precompile-simple" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "dp-evm", "evm", @@ -1914,7 +1914,7 @@ dependencies = [ [[package]] name = "darwinia-evm-precompile-transfer" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "array-bytes", "darwinia-evm", @@ -1939,7 +1939,7 @@ dependencies = [ [[package]] name = "darwinia-evm-precompile-utils" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "darwinia-evm-precompile-utils-macro", "darwinia-support", @@ -1949,7 +1949,7 @@ dependencies = [ [[package]] name = "darwinia-evm-precompile-utils-macro" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "evm", "proc-macro2", @@ -1962,7 +1962,7 @@ dependencies = [ [[package]] name = "darwinia-fee-market" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "bitvec", "bp-messages", @@ -1985,7 +1985,7 @@ dependencies = [ [[package]] name = "darwinia-fee-market-rpc-runtime-api" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "bp-messages", "parity-scale-codec", @@ -1998,7 +1998,7 @@ dependencies = [ [[package]] name = "darwinia-header-mmr" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "ckb-merkle-mountain-range", "darwinia-header-mmr-rpc-runtime-api", @@ -2018,7 +2018,7 @@ dependencies = [ [[package]] name = "darwinia-header-mmr-rpc-runtime-api" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "darwinia-support", "parity-scale-codec", @@ -2031,7 +2031,7 @@ dependencies = [ [[package]] name = "darwinia-relay-authorities" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "darwinia-relay-primitives", "darwinia-support", @@ -2046,7 +2046,7 @@ dependencies = [ [[package]] name = "darwinia-relay-primitives" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "frame-support", "parity-scale-codec", @@ -2057,7 +2057,7 @@ dependencies = [ [[package]] name = "darwinia-relayer-game" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "darwinia-relay-primitives", "darwinia-support", @@ -2071,8 +2071,8 @@ dependencies = [ [[package]] name = "darwinia-runtime" -version = "0.11.6" -source = "git+https://github.com/darwinia-network/darwinia.git?branch=master#8e7403a4089783a165de9eec5c944b6f38b4508c" +version = "0.11.7" +source = "git+https://github.com/darwinia-network/darwinia.git?branch=master#6459922d19dd119000fa807350e98081b1a0a5ed" dependencies = [ "bp-message-dispatch", "bp-messages", @@ -2164,7 +2164,7 @@ dependencies = [ [[package]] name = "darwinia-staking" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "darwinia-staking-rpc-runtime-api", "darwinia-support", @@ -2188,7 +2188,7 @@ dependencies = [ [[package]] name = "darwinia-staking-rpc-runtime-api" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "darwinia-support", "parity-scale-codec", @@ -2200,7 +2200,7 @@ dependencies = [ [[package]] name = "darwinia-support" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "bp-messages", "bp-runtime", @@ -2221,7 +2221,7 @@ dependencies = [ [[package]] name = "darwinia-vesting" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "darwinia-support", "frame-support", @@ -2339,7 +2339,7 @@ checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" [[package]] name = "dp-asset" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "ethereum-types 0.12.1", "parity-scale-codec", @@ -2350,7 +2350,7 @@ dependencies = [ [[package]] name = "dp-consensus" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "ethereum", "parity-scale-codec", @@ -2364,7 +2364,7 @@ dependencies = [ [[package]] name = "dp-contract" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "bp-messages", "dp-asset", @@ -2377,7 +2377,7 @@ dependencies = [ [[package]] name = "dp-evm" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "evm", "impl-trait-for-tuples", @@ -2390,7 +2390,7 @@ dependencies = [ [[package]] name = "dp-fee" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "bp-messages", "frame-support", @@ -2402,7 +2402,7 @@ dependencies = [ [[package]] name = "dp-s2s" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "array-bytes", "bp-message-dispatch", @@ -2418,12 +2418,12 @@ dependencies = [ [[package]] name = "dp-storage" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" [[package]] name = "drml-bridge-primitives" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "bp-messages", "bp-runtime", @@ -2441,7 +2441,7 @@ dependencies = [ [[package]] name = "drml-common-primitives" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "sp-core", "sp-runtime", @@ -2456,7 +2456,7 @@ checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" [[package]] name = "dvm-ethereum" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "darwinia-evm", "darwinia-support", @@ -2485,7 +2485,7 @@ dependencies = [ [[package]] name = "dvm-rpc-runtime-api" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "darwinia-evm", "darwinia-support", @@ -2715,7 +2715,7 @@ dependencies = [ [[package]] name = "ethereum-primitives" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "array-bytes", "ethash", @@ -2878,7 +2878,7 @@ dependencies = [ [[package]] name = "finality-relay" version = "0.1.0" -source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#c379d9da147b396c95945c536f2bc765480439db" +source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#8132ba015ca1b6d7cc888fa442c064b13e85d2f0" dependencies = [ "anyhow", "async-std", @@ -3135,7 +3135,7 @@ dependencies = [ [[package]] name = "from-ethereum-issuing" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "array-bytes", "darwinia-bridge-ethereum", @@ -3159,7 +3159,7 @@ dependencies = [ [[package]] name = "from-substrate-issuing" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "array-bytes", "bp-message-dispatch", @@ -3524,7 +3524,7 @@ dependencies = [ [[package]] name = "headers-relay" version = "0.1.0" -source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#c379d9da147b396c95945c536f2bc765480439db" +source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#8132ba015ca1b6d7cc888fa442c064b13e85d2f0" dependencies = [ "anyhow", "async-std", @@ -4973,7 +4973,7 @@ checksum = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" [[package]] name = "merkle-patricia-trie" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "hashbrown", "keccak-hash", @@ -4996,7 +4996,7 @@ dependencies = [ [[package]] name = "messages-relay" version = "0.1.0" -source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#c379d9da147b396c95945c536f2bc765480439db" +source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#8132ba015ca1b6d7cc888fa442c064b13e85d2f0" dependencies = [ "anyhow", "async-std", @@ -5087,7 +5087,7 @@ dependencies = [ [[package]] name = "module-transaction-pause" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "frame-support", "frame-system", @@ -5461,7 +5461,7 @@ dependencies = [ [[package]] name = "pallet-bridge-dispatch" version = "0.1.0" -source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#c379d9da147b396c95945c536f2bc765480439db" +source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#8132ba015ca1b6d7cc888fa442c064b13e85d2f0" dependencies = [ "bp-message-dispatch", "bp-runtime", @@ -5477,7 +5477,7 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" version = "0.1.0" -source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#c379d9da147b396c95945c536f2bc765480439db" +source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#8132ba015ca1b6d7cc888fa442c064b13e85d2f0" dependencies = [ "bp-header-chain", "bp-runtime", @@ -5498,7 +5498,7 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" version = "0.1.0" -source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#c379d9da147b396c95945c536f2bc765480439db" +source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#8132ba015ca1b6d7cc888fa442c064b13e85d2f0" dependencies = [ "bitvec", "bp-message-dispatch", @@ -5878,7 +5878,7 @@ dependencies = [ [[package]] name = "pangolin-runtime" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "array-bytes", "bp-message-dispatch", @@ -5988,7 +5988,7 @@ dependencies = [ [[package]] name = "pangoro-runtime" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "array-bytes", "bp-header-chain", @@ -6853,7 +6853,7 @@ checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" [[package]] name = "relay-substrate-client" version = "0.1.0" -source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#c379d9da147b396c95945c536f2bc765480439db" +source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#8132ba015ca1b6d7cc888fa442c064b13e85d2f0" dependencies = [ "async-std", "async-trait", @@ -6889,7 +6889,7 @@ dependencies = [ [[package]] name = "relay-utils" version = "0.1.0" -source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#c379d9da147b396c95945c536f2bc765480439db" +source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#8132ba015ca1b6d7cc888fa442c064b13e85d2f0" dependencies = [ "ansi_term", "anyhow", @@ -8917,7 +8917,7 @@ dependencies = [ [[package]] name = "substrate-relay-helper" version = "0.1.0" -source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#c379d9da147b396c95945c536f2bc765480439db" +source = "git+https://github.com/darwinia-network/parity-bridges-common.git?branch=darwinia-v0.11.7#8132ba015ca1b6d7cc888fa442c064b13e85d2f0" dependencies = [ "anyhow", "async-std", @@ -9466,7 +9466,7 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "to-ethereum-backing" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "array-bytes", "darwinia-relay-primitives", @@ -9487,7 +9487,7 @@ dependencies = [ [[package]] name = "to-substrate-backing" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "array-bytes", "bp-message-dispatch", @@ -9513,7 +9513,7 @@ dependencies = [ [[package]] name = "to-tron-backing" version = "2.7.1" -source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#b2009c595cc521e76ef408f5ca7d24fd0036ea04" +source = "git+https://github.com/darwinia-network/darwinia-common.git?branch=darwinia-v0.11.7#26ee7c34518883339a7f863542fd73ea94fb2d2b" dependencies = [ "darwinia-support", "frame-support", diff --git a/components/client-crab-s2s/src/api.rs b/components/client-crab-s2s/src/api.rs index 0cabfab8e..64bf5b1db 100644 --- a/components/client-crab-s2s/src/api.rs +++ b/components/client-crab-s2s/src/api.rs @@ -4,7 +4,9 @@ use darwinia_common_primitives::AccountId; use darwinia_common_primitives::Balance; use darwinia_common_primitives::BlockNumber; use dp_fee::{Order, Relayer}; -use relay_substrate_client::{ChainBase, Client, TransactionSignScheme, UnsignedTransaction}; +use relay_substrate_client::{ + ChainBase, Client, SignParam, TransactionSignScheme, UnsignedTransaction, +}; use relay_utils::relay_loop::Client as RelayLoopClient; use sp_core::storage::StorageKey; use sp_core::{Bytes, Pair}; @@ -95,20 +97,23 @@ impl CrabApi { ) -> anyhow::Result<()> { let signer_id = (*signer.public().as_array_ref()).into(); let genesis_hash = *self.client.genesis_hash(); + let runtime_version = self.client.runtime_version().await?; self.client .submit_signed_extrinsic(signer_id, move |_, transaction_nonce| { - Bytes( - CrabChain::sign_transaction( + Ok(Bytes( + CrabChain::sign_transaction(SignParam { + spec_version: runtime_version.spec_version, + transaction_version: runtime_version.transaction_version, genesis_hash, - &signer, - relay_substrate_client::TransactionEra::immortal(), - UnsignedTransaction::new( + signer, + era: relay_substrate_client::TransactionEra::immortal(), + unsigned: UnsignedTransaction::new( crab_runtime::FeeMarketCall::update_relay_fee(amount).into(), transaction_nonce, ), - ) + }) .encode(), - ) + )) }) .await?; Ok(()) @@ -122,20 +127,23 @@ impl CrabApi { ) -> anyhow::Result<()> { let signer_id = (*signer.public().as_array_ref()).into(); let genesis_hash = *self.client.genesis_hash(); + let runtime_version = self.client.runtime_version().await?; self.client .submit_signed_extrinsic(signer_id, move |_, transaction_nonce| { - Bytes( - CrabChain::sign_transaction( + Ok(Bytes( + CrabChain::sign_transaction(SignParam { + spec_version: runtime_version.spec_version, + transaction_version: runtime_version.transaction_version, genesis_hash, - &signer, - relay_substrate_client::TransactionEra::immortal(), - UnsignedTransaction::new( + signer, + era: relay_substrate_client::TransactionEra::immortal(), + unsigned: UnsignedTransaction::new( crab_runtime::FeeMarketCall::update_locked_collateral(amount).into(), transaction_nonce, ), - ) + }) .encode(), - ) + )) }) .await?; Ok(()) diff --git a/components/client-crab-s2s/src/crab.rs b/components/client-crab-s2s/src/crab.rs index bec964c1a..64413a6c7 100644 --- a/components/client-crab-s2s/src/crab.rs +++ b/components/client-crab-s2s/src/crab.rs @@ -3,8 +3,8 @@ use bridge_traits::bridge::chain::{BridgeChain, ChainCategory}; use codec::{Compact, Decode, Encode}; use relay_substrate_client::{ - BalanceOf, Chain, ChainBase, ChainWithBalances, IndexOf, TransactionEraOf, - TransactionSignScheme, UnsignedTransaction, + BalanceOf, Chain, ChainBase, ChainWithBalances, IndexOf, SignParam, TransactionSignScheme, + UnsignedTransaction, }; use sp_core::{storage::StorageKey, Pair}; use sp_runtime::{generic::SignedPayload, traits::IdentifyAccount}; @@ -63,14 +63,9 @@ impl TransactionSignScheme for CrabChain { type AccountKeyPair = sp_core::sr25519::Pair; type SignedTransaction = crab_runtime::UncheckedExtrinsic; - fn sign_transaction( - genesis_hash: ::Hash, - signer: &Self::AccountKeyPair, - _era: TransactionEraOf, - unsigned: UnsignedTransaction, - ) -> Self::SignedTransaction { + fn sign_transaction(param: SignParam) -> Self::SignedTransaction { let raw_payload = SignedPayload::from_raw( - unsigned.call, + param.unsigned.call.clone(), ( frame_system::CheckSpecVersion::::new(), frame_system::CheckTxVersion::::new(), @@ -78,24 +73,24 @@ impl TransactionSignScheme for CrabChain { frame_system::CheckEra::::from( sp_runtime::generic::Era::Immortal, ), - frame_system::CheckNonce::::from(unsigned.nonce), + frame_system::CheckNonce::::from(param.unsigned.nonce), frame_system::CheckWeight::::new(), pallet_transaction_payment::ChargeTransactionPayment::::from( - unsigned.tip, + param.unsigned.tip, ), ), ( - crab_runtime::VERSION.spec_version, - crab_runtime::VERSION.transaction_version, - genesis_hash, - genesis_hash, //era.signed_payload(genesis_hash), + param.spec_version, + param.transaction_version, + param.genesis_hash, + param.genesis_hash, //era.signed_payload(genesis_hash), (), (), (), ), ); - let signature = raw_payload.using_encoded(|payload| signer.sign(payload)); - let signer: sp_runtime::MultiSigner = signer.public().into(); + let signature = raw_payload.using_encoded(|payload| param.signer.sign(payload)); + let signer: sp_runtime::MultiSigner = param.signer.public().into(); let (call, extra, _) = raw_payload.deconstruct(); crab_runtime::UncheckedExtrinsic::new_signed( diff --git a/components/client-darwinia-s2s/src/api.rs b/components/client-darwinia-s2s/src/api.rs index 1f3b860f4..9775a0dea 100644 --- a/components/client-darwinia-s2s/src/api.rs +++ b/components/client-darwinia-s2s/src/api.rs @@ -4,7 +4,9 @@ use darwinia_common_primitives::AccountId; use darwinia_common_primitives::Balance; use darwinia_common_primitives::BlockNumber; use dp_fee::{Order, Relayer}; -use relay_substrate_client::{ChainBase, Client, TransactionSignScheme, UnsignedTransaction}; +use relay_substrate_client::{ + ChainBase, Client, SignParam, TransactionSignScheme, UnsignedTransaction, +}; use relay_utils::relay_loop::Client as RelayLoopClient; use sp_core::storage::StorageKey; use sp_core::{Bytes, Pair}; @@ -95,20 +97,23 @@ impl DarwiniaApi { ) -> anyhow::Result<()> { let signer_id = (*signer.public().as_array_ref()).into(); let genesis_hash = *self.client.genesis_hash(); + let runtime_version = self.client.runtime_version().await?; self.client .submit_signed_extrinsic(signer_id, move |_, transaction_nonce| { - Bytes( - DarwiniaChain::sign_transaction( + Ok(Bytes( + DarwiniaChain::sign_transaction(SignParam { + spec_version: runtime_version.spec_version, + transaction_version: runtime_version.transaction_version, genesis_hash, - &signer, - relay_substrate_client::TransactionEra::immortal(), - UnsignedTransaction::new( + signer, + era: relay_substrate_client::TransactionEra::immortal(), + unsigned: UnsignedTransaction::new( darwinia_runtime::FeeMarketCall::update_relay_fee(amount).into(), transaction_nonce, ), - ) + }) .encode(), - ) + )) }) .await?; Ok(()) @@ -122,21 +127,24 @@ impl DarwiniaApi { ) -> anyhow::Result<()> { let signer_id = (*signer.public().as_array_ref()).into(); let genesis_hash = *self.client.genesis_hash(); + let runtime_version = self.client.runtime_version().await?; self.client .submit_signed_extrinsic(signer_id, move |_, transaction_nonce| { - Bytes( - DarwiniaChain::sign_transaction( + Ok(Bytes( + DarwiniaChain::sign_transaction(SignParam { + spec_version: runtime_version.spec_version, + transaction_version: runtime_version.transaction_version, genesis_hash, - &signer, - relay_substrate_client::TransactionEra::immortal(), - UnsignedTransaction::new( + signer, + era: relay_substrate_client::TransactionEra::immortal(), + unsigned: UnsignedTransaction::new( darwinia_runtime::FeeMarketCall::update_locked_collateral(amount) .into(), transaction_nonce, ), - ) + }) .encode(), - ) + )) }) .await?; Ok(()) diff --git a/components/client-darwinia-s2s/src/darwinia.rs b/components/client-darwinia-s2s/src/darwinia.rs index f18344af5..08a74ed32 100644 --- a/components/client-darwinia-s2s/src/darwinia.rs +++ b/components/client-darwinia-s2s/src/darwinia.rs @@ -3,8 +3,8 @@ use std::time::Duration; use bridge_traits::bridge::chain::{BridgeChain, ChainCategory}; use codec::{Compact, Decode, Encode}; use relay_substrate_client::{ - BalanceOf, Chain, ChainBase, ChainWithBalances, IndexOf, TransactionEraOf, - TransactionSignScheme, UnsignedTransaction, + BalanceOf, Chain, ChainBase, ChainWithBalances, IndexOf, SignParam, TransactionSignScheme, + UnsignedTransaction, }; use sp_core::{storage::StorageKey, Pair}; use sp_runtime::{generic::SignedPayload, traits::IdentifyAccount}; @@ -65,37 +65,32 @@ impl TransactionSignScheme for DarwiniaChain { type AccountKeyPair = sp_core::sr25519::Pair; type SignedTransaction = darwinia_runtime::UncheckedExtrinsic; - fn sign_transaction( - genesis_hash: ::Hash, - signer: &Self::AccountKeyPair, - _era: TransactionEraOf, - unsigned: UnsignedTransaction, - ) -> Self::SignedTransaction { + fn sign_transaction(param: SignParam) -> Self::SignedTransaction { let raw_payload = SignedPayload::from_raw( - unsigned.call, + param.unsigned.call.clone(), ( frame_system::CheckSpecVersion::::new(), frame_system::CheckTxVersion::::new(), frame_system::CheckGenesis::::new(), frame_system::CheckEra::::from(sp_runtime::generic::Era::Immortal), - frame_system::CheckNonce::::from(unsigned.nonce), + frame_system::CheckNonce::::from(param.unsigned.nonce), frame_system::CheckWeight::::new(), - pallet_transaction_payment::ChargeTransactionPayment::::from(unsigned.tip), + pallet_transaction_payment::ChargeTransactionPayment::::from(param.unsigned.tip), darwinia_bridge_ethereum::CheckEthereumRelayHeaderParcel::::new(), ), ( - darwinia_runtime::VERSION.spec_version, - darwinia_runtime::VERSION.transaction_version, - genesis_hash, - genesis_hash, // era.signed_payload(genesis_hash), + param.spec_version, + param.transaction_version, + param.genesis_hash, + param.genesis_hash, // era.signed_payload(genesis_hash), (), (), (), (), ), ); - let signature = raw_payload.using_encoded(|payload| signer.sign(payload)); - let signer: sp_runtime::MultiSigner = signer.public().into(); + let signature = raw_payload.using_encoded(|payload| param.signer.sign(payload)); + let signer: sp_runtime::MultiSigner = param.signer.public().into(); let (call, extra, _) = raw_payload.deconstruct(); darwinia_runtime::UncheckedExtrinsic::new_signed( diff --git a/components/client-pangolin-s2s/src/api.rs b/components/client-pangolin-s2s/src/api.rs index 1b3610478..afda9addd 100644 --- a/components/client-pangolin-s2s/src/api.rs +++ b/components/client-pangolin-s2s/src/api.rs @@ -4,7 +4,9 @@ use dp_fee::{Order, Relayer}; use drml_common_primitives::AccountId; use drml_common_primitives::Balance; use drml_common_primitives::BlockNumber; -use relay_substrate_client::{ChainBase, Client, TransactionSignScheme, UnsignedTransaction}; +use relay_substrate_client::{ + ChainBase, Client, SignParam, TransactionSignScheme, UnsignedTransaction, +}; use relay_utils::relay_loop::Client as RelayLoopClient; use sp_core::storage::StorageKey; use sp_core::{Bytes, Pair}; @@ -97,20 +99,23 @@ impl PangolinApi { ) -> anyhow::Result<()> { let signer_id = (*signer.public().as_array_ref()).into(); let genesis_hash = *self.client.genesis_hash(); + let runtime_version = self.client.runtime_version().await?; self.client .submit_signed_extrinsic(signer_id, move |_, transaction_nonce| { - Bytes( - PangolinChain::sign_transaction( + Ok(Bytes( + PangolinChain::sign_transaction(SignParam { + spec_version: runtime_version.spec_version, + transaction_version: runtime_version.transaction_version, genesis_hash, - &signer, - relay_substrate_client::TransactionEra::immortal(), - UnsignedTransaction::new( + signer, + era: relay_substrate_client::TransactionEra::immortal(), + unsigned: UnsignedTransaction::new( pangolin_runtime::FeeMarketCall::update_relay_fee(amount).into(), transaction_nonce, ), - ) + }) .encode(), - ) + )) }) .await?; Ok(()) @@ -124,21 +129,24 @@ impl PangolinApi { ) -> anyhow::Result<()> { let signer_id = (*signer.public().as_array_ref()).into(); let genesis_hash = *self.client.genesis_hash(); + let runtime_version = self.client.runtime_version().await?; self.client .submit_signed_extrinsic(signer_id, move |_, transaction_nonce| { - Bytes( - PangolinChain::sign_transaction( + Ok(Bytes( + PangolinChain::sign_transaction(SignParam { + spec_version: runtime_version.spec_version, + transaction_version: runtime_version.transaction_version, genesis_hash, - &signer, - relay_substrate_client::TransactionEra::immortal(), - UnsignedTransaction::new( + signer, + era: relay_substrate_client::TransactionEra::immortal(), + unsigned: UnsignedTransaction::new( pangolin_runtime::FeeMarketCall::update_locked_collateral(amount) .into(), transaction_nonce, ), - ) + }) .encode(), - ) + )) }) .await?; Ok(()) diff --git a/components/client-pangolin-s2s/src/pangolin.rs b/components/client-pangolin-s2s/src/pangolin.rs index 3394074ff..dfd8b0d68 100644 --- a/components/client-pangolin-s2s/src/pangolin.rs +++ b/components/client-pangolin-s2s/src/pangolin.rs @@ -3,8 +3,8 @@ use std::time::Duration; use bridge_traits::bridge::chain::{BridgeChain, ChainCategory}; use codec::{Compact, Decode, Encode}; use relay_substrate_client::{ - BalanceOf, Chain, ChainBase, ChainWithBalances, IndexOf, TransactionEraOf, - TransactionSignScheme, UnsignedTransaction, + BalanceOf, Chain, ChainBase, ChainWithBalances, IndexOf, SignParam, TransactionSignScheme, + UnsignedTransaction, }; use sp_core::{storage::StorageKey, Pair}; use sp_runtime::{generic::SignedPayload, traits::IdentifyAccount}; @@ -63,37 +63,32 @@ impl TransactionSignScheme for PangolinChain { type AccountKeyPair = sp_core::sr25519::Pair; type SignedTransaction = pangolin_runtime::UncheckedExtrinsic; - fn sign_transaction( - genesis_hash: ::Hash, - signer: &Self::AccountKeyPair, - _era: TransactionEraOf, - unsigned: UnsignedTransaction, - ) -> Self::SignedTransaction { + fn sign_transaction(param: SignParam) -> Self::SignedTransaction { let raw_payload = SignedPayload::from_raw( - unsigned.call, + param.unsigned.call.clone(), ( frame_system::CheckSpecVersion::::new(), frame_system::CheckTxVersion::::new(), frame_system::CheckGenesis::::new(), frame_system::CheckEra::::from(sp_runtime::generic::Era::Immortal), - frame_system::CheckNonce::::from(unsigned.nonce), + frame_system::CheckNonce::::from(param.unsigned.nonce), frame_system::CheckWeight::::new(), - pallet_transaction_payment::ChargeTransactionPayment::::from(unsigned.tip), + pallet_transaction_payment::ChargeTransactionPayment::::from(param.unsigned.tip), darwinia_bridge_ethereum::CheckEthereumRelayHeaderParcel::::new(), ), ( - pangolin_runtime::VERSION.spec_version, - pangolin_runtime::VERSION.transaction_version, - genesis_hash, - genesis_hash, // era.signed_payload(genesis_hash), + param.spec_version, + param.transaction_version, + param.genesis_hash, + param.genesis_hash, // era.signed_payload(genesis_hash), (), (), (), (), ), ); - let signature = raw_payload.using_encoded(|payload| signer.sign(payload)); - let signer: sp_runtime::MultiSigner = signer.public().into(); + let signature = raw_payload.using_encoded(|payload| param.signer.sign(payload)); + let signer: sp_runtime::MultiSigner = param.signer.public().into(); let (call, extra, _) = raw_payload.deconstruct(); pangolin_runtime::UncheckedExtrinsic::new_signed( diff --git a/components/client-pangoro-s2s/src/api.rs b/components/client-pangoro-s2s/src/api.rs index b03658378..3b3d73588 100644 --- a/components/client-pangoro-s2s/src/api.rs +++ b/components/client-pangoro-s2s/src/api.rs @@ -4,7 +4,9 @@ use dp_fee::{Order, Relayer}; use drml_common_primitives::AccountId; use drml_common_primitives::Balance; use drml_common_primitives::BlockNumber; -use relay_substrate_client::{ChainBase, Client, TransactionSignScheme, UnsignedTransaction}; +use relay_substrate_client::{ + ChainBase, Client, SignParam, TransactionSignScheme, UnsignedTransaction, +}; use relay_utils::relay_loop::Client as RelayLoopClient; use sp_core::storage::StorageKey; use sp_core::{Bytes, Pair}; @@ -97,20 +99,23 @@ impl PangoroApi { ) -> anyhow::Result<()> { let signer_id = (*signer.public().as_array_ref()).into(); let genesis_hash = *self.client.genesis_hash(); + let runtime_version = self.client.runtime_version().await?; self.client .submit_signed_extrinsic(signer_id, move |_, transaction_nonce| { - Bytes( - PangoroChain::sign_transaction( + Ok(Bytes( + PangoroChain::sign_transaction(SignParam { + spec_version: runtime_version.spec_version, + transaction_version: runtime_version.transaction_version, genesis_hash, - &signer, - relay_substrate_client::TransactionEra::immortal(), - UnsignedTransaction::new( + signer, + era: relay_substrate_client::TransactionEra::immortal(), + unsigned: UnsignedTransaction::new( pangoro_runtime::FeeMarketCall::update_relay_fee(amount).into(), transaction_nonce, ), - ) + }) .encode(), - ) + )) }) .await?; Ok(()) @@ -124,20 +129,23 @@ impl PangoroApi { ) -> anyhow::Result<()> { let signer_id = (*signer.public().as_array_ref()).into(); let genesis_hash = *self.client.genesis_hash(); + let runtime_version = self.client.runtime_version().await?; self.client .submit_signed_extrinsic(signer_id, move |_, transaction_nonce| { - Bytes( - PangoroChain::sign_transaction( + Ok(Bytes( + PangoroChain::sign_transaction(SignParam { + spec_version: runtime_version.spec_version, + transaction_version: runtime_version.transaction_version, genesis_hash, - &signer, - relay_substrate_client::TransactionEra::immortal(), - UnsignedTransaction::new( + signer, + era: relay_substrate_client::TransactionEra::immortal(), + unsigned: UnsignedTransaction::new( pangoro_runtime::FeeMarketCall::update_locked_collateral(amount).into(), transaction_nonce, ), - ) + }) .encode(), - ) + )) }) .await?; Ok(()) diff --git a/components/client-pangoro-s2s/src/pangoro.rs b/components/client-pangoro-s2s/src/pangoro.rs index c3d2965e6..dd61022a4 100644 --- a/components/client-pangoro-s2s/src/pangoro.rs +++ b/components/client-pangoro-s2s/src/pangoro.rs @@ -3,8 +3,8 @@ use bridge_traits::bridge::chain::{BridgeChain, ChainCategory}; use codec::{Compact, Decode, Encode}; use relay_substrate_client::{ - BalanceOf, Chain, ChainBase, ChainWithBalances, IndexOf, TransactionEraOf, - TransactionSignScheme, UnsignedTransaction, + BalanceOf, Chain, ChainBase, ChainWithBalances, IndexOf, SignParam, TransactionSignScheme, + UnsignedTransaction, }; use sp_core::{storage::StorageKey, Pair}; use sp_runtime::{generic::SignedPayload, traits::IdentifyAccount}; @@ -61,35 +61,30 @@ impl TransactionSignScheme for PangoroChain { type AccountKeyPair = sp_core::sr25519::Pair; type SignedTransaction = pangoro_runtime::UncheckedExtrinsic; - fn sign_transaction( - genesis_hash: ::Hash, - signer: &Self::AccountKeyPair, - _era: TransactionEraOf, - unsigned: UnsignedTransaction, - ) -> Self::SignedTransaction { + fn sign_transaction(param: SignParam) -> Self::SignedTransaction { let raw_payload = SignedPayload::from_raw( - unsigned.call, + param.unsigned.call.clone(), ( frame_system::CheckSpecVersion::::new(), frame_system::CheckTxVersion::::new(), frame_system::CheckGenesis::::new(), frame_system::CheckEra::::from(sp_runtime::generic::Era::Immortal), - frame_system::CheckNonce::::from(unsigned.nonce), + frame_system::CheckNonce::::from(param.unsigned.nonce), frame_system::CheckWeight::::new(), - pallet_transaction_payment::ChargeTransactionPayment::::from(unsigned.tip), + pallet_transaction_payment::ChargeTransactionPayment::::from(param.unsigned.tip), ), ( - pangoro_runtime::VERSION.spec_version, - pangoro_runtime::VERSION.transaction_version, - genesis_hash, - genesis_hash, //era.signed_payload(genesis_hash), + param.spec_version, + param.transaction_version, + param.genesis_hash, + param.genesis_hash, //era.signed_payload(genesis_hash), (), (), (), ), ); - let signature = raw_payload.using_encoded(|payload| signer.sign(payload)); - let signer: sp_runtime::MultiSigner = signer.public().into(); + let signature = raw_payload.using_encoded(|payload| param.signer.sign(payload)); + let signer: sp_runtime::MultiSigner = param.signer.public().into(); let (call, extra, _) = raw_payload.deconstruct(); pangoro_runtime::UncheckedExtrinsic::new_signed( diff --git a/task/task-darwinia-crab/src/chains/crab.rs b/task/task-darwinia-crab/src/chains/crab.rs index 68d71bc01..0b39b8617 100644 --- a/task/task-darwinia-crab/src/chains/crab.rs +++ b/task/task-darwinia-crab/src/chains/crab.rs @@ -63,7 +63,9 @@ mod s2s_const { mod s2s_headers { use bp_header_chain::justification::GrandpaJustification; use codec::Encode; - use relay_substrate_client::{Client, IndexOf, TransactionSignScheme, UnsignedTransaction}; + use relay_substrate_client::{ + Client, IndexOf, SignParam, TransactionSignScheme, UnsignedTransaction, + }; use sp_core::{Bytes, Pair}; use substrate_relay_helper::finality_pipeline::{ SubstrateFinalitySyncPipeline, SubstrateFinalityToSubstrate, @@ -103,6 +105,7 @@ mod s2s_headers { } } + #[async_trait::async_trait] impl SubstrateFinalitySyncPipeline for CrabFinalityToDarwinia { type FinalitySyncPipeline = FinalityPipelineCrabFinalityToDarwinia; @@ -115,13 +118,13 @@ mod s2s_headers { (*self.finality_pipeline.target_sign.public().as_array_ref()).into() } - fn make_submit_finality_proof_transaction( + async fn make_submit_finality_proof_transaction( &self, era: bp_runtime::TransactionEraOf, transaction_nonce: IndexOf, header: component_crab_s2s::SyncHeader, proof: GrandpaJustification, - ) -> Bytes { + ) -> relay_substrate_client::Result { let call = darwinia_runtime::BridgeGrandpaCall::< darwinia_runtime::Runtime, darwinia_runtime::WithCrabGrandpa, @@ -129,14 +132,21 @@ mod s2s_headers { .into(); let genesis_hash = *self.finality_pipeline.target_client.genesis_hash(); - let transaction = DarwiniaChain::sign_transaction( + let runtime_version = self + .finality_pipeline + .target_client + .runtime_version() + .await?; + let transaction = DarwiniaChain::sign_transaction(SignParam { + spec_version: runtime_version.spec_version, + transaction_version: runtime_version.transaction_version, genesis_hash, - &self.finality_pipeline.target_sign, + signer: self.finality_pipeline.target_sign.clone(), era, - UnsignedTransaction::new(call, transaction_nonce), - ); + unsigned: UnsignedTransaction::new(call, transaction_nonce), + }); - Bytes(transaction.encode()) + Ok(Bytes(transaction.encode())) } } @@ -152,7 +162,9 @@ mod s2s_messages { use frame_support::dispatch::GetDispatchInfo; use frame_support::weights::Weight; use messages_relay::message_lane::MessageLane; - use relay_substrate_client::{Client, IndexOf, TransactionSignScheme, UnsignedTransaction}; + use relay_substrate_client::{ + Client, IndexOf, SignParam, TransactionSignScheme, UnsignedTransaction, + }; use relay_utils::metrics::MetricsParams; use sp_core::{Bytes, Pair}; use substrate_relay_helper::messages_lane::{ @@ -185,6 +197,7 @@ mod s2s_messages { message_lane: MessageLaneCrabMessagesToDarwinia, } + #[async_trait::async_trait] impl SubstrateMessageLane for CrabMessagesToDarwinia { type MessageLane = MessageLaneCrabMessagesToDarwinia; @@ -221,12 +234,12 @@ mod s2s_messages { (*self.message_lane.source_sign.public().as_array_ref()).into() } - fn make_messages_receiving_proof_transaction( + async fn make_messages_receiving_proof_transaction( &self, transaction_nonce: IndexOf, _generated_at_block: component_darwinia_s2s::HeaderId, proof: ::MessagesReceivingProof, - ) -> Bytes { + ) -> relay_substrate_client::Result { let (relayers_state, proof) = proof; let call: crab_runtime::Call = crab_runtime::BridgeMessagesCall::receive_messages_delivery_proof::< @@ -236,12 +249,15 @@ mod s2s_messages { .into(); let call_weight = call.get_dispatch_info().weight; let genesis_hash = *self.message_lane.source_client.genesis_hash(); - let transaction = CrabChain::sign_transaction( + let runtime_version = self.message_lane.source_client.runtime_version().await?; + let transaction = CrabChain::sign_transaction(SignParam { + spec_version: runtime_version.spec_version, + transaction_version: runtime_version.transaction_version, genesis_hash, - &self.message_lane.source_sign, - relay_substrate_client::TransactionEra::immortal(), - UnsignedTransaction::new(call, transaction_nonce), - ); + signer: self.message_lane.source_sign.clone(), + era: relay_substrate_client::TransactionEra::immortal(), + unsigned: UnsignedTransaction::new(call, transaction_nonce), + }); log::trace!( target: "bridge", "Prepared {} -> {} confirmation transaction. Weight: {}/{}, size: {}/{}", @@ -252,20 +268,20 @@ mod s2s_messages { transaction.encode().len(), darwinia_common_runtime::max_extrinsic_size(), ); - Bytes(transaction.encode()) + Ok(Bytes(transaction.encode())) } fn target_transactions_author(&self) -> darwinia_common_primitives::AccountId { (*self.message_lane.target_sign.public().as_array_ref()).into() } - fn make_messages_delivery_transaction( + async fn make_messages_delivery_transaction( &self, transaction_nonce: IndexOf, _generated_at_header: component_crab_s2s::HeaderId, _nonces: RangeInclusive, proof: ::MessagesProof, - ) -> Bytes { + ) -> relay_substrate_client::Result { let (dispatch_weight, proof) = proof; let FromBridgedChainMessagesProof { ref nonces_start, @@ -286,12 +302,15 @@ mod s2s_messages { .into(); let call_weight = call.get_dispatch_info().weight; let genesis_hash = *self.message_lane.target_client.genesis_hash(); - let transaction = DarwiniaChain::sign_transaction( + let runtime_version = self.message_lane.source_client.runtime_version().await?; + let transaction = DarwiniaChain::sign_transaction(SignParam { + spec_version: runtime_version.spec_version, + transaction_version: runtime_version.transaction_version, genesis_hash, - &self.message_lane.target_sign, - relay_substrate_client::TransactionEra::immortal(), - UnsignedTransaction::new(call, transaction_nonce), - ); + signer: self.message_lane.target_sign.clone(), + era: relay_substrate_client::TransactionEra::immortal(), + unsigned: UnsignedTransaction::new(call, transaction_nonce), + }); log::trace!( target: "bridge", "Prepared {} -> {} delivery transaction. Weight: {}/{}, size: {}/{}", @@ -302,7 +321,7 @@ mod s2s_messages { transaction.encode().len(), darwinia_common_runtime::max_extrinsic_size(), ); - Bytes(transaction.encode()) + Ok(Bytes(transaction.encode())) } } diff --git a/task/task-darwinia-crab/src/chains/darwinia.rs b/task/task-darwinia-crab/src/chains/darwinia.rs index 87fa5e3f9..d8914e00a 100644 --- a/task/task-darwinia-crab/src/chains/darwinia.rs +++ b/task/task-darwinia-crab/src/chains/darwinia.rs @@ -62,7 +62,9 @@ mod s2s_const { mod s2s_headers { use bp_header_chain::justification::GrandpaJustification; use codec::Encode; - use relay_substrate_client::{Client, IndexOf, TransactionSignScheme, UnsignedTransaction}; + use relay_substrate_client::{ + Client, IndexOf, SignParam, TransactionSignScheme, UnsignedTransaction, + }; use sp_core::{Bytes, Pair}; use substrate_relay_helper::finality_pipeline::{ SubstrateFinalitySyncPipeline, SubstrateFinalityToSubstrate, @@ -102,6 +104,7 @@ mod s2s_headers { } } + #[async_trait::async_trait] impl SubstrateFinalitySyncPipeline for DarwiniaFinalityToCrab { type FinalitySyncPipeline = FinalityPipelineDarwiniaFinalityToCrab; @@ -114,13 +117,13 @@ mod s2s_headers { (*self.finality_pipeline.target_sign.public().as_array_ref()).into() } - fn make_submit_finality_proof_transaction( + async fn make_submit_finality_proof_transaction( &self, era: bp_runtime::TransactionEraOf, transaction_nonce: IndexOf, header: component_darwinia_s2s::SyncHeader, proof: GrandpaJustification, - ) -> Bytes { + ) -> relay_substrate_client::Result { let call = crab_runtime::BridgeGrandpaCall::< crab_runtime::Runtime, crab_runtime::WithDarwiniaGrandpa, @@ -128,14 +131,21 @@ mod s2s_headers { .into(); let genesis_hash = *self.finality_pipeline.target_client.genesis_hash(); - let transaction = CrabChain::sign_transaction( + let runtime_version = self + .finality_pipeline + .target_client + .runtime_version() + .await?; + let transaction = CrabChain::sign_transaction(SignParam { + spec_version: runtime_version.spec_version, + transaction_version: runtime_version.transaction_version, genesis_hash, - &self.finality_pipeline.target_sign, + signer: self.finality_pipeline.target_sign.clone(), era, - UnsignedTransaction::new(call, transaction_nonce), - ); + unsigned: UnsignedTransaction::new(call, transaction_nonce), + }); - Bytes(transaction.encode()) + Ok(Bytes(transaction.encode())) } } @@ -151,7 +161,9 @@ mod s2s_messages { use frame_support::dispatch::GetDispatchInfo; use frame_support::weights::Weight; use messages_relay::message_lane::MessageLane; - use relay_substrate_client::{Client, IndexOf, TransactionSignScheme, UnsignedTransaction}; + use relay_substrate_client::{ + Client, IndexOf, SignParam, TransactionSignScheme, UnsignedTransaction, + }; use relay_utils::metrics::MetricsParams; use sp_core::{Bytes, Pair}; use substrate_relay_helper::messages_lane::{ @@ -184,6 +196,7 @@ mod s2s_messages { message_lane: MessageLaneDarwiniaMessagesToPangoro, } + #[async_trait::async_trait] impl SubstrateMessageLane for DarwiniaMessagesToPangoro { type MessageLane = MessageLaneDarwiniaMessagesToPangoro; @@ -220,12 +233,12 @@ mod s2s_messages { (*self.message_lane.source_sign.public().as_array_ref()).into() } - fn make_messages_receiving_proof_transaction( + async fn make_messages_receiving_proof_transaction( &self, transaction_nonce: IndexOf, _generated_at_block: component_crab_s2s::HeaderId, proof: ::MessagesReceivingProof, - ) -> Bytes { + ) -> relay_substrate_client::Result { let (relayers_state, proof) = proof; let call: darwinia_runtime::Call = darwinia_runtime::BridgeMessagesCall::receive_messages_delivery_proof::< @@ -235,12 +248,15 @@ mod s2s_messages { .into(); let call_weight = call.get_dispatch_info().weight; let genesis_hash = *self.message_lane.source_client.genesis_hash(); - let transaction = DarwiniaChain::sign_transaction( + let runtime_version = self.message_lane.source_client.runtime_version().await?; + let transaction = DarwiniaChain::sign_transaction(SignParam { + spec_version: runtime_version.spec_version, + transaction_version: runtime_version.transaction_version, genesis_hash, - &self.message_lane.source_sign, - relay_substrate_client::TransactionEra::immortal(), - UnsignedTransaction::new(call, transaction_nonce), - ); + signer: self.message_lane.source_sign.clone(), + era: relay_substrate_client::TransactionEra::immortal(), + unsigned: UnsignedTransaction::new(call, transaction_nonce), + }); log::trace!( target: "bridge", "Prepared {} -> {} confirmation transaction. Weight: {}/{}, size: {}/{}", @@ -251,20 +267,20 @@ mod s2s_messages { transaction.encode().len(), darwinia_common_runtime::max_extrinsic_size(), ); - Bytes(transaction.encode()) + Ok(Bytes(transaction.encode())) } fn target_transactions_author(&self) -> darwinia_common_primitives::AccountId { (*self.message_lane.target_sign.public().as_array_ref()).into() } - fn make_messages_delivery_transaction( + async fn make_messages_delivery_transaction( &self, transaction_nonce: IndexOf, _generated_at_header: component_darwinia_s2s::HeaderId, _nonces: RangeInclusive, proof: ::MessagesProof, - ) -> Bytes { + ) -> relay_substrate_client::Result { let (dispatch_weight, proof) = proof; let FromBridgedChainMessagesProof { ref nonces_start, @@ -285,12 +301,15 @@ mod s2s_messages { .into(); let call_weight = call.get_dispatch_info().weight; let genesis_hash = *self.message_lane.target_client.genesis_hash(); - let transaction = CrabChain::sign_transaction( + let runtime_version = self.message_lane.source_client.runtime_version().await?; + let transaction = CrabChain::sign_transaction(SignParam { + spec_version: runtime_version.spec_version, + transaction_version: runtime_version.transaction_version, genesis_hash, - &self.message_lane.target_sign, - relay_substrate_client::TransactionEra::immortal(), - UnsignedTransaction::new(call, transaction_nonce), - ); + signer: self.message_lane.target_sign.clone(), + era: relay_substrate_client::TransactionEra::immortal(), + unsigned: UnsignedTransaction::new(call, transaction_nonce), + }); log::trace!( target: "bridge", "Prepared {} -> {} delivery transaction. Weight: {}/{}, size: {}/{}", @@ -301,7 +320,7 @@ mod s2s_messages { transaction.encode().len(), darwinia_common_runtime::max_extrinsic_size(), ); - Bytes(transaction.encode()) + Ok(Bytes(transaction.encode())) } } diff --git a/task/task-darwinia-crab/src/service/init.rs b/task/task-darwinia-crab/src/service/init.rs index 7cb20913d..a214ec170 100644 --- a/task/task-darwinia-crab/src/service/init.rs +++ b/task/task-darwinia-crab/src/service/init.rs @@ -3,7 +3,7 @@ use bp_runtime::Chain as ChainBase; use codec::Encode; use lifeline::{Bus, Lifeline, Receiver, Sender, Service, Task}; use relay_substrate_client::{ - Chain as RelaySubstrateClientChain, TransactionSignScheme, UnsignedTransaction, + Chain as RelaySubstrateClientChain, SignParam, TransactionSignScheme, UnsignedTransaction, }; use sp_core::{Bytes, Pair}; @@ -134,21 +134,24 @@ async fn init_bridge(init_bridge: InitBridge) -> anyhow::Result<()> { target_client ); + let runtime_version = target_client.runtime_version().await?; substrate_relay_helper::headers_initialize::initialize( source_client, target_client.clone(), target_sign.public().into(), move |transaction_nonce, initialization_data| { Bytes( - Target::sign_transaction( - *target_client.genesis_hash(), - &target_sign, - relay_substrate_client::TransactionEra::immortal(), - UnsignedTransaction::new( + Target::sign_transaction(SignParam { + spec_version: runtime_version.spec_version, + transaction_version: runtime_version.transaction_version, + genesis_hash: *target_client.genesis_hash(), + signer: target_sign.clone(), + era: relay_substrate_client::TransactionEra::immortal(), + unsigned: UnsignedTransaction::new( encode_init_bridge(initialization_data), transaction_nonce, ), - ) + }) .encode(), ) }, diff --git a/task/task-pangolin-pangoro/src/chains/pangolin.rs b/task/task-pangolin-pangoro/src/chains/pangolin.rs index a9847c27b..7eb0d073f 100644 --- a/task/task-pangolin-pangoro/src/chains/pangolin.rs +++ b/task/task-pangolin-pangoro/src/chains/pangolin.rs @@ -62,7 +62,9 @@ mod s2s_const { mod s2s_headers { use bp_header_chain::justification::GrandpaJustification; use codec::Encode; - use relay_substrate_client::{Client, IndexOf, TransactionSignScheme, UnsignedTransaction}; + use relay_substrate_client::{ + Client, IndexOf, SignParam, TransactionSignScheme, UnsignedTransaction, + }; use sp_core::{Bytes, Pair}; use substrate_relay_helper::finality_pipeline::{ SubstrateFinalitySyncPipeline, SubstrateFinalityToSubstrate, @@ -102,6 +104,7 @@ mod s2s_headers { } } + #[async_trait::async_trait] impl SubstrateFinalitySyncPipeline for PangolinFinalityToPangoro { type FinalitySyncPipeline = FinalityPipelinePangolinFinalityToPangoro; @@ -114,13 +117,13 @@ mod s2s_headers { (*self.finality_pipeline.target_sign.public().as_array_ref()).into() } - fn make_submit_finality_proof_transaction( + async fn make_submit_finality_proof_transaction( &self, era: bp_runtime::TransactionEraOf, transaction_nonce: IndexOf, header: component_pangolin_s2s::SyncHeader, proof: GrandpaJustification, - ) -> Bytes { + ) -> relay_substrate_client::Result { let call = pangoro_runtime::BridgeGrandpaCall::< pangoro_runtime::Runtime, pangoro_runtime::WithPangolinGrandpa, @@ -128,14 +131,21 @@ mod s2s_headers { .into(); let genesis_hash = *self.finality_pipeline.target_client.genesis_hash(); - let transaction = PangoroChain::sign_transaction( + let runtime_version = self + .finality_pipeline + .target_client + .runtime_version() + .await?; + let transaction = PangoroChain::sign_transaction(SignParam { + spec_version: runtime_version.spec_version, + transaction_version: runtime_version.transaction_version, genesis_hash, - &self.finality_pipeline.target_sign, + signer: self.finality_pipeline.target_sign.clone(), era, - UnsignedTransaction::new(call, transaction_nonce), - ); + unsigned: UnsignedTransaction::new(call, transaction_nonce), + }); - Bytes(transaction.encode()) + Ok(Bytes(transaction.encode())) } } @@ -151,7 +161,9 @@ mod s2s_messages { use frame_support::dispatch::GetDispatchInfo; use frame_support::weights::Weight; use messages_relay::message_lane::MessageLane; - use relay_substrate_client::{Client, IndexOf, TransactionSignScheme, UnsignedTransaction}; + use relay_substrate_client::{ + Client, IndexOf, SignParam, TransactionSignScheme, UnsignedTransaction, + }; use relay_utils::metrics::MetricsParams; use sp_core::{Bytes, Pair}; use substrate_relay_helper::messages_lane::{ @@ -184,6 +196,7 @@ mod s2s_messages { message_lane: MessageLanePangolinMessagesToPangoro, } + #[async_trait::async_trait] impl SubstrateMessageLane for PangolinMessagesToPangoro { type MessageLane = MessageLanePangolinMessagesToPangoro; @@ -220,12 +233,12 @@ mod s2s_messages { (*self.message_lane.source_sign.public().as_array_ref()).into() } - fn make_messages_receiving_proof_transaction( + async fn make_messages_receiving_proof_transaction( &self, transaction_nonce: IndexOf, _generated_at_block: component_pangoro_s2s::HeaderId, proof: ::MessagesReceivingProof, - ) -> Bytes { + ) -> relay_substrate_client::Result { let (relayers_state, proof) = proof; let call: pangolin_runtime::Call = pangolin_runtime::BridgeMessagesCall::receive_messages_delivery_proof::< @@ -235,12 +248,15 @@ mod s2s_messages { .into(); let call_weight = call.get_dispatch_info().weight; let genesis_hash = *self.message_lane.source_client.genesis_hash(); - let transaction = PangolinChain::sign_transaction( + let runtime_version = self.message_lane.source_client.runtime_version().await?; + let transaction = PangolinChain::sign_transaction(SignParam { + spec_version: runtime_version.spec_version, + transaction_version: runtime_version.transaction_version, genesis_hash, - &self.message_lane.source_sign, - relay_substrate_client::TransactionEra::immortal(), - UnsignedTransaction::new(call, transaction_nonce), - ); + signer: self.message_lane.target_sign.clone(), + era: relay_substrate_client::TransactionEra::immortal(), + unsigned: UnsignedTransaction::new(call, transaction_nonce), + }); log::trace!( target: "bridge", "Prepared {} -> {} confirmation transaction. Weight: {}/{}, size: {}/{}", @@ -251,20 +267,20 @@ mod s2s_messages { transaction.encode().len(), common_runtime::max_extrinsic_size(), ); - Bytes(transaction.encode()) + Ok(Bytes(transaction.encode())) } fn target_transactions_author(&self) -> drml_common_primitives::AccountId { (*self.message_lane.target_sign.public().as_array_ref()).into() } - fn make_messages_delivery_transaction( + async fn make_messages_delivery_transaction( &self, transaction_nonce: IndexOf, _generated_at_header: component_pangolin_s2s::HeaderId, _nonces: RangeInclusive, proof: ::MessagesProof, - ) -> Bytes { + ) -> relay_substrate_client::Result { let (dispatch_weight, proof) = proof; let FromBridgedChainMessagesProof { ref nonces_start, @@ -285,12 +301,15 @@ mod s2s_messages { .into(); let call_weight = call.get_dispatch_info().weight; let genesis_hash = *self.message_lane.target_client.genesis_hash(); - let transaction = PangoroChain::sign_transaction( + let runtime_version = self.message_lane.target_client.runtime_version().await?; + let transaction = PangoroChain::sign_transaction(SignParam { + spec_version: runtime_version.spec_version, + transaction_version: runtime_version.transaction_version, genesis_hash, - &self.message_lane.target_sign, - relay_substrate_client::TransactionEra::immortal(), - UnsignedTransaction::new(call, transaction_nonce), - ); + signer: self.message_lane.target_sign.clone(), + era: relay_substrate_client::TransactionEra::immortal(), + unsigned: UnsignedTransaction::new(call, transaction_nonce), + }); log::trace!( target: "bridge", "Prepared {} -> {} delivery transaction. Weight: {}/{}, size: {}/{}", @@ -301,7 +320,7 @@ mod s2s_messages { transaction.encode().len(), common_runtime::max_extrinsic_size(), ); - Bytes(transaction.encode()) + Ok(Bytes(transaction.encode())) } } diff --git a/task/task-pangolin-pangoro/src/chains/pangoro.rs b/task/task-pangolin-pangoro/src/chains/pangoro.rs index 5e5936e4f..9f6d8ef00 100644 --- a/task/task-pangolin-pangoro/src/chains/pangoro.rs +++ b/task/task-pangolin-pangoro/src/chains/pangoro.rs @@ -63,7 +63,9 @@ mod s2s_const { mod s2s_headers { use bp_header_chain::justification::GrandpaJustification; use codec::Encode; - use relay_substrate_client::{Client, IndexOf, TransactionSignScheme, UnsignedTransaction}; + use relay_substrate_client::{ + Client, IndexOf, SignParam, TransactionSignScheme, UnsignedTransaction, + }; use sp_core::{Bytes, Pair}; use substrate_relay_helper::finality_pipeline::{ SubstrateFinalitySyncPipeline, SubstrateFinalityToSubstrate, @@ -103,6 +105,7 @@ mod s2s_headers { } } + #[async_trait::async_trait] impl SubstrateFinalitySyncPipeline for PangoroFinalityToPangolin { type FinalitySyncPipeline = FinalityPipelinePangoroFinalityToPangolin; @@ -115,13 +118,13 @@ mod s2s_headers { (*self.finality_pipeline.target_sign.public().as_array_ref()).into() } - fn make_submit_finality_proof_transaction( + async fn make_submit_finality_proof_transaction( &self, era: bp_runtime::TransactionEraOf, transaction_nonce: IndexOf, header: component_pangoro_s2s::SyncHeader, proof: GrandpaJustification, - ) -> Bytes { + ) -> relay_substrate_client::Result { let call = pangolin_runtime::BridgeGrandpaCall::< pangolin_runtime::Runtime, pangolin_runtime::WithPangoroGrandpa, @@ -129,14 +132,21 @@ mod s2s_headers { .into(); let genesis_hash = *self.finality_pipeline.target_client.genesis_hash(); - let transaction = PangolinChain::sign_transaction( + let runtime_version = self + .finality_pipeline + .target_client + .runtime_version() + .await?; + let transaction = PangolinChain::sign_transaction(SignParam { + spec_version: runtime_version.spec_version, + transaction_version: runtime_version.transaction_version, genesis_hash, - &self.finality_pipeline.target_sign, + signer: self.finality_pipeline.target_sign.clone(), era, - UnsignedTransaction::new(call, transaction_nonce), - ); + unsigned: UnsignedTransaction::new(call, transaction_nonce), + }); - Bytes(transaction.encode()) + Ok(Bytes(transaction.encode())) } } @@ -152,7 +162,9 @@ mod s2s_messages { use frame_support::dispatch::GetDispatchInfo; use frame_support::weights::Weight; use messages_relay::message_lane::MessageLane; - use relay_substrate_client::{Client, IndexOf, TransactionSignScheme, UnsignedTransaction}; + use relay_substrate_client::{ + Client, IndexOf, SignParam, TransactionSignScheme, UnsignedTransaction, + }; use relay_utils::metrics::MetricsParams; use sp_core::{Bytes, Pair}; use substrate_relay_helper::messages_lane::{ @@ -185,6 +197,7 @@ mod s2s_messages { message_lane: MessageLanePangoroMessagesToPangolin, } + #[async_trait::async_trait] impl SubstrateMessageLane for PangoroMessagesToPangolin { type MessageLane = MessageLanePangoroMessagesToPangolin; @@ -221,12 +234,12 @@ mod s2s_messages { (*self.message_lane.source_sign.public().as_array_ref()).into() } - fn make_messages_receiving_proof_transaction( + async fn make_messages_receiving_proof_transaction( &self, transaction_nonce: IndexOf, _generated_at_block: component_pangolin_s2s::HeaderId, proof: ::MessagesReceivingProof, - ) -> Bytes { + ) -> relay_substrate_client::Result { let (relayers_state, proof) = proof; let call: pangoro_runtime::Call = pangoro_runtime::BridgeMessagesCall::receive_messages_delivery_proof::< @@ -236,12 +249,15 @@ mod s2s_messages { .into(); let call_weight = call.get_dispatch_info().weight; let genesis_hash = *self.message_lane.source_client.genesis_hash(); - let transaction = PangoroChain::sign_transaction( + let runtime_version = self.message_lane.source_client.runtime_version().await?; + let transaction = PangoroChain::sign_transaction(SignParam { + spec_version: runtime_version.spec_version, + transaction_version: runtime_version.transaction_version, genesis_hash, - &self.message_lane.source_sign, - relay_substrate_client::TransactionEra::immortal(), - UnsignedTransaction::new(call, transaction_nonce), - ); + signer: self.message_lane.source_sign.clone(), + era: relay_substrate_client::TransactionEra::immortal(), + unsigned: UnsignedTransaction::new(call, transaction_nonce), + }); log::trace!( target: "bridge", "Prepared {} -> {} confirmation transaction. Weight: {}/{}, size: {}/{}", @@ -252,20 +268,20 @@ mod s2s_messages { transaction.encode().len(), common_runtime::max_extrinsic_size(), ); - Bytes(transaction.encode()) + Ok(Bytes(transaction.encode())) } fn target_transactions_author(&self) -> drml_common_primitives::AccountId { (*self.message_lane.target_sign.public().as_array_ref()).into() } - fn make_messages_delivery_transaction( + async fn make_messages_delivery_transaction( &self, transaction_nonce: IndexOf, _generated_at_header: component_pangoro_s2s::HeaderId, _nonces: RangeInclusive, proof: ::MessagesProof, - ) -> Bytes { + ) -> relay_substrate_client::Result { let (dispatch_weight, proof) = proof; let FromBridgedChainMessagesProof { ref nonces_start, @@ -286,12 +302,15 @@ mod s2s_messages { .into(); let call_weight = call.get_dispatch_info().weight; let genesis_hash = *self.message_lane.target_client.genesis_hash(); - let transaction = PangolinChain::sign_transaction( + let runtime_version = self.message_lane.target_client.runtime_version().await?; + let transaction = PangolinChain::sign_transaction(SignParam { + spec_version: runtime_version.spec_version, + transaction_version: runtime_version.transaction_version, genesis_hash, - &self.message_lane.target_sign, - relay_substrate_client::TransactionEra::immortal(), - UnsignedTransaction::new(call, transaction_nonce), - ); + signer: self.message_lane.target_sign.clone(), + era: relay_substrate_client::TransactionEra::immortal(), + unsigned: UnsignedTransaction::new(call, transaction_nonce), + }); log::trace!( target: "bridge", "Prepared {} -> {} delivery transaction. Weight: {}/{}, size: {}/{}", @@ -302,7 +321,7 @@ mod s2s_messages { transaction.encode().len(), common_runtime::max_extrinsic_size(), ); - Bytes(transaction.encode()) + Ok(Bytes(transaction.encode())) } } diff --git a/task/task-pangolin-pangoro/src/service/init.rs b/task/task-pangolin-pangoro/src/service/init.rs index 7b1d0de5a..9fc6fb45b 100644 --- a/task/task-pangolin-pangoro/src/service/init.rs +++ b/task/task-pangolin-pangoro/src/service/init.rs @@ -3,7 +3,7 @@ use bp_runtime::Chain as ChainBase; use codec::Encode; use lifeline::{Bus, Lifeline, Receiver, Sender, Service, Task}; use relay_substrate_client::{ - Chain as RelaySubstrateClientChain, TransactionSignScheme, UnsignedTransaction, + Chain as RelaySubstrateClientChain, SignParam, TransactionSignScheme, UnsignedTransaction, }; use sp_core::{Bytes, Pair}; @@ -134,21 +134,24 @@ async fn init_bridge(init_bridge: InitBridge) -> anyhow::Result<()> { target_client ); + let runtime_version = target_client.runtime_version().await?; substrate_relay_helper::headers_initialize::initialize( source_client, target_client.clone(), target_sign.public().into(), move |transaction_nonce, initialization_data| { Bytes( - Target::sign_transaction( - *target_client.genesis_hash(), - &target_sign, - relay_substrate_client::TransactionEra::immortal(), - UnsignedTransaction::new( + Target::sign_transaction(SignParam { + spec_version: runtime_version.spec_version, + transaction_version: runtime_version.transaction_version, + genesis_hash: *target_client.genesis_hash(), + signer: target_sign.clone(), + era: relay_substrate_client::TransactionEra::immortal(), + unsigned: UnsignedTransaction::new( encode_init_bridge(initialization_data), transaction_nonce, ), - ) + }) .encode(), ) },