Package timelock is a simplified port of OpenZeppelin's TimelockController.
Operations are scheduled with a delay (measured in blocks). A scheduled operation becomes executable only once the chain height reaches the operation's ready height. Until then it can be cancelled by anyone (this simplified port omits role-based access control). Once executed or cancelled, an operation is terminal.
Solidity mapping:
- block.number -> runtime.ChainHeight()
- msg.sender -> unsafe.PreviousRealm().Address()
- require(...) -> panic(...)
- events -> chain.Emit(...)
- mapping(id => op) -> avl.Tree keyed by zero-padded id