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.
Hardfork Ordinals
Cobalt (Upcoming) — Ordinal 02
B20 Asset — Schedule Multiplier Updates (ERC-8056)
Authors: Rayyan Alam and Markus Adds a scheduled multiplier setter for B20 Asset issuers running corporate actions such as stock splits and reverse stock splits. TheupdateUIMultiplier function lets an operator schedule a multiplier change for a specific future timestamp instead of applying it immediately. The existing updateMultiplier function is retained as an emergency instant setter. All three write functions (updateUIMultiplier, cancelUIMultiplierUpdate, updateMultiplier) require OPERATOR_ROLE.
New functions
New events
New errors
Changed errors
Deprecated
PolicyRegistry — Composite Policies (UNION / INTERSECT)
AddsUNION (OR) and INTERSECT (AND) composite policy types. A UNION policy authorizes an account if any child policy authorizes it. An INTERSECT policy authorizes an account only if every child policy authorizes it. Each composite references two to four existing simple policies (ALLOWLIST or BLOCKLIST). Composite policies cannot reference other composites.
New PolicyType enum values
New functions
New events
New errors
B20 Asset, B20 Stablecoin — Seize Surface + burnBlocked Deprecation
Author: Stephan
See the full entry: Seize surface.
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.