Skip to content

Parachain Relayer V2#1321

Merged
yrong merged 82 commits intov2from
ron/v2
Feb 3, 2025
Merged

Parachain Relayer V2#1321
yrong merged 82 commits intov2from
ron/v2

Conversation

@yrong
Copy link
Copy Markdown
Contributor

@yrong yrong commented Oct 22, 2024

Fee types.U128
Nonce uint64
BlockNumber uint32
Fee big.Int
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you use types.UCompact then you won't need to write a custom decoder.

"golang.org/x/sync/errgroup"
)

func (relay *Relay) startDeliverProof(ctx context.Context, eg *errgroup.Group) error {
Copy link
Copy Markdown
Collaborator

@vgeddes vgeddes Jan 21, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Problem here is that we're taking on the responsibility of handling all delivery proofs.

There may be multiple instances of the parachain relayer, each of which only relays messages according to different criteria. Each instance should only handle its own delivery proofs.

Instead, we know that the ethereum-writer calls wr.gateway.V2Submit() after which we have access to the delivery proof. Wouldnt it better to have this algorithm:

  1. Ethereum-writer submits message to Gateway
  2. Ethereum-writer finds receipt for completed transaction, get InboundMessageDispatched log and pushes it on queue deliveryReceipts
  3. The parachain-writer reads from the deliveryReceipts queue and submits proof to parachain.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pushes it on queue deliveryReceipts

@vgeddes Could you elaborate a bit more about the deliveryReceipts queue, is that on-chain storage or some kind of off-chain global storage like Redis?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would just be a go channel used to communicate within the relayer process

Copy link
Copy Markdown
Contributor Author

@yrong yrong Feb 2, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can send delivery proof only after the beacon block is finalized, so there's a long wait between step 2 and step 3. If the relayer stops/restarts for any reason during that period, we could miss sending the proof.

So IMO we may still need the background startDeliverProof running periodically to find the pending orders and submit delivery proof for these orders.

Btw: 24230d7 for filtering the order by rewardAddress to handle the relayer's own delivery proof.

Base automatically changed from vincent/v2 to v2 January 30, 2025 12:45
@yrong yrong mentioned this pull request Feb 3, 2025
Merged
@yrong yrong merged commit 08e2bb0 into v2 Feb 3, 2025
@yrong yrong deleted the ron/v2 branch February 3, 2025 07:38
yrong added a commit that referenced this pull request Apr 2, 2025
* Contracts V2 (#1300)

* Ethereum Relayer V2 (#1341)

* v2 initial commit

* latest changes

* Flesh out dispatch logic for inbound messages

* Add reward address

* make code compile

* Split initializer impl into a library to reduce contract size

* Major refactor

* Update tests

* add scripts back

* Update scripts

* Finish outbound messaging

* Implement token registration for V2

* Make functions payable

* improve docs

* comments

* review feedback

* cleanups

* Add initial tests for V2

* Make `rewardAddress` an indexed event parameter

* Clean up interfaces

* Make WETH address configurable

* Autowrap ether

* auto-unwrap ether

* Add view keyword

* off-chain part

* off-chain changes

* improve

* improve

* allow unlocking native ether

* improve token registration flows

* improve docs

* improve

* improve

* nit

* Update contracts/src/v1/Calls.sol

Co-authored-by: Clara van Staden <claravanstaden64@gmail.com>

* Apply suggestions from code review

Co-authored-by: Alistair Singh <alistair.singh7@gmail.com>

* Fix unlock WETH

* Suppress Error (6243): The "tload" instruction

* Merge recent changes

* add foundry setting

* relayer progress

* fixes

* adds xcm

* register token v2

* clean up register token smoketest

* fmt

* merge damage

* fix tests

* send token and relayer fixes

* relayer cleanup and transact

* send token to penpal smoke test

* syntax error

* adds penpal test to ci

* merge damage fixes

---------

Co-authored-by: Vincent Geddes <117534+vgeddes@users.noreply.github.com>
Co-authored-by: ron <yrong1997@gmail.com>
Co-authored-by: Alistair Singh <alistair.singh7@gmail.com>

* Parachain Relayer V2 (#1321)

* v2 initial commit

* latest changes

* Flesh out dispatch logic for inbound messages

* Add reward address

* make code compile

* Split initializer impl into a library to reduce contract size

* Major refactor

* Update tests

* add scripts back

* Update scripts

* Finish outbound messaging

* Implement token registration for V2

* Make functions payable

* improve docs

* Parachain relayer V2

* Rename to PendingOrder

* Decode compact int

* comments

* Improve doc

* review feedback

* cleanups

* Add initial tests for V2

* Make `rewardAddress` an indexed event parameter

* Remove unused

* Submit delivery proof

* Rename to InboundMessageV2

* Mark as view function

* Filter with reward address

* Clean up interfaces

* Make WETH address configurable

* Autowrap ether

* V2 smoke tests (#1327)

* Update contracts for smoke tests

* Remove unused

* Decode test

* Update subxt

* Register PNA with OutbountQueueV2

* Fix storage key

* Comment out config

* Revert contract changes

* Fix function

* Regenerate binds & update package path

* Format

* Format

* Add todo

* Update bindings

* Update script

* auto-unwrap ether

* Update smoke tests

* Add view keyword

* More refactoring

* Verify V2 digest for commitment

* Call Contract with value

* improve

* improve

* allow unlocking native ether

* improve token registration flows

* improve docs

* improve

* improve

* nit

* Fix smoke test for V2

* Fix test

* Fix unlock WETH

* Sync with contract

* Fix smoke test

* Update contracts/src/v1/Calls.sol

Co-authored-by: Clara van Staden <claravanstaden64@gmail.com>

* Apply suggestions from code review

Co-authored-by: Alistair Singh <alistair.singh7@gmail.com>

* Fix unlock WETH

* Suppress Error (6243): The "tload" instruction

* Merge recent changes

* Fix breaking tests

* Fix tests

* Filter order by rewardAddress to handle own delivery proof

* Fix test

* Add ofac check

---------

Co-authored-by: Vincent Geddes <117534+vgeddes@users.noreply.github.com>
Co-authored-by: Clara van Staden <claravanstaden64@gmail.com>
Co-authored-by: Alistair Singh <alistair.singh7@gmail.com>

* Fix V2  tests (#1378)

* Fix smoke tests

* Add smoke tests

* Prefund transfer ENA

* Create agent (#1388)

* Create agent on Ethereum

* Add test

* Fix forge test

* Revamp smoke test

* Update go bindings

* Add register relay token back

* Fix transfer pna

* Remove obsolete code

* Update contracts/src/v2/Types.sol

Co-authored-by: Vincent Geddes <117534+vgeddes@users.noreply.github.com>

* Update foundry.toml

* Rename follow the naming scheme

* Fix smoke test

* Fix function name

---------

Co-authored-by: Vincent Geddes <117534+vgeddes@users.noreply.github.com>

* Fix test coverage reports (#1390)

* Gateway should no longer build token registration XCM (#1381)

* Rather build register token on BH

* Add comments

* adds metadata fields to register token

* Revert "adds metadata fields to register token"

This reverts commit 90cbff5.

* update tests

* Cleanup

* Update bindings

* remove kusama as supported network

---------

Co-authored-by: claravanstaden <claravanstaden64@gmail.com>
Co-authored-by: ron <yrong1997@gmail.com>

* Improve smoke tests (#1396)

* Rather build register token on BH

* Add comments

* adds metadata fields to register token

* Revert "adds metadata fields to register token"

This reverts commit 90cbff5.

* update tests

* Cleanup

* Update bindings

* Fix smoke test send token to destination chain

* Rename path

* Add send pna

* Check amount

---------

Co-authored-by: Vincent Geddes <117534+vgeddes@users.noreply.github.com>
Co-authored-by: claravanstaden <claravanstaden64@gmail.com>

* cherry-pick token changes from main

* Revert "cherry-pick token changes from main"

This reverts commit 9731690.

* Improve ERC20 implementation (#1384)

* Add more docs

* Log topic on ethereum side (#1404)

* Log topic on ethereum side

* Fix test

* Update relayer

---------

Co-authored-by: ron <yrong1997@gmail.com>

* Delete obsolete code

* improve comments

* cleanups after static analysis

* Remove handlers for deprecated V1 commands

* format code

* format comments

* Refactor agent creation code

* Add test for foreign token registration

* Add tests for mint foreign token

* Improve docs

* Update bindings

* Merge from V1 (#1422)

* Add support for ether (#1409)

* Upgrade gateway on Sepolia for westend (#1407)

* Log gateway codehash

* Upgrade Gateway on Westend-Sepolia

* Update indexer endpoint & Cleanup (#1411)

* Ban lido token (#1412)

* Fix hardcoded url (#1414)

* Register Polkadot Native Assets in Control Tool (#1405)

* added function to register tokens

* fmt

* fix build errors

* clean up

* more assets

* fix message

* more tokens

* Update control/preimage/src/commands.rs

---------

Co-authored-by: Clara van Staden <claravanstaden64@gmail.com>

* Force rebuild (#1418)

* Update with V1 bindings

* Remove channel config

* Remove channel

* Remove topic id from InboundMessageDispatched

* Format codes (#1416)

* Generate delivery receipt

* Revert "Remove topic id from InboundMessageDispatched"

This reverts commit 7e77f49.

	modified:   smoketest/src/helper.rs
	modified:   web/packages/test/scripts/build-binary.sh

* Fix script

* Clean up unused code

* Cleanup

* Minor fix

* Fix binding

* Change storage location

* Fix template

---------

Co-authored-by: Alistair Singh <alistair.singh7@gmail.com>
Co-authored-by: Clara van Staden <claravanstaden64@gmail.com>

* Merge updates from V1 (#1429)

* Add support for ether (#1409)

* Upgrade gateway on Sepolia for westend (#1407)

* Log gateway codehash

* Upgrade Gateway on Westend-Sepolia

* Update indexer endpoint & Cleanup (#1411)

* Ban lido token (#1412)

* Fix hardcoded url (#1414)

* Register Polkadot Native Assets in Control Tool (#1405)

* added function to register tokens

* fmt

* fix build errors

* clean up

* more assets

* fix message

* more tokens

* Update control/preimage/src/commands.rs

---------

Co-authored-by: Clara van Staden <claravanstaden64@gmail.com>

* Force rebuild (#1418)

* Format codes (#1416)

* remove equilibrium and its stable coin (#1421)

* Hot fix (#1424)

* Update Bifrost RPC endpoint

* Update package

* Update geth to v.15.5 in order to support decoding of SetCodeTx (#1426)

* update geth to v.15.5 in order to support decoding of SetCodeTx

* update go to 1.23.0

* update Go version in CI

* fix breaking test

* Cleanup

---------

Co-authored-by: Alistair Singh <alistair.singh7@gmail.com>
Co-authored-by: Clara van Staden <claravanstaden64@gmail.com>
Co-authored-by: Parth <desaiparth08@gmail.com>

* For V1 compatibility (#1428)

* Merge recent changes from V1

* Fix smoke tests

* Update go.work.sum

* Improve smoke tests

---------

Co-authored-by: Clara van Staden <claravanstaden64@gmail.com>
Co-authored-by: ron <yrong1997@gmail.com>
Co-authored-by: Alistair Singh <alistair.singh7@gmail.com>
Co-authored-by: Parth <desaiparth08@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants