`block.timestamp` (seconds since epoch, set by the block producer) is commonly used to gate release logic in escrows, vesting schedules and auctions. It has some producer-controlled slack (usually a few seconds), so avoid using it for anything requiring sub-minute precision.
release_time: public(uint256)
@deploy
def __init__(lock_seconds: uint256):
self.release_time = block.timestamp + lock_seconds
@external
def withdraw():
assert block.timestamp >= self.release_time, "still locked"
send(self.owner, self.balance)For anything where precise timing is safety-critical (e.g. auction end), prefer block-number-based windows or accept the timestamp's small manipulable margin explicitly in your threat model.