BitLedger v3.0 · BitPads v2.0 · Active Protocol Development
0
bits — a complete double-entry transaction

Binary-native financial transmission
engineered for the most demanding conditions on Earth, and beyond.

BitLedger encodes a full double-entry accounting record — value, direction, account pair, settlement status, and three-layer error detection — in exactly 40 bits. BitPads wraps that core for any transmission context, from a one-byte heartbeat to a 44-byte fully annotated civilisational record.

Scroll

5,000 years of signal · The arc of human record-keeping

c. 3000 BCE Sumerian Clay Tokens

Minimal marks. Rich shared context. The accounting principle that BitPads binary pictography implements in nibble streams.

1870 Baudot Telegraph Code

Five bits. Thirty-two signals. BitPads Enhancement Grammar reclaims the 3 upper bits left structurally available for 155 years.

1960s Mission Control Telemetry

Deep space demanded structured binary. Every bit earned its place when bandwidth was measured in bits per second across millions of miles.

2025 BitLedger Protocol v3

40 bits. The mathematical minimum for a verifiable double-entry record. Deployable from a microcontroller to a Mars colony supply chain.

Every bit earns
its position.

BitLedger is a binary-native protocol designed from first principles at the mathematical definition of a double-entry transaction — not by compressing an existing format. The result: 5 bytes that enforce accounting integrity at the wire level.

40 bits

A complete double-entry record — value, account pair, direction, status, rounding, and three-layer error detection.

512 bytes

100 transactions. No schema lookup. No decompression step. Fixed bit positions decode directly.

≈$33.5Q

Maximum expressible value in a single record — approximately 305× global GDP. Exact integers only. No floating point.

Layer 3 — The 40-bit transaction record

Multiplicand (bits 1–17)
Multiplier / Quantity (18–25)
Value Flags (26–32)
Account Pair (33–36)
BL Control (37–40)
CRC‑15
Session Header Integrity

Polynomial x¹⁵ + x + 1 over the full 49-bit Layer 1 payload. Covers sender identity, domain, permissions. 100% burst-error detection up to 15 bits.

×2
Cross-Layer Flag Mirroring

Direction (bit 29) must equal bit 37. Status (bit 30) must equal bit 38. A single cosmic-ray bit-flip in either location is immediately detectable.

∑=0
Conservation Invariant

For every batch, the sum of all signed flows equals zero. Catches phantom records, duplicates, and missing entries that byte-level CRCs cannot.

Build a 40-bit record.

Enter transaction parameters and press Create to watch the 40-bit record assemble field by field — Multiplicand and Multiplier split, flags packed, account pair encoded, cross-layer mirror bits set. The actual BitLedger encoding algorithm, running in your browser.

Layer 3 — 40-bit Transaction Record

Multiplicand 1–17
Multiplier 18–25
Flags 26–32
Pair 33–36
BL 37–40
Press Create to encode a record

One byte to forty-four.
Same architecture throughout.

BitPads is the outermost layer of the protocol family. A single Meta byte declares frame mode, content type, and enhancement state before the receiver reads a single payload byte. Complexity attaches only when needed — the 1-byte heartbeat and the 44-byte annotated record share the same framing grammar.

Size
Frame Type
Contents
1 byte
Pure Signal
Heartbeat · ACK · Status flag
4 bytes
Anonymous Wave
Session-context value, no identity overhead
13–29 bytes
Full Record
Identity + value + optional time, task, note
22–28+ bytes
BitLedger Frame
Full double-entry record + CRC-15 + batch context

The C0 Enhancement Grammar reclaims 3 upper bits of Unicode's 32 control characters — structurally available since Baudot's 1870 telegraph codes and never used. These become a universal flag matrix: Priority · Acknowledge · Continuation. Thirteen signal slot positions span the full transmission structure. Binary pictography: four bits per symbol through a shared codebook — the Sumerian accounting principle implemented in binary at sub-byte precision.

Legacy-compatible — a 1960s teleprinter receiving the same byte stream sees standard C0 controls throughout.

The same algebra
governs everything.

Every system that moves resources between entities is governed by a conservation law whether it knows it or not. Money conserved. Mass conserved. Energy conserved. Data conserved. BitLedger encodes that invariant at the wire level — not as a rule the application must enforce, but as a structural property of the encoding itself.

Double-Entry Accounting
∑Dr = ∑Cr
=
Kirchhoff's Current Law
∑I = 0
=
Mass Balance
∑min = ∑mout
Financial Records

