Pod moim tekstem poświęconym zakładaniu portfela pojawił się komentarz z pytaniem: o co chodzi z tymi adresami SegWit i Legacy na powyższym screenie? 

Na dzień dzisiejszy w sieci Bitcoin mamy trzy rodzaje adresów:

  • zaczynające się od 1 
  • zaczynające się od 3
  • zaczynające się od bc1

O co w tym wszystkim chodzi?

Dzisiejszy tekst zaadresuje to pytanie. Najpierw opowiemy sobie trochę o samym winowajcy zamieszania. Jest nim technologia SegWit. Dowiemy się czym ona jest oraz kiedy i dlaczego została wprowadzona. Następnie opowiemy sobie o wynikających z tego różnych rodzajach adresów Bitcoina. Nie zabraknie informacji kiedy i do czego używać poszczególnych z nich.

Czym jest SegWit?

SegWit to skrót od Segregated Witness. Jest to nowa forma organizacji danych na temat transakcji zawieranych w sieci Bitcoin. Jest odpowiedzią na problem skalowalności Bitcoina. Objawia się on poprzez ograniczoną ilość transakcji, jaką sieć jest w stanie przeprowadzić w ciągu sekundy. W chwili obecnej jest to kilkanaście transakcji na sekundę. A bywały czasy przed SegWitem, że było ich tylko kilka.

Transakcje które wysyłamy do sieci są zgrupowane w bloki (stąd nazwa blockchain). Kolejny blok jest tworzony co mniej więcej 10 minut. I zawiera wszystkie transakcje powstałe w tym czasie. To znaczy nie do końca wszystkie. Zawiera tyle transakcji, ile zmieści się w 1 megabajtowym bloku. 

Limit ten powstał na początku działania sieci, gdy odbywały się na niego ataki spamerskie. Wysyłano do sieci mnóstwo nic nie znaczących transakcji, które musiały być potem przetwarzane i przechowywane przez sieć. W wyniku tego trudno było zachować zdecentralizowany charakter sieci. Jeśli blockchain będzie zawierał ogromne ilości danych, to nie każdy będzie w stanie uruchomić na swoim komputerze pełen węzeł.

SegWit to nowa forma zapisu danych na temat transakcji. Główną różnicą jest rozdzielenie (Segregated) informacji na temat samej transakcji od jej podpisów kryptograficznych (Witness) umożliwiających jej przeprowadzenie. Do tej pory zarówno informacje o transakcjach jak i dotyczące ich podpisy musiały mieścić się w 1 MB limicie wielkości bloku. Od tej pory w tym limicie muszą się mieścić wyłącznie dane o transakcjach. A same podpisy są trzymane obok. Podpisy dotyczące transakcji zabierały średnio w okolicach 65% miejsca w bloku, jest to znacząca zmiana. W teorii w ramach 1 MB limitu możemy upakować dane o wielkości niemalże 4 MB 1 1. Zobacz anglojęzyczny artykuł SegWit (Segregated Witness) w portalu Investopedia. × . W praktyce, na chwile obecną, przy częściowej adopcji SegWita, wielkość bloku sięga w okolice 1,3 MB 2 2. Zobacz dane źródłowe na temat średniej wielkości bloku Bitcoina w serwisie Blockchain.com. ×

SegWit został finalnie aktywowany w sierpniu 2017 roku. Po wielu latach dyskusji zakończonych bardzo gorącym okresem sporów w ostatnich miesiącach przed aktywacją. W wyniku tych sporów powstał fork Bitcoina zwany jako Bitcoin Cash (BCH) 3 3. Zobacz hasło Bitcoin Cash w Wikipedii. × . Zamiast wprowadzać SegWit BCH po prostu zwiększa wielkość bloku do 8 MB 4 4. Potem zwiększono rozmiar bloku nawet do 32 MB. Chociaż w praktyce bloki zą zdecydowanie mniejsze, bardzo rzadko osiągają wielkość 1 MB. Wynika to z małej popularności sieci. Zobacz dane źródłowe na temat średniej wielkości bloku sieci Bitcoina Cash w portalu BitInfoCharts. × .  

