Skip to main content

Governance Actions

Governance actions are each defined by a unique Proposal<T> type. Proposals adjust protocol parameters, pause or unpause operations, or perform sensitive operations like package upgrades. Only members of the current Hashi committee can create proposals. Each proposal type has its own threshold, which a quorum of validators must reach by voting in support of the proposal.

The following is the current set of available proposal types.

Upgrade

Authorizes a package upgrade.

EnableVersion

Re-enables a previously disabled package version, allowing the protocol to use it again.

DisableVersion

Disables a package version, preventing it from being used. The currently active version cannot be disabled, to avoid bricking the protocol.

UpdateConfig

Updates a protocol configuration parameter by key. Supports any config key-value pair (for example, deposit fee, rate limits). See Configuration for the full list of keys and defaults.

EmergencyPause

Pauses or unpauses deposit and withdrawal processing by setting the paused config flag. The two directions use different vote thresholds: pausing is deliberately cheap (governance_emergency_pause_threshold_bps, default 5% of committee weight) so a small fraction of the committee can quickly halt the system, while unpausing requires a supermajority (governance_emergency_unpause_threshold_bps, default two thirds).

UpdateGuardian

Updates the guardian's URL in the global config. Only the URL is governable: the guardian's BTC public key is immutable once set, because rotating it would invalidate derived deposit addresses.

AbortReconfig

Aborts a pending reconfiguration for a specific epoch, clearing the pending epoch change and removing the pending committee. Voted on by the current committed committee, which is the only committee with stable onchain voting power if the pending committee cannot complete DKG or key rotation. See Reconfiguration for when and how this is used.