Skip to content
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

implement request log crawler for consolidation & withdrawal request transactions #141

Merged
merged 29 commits into from
Oct 28, 2024

Conversation

pk910
Copy link
Member

@pk910 pk910 commented Oct 8, 2024

This PR adds log crawlers and matchers for the pectra consolidation & withdrawal system contracts.

Both system contracts emit basic log events before queuing incoming operations.
Operations are then dequeued and passed to the beacon chain where they get included in a block as consolidation & withdrawal requests.
Consolidation & withdrawal requests are already tracked by dora.
This PR aims to extend the available request information with further transaction details coming from the execution layer.
So dora can not only show the operation details, but also the origin (tx hash, sender, etc.) on the execution chain.

To achieve this, I've implemented two routines for each request type:

  1. consolidation/withdrawal tx indexer:
    This routine crawls the system contract logs from the execution layer.
    The emitted events are processed in order starting from the deploy block, to keep track of the contract queue length internally.
    For each event, dora persists the transaction details, including the operation details, sender + target addresses and the dequeue block number (calculated based on queue length & static dequeue rate).

transaction details are stored in a separate database entity as they may exist before the corresponding beacon operation gets added to the database and vice versa.

  1. consolidation/withdrawal matcher:
    This routine tries to match up the separate request transaction & request operation entities.
    It uses the calculated dequeue block number from the transaction entities and loads the corresponding request operations from the slot that includes the el block with that number.
    The matcher routine tries to match each transaction once, ensuring only synchronized block ranges are processed.
    This might leave some late orphaned operations unmatched, but it's an acceptable trade-off compared to processing all unmatched beacon operations over and over again, as some transaction details for orphaned blocks might just not be available anymore.
    For matching requests, the transaction hash is added to the beacon operation entity.

I've also extended the consolidations & withdrawal requests pages to display the matched tx hash (and link it to an el explorer if available).
Additional transaction details are available via a popover:
image

@pk910 pk910 marked this pull request as ready for review October 10, 2024 17:59
@pk910 pk910 requested a review from skylenet October 14, 2024 21:43
handlers/el_consolidations.go Outdated Show resolved Hide resolved
indexer/execution/consolidation_indexer.go Outdated Show resolved Hide resolved
indexer/execution/consolidation_indexer.go Outdated Show resolved Hide resolved
indexer/execution/consolidation_indexer.go Outdated Show resolved Hide resolved
@pk910 pk910 force-pushed the pk910/pectra-log-crawler branch from 6db6d73 to ca6a836 Compare October 16, 2024 16:16
@pk910
Copy link
Member Author

pk910 commented Oct 24, 2024

@skylenet
I've fixed the review comments and updated the contract addresses for devnet 4 :)
build is currently failing due to #159

@pk910 pk910 merged commit d3a9dc1 into master Oct 28, 2024
3 checks passed
@pk910 pk910 deleted the pk910/pectra-log-crawler branch October 28, 2024 12:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants