diff --git a/bridges/README.md b/bridges/README.md
index a2ce213d2541c346361eb28125a06e3079e1c269..8bfa39841f51e7824d0f1169540342c2bd88b664 100644
--- a/bridges/README.md
+++ b/bridges/README.md
@@ -38,10 +38,10 @@ cargo test --all
 ```
 
 Also you can build the repo with [Parity CI Docker
-image](https://github.com/paritytech/scripts/tree/master/dockerfiles/bridges-ci):
+image](https://github.com/paritytech/scripts/tree/master/dockerfiles/ci-unified):
 
 ```bash
-docker pull paritytech/bridges-ci:production
+docker pull paritytech/ci-unified:latest
 mkdir ~/cache
 chown 1000:1000 ~/cache #processes in the container runs as "nonroot" user with UID 1000
 docker run --rm -it -w /shellhere/parity-bridges-common \
@@ -49,7 +49,7 @@ docker run --rm -it -w /shellhere/parity-bridges-common \
                     -v "$(pwd)":/shellhere/parity-bridges-common \
                     -e CARGO_HOME=/cache/cargo/ \
                     -e SCCACHE_DIR=/cache/sccache/ \
-                    -e CARGO_TARGET_DIR=/cache/target/  paritytech/bridges-ci:production cargo build --all
+                    -e CARGO_TARGET_DIR=/cache/target/  paritytech/ci-unified:latest cargo build --all
 #artifacts can be found in ~/cache/target
 ```
 
diff --git a/bridges/bin/runtime-common/Cargo.toml b/bridges/bin/runtime-common/Cargo.toml
index d71e9f6bae710cbc94cd7b20045881ed6b8c368e..6304c83b905b2762d7afa92aba34bcce1fa13f67 100644
--- a/bridges/bin/runtime-common/Cargo.toml
+++ b/bridges/bin/runtime-common/Cargo.toml
@@ -11,7 +11,7 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 workspace = true
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false, features = ["derive"] }
+codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
 hash-db = { version = "0.16.0", default-features = false }
 log = { workspace = true }
 scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
diff --git a/bridges/chains/chain-asset-hub-rococo/Cargo.toml b/bridges/chains/chain-asset-hub-rococo/Cargo.toml
index ae1f05e0e7f53db448aaf2e5ca93295beb1d7620..660f0f4dbfcf08c7840a9fa193496b6e275b206d 100644
--- a/bridges/chains/chain-asset-hub-rococo/Cargo.toml
+++ b/bridges/chains/chain-asset-hub-rococo/Cargo.toml
@@ -5,12 +5,13 @@ version = "0.4.0"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
+codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
 scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
 
 # Substrate Dependencies
diff --git a/bridges/chains/chain-asset-hub-westend/Cargo.toml b/bridges/chains/chain-asset-hub-westend/Cargo.toml
index 14c049f134dfd6c2a367441a355f3791e2f3d062..4022258acd0303180697c6971672618bae329c33 100644
--- a/bridges/chains/chain-asset-hub-westend/Cargo.toml
+++ b/bridges/chains/chain-asset-hub-westend/Cargo.toml
@@ -5,12 +5,13 @@ version = "0.3.0"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
+codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
 scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
 
 # Substrate Dependencies
diff --git a/bridges/chains/chain-bridge-hub-cumulus/Cargo.toml b/bridges/chains/chain-bridge-hub-cumulus/Cargo.toml
index 82c87d8bc13e365f9decf37f981e3cdc1bdd95b6..b87b5fefd9c7f39543295dbc74379f6215663bfc 100644
--- a/bridges/chains/chain-bridge-hub-cumulus/Cargo.toml
+++ b/bridges/chains/chain-bridge-hub-cumulus/Cargo.toml
@@ -5,6 +5,7 @@ version = "0.7.0"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
diff --git a/bridges/chains/chain-bridge-hub-kusama/Cargo.toml b/bridges/chains/chain-bridge-hub-kusama/Cargo.toml
index 2075fe2543c6783326e6cb72756fdb2973f72340..71ee785d4b214aad19b275c49850686436daec2e 100644
--- a/bridges/chains/chain-bridge-hub-kusama/Cargo.toml
+++ b/bridges/chains/chain-bridge-hub-kusama/Cargo.toml
@@ -5,6 +5,7 @@ version = "0.6.0"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
diff --git a/bridges/chains/chain-bridge-hub-polkadot/Cargo.toml b/bridges/chains/chain-bridge-hub-polkadot/Cargo.toml
index edef6e612372feb8cafef1c822482dee26ba4270..dd4729673c0ea6079eac0f05c052ed0d1754409c 100644
--- a/bridges/chains/chain-bridge-hub-polkadot/Cargo.toml
+++ b/bridges/chains/chain-bridge-hub-polkadot/Cargo.toml
@@ -5,6 +5,7 @@ version = "0.6.0"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
diff --git a/bridges/chains/chain-bridge-hub-rococo/Cargo.toml b/bridges/chains/chain-bridge-hub-rococo/Cargo.toml
index 0370fa1c6bb2c4c9fc6067ee2bc0cbb7a1461078..a8e0003ee68ea4816813a3b762faa7595e4cc58a 100644
--- a/bridges/chains/chain-bridge-hub-rococo/Cargo.toml
+++ b/bridges/chains/chain-bridge-hub-rococo/Cargo.toml
@@ -5,6 +5,7 @@ version = "0.7.0"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
diff --git a/bridges/chains/chain-bridge-hub-westend/Cargo.toml b/bridges/chains/chain-bridge-hub-westend/Cargo.toml
index ea452d89dba54b53f5597e249c04ed6b90779358..09bf743c66447c4a28b5a377a3eac81c227fedcc 100644
--- a/bridges/chains/chain-bridge-hub-westend/Cargo.toml
+++ b/bridges/chains/chain-bridge-hub-westend/Cargo.toml
@@ -5,6 +5,7 @@ version = "0.3.0"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
diff --git a/bridges/chains/chain-kusama/Cargo.toml b/bridges/chains/chain-kusama/Cargo.toml
index 56a4386afb8f3ef85b770f6d8409f4cd1bb19e47..2a59937daa760c757931380b35cea0a3835d59e6 100644
--- a/bridges/chains/chain-kusama/Cargo.toml
+++ b/bridges/chains/chain-kusama/Cargo.toml
@@ -5,6 +5,7 @@ version = "0.5.0"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
diff --git a/bridges/chains/chain-polkadot-bulletin/Cargo.toml b/bridges/chains/chain-polkadot-bulletin/Cargo.toml
index 121f0c57c34a9843cb1f2e848507403e3e356ae6..c20a94cfdaab465bfd392eb72c488c68d1a03b2e 100644
--- a/bridges/chains/chain-polkadot-bulletin/Cargo.toml
+++ b/bridges/chains/chain-polkadot-bulletin/Cargo.toml
@@ -5,12 +5,13 @@ version = "0.4.0"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false, features = ["derive"] }
+codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
 scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
 
 # Bridge Dependencies
diff --git a/bridges/chains/chain-polkadot/Cargo.toml b/bridges/chains/chain-polkadot/Cargo.toml
index 5faee3bd34ad46f87d0bbfe9a6616438e3099e4a..f942e4fe8dd48bac6046f03b20ce8e69ac36b064 100644
--- a/bridges/chains/chain-polkadot/Cargo.toml
+++ b/bridges/chains/chain-polkadot/Cargo.toml
@@ -5,6 +5,7 @@ version = "0.5.0"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
diff --git a/bridges/chains/chain-rococo/Cargo.toml b/bridges/chains/chain-rococo/Cargo.toml
index 401611bebbe473ac6aba146191cafe07e5e7f122..a86e875517b39e7f3dd50eb12ef7f52409c08c7a 100644
--- a/bridges/chains/chain-rococo/Cargo.toml
+++ b/bridges/chains/chain-rococo/Cargo.toml
@@ -5,6 +5,7 @@ version = "0.6.0"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
diff --git a/bridges/chains/chain-westend/Cargo.toml b/bridges/chains/chain-westend/Cargo.toml
index d697e2b36c42cf194df96a33978afd5a42c0990b..6f5c48139c6ea9e20e8b9a49efaa03337e3538a7 100644
--- a/bridges/chains/chain-westend/Cargo.toml
+++ b/bridges/chains/chain-westend/Cargo.toml
@@ -5,6 +5,7 @@ version = "0.3.0"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
diff --git a/bridges/modules/beefy/Cargo.toml b/bridges/modules/beefy/Cargo.toml
index ab3447f657c5c2e50939d9290385dbfae0179aa0..d0e5204dcbea12361e3f47341a394140fc9062e6 100644
--- a/bridges/modules/beefy/Cargo.toml
+++ b/bridges/modules/beefy/Cargo.toml
@@ -2,16 +2,17 @@
 name = "pallet-bridge-beefy"
 version = "0.1.0"
 description = "Module implementing BEEFY on-chain light client used for bridging consensus of substrate-based chains."
-authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 publish = false
 
 [lints]
 workspace = true
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
+codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
 log = { workspace = true }
 scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
 serde = { optional = true, workspace = true }
@@ -34,7 +35,7 @@ sp-consensus-beefy = { git = "https://github.com/paritytech/polkadot-sdk", branc
 mmr-lib = { package = "ckb-merkle-mountain-range", version = "0.3.2" }
 pallet-beefy-mmr = { git = "https://github.com/paritytech/polkadot-sdk", branch = "master" }
 pallet-mmr = { git = "https://github.com/paritytech/polkadot-sdk", branch = "master" }
-rand = "0.8"
+rand = "0.8.5"
 sp-io = { git = "https://github.com/paritytech/polkadot-sdk", branch = "master" }
 bp-test-utils = { path = "../../primitives/test-utils" }
 
diff --git a/bridges/modules/grandpa/Cargo.toml b/bridges/modules/grandpa/Cargo.toml
index 2388767f972ca2f135d09922ec72cb323995d2b1..b3deefc87923103111c96c9521e7eb1dae237e83 100644
--- a/bridges/modules/grandpa/Cargo.toml
+++ b/bridges/modules/grandpa/Cargo.toml
@@ -5,6 +5,7 @@ description = "Module implementing GRANDPA on-chain light client used for bridgi
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
@@ -12,7 +13,7 @@ workspace = true
 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
+codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
 finality-grandpa = { version = "0.16.2", default-features = false }
 log = { workspace = true }
 scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
diff --git a/bridges/modules/messages/Cargo.toml b/bridges/modules/messages/Cargo.toml
index ebe7db4085a722253a1653a3e125627ec3c0cb23..24ad437be09daf3163842f05b311f1cb63374209 100644
--- a/bridges/modules/messages/Cargo.toml
+++ b/bridges/modules/messages/Cargo.toml
@@ -5,12 +5,13 @@ version = "0.7.0"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
+codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
 log = { workspace = true }
 num-traits = { version = "0.2", default-features = false }
 scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
diff --git a/bridges/modules/parachains/Cargo.toml b/bridges/modules/parachains/Cargo.toml
index 068e9a907fe26c4afa4a22ca9a09fb2fe9ce041b..6352b21b8f8b5de15447bd41fb5acecf2af801d3 100644
--- a/bridges/modules/parachains/Cargo.toml
+++ b/bridges/modules/parachains/Cargo.toml
@@ -5,12 +5,13 @@ description = "Module that allows bridged relay chains to exchange information o
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
+codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
 log = { workspace = true }
 scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
 
diff --git a/bridges/modules/relayers/Cargo.toml b/bridges/modules/relayers/Cargo.toml
index 9073b9bbe082e1d7c621a395da2342de0cc28f4d..ae57e36f7fb1ef118a56dd27ccf62897825828ca 100644
--- a/bridges/modules/relayers/Cargo.toml
+++ b/bridges/modules/relayers/Cargo.toml
@@ -5,12 +5,13 @@ version = "0.7.0"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
+codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
 log = { workspace = true }
 scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
 
diff --git a/bridges/modules/xcm-bridge-hub-router/Cargo.toml b/bridges/modules/xcm-bridge-hub-router/Cargo.toml
index 89c02f706c27052b4f82b4b9db21b016007f0134..af130c5e7b37ee3748c4834061f05c599999aa41 100644
--- a/bridges/modules/xcm-bridge-hub-router/Cargo.toml
+++ b/bridges/modules/xcm-bridge-hub-router/Cargo.toml
@@ -5,12 +5,13 @@ version = "0.5.0"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
+codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
 log = { workspace = true }
 scale-info = { version = "2.11.1", default-features = false, features = ["bit-vec", "derive", "serde"] }
 
diff --git a/bridges/modules/xcm-bridge-hub/Cargo.toml b/bridges/modules/xcm-bridge-hub/Cargo.toml
index 8654c65f66c1d25a48fe2744ec05da6c26fefc96..d7e562530914270b8148fa7aac68409a535145ad 100644
--- a/bridges/modules/xcm-bridge-hub/Cargo.toml
+++ b/bridges/modules/xcm-bridge-hub/Cargo.toml
@@ -5,12 +5,13 @@ version = "0.2.0"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
+codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
 log = { workspace = true }
 scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
 
diff --git a/bridges/primitives/beefy/Cargo.toml b/bridges/primitives/beefy/Cargo.toml
index eef3dcf96e860b730e1a2d653e47cdcc335373c8..f1992e59b709a192f0a6dd9bdffdafce1ace688b 100644
--- a/bridges/primitives/beefy/Cargo.toml
+++ b/bridges/primitives/beefy/Cargo.toml
@@ -2,16 +2,17 @@
 name = "bp-beefy"
 description = "Primitives of pallet-bridge-beefy module."
 version = "0.1.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 publish = false
 
 [lints]
 workspace = true
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false, features = ["bit-vec", "derive"] }
+codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["bit-vec", "derive"] }
 scale-info = { version = "2.11.1", default-features = false, features = ["bit-vec", "derive"] }
 serde = { default-features = false, features = ["alloc", "derive"], workspace = true }
 
diff --git a/bridges/primitives/header-chain/Cargo.toml b/bridges/primitives/header-chain/Cargo.toml
index 8dc9a8ae776daa4f20943ce6a29fce49dac64792..f38d754544bba919be15d80aca106ada42abdf5e 100644
--- a/bridges/primitives/header-chain/Cargo.toml
+++ b/bridges/primitives/header-chain/Cargo.toml
@@ -5,12 +5,13 @@ version = "0.7.0"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
+codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
 finality-grandpa = { version = "0.16.2", default-features = false }
 scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
 serde = { features = ["alloc", "derive"], workspace = true }
diff --git a/bridges/primitives/messages/Cargo.toml b/bridges/primitives/messages/Cargo.toml
index 93b0efa2765692ad5d63e40829d6b97b6d6ef386..8bacff709eb4ecf5fe1167ce73f29d6355b4db6c 100644
--- a/bridges/primitives/messages/Cargo.toml
+++ b/bridges/primitives/messages/Cargo.toml
@@ -5,12 +5,13 @@ version = "0.7.0"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false, features = ["bit-vec", "derive"] }
+codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["bit-vec", "derive"] }
 scale-info = { version = "2.11.1", default-features = false, features = ["bit-vec", "derive"] }
 serde = { features = ["alloc", "derive"], workspace = true }
 
diff --git a/bridges/primitives/parachains/Cargo.toml b/bridges/primitives/parachains/Cargo.toml
index 610b7b3361358396b3ef53f7956b90bc7c369ce4..1606dbfcd6423c525bcbe3b45b565218024d59a5 100644
--- a/bridges/primitives/parachains/Cargo.toml
+++ b/bridges/primitives/parachains/Cargo.toml
@@ -5,12 +5,13 @@ version = "0.7.0"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false, features = ["derive"] }
+codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
 impl-trait-for-tuples = "0.2"
 scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
 
diff --git a/bridges/primitives/polkadot-core/Cargo.toml b/bridges/primitives/polkadot-core/Cargo.toml
index 6c20d64da3fb2a4450111be5084ae0134786bca4..b85586405ff320ea171df10e09588fb6227050e8 100644
--- a/bridges/primitives/polkadot-core/Cargo.toml
+++ b/bridges/primitives/polkadot-core/Cargo.toml
@@ -5,12 +5,13 @@ version = "0.7.0"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false, features = ["derive"] }
+codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
 parity-util-mem = { version = "0.12.0", optional = true }
 scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
 serde = { optional = true, features = ["derive"], workspace = true, default-features = true }
diff --git a/bridges/primitives/relayers/Cargo.toml b/bridges/primitives/relayers/Cargo.toml
index 441d2406003562e4bc9cc8ae84846a5ea2c3c2b8..46bc034ef1154e7c6a72836c7ddbb7ae52dae0f6 100644
--- a/bridges/primitives/relayers/Cargo.toml
+++ b/bridges/primitives/relayers/Cargo.toml
@@ -5,12 +5,13 @@ version = "0.7.0"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false, features = ["bit-vec", "derive"] }
+codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["bit-vec", "derive"] }
 scale-info = { version = "2.11.1", default-features = false, features = ["bit-vec", "derive"] }
 
 # Bridge Dependencies
diff --git a/bridges/primitives/runtime/Cargo.toml b/bridges/primitives/runtime/Cargo.toml
index c2b2a794b3e6527c163dc64a288008d2dd7677cb..258b5768286650cd3bac094860498df69cb04aea 100644
--- a/bridges/primitives/runtime/Cargo.toml
+++ b/bridges/primitives/runtime/Cargo.toml
@@ -5,12 +5,13 @@ version = "0.7.0"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
+codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
 hash-db = { version = "0.16.0", default-features = false }
 impl-trait-for-tuples = "0.2.2"
 log = { workspace = true }
diff --git a/bridges/primitives/test-utils/Cargo.toml b/bridges/primitives/test-utils/Cargo.toml
index 1b3ac9ee697cb50c8563922775b09ca469c1c06e..b46868a0a599c3d0b8c97044edcb9c56babb514f 100644
--- a/bridges/primitives/test-utils/Cargo.toml
+++ b/bridges/primitives/test-utils/Cargo.toml
@@ -5,6 +5,7 @@ description = "Utilities for testing substrate-based runtime bridge code"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
@@ -14,7 +15,7 @@ bp-header-chain = { path = "../header-chain", default-features = false }
 bp-parachains = { path = "../parachains", default-features = false }
 bp-polkadot-core = { path = "../polkadot-core", default-features = false }
 bp-runtime = { path = "../runtime", default-features = false }
-codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
+codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
 ed25519-dalek = { version = "2.1", default-features = false }
 finality-grandpa = { version = "0.16.2", default-features = false }
 sp-application-crypto = { git = "https://github.com/paritytech/polkadot-sdk", branch = "master", default-features = false }
diff --git a/bridges/primitives/xcm-bridge-hub-router/Cargo.toml b/bridges/primitives/xcm-bridge-hub-router/Cargo.toml
index bc0ff5c605e899c32ba390ad0757307872785ec4..c3fe409b68c2076253657c72d5f420e0823d2e90 100644
--- a/bridges/primitives/xcm-bridge-hub-router/Cargo.toml
+++ b/bridges/primitives/xcm-bridge-hub-router/Cargo.toml
@@ -5,12 +5,13 @@ version = "0.6.0"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false, features = ["bit-vec", "derive"] }
+codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["bit-vec", "derive"] }
 scale-info = { version = "2.11.1", default-features = false, features = ["bit-vec", "derive"] }
 
 # Substrate Dependencies
diff --git a/bridges/primitives/xcm-bridge-hub/Cargo.toml b/bridges/primitives/xcm-bridge-hub/Cargo.toml
index 1a5bb742eed4743b5071eeb711e103af0b97f824..9043071002a911f337f1ead0aaab31ceaab9781b 100644
--- a/bridges/primitives/xcm-bridge-hub/Cargo.toml
+++ b/bridges/primitives/xcm-bridge-hub/Cargo.toml
@@ -5,6 +5,7 @@ version = "0.2.0"
 authors.workspace = true
 edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 
 [lints]
 workspace = true
diff --git a/bridges/relays/client-substrate/Cargo.toml b/bridges/relays/client-substrate/Cargo.toml
index 51e3edefaf979ca6811d50d4d07d069f81cb5af7..85ebce1f9b97f70e1a790c1c738103e0e9c0014f 100644
--- a/bridges/relays/client-substrate/Cargo.toml
+++ b/bridges/relays/client-substrate/Cargo.toml
@@ -1,23 +1,24 @@
 [package]
 name = "relay-substrate-client"
 version = "0.1.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 publish = false
 
 [lints]
 workspace = true
 
 [dependencies]
-async-std = { version = "1.6.5", features = ["attributes"] }
+async-std = { version = "1.9.0", features = ["attributes"] }
 async-trait = "0.1.79"
-codec = { package = "parity-scale-codec", version = "3.1.5" }
+codec = { package = "parity-scale-codec", version = "3.6.1" }
 futures = "0.3.30"
-jsonrpsee = { version = "0.17", features = ["macros", "ws-client"] }
+jsonrpsee = { version = "0.22", features = ["macros", "ws-client"] }
 log = { workspace = true }
 num-traits = "0.2"
-rand = "0.8"
+rand = "0.8.5"
 scale-info = { version = "2.11.1", features = ["derive"] }
 tokio = { version = "1.37", features = ["rt-multi-thread"] }
 thiserror = { workspace = true }
diff --git a/bridges/relays/client-substrate/src/error.rs b/bridges/relays/client-substrate/src/error.rs
index 257771b70b1f1421b3a57ada3249e8ac6a5bf5de..0b446681818879d662ba9a71679a799519cf491b 100644
--- a/bridges/relays/client-substrate/src/error.rs
+++ b/bridges/relays/client-substrate/src/error.rs
@@ -18,7 +18,7 @@
 
 use crate::SimpleRuntimeVersion;
 use bp_polkadot_core::parachains::ParaId;
-use jsonrpsee::core::Error as RpcError;
+use jsonrpsee::core::ClientError as RpcError;
 use relay_utils::MaybeConnectionError;
 use sc_rpc_api::system::Health;
 use sp_core::storage::StorageKey;
diff --git a/bridges/relays/client-substrate/src/rpc.rs b/bridges/relays/client-substrate/src/rpc.rs
index 35ab08c0f415161b3026dd9044be9fc5222e5d43..60c29cdeb5c7707619b65d23800dcd7dfdfd840a 100644
--- a/bridges/relays/client-substrate/src/rpc.rs
+++ b/bridges/relays/client-substrate/src/rpc.rs
@@ -21,7 +21,7 @@ use async_trait::async_trait;
 use crate::{Chain, ChainWithGrandpa, TransactionStatusOf};
 
 use jsonrpsee::{
-	core::{client::Subscription, RpcResult},
+	core::{client::Subscription, ClientError},
 	proc_macros::rpc,
 	ws_client::WsClient,
 };
@@ -110,7 +110,9 @@ pub(crate) trait SubstrateState<C> {
 #[async_trait]
 pub trait SubstrateFinalityClient<C: Chain> {
 	/// Subscribe to finality justifications.
-	async fn subscribe_justifications(client: &WsClient) -> RpcResult<Subscription<Bytes>>;
+	async fn subscribe_justifications(
+		client: &WsClient,
+	) -> Result<Subscription<Bytes>, ClientError>;
 }
 
 /// RPC methods of Substrate `grandpa` namespace, that we are using.
@@ -125,7 +127,9 @@ pub(crate) trait SubstrateGrandpa<C> {
 pub struct SubstrateGrandpaFinalityClient;
 #[async_trait]
 impl<C: ChainWithGrandpa> SubstrateFinalityClient<C> for SubstrateGrandpaFinalityClient {
-	async fn subscribe_justifications(client: &WsClient) -> RpcResult<Subscription<Bytes>> {
+	async fn subscribe_justifications(
+		client: &WsClient,
+	) -> Result<Subscription<Bytes>, ClientError> {
 		SubstrateGrandpaClient::<C>::subscribe_justifications(client).await
 	}
 }
@@ -144,7 +148,9 @@ pub struct SubstrateBeefyFinalityClient;
 // TODO: Use `ChainWithBeefy` instead of `Chain` after #1606 is merged
 #[async_trait]
 impl<C: Chain> SubstrateFinalityClient<C> for SubstrateBeefyFinalityClient {
-	async fn subscribe_justifications(client: &WsClient) -> RpcResult<Subscription<Bytes>> {
+	async fn subscribe_justifications(
+		client: &WsClient,
+	) -> Result<Subscription<Bytes>, ClientError> {
 		SubstrateBeefyClient::<C>::subscribe_justifications(client).await
 	}
 }
diff --git a/bridges/relays/equivocation/Cargo.toml b/bridges/relays/equivocation/Cargo.toml
index 3b99e4349e037c01506ea4670e5b2bff4f9a1138..e7146e05f479cfc59494fca510bae4acf87a86c3 100644
--- a/bridges/relays/equivocation/Cargo.toml
+++ b/bridges/relays/equivocation/Cargo.toml
@@ -1,9 +1,10 @@
 [package]
 name = "equivocation-detector"
 version = "0.1.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 description = "Equivocation detector"
 publish = false
 
@@ -11,7 +12,7 @@ publish = false
 workspace = true
 
 [dependencies]
-async-std = { version = "1.6.5", features = ["attributes"] }
+async-std = { version = "1.9.0", features = ["attributes"] }
 async-trait = "0.1.79"
 bp-header-chain = { path = "../../primitives/header-chain" }
 finality-relay = { path = "../finality" }
diff --git a/bridges/relays/finality/Cargo.toml b/bridges/relays/finality/Cargo.toml
index 53d2ce579f6befa557e444c00eb72a348fb66d61..5ee4b10fa638f5ec226df14beca1e0c79d0055df 100644
--- a/bridges/relays/finality/Cargo.toml
+++ b/bridges/relays/finality/Cargo.toml
@@ -1,9 +1,10 @@
 [package]
 name = "finality-relay"
 version = "0.1.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 description = "Finality proofs relay"
 publish = false
 
@@ -11,7 +12,7 @@ publish = false
 workspace = true
 
 [dependencies]
-async-std = "1.6.5"
+async-std = "1.9.0"
 async-trait = "0.1.79"
 backoff = "0.4"
 bp-header-chain = { path = "../../primitives/header-chain" }
diff --git a/bridges/relays/lib-substrate-relay/Cargo.toml b/bridges/relays/lib-substrate-relay/Cargo.toml
index 76be5a92a794a45356348ee4b41ba831a7ca3021..7e7e774d7253bca487b526ab9f2ec116ca2f8f4f 100644
--- a/bridges/relays/lib-substrate-relay/Cargo.toml
+++ b/bridges/relays/lib-substrate-relay/Cargo.toml
@@ -1,9 +1,10 @@
 [package]
 name = "substrate-relay-helper"
 version = "0.1.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 publish = false
 
 [lints]
@@ -13,7 +14,7 @@ workspace = true
 anyhow = "1.0"
 async-std = "1.9.0"
 async-trait = "0.1.79"
-codec = { package = "parity-scale-codec", version = "3.1.5" }
+codec = { package = "parity-scale-codec", version = "3.6.1" }
 futures = "0.3.30"
 hex = "0.4"
 log = { workspace = true }
diff --git a/bridges/relays/messages/Cargo.toml b/bridges/relays/messages/Cargo.toml
index b3f0a9fd19185445c3c038dd7a5ec1855bf6355a..8a411e5082fa491d331d2a4377d003db59f87db7 100644
--- a/bridges/relays/messages/Cargo.toml
+++ b/bridges/relays/messages/Cargo.toml
@@ -1,16 +1,17 @@
 [package]
 name = "messages-relay"
 version = "0.1.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 publish = false
 
 [lints]
 workspace = true
 
 [dependencies]
-async-std = { version = "1.6.5", features = ["attributes"] }
+async-std = { version = "1.9.0", features = ["attributes"] }
 async-trait = "0.1.79"
 env_logger = "0.11"
 futures = "0.3.30"
diff --git a/bridges/relays/messages/src/message_race_loop.rs b/bridges/relays/messages/src/message_race_loop.rs
index f28be78842fc14b019b32c7a8e3c6d35625b77f9..31341a9a0c0cd9fce4ba67e14bc43838f4770f3f 100644
--- a/bridges/relays/messages/src/message_race_loop.rs
+++ b/bridges/relays/messages/src/message_race_loop.rs
@@ -313,7 +313,7 @@ where
 	}
 
 	fn nonces_to_submit(&self) -> Option<RangeInclusive<MessageNonce>> {
-		self.nonces_to_submit.as_ref().map(|(_, nonces, _)| nonces.clone())
+		self.nonces_to_submit.clone().map(|(_, nonces, _)| nonces)
 	}
 
 	fn reset_nonces_to_submit(&mut self) {
diff --git a/bridges/relays/parachains/Cargo.toml b/bridges/relays/parachains/Cargo.toml
index f37e636a9c598ec2e31dfaceebc2a21d82687291..e691168e72d08d2286207807276149c7296be054 100644
--- a/bridges/relays/parachains/Cargo.toml
+++ b/bridges/relays/parachains/Cargo.toml
@@ -1,16 +1,17 @@
 [package]
 name = "parachains-relay"
 version = "0.1.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+authors.workspace = true
+edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 publish = false
 
 [lints]
 workspace = true
 
 [dependencies]
-async-std = "1.6.5"
+async-std = "1.9.0"
 async-trait = "0.1.79"
 futures = "0.3.30"
 log = { workspace = true }
@@ -22,6 +23,6 @@ bp-polkadot-core = { path = "../../primitives/polkadot-core" }
 relay-substrate-client = { path = "../client-substrate" }
 
 [dev-dependencies]
-codec = { package = "parity-scale-codec", version = "3.1.5" }
+codec = { package = "parity-scale-codec", version = "3.6.1" }
 relay-substrate-client = { path = "../client-substrate", features = ["test-helpers"] }
 sp-core = { git = "https://github.com/paritytech/polkadot-sdk", branch = "master" }
diff --git a/bridges/relays/utils/Cargo.toml b/bridges/relays/utils/Cargo.toml
index 13fda477351b937442df6349dc8dd045cbaba32e..8d9addb9beef00c6b89b06006aa743126b8bf8b4 100644
--- a/bridges/relays/utils/Cargo.toml
+++ b/bridges/relays/utils/Cargo.toml
@@ -1,9 +1,10 @@
 [package]
 name = "relay-utils"
 version = "0.1.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
 publish = false
 
 [lints]
@@ -12,7 +13,7 @@ workspace = true
 [dependencies]
 ansi_term = "0.12"
 anyhow = "1.0"
-async-std = "1.6.5"
+async-std = "1.9.0"
 async-trait = "0.1.79"
 backoff = "0.4"
 isahc = "1.2"