BBQr ist ein öffentlich dokumentiertes Transportformat von Coinkite. Jeder QR beginnt mit dem Präfix B$ und einem kurzen Header für Kodierung, Dateityp, Gesamtzahl und Index; danach folgen Daten als HEX, Base32 oder festgelegtes Zlib plus Base32.
BBQr löst Fälle, in denen eine PSBT, signierte Transaktion oder andere Datei nicht in einen vernünftig lesbaren QR-Code passt. Der Sender teilt die Daten in Frames und der Empfänger setzt sie zusammen, sodass die Datei ohne Kabel, Karte oder Netzverbindung einen Air Gap überquert. Das Format signiert und sendet nichts und gehört nicht zum Bitcoin-Konsens. [1]
Jeder Frame beginnt mit einem acht Zeichen langen Header. B$ kennzeichnet BBQr, danach folgen je ein Zeichen für Kodierung und Inhaltstyp, zwei base36-Stellen für die Framezahl und zwei für den Index. B$HP0301 bedeutet HEX, PSBT, insgesamt 3 Frames und Teilindex 1. Kodierung, Typ und Anzahl müssen in allen Frames gleich sein. [1]
Der QR nutzt den alphanumerischen Modus mit begrenzten Großzeichen. H schreibt HEX, 2 nutzt Base32 ohne =, und Z komprimiert zuerst die ganze Datei mit Zlib, wbits=10 und ohne Dateiheader und nutzt dann Base32. Kompression kann eine PSBT verkleinern, hilft bei Hashes, UTXO und hochentropischen Daten aber wenig; dann soll der Encoder die kleinere unkomprimierte Variante wählen. [1]
Frames dürfen wegen ihres Indexes in beliebiger Reihenfolge gelesen werden. Es ist aber kein Fountain Code: Alle N Teile sind nötig, ein fehlender Frame lässt sich nicht aus den anderen berechnen. QR besitzt bereits Fehlererkennung und -korrektur, daher ergänzt die Spezifikation keinen Serien-checksum; die Designdiskussion behandelt den Kompromiss zwischen Einfachheit, Overhead und Ausfalltoleranz. [4]
Die Projektdokumentation nennt BBQr weit verbreitet und bestätigte zum 27. Juli 2026 veröffentlichten Code in mehreren Signern, mobilen Wallets und Koordinatoren, darunter COLDCARD Q, Sparrow Wallet, Nunchuk Desktop, BTCPay Server, Krux und BlueWallet. Unterstützung ist nicht zwingend bidirektional: SeedSigner war für Version 0.8.7 nur als Decoder geführt. [2]
Zwei base36-Stellen erlauben höchstens 1295 Teile beziehungsweise ZZ. Für QR-Version 40 nennt die Spezifikation 4296 alphanumerische Zeichen und theoretisch unkomprimiert 2 776 480 Byte für HEX oder 3 470 600 Byte für Base32. Geräte können enger begrenzen: COLDCARD Q akzeptiert bis 2 MiB und zeigt danach den Fortschritt anhand der Teilezahl. [6]
Typ P bezeichnet eine PSBT und T eine fertige Bitcoin-Transaktion; J, C, U, B und X stehen für JSON, CBOR, UTF-8-Text, allgemeine Binär- und ausführbare Daten. Der Typ hilft beim Parser, beweist aber weder Richtigkeit noch Sicherheit. Eine Wallet muss unerwartete Typen ablehnen; der Signer muss Ausgänge, Beträge und Gebühr vor dem Signieren getrennt anzeigen. [5]
Eine Implementierung ist per Round-Trip gegen Repository und Testdaten zu prüfen: Datei kodieren, Frames mischen, erneut lesen und byteweise vergleichen. Fehlende und beschädigte Frames, H, 2 und Z, ein einzelner Frame und Speichergrenzen werden separat getestet. Eine echte PSBT oder andere sensible Daten gehören nie in einen öffentlichen Webgenerator. [3]
Für ein möglichst vollständiges Bild lies diesen Eintrag zusammen mit PSBT, Transaktion, Hardware Wallet, Air-gapped Wallet, Multisig, Output Descriptor.
01Ist BBQr dasselbe wie SeedQR?+
Nein. SeedQR stellt ein BIP39-Wiederherstellungsgeheimnis dar und ist wie ein privater Schlüssel zu behandeln. BBQr ist eine allgemeine Transporthülle für geteilte Daten, oft eine PSBT oder signierte Transaktion. Es kann sensible Inhalte tragen, doch der Formatname bedeutet nicht Seed und die Daten werden nicht verschlüsselt.
02Macht die Air-Gap-Übertragung über BBQr eine Transaktion sicher?+
Nein. Optische Übertragung entfernt einen Netzwerk- oder Kabelpfad, aber ein böswilliger Koordinator kann weiterhin eine PSBT mit fremdem Ausgang, falscher Gebühr oder unerwarteten Inputs erstellen. Adressen, Beträge, Gebühr und Wallet-Regeln sind auf einem vertrauenswürdigen Signer zu prüfen; danach muss genau diese Transaktion gesendet werden.