If you're seeing this message, it means we're having trouble loading external resources on our website.

Jeżeli jesteś za filtrem sieci web, prosimy, upewnij się, że domeny *.kastatic.org i *.kasandbox.org są odblokowane.

Główna zawartość
Aktualny czas:0:00Całkowity czas trwania:15:16

Transkrypcja filmu video

Opiszę fikcyjną transakcję bitcoinową, opowiem, jak ktoś mógłby podjąć próbę oszustwa w systemie i wyjaśnię, czemu jest to trudne matematycznie. Powiem też o czynniku ekonomicznym, który w Bitcoinie skłania do uczciwości. Załóżmy, że ktoś o imieniu Dan chce zamówić pizzę z pizzerii Pete'a. Pizzeria przyjmuje płatności w bitcoinach. Cena pizzy to 1 BTC. Wyobraźmy sobie, że Dan wcześniej otrzymał 5 bitcoinów od swojej kuzynki Carol. Carol, którą oznaczymy literą "C", dała Danowi 5 bitcoinów. Oznaczymy je literą "B" w kółeczku. Dan chce wykorzystać jeden z tych bitcoinów, by kupić pizzę u Pete'a. Klient bitcoina stworzy zapis transakcji zawierający informację o tym, jak Dan zdobył bitcoiny. W tym przypadku – odnotuje transakcję między nim a Carol, "C",/ obejmującą 5 BTC. Potem określi, że Dan chce dać jeden z nich Pete'owi... (Pete'a oznaczmy literą "P"). Pozostałe 4 BTC Dan weźmie dla siebie jako resztę. System skonstruowany jest tak, że resztę trzeba określić. Wszystko, co wchodzi do systemu, musi zostać rozliczone. Bilans musi się zgadzać. Pozostaje reszta; część może być wykorzystana na opłatę transakcyjną. W tym przykładzie dla uproszczenia założę, że nie trzeba opłaty transakcyjnej. Ta opłata wynosi zero. Rozpatrzymy sytuację, w której wszystkie części transakcji dotyczą stron. Zapis transakcji zostanie nadany do całego środowiska Bitcoina. Wiadomość otrzyma oczywiście Pete, ale oprócz niego odbiorą ją wszyscy inni w systemie. Jak pamiętacie, są tam szczególne węzły (podmioty, stowarzyszenia) nazywane kopalniami. Kopalnie sprawdzają, w perspektywie globalnej, czy w transakcji wszystko się zgadza. Analizują cały zapis transakcji, który przecież został upubliczniony. Nazywa się go łańcuchem bloków. Zaznaczę to na rysunku. Ten łańcuch zawiera historię wszystkich transakcji, do których doszło w systemie od samego początku, czyli od pierwszego bloku, zwanego w Bitcoinie "blokiem genezy". Każdy może sprawdzić szczegóły każdej transakcji, bo są one publiczne. Kopalnie zweryfikują zwłaszcza to, czy Dan wcześniej otrzymał te bitcoiny od innej osoby, tutaj – od kuzynki Carol. Sprawdzają też, czy wcześniej nie próbował już ich wydać itd. Kopalnie włączają do bloków wszystkie nowe transakcje, które do tej pory nie zostały zarejestrowane. Zatem nie tylko transakcje między Danem a Pete'em, ale też inne, do których doszło w tym samym czasie. Kopalnie przyjrzą się tym wszystkim transakcjom, zrobią z nich blok i dołączą go do końca bieżącego łańcucha bloków. Może pamiętacie z poprzednich odcinków, że aby dodać blok do łańcucha, kopalnia musi rozwiązać zadanie - dowód pracy. System jest zaprojektowany, albo lepiej: skalibrowany tak, aby kopalnie rozwiązywały to zadanie w jakieś 10 minut. Podkreślam, że jedna kopalnia mogłaby nad tym pracować bardzo długo. Może nawet rok lub dwa lata! Ale ponieważ nad problemem pracuje tyle kopalń, to jest prawdopodobne, że któraś szybko poda rozwiązanie. Każdy zapis dowodu pracy, czyli "proof of work", skojarzony z blokiem ma określony stopień trudności. Czyli jest odnotowane, jak trudno było sobie z nim poradzić. Są więc tam liczby, które będziemy nazywali... nowymi wskaźnikami stopnia trudności. Liczby te określają, jak trudno było rozwiązać zadanie. Cały łańcuch... System Bitcoin interesuje, jak trudno było ten łańcuch skonstruować. A dlaczego określenie tej trudności jest takie ważne? Ponieważ łączna wartość dla tego łańcucha, łączny stopień trudności, pomaga Pete'owi czy innym odbiorcom bitcoinów stwierdzić, czy ta transakcja jest rzetelna. Im więcej pracy włożono w łańcuch, tym więcej zaufania odbiorcy mają do transakcji. System Bitcoin działa tak, że gdy jest więcej niż jeden łańcuch bloków... powiedzmy, że jest jakiś nieuczciwy użytkownik, ktoś nie dostał wiadomości na czas... Jeśli jest więcej niż jeden łańcuch, to, zgodnie z protokołem Bitcoina, kopalnie zajmują się tym, w który włożono najwięcej pracy. Nie patrzą na łańcuchy, w które włożono mało wysiłku, tylko na ten, nad którym pracowano najwięcej. W systemie Bitcoin ten łańcuch nazywa się najdłuższym. Najdłuższy łańcuch. Nazwa może być nieco myląca, ponieważ wcale nie chodzi tu o długość fizyczną. Chodzi o... zaznaczę... "Najdłuższy łańcuch" to ten, w który włożono najwięcej pracy. A pracę tę określamy na podstawie tych wszystkich stopni trudności. Dodajemy je i uzyskujemy łączny stopień trudności dla całego łańcucha. Wybieramy łańcuch w który włożono najwięcej pracy. Nazywamy go najdłuższym. Wyobraźmy sobie, że Dan jest nieuczciwy. Zjadł pizzę i... Pete jest przekonany, że dostanie bitcoin od Dana, czeka trochę, widzi długi łańcuch zawierający transakcję, wysyła pizzę Danowi, a ten ją zjada i postanawia, że jednak nie będzie uczciwy. Chce oszukać Pete'a i cały system. Spróbuje to zrobić, tworząc inną transakcję, w której te 5 bitcoinów od Carol przekaże innej osobie. Powiedzmy, że Fredowi. To może być alter ego Dana albo znajomy... Fred nie jest prawowitym właścicielem tych bitcoinów. Dan weźmie 5 bitcoinów od Carol i spróbuje przekazać je Fredowi. Nie chcemy na to pozwolić, bo przecież Dan w ten sposób dwukrotnie wydałby bitcoiny. Byłby to przypadek podwójnego wydawania. Jedną z tych transakcji należy więc odrzucić jako oszukańczą, a drugą – dopuścić do realizacji. Gdyby Dan po prostu spróbował drugi raz wydać te same bitcoiny, nie zacierając śladów, każdy by się zorientował. W najdłuższym łańcuchu bloków, istniejącym od samego początku, można zobaczyć, że Dan już wydał te bitcoiny, więc nie powinien wydawać ich ponownie. Dan musi więc stworzyć inny łańcuch bloków, zawierający tylko tę drugą, fałszywą transakcję, czyli z Fredem, ale pomijający tę z Pete'em. Dan będzie miał nadzieję, że wszyscy zaakceptują ten nowy łańcuch. A wszyscy użytkownicy Bitoina skupiają się na łańcuchu bloków, w który włożono najwięcej pracy, czyli na łańcuchu najdłuższym. Dan chce to wykorzystać. Ma nadzieję, że zdoła zrealizować swój oszukańczy plan. Pytanie: jakie jest prawdopodobieństwo, że mu się uda? Żeby zrobić coś takiego, Dan musi wyjść od istniejącego łańcucha bloków i dodać do niego inną transakcję. Zamiast odnotowywać swoją transakcję z Pete'em, spróbuje stworzyć nową i dodać ją do bloku, który zawiera dane fałszywej transakcji rzekomo zawartej z Fredem. W nowym bloku znajdzie się zapis oszukańczej transakcji Dana i Freda. W slangu Bitcoina coś takiego nazywamy rozwidleniem łańcucha. Oznacza to, że istnieje więcej niż jedna wersja zdarzeń. Ktoś próbował zatrzeć swoje ślady i zmienić historię, którą znamy. I dlatego teraz jest więcej niż jedna wersja wydarzeń. W tym przykładzie jedna gałąź rozwidlenia jest prawdziwa, a druga fałszywa. Prawdziwa to ta, w której Dan zapłacił Pete'owi za pizzę, a fałszywa to ta, w której próbował zapłacić tymi samymi bitcoinami swojemu koledze Fredowi. Pamiętajcie, że każdy blok dodawany do łańcucha musi zawierać zadanie "proof of work", a raczej rozwiązanie tego zadania. Inaczej łańcucha nikt nie zaakceptuje. Jeśli więc Dan chce oszukać system, musi sam potajemnie znaleźć dowód pracy. Ale już na starcie ma problem, bo w systemie istnieje dłuższy łańcuch, który ludzie zaczęli akceptować. Ponieważ tamten łańcuch już istnieje, inne węzły mogą do niego coś dodawać. Przeciętnie co 10 minut dodawany jest element. Czyli mamy w systemie dłuższy łańcuch transakcji, a Dan chce stworzyć swój, fałszywy. Aby ten łańcuch był wiarygodny, musiałby być najdłuższy. Dan musi więc podać wszystkie dowody pracy, by stworzyć ten najdłuższy łańcuch. Chcąc zrobić to samodzielnie, musi wyprzedzić istniejący ciąg dowodów pracy. Powinien rozwiązać nie jedno takie zadanie, ale kilka, żeby stworzyć łańcuch dłuższy od najdłuższego w systemie. Chce tego dokonać i skłonić ludzi, by ten łańcuch przyjęli, ponieważ zawarł tam zapis fałszywej transakcji, za to usunął dane poprzedniej transakcji z Pete'em. Aby rozwiązać zadanie, Dan musi wykorzystać całą moc obliczeniową, do której ma dostęp. To konieczne, by przedstawić dowód pracy. Szybszego sposobu jeszcze nie wymyślono. Z odcinka o dowodzie pracy pamiętacie, że rozwiązanie przypomina wygraną na loterii. Są sposoby, ale powodzenie zależy od tego, jaką macie moc obliczeniową. Im większa moc, tym więcej losów. Posiadacz jednego losu ma szansę na wygraną na loterii, ale szansa ta jest znacznie mniejsza niż szansa kogoś, kto ma tych losów wiele. I nawet jeśli wygracie, gdy mieliście mało losów, to prawdopodobieństwo kolejnych wygranych, parę razy z rzędu, maleje. A to właśnie musi zrobić Dan: kilkakrotnie wygrać na loterii, żeby uzyskać najdłuższy łańcuch. Trzeba więc zobaczyć, jaką moc obliczeniową ma Dan w porównaniu z łączną mocą obliczeniową wszystkich uczciwych węzłów. Jeśli wszystkie te węzły... Nazwijmy to "uczciwą mocą obliczeniową". Mówiąc "uczciwa moc obliczeniowa" mam na myśli łączną moc wszystkich uczciwych kopalni w sieci. Jeśli łączna moc obliczeniowa, do której mają dostęp, jest większa od mocy, do której dostęp ma Dan, to system Bitcoin będzie bezpieczny. Danowi będzie trudno stworzyć fałszywy łańcuch bloków. Nie zdoła on wyprzedzić uczciwych ludzi. Uczciwi będą częściej wygrywać na loterii i stworzą dłuższy łańcuch. Dan będzie miał pod górkę! Dan może mieć dostęp do dużej mocy obliczeniowej. Jeśli jest bardzo bogaty, ma środki... ale musiałby tej mocy mieć znacznie więcej niż wszyscy uczciwi łącznie. Gdyby grupa nieuczciwych górników zaczęła sterować transakcjami, użytkownicy straciliby wiarę w bitcoina i porzuciliby tę walutę. Nieuczciwi ponieśliby straty. Pluralizm się opłaca. Omówię jeszcze jeden aspekt bezpieczeństwa w Bitcoinie. Jeśli Dan ma ogromną moc obliczeniową potrzebną do dowodu pracy, to zamiast się szarpać, tworzyć rozwidlenie łańcucha, fałszywą transakcję itp., więcej zyska, jeśli wykorzysta tę moc obliczeniową do legalnego kopania bitcoinów. Pamiętacie, że kopalnie, które podadzą dowód pracy, dostają premię. Pewną sumę bitcoinów. Otrzymują też opłatę transakcyjną za wszystkie transakcje w bloku, które zatwierdziły. Jest to zatem ekonomiczna zachęta do uczciwości. Podsumujmy: bezpieczeństwo transakcji bitcoinowych zapewnia bariera matematyczna, czyli fakt, że Danowi trudno jest zrobić rozwidlenie łańcucha... oraz bodziec ekonomiczny, czyli korzyści z uczciwej pracy w charakterze kopalni bitcoinów.