Written by Pablo Gómez
Founder & CEO at Metlabs · Reviewed on October 11, 2026
The standard defines two required functions. clock() returns the current timepoint according to the contract's mode, must be a non-decreasing function of the chain and returns a uint48, enough for realistic values and suitable for storage packing. CLOCK_MODE() returns a machine-readable URL query-string describing the clock: mode=blocknumber&from=default for the default block-number clock, mode=blocknumber&from=<CAIP-2-ID> for another chain, or mode=timestamp for real time.
Block number is a less stable clock, because block intervals vary and differ across L2 networks. ERC-6372 grew out of the ERC-5805 discussion (voting with delegation) and split into its own standard; ERC-5805 declares a dependency on it. The compatibility rule is the key point: a governance contract that does not implement ERC-6372 must operate as if CLOCK_MODE returned the default block-number clock. Implementing it is what lets governance migrate from block number to timestamp explicitly and self-described.
ERC-6372 was created on 25 January 2023, remains in the standardization process on Ethereum, not yet Final, and is authored by Hadrien Croubois and Francisco Giordano. The timestamp-based voting it formalizes, alongside ERC-5805, shipped in OpenZeppelin Contracts v4.9: the Governor, ERC20Votes and ERC721Votes modules implement clock() and CLOCK_MODE(). There is also an open request to add the interface to OpenZeppelin's VestingWallet, a sign of adoption beyond pure governance.
Sources
Also known as
- ERC6372
- Contract clock





