Creator tools
Who controls a launched token, what they can change, and what freezes for good.
On this page
A launched token has very little to manage. The liquidity cannot be touched and the fee split cannot be changed. What remains is where the creator's fees go, one metadata edit, and who holds those two powers.
In the app, all of it is in Creator Corner at /creator. The Launches tab in /portfolio lists the tokens a wallet launched or owns, with their pending fees.
Three roles
Three addresses are recorded for every launch. On day one they are the same wallet. They can diverge.
The original launcher is history. It is the address that sent the launch transaction and it is immutable. No power is keyed on it.
The token owner holds every power listed below. Every owner-gated function
across the launchpad checks TokenOwnerRegistry.ownerOf(token), so one
ownership transfer moves all of them at once.
The fee recipient is where the creator share of collected fees is paid, in
both WAPE and the launched token. It holds no powers of its own. The locker
field is named creator for historical reasons; read it as the recipient.
Change the fee recipient
ArmoryLaunchLocker.updateCreatorRecipient(uint256 tokenId, address newCreator)Token owner only, and the new recipient cannot be the zero address. tokenId
is the launch position id, from TokenLaunched.positionId or
ArmoryLauncher.getLaunch(token).positionId.
The change applies from the next collect onward. Fees that were already collected and paid are not moved, and fees sitting uncollected in the pool go to whoever is the recipient when they are collected. If you are handing over a recipient and want to keep what has accrued so far, collect first.
A recipient can be a contract, such as a multisig or a splitter. If a payout to it ever fails, the amount waits in the fee receiver as an unclaimed balance rather than being lost.
The one-time metadata edit
ArmoryToken.updateMetadata(TokenMetadata m)
// struct TokenMetadata { string image; string description; string socials; string contractURI; }Token owner only, and exactly once. All four fields are replaced together, then
metadataLocked() turns true and stays true. There is no unlock.
Because everything is replaced, pass the current value for anything you want
to keep. Creator Corner does this for you: if you keep the current image, it
reuses its existing Arweave URL instead of uploading it again, and it uploads
a fresh contractURI JSON built from the new fields.
Use the edit to fix a typo, add socials you did not have at launch, or replace artwork. Do it carefully: after this call the token's identity is frozen.
Transfer ownership
TokenOwnerRegistry.transferTokenOwnership(address token, address newOwner)Current owner only. The new owner gets every power on this page: changing the
fee recipient, the metadata edit if it is unspent, and further transfers. The
fee recipient does not change by itself. If the new owner should also receive
the fees, they call updateCreatorRecipient afterwards.
There is no two-step acceptance. A transfer to a wrong address is final.
Renounce
Renouncing is a transfer to the zero address:
TokenOwnerRegistry.transferTokenOwnership(token, address(0))After it, nobody can change the fee recipient or the metadata, ever. The fee recipient keeps receiving its share on every collect, because collecting needs no owner. If you want fees to go to a particular address forever, set the recipient first, then renounce.
Renounce cannot be undone
The registry has no way to re-register a token once it has been registered, so there is no path back from a zero owner. The fee recipient and the metadata freeze exactly as they are at that moment.
What nobody can do
Not the creator, not the token owner, not the platform:
- withdraw or reduce the locked liquidity;
- change the creator share stamped at launch;
- mint more tokens, pause transfers or add a tax;
- edit metadata a second time.