> ## Documentation Index
> Fetch the complete documentation index at: https://base-a060aa97-docs-use-case-ia-overhaul.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# B20 changelog

> Per-hardfork, per-feature migration notes for the B20 token standard, newest first, including new methods, deprecations, and activation dates.

Per-hardfork, per-feature migration notes for the [B20 token standard](/base-chain/specs/reference/b20). Each Cobalt entry is a focused, code-forward changelog for one scoped feature change that crosses a hardfork boundary. Newest first.

<Note>
  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.
</Note>

## Hardfork ordinals

| Ordinal | Hardfork | Status   |
| ------- | -------- | -------- |
| `01`    | Beryl    | Live     |
| `02`    | Cobalt   | Upcoming |

## Cobalt (upcoming) — ordinal 02

| Product(s)                | Change                                    | Affected interfaces     | Entry                                                                                                     |
| ------------------------- | ----------------------------------------- | ----------------------- | --------------------------------------------------------------------------------------------------------- |
| B20 Asset                 | Schedule Multiplier Updates (ERC-8056)    | `IB20Asset`             | [Multiplier / ERC-8056](/base-chain/specs/reference/b20/changelog/02-cobalt-b20asset-multiplier)          |
| B20 Asset, B20 Stablecoin | Seize surface + `burnBlocked` deprecation | `IB20` (shared surface) | [Seize surface](/base-chain/specs/reference/b20/changelog/02-cobalt-b20-seize)                            |
| PolicyRegistry            | Composite Policies (UNION / INTERSECT)    | `IPolicyRegistry`       | [Composite policies](/base-chain/specs/reference/b20/changelog/02-cobalt-policyregistry-composite-policy) |

## Beryl — initial release

| Network      | Activated  |
| ------------ | ---------- |
| Base mainnet | 2026-06-25 |
| Base Sepolia | 2026-06-18 |

Shipped with the [Beryl upgrade](/base-chain/specs/upgrades/beryl/overview).

**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`, and `Approval`
* [Role-based access control](/base-chain/specs/reference/b20#roles-model) with built-in roles, user-defined roles in the role graph, and `renounceLastAdmin` for permanent admin-less operation
* [PolicyRegistry](/base-chain/specs/reference/b20#policy-registry) singleton precompile with `BLOCKLIST`, `ALLOWLIST`, `UNION`, and `INTERSECT` policy types, two-step admin transfer, and the `ALWAYS_ALLOW` and `ALWAYS_BLOCK` built-ins
* [Six policy scopes](/base-chain/specs/reference/b20#policy-integration) on every token, covering transfer sender, receiver, and executor, mint receiver, and seize holder and receiver
* [`seizeWithMemo`](/base-chain/specs/reference/b20#seize) for compliance-driven balance transfers
* [Memo variants](/base-chain/specs/reference/b20#memos) of transfer, transferFrom, mint, burn, and seize, emitting `Memo` immediately after the primary event
* [Granular pausing](/base-chain/specs/reference/b20#pause) by `PausableFeature`: `TRANSFER`, `MINT`, `BURN`, and `SEIZE`
* [Optional supply caps](/base-chain/specs/reference/b20#supply-cap), with `type(uint128).max` as the uncapped sentinel and maximum supply
* [ERC-2612 `permit`](/base-chain/specs/reference/b20#erc-2612-permit--eip-712) with an EIP-712 domain at version `"1"`
* [ERC-7572 `contractURI`](/base-chain/specs/reference/b20#contract-uri-erc-7572) and `METADATA_ROLE`-gated name, symbol, and URI updates
* [B20Factory](/base-chain/specs/reference/b20#factory) singleton precompile with deterministic, variant-encoding addresses and `initCalls` bootstrap semantics
* ActivationRegistry gating for state-changing PolicyRegistry calls
* The [`ASSET` variant](/base-chain/specs/reference/b20#asset): `OPERATOR_ROLE`, WAD-precision UI multipliers with scheduled and instant updates, announcements, `batchMint`, and issuer-defined extra metadata
* The [`STABLECOIN` variant](/base-chain/specs/reference/b20#stablecoin): fixed 6 decimals and a `currency()` code set once at creation

**Deprecated**

* `burnBlocked` and `BURN_BLOCKED_ROLE`, retained for backwards compatibility. New seizure flows use `seizeWithMemo`.
