Adres Bitcoin to informacja potrzebna do odebrania płatności. Podpowiada portfelowi nadawcy, jak przygotować płatność, aby odbiorca mógł ją później wydać po spełnieniu odpowiednich warunków. Możesz przekazać adres płacącemu: nie jest tajnym kluczem ani kopią zapasową portfela.
Alicja chce zapłacić Bobowi. Bob otwiera w portfelu Odbierz, sprawdza adres i wysyła go jako tekst lub kod QR. Alicja wczytuje go do swojego portfela i przed wysłaniem sprawdza odbiorcę oraz kwotę. Nie musi rozumieć każdego znaku adresu: zajmuje się tym aplikacja. Na podstawie adresu portfel buduje warunek późniejszego wydania pieniędzy, zwykle podpis odpowiednim kluczem prywatnym. Transakcja zapisuje ten warunek jako skrypt o nazwie scriptPubKey. Zawiera kwotę i skrypt, a nie znany nam tekst adresu. Adres służy więc do wygodnego przekazywania danych płatności, nie jest pojemnikiem z monetami. [1] [3]
Długi adres lepiej skopiować lub zeskanować z kodu QR niż przepisywać. To jednak nie koniec sprawdzania: złośliwe oprogramowanie może podmienić adres w schowku. Porównaj cały adres z danymi uzyskanymi od odbiorcy zaufanym kanałem. Jeśli korzystasz z Hardware Wallet, sprawdź także ekran samego urządzenia. Początek i koniec nie wystarczą, bo oszukańczy adres może je naśladować. Adresy zawierają sumę kontrolną, która pomaga wykrywać literówki, lecz nie potwierdza, że poprawnie zapisany adres należy do właściwej osoby. Portfel musi też obsługiwać dany format i sieć. Mała płatność próbna może pomóc, ale nie zastępuje kontroli adresu przy kolejnym przelewie. Protokół nie pozwala po prostu anulować potwierdzonej płatności na błędny, lecz prawidłowy technicznie adres. [2] [7] [8] [18]
Przy następnym otwarciu Odbierz Bob może zobaczyć inny adres. Nie oznacza to, że jego pieniądze zniknęły. Nowy adres pomaga chronić prywatność: osoba znająca opublikowany adres może śledzić płatności na niego w blockchainie, lecz nie powinna automatycznie poznawać wszystkich wpływów portfela. Ponowne używanie adresu ułatwia takie powiązanie. Nowe adresy również nie gwarantują anonimowości; późniejsze transakcje mogą ujawnić inne związki. Adres można udostępnić do płatności, ale nie warto publikować go wszędzie bez zastanowienia. Jeden adres nie oznacza też jednej osoby: pieniędzmi może zarządzać kilka osób wspólnie albo usługa działająca dla swoich klientów. [1] [14]
Portfel zarządza kluczami, odnajduje płatności, które może wydać, i pokazuje ich sumę. Saldo może więc pochodzić z wielu adresów. Typowy HD Wallet tworzy całe rodziny kluczy ze wspólnej podstawy, więc nowy adres nie oznacza zakładania kolejnego portfela. Przy płatności aplikacja może też wysłać niewykorzystaną resztę na własny Change Address, czyli adres reszty. Same adresy nie wystarczają jednak do odzyskania portfela. Kopia zapasowa musi pozwolić odtworzyć potrzebne klucze i zasady ich użycia. Wiele portfeli korzysta z Seed Phrase, czyli słów odzyskiwania; bardziej złożone konfiguracje mogą wymagać dodatkowych informacji. Płacący nigdy nie potrzebuje tych słów ani Twoich kluczy prywatnych. [10] [14]
Kod QR jest tylko sposobem zapisu informacji. Może zawierać adres lub żądanie płatności zaczynające się od bitcoin:, z kwotą, oznaczeniem odbiorcy albo wiadomością. Ten mechanizm opisywał BIP21, a BIP321 go rozszerza. Przed zatwierdzeniem sprawdź, co portfel faktycznie odczytał. Żądania Lightning Network, takie jak invoice dla pojedynczej płatności lub offer, na podstawie którego można wielokrotnie uzyskiwać nowe invoice, korzystają z innego przebiegu płatności; Lightning Address ułatwia uzyskanie takiego żądania. Niektóre żądania oferują kilka sposobów zapłaty. Podobnie cyfrowy podpis wiadomości nie potwierdza automatycznie tożsamości: BIP322 pozwala wykazać możliwość spełnienia warunków skryptu, lecz sam nie dowodzi tożsamości prawnej ani akceptacji dowolnej faktury. [15] [16] [17]
Base58Check łączy bajt wersji z danymi określanymi jako payload. Dodaje pierwsze cztery bajty SHA256(SHA256(version || payload)) i zapisuje wynik w Base58. W mainnet 0x00 oznacza P2PKH, a 0x05 P2SH, stąd typowe początki 1 lub 3. Sieci testowe używają innych wersji. Alfabet pomija łatwe do pomylenia znaki 0, O, I i l. Ta 32-bitowa suma kontrolna wykrywa wiele literówek, lecz nie potwierdza odbiorcy. [2] [3]
Natywny zapis SegWit zawiera prefiks bc dla mainnet lub tb dla testnet, separator 1, wersję witness oraz dane w grupach po 5 bitów. Na końcu jest 6 znaków sumy kontrolnej. BIP173 wprowadził Bech32; po wykryciu słabości dotyczącej pewnych wstawień i usunięć BIP350 pozostawił Bech32 dla wersji 0, a dla wersji 1–16 wskazał Bech32m. Wszystkie litery muszą być małe albo wszystkie wielkie; nie wolno ich mieszać. Limit kodowania wynosi 90 znaków. Nawet poprawny zapis może dotyczyć niewłaściwej sieci lub nieobsługiwanej wersji. [7] [8]
P2PKH i P2WPKH wskazują 20-bajtowy HASH160 klucza publicznego. P2SH używa HASH160 skryptu redeemScript, a P2WSH SHA256 skryptu witnessScript. SegWit v0 rozpoznaje więc P2WPKH o długości 20 bajtów i P2WSH o długości 32 bajtów. P2TR według BIP341 jest inny: program wersji 1 zawiera zmodyfikowany, 32-bajtowy klucz wyjściowy Q w postaci x-only, a nie hash zwykłego klucza odbiorczego. W Q można też uwzględnić korzeń drzewa dodatkowych skryptów, co kryptograficznie wiąże klucz z tymi warunkami wydania środków. Sam adres nie ujawnia więc wszystkich sposobów wydania. [6] [9]
Pierwsze wyjścia Bitcoin często płaciły bezpośrednio na klucz publiczny. P2PKH odsunął jego ujawnienie do wydania. BIP13 i BIP16 umożliwiły przekazywanie przez P2SH hasha bardziej złożonego skryptu. BIP141 dodał wersjonowane programy witness, BIP173 Bech32, a BIP341 z BIP350 format Taproot z Bech32m. Za innym wyglądem stoją inne warunki weryfikacji. Nie „konwertuj” adresu przez ręczną zmianę prefiksu: możesz stworzyć inne lub niewydawalne wyjście. Niektóre niestandardowe skrypty i wczesne wyjścia pay-to-pubkey nie mają zwykłego adresu kanonicznego. [4] [5] [6] [7] [8] [9] [3]
HD Wallet według BIP32 wyprowadza wiele kluczy ze wspólnego korzenia. Ścieżki rozróżniają typy wyjść: BIP44 używa celu 44' dla P2PKH, BIP84 celu 84' dla P2WPKH, a BIP86 celu 86' dla P2TR z jednym kluczem. Dalej są typ monety (coin type), konto, gałąź odbiorcza lub change i indeks adresu. Sama Seed Phrase może nie określać wszystkich ścieżek, kont i reguł Multisig. Output Descriptor zachowuje też pochodzenie kluczy i konstrukcję skryptu. Odtworzenie musi odnaleźć rzeczywiste środki, nie tylko ponownie wyświetlić znajomy adres. [10] [11] [12] [13] [14]
P2PKH i P2WPKH zwykle początkowo pokazują hash klucza; przy wydaniu ujawnia się klucz publiczny. P2SH i P2WSH ujawniają użyty redeemScript lub witnessScript. Taproot zawiera zmodyfikowany klucz publiczny już w wyjściu. Key-path spend zwykle dodaje Schnorr Signature, natomiast script-path spend ujawnia wybrany skrypt, control block i ścieżkę Merkle; nieużyte gałęzie mogą zostać ukryte. Nie jest więc prawdą, że każdy adres ukrywa klucz publiczny. [6] [9]
Pełniejszy obraz uzyskasz, czytając to hasło razem z Private Key, Portfel, Change Address, Bitcoin, SegWit, Taproot. Do tego hasła prowadzą również odsyłacze z Hash, SHA-256, Cold Storage, Watch-only Wallet.
01Czy adres Bitcoin jest numerem konta?+
Nie. Adres informuje portfel nadawcy, jak przygotować płatność dla odbiorcy. Warunek jej późniejszego wydania jest zapisywany w transakcji jako scriptPubKey. Jeden portfel może zarządzać wieloma adresami; sam adres nie identyfikuje człowieka.
02Czy można bezpiecznie używać adresu Bitcoin ponownie?+
Starszy adres może technicznie nadal odbierać płatności, jeśli kontrolujesz potrzebne klucze i możesz spełnić jego warunki. Nowy adres go nie unieważnia. Ponowne użycie łączy jednak wpływy, dlatego do następnej płatności użyj nowego adresu z portfela. Przy wpłatach do usługi stosuj jej aktualne instrukcje.