Aktualny czas:0:00Całkowity czas trwania:11:32
0 punktów energii
Uczysz się do testu? Skorzystaj z tych 8 lekcji na temat Pieniądze, bankowość i banki centralne.
Zobacz 8 lekcji
Transkrypcja filmu video (w języku angielskim)
Bitcoin to w istocie łańcuch podpisów cyfrowych odzwierciedlających drogę monety przez system. Zresztą chyba lepiej jest wyobrażać sobie, że bitcoin to wpis do księgi rachunkowej, a nie fizyczna moneta. W księdze rachunkowej znajduje się historia transakcji, tak jak w systemie Bitcoin, natomiast przy monecie fizycznej nie ma zarejestrowanej historii, nie wiemy, gdzie moneta była w przeszłości. W tym kontekście można by uznawać transakcję za podpisane cyfrowo oświadczenie, że jedna osoba zamierza posiadane przez siebie bitcoiny przekazać innym osobom. Gdy mówię, że ktoś posiada ileś bitcoinów, to istnieje zapis o poprzednich transakcjach, na które wszyscy się zgodzili, a osoba teraz przekazująca bitcoiny była odbiorcą w poprzednim ich transferze. Wiem, to trochę zawiłe, abyście więc lepiej zrozumieli mechanizm, na przykładzie objaśnię proces zawarcia takiej transakcji. Mamy zatem osobę... Nazwijmy ją Alicją. Tego imienia często używamy w kryptografii. Alicja chce przekazać trochę bitcoinów Bobowi. Powiedzmy, że ma zamiar... Alicja zamierza przekazać Bobowi 50 bitcoinów. Pamiętajcie, że osoba dokonująca transakcji nie robi tego pod prawdziwym, rzeczywistym nazwiskiem. W Bitcoinie używa konkretnej tożsamości, pseudonimu. Ten pseudonim odpowiada publicznemu kluczowi weryfikacyjnemu w standardzie podpisu cyfrowego. Zatem tożsamość Alicji w systemie to publiczny klucz weryfikacyjny, który nazwiemy "VK-A". Klucz weryfikacyjny Alicji. I powiedzmy, że klucz weryfikacyjny Boba to "VK-B". Te klucze są używane w standardach podpisu cyfrowego. Alicja wygenerowała swój klucz i upubliczniła go, Bob zrobił to samo i teraz każde ma w systemie tożsamość, czyli ciąg znaków odpowiadający publicznemu kluczowi weryfikacyjnemu w standardzie podpisu cyfrowego. Pamiętajcie, że te klucze odpowiadają też wartościom prywatnym. Każdy posiadacz klucza publicznego ma również skojarzony z nim klucz prywatny. Nazwiemy ten prywatny, tajny klucz tutaj służący do podpisywania, "SK-A". I niech klucz Boba nosi nazwę "SK-B". Te klucze nie będą ujawniane. Alicja w przeszłości zawarła trzy transakcje z innymi osobami. Dostała 25 bitcoinów od Carol, mającej klucz "VK-C". Powiedzmy też, że dostała 20... 20 bitcoinów od Davida i jeszcze 20 od Teda. Te sumy odpowiadają różnym osobom, które kiedyś przekazały Alicji bitcoiny. Jak widać, Alicja ma teraz 65… 20 + 20 + 25 bitcoinów. W efekcie posiada ich wystarczająco dużo, by móc przekazać 50 Bobowi. Zapis transakcji między Alicją a Bobem będzie zawierać informacje o transakcjach poprzednich, kiedy Alicja otrzymała bitcoiny. Wszystko to zostało odnotowane w systemie i upublicznione jak przy każdej transakcji. Alicja może więc wziąć jakieś reprezentacje tych transakcji i włączyć je do nowej transakcji z Bobem. Tym samym mówi mu: "Tak, otrzymałam bitcoiny, a teraz przekażę pewną ich część tobie". Nie musi dołączać wszystkich danych tamtych transakcji do zapisu transakcji z Bobem. Dane poprzednich transakcji wprowadzi do kryptograficznej funkcji skrótu, żeby uzyskać serię skrótów. Ma zatem skrót transakcji z Carol, skrót transakcji z Davidem oraz skrót transakcji z Tedem. Włączy te wszystkie skróty do zapisu transakcji. Skróty pozwolą wam, jak zresztą każdemu, sprawdzić łańcuch własności tych bitcoinów. Bo można wziąć zapisy wszystkich poprzednich transakcji, przecież jawne, zastosować do nich kryptograficzne funkcje skrótu i sprawdzić, czy skróty, zestawione z zapisami transakcji, mają wartości "skrót C", "skrót D" i "skrót T". A to z kolei daje coś w rodzaju kryptograficznej gwarancji... Kryptograficzne funkcje skrótu gwarantują nam, że Alicja była odbiorcą w transakcjach z tymi osobami. Mamy więc historię, którą możemy zapisać, i w ten sposób zyskujemy pewność. Używając kryptograficznych funkcji skrótu, upewniamy się, że Alicja nie mogła łatwo oszukać systemu. W tym momencie transakcji... może to odkreślę, żebyście widzieli, gdzie są dane... W tym momencie już wiadomo, że Alicja posiada te 65 bitcoinów. Jest wystarczająco dużo informacji, więc każdy może się przekonać, że ona ma te bitcoiny. Ten etap transakcji można uznać za dane wejściowe. Dane wejściowe tej transakcji. Ale danym wejściowym na ogół towarzyszą dane wyjściowe. U mnie będą tutaj, zapiszę. W danych wyjściowych Alicja musi zawrzeć listę odbiorców swoich bitcoinów. Skoro zaś chce przesłać te bitcoiny Bobowi, to musi określić jego tożsamość w systemie, a to jest, jak wspomniałem, klucz publiczny Boba. Zatem Alicja wpisze "VK-B" albo zeskanuje jego kod QR. W tej fazie musi też zapisać, ile monet chce przekazać Bobowi. Założyliśmy, że Alicja chce przesłać mu dokładnie 50 bitcoinów. Wpisze zatem "50". Właściwie pojawi się inna suma, ale dla Boba będzie 50 bitcoinów. Alicja chce dostać resztę, bo przecież ma 65 bitcoinów, a Bobowi przekazuje tylko 50. Może postanowić, że 14 bitcoinów wróci do niej jako reszta. 14 bitcoinów zostanie przypisanych do jej klucza publicznego. Wtedy Alicja weźmie te wszystkie dane transakcji, wartość wejściową oraz wyjściową, i podpisze je cyfrowo. Użyje klucza do składania podpisu. Za pomocą tego klucza cyfrowo podpisze dane. Podpis dołączy do treści zapisu transakcji. Tak powiąże swoją tożsamość z zapisem transakcji. Stanie się tak, bo używamy standardu podpisu cyfrowego. Każdy, kto zna klucz publiczny Alicji, który przecież sama upubliczniła, potwierdzi, że tylko ona mogła stworzyć ten blok. Bo teoretycznie tylko ona może złożyć podpis odpowiadający jej kluczowi publicznemu. Tylko ona, teoretycznie, ma prywatny klucz do podpisywania odpowiadający jej kluczowi publicznemu. Te informacje zostaną rozesłane... dane transakcji trafią do wszystkich węzłów sieci Bitcoin. Każdy w sieci będzie teraz wiedział, że "VK-A" próbuje wysłać 50 bitcoinów do "VK-B". Może zauważyliście rozbieżność: Alicja zaczynała z 65 bitcoinami po stronie wartości wejściowej, ale wartość wyjściowa to już tylko 50 + 14, czyli 64 bitcoiny. Co się zatem dzieje z tym jednym, ostatnim bitcoinem? Został jeden bitcoin, jeszcze nierozliczony. Otóż ten bitcoin posłuży jako opłata transakcyjna. Alicja mówi, że ten jeden bitcoin trafi jako opłata transakcyjna do tzw. kopalni bitcoinów. Kopalnia, jak już wspominałem, jest jednostką w systemie Bitcoin. Tę funkcję na ogół pełnią wyspecjalizowane stowarzyszenia. To węzeł w sieci Bitcoin, który pomaga w szerszym uwierzytelnianiu transakcji. Co przez to rozumiem? Pomyślcie: na razie skorzystaliśmy tylko z haszowania i podpisu cyfrowego, by potwierdzić, że Alicja w pewnym momencie miała bitcoiny, publicznie ogłosiła zamiar przekazania części Bobowi, i cyfrowo podpisała tę publiczną deklarację. W rezultacie jej publiczny klucz weryfikacyjny, będący jej tożsamością w systemie, został powiązany z transakcją. Ale chociaż Bob ma potwierdzone dane, to jeszcze nie wie, czy Alicja wcześniej nie próbowała przekazać tych bitcoinów innej osobie. Powiedzmy, że Alicja ma koleżankę Ewę. Może postanowiła przesłać te bitcoiny nie tylko Bobowi. Może spróbuje przesłać je też Ewie. W tym momencie Bob nie ma pewności, że Alicja nie usiłuje robić takich machlojek. Ale choć transakcje, o których mówiliśmy, zostały upublicznione, bo Bitcoin wymaga tego zawsze, to jednak potrzebujemy zdecentralizowanego mechanizmu, bez konkretnej zaufanej osoby trzeciej. Potrzebny jest zdecentralizowany mechanizm uzgadniania kolejności zawierania transakcji, by można było rozstrzygać spory dotyczące podwójnego wydawania. Z powodu tego wymogu, tego zdecentralizowanego datowania, kopalnie pełnią bardzo ważną funkcję w systemie Bitcoin. O datowaniu transakcji opowiem w następnych filmikach.