Generated from fenced code blocks under docs/. Total blocks: 312.
Status key: ✅ = checked against local source/package docs/tests and patched if needed.
- ✅ CB-0001 (bash) [30-33] 1. Clone the Repository —
git clone https://github.com/bsv-blockchain/ts-stack - ✅ CB-0002 (bash) [37-39] 2. Install Dependencies —
pnpm install - ✅ CB-0003 (plain) [45-52] 3. Explore the Structure —
ts-stack/ - ✅ CB-0004 (bash) [58-60] Create a Feature Branch —
git checkout -b feature/your-feature-name - ✅ CB-0005 (typescript) [81-92] Make Changes —
/** - ✅ CB-0006 (bash) [96-108] Run Tests —
# Unit tests - ✅ CB-0007 (bash) [112-118] Lint Code —
# Check linting - ✅ CB-0008 (bash) [124-130] Build Packages —
# Build all packages - ✅ CB-0009 (bash) [138-155] Adding Conformance Vectors —
# Create vector file - ✅ CB-0010 (bash) [161-163] 1. Push Your Branch —
git push origin feature/your-feature-name - ✅ CB-0011 (markdown) [176-198] 2. Create PR on GitHub —
## Description - ✅ CB-0012 (typescript) [208-215] Imports —
// Good — import specific exports from the top-level or subpath - ✅ CB-0013 (typescript) [219-231] Naming —
// Good - ✅ CB-0014 (typescript) [235-246] Error Handling —
// Good - ✅ CB-0015 (bash) [258-262] Testing Requirements —
pnpm test - ✅ CB-0016 (markdown) [276-294] Reporting Issues —
## Bug Report - ✅ CB-0017 (plain) [314-319] Commit Message Format —
type(scope): subject - ✅ CB-0018 (plain) [333-338] Commit Message Format —
feat(brc100): add getBalance method
- ✅ CB-0019 (yaml) [21-33] Frontmatter Schema —
--- - ✅ CB-0020 (yaml) [69-78] Version Management —
# For package docs - ✅ CB-0021 (bash) [84-93] Version Checking —
# Check workspace cross-package versions - ✅ CB-0022 (yaml) [99-101] Review Cadence —
review_cadence_days: 30 # Review monthly - ✅ CB-0023 (plain) [114-116] Staleness Calculation —
stale_date = last_verified + review_cadence_days - ✅ CB-0024 (plain) [119-123] Staleness Calculation —
last_verified: "2026-04-28" - ✅ CB-0025 (bash) [133-136] Update Package Version —
pnpm sync-versions - ✅ CB-0026 (bash) [144-150] Verify Documentation —
pnpm --filter docs-site validate - ✅ CB-0027 (bash) [162-167] Extract API Docs —
pnpm --filter @bsv/sdk doc - ✅ CB-0028 (yaml) [184-193] GitHub Actions —
- name: Check doc staleness - ✅ CB-0029 (markdown) [207-223] Edit a Doc Page —
--- - ✅ CB-0030 (markdown) [235-251] Create a New Page —
--- - ✅ CB-0031 (bash) [257-263] Frontmatter Validation —
# Validate frontmatter and relative links - ✅ CB-0032 (yaml) [276-288] Spec Page —
--- - ✅ CB-0033 (yaml) [292-304] Package Page —
--- - ✅ CB-0034 (yaml) [308-320] Guide Page —
---
- ✅ CB-0035 (plain) [19-23] Version Format —
MAJOR.MINOR.PATCH - ✅ CB-0036 (plain) [34-38] Stable Packages (status: stable) —
@bsv/sdk@1.2.3 - ✅ CB-0037 (plain) [46-49] Beta Packages (status: beta) —
@bsv/wab-server@0.2.1 - ✅ CB-0038 (plain) [64-69] Support Windows —
@bsv/sdk@1.x.x — Supported (bug fixes) - ✅ CB-0039 (yaml) [77-84] Documentation Versioning —
--- - ✅ CB-0040 (plain) [97-102] Staleness —
last_verified: "2026-04-28" - ✅ CB-0041 (json) [126-133] Dependencies —
{ - ✅ CB-0042 (bash) [150-153] Publishing —
npm install @bsv/sdk@latest # Stable - ✅ CB-0043 (plain) [165-176] Changelog —
## [1.2.0] - 2026-04-28
- ✅ CB-0044 (plain) [31-36] Wire Format —
[0100BEEF version header] - ✅ CB-0045 (typescript) [74-89] Usage in @bsv/sdk —
import { Beef, MerklePath, Transaction, WhatsOnChain } from '@bsv/sdk'
- ✅ CB-0046 (text) [31-48] Pipeline Flow —
TypeScript reference behavior - ✅ CB-0047 (bash) [70-72] Running The Pipeline —
pnpm conformance - ✅ CB-0048 (bash) [76-78] Running The Pipeline —
pnpm conformance --validate-only - ✅ CB-0049 (bash) [82-84] Running The Pipeline —
pnpm conformance --vectors conformance/vectors/wallet/brc100 - ✅ CB-0050 (bash) [88-90] Running The Pipeline —
pnpm --filter @bsv/conformance-runner-ts test
- ✅ CB-0051 (plain) [40-50] BRC-31 — HTTP Mutual Authentication Handshake —
Client request:
- ✅ CB-0052 (json) [36-60] File Format —
{ - ✅ CB-0053 (text) [68-73] Naming Rules —
sdk.crypto.ecdsa - ✅ CB-0054 (text) [81-92] Directory Selection —
conformance/vectors/ - ✅ CB-0055 (bash) [105-107] Adding A Vector To An Existing File —
pnpm conformance --validate-only - ✅ CB-0056 (bash) [111-113] Adding A Vector To An Existing File —
pnpm --filter @bsv/conformance-runner-ts test
- ✅ CB-0057 (json) [56-78] Vector Format —
{
- ✅ CB-0058 (bash) [21-23] Structural Runner —
pnpm conformance - ✅ CB-0059 (text) [27-29] Structural Runner —
conformance/runner/src/runner.js - ✅ CB-0060 (bash) [48-52] Structural Runner —
pnpm conformance --validate-only - ✅ CB-0061 (bash) [58-60] TypeScript/Jest Behavior Runner —
pnpm --filter @bsv/conformance-runner-ts test - ✅ CB-0062 (text) [64-66] TypeScript/Jest Behavior Runner —
conformance/runner/ts/runner.test.ts - ✅ CB-0063 (bash) [86-88] Debugging A Vector —
pnpm conformance --vectors conformance/vectors/wallet/brc100 - ✅ CB-0064 (bash) [92-94] Debugging A Vector —
sed -n '1,220p' conformance/vectors/wallet/brc100/getpublickey.json - ✅ CB-0065 (yaml) [100-114] CI Use —
- name: Validate conformance vectors
- ✅ CB-0066 (text) [21-32] Repository Layout —
conformance/vectors/ - ✅ CB-0067 (json) [38-56] Vector Format —
{ - ✅ CB-0068 (bash) [121-123] Running Vectors —
pnpm conformance - ✅ CB-0069 (bash) [127-129] Running Vectors —
pnpm conformance --validate-only - ✅ CB-0070 (bash) [133-135] Running Vectors —
pnpm conformance --vectors conformance/vectors/wallet/brc100 - ✅ CB-0071 (bash) [139-141] Running Vectors —
pnpm conformance --report conformance/runner/reports/results.xml
- ✅ CB-0072 (text) [17-32] Choose Your Stack —
Browser app using a user's wallet? - ✅ CB-0073 (bash) [38-40] Browser App —
npm install @bsv/simple - ✅ CB-0074 (typescript) [42-53] Browser App —
import { createWallet } from '@bsv/simple/browser' - ✅ CB-0075 (bash) [63-65] Transaction Builder —
npm install @bsv/wallet-helper - ✅ CB-0076 (bash) [77-79] Server Agent —
npm install @bsv/simple - ✅ CB-0077 (typescript) [81-89] Server Agent —
import { ServerWallet } from '@bsv/simple/server' - ✅ CB-0078 (bash) [97-99] Wallet Builder —
npm install @bsv/wallet-toolbox - ✅ CB-0079 (bash) [113-115] Protocol Engineer —
npm install @bsv/sdk
- ✅ CB-0080 (bash) [19-21] Step 1: Install —
npm install @bsv/simple - ✅ CB-0081 (typescript) [31-38] Step 2: Connect to a User Wallet —
import { createWallet } from '@bsv/simple/browser' - ✅ CB-0082 (typescript) [46-54] Step 3: Do Something Useful —
const recipientIdentityKey = '025706528f0f6894b2ba505007267ccff1133e004452a1f6b72ac716f246216366' - ✅ CB-0083 (typescript) [58-66] Step 3: Do Something Useful —
const created = await wallet.createToken({ - ✅ CB-0084 (typescript) [70-80] Step 3: Do Something Useful —
const client = wallet.getClient() - ✅ CB-0085 (typescript) [86-96] Server Agents —
import { ServerWallet } from '@bsv/simple/server'
- ✅ CB-0086 (bash) [25-27] Install @bsv/simple —
npm install @bsv/simple @bsv/sdk - ✅ CB-0087 (typescript) [40-43] Browser —
import { createWallet, Certifier, DID, Overlay } from '@bsv/simple/browser' - ✅ CB-0088 (typescript) [47-49] Server —
import { ServerWallet, FileRevocationStore } from '@bsv/simple/server' - ✅ CB-0089 (typescript) [53-55] Server —
const { ServerWallet } = await import('@bsv/simple/server') - ✅ CB-0090 (typescript) [61-64] TypeScript —
import type { BrowserWallet } from '@bsv/simple/browser' - ✅ CB-0091 (typescript) [72-77] Next.js —
const nextConfig = { - ✅ CB-0092 (bash) [93-95] Protocol-Level Work —
npm install @bsv/sdk
- ✅ CB-0093 (bash) [41-53] Step 1 — Create server and client projects —
# Server - ✅ CB-0094 (json) [57-66] Client (in separate directory) —
{ - ✅ CB-0095 (typescript) [72-138] Step 2 — Set up server wallet and payment middleware —
import express from 'express' - ✅ CB-0096 (typescript) [159-178] Step 4 — Set up client wallet and create 402-pay wrapper —
import { create402Fetch } from '@bsv/402-pay/client' - ✅ CB-0097 (typescript) [190-213] Step 5 — Make authenticated requests with auto-payment —
export async function accessFreeContent(fetch402: any) { - ✅ CB-0098 (typescript) [228-249] Step 6 — Manual payment construction (advanced) —
import { constructPaymentHeaders } from '@bsv/402-pay/client' - ✅ CB-0099 (typescript) [262-311] Putting it all together —
import express from 'express' - ✅ CB-0100 (typescript) [315-346] Putting it all together —
import { create402Fetch } from '@bsv/402-pay/client' - ✅ CB-0101 (bash) [350-358] Putting it all together —
# Terminal 1: Server
- ✅ CB-0102 (bash) [43-48] Step 1 — Install messaging packages —
mkdir my-p2p-app && cd my-p2p-app - ✅ CB-0103 (typescript) [54-68] Step 2 — Set up a wallet for identity —
import { WalletClient } from '@bsv/sdk' - ✅ CB-0104 (typescript) [76-106] Step 3 — Send a message via MessageBox (HTTP store-and-forward) —
import { MessageBoxClient } from '@bsv/message-box-client' - ✅ CB-0105 (typescript) [118-143] Step 4 — Retrieve messages from inbox —
export async function listInboxMessages( - ✅ CB-0106 (typescript) [155-173] Step 5 — Acknowledge (delete) messages after reading —
export async function acknowledgeMessages( - ✅ CB-0107 (typescript) [181-208] Step 6 — Listen for live messages via WebSocket —
export async function listenForLiveMessages( - ✅ CB-0108 (typescript) [220-246] Step 7 — Use Authsocket for custom WebSocket messaging —
import { AuthSocketClient } from '@bsv/authsocket-client' - ✅ CB-0109 (typescript) [259-327] Putting it all together —
import { WalletClient } from '@bsv/sdk' - ✅ CB-0110 (bash) [331-333] Putting it all together —
npx ts-node main.ts
- ✅ CB-0111 (bash) [43-49] Step 1 — Create Express app and install packages —
mkdir my-overlay-node && cd my-overlay-node - ✅ CB-0112 (json) [53-63] Step 1 — Create Express app and install packages —
{ - ✅ CB-0113 (bash) [69-77] Step 2 — Set up environment and configuration —
SERVER_PRIVATE_KEY=<your-32-byte-hex-private-key> - ✅ CB-0114 (bash) [81-83] Step 2 — Set up environment and configuration —
node -e "console.log(require('@bsv/sdk').PrivateKey.fromRandom().toHex())" - ✅ CB-0115 (typescript) [89-126] Step 3 — Initialize OverlayExpress with basic configuration —
import OverlayExpress from '@bsv/overlay-express' - ✅ CB-0116 (typescript) [138-171] Step 4 — Register topic managers —
import { - ✅ CB-0117 (typescript) [183-234] Step 5 — Configure GASP sync and health checks —
async function configureAdvanced(server: OverlayExpress) { - ✅ CB-0118 (typescript) [246-275] Step 6 — Build engine and start the server —
async function main() { - ✅ CB-0119 (bash) [287-292] Step 7 — Advertise via SHIP/SLAP (optional) —
# Using curl to trigger advertisement sync (requires admin token) - ✅ CB-0120 (typescript) [300-374] Putting it all together —
import OverlayExpress from '@bsv/overlay-express' - ✅ CB-0121 (bash) [378-381] Putting it all together —
npm install
- ✅ CB-0122 (bash) [36-38] Step 1 - Install —
npm install @bsv/sdk @bsv/simple - ✅ CB-0123 (typescript) [44-54] Step 2 - Connect To The User Wallet —
import { WalletClient } from '@bsv/sdk' - ✅ CB-0124 (typescript) [60-67] Step 3 - Use The Simple Browser Helper —
import { createWallet } from '@bsv/simple/browser' - ✅ CB-0125 (typescript) [71-73] Step 3 - Use The Simple Browser Helper —
const rawWallet = appWallet.getClient() - ✅ CB-0126 (typescript) [79-87] Step 4 - Create A Payment —
const result = await appWallet.pay({ - ✅ CB-0127 (typescript) [91-111] Step 4 - Create A Payment —
import { P2PKH, WalletClient } from '@bsv/sdk' - ✅ CB-0128 (typescript) [119-130] Step 5 - Create And List Basket Outputs —
const token = await appWallet.createToken({ - ✅ CB-0129 (typescript) [134-142] Step 5 - Create And List Basket Outputs —
const outputs = await appWallet.getClient().listOutputs({ - ✅ CB-0130 (typescript) [155-163] Step 6 - Choose The Right Runtime —
import { ServerWallet } from '@bsv/simple/server'
- ✅ CB-0131 (typescript) [39-50] Minimal App Example —
import { createWallet } from '@bsv/simple/browser'
- ✅ CB-0132 (plain) [39-46] API —
GET /blockHeaderForHeight?height=100 - ✅ CB-0133 (bash) [52-58] Configuration —
# Bootstrap from another Chaintracks server
- ✅ CB-0134 (bash) [76-91] Run locally —
# Install dependencies - ✅ CB-0135 (bash) [95-110] Deploy to production —
# Build Docker image - ✅ CB-0136 (bash) [118-120] Migrations —
npm run migrate
- ✅ CB-0137 (bash) [67-82] Run locally —
# Install dependencies - ✅ CB-0138 (bash) [86-106] Deploy to production —
# Multi-stage build: Node builder → production runtime
- ✅ CB-0139 (bash) [66-78] Run locally —
# Install dependencies - ✅ CB-0140 (bash) [84-96] Deploy to production —
# Build and start
- ✅ CB-0141 (bash) [73-85] Run locally —
# Install dependencies - ✅ CB-0142 (bash) [91-104] Deploy to production —
# Multi-stage build: Node 22 alpine builder → production runtime
- ✅ CB-0143 (bash) [77-95] Run locally —
# Install dependencies - ✅ CB-0144 (bash) [101-132] Deploy to production —
# Build Docker image - ✅ CB-0145 (bash) [138-140] Migrations —
npm run migrate
- ✅ CB-0146 (bash) [68-83] Run locally —
# Install dependencies - ✅ CB-0147 (bash) [87-113] Deploy to production —
# Multi-stage Docker build: Node 22 alpine → production
- ✅ CB-0148 (bash) [24-26] Install —
npm install @bsv/amountinator - ✅ CB-0149 (typescript) [30-43] Quick start —
import { CurrencyConverter } from '@bsv/amountinator' - ✅ CB-0150 (typescript) [59-62] Initialize with auto-refresh —
const converter = new CurrencyConverter() // 5-min interval - ✅ CB-0151 (typescript) [65-69] Convert with auto-detection —
const formatted = await converter.convertAmount('5000') // "5000" or "0.1" or "10 USD" - ✅ CB-0152 (typescript) [72-74] Convert between specific currencies —
const usdAmount = converter.convertCurrency(0.1, 'BSV', 'USD') // 6.2 (if rate = 62) - ✅ CB-0153 (typescript) [77-79] Get preferred currency symbol —
const symbol = converter.getCurrencySymbol() // "$" if USD, "€" if EUR - ✅ CB-0154 (typescript) [82-85] Convert user currency to satoshis —
const sats = await converter.convertToSatoshis(10) // If preferred = 'USD', USD→SATS - ✅ CB-0155 (typescript) [88-93] Static converter (no auto-refresh) —
const staticConverter = new CurrencyConverter(0) // refreshInterval = 0
- ✅ CB-0156 (bash) [24-26] Install —
npm install @bsv/did-client - ✅ CB-0157 (typescript) [30-54] Quick start —
import { DIDClient } from '@bsv/did-client' - ✅ CB-0158 (typescript) [69-80] Create a DID token —
const createResult = await didClient.createDID( - ✅ CB-0159 (typescript) [83-96] Find DID tokens on overlay —
const foundDIDs = await didClient.findDID( - ✅ CB-0160 (typescript) [99-103] Query by outpoint —
const byOutpoint = await didClient.findDID({ - ✅ CB-0161 (typescript) [106-114] Revoke DID by serial number —
const revokeResult = await didClient.revokeDID({ - ✅ CB-0162 (typescript) [117-125] Pagination and filtering —
const page1 = await didClient.findDID({
- ✅ CB-0163 (bash) [24-26] Install —
npm install @bsv/fund-wallet - ✅ CB-0164 (bash) [30-52] Quick start —
# Check balance only - ✅ CB-0165 (bash) [68-72] Check balance only (no Metanet Desktop needed) —
npx fund-metanet \ - ✅ CB-0166 (bash) [75-80] Fund wallet (Metanet Desktop must be running) —
npx fund-metanet \ - ✅ CB-0167 (bash) [83-89] Using custom storage provider —
npx fund-metanet \ - ✅ CB-0168 (bash) [92-95] Interactive mode —
npx fund-metanet
- ✅ CB-0169 (bash) [24-26] Install —
npm install @bsv/simple - ✅ CB-0170 (typescript) [30-43] Quick start —
import { createWallet } from '@bsv/simple/browser' - ✅ CB-0171 (typescript) [60-67] Check wallet balance —
const balance = await wallet.getBalance() - ✅ CB-0172 (typescript) [70-77] Register for MessageBox and send payment —
// Register identity handle - ✅ CB-0173 (typescript) [80-98] Create and transfer tokens —
const recipientIdentityKey = '025706528f0f6894b2ba505007267ccff1133e004452a1f6b72ac716f246216366' - ✅ CB-0174 (typescript) [101-116] Direct payments (BRC-29 derivation) —
// Server generates payment request
- ✅ CB-0175 (bash) [24-26] Install —
npm install @bsv/templates - ✅ CB-0176 (typescript) [30-40] Quick start —
import { OpReturn } from '@bsv/templates' - ✅ CB-0177 (typescript) [53-60] Create and decode an OP_RETURN script —
import { OpReturn } from '@bsv/templates' - ✅ CB-0178 (typescript) [63-95] Create MultiPushDrop token with 2 trusted owners —
import { SecurityLevel, Utils, type WalletInterface } from '@bsv/sdk' - ✅ CB-0179 (typescript) [98-124] Create 2-of-3 multisig —
import { PublicKey, type WalletInterface } from '@bsv/sdk'
- ✅ CB-0180 (bash) [28-30] Install —
npm install @bsv/wallet-helper - ✅ CB-0181 (typescript) [34-50] Quick start —
import { TransactionBuilder } from '@bsv/wallet-helper' - ✅ CB-0182 (typescript) [67-75] Multi-output payment with wallet-managed change —
const aliceAddress = '1EvmsbpAY7nESLkN4ajLTMbvsaQ1HpJPGX' - ✅ CB-0183 (typescript) [82-88] Self-controlled output with BRC-29 automatic derivation —
await new TransactionBuilder(wallet, "Self-controlled output") - ✅ CB-0184 (typescript) [91-98] Spend UTXOs and send to recipient —
const recipientAddress = '1EvmsbpAY7nESLkN4ajLTMbvsaQ1HpJPGX' - ✅ CB-0185 (typescript) [101-113] Create 1-sat ordinal with inscription and metadata —
const ordResult = await new TransactionBuilder(wallet, "Mint ordinal")
- ✅ CB-0186 (bash) [96-98] Installation —
npm install @bsv/sdk - ✅ CB-0187 (bash) [102-104] Installation —
npm install @bsv/wallet-toolbox @bsv/overlay @bsv/authsocket
- ✅ CB-0188 (bash) [24-26] Install —
npm install @bsv/authsocket-client - ✅ CB-0189 (typescript) [30-49] Quick start —
import { AuthSocketClient } from '@bsv/authsocket-client' - ✅ CB-0190 (typescript) [65-80] Basic authenticated connection —
import { AuthSocketClient } from '@bsv/authsocket-client' - ✅ CB-0191 (typescript) [84-94] With custom manager options —
const socket = AuthSocketClient('http://localhost:3000', {
- ✅ CB-0192 (bash) [24-26] Install —
npm install @bsv/authsocket - ✅ CB-0193 (typescript) [30-50] Quick start —
import { AuthSocketServer } from '@bsv/authsocket' - ✅ CB-0194 (typescript) [66-88] Server setup with certificate requests —
import { AuthSocketServer } from '@bsv/authsocket' - ✅ CB-0195 (typescript) [92-102] Receiving authenticated messages —
io.on('connection', async (socket) => {
- ✅ CB-0196 (bash) [24-26] Install —
npm install @bsv/message-box-client - ✅ CB-0197 (typescript) [30-57] Quick start —
import { MessageBoxClient } from '@bsv/message-box-client' - ✅ CB-0198 (typescript) [74-87] Listening for live messages —
const msgBoxClient = new MessageBoxClient({ - ✅ CB-0199 (typescript) [91-109] Peer-to-peer payments —
import { PeerPayClient } from '@bsv/message-box-client'
- ✅ CB-0200 (bash) [24-26] Install —
npm install @bsv/paymail - ✅ CB-0201 (typescript) [30-46] Quick start —
import { PaymailClient, PublicProfileCapability } from '@bsv/paymail' - ✅ CB-0202 (typescript) [63-101] Server setup —
import express from 'express' - ✅ CB-0203 (typescript) [105-125] Client capability discovery —
import { PaymailClient, PublicProfileCapability } from '@bsv/paymail'
- ✅ CB-0204 (bash) [24-26] Install —
npm install @bsv/402-pay - ✅ CB-0205 (typescript) [30-64] Quick start —
// ===== SERVER SIDE ===== - ✅ CB-0206 (typescript) [89-108] Server low-level API —
import express from 'express' - ✅ CB-0207 (typescript) [112-123] Client manual headers —
import { constructPaymentHeaders } from '@bsv/402-pay/client' - ✅ CB-0208 (typescript) [127-139] Client with cache management —
const fetch402 = create402Fetch({
- ✅ CB-0209 (bash) [24-26] Install —
npm install @bsv/auth-express-middleware - ✅ CB-0210 (typescript) [30-52] Quick start —
import express from 'express' - ✅ CB-0211 (typescript) [69-82] Global auth requirement —
import express from 'express' - ✅ CB-0212 (typescript) [86-105] Certificate handling —
function onCertificatesReceived(senderPublicKey, certs, req, res, next) { - ✅ CB-0213 (typescript) [109-113] Per-route protection —
app.post('/secure-endpoint', createAuthMiddleware({ wallet }), (req, res) => {
- ✅ CB-0214 (bash) [24-26] Install —
npm install @bsv/payment-express-middleware @bsv/auth-express-middleware @bsv/simple - ✅ CB-0215 (typescript) [30-63] Quick start —
import express from 'express' - ✅ CB-0216 (typescript) [80-100] Basic payment gating —
import express from 'express' - ✅ CB-0217 (typescript) [104-113] Dynamic pricing —
const paymentMiddleware = createPaymentMiddleware({ - ✅ CB-0218 (typescript) [117-136] Chained with auth middleware —
const app = express()
- ✅ CB-0219 (bash) [20-22] Install —
npm install @bsv/teranode-listener - ✅ CB-0220 (typescript) [26-44] Quick start —
import { TeranodeListener } from '@bsv/teranode-listener' - ✅ CB-0221 (typescript) [61-70] Subscribe with callbacks —
const listener = new TeranodeListener({ - ✅ CB-0222 (typescript) [74-87] Custom configuration —
const listener = new TeranodeListener( - ✅ CB-0223 (typescript) [91-111] Dynamic topic management —
const listener = new TeranodeListener({ - ✅ CB-0224 (typescript) [115-120] Graceful shutdown —
const listener = new TeranodeListener(callbacks, config)
- ✅ CB-0225 (bash) [26-28] Install —
npm install @bsv/btms-backend - ✅ CB-0226 (typescript) [32-54] Quick start —
import { BTMSTopicManager, BTMSLookupServiceFactory } from '@bsv/btms-backend' - ✅ CB-0227 (typescript) [70-83] Register in OverlayExpress —
import OverlayExpress from '@bsv/overlay-express' - ✅ CB-0228 (typescript) [87-92] Query tokens by owner —
const ownerResults = await lookupService.lookup({ - ✅ CB-0229 (typescript) [96-101] Retrieve metadata —
const manager = new BTMSTopicManager()
- ✅ CB-0230 (bash) [24-26] Install —
npm install @bsv/gasp - ✅ CB-0231 (typescript) [30-101] Quick start —
import { - ✅ CB-0232 (typescript) [117-164] Implement GASPRemote for HTTP communication —
import { - ✅ CB-0233 (typescript) [168-182] Unidirectional (pull-only) sync —
const gaspPullOnly = new GASP( - ✅ CB-0234 (typescript) [186-200] Sequential sync for DB safety —
const gaspSequential = new GASP(
- ✅ CB-0235 (bash) [20-22] Install —
npm install @bsv/overlay-discovery-services - ✅ CB-0236 (typescript) [26-86] Quick start —
import { Engine, type LookupService, type Storage, type TopicManager } from '@bsv/overlay' - ✅ CB-0237 (typescript) [101-106] Validate URIs and names —
import { isAdvertisableURI, isValidTopicOrServiceName } from '@bsv/overlay-discovery-services' - ✅ CB-0238 (typescript) [110-127] Use WalletAdvertiser for publishing —
import { WalletAdvertiser } from '@bsv/overlay-discovery-services' - ✅ CB-0239 (typescript) [131-148] Discover peers via SHIP/SLAP —
// After Engine is initialized with tracker URLs
- ✅ CB-0240 (bash) [20-22] Install —
npm install @bsv/overlay-express - ✅ CB-0241 (typescript) [26-46] Quick start —
import OverlayExpress from '@bsv/overlay-express' - ✅ CB-0242 (typescript) [62-71] Basic server setup —
const server = new OverlayExpress( - ✅ CB-0243 (typescript) [75-86] Register multiple topics —
server.configureTopicManager('tm_helloworld', new HelloWorldTopicManager()) - ✅ CB-0244 (typescript) [90-106] Configure health checks —
server.configureHealth({ - ✅ CB-0245 (typescript) [110-122] Advanced engine options —
server.configureEngineParams({
- ✅ CB-0246 (bash) [20-22] Install —
npm install @bsv/overlay-topics - ✅ CB-0247 (typescript) [26-40] Quick start —
import { HelloWorldTopicManager, createHelloWorldLookupService } from '@bsv/overlay-topics' - ✅ CB-0248 (typescript) [55-78] Register multiple topics in OverlayExpress —
import OverlayExpress from '@bsv/overlay-express' - ✅ CB-0249 (typescript) [82-103] Query by topic —
// DID query - ✅ CB-0250 (typescript) [107-111] Manual topic manager use —
const manager = new DIDTopicManager()
- ✅ CB-0251 (bash) [20-22] Install —
npm install @bsv/overlay @bsv/overlay-topics - ✅ CB-0252 (typescript) [26-60] Quick start —
import { Engine } from '@bsv/overlay' - ✅ CB-0253 (typescript) [76-97] Implementing a TopicManager —
import type { TopicManager } from '@bsv/overlay' - ✅ CB-0254 (typescript) [101-134] Implementing a LookupService —
import type { LookupService } from '@bsv/overlay' - ✅ CB-0255 (typescript) [138-141] Configuring storage with Knex —
const storage = new KnexStorage(knex)
- ✅ CB-0256 (bash) [24-26] Install —
npm install @bsv/sdk - ✅ CB-0257 (typescript) [30-57] Quick start —
import { PrivateKey, P2PKH, Transaction } from '@bsv/sdk' - ✅ CB-0258 (typescript) [80-106] Build a P2PKH transaction —
import { PrivateKey, P2PKH, Transaction } from '@bsv/sdk' - ✅ CB-0259 (typescript) [110-133] Connect to a BRC-100 wallet —
import { P2PKH, WalletClient } from '@bsv/sdk' - ✅ CB-0260 (typescript) [139-167] Verify SPV with merkle proof —
import { Transaction, WhatsOnChain } from '@bsv/sdk' - ✅ CB-0261 (typescript) [171-191] Encode data on-chain with PushDrop —
import { PushDrop, Utils, WalletClient } from '@bsv/sdk'
- ✅ CB-0262 (typescript) [58-88] Quick Example —
import { PrivateKey, P2PKH, Transaction } from '@bsv/sdk'
- ✅ CB-0263 (bash) [25-27] Install —
npm install @bsv/btms-permission-module - ✅ CB-0264 (typescript) [31-51] Quick start —
import { createBtmsModule } from '@bsv/btms-permission-module' - ✅ CB-0265 (typescript) [65-85] Simple prompt with confirm dialog (vanilla JS) —
import { createBtmsModule } from '@bsv/btms-permission-module' - ✅ CB-0266 (typescript) [89-99] Deny-all for programmatic use (no UI needed) —
import { createBtmsModule } from '@bsv/btms-permission-module' - ✅ CB-0267 (typescript) [103-123] Register with wallet permissions manager —
import { WalletPermissionsManager } from '@bsv/wallet-toolbox'
- ✅ CB-0268 (bash) [39-41] Install —
npm install @bsv/btms - ✅ CB-0269 (typescript) [45-68] Quick start —
import { BTMS } from '@bsv/btms' - ✅ CB-0270 (typescript) [83-93] Send tokens to recipient —
const recipientIdentityKey = '025706528f0f6894b2ba505007267ccff1133e004452a1f6b72ac716f246216366' - ✅ CB-0271 (typescript) [97-104] Accept incoming token payment —
const incoming = await btms.listIncoming() - ✅ CB-0272 (typescript) [108-115] Burn tokens (permanent destruction) —
// Burn specific amount - ✅ CB-0273 (typescript) [119-136] Prove token ownership for collateral or escrow —
const verifierKey = '02c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5'
- ✅ CB-0274 (bash) [21-23] Install —
npm install @bsv/wallet-relay - ✅ CB-0275 (typescript) [29-55] Set up relay server (Express + Node.js) —
import express from 'express' - ✅ CB-0276 (tsx) [59-87] Create session and get QR code (frontend React) —
import { useWalletRelayClient } from '@bsv/wallet-relay/react' - ✅ CB-0277 (tsx) [122-142] Use WalletConnectionModal component —
import { WalletConnectionModal } from '@bsv/wallet-relay/react' - ✅ CB-0278 (typescript) [146-170] Send wallet RPC call from desktop to mobile —
import { WalletRelayClient } from '@bsv/wallet-relay/client' - ✅ CB-0279 (typescript) [174-192] Mobile wallet implementation —
import { WalletPairingSession, parsePairingUri } from '@bsv/wallet-relay/client'
- ✅ CB-0280 (bash) [21-23] Install —
npm install @bsv/wallet-toolbox-examples
- ✅ CB-0281 (bash) [23-25] Install —
npm install @bsv/wallet-toolbox - ✅ CB-0282 (bash) [29-32] Install —
npm install @bsv/wallet-toolbox-client - ✅ CB-0283 (typescript) [52-66] Source-Backed Setup Pattern —
import { Setup } from '@bsv/wallet-toolbox' - ✅ CB-0284 (typescript) [74-98] Action Flow —
export async function createP2pkhOutput(recipientAddress: string) { - ✅ CB-0285 (typescript) [102-132] Action Flow —
export async function finishCustomSpend(args: {
- ✅ CB-0286 (bash) [143-149] Finding Implementations —
# Packages implementing BRC-100
- ✅ CB-0287 (typescript) [82-106] Example: Submit transaction with SDK —
import { Transaction, ARC } from '@bsv/sdk' - ✅ CB-0288 (typescript) [112-127] Example: Submit transaction with SDK —
// POST /arc-callback
- ✅ CB-0289 (typescript) [77-113] Example: Server setup —
import http from 'http' - ✅ CB-0290 (typescript) [117-141] Example: Server setup —
import { MessageBoxClient } from '@bsv/message-box-client'
- ✅ CB-0291 (typescript) [54-56] createAction —
const result = await wallet.createAction(args) - ✅ CB-0292 (typescript) [102-112] createAction —
const result = await wallet.createAction({ - ✅ CB-0293 (typescript) [118-120] signAction —
const result = await wallet.signAction(args) - ✅ CB-0294 (typescript) [148-156] signAction —
await wallet.signAction({
- ✅ CB-0295 (typescript) [75-109] Example: Monetized Express endpoint —
import express from 'express' - ✅ CB-0296 (typescript) [113-125] Example: Monetized Express endpoint —
import { create402Fetch } from '@bsv/402-pay/client'
- ✅ CB-0297 (typescript) [74-93] Example: Send peer-to-peer payment via message box —
import { PeerPayClient } from '@bsv/message-box-client' - ✅ CB-0298 (typescript) [97-112] Example: Send peer-to-peer payment via message box —
import { PeerPayClient } from '@bsv/message-box-client'
- ✅ CB-0299 (typescript) [87-114] Example: Express middleware handshake —
import express from 'express' - ✅ CB-0300 (typescript) [118-130] Example: Express middleware handshake —
import { AuthFetch } from '@bsv/sdk' - ✅ CB-0301 (typescript) [134-157] Example: WebSocket with AuthSocket —
import http from 'http'
- ✅ CB-0302 (typescript) [93-194] Example: Sync two overlay nodes —
import {
- ✅ CB-0303 (typescript) [79-90] Example: Monitor transaction —
import { Transaction, WhatsOnChain } from '@bsv/sdk' - ✅ CB-0304 (typescript) [94-110] Example: Monitor transaction —
import { MerklePath, WhatsOnChain } from '@bsv/sdk'
- ✅ CB-0305 (typescript) [71-88] Example: Send encrypted message —
import { MessageBoxClient } from '@bsv/message-box-client' - ✅ CB-0306 (typescript) [92-106] Example: Send encrypted message —
// 2. Retrieve all messages in inbox - ✅ CB-0307 (typescript) [110-118] Example: Send encrypted message —
// 4. Subscribe to real-time messages
- ✅ CB-0308 (typescript) [82-123] Example: Submit transaction to overlay —
import { PushDrop, Utils, WalletClient } from '@bsv/sdk' - ✅ CB-0309 (typescript) [127-139] Example: Submit transaction to overlay —
const lookupResponse = await fetch('https://overlay.example.com/lookup', {
- ✅ CB-0310 (typescript) [77-106] Example: Remote wallet over HTTPS —
import { SetupClient } from '@bsv/wallet-toolbox'
- ✅ CB-0311 (typescript) [79-106] Example: Upload and retrieve file —
import { StorageUploader, StorageDownloader, WalletClient } from '@bsv/sdk' - ✅ CB-0312 (typescript) [110-132] Example: Upload and retrieve file —
import { LookupResolver } from '@bsv/sdk'