Przechowywanie danych Przechowywanie dużej ilości informacji np. danych transakcyjnych dotyczących Bitcoin musi odznaczać się odpornością na zmiany przez co musi mieć możliwość szybkiego wykrywania zmian w prosty sposób.

Łańcuch danych powiązanych zwanych również listą powiązaną powstaje gdy każdy element danych zawiera referencję  do innego elementu danych. Strukturę taką możemy nazwać łańcuchem bloków. Pierwszy element nazwany został Genesis Block. Każdy kolejny blok danych został zbudowany w taki sposób iż zawiera wygenerowaną wartość hash sha256 z bloku poprzedniego, dzięki czemu posiadamy referencję do istniejącego bloku poprzedniego i gwarancję, że cały łańcuch jest spójny.

Mechanizm działania Omówiona wyżej struktura powoduje że dane są wrażliwe na zmiany ponieważ są połączone referencjami. Referencja zostaje zerwana gdy dane do których się odnoszą zostaną zmienione po ich utworzeniu. Zaobserwowanie zerwania referencji w strukturze jest dowodem na to że dane zostały naruszone. Możemy wówczas uznać, że cała integralność danych bloków została zmieniona.

Podatność na zmiany Moc obliczeniowa współczesnych komputerów nieustannie rośnie. Powoduje to że obliczanie wartości hash jest niemalże natychmiastowe. Spowodowało to konieczność wprowadzenia czasochłonności obliczeń przez wprowadzenie warunków koniecznych do utworzenia nowego bloku danych w łańcuchu. Stałe zwiększanie czasochłonności obliczeń skrótów hash powoduje, że cały łańcuch bloków jest odporny na wzrost mocy obliczeniowej.

Założenia dla poszukiwaczy Założenia dla poszukiwaczy wartości skrótu dla kolejnych bloków są następujące:

Dane, które nie mogą być zmieniane Występują wartości zmienne oznaczone jako nonce Funkcja skrótu którą należy zastosować – musi posiadać wartość skrótu poprzedniego bloku Funkcja skrótu musi zawierać wartość skrótu bloku root mercle Wyznaczone warunki dla skrótu – zwane poziomem trudności nBits

Bardzo ważnym faktem jest że poszukiwaną wartość możemy stworzyć tylko i wyłącznie poprzez poszukiwanie odpowiedniego skrótu zgodnego z postawionymi warunkami. Poza wartością nonce która jest zmienną wartością którą podstawiamy pozostałe wartości są stałe. W chwili uruchomienia algorytmu poszukiwania skrótu rozpoczynamy “kopanie” czyli poszukiwanie wartości skrótu.

Jest to swego rodzaju zagadka kryptograficzna, która często nazywana jest dowodami pracy, bo ich rozwiązanie udowadnia że ktoś wykonał pracę niezbędną aby tego dokonać.

Nagłówek bloku Nagłówek bloku ma długość 80 bajtów składa się z następujących elementów.

+ Nagłówek blokuDługość w bajtachNazwaTyp danychInformacja4wersjaint32_tNumer wersji – oznacza które reguły walidacyjne zostały zastosowane32hash poprzedniego blokucharWartość wygenerowanego poprzedniego skrótu hash32merkle rootcharWartość skrótu korzenia danych tzw. mercle root4stempel czasowyuint32_tWartość liczbowa reprezentująca czas w formacie Unix4nBitsuint32_tWartość określająca poziom trudności poszukiwanego skrótu.  Wartość podstawiana jest do wzoru4nonceuint32_tWartość zmiennej którą należy podstawić aby odnaleźć odpowiedni skrót

Przypisy

Linki zewnętrzne Strona główna organizacji Bitcoin

Kategoria:Blockchain Kategoria:Otwarte oprogramowanie