Skip to content
← selected work

Protocol · Movement Labs

Move Timelock Module

A timelock account type for the Movement framework, forcing a delay between proposing a privileged action and executing it.

Period
2026 - in review
Role
Author
Source
Public

The problem

Multisig controls who can act, but not when. Without a delay between proposal and execution, a bad or compromised action goes through as soon as it has enough signatures, and nobody gets a chance to catch it first.

What I did

  • Built the timelock as a resource account owning its own SignerCapability: creators propose, executors execute once a minimum delay has elapsed, and neither role is granted implicitly to the deployer.
  • Committed only the script hash on-chain at proposal time, keyed by salt so the same script can be queued more than once. The bytecode is supplied at execution and checked against the commitment.
  • Mirrored the existing governance script-resolution model rather than adding VM prologue support, so the module lands without touching the transaction pipeline.
  • Made execution atomic. If the resolution script aborts, the executed flag rolls back and the proposal stays live rather than being burned.
  • Included self-governance, so the timelock’s own configuration can only be changed through the timelock.

Stack

MoveAptos framework