Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docs/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ npx skills add base/base-skills
|base-chain/api-reference/ethereum-json-rpc-api:eth_blockNumber,eth_call,eth_chainId,eth_estimateGas,eth_feeHistory,eth_gasPrice,eth_getBalance,eth_getBlockByHash,eth_getBlockByNumber,eth_getBlockReceipts,eth_getBlockTransactionCountByHash,eth_getBlockTransactionCountByNumber,eth_getCode,eth_getLogs,eth_getStorageAt,eth_getTransactionByBlockHashAndIndex,eth_getTransactionByBlockNumberAndIndex,eth_getTransactionByHash,eth_getTransactionCount,eth_getTransactionReceipt,eth_maxPriorityFeePerGas,eth_sendRawTransaction,eth_subscribe,eth_syncing,eth_unsubscribe,net_version,web3_clientVersion
|base-chain/api-reference/flashblocks-api:base_transactionStatus,eth_simulateV1,flashblocks-api-overview,newFlashblockTransactions,newFlashblocks,pendingLogs
|base-chain/flashblocks:faq
|base-chain/network-information:base-contracts,base-solana-bridge,bridging-and-withdrawals,ecosystem-bridges,network-faucets,network-fees,throughput-and-limits,transaction-finality,transaction-ordering,troubleshooting-transactions
|base-chain/network-information:base-contracts,base-solana-bridge,bridging-and-withdrawals,configuration-changelog,ecosystem-bridges,network-faucets,network-fees,throughput-and-limits,transaction-finality,transaction-ordering,troubleshooting-transactions
|base-chain/node-operators:node-providers,performance-tuning,run-a-base-node,snapshots,troubleshooting
|base-chain/quickstart:connecting-to-base
|base-chain/security:avoid-malicious-flags,bug-bounty,report-vulnerability,security-council
Expand All @@ -93,7 +93,7 @@ npx skills add base/base-skills
|base-chain/specs/protocol/proofs:challenger,contracts,index,proposer,registrar,tee-prover,zk-prover
|base-chain/specs/reference:configurability,glossary
|base-chain/specs/upgrades/azul:exec-engine,node-upgrade,overview,proofs
|base-chain/specs/upgrades/beryl:b20,overview
|base-chain/specs/upgrades/beryl:b20-playground,b20,overview
|base-chain/specs/upgrades/canyon:overview
|base-chain/specs/upgrades/delta:overview,span-batches
|base-chain/specs/upgrades/ecotone:derivation,l1-attributes,overview
Expand Down
2 changes: 1 addition & 1 deletion docs/apps/guides/accept-b20-payments.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -58,4 +58,4 @@ Call `publicClient.simulateContract` with the same arguments before sending. It

