BBQr to publicznie opisany format transportowy Coinkite. Każdy QR zaczyna się od B$ i krótkiego nagłówka z kodowaniem, typem pliku, łączną liczbą i indeksem; dalej znajduje się segment danych jako HEX, Base32 albo ustalony Zlib plus Base32.
BBQr rozwiązuje sytuacje, gdy PSBT, podpisana transakcja lub inny plik nie mieści się w jednym rozsądnie czytelnym kodzie QR. Nadawca dzieli dane na serię klatek, a odbiorca składa je ponownie, więc plik przekracza air gap bez kabla, karty ani połączenia sieciowego. Format sam niczego nie podpisuje, nie nadaje do sieci Bitcoin i nie jest częścią konsensusu. [1]
Każda klatka zaczyna się ośmioznakowym nagłówkiem. Prefiks B$ oznacza BBQr, następny znak wybiera kodowanie, kolejny typ treści, dwie pozycje base36 podają łączną liczbę klatek, a ostatnie dwie indeks bieżącej. B$HP0301 oznacza HEX, PSBT, łącznie 3 klatki i część o indeksie 1. Wszystkie klatki serii muszą podawać to samo kodowanie, typ i liczbę. [1]
QR używa trybu alfanumerycznego z ograniczonym zbiorem wielkich znaków. H zapisuje HEX, 2 używa Base32 bez znaku =, a Z najpierw kompresuje cały plik przez Zlib z wbits=10 bez nagłówka pliku, potem używa Base32. Kompresja może zmniejszyć PSBT, lecz niewiele daje dla hashy, UTXO i danych o wysokiej entropii; encoder powinien wtedy wybrać mniejszą wersję nieskompresowaną. [1]
Klatki można czytać w dowolnej kolejności dzięki indeksowi w nagłówku. Nie jest to jednak fountain code: odbiorca musi uzyskać wszystkie N części, a brakującej klatki nie da się odtworzyć z pozostałych. QR ma własne wykrywanie i korekcję błędów, dlatego specyfikacja nie dodaje osobnego checksum serii; dyskusja projektu dotyczyła kompromisu między prostotą, narzutem i odzyskiwaniem pominiętych klatek. [4]
Dokumentacja określa BBQr jako szeroko wdrożony i na 27 lipca 2026 potwierdzała wydany publiczny kod w kilku signerach, portfelach mobilnych i koordynatorach, w tym COLDCARD Q, Sparrow Wallet, Nunchuk Desktop, BTCPay Server, Krux i BlueWallet. Obsługa nie musi być dwukierunkowa: SeedSigner w wersji 0.8.7 figurował tylko jako decoder. [2]
Dwie pozycje base36 pozwalają na najwyżej 1295 części, czyli ZZ. Dla wersji QR 40 specyfikacja podaje 4296 znaków alfanumerycznych i teoretyczny nieskompresowany limit 2 776 480 bajtów dla HEX albo 3 470 600 bajtów dla Base32. Implementacja może ograniczać bardziej: COLDCARD Q przyjmuje pliki do 2 MiB i wyświetla postęp według liczby części. [6]
Znak typu P oznacza PSBT, a T gotową transakcję Bitcoin; J, C, U, B i X obejmują JSON, CBOR, tekst UTF-8, ogólne dane binarne i wykonywalne. Typ pomaga wybrać parser, ale nie dowodzi poprawności ani bezpieczeństwa treści. Portfel musi odrzucić nieoczekiwany typ, a signer przed podpisaniem niezależnie pokazać wyjścia, kwoty i opłatę. [5]
Implementację należy sprawdzić testem round-trip wobec opublikowanego repozytorium i danych: zakodować ten sam plik, przetasować klatki, odczytać je i porównać wynik bajt po bajcie. Osobno testuje się brakującą i uszkodzoną klatkę, H, 2 i Z, przypadek jednej klatki oraz granice pamięci. Prawdziwego PSBT ani innych danych wrażliwych nie wolno wkładać do publicznego generatora WWW. [3]
Pełniejszy obraz uzyskasz, czytając to hasło razem z PSBT, Transakcja, Hardware Wallet, Air-gapped Wallet, Multisig, Output Descriptor.
01Czy BBQr to to samo co SeedQR?+
Nie. SeedQR reprezentuje sekret odzyskiwania portfela BIP39 i wymaga ochrony jak klucz prywatny. BBQr jest ogólną obudową transportową dla podzielonych danych, często PSBT lub podpisanej transakcji. Może nieść treść wrażliwą, ale nazwa nie oznacza seedu i nie szyfruje danych.
02Czy transfer air-gapped przez BBQr czyni transakcję bezpieczną?+
Nie. Kanał optyczny usuwa jedną drogę sieciową lub kablową, ale złośliwy koordynator nadal może przygotować PSBT z obcym wyjściem, złą opłatą lub nieoczekiwanymi wejściami. Na zaufanym signerze trzeba sprawdzić adresy, kwoty, opłatę i politykę portfela, a potem nadać dokładnie sprawdzoną transakcję.