Commit Graph

201 Commits

Author SHA1 Message Date
Svyatoslav Nikolsky eba80f42a9 Token-swap-over-bridge pallet (#944)
* token swap pallet

* token swap type (replay protection)

* post-merge fixes

* post-merge fix

* Update modules/token-swap/src/lib.rs

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Update modules/token-swap/src/lib.rs

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* add missing comment part

* Update modules/token-swap/src/lib.rs

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* starting claim after lock period is over is forbidden

* move spec_version and weight to arguments

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
2024-04-10 10:28:37 +02:00
Tomasz Waszczyk f86d101d7c Fix full spellcheck (#1076)
* fix(spellcheck): test of fixing

* fix(hunspell): improved many typos etc.

* fix(hunspell): all errors solved

* fix(hunspell): extended scope of files - the build should fail

* Return error code.

* Fix spelling, sort dictionary.

* fix(hunspell): added fix to gitlabs check

* fix(typo): one typo and test of verification on github

* fix(typo): one typo

Co-authored-by: Tomasz Drwięga <tomasz@parity.io>
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 08fd53adef Use BABE to author blocks on Rialto (previously: Aura) (#1050)
* use BABE to author blocks on Rialto (previously: Aura)

* removed extra script

* use bp_rialto::Moment

* fix tests

* Babe should control session end

* test

* Revert "test"

This reverts commit 4bbbd76b1fe0aa65002fcfa600cfdc6d15c899e2.

* clippy

* fix test

* Revert "Revert "test""

This reverts commit e9220184d4a14ef4f5a792b239e835528d3baa31.

* Revert "Revert "Revert "test"""

This reverts commit 9f56a5528945f1d8f82c6346826be68207bf9c75.
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky f5f73537a8 bump dependencies before start referencing polkadot repo (#1048) 2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky dfdd541bc9 pre and post dispatch weights of OnDeliveryConfirmed callback (#1040)
* pre and post dispatch weights of OnDeliveryConfirmed callback

* Update modules/messages/README.md

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* clippy + compilation

* fix test issue from parallel PR

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 165730a2c2 Rococo <> Wococo messages relay (#1030)
* MessagesInstance -> BridgedMessagesInstance

* Chain::ID -> Bridge::THIS_CHAIN_ID+Bridge::BRIDGED_CHAIN_ID

* FromBridgedChainEncodedMessageCall<B> -> FromBridgedChainEncodedMessageCall<DecodedCall>

* impl Parameter for ()

* copypaste storage_map_final_key to avoid different runtime references/dummy runtimes

* moved dummy runtime from primitives to relay client

* Rococo <> Wococo messages relays

* send R<>W messages using relay

* fmt

* return Result from get_dispatch_info

* fix benchmarks compilation

* clippy
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 3e103c16ce greedy relayer don't need message dispatch to be prepaid if dispatch is supposed to be paid at the target chain (#1016) 2024-04-10 10:28:37 +02:00
kaichao 010588e95a Allow Root to assume SourceAccount. (#1011)
* Allow Root to assume SourceAccount.

* fmt code
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 6ff79e9959 Return dispatch_fee_payment from message details RPC (#1014) 2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky ee43a560f8 Relay basic single-bit message dispatch results back to the source chain (#935)
* relay dispatch result flags back to the source chain

* OnMessagesDelivered callback

* add lane id to OnDeliveredMessages callback

* fix benchmarks && upate weights

* clippy

* clippy

* clipy another try

* OnMessagesDelivered -> OnDeliveryConfirmed

* Update primitives/messages/src/source_chain.rs

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 20b7f341e1 pay dispatch fee at target chain (#911)
* pay dispatch fee at target chain

* refund unspent dispatch weight to messages relayer

* test that transfer actually happens

* pay-at-target-cchain benchmarks + fix previous benchmarks (invalid signature)

* include/exclude pay-dispatch-fee weight from delivery_and_dispatch_fee/delivery tx cost

* remvoe some redundant traces

* enum DispatchFeePayment {}

* typo

* update docs

* (revert removal of valid check)

* Update modules/messages/src/benchmarking.rs

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Update modules/messages/src/benchmarking.rs

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Update modules/messages/src/benchmarking.rs

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Update modules/messages/src/benchmarking.rs

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
Co-authored-by: Tomasz Drwięga <tomasz@parity.io>
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky f321b07606 Rococo <> Wococo relayer balance guard (#998)
* relayer balance guards in Rococo <> Wococo

* removed printlns

* update constant

* update constant

* start balance guard for Wococo -> Rococo

* Update relays/bin-substrate/src/chains/wococo_headers_to_rococo.rs

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>

* Update relays/bin-substrate/src/chains/wococo_headers_to_rococo.rs

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>
Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
Co-authored-by: Tomasz Drwięga <tomasz@parity.io>
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky ec8412b6d0 rename messages_dispatch_weight -> message_details (#996)
Co-authored-by: Tomasz Drwięga <tomasz@parity.io>
2024-04-10 10:28:37 +02:00
Hernando Castano 954137eada Bump Rococo and Wococo spec versions (#999) 2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 812e782904 fix clippy issues (#991) 2024-04-10 10:28:37 +02:00
Hernando Castano a6379d2968 Bump Substrate (#986)
* Bump Substrate to commit `0495ead4`

* Derive MaxEncodedLen for MillauHash

* Add new config params to Balances pallet

* Update Millau and Rialto service files

* Add new Config items to mock runtime

* Bump Substrate to `37bb3ae7`

* Update Aura worker params
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 37d067c0e0 Update submit finality proof weight formula (#981)
* updated weight formula for submit_finality_proof

* remove common prefix traces

* update docs

* single benchmark

* Re-generate weights.

* Update delivery transaction limits

Co-authored-by: Tomasz Drwięga <tomasz@parity.io>
Co-authored-by: Hernando Castano <hernando@hcastano.com>
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 41b65c28cf Flag for rejecting all outbound messages (#982)
* flag for rejecting all outbound messages

* update weights

* Revert "update weights"

This reverts commit 992b866edc7c9fd97013cee9cd68b9d783f8681e.

* Revert "flag for rejecting all outbound messages"

This reverts commit d094964bb4f8800ab6978b9d4b12aade2f80d266.

* OperatingMode

* Update modules/messages/src/lib.rs

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>

* Poke CI

* RustFmt

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>
Co-authored-by: Hernando Castano <hernando@hcastano.com>
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 700d63672b Custom justification verification (#979)
* custom justification verification

* is_ancestor -> ensure_descendant

* PrecommitIsNotCommitDescendant

* Update primitives/header-chain/src/justification.rs

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>
2024-04-10 10:28:37 +02:00
Hernando Castano cae105b55f Bump Rococo/Wococo spec_version (#976) 2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky b6efe6f740 Avoid hashing headers twice in verify_justification (#973) 2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky ff7f8ad098 pass source and target chain ids to account_ownership_proof (#963) 2024-04-10 10:28:37 +02:00
Hernando Castano 20d94e093a Upstream changes from Polkadot repo (#961)
* Bump Rococo's spec_version

* Use dev node for Rococo helper script

* Add helper scripts for relaying Rococo<>Wococo headers

* Change Wococo<>Rococo scripts to use Alice for initialization

* Add Wococo node helper script
2024-04-10 10:28:37 +02:00
fewensa 4ccf7a2f5a Move pallet-bridge-dispatch types to primitives (#948)
* message dispatch support multiple instances

* Move pallet-bridge-dispatch types to primitives

* remove pallet-bridge-dispatch dependency

* Update cargo.lock (remove pallet-bridge-dispatch in substrate-relay)

* remove extra dependencies
2024-04-10 10:28:37 +02:00
Hernando Castano 7dc564a067 Add Wococo<>Rococo Header Relayer (#925)
* Add Wococo primitives crate

* Add more Wococo boilerplate code

* Add CLI support for initializing the Wococo<>Rococo bridge

* Add support for relaying headers between Rococo and Wococo

* Fix test

* RustFmt

* Fix compilation issues related to enum naming

* Bump Rococo `spec_version`

* Remove stray Westend references
2024-04-10 10:28:37 +02:00
Hernando Castano 76625ed180 Remove Westend<>Rococo header sync (#940)
* Remove scripts for Westend<>Rococo header sync

* Remove Westend<>Rococo header sync code

* Remove Westend<>Rococo init bridge CLI option

* Modify Westend mock call to be placeholder

* Fix call encoding test
2024-04-10 10:28:37 +02:00
Hernando Castano 4916ec3432 Remove deprecated Runtime Header APIs (#932) 2024-04-10 10:28:37 +02:00
Hernando Castano 25a4151a8b Prep for Westend to Rococo Header Sync (#915)
* Bump Rococo and Westend RuntimeVersions

* Add helper scripts for running Rococo<>Westend header sync

* Remove extra space

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky f6fd87f39e fix polkadot primitives (#908) 2024-04-10 10:28:37 +02:00
Hernando Castano bca83fd020 Westend<>Rococo Headers Relay (#875)
* Add modules for Rococo<>Westend header sync

* Use mock Westend and Rococo finaltiy tx calls

* Add Westend<>Rococo variants to `init_bridge`

* Add Westend<>Rococo variants to `relay_headers`

* Simplify the Rococo and Westend signing params

* Add `submit_finality_proof` mock Call variant

* Add note to more closely match `initialize` Call variant

* Accidentally committed `cargo-expand`ed code 🤦

* Add `initialize` Call variant to Rococo mock

* Fix call enums.

* Add explainatory comment.

* clippy.

* Add issue number.

* De-duplicate metrics customisation.

* Add comments to Rococo/Westend runtimes.

* Add scale-encoding compatibility test.

* Fix tests.

* Clippy.

Co-authored-by: Tomasz Drwięga <tomasz@parity.io>
2024-04-10 10:28:37 +02:00
Hernando Castano 888f85e346 Stop recursing when creating test headers (#906) 2024-04-10 10:28:37 +02:00
Tomasz Drwięga aa17c272f1 Support more than u8::max_value GRANDPA validators (#896)
* Support moar validators.

* Update weights script.

* Use correct type for benchmarking accounts

* Use package name instead of manifest path

Co-authored-by: Hernando Castano <hernando@hcastano.com>
2024-04-10 10:28:37 +02:00
Hernando Castano 81d4eb9ea6 Westend Mock Runtime and Client (#874)
* Copy-Pasta Call code from mock Rococo to mock Westend runtime

* Update Westend client to include signing and call related code

* Add missing part of license header

* Move `account_info_storage_key` to `polkadot-core` crate
2024-04-10 10:28:37 +02:00
Hernando Castano c6ae74725b Bump Substrate (#871)
* Bump Substrate

* Change usage of "Module" to "Pallet"

Related Substrate PR: https://github.com/paritytech/substrate/pull/8372

* Add `OnSetCode` config param

Related Substrate PR: https://github.com/paritytech/substrate/pull/8496

* Update Aura Slot duration time type

Related Substrate PR: https://github.com/paritytech/substrate/pull/8386

* Add `OnSetCode` to mock runtimes

* Add support for multiple justifications

Related Substrate PR: https://github.com/paritytech/substrate/pull/7640

* Use updated justification type in more places

* Make GenesisConfig type non-optional

Related Substrate PR: https://github.com/paritytech/substrate/pull/8275

* Update service to use updated telemetry

Related Substrate PR: https://github.com/paritytech/substrate/pull/8143

* Appease Clippy
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky cb90ea0979 Pre-create metrics registry before loop is started + administrative metrics (#848)
* administrative metrics

* fmt

* fix compilation

* fix compilation again

* and another one

* remove GenericLoopMetrics

* chttp -> isahc

* remove redundant marker

* not about price metrics

* fmt
2024-04-10 10:28:37 +02:00
Hernando Castano 21baffc832 Update Copyright Date to 2021 (#864)
* Update copyright date to 2021

* Bump date in license header template
2024-04-10 10:28:37 +02:00
Hernando Castano 1928e2b870 Use Vote Ancestries Directly in Weight Calculations (#862)
* Use more accurate weight calculation in declared weight

* Remove session length and validator set size config constants

* Remove config params from mock

* Allow specifying total number of votes-ancestries per justification

* Change limits used during benchmarking

* Regenerate weights

* Use simplified weight annotation

* Remove comment

* Address leftover TODO

* Prevent possible divide by zero errors

* Use correct argument order in weight declaration
2024-04-10 10:28:37 +02:00
Hernando Castano 025a9cad59 Weights for pallet-bridge-grandpa (#815)
* Add benchmarking skeleton

* Allow runtime to indicate concrete header type for benches

* Set up skeleton for benchmark tests

* Play around with mutating bench header

* Create a working test for benchmarking

* Add benches related to enacting authority set changes

* Add bench for checking effect of prec-commits/vote ancestries

* Use new `no_std` test utils in benchmarks

* Support pallet instances in benchmarking

* Use correct benchmarking instance macro

* Add instance to runtime benchmark helper impl

* Start using new justification creation API

* Allow mock header's number to be specified

* Set up benches with correct fork/depth parameters

* Use new pallet name during runtime bench setup

* Use correct `set_id` in tests

* Limit number of forks as workaround to get tests passing

* Use number of authorities which matches number of forks

* Make sure test post-conditions are checked properly

* Only read `CurrentAuthoritySet` from storage once

* Add combined benchmark for `submit_finality_proof`

* Add bench test

* Introduce config bounds related to justification verification

* Use config consts from pallet in benchmarking

* Return data relevant to benchmarks from helper functions

* Annotate `submit_finality_proof` with autogenerated weights

* Return actual weight after call execution

* Ignore Clippy warnings in bench template

* Update benchmark template

* Use `test-utils` to create test headers

* Clarify that helper is only for messages benches

* Add more documentation to benches

* Update TODOs

* Clarify return types in comment

* Fix pallet name post-merge

* Update NOTE to a TODO item

* Indicate that Config params are max values, not actual values

* Change Config validator count type to be `u32`

* Return decoded justification instead of fields

* Add missing trait bounds for tests

* Correctly issue weight refund

Thanks for spotting this Tomek!

* Update comment

* Add note about SESSION_LENGTH

* Fix benchmarking code
2024-04-10 10:28:37 +02:00
Hernando Castano 67cdca8aa4 Use GrandpaJustification instead of Vec<u8> in Pallet API (#847)
* Stop passing raw encoded justifications to pallet API

By having the API accept a struct-ified justification we are able to
better utilize the justifications fields for weight calculations.

* Update relayer code to use decoded justifications

* Add justification to `expect()` statement

* Fix some imports

* Make justification wrapper contain decoded justification

* Rename some fields

* Get rid of warnings

* Appease Clippy

* Only decode justification once at init time

* Remove unnecessary method

* Remove justification wrapper

This became kinda unnecessary since we could implement the FinalityProof
trait on GrandpaJustification directly.
2024-04-10 10:28:37 +02:00
Tomasz Drwięga 904b9f4da5 Make relay CLI generic (#849)
* Start generalizing rialto-millau commands.

* cargo fmt --all

* Introduce generic balance.

* Unify message payloads.

* cargo fmt --all

* init - generic

* Attempt to unify send message.

* Start moving things around.

* cargo fmt --all

* Move init-bridge.

* cargo fmt --all

* Improve UX of bridge argument.

* Fix clippy.

* Fix docs and scripts.

* Add docs.

* Apply suggestions from code review

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>

* Fix copyright.

* Add issue numbers.

* More todos.

* Update comments.

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>
2024-04-10 10:28:37 +02:00
Tomasz Drwięga 51fc83941b Rococo (mocky)Runtime and Client (#841)
* Implement fake rococo runtime.

* Generate correct storage key.

* cargo fmt --all

* Move client-rococo.

* Satisfy clippy.

* Apply suggestions from code review

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>

* Address review comments.

* Clippy again.

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>
2024-04-10 10:28:37 +02:00
Hernando Castano 78a9cdca66 Larger Test Keyring Support (#842)
* Allow creation of authority lists with any number of authorities

* Move keyring helpers into their own module

* Add helper for generating list of test accounts

* Fix import names in tests

* Rename Keyring trait to Signer

* Get list of accounts in a more functional way

* Clarify meaning of `test_keyring` return type

* Use concrete test account type instead of generics

* Make sure voter set contains all authorities which signed off on pre-commits
2024-04-10 10:28:37 +02:00
Hernando Castano 8d122b03f1 Rename Finality Verifier and Call Dispatch Pallets (#838)
* Rename `pallet-finality-verifier` to `pallet-bridge-grandpa`

* Missed some CamelCase ones

* Update logging target in GRANDPA pallet

* Rename `pallet-bridge-call-dispatch` to `pallet-bridge-dispatch`

* Rename the dispatch pallet folder

* Update logging target in Dispatch pallet

* Missed a couple

* Format the repo

* Stop listing individual pallets in Compose logs

* Use correct pallet name in module doc comments

* Add `pallet-bridge-dispatch` to README project layout

* Sort crate names in TOML files

* Rename `pallet-bridge-grandpa` runtime Call alias
2024-04-10 10:28:37 +02:00
Tomasz Drwięga acb872fbb0 Flatten back the structure (#837)
* Remove chains.

* Move relay clients.

* Flatten generic.

* Fix fmt.
2024-04-10 10:28:37 +02:00
Hernando Castano 1c7b5d1b30 Tunable Justification Generator (#835)
* Add way to create tunable GRANDPA justifications

* Use new function in tests

* Allow multiple authorities on a single fork

* Only store pre-commit targets instead of full ancestry chains

* Rename precommit_header to be more generic

* Push new digest item instead of overriding entire digest

* Ensure that we generate chains with non-zero length

* Extract justification creation parameters into struct

* Appease Clippy
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 4105575794 Rename pallet-message-lane into pallet-bridge-messages (#834)
* use runtime:: prefix for message-lane pallet traces

* renamed message-lane (module and primitives) folder into messages

* replace "message lane" with "messages" where appropriate
2024-04-10 10:28:37 +02:00
Hernando Castano eb7c96ba14 Make Test Helpers no_std Compatible (#823)
* Use `sp-application-crypto` when generating test justifications

* Try to justifications tests compiling

* Try using `ed25519_dalek` for justification creation

* Small cleanup

* Correctly generate a Keypair

The public key didn't correspond to what would be derived
with the given private key.

* Remove enum index hack

* Clean up test account helper functions

* Fix tests in `pallet-finality-verifier`

* Get `pallet-substrate-bridge` tests compiling again

* Use the correct keyring in justification tests

* Clean up Keyring related code a bit

* Appease Clippy

* Remove unused import

* Use keyring variants directly

* Remove unecessary From implementation
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky d749bc3a96 Sync Westend to Millau (#824)
* make finality verifier pallet instantiable

* add second instance of finality verifier pallet to the Millau runtime

* add Westend -> Millau headers relay

* use wss to connect to public westend nodes

* initialize with best_finalized_block

* typo

* Revert "initialize with best_finalized_block"

This reverts commit 954ed2832372d67618abc1a06d47e66faa93f674.

* pass VoterSet by ref

* new bridge initialization code

* loop upper bound

* Polkadot -> Westend

* fixed tests compilation

* default-features

* assert
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 715258785f Added some ML-related constants for polkadot-like chains (#822)
* added some ML-related constants for polkadot-like chains

* comment
2024-04-10 10:28:37 +02:00
Hernando Castano d8852fd197 Clean Finality Verifier Pallet (#804)
* Remove unused Config types from `pallet-finality-verifier`

* Remove unused AncestryChecker trait

* Remove ancestry proof parameter from relayer calls

* Update docs to reflect current state of pallet

* Remove mock ancestry checker

* Remove unused error

* Write headers outside of function used for authority set changes

* Move justification verification into helper function

* Add documentation suggestions

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Clean up module level documentation a bit

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
2024-04-10 10:28:37 +02:00