Jakiś czas temu napisałem na portalu devstyle.pl kolejny artykuł dotyczący technologii blockchain. Wpis dotyczy protokołu blockchain czyli wykorzystania metodyki w praktyce. Jest to pierwsza część skupiona wokół komunikacji między węzłami oraz algorytmu konsensusu. Jak w poprzednim wpisie poza teorią jest też implementacja wraz z opisem. Jeśli interesuje Cię ten temat to zapraszam do czytania tutaj: Protokół blockchain cz. 1.

2 komentarze

  1. Hej!

    Przeczytałem Twój wpis na temat przykładowej implementacji blockchaina. Zwięźle, a jednocześnie wyjaśnione w zrozumiały sposób – dobra robota! 🙂

    Zastanawia mnie tylko jedna rzecz. Mianowicie, zasada wyliczania nonce. Wartość ta liczona jest tylko na podstawie nonce poprzedniego bloku i hasha go poprzedzającego.

    Oznacza to, że nonce dla aktualnego bloku jest liczone zanim zostaną dodane do niego transakcje, co umożliwia manipulację w transakcjach.

    Przykładowo:

    1. Kopiesz blok (wykonałeś pracę) i go publikujesz;
    2. Kolejny węzeł bierze Twój blok, manipuluje w nim transakcjami (nonce się nie zmienia, Twoja praca poszła na marne);
    3. Węzeł kopie blok z nowymi transakcjami, ogłasza z poprzednim blokiem ze sfałszowanymi transakcjami. Nikt się nie orientuje, walidacja przechodzi.

    Czy nie powinno być tak, że nonce jest wrażliwe na jakąkolwiek zmianę w bloku?

    Swoją drogą, opisałem kiedyś szczegółowo jak wygląda protokół w kontekście Bitcoina, zapraszam 🙂
    http://mikoleusz.pl/protokol-bitcoina-od-srodka/

    1. Hej, Dzięki za komentarz. Nonce ma bezpośredni wpływ na hasza bloku tak samo jak transakcje. Jeśli dokonasz jakichkolwiek zmian w bloku to łańcuch nie przejdzie walidacji i podczas rozwiązywania konfliktów i twój zmieniony łańcuch zostanie odrzucony. Nonce to tylko składowa bloku i w mojej ocenie sposób jego obliczania może być różny a co za tym idzie nie musi być wrażliwy na zmiany w bloku, ale może.

      pawellipowczan

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *