BRC-100 FAQReviewed Aug. 21, 2026

    What is BRC-100?

    The complete guide to the open BSV wallet interface for payments, identity, cryptography, digital assets, and interoperable applications.

    In one sentence: BRC-100 lets an application ask a compatible wallet to perform useful Bitcoin and identity operations through one stable API—while the wallet keeps the user’s private keys and enforces permissions.

    Why BRC-100 matters

    Interoperability

    Apps integrate a stable capability interface instead of one wallet vendor at a time.

    User control

    Private keys stay inside the wallet, with origin-aware permissions around every sensitive operation.

    Identity and privacy

    Derived keys and selective certificate proofs reduce passwords and unnecessary data disclosure.

    Payments and assets

    Actions, baskets, tags, BEEF, and SPV provide a coherent model for wallet-managed state.

    The complete FAQ

    Answers for users, builders, and wallet teams

    Explore clear answers for every audience, with technical detail and direct links to the specifications, implementations, and tools behind BRC-100.

    BRC-100 essentials

    Start here if you want the accurate, non-technical version.

    What is BRC-100?

    BRC-100 is the open, vendor-neutral BSV wallet-to-application interface. It gives applications one consistent API for asking a compatible wallet to create transactions, manage outputs, derive public keys, encrypt and sign data, work with identity certificates, authenticate users, and report network information. The wallet keeps custody of keys and mediates permissions. Read the complete specification.

    Is BRC-100 a token or token standard?

    No. Project Babbage’s BRC-100 is an application programming interface for BSV wallets. It is not a coin, inscription format, investment, blockchain, or consensus rule. It can help apps work with UTXOs and token protocols through actions and output baskets, but it does not itself define a token.

    Is this the same BRC-100 used by some BTC Ordinals projects?

    No. There are two unrelated specifications with the same number. This page covers BRC-100 in the BSV Bitcoin Request for Comments repository: the unified wallet-to-application interface authored by Project Babbage contributors. The similarly named BTC Ordinals protocol describes an extensible token/application system. They are not compatible or interchangeable.

    What does “BRC” mean here?

    It means Bitcoin Request for Comments. The BSV BRC repository is an open venue for technical specifications, formats, interfaces, and architectural guidance. A BRC number identifies a document; it does not imply a token or a Bitcoin consensus change.

    Who created BRC-100?

    The specification names Ty Everett, Tone Engel, and Brayden Langley of Project Babbage as its authors. It is published in the open BSV BRCs repository, where history, discussion, and proposed clarifications can be reviewed publicly.

    Is BRC-100 final, stable, or still a proposal?

    It is the current interoperability contract used by maintained SDKs and wallet implementations, while the BRC repository is an informal open standards process rather than a formal standards body. The repository asks substantial behavioral revisions to use new BRCs that extend or refine existing behavior. That policy is how the core interface can remain stable for applications while the ecosystem evolves.

    What problem does BRC-100 solve?

    Without a common interface, every app must integrate every wallet separately—and can become coupled to one vendor’s key storage, transaction model, or browser extension. BRC-100 separates the application from the wallet implementation. Compatible apps can make standard requests while users keep a consistent custody and permission boundary.

    What does BRC-100 let a user do?

    Depending on the wallet and app, a user can sign in without a site-specific password, approve payments, create and receive transactions, selectively prove certified identity attributes, encrypt or sign data, manage app-specific UTXOs, and carry the same wallet capabilities between compatible applications.

    How the interface works

    The useful technical model—without forcing you to read the full ABI first.

    What are the 28 BRC-100 wallet methods?

    The current interface has 28 methods, grouped by job:

    • Transactions: createAction, signAction, abortAction, listActions, internalizeAction
    • Outputs: listOutputs, relinquishOutput
    • Keys and cryptography: getPublicKey, two key-linkage methods, encrypt, decrypt, HMAC creation/verification, and signature creation/verification
    • Certificates and discovery: acquire, list, prove, relinquish, and discover certificates
    • Authentication: isAuthenticated, waitForAuthentication
    • Network: getHeight, getHeaderForHeight, getNetwork, getVersion
    Does an application ever receive the user’s private keys or seed phrase?

    It should not. Private-key operations stay behind the wallet boundary. An app requests a public key, signature, encryption/decryption operation, or transaction action; the wallet applies origin and permission rules and returns only the result. An app asking users to paste seed words is operating outside this model.

    What is a BRC-100 identity key?

    It is the compressed secp256k1 public key associated with a wallet’s everyday master private key. It can identify a party and participate in counterparty-specific derivation. It should not be treated as a universal public profile or casually exposed everywhere; BRC-42 derived keys and selective disclosure provide more private patterns.

    How do originators and wallet permissions work?

    Calls carry an originator—normally the fully qualified domain name of the requesting app. The wallet can use it to scope permissions for protocols, baskets, labels, certificates, signing, encryption, and transaction actions. The app requests; the wallet decides whether the operation is allowed and whether the user must approve it.

    What are protocol IDs, security levels, key IDs, and counterparties?

    BRC-43 gives a derived-key operation a structured context: security level + protocol ID + key ID + counterparty. Together they stop unrelated uses from accidentally sharing keys and let wallets show meaningful permissions. BRC-100 constrains names; BRC-98 reserves namespaces for permission modules.

    What is an “Action” in BRC-100?

    An Action is a Bitcoin transaction enriched with wallet metadata such as a human-readable description and optional labels. createAction asks the wallet to fund, construct, and usually sign/process it. signAction completes one that needs app-provided unlocking data; abortAction cancels an incomplete action; listActions retrieves history and metadata.

    What are output baskets, labels, and tags?

    Baskets group wallet-managed UTXOs for later retrieval and spending. Tags categorize individual outputs. Labels categorize Actions/transactions. They are wallet metadata, not new on-chain asset types. They let an app find its state without scanning everything, while permissions can scope access to each namespace.

    How do sending and receiving payments work?

    An app commonly uses createAction for an outgoing transaction. A receiving wallet uses internalizeAction to accept an Atomic BEEF transaction and identify outputs as wallet payments or basket insertions. BRC-29 supplies authenticated payment remittance values. Use maintained SDK types and examples rather than hand-building envelopes from memory.

    How do encryption, HMACs, and signatures differ?
    • encrypt/decrypt provide confidentiality with wallet-derived keys.
    • HMAC methods prove integrity and authenticity to parties sharing a derived secret.
    • Signature methods use ECDSA when asymmetric or public verification is needed.

    Protocol IDs, key IDs, counterparties, and permissions keep those contexts separated.

    How do identity certificates and selective disclosure work?

    BRC-52 certificates bind certified fields to a subject identity key and certifier. BRC-100 lets wallets acquire, list, prove, relinquish, and discover them. proveCertificate supports revealing selected fields while proving the hidden certificate is valid—so an app can request only the attributes it needs instead of a full identity document.

    What do SPV, BEEF, and Atomic BEEF have to do with BRC-100?

    BRC-100 uses BRC-67 SPV rules and BRC-62 BEEF to carry transactions with validation context. BRC-95 Atomic BEEF identifies one subject transaction plus its dependencies. These formats support compact, independently checkable data instead of requiring blind trust in a block explorer or a full-chain download.

    What is the Wallet Wire and which transports can carry BRC-100?

    The Wallet Wire is the binary application-to-wallet protocol defined by the BRC-100 ABI. A substrate carries those calls. Historical substrates include HTTP, cross-document messaging, and a window wallet interface; current clients also support JSON APIs and React Native bridges. The same logical interface can work across browsers, desktop apps, mobile webviews, and services.

    Building with BRC-100

    Practical answers for application developers and wallet implementers.

    What is the recommended starting point for a TypeScript application?

    Use WalletClient from the maintained @bsv/sdk package. Its auto substrate can discover a compatible wallet and exposes typed BRC-100 methods. Most apps should depend on the interface instead of embedding a wallet, implementing the binary ABI directly, or touching wallet storage tables.

    What does a minimal BRC-100 client example look like?

    A small connectivity and identity-key check looks like this:

    import { WalletClient } from '@bsv/sdk'
    
    const wallet = new WalletClient('auto')
    
    const { version } = await wallet.getVersion({})
    const { publicKey } = await wallet.getPublicKey({
      identityKey: true
    })
    
    console.log({ version, publicKey })

    The wallet may ask the user to authenticate or approve the request. For production payments, certificates, and custom scripts, follow the current SDK types and examples.

    How should an app detect whether a compatible wallet is available?

    Create WalletClient('auto') and make a lightweight call such as getVersion(). Treat “no wallet available” as a normal onboarding state: preserve the intended destination and offer a compatible wallet or device handoff. Do not assume one browser global or hard-code a vendor-specific extension.

    Which wallets currently implement BRC-100?

    The BRC repository identifies BSV Desktop and BSV Browser as BSV Association reference wallet applications. It also names Babbage distributions such as Metanet Desktop / Metanet Explorer, plus Hodos Browser. Capabilities vary by release, so test the methods and transports your app actually needs.

    What SDKs and wallet-building tools are available?

    Check each repository’s release, tests, and conformance status before production use.

    What is @bsv/wallet-toolbox for?

    @bsv/wallet-toolbox is for building a wallet, not merely calling one. It combines the interface with storage backends, funding/signing, network services, monitoring, key management, and permissions. App developers usually start with @bsv/sdk; wallet builders and operators may need Wallet Toolbox.

    How should BRC-100 integrations be tested?

    Test the interface boundary, ideally against more than one wallet/substrate. Cover:

    • permission denial, cancellation, and no-wallet onboarding;
    • testnet/mainnet separation and network mismatch;
    • malformed or incomplete BEEF and delayed broadcast;
    • noSend/sendWith batching if used;
    • certificate disclosure minimization;
    • pagination, UTF-8 byte limits, structured errors, and mobile reconnects.

    The ts-stack conformance corpus is intended to make behavior portable across languages.

    What security practices matter most for app developers?

    BRC-100 provides security primitives, not an automatic guarantee. At minimum:

    • use maintained SDK releases and validate responses;
    • request the narrowest protocol, basket, and certificate permissions;
    • write clear action/input/output descriptions;
    • bind authentication to the correct origin and prevent replay;
    • never collect seed phrases or raw private keys;
    • separate networks and verify transaction proofs;
    • treat denial as final—never build a bypass;
    • patch dependencies and threat-model phishing.

    Also read BRC-151’s risk assessment.

    Does BRC-100 replace overlays, BRC-103 authentication, or application protocols?

    No. BRC-100 is the wallet boundary. Overlays define how app state is admitted, indexed, discovered, and synchronized. BRC-103/104 define peer mutual authentication and HTTP transport. Payment, token, messaging, and app protocols define their own semantics and can use BRC-100 methods as building blocks.

    Status, evolution, and Project Babbage

    How to follow the standard without confusing stability with stagnation.

    How can BRC-100 evolve if the interface is described as “unchanging”?

    The core method contract is intended to remain compatible. New behavior can arrive through reserved namespaces, optional modules, new transports, and separate BRCs. Examples include permission namespaces for protocols, baskets, and labels; balance/time query conventions; permission governance; onboarding guidance; and action-reference or output-identity metadata.

    What changed in the April 2026 BRC-100 compatibility refresh?

    The April 24, 2026 refresh aligned the document with interoperable SDK behavior. It clarified batching/chained-send request shapes, UTF-8 byte limits, longer transaction descriptions, Byte[]/Uint8Array BEEF compatibility, a failed action status, aggregate BEEF from listOutputs, newest-first offsets, discovery permission defaults, and block-header naming.

    Where did the TypeScript SDK and Wallet Toolbox move in 2026?

    On June 12, 2026, the standalone TypeScript SDK and Wallet Toolbox repositories were archived as permanent redirects. Active development moved to the bsv-blockchain/ts-stack monorepo under packages/sdk and packages/wallet/wallet-toolbox, alongside shared docs, quality gates, releases, and conformance assets.

    Which recent BRC proposals are most relevant to BRC-100 developers?

    Notable 2026 proposals include:

    • 111 module labels, 112 balance queries, and 114 time labels;
    • 116 counterparty trust and 123 basket-permission governance;
    • 137 device-aware onboarding and 151 risk guidance;
    • 153 action references, 155 receive discovery, 164 output identity tags, and 219 prompt liveness.

    Repository presence does not mean every wallet implements a proposal. Negotiate capabilities and test.

    What is Project Babbage’s relationship to BRC-100 today?

    Project Babbage authored BRC-100 and continues to build products, documentation, infrastructure, and implementation support around open BSV wallet standards. But the specification is vendor-neutral: Babbage does not own the right to implement it, and an app written to the interface should not need to depend on a Project Babbage wallet.

    Where should I ask questions or report an interoperability issue?

    For a spec issue, open a focused issue or pull request in the BRCs repository and link the exact section. For SDK defects, use the maintained code owner—currently ts-stack for TypeScript SDK/Wallet Toolbox. For Babbage help, use the developer docs, GitHub, Slack, or contact us.

    Current as of August 21, 2026

    Recent BRC-100 developments

    The core interface is stable, but implementations, tooling, and backwards-compatible extension proposals are moving quickly.

    Backwards-compatible query extensions

    BRC-111, 112, and 114 introduced module-defined label namespaces, basket balance queries, and action time filters without adding core wallet methods.

    Primary source

    Specification aligned with interoperable behavior

    A broad compatibility pass clarified batching, validation, BEEF representations, action statuses, output queries, and certificate discovery defaults.

    Primary source

    TypeScript projects consolidated

    The standalone SDK and Wallet Toolbox repositories moved into ts-stack, bringing shared CI, documentation, package governance, and conformance vectors.

    Primary source

    Permission, discovery, and identity guidance expanded

    New BRC proposals addressed prompt liveness, integration risk, pull-based receiving, action references, and stable output identity tags.

    Primary source

    Reference wallets remain active

    BSV Desktop and BSV Browser are active reference applications, while Babbage and independent vendors continue to package the same open interface.

    Primary source

    Cross-platform interoperability is widening

    The maintained ecosystem now spans TypeScript, Go, Python, Rust, desktop, browser, mobile, remote storage, and portable conformance assets.

    Primary source

    Curated primary sources

    The best BRC-100 resources

    Start with the specification, then use maintained packages, examples, and reference implementations. Avoid undated summaries that conflate BSV BRC-100 with the unrelated Ordinals protocol.

    Building a BRC-100 application?

    Project Babbage can help with wallet integration, identity, payments, overlays, deployment architecture, and production readiness.