Double-entry ledger semantics enforced at the encoding level. Debit and credit accounts inferred from a 4-bit pair code.

USD 1,247.50 · Op Expense / Accounts Payable

Deep Space Ops

Propellant mass, power obligations, and mission telemetry — same wire format as financial records. Survives cosmic-ray bit flips.

14.7 kg propellant · Thruster #3 / Tank Reserve

Manufacturing

Material flows, work-in-process debts, just-in-time inventory. Conservation invariant enforced: every unit leaving a station must arrive.

240 units · Station A / Station B WIP

IoT Networks

Sensor data packets, battery drain, bandwidth usage as conserved quantities. 4-byte anonymous Wave for minimal-overhead reporting.

12.4 Wh · Node 007 / Grid Sink

In Universal Domain mode, the 4-bit account pair field stops being a chart-of-accounts selector and becomes a relationship archetype matrix — 16 canonical flow types between any two entities in any man-made system. The wire format is byte-for-byte identical. Only the semantic interpretation changes.

0000
Source → Sink
Fuel tank → thruster · Battery → payload
0001
Parent → Child
Mission control → rover subsystem
0010
Debtor → Creditor
Supplier A owes component to satellite B
0011
Mutual Exchange
Energy swap between two satellites
0100
Generation
Solar panel → power bus
0101
Consumption
Thruster burn · Processor load
0110
Loss / Dissipation
Heat loss · Signal attenuation
0111
Transformation
Chemical → kinetic energy
1000
Loan / Lend
Station lends bandwidth to relay
1001
Distribution
Hub → N nodes (one-to-many)
1010
Aggregation
N sensors → central collector
1011
Peer Transfer
Node-to-node, same level
1100
Obligation
Service hours owed between nodes
1101
Reserve / Buffer
Emergency propellant held aside
1110
Correction
Inference suspended — reconciliation entry
1111
Continuation
Multi-leg compound event — links to preceding record

The C0 Enhancement Grammar extends this further with binary pictography: when a stream declares a domain identity, the receiver loads a shared codebook and interprets compact nibble sequences as full semantic events. Four bits per symbol. Sixteen concepts per codebook. The domain field in Layer 1 selects which codebook is active. Extension bytes can chain codebook references for richer ontologies without changing the wire format.

Domain bits 00
Financial
Account pairs · Debit/Credit · Settlement status · Currency flows
Domain bits 01
Engineering
Flow archetypes · Physical quantities · Conservation laws · System states
Domain bits 10–11
Hybrid / Custom
Mission-specific codebook negotiated at session open. Pre-shared tables expand 16 codes to 256+ via extension bytes.

The Sumerian Codebook — c. 3000 BCE

Sumerian clay token accounting worked on exactly this principle: a small impressed mark on a clay tablet carried minimal information — but its meaning expanded dramatically through the shared context both parties held. The token for grain looked like a cone; the token for sheep, a circle. The marks were minimal. The codebook was in the reader's knowledge.

"Four bits per symbol. Sixteen concepts per codebook. The Sumerian accounting principle, implemented in binary at sub-byte precision."

Five thousand years later, BitPads binary pictography is the same architecture at a different scale: a shared codebook declared at session open, compact nibble streams at transmission time, rich semantic events at the receiver. The mark is still minimal. The meaning still lives in the shared context.

The architecture,
layer by layer.

Every field at every bit position, from the session header to the 40-bit record. Expand any layer to see the full bit specification drawn directly from the protocol documents.

