Base Beryl / B20

Cast tokens
in the fire

Native B20 precompiles on Base. No contracts. Half the cost. Full compliance toolkit baked into the chain.

Roles
Mint/Burn
Supply cap
Freeze
Seize

The standard

B20 is protocol steel

01

Rust precompiles

Token logic lives inside the Base node software. Not bytecode on top. Native execution paths in Reth V2.

02

ERC-20 face

Wallets, DEXs, indexers see a normal token. Different engine underneath.

03

Policy gates

Compliance controls enforced at the precompile layer. Not bolt-on middleware.

Issuer toolkit

Hammered in

Every control is a B20 policy gate at the precompile layer.

01

Roles

Minter, pauser, admin, compliance officer permissions.

02

Supply cap

Hard ceiling on total issuance with optional per-mint limits.

03

Transfer rules

Allowlists, blocklists, conditional transfers.

04

Freeze

Halt specific addresses without stopping the token.

05

Seize

Compliance-directed fund recovery to custodian.

06

Stablecoin

Six-decimal precision, custom currency code.

Integration

Strike the config

issue.ts create
import { Tuyere } from '@tuyere/sdk';

const token = await Tuyere.create({
  name: 'Acme USD',
  symbol: 'AUSD',
  model: 'stablecoin',
  decimals: 6,
  currencyCode: 'USD',
  policies: {
    supplyCap: '10_000_000_000_000',
    roles: {
      minter: ['0xMinter...'],
      freezer: ['0xCompliance...'],
    },
    transferRules: 'allowlist',
  },
});
operate.ts mint / freeze
await token.mint({
  to: '0x742d35Cc6634C0532925a3b844Bc9e7595f8fA12',
  amount: '1_000_000_000',
});

await token.freeze({
  address: '0xFlagged...',
});
01

Define

Set model, roles, caps, transfer rules in console or SDK.

02

Cast

Tuyere registers B20 via precompile. No deploy step.

03

Ship

Mint, list, bridge. Standard token everywhere.