Integration checklist
The list to keep next to the pull request, in the order the questions actually have to be answered.
All docs
Everything here is covered in more detail on the pages above. The order matters: the first two decide what the rest of the list is worth.
- Establish the tier first
- Bytecode against your pinned runtime for verified, an answering behaviorFlags for self-declared, everything else unknown. Until this is answered, the declaration is a number with no standing.
- Never map a revert to zero
- A silent token is unclassified, not plain. Tokens outside this framework charge fees too, and an uninitialised clone also reverts — then anyone can initialise it, with a fee.
- Cache the word
- Read behaviorFlags once and store it next to the token address. It is fixed for the lifetime of the deployment.
- Fee on transfer
- Quote against computeFee, or the published ceiling if the quote has to survive a configuration change between quoting and landing. Or skip the question entirely with a checked transfer, which is correct without knowing anything about the fee.
- Transfer hook
- Budget the published gas limit times sixty-four over sixty-three, on top of a plain transfer. Expect transfers to be able to revert for reasons unrelated to balances.
- Pause and blocklist
- Screen with detectTransferRestriction before submitting, and render the message rather than hard-coding codes.
- Non-transferable
- Do not list. There is no configuration that makes this one work.
- Upgradeable
- Find out who holds UPGRADER_ROLE and whether it is a timelock, before relying on anything above.
- Then ask who holds the admin role
- It can grant itself every other role, so no separation of keys means anything until this one is answered. If you lend against the token, treat the seize authority as able to burn your collateral.
- Mintable and seizable
- Assume supply can grow and balances can vanish without a transfer you could have screened. Neither is visible in a simulation.
- Stay current
- Follow ExtensionConfigured if you need live configuration without polling. One event covers every module.
Know what the tier proves: that a token runs one specific runtime and cannot change it. What that runtime does with your money is a separate question, and the answer is whatever review stands behind the address you pinned.