BitsFieldDescription
1SOH MarkerAlways 1. Self-framing — the receiver knows a record begins without a preamble or sync sequence.
2–4Protocol Version000–111 (8 versions). Allows future protocol revisions without breaking existing decoders.
5–8Core PermissionsRead · Write · Correct · Represent. Four independent capability flags for the sender's authorisation level.
9–12Session DefaultsBit 9: Split order default. Bit 10: Opposing account explicit. Bit 11: Compound mode active (allows 1111 continuation markers). Bit 12: BitLedger block optional.
13–44Sender ID32-bit integer. Up to 4,294,967,295 unique senders. In a three-level identity session: 255 networks × 255 systems × 65,535 nodes.
45–49Sub-Entity ID5-bit (31 sub-divisions). Identifies branches, departments, or satellite sub-nodes within the sender identity.
50–64CRC-15 ChecksumComputed over bits 1–49 using polynomial x¹⁵ + x + 1. 100% detection of all burst errors up to 15 bits. Embedded during assembly — the receiver validates on arrival.
CRC-15 binding is absolute: any change to sender ID, domain, permissions, or sub-entity invalidates the checksum.
BitsFieldDescription
1–2Transmission Type01=pre-converted · 10=copy · 11=represented. Code 00 is INVALID — ensures the first byte is never all zeros.
3–9Scaling Factor7-bit index (×1 to ×1,000,000,000). Extends the 25-bit value range to cover any denomination. All records in the batch inherit this default.
10–13Optimal Split4-bit. Default 8. Governs the A/r decomposition in N = A × 2^S + r. A control record can update S mid-batch.
14–16Decimal Position000=integer · 010=2 decimal places · 100=4 places · 110=6 places. Applied as divisor after scaling.
17–18Enquiry / ACK BellsBit 17: request ACK before next batch. Bit 18: confirm previous batch received. Handshake signalling without a separate control record.
19–30SeparatorsGroup (4-bit, 15 groups) · Record (5-bit, compound group identity) · File (3-bit, 7 files). Hierarchical context delimiters — mission phase, entity group, logical boundary.
31–35Entity ID5-bit. Sub-entity within the session — branch, department, satellite node.
36–41Currency Code6-bit (64 currencies, 0=session default). Seeded 32-currency table built-in; per-record currency override available via extension byte.
42–45Rounding Balance4-bit sign-magnitude. Tracks cumulative rounding across the batch. 0000=exactly balanced. 1000=ESCAPE, see batch-close control record.
46–47Compound Prefix00=no compounds · 01=≤3 groups · 10=≤7 groups · 11=unlimited. Must be non-zero for 1111 continuation markers to be valid.
48ReservedAlways 1. Ensures the last byte of the header is never all zeros.
Short-form: when all Layer 2 values equal session defaults, replace the 48-bit header with one control byte: 0 110 1111
BitsFieldDescription
1–17MultiplicandUpper value bits. At default Optimal Split of 8: A = floor(N / 256). Carries the bulk of the value magnitude.
18–25Multiplier / QuantityLower value bits. r = N mod 256. When bit 32=1 (Quantity Present), this field carries the item count; Multiplicand carries unit price.
26–27Rounding Signal00=exact · 10=rounded down · 11=rounded up · 01=protocol error (reject record). Rounding direction is chosen by account type at encode time — never silent.
28Split Order0=follow session default · 1=reverse. Allows the Multiplier-first convention for quantity×price records without a new batch header.
29Direction (Set A)0=In · 1=Out. MUST equal bit 37 — cross-layer validation catches single-bit corruption immediately.
30Status (Set A)0=Paid / Settled · 1=Debt / Accrued. MUST equal bit 38.
31Debit/Credit0=Credit · 1=Debit. Combined with Account Pair and Direction to fully specify the journal entry without ambiguity.
32Quantity Present0=flat value · 1=split active (Price × Quantity). When set, Optimal Split is always taken from session state regardless of bit 27.
33–36Account Pair4-bit code. 16 canonical account pair relationships. See Account Pairs panel below.
37Direction (BL)Mirror of bit 29. Independent error detection — a cosmic-ray flip in either copy is immediately detected.
38Status (BL)Mirror of bit 30. Same cross-layer validation principle.
39Completeness0=Full record · 1=Partial, continuation follows. Must be 1 before a 1111 compound continuation marker.
40Extension Flag0=record complete · 1=extension byte follows. Extension bytes are chainable — bit 8 of each triggers the next.

The 4-bit account pair field encodes the fundamental relationship between the two sides of a double-entry transaction. In financial mode, these are chart-of-accounts pairs. In Universal Domain mode, these become the 16 canonical relationship archetypes for any flow between entities.

