Search Apps Documentation Source Content File Folder Download Copy Actions Download State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

README.md

2.22 Kb · 51 lines

Timelock

⚠️ Experimental — generated with no human supervision by the daily MCP pipeline (Solidity→Gno port). Not audited. See r/moul/x/daily.


A simplified gno.land port of OpenZeppelin's TimelockController. Actions are scheduled with a block delay and can only be executed once the chain reaches the operation's ready height; before that they can be cancelled. It ports the core delay-enforcement idea idiomatically — block height (runtime.ChainHeight()) replaces block.number, panic replaces require, chain.Emit replaces events, and an avl.Tree replaces the Solidity mapping (role-based access control is omitted for simplicity).

Operations are terminal once executed or cancelled, and Render lists every operation with its live state (Pending / Ready / Executed / Cancelled) and the number of blocks remaining until it becomes ready.

Example calls

# Schedule an action to run 20 blocks from now; returns the operation id.
gnokey maketx call -pkgpath gno.land/r/moul/x/daily/timelock/v0 \
  -func Schedule -args "upgrade contract" -args 20 ...

# Once ChainHeight() >= readyHeight, execute it.
gnokey maketx call -pkgpath gno.land/r/moul/x/daily/timelock/v0 \
  -func Execute -args 1 ...

# Or cancel it beforehand.
gnokey maketx call -pkgpath gno.land/r/moul/x/daily/timelock/v0 \
  -func Cancel -args 1 ...

View the queue by rendering the realm (gno.land/r/moul/x/daily/timelock/v0).


Part of moul/gno-contracts — moul's versioned gno.land contracts. See the repository for the full catalog, build/test tooling, and usage.

Dependency graph:

gno.land/r/moul/x/daily/timelock/v0 dependency graph

🧪 Highly experimental — potentially vibe-coded. Not audited; may break, change, or be removed at any time. Do not use with anything of value. Full disclaimer: DISCLAIMER.