Jak działa Bitcoin?
- Luda Kukuetu
- 2024-03-25
- 10 min
- 0
- 884
Obecnie chyba tylko leniwi nigdy nie słyszeli o Bitcoinie. Słyszało, ale mało kto zastanawiał się, jak to działa w ogóle. Wiele osób zadowala się wiedzą, która pozwala im utworzyć portfel, odbierać lub wysyłać kryptowalutę na inny adres lub ją sprzedawać. To działa, i to dobrze, i nie ma znaczenia, jak dokładnie. Niemniej jednak należy o tym wiedzieć, ponieważ informacje te mogą wyjaśnić wiele pytań i uniknąć trudności w użytkowaniu.
Omówiliśmy już, czym jest Bitcoin, ale nie wdawaliśmy się w szczegóły. W tym artykule postaramy się wyjaśnić, jak działa bitcoin w przystępny i szczegółowy sposób.
Sieć
Jak podaje wiele źródeł, Bitcoin to system (sieć) płatności peer-to-peer, w którym jednostką rozliczeniową dla transakcji jest kryptowaluta o tej samej nazwie.
Sieć peer-to-peer to sieć komputerowa oparta na zasadzie równości wszystkich uczestników. Każdy węzeł (peer) lub node, jak są one również nazywane, działa zarówno jako klient, jak i serwer. Taka organizacja umożliwia działanie sieci z dowolną liczbą i dowolną kombinacją dostępnych węzłów (suma nie zmienia się od permutacji warunków). Wszyscy peer-to-peer są członkami sieci, więc główną cechą systemu jest całkowita decentralizacja: nie ma centralnego administratora ani serwera.
Zamiast terminu "peer-to-peer" można użyć takich definicji jak: sieć zdecentralizowana, peer-to-peer lub p2p (peer-to-peer).
Blockchain
Podstawą bitcoina lub "księgi" transakcji jest uporządkowana sekwencja (łańcuch) zestawu danych (bloków) lub po prostu - łańcuch bloków. Każdy blok sieci bitcoin zawiera do 1 MB danych, powstaje średnio w ciągu 10 minut, zawiera informacje o wszystkich zawartych w nim transakcjach oraz informacje łączące go z poprzednim blokiem.
Każdy blok w łańcuchu jest kryptograficznie połączony z poprzednim i następnym blokiem. To wzajemne połączenie chroni sieć przed manipulowaniem lub modyfikowaniem istniejących bloków w przyszłości, dzięki czemu łańcuch bloków jest niezmienny, a transakcje nieodwracalne.
Jak to działa
Aby lepiej zrozumieć podstawy sieci Bitcoin, wyobraźmy sobie hipotetycznego entuzjastę kryptowalut Tony'ego, który posiada portfel Bitcoin z 2 BTC na saldzie.
Nasz Tony chce przekazać 1 BTC swojej przyjaciółce Cindy i aby to zrobić, potrzebuje jej unikalnego adresu portfela bitcoin (analogicznego do tradycyjnego numeru konta bankowego). Tony wprowadza ten adres w odpowiednim polu wejściowym swojego portfela i określa kwotę przelewu - 1 BTC. Następnie Tony przechodzi do ustawienia kwoty opłaty transakcyjnej, którą omówimy bardziej szczegółowo.
Transakcje i obciążenie sieci
Podobnie jak w przypadku każdego innego systemu płatności, Bitcoin służy do przeprowadzania transakcji, tj. przenoszenia aktywów od jednego klienta do drugiego. Podczas transakcji bitcoinowych pobierana jest opłata, która jest nagrodą dla górników potwierdzających te transakcje. Im wyższa opłata i niższe obciążenie sieci, tym szybciej transakcje są potwierdzane.
Zasadniczo transakcja jest zestawem informacji, które wskazują uczestnikom sieci, o jaką kwotę zmniejszyło się saldo nadawcy i o jaką kwotę wzrosło saldo odbiorcy.
Górnicy
Aby transakcja została pomyślnie zakończona, musi zostać potwierdzona przez górników. Obecnie są to wyspecjalizowane organizacje, które wykorzystują potężny sprzęt obliczeniowy (farmy ASIC) do sprawdzania transakcji pod kątem "poprawności", zbierania tych transakcji w bloki i łączenia bloków ze sobą sekwencyjnie.
Algorytm sieciowy zajmuje średnio 10 minut, aby utworzyć 1 blok, podczas którego górnicy wykonują ten sam rodzaj pracy obliczeniowej co sekundę w poszukiwaniu jednego poprawnego rozwiązania. Nie jest to skomplikowane, nie jest to problem matematyczny, ale jest to bardzo duża ilość pracy, którą trudno jest wykonać szybko i wydajnie przy niewielkiej mocy obliczeniowej.
Górnicy są wynagradzani za swoją pracę w postaci BTC. Nagroda ta składa się z opłat uiszczanych przez użytkowników za transakcje i zupełnie nowych Bitcoinów generowanych przez samą sieć, gdy nowy blok został zebrany i potwierdzony na podstawie transakcji. Nowe Bitcoiny są nagrodą dla górników za ich pracę. Co 210 000 bloków nagroda dla górników za znaleziony blok jest zmniejszana o połowę, co nazywa się "halvingiem".
Prowizje
Wróćmy do naszego entuzjasty kryptowalut... Ustalając wysokość opłaty transakcyjnej, Tony kieruje się faktem, że za każdy bajt informacji musi zapłacić określoną ilość satoshi, ułamkowej części Bitcoina. Ponieważ Tony nie wie, ile danych zajmie jego transakcja, postanawia zaoszczędzić pieniądze i ustawić cenę na 1 satoshi za bajt.
Dla naszych czytelników wyjaśnimy, w jaki sposób powstaje waga i koszt transakcji Tony'ego.
2 BTC, które ma na swoim saldzie, nie pojawiły się w jego portfelu bez powodu. Tony je zarobił. 1 BTC w 2017 roku i 1 BTC w 2018 roku. Teraz chce wysłać połowę z nich swojej dziewczynie. Jego transakcja, oprócz liczby monet, będzie zawierać informacje o adresach, z których otrzymał monety (zwanych wejściami), informacje o adresach odbiorców (zwanych wyjściami) oraz informacje o jego własnym adresie.
- Każde wejście, z którego otrzymano monety, waży ~148 bajtów;
- Każde wyjście, do którego wysyłane są monety, waży ~34 bajty;
- Sama transakcja waży ~10 bajtów, niezależnie od liczby adresów lub kwoty transferu.
Policzmy: 148*2+34*2+10=374 bajty. Teraz wiemy, że nasz "chciwy" Tony zapłaci 374 satoshi za transakcję.
Reszta
Możesz zapytać, dlaczego mnożymy 34 (wagę adresu odbiorcy) przez 2, skoro jest tylko jeden odbiorca? Chodzi o to, że kiedy wysyłasz komuś część swojego salda, to nie część, ale cała kwota jest pobierana z Twojego salda, a po walidacji, czyli włączeniu transakcji do bloku, saldo (pomniejszone o opłatę sieciową) wraca do Twojego portfela.
W związku z tym, oprócz informacji o adresie odbiorcy, transakcja zawiera również informacje o adresie nadawcy, czyli adresie użytkownika. Ten zwrot nazywany jest "resztą".
Mempool
Po zapłaceniu skromnych 374 satoshi, Tony potwierdza wysłanie 1 BTC i czeka, aż górnicy potwierdzą transakcję.
Górnicy nie spieszą się jednak z jej potwierdzeniem, a transakcja trafia do mempool, czyli kolejki do potwierdzenia. Dlaczego? Ponieważ górnicy chcą zarabiać pieniądze, a nie tylko obsługiwać swój sprzęt, ponieważ otrzymują tylko 374 satoshi za potwierdzenie transakcji Tony'ego. Mempool ze swoim systemem sortowania istnieje specjalnie dla takich bardzo tanich transakcji.
Po pierwsze, górnicy "zabierają" z mempoola łatwiejsze transakcje z wyższymi opłatami, ponieważ ich potwierdzanie jest bardziej opłacalne, a blok może pomieścić ich znacznie więcej.
Nie myśl jednak, że gdy transakcja znajdzie się w mempoolu, zostanie jej przypisany numer sekwencyjny. Tak nie jest. Kolejka ta jest dynamiczna, a w każdej sekundzie trafia do niej wiele transakcji o różnych opłatach i wadze, więc transakcja naszego Tony'ego może czekać na potwierdzenie przez długi czas. A co najważniejsze, dopóki znajduje się w mempool, Tony nie będzie mógł pozbyć się zmiany.
W rzeczywistości w takiej sytuacji salda nadawcy są zamrożone. Jest to mechanizm, który chroni sieć przed transakcjami spamowymi - sytuacjami, w których spamer tworzy wiele tanich przesyłek, przeciążając w ten sposób sieć.
Dopóki transakcja Tony'ego znajduje się w mempool, nie jest uważana za potwierdzoną i nie jest uważana za zawieszoną. Jednocześnie może ona pozostawać w kolejce przez dość długi czas - do momentu jej potwierdzenia lub usunięcia z mempool przez węzły walidujące. Według statystyk maksymalny okres oczekiwania w kolejce wynosi ~3 dni, ale w okresach wysokiej aktywności sieci okres ten może rozciągać się na tydzień lub dłużej.
Trzeba przyznać, że szybkość transferów jest jedną z priorytetowych cech, jeśli chodzi o korzystanie z systemów płatności, a takie kolejki nie są zbyt przyjemne, delikatnie mówiąc.
Istnieje wiele sposobów na przepchnięcie transakcji przez mempool. Wszystkie z nich są dość skomplikowane do zrozumienia i wdrożenia przez przeciętnego użytkownika, a niektóre z nich graniczą z tak nieuczciwą metodą, jak "podwójne wydawanie". Istnieje jednak jedna świetna funkcja, z której każdy może skorzystać. Nazywa się ona Replace-by-Fee (RBF).
Replace-by-Fee (RBF)
RBF to edycja istniejącej transakcji znajdującej się w mempool'e.
Edycja oznacza, że nowa transakcja będzie wykorzystywać te same dane wejściowe co stara, ale opłata zostanie zmieniona. Taka edytowana transakcja nie będzie uważana za "podwójne wydawanie", ponieważ opcja Replace-by-Fee pozwoli tego uniknąć. Węzły sieci Bitcoin postrzegają edytowaną transakcję jako starą i jest ona przesuwana w kolejce mempool na bardziej atrakcyjną pozycję dla górników.
Tak więc, jeśli prowizja jest zbyt niska, normalną praktyką jest jej zwiększenie, jeśli chcesz przyspieszyć transakcję. Nie zaniedbuj funkcji RBF i włącz ją przed dokonaniem transakcji, ponieważ pomoże to zabezpieczyć się na wypadek opóźnienia transferu w kolejce.
Potwierdzenie
Tony w porę zdał sobie sprawę, że Cindy może w ogóle nie otrzymać prezentu z powodu swojej chciwości, więc skorzystał z funkcji RBF i zwiększył prowizję. Transakcja, zgodnie z oczekiwaniami, stała się bardziej atrakcyjna dla górników, a ci włączyli ją do kolejnego bloku - transakcja otrzymała 1 potwierdzenie.
Z każdym kolejnym znalezionym blokiem transakcja ta otrzyma 1 dodatkowe potwierdzenie. Gdy takich potwierdzeń jest 6 lub więcej, transakcję uznaje się za potwierdzoną.
Szybkość transakcji
Mówiąc o szybkości transferów, należy rozumieć, że nie ma jednoznacznej wartości. Ale obliczmy ją na podstawie transakcji Tony'ego i danych, które posiadamy.
Warunki wstępne:
- rozmiar jednego bloku wynosi ~1 MB (1'048'576 bajtów);
- każdy blok wypełniony transakcjami jest generowany raz na ~10 minut;
- nasza transakcja Tony'ego ma wagę 374 bajtów.
Rozwiązanie:
- 1'048'576 bajtów : 374 bajty = 2803,6 transakcji w jednym bloku;
- 2803,6 transakcji : 600 sekund = 4,6 transakcji na sekundę.
Odpowiedź: Górnicy potwierdzają ~5 transakcji podobnych do transakcji Tony'ego co sekundę.
Oczywiście wszystkie te wartości są przybliżone, ponieważ szybkość przetwarzania zmienia się co sekundę i zależy od wielu czynników. Najważniejsze jest to, że transakcja jest pobierana z mempool tak szybko, jak to możliwe, a jeśli tak się stanie, przelew dotrze do odbiorcy w ciągu 1-600 sekund.
W rzeczywistości, po włączeniu transakcji do bloku, odbiorca może nie tylko zobaczyć środki na swoim saldzie, ale także, pod pewnymi warunkami, dysponować nimi. Szybko, prawda?
Tak, ale co z zasadą 6 potwierdzeń? 6 bloków po 10 minut każdy, łącznie 1 godzina...
Bitcoin-klienci
Wszystko zależy od oprogramowania używanego przez właścicieli kryptowalut. Klasyczne portfele Bitcoin będą wyświetlać transakcję jako "niepotwierdzoną", dopóki nie otrzyma 6 potwierdzeń (bloków).
Usługi, które akceptują BTC jako płatność, mogą ustawić własne limity liczby bloków wymaganych do potwierdzenia (7, 10, 45, 214...).
BTC generowane przez sieć jako nagroda za znalezienie bloku mogą być wykorzystane dopiero po 100 potwierdzeniach, ale klasyczne portfele bitcoin nie będą wyświetlać monet otrzymanych za znalezienie bloku, dopóki nie zostanie osiągnięte 120 potwierdzeń.
Liczba "6" nie została wybrana przypadkowo. Z każdym nowym blokiem transakcja staje się coraz mniej podatna na manipulacje lub zmiany. Aby zrobić coś z już potwierdzoną transakcją w bloku, trzeba "przepisać" wszystkie kolejne bloki, co wymaga bardzo dużej mocy obliczeniowej i milionów dolarów inwestycji. Im więcej potwierdzeń otrzyma transakcja, tym będzie bezpieczniejsza.
Ale w blockchainie tak potężnym i odpornym jak Bitcoin, jest to bardziej wymóg odbiorcy transakcji niż reguła protokołu.
Dlatego nasi Cindy i Tony używają bardzo zaawansowanego i funkcjonalnego portfela Bitcoin, a nie klasycznego. Dzięki aktywowanej w nim funkcji korzystania z niepotwierdzonych transakcji, początkowa transakcja Tony'ego, po włączeniu do bloku, zostanie natychmiast odzwierciedlona w portfelu Cindy. W takim przypadku Tony będzie mógł natychmiast rozporządzać się resztą, a Cindy — prezentem.
Połączenie SegWit + RBF + wykorzystanie niepotwierdzonych transakcji pozwala wycisnąć maksymalną prędkość z blockchaina BTC, co jest ważne w przypadku usług niekustodialnych.
Podsumowanie
Bitcoin jest bardzo złożony i zaawansowany technologicznie. Niemożliwe jest opisanie wszystkich subtelności i niuansów jego działania w jednym artykule, ale opowiedzieliśmy o jego podstawach. Teraz już wiesz, jak skomplikowaną drogę pokonują Twoje monety w ramach jednej transakcji między dwoma portfelami i z jaką prędkością, jak i w jaki sposób sieć chroni się przed włamaniami, atakami spamowymi, oszustwami czy pochopnymi działaniami nowicjuszy.
Stabilne działanie Bitcoina zależy w równym stopniu zarówno od górników, jak i zwykłych użytkowników, a im więcej uczestników będzie w sieci, tym bardziej będzie ona bezpieczna i zdecentralizowana.