0000
Op Expense / Asset
0001
Op Expense / Liability
0010
Non-Op Expense / Asset
0011
Non-Op Expense / Liability
0100
Op Income / Asset
0101
Op Income / Liability
0110
Non-Op Income / Asset
0111
Non-Op Income / Liability
1000
Asset / Liability
1001
Asset / Equity
1010
Liability / Equity
1011
Asset / Asset
1100
Liability / Liability
1101
Equity / Equity
1110
Correction / Netting
1111
Compound Continuation
1111 is only valid when Layer 1 bit 11 (compound mode) = 1 AND Layer 2 compound prefix ≠ 00. Either alone is insufficient.
N = A × 2S + r  ·  Real Value = (N × SF) / 10D
VariableSourceMeaning
SOptimal Split (Layer 2)Default 8. Governs the decomposition point. A control record can update S mid-batch without restarting the session.
AMultiplicand (bits 1–17)floor(N / 2^S). The upper portion of the integer value.
rMultiplier (bits 18–25)N mod 2^S. The lower remainder. Together A and r reconstruct N exactly — no gaps from 0 to 33,554,431.
SFScaling Factor (Layer 2)×1 to ×1,000,000,000. Extends the value range to cover any denomination from cents to quadrillions.
DDecimal Position (Layer 2)0, 2, 4, or 6 decimal places. Applied as a divisor after scaling.
$4.53 · SF=×1 · D=2
N=453 · A=1 · r=197
$2,450,000 · SF=×100 · D=2
N=24,500 · A=95 · r=180
24 units @ $2.49 · bit32=1
A=249 (price) · r=24 (qty) · Real=$59.76
14.7 kg propellant · SF=×1 · D=2
N=1470 · A=5 · r=190 (Universal Domain)
0 [TTT] [PPPP]  ·  type · payload
Type (TTT)FunctionPayload
000Scaling Factor Change0000–1001: SF index. 1111: escape — next byte carries full 7-bit SF.
001Currency Change0000–1110: currency index. 1111: escape — next byte carries 6-bit code.
010Batch ClosePayload: record count 0–14. 1111: escape — next byte carries full count.
011ACK / NACKBit 5=0 ACK · Bit 5=1 NACK. Bits 6–8: batch sequence reference 0–7.
100Compound Group OpenPayload: record count 1–14 expected in the compound group.
101Optimal Split UpdatePayload: new S value 0–15. Reverts to Layer 2 default at batch close.
110Layer 2 Short-FormPayload 1111: all Layer 2 values equal session defaults. Replaces 48-bit header with 1 byte.
111ReservedTransmit payload as 1111.

The C0 Enhancement Grammar reclaims the 3 upper bits of Unicode's 32 control characters — structurally available since Baudot's 1870 codes and never used in 155 years of protocol evolution. These 3 bits become a universal flag matrix carried on any agreed C0 control byte.

Bits (upper 3)FlagMeaning when set
bit 7PriorityThis transmission or signal requires expedited handling at the receiver.
bit 6Acknowledge RequestReceiver must confirm receipt of this slot before processing continues.
bit 5ContinuationThe signal or event at this slot continues into the next declared slot position.

13 named signal slot positions span the full BitPads transmission structure:

P0 Session open P1 Batch open P2 Record open P3 Meta boundary P4 Before value P5 After value P6 After time P7 After task P8 After note P9–P12 Stream/Wave
Legacy compatibility: a teleprinter receiving the same byte stream sees standard C0 controls throughout. BEL rings, FS separates files, EOT closes. A BitPads receiver reads the 3 enhancement bits and decodes rich typed events from the same stream.

Written in x86-64 NASM.
No C runtime. Direct syscalls.

The BitPads v0 CLI is implemented entirely in hand-assembled x86-64 NASM assembly for macOS — no C runtime linked, no dependencies, direct kernel syscalls via syscall. A 256-byte context block is populated from command-line flags and routed to layer builders. Each builder writes to a stack-allocated output buffer. No heap. No post-processing.

x86-64 NASM · macOS Mach-O 64-bit · Direct BSD syscalls · Stack-only allocation
bitpads · babbworks/bitpads · macOS x86-64
Pure Signal — 1 byte · The minimum possible BitPads frame
./bitpads --type signal --out /tmp/t.bp
00000000: 00 .

A single Meta Byte 1 = 0x00. No Layer 1 header, no payload. The entire meaning lives in session context. One byte from heartbeat to status report.

Anonymous Wave — 4 bytes · Session-context value, no identity overhead
./bitpads --type wave --value 255 --tier 1 --out /tmp/t.bp
00000000: 0002 06ff .... Meta1=0x00 (Wave) · Meta2=0x02 (Setup present) · Setup=0x06 (Tier 1) · Value=0xFF

Wave frames carry no Layer 1 session header. The Setup Byte is auto-inserted because Tier 1 overrides the session default of Tier 3. Value 255 encodes as a single byte at Tier 1.

Record with 32-bit Sender ID — 10 bytes
./bitpads --type record --sender 0xDEADBEEF --out /tmp/t.bp
00000000: 800d eadb eef0 620e 8000 ......b... Layer 1 (8B) + Meta1 + Meta2 · Sender 0xDEADBEEF packed bits 13–44 · CRC-15 = 0x620E

