Skip to main content
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

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
When used with OFTs, the OFT contract must be granted both 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-chain approve transaction:
Nonces are available via nonces(address owner).

Working with OFTs

When ERC20Plus is used with the OFT Burn/Mint variant:
  1. Deploy ERC20Plus on each chain
  2. Deploy OFTBurnMint on each chain, pointing to the ERC20Plus token address
  3. Grant MINTER_ROLE and BURNER_ROLE to the OFTBurnMint address on each chain’s ERC20Plus
  4. Set peers and LZ messaging configurations between OFTBurnMint contracts across chains
The OFT uses configurable function selectors to call the token’s mint/burn functions. For 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