BBQr は Coinkite が公開した転送形式である。各 QR は B$ と、符号化、ファイル種別、総数、インデックスを示す短いヘッダーで始まり、その後に HEX、Base32、または固定方式の Zlib と Base32 によるデータ片が続く。
BBQr は、PSBT、署名済みトランザクション、その他のファイルが読みやすい単一の QR に収まらない場合に使う。送信側がデータをフレームに分け、受信側が再構成するため、ケーブル、カード、ネットワーク接続なしでファイルが air gap を越えられる。この形式自体は署名もブロードキャストも行わず、Bitcoin のコンセンサスにも含まれない。 [1]
各フレームは八文字のヘッダーで始まる。B$ が BBQr を示し、続く一文字が符号化、次の一文字が内容種別、二桁の base36 が総フレーム数、最後の二桁がインデックスを表す。B$HP0301 は HEX、PSBT、全 3 フレーム、インデックス 1 のパートを意味する。符号化、種別、総数は全フレームで一致しなければならない。 [1]
QR は文字集合が限られた大文字英数字モードを使う。H は HEX、2 は = を付けない Base32、Z はファイル全体を Zlib、wbits=10、ファイルヘッダーなしで先に圧縮してから Base32 を使う。圧縮は PSBT を小さくできるが、ハッシュ、UTXO、高エントロピーのデータには効きにくい。その場合、encoder はより小さい非圧縮形式を選ぶべきである。 [1]
ヘッダーにインデックスがあるため、フレームは任意の順序で読める。ただし fountain code ではない。受信側は N 個すべてのパートを取得する必要があり、欠けたフレームを残りから計算できない。QR にはすでに誤り検出と訂正があるため、仕様は列全体の checksum を追加していない。設計議論では単純さ、オーバーヘッド、読み逃したフレームの回復を比較している。 [4]
プロジェクト文書は BBQr を広く導入済みとし、2026 年七月 27 日時点で、COLDCARD Q、Sparrow Wallet、Nunchuk Desktop、BTCPay Server、Krux、BlueWallet など複数の signer、モバイルウォレット、コーディネーターに公開済みコードがあることを確認している。対応は必ずしも双方向ではなく、SeedSigner のバージョン 0.8.7 は decoder のみと記載されていた。 [2]
二桁の base36 が表せるのは最大 1295 パート、すなわち ZZ である。QR バージョン 40 について、仕様は英数字 4296 文字、非圧縮時の理論上限を HEX で 2 776 480 バイト、Base32 で 3 470 600 バイトとしている。機器はより厳しく制限でき、COLDCARD Q は最大 2 MiB を受け付け、その後はパート数から進捗を表示する。 [6]
種別 P は PSBT、T は完成した Bitcoin トランザクションを表し、J、C、U、B、X は JSON、CBOR、UTF-8 テキスト、汎用バイナリ、実行可能データを扱う。種別は parser の選択には役立つが、正しさや安全性を証明しない。ウォレットは想定外の種別を拒否し、signer は署名前に出力、金額、手数料を個別に表示しなければならない。 [5]
実装は公開リポジトリとテストデータに対する round-trip で検証する。同じファイルを符号化し、フレームを並べ替え、再読込してバイト単位で比較する。欠落または破損したフレーム、H、2、Z、単一フレーム、メモリ限界も別々に試す。本物の PSBT や機密データを公開ウェブ生成器に入力してはならない。 [3]
理解を深めるには、この項目とあわせて次もお読みください PSBT, トランザクション, Hardware Wallet, Air-gapped Wallet, Multisig, Output Descriptor.