4 maja 2021 20:56

W jaki sposób łańcuch bloków zapobiega podwójnemu wydawaniu bitcoinów?

Jednym z głównych problemów każdego dewelopera kryptowalut jest kwestia podwójnych wydatków. Odnosi się to do przypadków, w których osoba fizyczna wydaje saldo tej kryptowaluty więcej niż jeden raz, skutecznie tworząc rozbieżność między rekordem wydatków a ilością dostępnej kryptowaluty, a także sposobem jej dystrybucji.

Kwestia podwójnego wydawania to problem, którego nie ma w gotówce; jeśli zapłacisz za kanapkę rachunkiem za 10 dolarów, przekazując ten rachunek producentowi kanapki, nie możesz obrócić i wydać tych samych 10 dolarów gdzie indziej. Transakcja wykorzystująca walutę cyfrową, taką jak bitcoin, odbywa się jednak całkowicie cyfrowo. Oznacza to, że możliwe jest skopiowanie szczegółów transakcji i ponowne jej rozpowszechnienie w taki sposób, że ten sam BTC mógłby zostać wydany wiele razy przez jednego właściciela. Poniżej zbadamy, w jaki sposób programiści kryptowalut zapewnili, że podwójne wydatki nie mogą mieć miejsca.

Kluczowe wnioski

  • Problem techniczny, który pojawia się w przypadku pojęcia waluty cyfrowej, polega na tym, że ktoś może zduplikować cyfrowe pieniądze i wydać je jednocześnie w dwóch lub więcej miejscach.
  • Problemowi podwójnego wydawania zapobiega się w kryptowalutach opartych na łańcuchu bloków, takich jak Bitcoin, dzięki zastosowaniu mechanizmu konsensusu znanego jako dowód pracy (PoW).
  • To PoW jest realizowane przez zdecentralizowaną sieć „górników”, którzy nie tylko zabezpieczają wierność przeszłych transakcji w księdze blockchain, ale także wykrywają i zapobiegają podwójnemu wydatkowaniu.

Zrozumieć Blockchain

Blockchain, na którym opiera się cyfrowa waluta, taka jak bitcoin, nie jest w stanie samodzielnie zapobiec podwójnemu wydatkowaniu. Zamiast tego wszystkie różne transakcje dotyczące danej kryptowaluty są wysyłane do łańcucha bloków, gdzie są oddzielnie weryfikowane i chronione przez proces potwierdzania. W przypadku bitcoina i wielu innych kryptowalut transakcje, które zostały w ten sposób potwierdzone, stają się nieodwracalne; są publikowane i utrzymywane bezterminowo.

Bitcoin był pierwszą dużą walutą cyfrową, która rozwiązała problem podwójnych wydatków. Dokonał tego, wdrażając ten mechanizm potwierdzania i utrzymując wspólny, uniwersalny system księgowy. W ten sposób łańcuch bloków bitcoin przechowuje zapisy transakcji ze znacznikiem czasu, sięgających wstecz do powstania kryptowaluty w 2009 roku.

W terminologii Bitcoin „ blok ” to plik trwale zarejestrowanych danych. Wszystkie ostatnie transakcje są zapisywane w blokach, podobnie jak księga transakcji giełdowych na giełdzie. Informacje z bloków są dodawane do księgi co kilka minut; wszystkie węzły w sieci utrzymują kopię księgi blockchain. Użytkownicy mogą nawigować po łańcuchu bloków dla bitcoinów i przeglądać transakcje tylko pod względem ilości. Szczegóły dotyczące tożsamości kupującego i sprzedającego w każdej transakcji są chronione przez szyfrowanie wysokiego poziomu, które chroni również księgę przed manipulacją przez źródła zewnętrzne. Kiedy księga blockchain jest aktualizowana, wszystkie portfele bitcoin również są aktualizowane.

Radzenie sobie z podwójnymi wydatkami

Wyobraź sobie, że masz 1 BTC i próbujesz wydać go dwukrotnie w dwóch oddzielnych transakcjach. Możesz spróbować to zrobić, wysyłając ten sam BTC na dwa oddzielne adresy portfela bitcoin. Obie te transakcje trafią następnie do puli transakcji niepotwierdzonych. Pierwsza transakcja byłaby zatwierdzana za pomocą mechanizmu potwierdzania, a następnie weryfikowana w kolejnym bloku. Jednak druga transakcja zostałaby uznana za nieważną w procesie potwierdzenia i nie zostałaby zweryfikowana. Jeśli obie transakcje zostaną jednocześnie wyciągnięte z puli do potwierdzenia, transakcja z największą liczbą potwierdzeń zostanie uwzględniona w łańcuchu bloków, a druga zostanie odrzucona.

