CTO and governance
2/4 multisig ownership, fee managers, community takeover, and how to apply.
Protocol owner: 2/4 multisig
The mint.fast launchpad and fee vault are owned through Ownable2Step, and that owner key is held by a 2/4 multisig. Two of four signers must approve sensitive admin actions.
Ownership renounce is disabled on both contracts (OwnershipRenounced), so attester rotation, treasury updates, and fee-manager appointments stay possible.
Transfer is two-step: transferOwnership then acceptOwnership.
What the multisig can do
On MintFastLaunchpad:
| Action | Effect |
|---|---|
setCreatePaused | stop or resume new mints only |
setCreationFee | future creates, ≤ 0.005 ETH |
setDefaultFees | future creates' Fletcher / LP split defaults |
setTreasury | where sweepProtocolFees pays |
setFeeManager | grant or revoke CTO / ops rewrite power |
On SocialFeeVault:
| Action | Effect |
|---|---|
queueAttester / removeAttester | manage who may sign social claims |
| (not available) | no sweep, withdraw, or pause on escrow |
What it cannot do
- Freeze trading
- Pull or remove locked LP
- Change fee splits on coins that already exist
- Touch ETH sitting in the vault under Fletcher keys
- Mint extra supply
- Upgrade implementation code (no proxies)
Fee managers and CTO
A fee manager is an address with isFeeManager[account] == true. Fee managers may call setBeneficiaries on any live token, even when the list is locked. That is the on-chain lever for:
- community takeovers (CTO)
- fixing a mistyped social handle
- reassigning Fletcher recipients when a creator is gone or compromised
setBeneficiaries:
- Requires a non-empty new list (empty is only valid at
createToken) - Auto-
harvests pending fees to the old set first - Clears and registers the new set
- Leaves the token locked
Already-escrowed vault balances stay under the old identity keys. Only fees harvested after the change go to the new recipients. Per-token socialSplitBps / lpSplitBps never change.
Creators who minted with an empty beneficiary list can do one setBeneficiaries themselves before lock. After that, only fee managers.
Apply for CTO
If you are organizing a community takeover, or you need Fletcher recipients corrected, submit the apply form. Ops review, then a fee manager executes the on-chain update when appropriate.
Apply here: CTO / Fletcher change form
Include the token address, why the change is needed, and the exact new beneficiary rows (platform, normalized handle or wallet, and bps that sum to 10_000).
Example: fee manager rewrite
await walletClient.writeContract({
address: launchpad,
abi: launchpadAbi,
functionName: "setBeneficiaries",
args: [
token,
[
{
kind: 1,
handle: "newhandle",
wallet: "0x0000000000000000000000000000000000000000",
bps: 7000,
},
{
kind: 3,
handle: "",
wallet: "0xTreasuryOrOpsWallet",
bps: 3000,
},
],
],
})Only a fee manager (or the unlocked creator on their one shot) will succeed. Everyone else gets NotAuthorized or BeneficiariesLocked.