3
IG

Matematyka tworząca blockchain i bitcoin – poradnik

Matematyka a blockchain i bitcoin

Wstęp

Zapraszam na mój blog: https://blog.patys.pl/ oraz Facebook: https://www.facebook.com/patysblog

W poprzednim poście rozpocząłem implementację własnego blockchain. http://blog.patys.pl/2017/09/29/wlasny-blockchain-implementacja-poradnik/ Teraz przejdziemy do kopania. Postanowiłem rozbić to na 3 posty.

  1. Wstęp do matematyki blockchain
  2. Kryptografia w matematyce
  3. Implementacja kopania

Te 3 posty pokryją Proof of Work, czyli udowodnienie prawidłowości transakcji na podstawie czasu i zużytej mocy obliczeniowej. Również ten wstęp do kryptografii pozwoli nam na implementację kolejnych rozwiązań. Nie tylko związanych z blockchain, lecz też na przykład z szyfrowaniem czy kluczami prywatnymi i publicznymi.

Ciało skończone

Zaczniemy od wyjaśnienia sobie czym jest ciało skończone. Na Wikipedii jest okropna, książkowa definicja, z której nie da się nic zrozumieć, a przypisy zajmują połowę treści. https://pl.wikipedia.org/wiki/Cia%C5%82o_sko%C5%84czone

Tak więc, ciało skończone jest określone pewną liczbą elementów. Coś w stylu tablicy w programowaniu. Mamy na przykład ciało skończone F19 = {0,1, …, 18}, czyli zamyka się ono w elementach od 0 do 18. Aby nie przekraczać tego zakresu używane jest modulo (mod), czyli reszta z dzielenia. Każda liczba na której wykonamy modulo zamknie się w wartości przez jaką dzielimy.

Czyli:

17 % 19 = 17 // reszta wynosi 17

11 % 19 = 11 // reszta wynosi 11

22 % 19 = 3 // reszta wynosi 3, zaczęliśmy od 0 i szliśmy do 19, tam nastąpił powrót do początku gdzie jeszcze wykonały się 3 kroki, % przerwał liczenie gdy osiągnęliśmy wartość po lewej i kazał od początku liczyć

Wrzucam zdjęcie z większą liczbą przykładów, które przygotowałem na jednym z wykładów.

Funkcje

Mamy wstęp za sobą. Teraz czas przejść do funkcji.

W kryptowalutach używa się krzywych eliptycznych. Nie jest to ciężka funkcja w zapisie. Zobaczcie:

Funkcja liniowa: y = ax + b

Funkcja kwadratowa: y = ax2 + bx + c

Funkcja sześcienna: y = ax3 + bx2 + cx + d

Funkcja eliptyczna: y2 = x3 + ax + b

Tak więc funkcja eliptyczna niewiele się różni pod względem zapisu w porównaniu do funkcji sześciennej. Jednak jej wygląd i właściwości idealnie nadają się do szyfrowania.

Bitcoin

Każdy kto zobaczy jaką funkcją opisany jest bitcoin może nie uwierzyć, że jest ona w stanie zapewnić bezpieczeństwo.

y2 = x3 + 7

A tak wygląda wykres tej funkcji:

Jednak za tą prostotą kryje się wspaniałe rozwiązanie. Dzięki własnościom takiej funkcji idealnie nadaje się do szyfrowania. Skupimy się na dwóch operacjach: dodaniu punktów i podwojeniu punktu.

Dodanie punktów

Zaczniemy od dodania dwóch punktów.

Oznaczymy sobie dwa punkty: P i Q. Linia która przetnie te 2 punkty wyznaczy nam R. To R należy jedynie odbić względem osi X i mamy sumę tych punktów. Najprościej wytłumaczyć to patrząc na rysunek:

Tak więc widzimy, że P jest liczbą ujemną. Q to liczba dodatnia, jednak ma małą wartość. Łatwo więc zauważyć, że wynik będzie ujemny. Tak więc linia łącząca te dwa punkty przetnie wykres w jeszcze jednym miejscu. Będzie to punkt R. Jeśli go odbijemy na drugą stronę, otrzymamy R’ = P + Q

