Skip to content

OPL protocol corpus: Bitcom, B, AIP, MAP, Sigma, Addressing, 1Sat series, BAP, Bitcoin Schema (300-312) - #1

Open
rohenaz wants to merge 14 commits into
masterfrom
draft/brc-310-bitcom
Open

OPL protocol corpus: Bitcom, B, AIP, MAP, Sigma, Addressing, 1Sat series, BAP, Bitcoin Schema (300-312)#1
rohenaz wants to merge 14 commits into
masterfrom
draft/brc-310-bitcom

Conversation

@rohenaz

@rohenaz rohenaz commented Aug 6, 2026

Copy link
Copy Markdown

Internal review PR — after approval and merge to master, we will separately decide when to submit upstream to bitcoin-sv/BRCs. No upstream PR yet.

Numbering

Placeholder block 300–312, contiguous and dependency-ordered so every numbered cross-reference points to an earlier document; where a lower-numbered doc needs to mention a higher-numbered one, the mention is name-only ("specified separately") with no link. The 300+ range avoids collision with in-flight upstream submissions (e.g. bsv-blockchain#201 claiming 156); upstream has no formal numbering guidance, and final numbers get assigned lowest-available-first at upstream merge. David's original 302/303 (P1Sat wallet docs) are discarded per plan — to be rewritten later — and their numbers reused.

Documents

Draft Standard Dir Authors Primary sources
300 Bitcom — Universal Bitcoin Computer scripts _unwriter, Luke unwriter/Bitcom README + 0.1.0.md + issues #1–3, archived site docs
301 B — Bitcoin Data Protocol scripts _unwriter, Luke unwriter/B README (complete wire spec)
302 AIP — Author Identity Protocol scripts Attila Aros, Luke opldotdev/AIP README; preimage pinned from go-aip
303 MAP — Magic Attribute Protocol scripts Luke, Attila Aros MAP v2 branch spec (full command set; v1 not referenced)
304 Sigma — Transaction-Bound Script Signatures scripts David, Luke David's BRC-307 draft + BRC77 mode from sigma src/index.ts
305 Outpoint Content Addressing outpoints David, Luke 1sat-stack behavior + bitcoin-sv node history (new synthesis doc)
306 1Sat Ordinals — Origin Tracking tokens David, Luke David's BRC-300 draft
307 1Sat Ordinals — Inscription Envelopes tokens David, Luke David's BRC-301 draft
308 1Sat Ordinal Collections tokens Luke, David David's BRC-304 draft
309 BSV-21 Fungible Tokens (JSON / Legacy) tokens David, Luke David's BRC-305 draft
310 BSV-21 Fungible Tokens (Binary) tokens David David's BRC-306 draft
311 BAP — Bitcoin Attestation Protocol peer-to-peer Siggi BitcoinSchema/bap PROTOCOL.md (PROVISIONAL DID/Metanet excluded)
312 Bitcoin Schema — Social Data Types apps Luke bitcoinschema.org social-actions/content/messaging source (b-open-io/bitcoinschema)
313 Encrypted Group Messaging over Type-42 Key Derivation peer-to-peer Luke GROUP-CHAT-BRC-BRIEF rev 2 + Megolm spec + NIP-44 + ASIACRYPT 2023 analysis + full BRC-42/43/78/33/169/146 extraction

All carry the OPL attribution block (Open Protocol Labs (info@opl.dev), Authors, Contributors incl. Kurt, Michael, Dan). Original non-OPL authors credited first where applicable (_unwriter on 300/301; Attila on 302; Siggi on 311), per the BRC-13 precedent.

Needs review — decisions that require an arbiter

  1. Outpoint separator conflict (@shruggr, Luke) — 305 vs. David's original 300. David's origin-tracking draft said implementations MUST accept both txid_vout and txid.vout and RECOMMENDED dot for BRC-100/overlay APIs. Per Luke's direction, 305 standardizes underscore as canonical (producers MUST NOT emit legacy separators; resolvers MAY accept them). 306's Outpoints section now defers to 305 while noting the dot form exists in overlay/BRC-100 contexts. If dot really is the settled BRC-100/overlay convention, 305 needs a context carve-out — David should arbitrate.
  2. Sigma BRC77 address binding (@shruggr) — 304 §4.2 requires verifiers to bind the BRC-77 envelope's embedded identity key to the address field. The sigma library doesn't do this check — spec intentionally leads implementation. Filed as opldotdev/sigma#11.
  3. Sigma data-hash fallback dropped (@shruggr) — 304 §3.2. David's draft had "no separator found ⇒ hash entire script"; 304 drops it (malformed ⇒ invalid) because the placement rules make a separatorless SIGMA non-conformant — and the TS library's actual degenerate-case behavior (chunks.slice(0, i-1) at chunk 0) matches neither the fallback nor "entire script". Restore or keep strict?
  4. Sigma field 2 tightened from algorithm-defined signer to always-P2PKH address (both algorithms), matching the sigma README and library. Closes the door on future non-address signer components — confirm.
  5. 305 bare-txid rule specs deployed 1sat-stack behavior: scan outputs in vout order, return the first output yielding parseable content (verified in loadByTxid, pkg/ordfs/ordfs.go). Sequence suffix semantics from the same source: seq ≥ 0 absolute, -1 latest, -2 origin-direct.
  6. 312 (Bitcoin Schema) contains authored-not-sourced normative decisions — the docs are examples-first, so the following are my synthesis and need Luke's author review: (a) the context pattern stated as a general rule (context <key> <key> <value> — consistent across reply/channel/bapID examples, resolving the apparent context tx tx duplication); (b) the type vocabulary table as exhaustive for the social core; (c) the latest-in-block-order rule for like/unlike & follow/unfollow state; (d) attachments spec'd with the AIP prefix — the docs' attachment example omits it (| BITCOIN_ECDSA ...), which reads as a docs typo.
  7. 311 (BAP) scope — core only; PROVISIONAL DID/Metanet sections excluded per upstream's own TODO. Confirm exclusion is wanted, and that condensing the PROTOCOL.md prose into normative sections preserved intent (worked examples kept).
  8. 300 §3 admin format — deployed form is OP_RETURN $ <command> authenticated by the funding input (per the archived site docs); the address-prefixed form is documented separately as the embedded "Bitcom as OS" variant (§3.6). Both are real; confirm framing.
  9. 300 §1.1 — informative note on string-identified protocols (RUN run, Sigma SIGMA) adopting Bitcom conventions without address provability.
  10. 302 (AIP) preimage stated normatively for the first time: concatenated raw bytes of indexed fields under BSM, index 0 = the 0x6a opcode, implicit form covers through the pipe before the AIP prefix. Pinned from go-aip; confirm against bitcoinfiles-sdk.
  11. 301 b:// framingb:// defined on B's own terms; the bit:// equivalence is an informative note attributed to the Bitcom docs (equivalence of referent, not resolution mechanism).
  12. 313 (Group Messaging) needs adversarial cryptographic review before any implementation carries real conversations — the design is deliberately non-novel (Megolm/Sender Keys re-parameterized onto secp256k1, AES-256-GCM aligned with BRC-78), but no formal crypto-review path exists in the BRC process; a reviewer should be named. Key decisions to check: deterministic HKDF-derived GCM IV justified by single-use ratchet indices (§4.3); ECDSA compact sigs over Schnorr (tooling); random session signing keys identity-bound via signed session shares rather than BRC-42 derivation; BRC-146 composition rekeying at effectiveFrom for rule changes vs immediately for bans (§9.4); mandatory O(n²) rekey-on-remove with a 7-day ceiling.
  13. Reference repairs to third-party docs (typo-level, verify welcome): dead BRC-190→146 links fixed in 0169/0218 (902d01f); BRC-146 internal defects fixed — §7.2 ban pointer 4.5→4.6, §2.1 table missing timelock (0e205f4).
  14. 308 (Collections) P1Sat references — the discarded 302/303 references are now name-only "specified separately (planned)"; wallet-filing section retained as informative. Reconnect with links when the P1Sat docs are rewritten.

Deferred / back-burner

bitproto (no public source found — needs a pointer), D:// (bitcoineler/D — attribution "SH + @rangelWulff" unresolved), C:// (wire mechanics need a source dive), 21e8 (Dean Little's script puzzle — needs original opcode exposition). Bitcoin Schema's remaining families (generic, functions, registry, tokens pages) are future follow-ons to 312.

Verification

Index wiring verified: all 13 documents present in README.md, SUMMARY.md, and their category READMEs; all tables numerically ordered; all relative cross-links resolve; no numbered forward references (grep-verified).

Test vectors note

304's test vectors are byte-identical to David's original BRC-307 draft (the signed prefix encodes app=brc307; the bytes are signed and must not change).

rohenaz and others added 7 commits August 6, 2026 12:10
…onventions

Documents _unwriter's Bitcom conventions (address-as-prefix protocol
namespace, $ admin mode, | pipeline, on-chain schema publication,
bit:// URIs) as a BRC, per the BRC-13 precedent for crediting original
authors of prior work.

Placeholder number 310 pending lowest-available-first assignment at
merge (upstream PR bsv-blockchain#200 holds 300-307).

Co-authored-by: _unwriter <unwriter@users.noreply.github.com>
The deployed admin wire format is 'OP_RETURN $ <command> ...' with the
account identified and authenticated by the funding input address; the
address-prefixed form is the later embedded 'Bitcom as OS' variant.
Adds useradd as the on-chain registration command, the {{var}}/${var}
template variance note, Block 566476 motivation, and the archived site
docs reference.

Source: https://web.archive.org/web/20211209081820/https://bitcom.bitdb.network/#/
Documents deployed practice of protocols (RUN, Sigma) that adopt the
Bitcom data format and pipeline conventions with a plain UTF-8 string
identifier instead of an address, forfeiting key-based ownership and
admin capabilities.
MAP (311) is specified from the v2 protocol (full command set: SET,
ADD, DELETE, REMOVE, SELECT, CLEAR, ::: separator, multi-output
semantics). AIP (312) states the signing preimage normatively:
concatenated raw bytes of the indexed fields under Bitcoin Signed
Message, index 0 being the OP_RETURN opcode. Sigma (313) covers both
BSM and BRC77 algorithms, message construction from input outpoint
and script prefix hashes, multi-instance rules, and test vectors.

All four wave documents carry Open Protocol Labs attribution with
authors and contributors. Placeholder numbers 310-313 pending
lowest-available-first assignment at merge.

Co-authored-by: David Case <dcase@opl.dev>
Specifies _unwriter's B protocol: raw binary data with IANA media
type, encoding, and optional filename under the Bitcom-generated
prefix, the b:// txid reference scheme as shorthand for bit://
routing, producer-only pipeline composition, and explicit non-goals.

Co-authored-by: _unwriter <unwriter@users.noreply.github.com>
The equivalence of bit://19Hxig.../<txid> and b://<txid> is a claim
of the Bitcom documentation, not of B's own spec, and it concerns the
referent, not the resolution mechanism. BRC-314 now defines b:// on
B's own terms with the equivalence as an attributed informative note;
BRC-310 quotes the source and notes shorthand schemes may resolve via
dedicated gateways independent of route advertisements.
Renumbers the first five documents into a dependency-ordered block
(300 Bitcom, 301 B, 302 AIP, 303 MAP, 304 Sigma) so every numbered
cross-reference points to an earlier document; forward mentions are
name-only. Adds:

- BRC-305 Outpoint Content Addressing (canonical txid_vout, bare-txid
  first-parseable-content rule, :seq suffix, multi-OP_RETURN history)
- BRC-306-310: the 1Sat series (origin tracking, inscription
  envelopes, collections, BSV-21 JSON, BSV-21 binary), ported from
  the closed upstream PR bsv-blockchain#200 drafts with OPL attribution
- BRC-311 BAP core protocol (PROVISIONAL DID/Metanet excluded)
- BRC-312 Bitcoin Schema social data types

All indices rewired and verified complete, ordered, and link-checked.

Co-authored-by: David Case <dcase@opl.dev>
@rohenaz rohenaz changed the title First wave: Bitcom (310), MAP (311), AIP (312), Sigma (313) OPL protocol corpus: Bitcom, B, AIP, MAP, Sigma, Addressing, 1Sat series, BAP, Bitcoin Schema (300-312) Aug 6, 2026
rohenaz added 7 commits August 6, 2026 14:30
Contributors on each document are the OPL team members not listed as
authors, in standard order. Adds David Case where missing (300-303,
311, 312), adds Luke Rohenaz to the David-solo docs (309, 310),
corrects MrZ to Austin Rappaport (312), and keeps Attila Aros on BAP
only via the original spec's own thanks.
Removes editorial role annotations; detailed contribution notes remain
only where ported from the source specifications.
…RC-303

Prior-art credit per the MAP v2 source's own Memo comparison section:
Motivation paragraph and References entry in the Bitcoin Schema BRC,
References entry in the MAP BRC.
apps/0146.md was renumbered from 190 at merge (1e03bfc) but BRC-169
and BRC-218 still referenced BRC-190 with links to a nonexistent
0190.md.
Section 7.2 pointed to 4.5 (timelock) for the ban condition defined
in 4.6 (the closing summary already said 4.6); the 2.1 field table
omitted timelock from the condition-object row despite defining its
shape below.
… Derivation

Two profiles: pairwise fan-out over BRC-78 (required baseline) and
Megolm-pattern sender keys re-parameterized onto secp256k1 with
AES-256-GCM aligned to BRC-78 (recommended at scale). Composes with
BRC-33/169 transport and optionally BRC-146 rooms: bans rekey
immediately, rule-change exclusions rekey at effectiveFrom. Honest
security considerations per the Megolm limitations and the ASIACRYPT
2023 sender-keys analysis. Fills the confidentiality gap BRC-146
section 9 explicitly delegates.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant