Skip to content

feat: rocketpool registry for minipool operators#813

Merged
owen-eth merged 7 commits intomainfrom
rocketpool-registry
Oct 3, 2025
Merged

feat: rocketpool registry for minipool operators#813
owen-eth merged 7 commits intomainfrom
rocketpool-registry

Conversation

@owen-eth
Copy link
Copy Markdown
Contributor

@owen-eth owen-eth commented Sep 26, 2025

Describe your changes

Adds a RocketPool validator registry for Mev-Commit. Operators register using validator pubkeys; we read ownership/status from Rocket Pool and only track minimal participation state on our side.

How it works: given a validator pubkey, we resolve pubkey → minipool via RocketStorage, read the node address from the minipool, and verify the minipool is active (“Staking”). We also read the node’s current withdrawal address. A call is authorized if msg.sender is either the node address or the withdrawal address. On success we mark the pubkey as registered in a tiny struct (exists, deregTimestamp, freezeTimestamp).

Key points:

Registration is free (gas only).

Both the node address and the withdrawal address can register, request deregistration, and finalize deregistration.

Freezing functionality similar to AVS Registry: A designated freeze oracle can freeze; unfreezing requires a fee. The fee is fully forwarded to the configured receiver; any overpayment is refunded to the caller; the registry never retains ETH. The owner can unfreeze without a fee.

Deregistration is two-step: request (records a timestamp) then finalize after a configurable period, and only if not frozen. Finalization clears the registration.

“Opted in” is true only when registered, minipool currently active, not frozen, and no pending deregistration.

Batch operations supported for register/freeze/unfreeze/deregister.

Admin controls: freeze oracle, unfreeze fee, unfreeze fee receiver, deregistration period, and RocketStorage address. Contract is pausable and UUPS-upgradeable.

Integration touchpoints (read-only): pubkey → minipool via RocketStorage; node address and status from the minipool; node’s withdrawal address from Rocket Pool. This keeps Rocket Pool as the source of truth for validator ownership/lifecycle while giving Mev-Commit opt-in, freeze policy, and deregistration controls.

Issue ticket number and link

Fixes # (issue)

Checklist before requesting a review

  • I have added tests that prove my fix is effective or that my feature works
  • I have made corresponding changes to the documentation

Copy link
Copy Markdown
Contributor

@shaspitz shaspitz left a comment

Choose a reason for hiding this comment

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

LGTM!

Comment thread contracts/contracts/validator-registry/rocketpool/RocketMinipoolRegistry.sol Outdated
@owen-eth owen-eth merged commit d488aac into main Oct 3, 2025
4 of 5 checks passed
@owen-eth owen-eth deleted the rocketpool-registry branch October 3, 2025 16:55
owen-eth added a commit that referenced this pull request Oct 17, 2025
* initial rocketpool registry commit

* updated initializer and setters, added go files

* fixes and cleanup to minipoolregistry, added tests

* added rocketpool deployment script

* minor fixes, update l1-deployer to use etherscan v1 api

* added testnet deployment to readme

* removed modifiers from pause functions
owen-eth added a commit that referenced this pull request Oct 21, 2025
…manager contracts, vanillaregistry changes (#838)

* feat: rocketpool registry for minipool operators (#813)

* initial rocketpool registry commit

* updated initializer and setters, added go files

* fixes and cleanup to minipoolregistry, added tests

* added rocketpool deployment script

* minor fixes, update l1-deployer to use etherscan v1 api

* added testnet deployment to readme

* removed modifiers from pause functions

* allow Vanilla minstake to equal 0, added tests, reputational deployment script (#832)

* update l1 deployment script - removes restrictions for testnet, add support for vanilla reputational (#833)

* changed vanilla reputational to 1 eth min stake (#835)

* fix: updated hub deployment to not immediately impact optinrouter (#837)

* updated hub deployment to not immediately impact optinrouter

* removed unused imports
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