Podwojenie punktu

Służy do wyznaczenia stycznej do punktu, który ma być podwojony. Czyli P + P = R (na rysunku zapomniałem dorysować styczną). Przechodzi ona przez punkt P i punkt R, czyli jedynie przez dwa punkty. W przypadku dodania punktów mieliśmy przecięcie w trzech miejscach.

Dodanie punktu i podwojenie punktu jest wykorzystywane w mnożeniu skalarnym: R=bP.

Tutaj posłużyło nam do uproszczenia zapisu i rozbicia go na cztery operacje. Dwie dodania punktu i dwie podwojenia punktu.

Podsumowanie

Jest to ciężki temat. Ja sam się nie czuję w nim zbyt swobodnie. To jest wstęp do drugiej części, którą postaram się niedługo wrzucić. Pokażę tam jak na podstawie wiedzy z tego posta, obliczyć klucz publiczny i prywatny. A w ostatniej części wyjaśnię jak działa kopanie i zrobimy implementację.

Zapraszam Was do komentowania i zadawania pytań. Postaram się odpowiedzieć jak najlepiej i wyjaśnić wszelkie niejasności.

Tutaj źródła na podstawie których zagłębiałem się w temat:

http://kryptopolonia.info/matematyka-kryjaca-sie-za-bitcoin/

https://eng.paxos.com/blockchain-101-foundational-math

Zapraszam również do subskrypcji email. https://blog.patys.pl/subskrybuj/ Przygotuję materiały, które będę tam publikował. Pojawi się tam też cała seria przepisana do postaci książki w formie pdf.



spoko
Serwis FxParkiet.pl stanowi platformę umożliwiającą Użytkownikom wymianę informacji na temat Forex, szeroko rozumianego rynku finansowego oraz korzystanie z narzędzi analitycznych pozwalających  na lepsze zobrazowanie zasad funkcjonowania gospodarki. Każdy podmiot, a tym samym Użytkownik Serwisu FxParkiet.pl, który korzysta z jego treści zobowiązany jest do zastosowania się do jego Regulaminu. Właściciel Serwisu FxParkiet.pl – FK Capital Sp. z o.o. z siedzibą w Częstochowie (KRS: 0000542919, NIP: 949-220-00-04, REGON: 360779160) nie ponosi żadnej odpowiedzialności za szkody i konsekwencje powstałe w skutek niezastosowania się do Regulaminu Serwisu FxParkiet.pl. przez Użytkownika. Treść Serwisu FxParkiet.pl ma charakter wyłącznie informacyjny i nie stanowi rekomendacji ani porady inwestycyjnej w rozumieniu Rozporządzenia Ministra Finansów z dnia 19 października 2005 r. (Dz. U. z 2005 r. Nr 206, poz. 1715) w sprawie informacji stanowiących rekomendacje dotyczące instrumentów finansowych, ich emitentów lub wystawców. Informacje uzyskane z Serwisu FxParkiet.pl nie mogą być bezpośrednią i samoistną podstawą działań inwestycyjnych Użytkownika. Każda decyzja inwestycyjna użytkownika powinna być starannie przemyślana, a działanie oparte na zweryfikowanych informacjach. Właściciel Serwisu FK Capital Sp. z o.o. i Serwis FxParkiet.pl nie ponosi żadnej odpowiedzialności za decyzje inwestycyjne podjęte na podstawie wyżej wymienionych treści, a w szczególności za straty z nich wynikłe. Niezastosowanie się do postanowień Regulaminu Serwisu FxParkiet.pl będzie skutkowało konsekwencjami wskazanymi w niniejszym regulaminie. Każdy podmiot przed rozpoczęciem korzystania z Serwisu FxParkiet.pl zobowiązany jest do dokładnego i rzetelnego zapoznania się z niniejszym Regulaminem.
Live

int(0)