Governance, DAOs & tokenomics

on-chain governance

On-chain governance is the model where a protocol's rules about how it changes itself are themselves written into the protocol, so that a vote is not a poll that humans must then choose to honour — it is the actual switch that flips. Token holders submit proposals as executable code, cast votes that are recorded as transactions, and if the proposal passes, the blockchain executes it automatically. Picture a company whose bylaws are a robot: shareholders vote, and the moment the count crosses the line the robot itself signs the cheque and rewires the org chart, with no executive left in the loop to drag their feet or refuse.

Concretely, a system like the OpenZeppelin or Compound Governor works as a pipeline of contracts. A proposal is a bundle of target addresses, calldata, and values — the literal function calls to be made if it wins. After an optional delay it enters a voting period; voting power is read from a past snapshot block (so balances cannot be inflated mid-vote), and votes are For, Against, or Abstain. If For votes clear both the quorum and a majority, the proposal is queued in a Timelock contract that forces a waiting period, after which anyone may call execute() and the encoded transactions run with the protocol's own authority — upgrading a contract, moving treasury funds, or changing a parameter.

The promise is credibly neutral, tamper-evident change: the rules of change are as transparent and unstoppable as any other on-chain rule, and you do not have to trust a foundation to implement the community's decision. The cost is rigidity and a narrow notion of legitimacy. Code can only encode what is expressible on-chain, low turnout lets a small motivated minority steer, and a bug in a passed proposal executes just as faithfully as a good one. Tezos, Cosmos Hub, Polkadot's OpenGov, Compound, and MakerDAO's executive votes are well-known examples; most still keep an off-chain social layer above the machinery for the questions code cannot settle.

// A Governor proposal is literally the transactions it will run if it wins
propose(
  targets:  [comptroller],
  values:   [0],
  calldatas:[abi.encodeWithSignature("_setCollateralFactor(address,uint256)", cToken, 0.75e18)],
  description: "Lower collateral factor on the X market"
);
// pass -> queue() in Timelock -> wait delay -> execute()

On-chain governance binds execution to the vote, but it does not by itself make outcomes legitimate or wise — it only makes them automatic. That is exactly why a timelock and a quorum sit beside it: to buy time and to require that enough of the community actually showed up.