Consensus version
A consensus version is the set of protocol rules every node applies at a given block height. It governs what the VM accepts: which opcodes exist, what deployments are permitted, and how cross-program calls are verified.
Versions activate at a block height, not a date. Announcements usually carry an estimated calendar date derived from expected block production, but the height is the thing that is actually in the code. Consensus V18 activates on mainnet at height 20,794,000, estimated for 4 August 2026. Track the height.
This matters to anyone deploying. A program using features introduced by a version will be rejected before that version activates, and the error reads as a version mismatch rather than a code problem. leo deploy --consensus-version lets you pin the version a deployment targets, and leo query block --latest tells you where the chain actually is.
V18 is a useful illustration of what a version can change. It added deployment-density checks at the protocol level, so a large application split across many programs can compile cleanly and still hit a limit when its components are deployed close together. It also added translation-key support for credits.aleo in the dynamic-dispatch path, letting the native credits program participate in runtime-selected calls.
Local testing can hide all of this. A devnode that mines each deployment immediately will never show you a density limit. Rehearse releases against realistic block production with the consensus version you expect on mainnet, and leave room for retries around an activation boundary.