Protocol & specs

Protocol and key IDs

These are the frozen v1 strings used by @txpass/protocol.

On-chain

FieldValue
Prefixtxpass
Versionv1
Subscribe typesub
Revoke typerevoke
Fee fieldtxpass / fee / <sats> (document exact sats when pricing is set)

Full subscribe OP_RETURN layout: see Protocol v1.

Txpass-issued receipts are funded from a Txpass receipt issuer key (an input spending a P2PKH output of that key); the accepted issuer public keys are published at GET /v1/receipts/issuer.

BRC-43 / wallet

AttributeValue
Originator domaintxpass.app
Protocol ID (security level 2)txpass
Key ID — request authv1 auth
Key ID — delegate grantv1 delegate (delegation certs: protocol [2, 'txpass'], counterparty anyone; see docs/specs/delegation-v1.md)
Key ID — receipt revealv1 reveal
Key ID — agent policyv1 policy (txpass/v1/policy documents, protocol [2, 'txpass'], counterparty anyone; see docs/specs/agent-policy-v1.md)
Key ID — policy admitv1 admit (txpass/v1/admit documents; same protocol and counterparty)
Key ID — publisher requestv1 publisher (txpass/v1/publisher-request documents signed by a product's seller key to ask Txpass to issue, sync or revoke a subscription receipt; protocol [2, 'txpass'], counterparty anyone)

Identity key: wallet getPublicKey({ identityKey: true }) (BRC-42 / BRC-100).
Signing for HTTP: AuthFetch / BRC-103 with HTTP transport BRC-104 — not a parallel custom header scheme.

Commitment

identity on-chain (default): SHA256(I_compressed_bytes || salt_32) hex-encoded.
Reveal at ingest: I (compressed pubkey hex) + salt (32-byte hex), over an authenticated session.

Machine descriptor (GET /v1/protocol)

Should return JSON including: prefix, version, originator, protocolId, keyIds, feeSats, commitmentDefault, verifierPackage (name/version when published), docsUrl.