Community Takeover (CTO) Voting
Any token holder can initiate a vote to replace the current deployer. The CTO mechanism ensures community governance over deployer fee rights without requiring any admin intervention.
How CTO Works
1
Initiation
An initiator calls
Hook.initiate_cto_vote(token) with 0.0001 ETH fee (Base) and 60M tokens approved. A new CTOVote proxy is cloned and initialized. The initiator's tokens count as an automatic YES vote.2
Voting Period (3 days)
Token holders deposit tokens into the vote contract to vote YES or NO. Each token deposited = 1 vote weight. Additional tokens can be added to an existing vote via
add_votes().3
End Vote
After 3 days, anyone calls
end_vote(). If quorum is met and majority achieved, end_vote_early() can end it before the deadline.4
Finalize
If successful, anyone calls
finalize(). The vote contract calls Hook.finalize_cto() which transfers deployer rights, pays out any pending deployer balance, and transfers TokenSocials ownership.5
Withdraw Tokens
All voters (both YES and NO) can withdraw their deposited tokens after the vote ends, regardless of outcome.
Vote Requirements
| Requirement | Value |
|---|---|
| Initiator Stake | 60,000,000 tokens (5% of total supply) |
| Initiation Fee | 0.0001 ETH (Base) / 0.0002 BNB (BSC) |
| Quorum | 40% of circulating supply must participate |
| Majority | YES votes > NO votes (simple majority) |
| Duration | 3 days (259,200 seconds) |
| Early End | Allowed if quorum + majority both met |
| Concurrent Votes | Only 1 active CTO vote per token |
Circulating Supply Calculation
The quorum is calculated against circulating supply, which excludes tokens held by the PoolManager (LP) and burned tokens (dead address):
circulating = TOTAL_SUPPLY - balanceOf(V4_POOL_MANAGER) - balanceOf(DEAD_ADDRESS)
What Changes When CTO Succeeds
- The deployer address in
tokenInfo[token]is updated to the vote initiator - Any accumulated
deployerBalanceis paid out to the old deployer - TokenSocials ownership is transferred to the new deployer
- The active CTO vote slot is cleared, allowing future votes