-
Notifications
You must be signed in to change notification settings - Fork 780
node: Integrate Transfer Verifier into the Ethereum watcher #4233
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
node: Integrate Transfer Verifier into the Ethereum watcher #4233
Conversation
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.
Just a couple of suggestions
688ee88
to
96a2566
Compare
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.
Integration looks good overall! Would be good to deal with the outstanding TODOs if possible
2e9b737
to
bdcbf9f
Compare
03eaf0d
to
e25f9d0
Compare
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.
Left a couple minor comments and one more major one that I think we should be pegging prom metrics or something when verification fails. Otherwise how will anyone know it's happening?
@johnsaigle and I talked offline and agreed that adding a metric could be handled in a follow-on PR. |
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.
Minor comment, looks good otherwise. I assume this is going to be tested in testnet/devnet first with some token transfers and performance evaluated?
@djb15 Yeah I think we can spend some time testing and benchmarking before the feature actually gets enabled by the Guardians. |
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.
Only reviewed devnet
as that was the only change missing code owner approval.
New Features
verifyAndPublish
VerificationState
.If Transfer Verifier is enabled
If Transfer Verifier is not enabled
Design Considerations
Modifying MessagePublication
This PR modifies
MessagePublication
to add a new status based on whether the Message Publication is verified. This decision was made to handle Transfer Verification cases across many chains. For example, the EVM logs are reliable enough that we can confidently rule a message as Valid or Rejected. Other ecosystems (i.e. Sui, but perhaps also Solana, etc.) are not so clear cut. In this case, we may want to mark a transaction as Anomalous rather than outright rejecting it.Using this new enum allow us to do this.
Other potential benefits:
Scope of this PR
The idea with this PR is to test the modifications to the Ethereum watcher without enabling the transfer verifier yet. We can release this in testnet or mainnet to be sure that the changes here are stable.
Once we're confident that the underlying mechanism is working well, we can add some logic in the Guardian to actually react when a MessagePublication has a status like Rejected or Anomalous. For now, changing the reaction of the watcher to a "bad" message is out of scope.
Questions
Related Work