- [B20 token standard](/base-chain/specs/upgrades/beryl/b20): the full interface, including memos, policies, pausing, and roles.
- [Query B20 events](https://docs.cdp.coinbase.com/data/sql-api/b20-events): index `Transfer` and `Memo` events with the CDP SQL API to reconcile payments against orders at scale.
- [Launch a B20 Token](/get-started/launch-b20-token): create your own B20 token.
- [Launch a B20 token](/get-started/launch-b20-token): create your own B20 token.
64 changes: 64 additions & 0 deletions docs/base-chain/specs/upgrades/beryl/b20-playground.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
---
title: "B20 playground"
description: "Try B20's issuer flows in your browser: freeze-and-seize, payment memos, gasless approvals, and onchain corporate actions on Base."
---

import { B20FlowDemo } from "/snippets/B20PlaygroundDemo.jsx"


## When to use B20

- You need compliance, reconciliation, or corporate-action machinery. It ships as part of the standard, so you don't build and audit a custom contract.
- Your integrators matter. Exchanges, wallets, and indexers wire up one surface that behaves the same across every B20 token.
- Cost matters. B20 runs as a native precompile: cheaper and faster than a contract token.

B20 is a superset of ERC-20: every ERC-20 call works unchanged, so there's no compatibility trade-off in choosing it.

## A compliance order arrives

A court order targets one account. Freeze it so it can't send, then seize the balance with one call. Seizure only works on an account that is already frozen. Every other holder is untouched and the token keeps trading. See [transfer policies](/base-chain/specs/upgrades/beryl/b20#policy-integration) and [burn](/base-chain/specs/upgrades/beryl/b20#burn) in the spec.

<Visibility for="humans">
<B20FlowDemo flow="seize" />
</Visibility>

## A customer pays an invoice

Your customer pays to one address. The transfer carries the invoice reference, so payment and order ID land in the same transaction. Reconciliation becomes a log query instead of a deposit address for every customer. To build this, see [Accept B20 payments](/apps/guides/accept-b20-payments).

<Visibility for="humans">
<B20FlowDemo flow="memo" />
</Visibility>

## A new user approves without gas

A new user shouldn't have to buy ETH first. With `permit`, they sign an approval offchain and your platform relays it. They start transacting with zero gas, and nonces stop signature replay. See [permit](/base-chain/specs/upgrades/beryl/b20#erc-2612-permit--eip-712) in the spec.

<Visibility for="humans">
<B20FlowDemo flow="permit" />
</Visibility>

## The stock splits

A 2-for-1 split is one call. Every balance doubles without a migration or a new contract. Dividends run inside a public announcement window, so the disclosure lives onchain next to the action. The token also stores identifiers like a CUSIP. See the [Asset variant](/base-chain/specs/upgrades/beryl/b20#asset) in the spec.

<Visibility for="humans">
<B20FlowDemo flow="equity" />
</Visibility>

## Build with it

<CardGroup cols={2}>
<Card title="Launch a B20 token" href="/get-started/launch-b20-token">
Deploy a fully configured token in one factory call.
</Card>
<Card title="Accept B20 payments" href="/apps/guides/accept-b20-payments">
Integration code for memo-tagged payments and B20-specific reverts.
</Card>
<Card title="B20 native token standard" href="/base-chain/specs/upgrades/beryl/b20">
Every method, event, role, and policy in the standard.
</Card>
<Card title="Beryl overview" href="/base-chain/specs/upgrades/beryl/overview">
The upgrade that introduces B20 and native token features.
</Card>
</CardGroup>
6 changes: 3 additions & 3 deletions docs/base-chain/specs/upgrades/beryl/b20.mdx
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
---
title: "B20 Native Token Standard"
description: "B20 is Base's native token standard - designed for stablecoin issuers, real-world asset (RWA) and equity issuers, and long-tail token creators."
title: "B20 native token standard"
description: "Learn how B20, Base's native token standard, serves stablecoin issuers, real-world asset (RWA) and equity issuers, and long-tail token creators."
---

B20 is the Base ecosystem's own version of [ERC-20](https://eips.ethereum.org/EIPS/eip-20). It ships with a built-in compliance toolkit: transfer policies, freeze-and-seize, role-based access control, memos, and supply caps. The full interface specs are available in the [Base Standard Library](https://github.com/base/base-std/tree/main) repository.

To deploy your first B20 token, see the [Launch a B20 Token](/get-started/launch-b20-token) quickstart.
To deploy your first B20 token, see the [Launch a B20 token](/get-started/launch-b20-token) quickstart.

<Warning>
[Verify the Activation Registry is enabled](/get-started/launch-b20-token#verify-the-activation-registry-is-enabled) before attempting to deploy.
Expand Down
3 changes: 2 additions & 1 deletion docs/docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,8 @@
"group": "Beryl Upgrade",
"tag": "New",
"pages": [
"base-chain/specs/upgrades/beryl/overview"
"base-chain/specs/upgrades/beryl/overview",
"base-chain/specs/upgrades/beryl/b20-playground"
]
},
{
Expand Down
4 changes: 2 additions & 2 deletions docs/get-started/launch-b20-token.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: "Launch a B20 Token"
description: "Launch a B20 token on Base by calling the B20 Factory precompile."
title: "Launch a B20 token"
description: "Launch a B20 token on Base with one call to the B20 Factory precompile, with roles, supply caps, and compliance controls built in."
---

B20 is an ERC-20 superset that runs as a native precompile on Base, which makes transfers cheaper and higher-throughput than a standard contract token while keeping full ERC-20 compatibility. Roles, supply caps, pausing, policy gating, memos, and `permit` are built into the chain.
Expand Down
Loading
Loading