B20 method and event signatures are part of the chain’s consensus surface. Existing selectors and behavior do not change; the standard grows by addition.
Beryl — initial release
Shipped with the Beryl upgrade.
Added
- The B20 standard as a native precompile: a superset of ERC-20 with full selector and behavior parity for
transfer,transferFrom,approve,allowance,balanceOf,totalSupply,name,symbol,decimals,Transfer, andApproval - Role-based access control with built-in roles, user-defined roles in the role graph, and
renounceLastAdminfor permanent admin-less operation - PolicyRegistry singleton precompile with
BLOCKLIST,ALLOWLIST,UNION, andINTERSECTpolicy types, two-step admin transfer, and theALWAYS_ALLOWandALWAYS_BLOCKbuilt-ins - Six policy scopes on every token, covering transfer sender, receiver, and executor, mint receiver, and seize holder and receiver
seizeWithMemofor compliance-driven balance transfers- Memo variants of transfer, transferFrom, mint, burn, and seize, emitting
Memoimmediately after the primary event - Granular pausing by
PausableFeature:TRANSFER,MINT,BURN, andSEIZE - Optional supply caps, with
type(uint128).maxas the uncapped sentinel and maximum supply - ERC-2612
permitwith an EIP-712 domain at version"1" - ERC-7572
contractURIandMETADATA_ROLE-gated name, symbol, and URI updates - B20Factory singleton precompile with deterministic, variant-encoding addresses and
initCallsbootstrap semantics - ActivationRegistry gating for state-changing PolicyRegistry calls
- The
ASSETvariant:OPERATOR_ROLE, WAD-precision UI multipliers with scheduled and instant updates, announcements,batchMint, and issuer-defined extra metadata - The
STABLECOINvariant: fixed 6 decimals and acurrency()code set once at creation
burnBlockedandBURN_BLOCKED_ROLE, retained for backwards compatibility. New seizure flows useseizeWithMemo.