Chociaż skutecznie rozwiązuje to kwestię podwójnych wydatków, nie jest pozbawione problemów. Na przykład, zamierzony odbiorca drugiej (nieudanej) transakcji nie miałby udziału w samej transakcji, która zakończyła się niepowodzeniem, a mimo to osoba ta nie otrzymałaby bitcoina, którego oczekiwał. Wielu sprzedawców czeka na co najmniej 6 potwierdzeń transakcji (co oznacza, że ​​sześć kolejnych bloków transakcji zostało dodanych do łańcucha bloków po danej transakcji). W tym momencie sprzedawca może bezpiecznie założyć, że transakcja jest ważna.

Istnieją inne luki w tym systemie, które mogą pozwolić na przeprowadzenie podwójnych ataków. Na przykład, jeśli napastnik jest w stanie w jakiś sposób kontrolować co najmniej 51% mocy sieci, może dokonać podwójnych wydatków. Gdyby atakujący był w stanie w jakiś sposób uzyskać kontrolę nad tak dużą mocą obliczeniową, mógłby odwrócić transakcje i stworzyć oddzielny, prywatny łańcuch bloków. Jednak szybki rozwój bitcoinów praktycznie zapewnił, że tego typu atak jest niemożliwy.

Wyjaśnienie dowodu pracy i „górnictwa”

Przejdźmy teraz trochę bardziej technicznie. Sposób, w jaki użytkownicy wykrywają manipulacje, takie jak próba podwójnego wydania, w praktyce, odbywa się za pomocą  skrótów, długich ciągów liczb, które służą jako dowód pracy (PoW). Umieść podany zestaw danych przez funkcję skrótu (bitcoin używa SHA-256), a wygeneruje tylko jeden hash. Jednak ze względu na „efekt lawiny” nawet niewielka zmiana dowolnej części oryginalnych danych spowoduje całkowicie nierozpoznawalny skrót. Niezależnie od rozmiaru oryginalnego zestawu danych, hash wygenerowany przez daną funkcję będzie miał taką samą długość. Hash jest funkcją jednokierunkową: nie można go użyć do uzyskania oryginalnych danych, a jedynie do sprawdzenia, czy dane, które wygenerowały skrót, są zgodne z oryginalnymi danymi.

Generowanie dowolnego skrótu dla zestawu transakcji bitcoinowych byłoby trywialne dla nowoczesnego komputera, więc aby przekształcić ten proces w „pracę”, sieć bitcoin ustawia pewien poziom „trudności”. To ustawienie jest dostosowywane tak, aby nowy blok był „ wydobywany ” – dodawany do łańcucha bloków poprzez generowanie ważnego skrótu – w przybliżeniu co 10 minut. Trudność w ustawianiu polega na ustaleniu  „celu” dla skrótu : im niższy cel, tym mniejszy jest zestaw prawidłowych haszów i trudniej jest go wygenerować. W praktyce oznacza to skrót zaczynający się od długiego ciągu zer: na przykład skrót dla bloku nr 429818 to 000000000000000004dd3426129639082239efd583b5273b1bd75e8d78ff2e8d. Ten blok zawiera 2012 transakcji obejmujących nieco ponad 1000 bitcoinów, a także nagłówek poprzedniego bloku. Gdyby użytkownik zmienił jedną kwotę transakcji o 0,0001 bitcoina, wynikowy hash byłby nierozpoznawalny, a sieć odrzuciłaby oszustwo.

Ponieważ dany zestaw danych może wygenerować tylko jeden hash, w jaki sposób górnicy upewniają się, że generują hash poniżej celu? Zmieniają dane wejściowe, dodając liczbę całkowitą, zwaną  nonce  („liczba użyta raz”). Po znalezieniu prawidłowego skrótu jest on emitowany do sieci, a blok jest dodawany do łańcucha bloków.

Wydobywanie to proces konkurencyjny, ale to bardziej loteria niż wyścig. Średnio co dziesięć minut ktoś generuje akceptowalny dowód pracy, ale nikt nie wie, kto to będzie. Górnicy łączą się, aby zwiększyć swoje szanse na wydobycie bloków, co generuje opłaty transakcyjne i, przez ograniczony czas, nagrodę w postaci nowo utworzonych bitcoinów.

Dowód pracy sprawia, że ​​zmiana dowolnego aspektu łańcucha bloków jest niezwykle trudna, ponieważ taka zmiana wymagałaby ponownego wydobycia wszystkich kolejnych bloków. Utrudnia to również użytkownikowi lub grupie użytkowników zmonopolizowanie mocy obliczeniowej sieci, ponieważ maszyny i moc wymagana do wykonania funkcji skrótu są drogie.