Token identity
| Field | Value | Meaning |
|---|---|---|
| name | DerivaDAO | ERC-20 token name |
| symbol | DDX | ERC-20 token symbol |
| decimals | 18 | token display precision |
| version | 1 | EIP-712 domain version used in signed token flows |
Supply model
| Field | Value | Meaning |
|---|---|---|
MAX_SUPPLY | 100,000,000 DDX | maximum token issuance ceiling |
PRE_MINE_SUPPLY | 50,000,000 DDX | preminted supply issued at deployment |
issuedSupply | runtime-tracked | total amount ever issued through premint plus later minting |
totalSupply | runtime-tracked | current circulating supply after mint and burn effects |
Initial distribution posture
| Topic | Public contract |
|---|---|
| deployment behavior | the constructor issues the premine to the deploying address |
| early governance state | vote checkpoints are created so premine balances and delegated voting power can be queried historically |
| public reading rule | treat current on-chain reads as authoritative for live balances and vote power rather than assuming the initial premine distribution still describes present state |
Issuer and ownership controls
| Control | Public contract |
|---|---|
issuer | address currently authorized to mint DDX and transfer ownership control |
| ownership transfer | transferOwnershipToDerivaDEXProxy(address) can be executed once, must come from the current issuer, and cannot target the zero address |
| post-transfer posture | once ownership has been transferred, the one-time transfer path cannot be used again |
| unauthorized minting | minting from a non-issuer address reverts |
Transfer and allowance behavior
| Topic | Public contract |
|---|---|
| ERC-20 transfers | transfer and transferFrom are supported |
| approvals | approve, increaseAllowance, and decreaseAllowance are supported |
| allowance storage | allowance values are managed internally with uint96-bounded accounting even though public interfaces use uint256 |
| infinite approval posture | maximum-value approvals map to the contract’s uint96 max path |
Governance-linked token functions
| Function | Use |
|---|---|
delegate(address) | delegate voting power directly |
delegateBySig(address,uint256,uint256,bytes) | delegate voting power through an EIP-712 signed message |
getCurrentVotes(address) | read the latest effective vote count for one address |
getPriorVotes(address,uint256) | read vote count at a prior block |
delegates(address) | read the current delegate relationship |
checkpoints(address,uint256) | inspect one vote checkpoint entry |
numCheckpoints(address) | inspect how many vote checkpoints an address has |
Checkpoint and voting model
| Topic | Public contract |
|---|---|
| checkpoint structure | each checkpoint stores a block identifier plus the vote count at that point |
| current votes | current votes come from the latest checkpoint when one exists |
| prior votes | historical vote lookups require a prior block and use checkpoint search rather than ad hoc reconstruction |
| delegation effects | direct delegation, signed delegation, transfers, minting, and burning can all move voting power |
Signature-based token operations
| Operation | Public contract |
|---|---|
delegateBySig | uses EIP-712 domain hashing with the DDX token name, version, chain ID, and verifying contract |
permit | supports signed allowance approval through an EIP-712 flow |
nonces(address) | replay protection state for signed delegation and permit flows |
| signature validity | invalid signature, invalid nonce, and expired signature paths revert |
Mint and burn behavior
| Topic | Public contract |
|---|---|
| mint | issuer can mint DDX to an address, increasing issued and circulating supply |
| burn | burn paths reduce balances and circulating supply under the contract’s permission rules |
| vote updates | mint and burn operations also update delegated vote checkpoints |