The 32-bit sender ID is never stored contiguously — it spans bytes 1–5, interleaved with domain and permission fields. The CRC-15 covers the full 49-bit Layer 1 payload, binding sender identity to the checksum.

Record with Note Block — 16 bytes
./bitpads --type record --sender 0x1 --note "hello" --out /tmp/t.bp
00000000: 8000 0000 0010 00e8 8100 0568 656c 6c6f ...........hello Meta1=0x81 (Record+Note) · Length byte 0x05 · 5-byte inline UTF-8 payload

The Note block is always the last component. A length byte precedes the raw UTF-8 payload, capping at 63 bytes. The receiver reads Role C flags from Meta Byte 1 left-to-right (Value, Time, Task, Note) to determine what follows.

Engineering Domain · Full permissions — 10 bytes
./bitpads --type record --sender 0x42 --domain eng --perms 15 --out /tmp/t.bp
00000000: 9f00 0000 0420 3056 8000 ..... 0V.. L1 byte[0]=0x9F · SOH + domain 01 (Engineering) + perms 1111 (R/W/Correct/Proxy)

Layer 1 byte[0] packs SOH (bit 7), 2-bit domain (bits 5–4), and 4-bit permissions (bits 3–0) in a single byte. Engineering domain = 01 binary. Permissions are a bitfield — each bit an independent capability grant.

All Four Optional Blocks — 20 bytes
./bitpads --type record --sender 0x1 --value 999 --tier 2 --time 50 --task-code 3 --note "test" --out /tmp/t.bp
00000000: 8000 0000 0010 00e8 8f06 4603 e732 0604 ..........F..2.. 00000010: 7465 7374 test Meta1=0x8F (all Role C flags) · Setup+T1S · Value 999 (Tier 2) · Time 50 · Task code 3 · Note "test"

Assembly sequence is fixed: Setup Byte → value → time → task → note. The receiver uses Meta Byte 1 as a map and Meta Byte 2 for encoding overrides, advancing through fixed-width blocks in declaration order. No inline type or length markers between components.

Record + Layer 2 Batch Header — 16 bytes
./bitpads --type record --sender 0x1 --layer2 --out /tmp/t.bp
00000000: 8000 0000 0010 00e8 4042 0000 0001 8000 ........@B...... Layer 2 (6B): tx type 0x40 (pre-converted) · default SF/DP · reserved bit 0x01

Layer 2 is inserted between Layer 1 and the meta bytes. Even a bare --layer2 produces a fully populated 6-byte structure because all fields have defined defaults. Transmission type 0x00 is a protocol error — the default is 0x40.

Basic Double-Entry — 15 bytes
./bitpads --type ledger --sender 0x1 --acct 1 --dir 0 --out /tmp/t.bp
00000000: 8000 0000 0010 00e8 0000 0000 1080 00 ............... Layer 1 (8B) + Meta1 + Meta2 + Layer 3 (5B) · Account pair 1 · Direction 0 (In)

Layer 3 adds the 5-byte double-entry record after the meta bytes. Account pair 1 = Debtor/Creditor. The frame type in Layer 1 tells the receiver to expect Layer 3. Meta bytes still govern optional blocks (value, time, task, note) that can follow.

Compound Continuation Frame — 21 bytes · Account pair 1111
./bitpads --type ledger --sender 0x1 --layer2 --compound --compound-max unlim --acct 15 --dir 0 --out /tmp/t.bp
00000000: 8000 0000 0010 00e8 4042 0000 0031 0000 ........@B...1.. 00000010: 0000 f080 00 ..... Layer 2 byte[5]=0x31 · compound prefix=11 (unlimited) · Account pair 0xF (1111) = continuation marker

Account pair 1111 is the protocol join marker — exclusively for compound continuation. Valid only when Layer 1 bit 11 (compound mode) = 1 AND Layer 2 compound prefix ≠ 00. Either condition alone is insufficient. The receiver links this record to its predecessor with the Completeness bit as the initiating signal.

Telemetry Heartbeat — 3 bytes
./bitpads --type telem --tel-type heartbeat --tel-data 1 --out /tmp/t.bp
00000000: 1e00 a1 ... Meta1=0x1E · category 14 (Telegraph) · telegraph byte 0xA1 = heartbeat (0xA0) + seq 1

The telem shorthand auto-sets domain=Engineering and category=14 (Telegraph Emulation). Telegraph byte packs message type in upper 3 bits and inline payload in lower 5. Heartbeat type = bits[7:5]=101. No Layer 1 header — 3-byte total.