Zwiększenie wielkości bloku i tym samym przepustowości sieci to nie jedyna zmiana, którą wprowadził SegWit. To także inne usprawnienia. Głównym z nich jest to, że rozdzielenie danych transakcji od dotyczących jej podpisów pozwala na bezpieczne tworzenie Hash Time Locked Contracts 5 5. Zobacz anglojęzyczne hasło Hash Time Locked Contracts w wiki bitcoin.it. × . Umożliwiają one czasowe i warunkowe bezpieczne zamrożenie środków. Oznacza to, że środki zostaną przetransferowane, jeśli zostaną spełnione określone warunki. Jeśli nie zostaną one spełnione, to po określonym czasie zostają one odmrażane i znowu są do dyspozycji swoich pierwotnych właścicieli. Pozwala to na bezpieczne stworzenie mechanizmów skalowania sieci na drugim poziomie (ang. Layer 2) takich jak Lightning Network 6 6. Zobacz anglojęzyczne hasło Lightning Network w Wikipedii. × . Oprócz tego pozwalają na bezpieczną wymianę środków pomiędzy stronami korzystających z różnych blockchainów, tzw. atomic swaps 7 7. Atomic swaps zostały szczegółowo opisane w anglojęzycznym artykule What Are Atomic Swaps? ×

Rodzaje adresów Bitcoina

Tak jak wspomniałem we wstępie w sieci Bitcoin występują trzy różne rodzaje adresów. Dwa z nich występowały już przed wprowadzeniem SegWita. Pora sobie opisać każdy z nich.

Adresy zaczynające się od 1 (Legacy)

Jest to standardowy adres starego typu. Działa on w bardzo prosty sposób. Aby móc dysponować środkami wpłaconymi na ten adres, należy wykazać się pasującym kluczem publicznym i podpisem stworzonym przy pomocy odpowiadającego mu klucza prywatnego.

O co chodzi z tymi z tymi kluczami? 

Już wyjaśniam. Bitcoin, i zdecydowana większość innych kryptowalut, działają w oparciu o kryptografię klucza publicznego. Tworząc swój portfel pod maską tworzony jest klucz prywatny. Z tego klucza prywatnego tworzony jest klucz publiczny. A z niego powstaje nasz adres. Klucz prywatny, jak wskazuje sama nazwa, należy zachować dla siebie. Przy jego pomocy podpisujemy transakcje z naszego portfela. Weryfikacja tego, czy podpis transakcji jest poprawny odbywa się na podstawie klucza publicznego. Jest on jawny, tak samo jak adres. Między kluczem prywatnym a publicznym występują następujące zależności:

  • z klucza prywatnego MOŻNA uzyskać klucz publiczny
  • z klucza publicznego NIE MOŻNA uzyskać klucza prywatnego
  • dzięki wykorzystaniu klucza publicznego można potwierdzić podpis transakcji odpowiadającym mu kluczem prywatnym (bez jego znajomość) 8 8. Zobacz artykuł Kryptografia klucza publicznego w Wikipedii. ×

Wracają do naszego adresu zaczynającego się od 1. Aby móc dokonać transakcji środków znajdujących się na tym adresie, należy podpisać transakcję odpowiednim kluczem prywatnym. Nie ma i nie może być żadnych innych warunków dodatkowych.

Adresy zaczynające się od 3 (Nested SegWit)

Jest to drugi rodzaj adresów, który istniał jeszcze przed wprowadzeniem SegWitu. 

Adresy te różnią od tych wcześniej opisywanych tym, że aby można było wypłacać z nich środki, spełnione muszą być określone warunki. Warunki te są zaprogramowane w języku skryptowym Bitcoina. Każdy z tego rodzaju adresów ma swój własny skrypt, który jest wykonywany i musi zostać pomyślnie spełniony, aby możliwe było zrealizowanie transakcji z takiego adresu.

Adresy tego rodzaju mają bardziej zaawansowane zastosowania.  W czasach przed wprowadzeniem SegWita ich najpopularniejszy zastosowaniem były portfele multisig. Tego rodzaju portfele służą do zarządzania środkami przez wiele osób. 

Wśród tych adresów znajdują się też tak zwane adresy Nested SegWit. Jest to skrypt opakowujący adres typu SegWit. Dzięki czemu możliwe jest realizowanie transakcji zarówno z adresami starego typu (zaczynającymi się od 1) jak i z adresami Native SegWit (zaczynającymi się od bc1).

Adresy zaczynające się od bc1 (Native SegWit)

