Dlaczego twój adres nie wygląda jak ich: formaty adresów i dlaczego przelewy zawodzą

·6 min czytania·Autor: SSP Editorial Team
Okładka SSP Academy: formaty adresów kryptowalutowych i nieudane przelewy

Dlaczego twój adres nie wygląda jak ich: formaty adresów i dlaczego przelewy zawodzą

Prędzej czy później każdy, kto przechowuje kryptowaluty samodzielnie, trafia na ten sam dezorientujący moment. Kopiujesz swój adres do odbioru, żeby wysłać sobie trochę bitcoinów, a on nie wygląda jak adresy, które widywałeś wcześniej. Albo giełda go odrzuca. Albo wysyłasz Bitcoin Cash na coś, co wygląda dokładnie jak adres bitcoinowy, i spędzasz nieprzyjemną godzinę na ustalaniu, co się właściwie stało.

Nic z tego nie jest przypadkowe. Formaty adresów kodują rzeczywistą informację o tym, jak monety mogą zostać wydane, a gdy nauczysz się je czytać, zamęt niemal całkiem znika.

Adres to zestaw warunków wydania

Użyteczny model myślowy nie brzmi „adres to numer konta". Brzmi tak: adres to skompresowany opis tego, co musi być prawdą, żeby te monety się ruszyły.

Wyślij na adres zaczynający się od 1, a warunkiem jest: jeden konkretny klucz publiczny musi wytworzyć podpis. Wyślij na dłuższą odmianę adresu bc1q…, a warunkiem może być: dwa konkretne klucze muszą oba podpisać. Ten sam łańcuch, te same pieniądze, całkowicie inne reguły — a format adresu to sposób, w jaki łańcuch mówi ci, które reguły obowiązują.

Dlatego formaty się rozmnożyły. Za każdym razem, gdy Bitcoin zyskiwał nowy sposób blokowania monet, potrzebował nowego sposobu zapisania, gdzie zostały zablokowane.

Formaty, które spotkasz w Bitcoinie

Legacy — 1… Oryginał. Płatność do skrótu klucza publicznego: jeden klucz, jeden podpis. Wspierany wszędzie i najdroższy w wydawaniu, bo dane podpisu liczą się w całości do rozmiaru bloku.

Skrypt — 3… Płatność do skrótu skryptu. Monety są zablokowane do skryptu, a nie do klucza — kworum multisig, blokada czasowa, cokolwiek. Adres jest skrótem warunków, więc z zewnątrz nie sposób poznać, jakie one są. Tą samą drogą przemycono też wczesny SegWit dla zgodności.

Natywny SegWit — bc1q… Bech32. Dane podpisu przeniesiono do osobnej struktury świadka, co potaniło wydawanie i naprawiło podatność transakcji na przekształcenia. Bech32 jest zapisywany małymi literami, ma silniejszą sumę kontrolną niż base58 i został zaprojektowany tak, żeby literówki były wykrywane, a nie po cichu akceptowane.

Natywny SegWit występuje w dwóch długościach, a różnica ma znaczenie:

  • 42 znaki łącznie — P2WPKH. Jeden klucz, jeden podpis.
  • 62 znaki łącznie — P2WSH. Skrypt, na przykład multisig dwa-z-dwóch.

Taproot — bc1p… Najnowszy. Lepsza prywatność i tańsze złożone wydatki, kosztem tego, że część starszych usług wciąż go nie przyjmuje.

Dlaczego adres SSP wygląda nietypowo

Tu ludzie się dziwią, a wyjaśnienie jest satysfakcjonujące.

SSP to portfel multisig dwa-z-dwóch. Twoje monety nie są zablokowane do jednego klucza — są zablokowane do skryptu, który wymaga podpisów zarówno z rozszerzenia przeglądarki, jak i z telefonu. To znaczy, że bitcoinowy adres SSP jest typu P2WSH, a nie P2WPKH, czyli ma długą postać bc1q: 62 znaki zamiast 42, do których większość przywykła.

Jeśli wpatrujesz się we własny adres z myślą, że wygląda za długo — tak ma być. Ta dodatkowa długość to skrót skryptu dwa-z-dwóch zamiast skrótu pojedynczego klucza publicznego. Adres jest dłuższy, bo warunki są bogatsze.

Czasem potyka się na tym starsza usługa, która wzorcem rozpoznaje tylko krótką postać. To ograniczenie po ich stronie — P2WSH ma dziesięć lat — ale warto wiedzieć, dlaczego błąd się pojawia, bo komunikat brzmi zwykle mało pomocnie: „nieprawidłowy adres".

Każdy łańcuch podjął inne decyzje

SSP obsługuje kilka łańcuchów UTXO i każdy zapisuje adresy multisig po swojemu:

ŁańcuchTyp skryptu w SSPAdres wygląda tak
BitcoinP2WSHbc1q… (62 znaki)
LitecoinP2WSHltc1q…
Bitcoin CashP2SHbitcoincash:p…
DogecoinP2SHzaczyna się od 9 lub A
ZcashP2SHt3…
RavencoinP2SHzaczyna się od r
FluxP2SHt3…

