<>ts-stack
Get StartedArchitecturePackagesSpecsGuides
⌘K
Reference
Home
Get StartedOverviewInstallChoose your stackKey concepts
ArchitectureOverviewStack layersBEEF (BRC-62)BRC-100 Wallet InterfaceIdentity & AuthConformance pipeline
PackagesOverviewSDKWalletNetworkOverlaysMessagingMiddlewareHelpers
InfrastructureOverviewmessage-box-serveroverlay-serveruhrp-server-basicuhrp-server-cloud-bucketwabwallet-infrachaintracks-server
SpecsOverviewBRC-100 Wallet InterfaceOverlay HTTPMessage-box HTTPAuthsocket (WebSocket)BRC-31 Auth HandshakeBRC-29 Peer PaymentBRC-121 / HTTP 402ARC BroadcastMerkle ServiceStorage AdapterGASP SyncUHRPAir-Gap Optical (BRC-141)
ConformanceOverviewVector catalogTS runnerContributing vectors
GuidesOverviewBuild a wallet-aware appRun an overlay nodePeer-to-peer messagingHTTP 402 payments
ReferenceOverviewBRC indexRepository health
AboutVersioningContributingDoc agentDocumentation sources
Loading…
Edit this page on GitHub
© 2026 BSV Blockchain. ts-stack is open-source.
GitHubContributingVersioning

Vector Catalog

The conformance corpus is the shared test fixture set for TypeScript and other implementations. It is intentionally implementation-neutral: each JSON file defines inputs, expected outputs, metadata, and the specification area it exercises.

Current totals and runner outcomes are published on Generated Stack Facts. The detailed, machine-readable file-by-file view is conformance/PARITY_MATRIX.json; CI regenerates and compares it to the corpus.

Repository Layout

text
conformance/vectors/
  auth/brc31-handshake.json
  broadcast/{arc-submit,merkle-path-validation,merkle-service}.json
  messaging/{authsocket,brc31/authrite-signature,message-box-http}.json
  overlay/{lookup,submit,topic-management}.json
  payments/{brc121,brc29-payment-protocol}.json
  regressions/*.json (12 files)
  sdk/compat/bsm.json
  sdk/crypto/{aes,ecdsa,ecies,hash160,hmac,ripemd160,sha256,signature}.json
  sdk/keys/{key-derivation,private-key,public-key}.json
  sdk/scripts/evaluation.json (5,116 vectors)
  sdk/transactions/{merkle-path,serialization}.json
  storage/uhrp-http.json
  sync/{brc40-user-state,brc136-basm,gasp-protocol}.json
  wallet/brc100/*.json (27 files)
  wallet/brc29/payment-derivation.json
  wallet/storage/adapter-conformance.json

Vector Format

Vector files use one top-level object with metadata and a vectors array. A typical file looks like this:

json
{
  "metadata": {
    "name": "BRC-100 WalletInterface.getPublicKey",
    "domain": "wallet",
    "spec": "BRC-100",
    "version": "1.0.0"
  },
  "vectors": [
    {
      "id": "brc100-getpublickey-identity",
      "description": "Returns the wallet identity key",
      "input": { "args": { "identityKey": true } },
      "expected": { "publicKey": "..." },
      "tags": ["wallet", "brc100"]
    }
  ]
}

Always inspect the target JSON file before porting a vector to another language; some files include fixtures, deterministic keys, expected errors, or protocol-specific notes.

Coverage By Directory

DirectoryVector CountWhat It Covers
sdk/crypto + sdk/keys~140AES, ECDSA, ECIES, HMAC, hashes, BRC-42 derivation, PrivateKey/PublicKey
sdk/transactions31BRC-62 serialization, BEEF, EF, BRC-74 MerklePath
sdk/scripts5,116Full script engine parity (parsing, encoding, sighash, evaluation with SV Node + Teranode fixtures)
sdk/compat9BRC-77 BSM
wallet/brc100~950Complete WalletInterface coverage across 27 files (many stateful methods marked intended)
wallet/brc29 + wallet/storage45BRC-29 derivation + storage adapter conformance
messaging + auth + overlay + broadcast + payments + storage + sync~200Full protocol shape validation for BRC-31, BRC-29/121, BRC-62/20/22, BRC-26, GASP, etc.
regressions3612 historical cross-implementation bug reproductions

Wallet BRC-100

Current BRC-100 conformance coverage is focused on deterministic crypto and key methods:

FileVectorsMethods
wallet/brc100/*.jsonMethod-level fixturesWalletInterface crypto, action, output, certificate, discovery, authentication, chain, network, and version methods; stateful cases retain explicit intended classifications

Use the BRC-100 wallet method reference for the full interface shape. Use this catalog to see which parts already have portable fixtures.

Coverage By BRC

BRCCurrent Vector AreasStatus
BRC-29wallet/brc29/payment-derivation.jsonavailable
BRC-31messaging/brc31/authrite-signature.jsonavailable
BRC-42sdk/keys/key-derivation.json, key fixturesavailable
BRC-74sdk/transactions/merkle-path.jsonavailable
BRC-77sdk/compat/bsm.jsonavailable
BRC-100wallet/brc100/*.json (25 files)full (100%)
BRC-14sdk/scripts/evaluation.jsonavailable, including SV Node and Teranode fixtures

Regression Fixtures

Regression files reproduce bugs found in TypeScript or other SDKs so new implementations can prove they do not repeat them.

RegressionSource Issue
beef-v2-txid-panicgo-sdk#306
privatekey-modular-reductionts-sdk#31
merkle-path-odd-nodego-sdk#298
uhrp-url-paritygo-sdk#310
script-lshift-truncationts-sdk#493
script-shift-endiannessts-sdk#377
tx-sequence-zero-sighashts-sdk#371
script-writebin-emptyts-sdk#336
script-fromasm-numeric-tokents-sdk#42
fee-model-mismatchgo-sdk#267
bip276-hex-decodego-sdk#286
beef-isvalid-hydrationgo-sdk#167

Running Vectors

Run the complete corpus:

bash
pnpm conformance

Validate JSON structure only:

bash
pnpm conformance --validate-only

Run a directory subset:

bash
pnpm conformance --vectors conformance/vectors/wallet/brc100

Write a JUnit report:

bash
pnpm conformance --report conformance/runner/reports/results.xml

Porting To Another Implementation

  1. Read conformance/META.json and conformance/PARITY_MATRIX.json to confirm corpus totals and file-level parity status.
  2. Start with deterministic SDK vectors before stateful wallet vectors.
  3. Treat wallet/brc100 as method-level fixtures, not as a complete wallet behavior test suite yet.
  4. Preserve vector IDs and expected error semantics when adding a runner for another language.
  5. For node-derived script fixtures, consume the normalized hex fields; original node ASM is retained for provenance.
  6. Add new vectors to the corpus first when you find a behavioral ambiguity, then update each runner.