Nowa grupa adresów dostępna od momentu wprowadzenia SegWita. Ten typ adresów pozwala na pełne, natywne wykorzystanie nowej technologii. Dzięki czemu realizowane transakcje są mniejsze, a tym samym tańsze w realizacji (mniejsza opłata dla górników). Mankamentem tego rodzaju adresów jest to, że portfele starego typu (zaczynające się na 1) nie są w stanie zrealizować transakcji na adresy typu Native SegWit. 

Który adres wybrać?

Aby podjąć tę decyzje omówimy każdy z rodzajów adresów pod następującym kątem:

  • z jakich adresów możemy być odbiorcami transakcji
  • na jakie adresy możemy wysyłać transakcje
  • jak jest wielkość (a tym samym i koszt) transakcji realizowanej z tego adresu

Adresy zaczynające się od 1 (Legacy):

  • jesteśmy w stanie odbierać transakcje od wszystkich adresów
  • jesteśmy w stanie bez problemu wysyłać środki do adresów zaczynających się na 1 i 3. Możesz mieć problem na starszych portfelach z przesłaniem transakcji na adresy zaczynające się od bc1, które mogę nie rozpoznać go jako poprawny 9 9. Na poziomie samego protokołu jest możliwe przesyłanie środków z adresów Legacy (zaczynających się od 1) na adresy Native Segwit (zaczynające się od bc1). Problem występuje na poziomie działania samych portfeli, które jeśli powstały przed prowadzeniem SegWita i nie zostały zaktualizowane. Nie rozpoznają one wtedy adresów Native SegWit za poprawne. Podziękowania dla fervi oraz Rafał Kiełbus za zwrócenie na to uwagi. ×
  • transakcje są duże i kosztowne

Adresy zaczynające się od 3 (tylko w kontekście Nested SegWit)

  • jesteśmy w stanie odbierać transakcje od wszystkich adresów
  • jesteśmy w stanie wysyłać transakcje na wszystkie adresy
  • Transakcje są mniejsze i tańsze niż to ma miejsce w przypadku adresów zaczynających się na 1. Są za to większe i droższe niż te dla adresów zaczynających się od bc1

Adresy zaczynające się od bc1 (Native SegWit):

  • jesteśmy w stanie bez problemu odbierać transakcje z adresów bc1 oraz Nested Segwit. Ludzie posiadający starsze portfele z adresami zaczynającymi się od 1 mogę mieć problem z przesłaniem nam środków 10 10. Na poziomie samego protokołu jest możliwe przesyłanie środków z adresów Legacy (zaczynających się od 1) na adresy Native Segwit (zaczynające się od bc1). Problem występuje na poziomie działania samych portfeli, które jeśli powstały przed prowadzeniem SegWita i nie zostały zaktualizowane. Nie rozpoznają one wtedy adresów Native SegWit za poprawne. Podziękowania dla fervi oraz Rafał Kiełbus za zwrócenie na to uwagi. ×
  • Jesteśmy w stanie wysyłać transakcje na wszystkie rodzaje adresów
  • Transakcje są małe i tanie

Z powyższego zestawienia wynika, że najbardziej uniwersalna opcje to Nested SegWit (adres zaczynający się na 3). Adres ten będzie w stanie zarówno odbierać jak i przesyłać środki na pozostałe rodzaje adresów. Koszty naszych transakcji, będą też niższe niż w przypadku starych adresów zaczynających się na 1.

Najniższe koszty transakcji uzyskamy korzystając z nowy adresów bc1. Niestety, nie będziemy wtedy w stanie odbierać płatności od posiadaczy adresów starego typu.

Nic nie stoi też na przeszkodzie, aby korzystać z kilku portfeli. Jeśli dokonujemy transakcji z drugą stroną, o której wiemy, że dysponuje segwitowym portfelem, wtedy my też możemy korzystać z portfel bc1. W przypadku, gdy nie wiemy jaki portfel ma druga stron bezpieczniej jest korzystać z portfeli zaczynających się na 3 (Nested SegWit).

Jeśli jeszcze nie masz swojego portfela, warto go zainstalować już teraz

Serdeczne podziękowania dla Rafał Kiełbus za konsultację merytoryczną. Wielkie dzięki również dla Mateusza Woskowicza, za pomoc w redakcji i korekcie tekstu.

Tradycyjnie zapraszam do dyskusji w komentarza. Jeśli nie masz ochoty publicznie zabierać głosu, możesz mi przekazać swoją opinię w dwuminutowej, anonimowej ankiecie.

Leave a Comment