Litecoin blisko trzymał się projektu Bitcoina i zmienił tylko czytelny przedrostek, dlatego jego adresy wyglądają znajomo. Zcash i Flux używają dwubajtowej wersji, co daje charakterystyczny przedrostek t3 dla adresów skryptowych. Dogecoin wybrał własny bajt wersji, więc jego adresy skryptowe zaczynają się od 9 lub A — zupełnie inaczej niż znajome adresy D… z jednym kluczem.

Ważne jest to, że przedrostki adresów danego łańcucha są stałymi na poziomie konsensusu, a nie kwestią marki. To dzięki nim portfel może odrzucić adres, zanim cokolwiek wyślesz.

Pułapka Bitcoin Cash i dlaczego istnieje CashAddr

Jest jeden kawałek historii, który warto znać, bo naprawdę może cię kosztować pieniądze.

Kiedy Bitcoin Cash odłączył się od Bitcoina w 2017 roku, odziedziczył format adresu Bitcoina dokładnie — te same bajty wersji, 0x00 dla adresów kluczowych i 0x05 dla skryptowych. Adres BCH w starym formacie i adres BTC w starym formacie były nie do odróżnienia. Nie podobne. Identyczne strukturalnie.

Ludzie bez przerwy wysyłali BTC na adresy BCH i BCH na adresy BTC, bo żadne oprogramowanie nie potrafiło ich rozróżnić. Monety nie ulegały zniszczeniu — ten sam klucz prywatny kontroluje jedne i drugie — ale odzyskanie ich wymagało zaimportowania kluczy do portfela drugiego łańcucha, czego wielu użytkowników nie umiało zrobić bezpiecznie.

CashAddr był lekarstwem: format w stylu bech32 z przedrostkiem bitcoincash:, celowo niezgodny z bitcoinowym, tak żeby wysyłka między łańcuchami zawodziła głośno, zamiast po cichu się udawać. Dlatego SSP pokazuje adresy Bitcoin Cash z pełnym przedrostkiem. Wygląda rozwlekle. Rozwlekłość jest tu funkcją.

Dlaczego przelewy zawodzą i co znaczy każda awaria

„Nieprawidłowy adres". Zwykle błąd sumy kontrolnej — literówka, ucięte wklejenie, ciąg bech32 z pomieszanymi wielkościami liter. Bech32 nie rozróżnia wielkości liter, ale nie wolno ich mieszać; niektóre ścieżki kopiowania to psują. Czasem oznacza to, że usługa wysyłająca nie obsługuje twojego formatu.

„Nieobsługiwany typ adresu". Usługa rozpoznaje adres, ale nie wyśle na niego — zwykle starsza giełda, która nigdy nie dodała Taproota, albo obsługuje tylko krótki SegWit. To nie twoja rzecz do naprawy; użyj innej drogi wypłaty albo adresu pośredniego.

Zupełnie inny łańcuch. Tu chroni cię czytelny przedrostek bech32: bc1 i ltc1 różnią się, a portfele to sprawdzają. Łańcuchy base58 są bardziej ryzykowne, bo poprawny adres Dogecoina jest też strukturalnie poprawny w kilku innych łańcuchach.

Wysłało się, ale nic nie dotarło. Albo patrzysz na eksplorator niewłaściwego łańcucha, albo środki poszły na poprawny adres, który nie jest twój. Nie ma czegoś takiego jak odwołanie przelewu.

Zasady praktyczne

Kopiuj, nigdy nie przepisuj. Każdy format ma sumę kontrolną właśnie dlatego, że ludzie się mylą przy pisaniu. Nie zmuszaj jej do pracy, której nie powinna wykonywać.

Najpierw dopasuj przedrostek do łańcucha. Bitcoin to bc1, 1 albo 3. Litecoin to ltc1, L albo M. Bitcoin Cash to bitcoincash:. To jedno spojrzenie wyłapuje kosztowne pomyłki.

Spodziewaj się, że adresy multisig będą dłuższe. Jeśli używasz SSP albo dowolnego portfela opartego na skryptach, długa postać jest poprawna. Długość nie jest objawem błędu.

Wyślij najpierw małą próbę, gdy cel jest nowy, zwłaszcza na giełdę i zwłaszcza przy dużych kwotach. Opłata jest niczym wobec alternatywy.

Używaj świeżego adresu do odbioru, jeśli portfel go oferuje. Ponowne używanie adresów łączy twoje transakcje w oczach każdego, kto obserwuje łańcuch. Unikanie tego nic nie kosztuje.

Formaty adresów wyglądają na przypadkowe ciekawostki, dopóki nie dostrzeżesz, że każdy z nich jest twierdzeniem o tym, jak monety mogą się poruszać. Czytane w ten sposób, odbieranie środków do własnego portfela przestaje być skokiem na wiarę i staje się czymś, co naprawdę możesz sprawdzić — a o to właśnie chodzi w trzymaniu własnych kluczy.

Udostępnij ten artykuł

Powiązane artykuły