ERC20Plus is an enhanced, upgradeable ERC20 token that works consistently across EVM chains supported by LayerZero, without relying on native token standard quirks that vary by chain. It provides administrative controls directly at the token level.
Feature Comparison
| Feature | Standard ERC20 | ERC20Plus |
|---|---|---|
| Transfer / Approve / Allowance | Yes | Yes |
| Role-based mint | No | Yes (MINTER_ROLE) |
| Role-based burn | No | Yes (BURNER_ROLE) |
| Allowlist (3-mode) | No | Yes (Open / Blacklist / Whitelist) |
| Global pause | No | Yes (separate PAUSER_ROLE / UNPAUSER_ROLE) |
| Fund recovery | No | Yes (DEFAULT_ADMIN_ROLE) |
| ERC20Permit (EIP-2612) | Optional | Built-in |
| Enumerable address lists | No | Yes (paginated blacklist/whitelist queries) |
| Upgradeable | Depends | Yes (EIP-7201 namespaced storage) |
| RBAC (AccessControl2Step) | No | Yes (OpenZeppelin) |
Features
Role-Based Minting and Burning
ERC20Plus defines two roles for token supply management:
- MINTER_ROLE: Can call
mint(address _to, uint256 _amount)to create new tokens - BURNER_ROLE: Can call
burn(address _from, uint256 _amount)to destroy tokens
MINTER_ROLE and BURNER_ROLE so it can mint tokens on the receive path and burn tokens on the send path.
Allowlist, Pause, and Fund Recovery
ERC20Plus includes a three-mode allowlist (Open / Blacklist / Whitelist), a global pause with separate pauser/unpauser roles, and a fund recovery function for compliance seizures from non-allowlisted addresses. These are documented in detail on the Extensions page alongside the OFT-level extensions.
ERC20Permit (EIP-2612)
Built-in support for gasless approvals via signed messages. Users can authorize token spending by signing an off-chain message instead of submitting an on-chainapprove transaction:
nonces(address owner).
Working with OFTs
WhenERC20Plus is used with the OFT Burn/Mint variant:
- Deploy
ERC20Pluson each chain - Deploy
OFTBurnMinton each chain, pointing to theERC20Plustoken address - Grant
MINTER_ROLEandBURNER_ROLEto theOFTBurnMintaddress on each chain’sERC20Plus - Set peers and LZ messaging configurations between
OFTBurnMintcontracts across chains
ERC20Plus, the default selectors are:
- Mint:
0x40c10f19(mint(address,uint256)) - Burn:
0x9dc29fac(burn(address,uint256))
Next Steps
- OFTs for choosing the right variant
- RBAC Reference for roles and access-controlled functions on
ERC20Plus