ERC-7818: Expirable Tokens
Tokens that expire after a configured duration: airdrops that must be claimed within 30 days, prepaid credits, gift cards, time-bounded rewards. ERC-7818 extends ERC-20 with per-batch expiry tracking — each mint creates a "lot" whose balance becomes inaccessible after its expiration.
Required Interface (Highlights)
function balanceOfAtEpoch(uint256 epoch, address account) external view returns (uint256);
function currentEpoch() external view returns (uint256);
function expirationDuration() external view returns (uint256);Neo Equivalent
The Neo C# port tracks balances per-epoch in storage. On each transfer, expired lots are skipped; expired balance is effectively burned. Epochs are derived from Runtime.Time / duration.
Live on Neo TestNet
Both implementations deployed on Neo N3 TestNet.
| Implementation | TestNet Address | Contract Hash |
|---|---|---|
Solidity (neo-solc) | NfRgrtEfpNb3KCfM33snwzcEBJpAPbFy3F | 0xfcaaf98f…a8c6564d |
Neo C# (nccs) | NMvFiMjyPN3SVQDhPxGcmDM1F1axhMZP3D | 0xcb1b0441…a6ae56e0 |
Verified: token symbol and decimals. Both contracts track per-epoch balances (epoch derived from block.timestamp / duration or Runtime.Time / duration); balance reads sum the non-expired epoch range. docs/standards-mirror/deployments/erc-7818/.
