Commit Graph

105 Commits

Author SHA1 Message Date
Svyatoslav Nikolsky 606768bc6a Use specific error for case when para head is missing from the bridge pallet (#1829)
* use specific error for case when para head is missing from the bridge pallet

* fix match to support both error types
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 4689dfaf2c Do not read parachain heads from ancient relay headers (#1827)
* do not read parachain heads from ancient relay headers

* revert test change
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky d7b131646c Relayer reward metric (#1742)
* use StorageDoubleMapKeyProvider in RelayerRewards

* add metrics

* clippy

* fixed alerts that have caused missing dashboards

* fix metric name

* fix metric name again

* add new metrics to the RialtoParachain <> Millau maintenance dashboard

* remove obsolete dashboard
2024-04-10 10:28:37 +02:00
Serban Iorga b4c338f77d Set R/WococoBridgeHub bundle runtime version (#1756)
* Define SimpleRuntimeVersion

* Set R/WococoBridgeHub bundle runtime version
2024-04-10 10:28:37 +02:00
Serban Iorga 444dbe7173 Use indirect runtime calls for RialtoParachain (#1753)
* Use indirect runtime calls for RialtoParachain

* Code review fixes
2024-04-10 10:28:37 +02:00
Serban Iorga 63a538a9bb Deduplicate pallet call structs used for indirect runtime calls (#1744)
* Small changes

* Define generic bridge pallets call structs

* polkadot-core SignedExtension simplifications

- we don't seem to need to pass the Call as a generic param
- we can use codec(skip) instead of implementing Encode and Decode

* Split BridgeHubRococo and BridgeHubWococo calls

* code review fixes
2024-04-10 10:28:37 +02:00
Serban Iorga 41daa32acb Simplify read_client_state() (#1739) 2024-04-10 10:28:37 +02:00
Serban Iorga e47f1e42e0 Replace BATCH_CALL_SUPPORTED (#1733)
* Simplify submit_and_watch_signed_extrinsic

The way submit_and_watch_signed_extrinsic is used now, we can always
derive the SignParam from other params. If in the future we need more
customization possibilities, we can define a new method.

* Simplify submit_signed_extrinsic

* Send maybe_batch_tx as a parameter

Send `maybe_batch_tx` as a parameter to `submit_proof()`. This way we
can deduplicate the logic that submits the extrinsic for
`messages_source and `messages_target` and we can simplify the logic in
the race loop a bit.

* Define BatchProofTransaction

Deduplicate BatchConfirmationTransaction and BatchDeliveryTransaction by
replacing both of them with BatchProofTransaction

* Define ChainWithUtilityPallet and BatchCallBuilderConstructor

- Define `ChainWithUtilityPallet` in order to be able to associate the
  batching functionality with chains
- Defining `BatchCallBuilderConstructor` in order to have a more reliable
  way of checking whether an end of a messages pipeline supports batching
  or no. `BatchCallBuilderConstructor::new_builder()` returns an
  `Option<BatchCallBuilder>`.This is a bit safer because each time a caller
  tries to start creating a batch call, it will call `new_builder()` and
  will be required to handle the returned `Option`. Before we only had a
  bool `BATCH_CALL_SUPPORTED` the caller could have forgetten to check.
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky be27bd5e97 Batch transactions in complex relays (#1669)
* batch transactions in message relay: API prototype

* get rid of Box<dyn BatchTransaction> and actually submit it

* test batch transactions

* message_lane_loop_works_with_batch_transactions

* removed logger

* BatchConfirmationTransaction + BatchDeliveryTransaction

* more prototyping

* fmt

* continue with batch calls

* impl BatchCallBuilder for ()

* BatchDeliveryTransaction impl

* BundledBatchCallBuilder

* proper impl of BundledBatchCallBuilder + use it in RialtoParachain -> Millau

* impl prove_header in OnDemandHeadersRelay

* impl OnDemandParachainsRelay::prove_header (needs extensive tests)

* added a couple of TODOs

* return Result<Option<BatchTx>> when asking for more headers

* prove headers when reauire_* is called && return proper headers from required_header_id

* split parachains::prove_header and test select_headers_to_prove

* more traces and leave TODOs

* use finality stream in SubstrateFinalitySource::prove_block_finality

* prove parachain head at block, selected by headers relay

* const ANCIENT_BLOCK_THRESHOLD

* TODO -> proof

* clippy and spelling

* BatchCallBuilder::build_batch_call() returns Result

* read first proof from two streams

* FailedToFindFinalityProof -> FinalityProofNotFound

* changed select_headers_to_prove to version from PR review
2024-04-10 10:28:37 +02:00
Serban Iorga bde1629f86 Remove SOURCE_PARACHAIN_PARA_ID (#1716)
* Remove SOURCE_PARACHAIN_PARA_ID

Remove SubstrateParachainsPipeline::SOURCE_PARACHAIN_PARA_ID

* Avoid duplicate ChainBase and ParachainBase implementations

* Replace ChainShadow with UnderlyingChainProvider
2024-04-10 10:28:37 +02:00
Serban Iorga ba75e63fcd Remove WeightToFee (#1713)
* Remove WeightToFee

* Remove leftover
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky d63a75697c Only store header state root (pallet-bridge-parachains) (#1701)
* store block number ++ state root in parachains pallet

* fixed parachains finality APIs

* (test commit)

* removed test code

* deduplicated code a bit

* removed commented code

* spelling

* Update modules/parachains/src/lib.rs

Co-authored-by: Adrian Catangiu <adrian@parity.io>

* Update modules/parachains/src/lib.rs

Co-authored-by: Adrian Catangiu <adrian@parity.io>

* Update modules/parachains/src/mock.rs

Co-authored-by: Adrian Catangiu <adrian@parity.io>

* added comment

Co-authored-by: Adrian Catangiu <adrian@parity.io>
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky c03d99cd09 fix clippy (#1664) 2024-04-10 10:28:37 +02:00
Branislav Kontur 786db04bbc Fixes fo ro/wo bridge (#1661) 2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 8c845602cf Remove message fee + message send calls (#1642)
* remove message fee

* it is compiling!

* fixes + fmt

* more cleanup

* more cleanup

* restore MessageDeliveryAndDispatchPayment since we'll need relayer rewards

* started rational relayer removal

* more removal

* removed estimate fee subcommand

* remove DispatchFeePayment

* more removals

* removed conversion rates && some metrics

* - unneeded associated type

* - OutboundMessageFee

* fix benchmarks compilation

* fmt

* test + fix benchmarks

* fix send message

* clippy
2024-04-10 10:28:37 +02:00
Branislav Kontur 2c0b6b73e0 Bump xcm v3 + substrate
* Bumping substrate/polkadot/cumulus

* Update Cargo.lock

* Fixes

* Fixes for mmr

* Bump clap

* Fix for millau - added CompatibilityMode

* Fixes for rialto-parachain

* Align everywhere branch='master' and just use overrides from main Cargo.toml
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky a979340e49 refactor transaction sign scheme (#1621) 2024-04-10 10:28:37 +02:00
Serban Iorga 01538bc5fa Finality loop: get block justification and authorities change by consensus engine ID (#1619)
* SignedBlock: get justification by consensus engine id

* Define ConsensusLogReader

Making the check for authority changes more generic

* cod review changes
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky f58e076ca2 fixes for nightly clippy (#1618) 2024-04-10 10:28:37 +02:00
Serban Iorga 4f796ce803 Define SubstrateBeefy RPC client (#1615) 2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky a3dc2d2748 Bump Substrate/Polkadot/Cumulus refs (aka Weights v1.5) (#1597)
* update Substrate + Polkadot + Cumulus refs

* Origin -> RuntimeOrigin

* weights v1.5

* update refs once again + `cargo test -p pallet-bridge-grandpa` works

* started work on `cargo test -p pallet-bridge-messages`

* cargo test -p pallet-bridge-relayers

* cargo test -p pallet-bridge-parachains

* cargo test -p millau-runtime

* cargo test -p bridge-runtime-common

* cargo test -p rialto-runtime

* cargo test -p rialto-parachain-runtime

* cargo test -p millau-bridge-node

* cargo test -p rialto-bridge-node

* cargo test -p rialto-parachain-collator

* cargo test -p messages-relay

* cargo test -p parachains-relay

* cargo test -p substrate-relay

* cargo test --all

* cargo check -p millau-runtime --locked --features runtime-benchmarks

* fix remaining test

* fmt

* try to allow clippy failure temporarily

* Revert "try to allow clippy failure temporarily"

This reverts commit d1b6593580f07e0dbeecb7ab0aa92cee98888ed3.

* use min_by

* Revert "use min_by"

This reverts commit 33042f49ed37e8dd0505370289e17f03bf1a56ee.

* Revert "Revert "use min_by""

This reverts commit 1d2204f0b14dc81e5650bb574dedb5fa78c7097d.

* trigger CI

* Revert "trigger CI"

This reverts commit 259d91b5606743bba9d043c69f07eac6c8700ef5.

* new day, new clippy warning

* more clippy issues
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 43afa02372 Read extrinsic dispatch result for mined transaction (#1582)
* read extrinsic dispatch result for mined transaction

* commit for the history

* Revert "commit for the history"

This reverts commit 99341b04750639db296172cc1432bd70e458ef4b.

* Revert "read extrinsic dispatch result for mined transaction"

This reverts commit 662b776cbf992be9f1637e52f023b782e8c441d1.

* check for successfult transaction in finality relay

* check for successful transaction in parachains relay

* TrackedTransactionStatus ->TrackedTransactionStatus<HeaderId>

* check for successful transaction in messages relay

* fix compilation

* message_lane_loop_is_able_to_recover_from_unsuccessful_transaction

* fixed too-complex-type clippy error

* aaand compilation
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 5ff36549f1 remove unnecessary consts (#1586) 2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky e534e90193 use transaction tracker in messages relay (#1581) 2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 415f28fac8 Do not wait for tx status forever (#1578)
* do not wait for tx status forever

* more logging
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 70d6e91f20 TransactionInvalidationTracker (#1544)
* TransactionInvalidationTracker

* TransacitonInvalidationTracker -> TransactionTracker

* change sign_transaction method

* clippy and spelling

* removed comment

* more transactiontracker tests

* stalls_when_transaction_tracker_returns_error

* remove test code

* remove "impl TransactionTracker for ()"

* enum TrackedTransactionStatus

* test TransactionTracker in on_transaction_status

* do_wait
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 95c30c780c update Substrate/Polkadot/Cumulus refs (#1562)
* update Substrate/Polkadot/Cumulus refs

* finality-grandpa 0.16

* fix miillau-runtime compilation

* fix rialto runtime compilation

* fixed rialto-parachain runtime compilation

* backport GRANDPA test fixes

* helper instead of removed record_all_keys

* substrate-relay is compiling

* millau-bridge-node at least compiles

* rialto-bridge-node at least compiles

* rialto-parachain-collator compiles

* fixings tests (wip)

* fmt

* fixed BEEFY alert

* clippy

* removed unused dep

* -extra var

* move Leaf to mod mmr

* fix benchmarks
2024-04-10 10:28:37 +02:00
Serban Iorga ad38cdb873 Follow-up on #1068 (#1567)
* BestParaHead small changes

Signed-off-by: Serban Iorga <serban@parity.io>

* Renamings

Signed-off-by: Serban Iorga <serban@parity.io>

* Use ParaInfo in parachains loop

Signed-off-by: Serban Iorga <serban@parity.io>

* Define StorageMapKeyProvider

Signed-off-by: Serban Iorga <serban@parity.io>

* CR fixes

Signed-off-by: Serban Iorga <serban@parity.io>
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky f35b4f4897 Extract unsigned tx from the SignParam structure (#1561)
* change sign_transaction method

* clippy

* rustup update && clippy

* remove redudnant clone
2024-04-10 10:28:37 +02:00
Branislav Kontur effe0f11c8 Unnecessery clones + removed unused Enum value (#1557)
* Unnecessary clone

* Removed unused Enum value

* Client - ConnectionParams wrapped with Arc + removed unnecessery clone

* Client - ConnectionParams wrapped with Arc + removed unnecessery clone
2024-04-10 10:28:37 +02:00
Serban Iorga 050b12f3aa Call To*InboundLaneApi::message_details() with batched messages (#1545)
* generated_message_details() -> Simplifications

- avoid using a HashMap for `messages_to_refine`. It seems that a vec is
  enough
- minimize the number of conversions between `OutboundMessageDetails` and
  `MessageDetails`
- use references where possible in order to minimize the number of
  intermediary Vecs
- simplify `make_message_details_map()` logic, reduce its scope and rename
  it to `validate_out_msgs_details()`

Signed-off-by: Serban Iorga <serban@parity.io>

* Define typed_state_call()

Signed-off-by: Serban Iorga <serban@parity.io>

* Call To*InboundLaneApi::message_details() with single messages

Signed-off-by: Serban Iorga <serban@parity.io>

* Call To*InboundLaneApi::message_details() with batched messages

Signed-off-by: Serban Iorga <serban@parity.io>

* validate_out_msgs_details() -> change check

* Define split_msgs_to_refine()

Signed-off-by: Serban Iorga <serban@parity.io>

Signed-off-by: Serban Iorga <serban@parity.io>
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky e7a7396616 Use jsonrpsee subscriptions (#1533)
* splitted Substrate RPC trait

* introduce subscription methods

* removed commented code

* removed commented code
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky dd9debed3c Bump jsonrpsee (#1530)
* switch to jsonrpsee 0.15

* use client_bounds marker
2024-04-10 10:28:37 +02:00
Serban Iorga cd36d1e15f Define StorageDoubleMapKeyProvider
Signed-off-by: Serban Iorga <serban@parity.io>
2024-04-10 10:28:37 +02:00
Serban Iorga dc38e3d079 Define HeaderIdProvider trait
Define HeaderIdProvider trait

Signed-off-by: Serban Iorga <serban@parity.io>
2024-04-10 10:28:37 +02:00
Serban Iorga e1fd877b80 CLI refactoring
* [CLI] Make bridge definitions more complete

* [CLI] Refactor relay_headers_and_messages

Signed-off-by: Serban Iorga <serban@parity.io>
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 7d97e576d0 Remove without_storage_info for messages pallet (#1487)
* draft: remove without_storage_info for messages pallet

* some cleanup
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 31a2be845c Fix on-different-forks metrics during initialization (#1468)
* fix on-different-forks metrics during initialization

* "initialize" parachain finality pallet in on-demand parachains relay

* decrease converstion rate requests count

* more error logging

* fix compilation

* clippy
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky f0d05de080 Get dispatch weight from the target chain (when DispatchFeePayment::AtTargetChain is used) (#1430)
* reintroduce From<SourceChain>InboundLaneApi

* impl From<Chain>InboundLaneApi for testnet runtimes

* use inboundlaneapi in relay

* remove unused OutboundXcmWeigher

* spelling

* added the only test to messages pallet

* fmt
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 78a43c561a ensure that the bridge GRANDPA pallet is initialized in the finality relay (#1423) 2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 4001cfb758 Add RialtoParachain <> Millau bridge to test deployments (#1412)
* add RialtoParachain <> Millau bridge to test deployments

* flush (still not working, but possible fix in comments)

* proper fix

* fixed on-demand parachains relay case: if better relay header is delivered, then we must select para header that may be proved using this relay header

* dashboards

* fmt

* removing debugging code

* more cleanup
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 7a92b40eab Fix clippy warnings + try to enable proper (no-warning) clippy on CI (#1410)
* fix clippy warnings

* try to reenable proper clippy on CI

* fix clippy error

* more Eqs

* ignore clippy::derive-partial-eq-without-eq - clippy seems to be broken now :/
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 542ebb5654 Complex RialtoParachain <> Millau relay (#1405)
* complex parachain relay

* fix spelling
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 03c2f06a27 Parachains finality relay (#1199) 2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky b3c8852bcf FinalityEngine in substrate relay (#1374)
* introduce FinalityEngine in relay code

* add FinalityEngine to relay

* spelling

* fix test compilation

* Update relays/lib-substrate-relay/src/finality/source.rs

Co-authored-by: Adrian Catangiu <adrian@parity.io>

Co-authored-by: Adrian Catangiu <adrian@parity.io>
2024-04-10 10:28:37 +02:00
Adrian Catangiu 14b27a0209 Update Substrate/Polkadot/Cumulus references (#1364)
cumulus: b468d0c33e
polkadot: 827792ca833396c82c726eda0bc2ad32ecddba73
substrate: 666f39b8a22108f57732215de006518738034ba2

bump serde_json to 1.0.79

sync changes from https://github.com/paritytech/substrate/pull/11022

fixed clippy warnings

Signed-off-by: acatangiu <adrian@parity.io>
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 133934df7c fix parse_transaction on Rialto+Millau (#1360) 2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 65c2c0ccce Update Substrate/Polkadot/Cumulus references (#1353)
* cumulus: 4e95228291
polkadot: 975e780ae0d988dc033f400ba822d14b326ee5b9
substrate: 89fcb3e4f62d221d4e161a437768e77d6265889e

* fix refs

* sync changes from https://github.com/paritytech/polkadot/pull/3828

* sync changes from https://github.com/paritytech/polkadot/pull/4387

* sync changes from https://github.com/paritytech/polkadot/pull/3940

* sync with changes from https://github.com/paritytech/polkadot/pull/4493

* sync with changes from https://github.com/paritytech/polkadot/pull/4958

* sync with changes from https://github.com/paritytech/polkadot/pull/3889

* sync with changes from https://github.com/paritytech/polkadot/pull/5033

* sync with changes from https://github.com/paritytech/polkadot/pull/5065

* compilation fixes

* fixed prometheus endpoint startup (it now requires to be spawned within tokio context)
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky f95456d4ea replace From<>InboundLaneApi with direct storage reads (#1348) 2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky e29b590785 Using-same-fork metric for finality and complex relay (#1327)
* using_same_fork metric in finality relay

* support `using_different_forks` in messages relay

* added dashboards and alerts

* lockfile
2024-04-10 10:28:37 +02:00