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.