solidity-erc-standards
Installation
SKILL.md
ERC Token Standard Guidelines
When to Apply
- Implementing a new token (Fungible, NFT, Multi-token, or Vault).
- Reviewing existing token implementations for standard compliance.
- Integrating with external tokens (e.g., DeFi protocols, marketplaces).
- Extending standards with custom logic (e.g., Permit, Votes, Enumerable).
ERC20: Fungible Tokens
- Required:
totalSupply,balanceOf,transfer,allowance,approve,transferFrom. - SafeERC20: ALWAYS wrap external ERC20 calls (
transfer,transferFrom,approve) using OpenZeppelin'sSafeERC20to handle tokens that returnfalseinstead of reverting. - Race Condition: The
approvefunction has a known race condition. UseincreaseAllowanceanddecreaseAllowance(OpenZeppelin) orERC20Permitto mitigate. - ERC20Permit (EIP-2612): Use for gasless approvals via signatures (
permitfunction). - ERC20Votes: Use for governance tokens to enable delegation and checkpointing.
- Common Pitfall: Some tokens (like USDT) do not return a boolean on
transfer, causing calls to revert if the interface expects a return value.