0.0.3 • Published yesterday
@b20labs/sdk
Licence
MIT
Version
0.0.3
Deps
0
Vulns
0
Weekly
0
@b20labs/sdk
The canonical open TypeScript SDK for B20 — Base's native token standard.
Byte-exact encoders proven against base-std by a golden-vector
differential test (Solidity TypeScript, run in CI), zero-RPC address derivation, and typed decoding
of every precompile error. viem-native, tree-shakeable, zero runtime deps.
Install
pnpm add @b20labs/sdk viem
Deploy a B20 in ~12 lines
import { createWalletClient, http } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { base } from "viem/chains";
import { encodeAssetCreateParams, buildRoleGrants, buildCreateB20Tx, B20Variant } from "@b20labs/sdk";
const account = privateKeyToAccount(process.env.PK as `0x${string}`);
const wallet = createWalletClient({ account, chain: base, transport: http() });
const params = encodeAssetCreateParams("My Token", "MYT", account.address, 18);
const initCalls = buildRoleGrants({ minter: account.address }, B20Variant.ASSET);
const salt = `0x${"00".repeat(31)}01` as const;
const tx = buildCreateB20Tx({ variant: B20Variant.ASSET, salt, params, initCalls });
await wallet.sendTransaction(tx);
What's inside
- Encoders —
encodeAssetCreateParams/encodeStablecoinCreateParams, all initCall builders,buildRoleGrants,buildCreateB20Tx. Byte-for-byte identical tobase-std'sB20FactoryLib. - Addresses (zero-RPC) —
getB20Address(variant, deployer, salt),variantOf(address),isB20Address(address). - Errors —
decodeB20Error(data)maps all 48 precompile errors to typed results, surfacing the exact failing initCall index. - Activation —
isVariantActivated(client, variant)— the only correct write-gate (never gate on the calendar). - Constants — precompile addresses, role & policy ids, chain ids, feature keys.
Trust
The headline artifact is the golden-vector test: a base-forge harness emits canonical bytes from
base-std, and the TS encoders are asserted byte-identical. Pinned to base-std v1.0.0 — the full 36-test
suite (22 golden vectors + address parity + error parity) runs green on every change.
Docs
Full guides & reference: docs.b20labs.app · Built by B20 Labs · @b20lab
License
MIT