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.
The standard
B20 is protocol steel
Rust precompiles
Token logic lives inside the Base node software. Not bytecode on top. Native execution paths in Reth V2.
ERC-20 face
Wallets, DEXs, indexers see a normal token. Different engine underneath.
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.
Roles
Minter, pauser, admin, compliance officer permissions.
Supply cap
Hard ceiling on total issuance with optional per-mint limits.
Transfer rules
Allowlists, blocklists, conditional transfers.
Freeze
Halt specific addresses without stopping the token.
Seize
Compliance-directed fund recovery to custodian.
Stablecoin
Six-decimal precision, custom currency code.
Integration
Strike the config
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',
},
}); await token.mint({
to: '0x742d35Cc6634C0532925a3b844Bc9e7595f8fA12',
amount: '1_000_000_000',
});
await token.freeze({
address: '0xFlagged...',
}); Define
Set model, roles, caps, transfer rules in console or SDK.
Cast
Tuyere registers B20 via precompile. No deploy step.
Ship
Mint, list, bridge. Standard token everywhere.