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

Remove Outbox.checkpoint #471

Closed
asaj opened this issue May 21, 2022 · 2 comments
Closed

Remove Outbox.checkpoint #471

asaj opened this issue May 21, 2022 · 2 comments

Comments

@asaj
Copy link
Contributor

asaj commented May 21, 2022

  • Keep latestCheckpoint(), which should calculate the root and index
  • Remove helper functions in Router.sol and call sites (note in a/the changelog for when we publish sdk version)
  • Add function for slashing
  • remove all the superflous "first message enqueues" on an outbox that we added to avoid the revert for checkpointing a single leaf tree

Docs changes:

  • Remove checkpointer agent section
  • Remove checkpointing mentions
  • Update Diagram

Infra Changes: (probably file another ticket)

  • remove checkpointer role
  • remove checkpointer agent config
  • remove checkpointer deployment config

Rust changes: (probably file another ticket)

  • Remove checkpointer binary
  • Update ABI and contract wrappers
@asaj
Copy link
Contributor Author

asaj commented May 22, 2022

Started work in asaj/death-to-checkpoints

@asaj
Copy link
Contributor Author

asaj commented May 23, 2022

From @tkporter, suggesting that some notion of checkpoints should still exist to prevent validators from effectively being able to censor slashing txs:

If so, require(_calculatedLegitimateRoot == root()); on line 28 could be concerning, because without checkpoints the calls to the slash function could be frontran by a transaction that adds a message to the Outbox's merkle tree, causing root() to be different from the _calculatedLegitimateRoot from the proof. So the implementation may need some notion of checkpointing for slashing purposes to protect from malicious frontrunning? I.e. prior to slashing, you first store historicalRoot[root()] = true, then in a subsequent transaction you call slash but line 28 is instead require(historicalRoot[_calculatedLegitimateRoot]) (edited)

@nambrot nambrot closed this as completed Jun 2, 2022
Repository owner moved this from Sprint Backlog to Done in Hyperlane Tasks Jun 2, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Archived in project
Development

No branches or pull requests

2 participants