Docs/Protocol reference/Admin operations

Admin operations

Owner-controlled actions for metadata, royalties, ownership transfer, and immutable configuration.

When to use#

Admin operations are for settings, not issuance authority.

Admin operations are signed or direct owner actions. They update owner-controlled configuration only: metadata, royalties, royalty receiver, ownership transfer, and renounce. They do not change the immutable issuer that signs issuance and redemption.

Recipes#

SET_MEDIA / SET_DESCRIPTION

Update presentation

Update the collection-wide artwork or description. Metadata remains generated onchain for every expiry bucket.

ROYALTIES

Configure revenue receiver

Use royalty bps and receiver settings before opening marketplace activity.

RENOUNCE

Freeze settings

Use only when the brand is ready to make owner-controlled settings immutable.

Safety#

  • Use a multisig or contract wallet for production owner control.
  • Transfer ownership only changes admin control; it does not transfer brand identity.
  • Renounce ownership freezes metadata and royalty settings. Issuance and redemption still require valid issuer and customer authorization.
  • Signed admin actions include the current adminEpoch, so old signatures stop working after ownership changes.

The action below is keccak256 of SET_DESCRIPTION. Read the current adminEpoch from the token before signing; replace the illustrative owner, nonce, deadline, and token address.

Admin action shapejson
{
  "owner": "0x1111111111111111111111111111111111111111",
  "adminEpoch": "0",
  "loyaltyId": "0x4242424242424242424242424242424242424242424242424242424242424242",
  "nonce": "0x7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a",
  "chainId": "8453",
  "verifyingContract": "0x4444444444444444444444444444444444444444",
  "deadline": "1790965800",
  "action": "0x92047683286d424bd2a34389fd625b46a6fcb1105dceabb268711a59d329c225",
  "value": "Updated program description",
  "account": "0x0000000000000000000000000000000000000000",
  "royaltyBps": "0",
  "flag": false,
  "data": "0x"
}