Telemetry Status ERR — 3 bytes
./bitpads --type telem --tel-type status --tel-data 2 --out /tmp/t.bp
00000000: 1e00 02 ... Telegraph byte 0x02 · status type bits[7:5]=000 · code 2 = ERR

All telegraph messages share the same 3-byte frame layout. The only difference is the telegraph byte. Status type contributes 0x00 to bits[7:5]; code 2 fills the lower 5 bits. Legacy hardware receiving this stream sees standard C0 controls throughout — BEL rings, EOT closes.

Priority Alert — 3 bytes
./bitpads --type wave --category 14 --tel-type priority --tel-data 15 --out /tmp/t.bp
00000000: 1e00 cf ... Priority type bits[7:5]=110 = 0xC0 · escalation code 15 = 0x0F → 0xCF

Same result as using --type telem. The distinction is at the CLI level only. Category 14 in Meta Byte 1 activates Role B mode — the receiver treats the next byte as a telegraph header regardless of which path generated it.

C0 Enhancement · Signal Slot P4 — 14 bytes
./bitpads --type record --sender 0x1 --enhance --slot-p4 0xAB --value 10 --tier 1 --out /tmp/t.bp
00000000: 8010 0000 0010 0768 8803 878b 060a .......h...... L1 byte[1]=0x10 (Enhancement Flag) · Meta2=0x03 (Setup+Slots) · SSP=0x87 · Signal 0xAB at P4 · Setup 0x06 · Value 10

Enhancement Flag in Layer 1 activates C0 grammar for the session. Meta Byte 2 bit[0] signals that a Signal Slot Presence byte (SSP) follows. SSP 0x87 declares P4 active — it fires immediately before the value block. Assembly order: meta pair → SSP → P4 signal → Setup Byte → value. Position is absolute; skipping a declared slot is a protocol violation.

Compact Command · Class Configure — 4 bytes
./bitpads --type wave --category 12 --cmd-class 2 --cmd-params 1 --cmd-p1 0xFF --out /tmp/t.bp
00000000: 1c00 24ff ..$. Meta1=0x1C (category 0xC=1100) · command byte 0x24 = class Configure(0x20) + 1 param(0x04) · param 0xFF

Category 12 activates the Compact Command sub-protocol. The command byte packs class (upper nibble) and parameter count code (lower nibble). Class 2 = Configure → 0x20. Count 1 → 0x04. Parameter bytes follow in declaration order. No Setup Byte or value encoding applies — the compact command payload is entirely self-described.

Industry Context

The reduction is structural,
not compressive.

No decompression step. No schema lookup. No length-prefixed string parsing. The decoder reads fixed bit positions and the record is complete. On a link measured in bits per second, this matters enormously.

BitLedger
~512 B
100 txns
ISO 8583
~3 KB
~6×
CSV
~15 KB
~30×
JSON
~80 KB
~156×
XML/SOAP
200 KB+
~400×

vs. ISO 8583

Nearest binary peer. BitLedger adds native double-entry account-pair semantics, compound continuation markers, session-layer CRC, and cross-domain capability.

vs. NACHA / ISO 20022

Strong double-entry semantics but text-based or XML by default. No per-record CRC-15. Designed for nightly batch settlement, not real-time low-bandwidth links.

vs. TigerBeetle / Protobuf

Storage engines and general serialisation, not transmission protocols. TigerBeetle's Transfer record is 128 bytes. BitLedger's is 5 — orders of magnitude leaner for constrained links.

Read the specification.

Five protocol documents. Every wire format decision logged. Open specification under active development by Babb Works Inc.

"The protocol did not set out to be universal. It became universal because the conservation invariant is universal."

— BitPads README

Work with the protocol.

BitLedger and BitPads are under active development and seeking pilot partners across finance, industrial operations, and deep-space / remote communications infrastructure. If your organisation transmits high-volume records over constrained, intermittent, or high-latency links — or requires ledger-native binary encoding without the overhead of XML or JSON — we want to hear from you.

Pilot engagements cover protocol integration guidance, custom domain profile design (financial, engineering, hybrid), CLI tooling for your platform, and direct access to the specification authors.

The protocol is open specification. The CLI implementation is under active development for macOS and Linux. Python reference decoder available.

Direct enquiries:

bitpads@babb.tel

Enquiries are sent to bitpads@babb.tel · Babb Works Inc.