-
Notifications
You must be signed in to change notification settings - Fork 107
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Parachain Relayer V2 #1321
base: vincent/v2
Are you sure you want to change the base?
Parachain Relayer V2 #1321
Conversation
relayer/relays/parachain/types_v2.go
Outdated
Fee types.U128 | ||
Nonce uint64 | ||
BlockNumber uint32 | ||
Fee big.Int |
There was a problem hiding this comment.
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.
relayer/relays/parachain/main.go
Outdated
return fmt.Errorf("get block header: %w", err) | ||
} | ||
|
||
proof, err := relay.beaconHeader.FetchExecutionProof(*blockHeader.ParentBeaconRoot, false) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Generate delivery proof
* Update contracts for smoke tests * Remove unused * Decode test * Update subxt
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## vincent/v2 #1321 +/- ##
==============================================
+ Coverage 65.29% 65.44% +0.14%
==============================================
Files 23 23
Lines 729 735 +6
Branches 122 123 +1
==============================================
+ Hits 476 481 +5
Misses 242 242
- Partials 11 12 +1
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
"golang.org/x/sync/errgroup" | ||
) | ||
|
||
func (relay *Relay) startDeliverProof(ctx context.Context, eg *errgroup.Group) error { |
There was a problem hiding this comment.
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:
- Ethereum-writer submits message to Gateway
- Ethereum-writer finds receipt for completed transaction, get
InboundMessageDispatched
log and pushes it on queuedeliveryReceipts
- The parachain-writer reads from the
deliveryReceipts
queue and submits proof to parachain.
There was a problem hiding this comment.
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
?
There was a problem hiding this comment.
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
Resolves: https://linear.app/snowfork/issue/SNO-1230
Requires: paritytech/polkadot-sdk#6706