Documentation
Contracts
What is deployed, and what each piece is responsible for.
The stack
| Contract | Responsibility |
|---|---|
| DevoxPadFactory | Deploys a token and its curve in one transaction, then drops every role |
| DevoxCurve | Bonding curve. Mints on buy, burns on sell, graduates into a pair |
| DevoxToken | COTI PrivateERC20 with encrypted holder balances |
| DevoxPublicToken | Plain ERC-20, for launchers who want transparency |
| DevoxSwapFactory | One pair per token pair, CREATE2 addressed |
| DevoxSwapPair | Constant-product AMM with internal reserve accounting |
| DevoxSwapRouter | Wraps and unwraps native COTI around a swap |
| WCOTI | WETH9-shaped wrapper, because an AMM only speaks ERC-20 |
| ProfileRegistry | Usernames resolving on chain, one per address |
| AgentRegistry | Owner, agent wallet and token for a tokenized agent |
| DevoxLocker | Timelock for a creator's own allocation. No owner, no early release |
| DevoxPortal | Locks a public token and mints its private twin one to one |
Live addresses are served from the master table at /api/config?section=contracts, which the deploy script rewrites. Treat that as the record rather than any address pasted into prose.
Why token creation lives in separate deployers
A COTI PrivateERC20 is a large contract. Embedding both token variants' creation code inside the factory pushed it past the 24576 byte deployment limit, so each variant lives in its own deployer contract that the factory calls. Every deployer renounces the admin role it inherits in the same transaction.