feat(solana): emergency halt switch#482
Merged
Merged
Conversation
Halt gates exactly the three entrypoints ink! gated: post_collateral, vote_activate, and open_or_request (the reservation-creation entry, mirroring vote_reserve). resolve_pool is left ungated so pools opened before a halt can still settle. Adds Config.halted, SystemHalted error, admin set_halted + HaltSet event; bumps CONFIG_VERSION to 5.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ports the ink!
set_haltedemergency halt into the Solana contract, faithfully and surgically.Scan
Every halt touchpoint in the ink! contract was enumerated. Halt gated exactly 3 mutating entrypoints:
post_collateral,vote_reserve,vote_activate.Mapping
post_collateralpost_collateral✅vote_activatevote_activate✅vote_reserveopen_or_request(the reservation-creation entry) ✅resolve_poolis not gated — pools opened before a halt can still settle, mirroring ink! blocking only new reserve votes, not in-flight completion.vote_initiate/confirm/timeout/vote_deactivate/withdraware not gated, matching ink!.Changes
Config.haltedfield +halted=falseatinitializeSystemHaltederrorset_haltedinstruction +HaltSeteventrequire!(!config.halted, SystemHalted)on the 3 entrypointsCONFIG_VERSION4 → 5Library type-checks clean. (Integration tests embed the built
.soviainclude_bytes!, so they requireanchor buildto run.)