Wpis dotyczący technologii księgi rozproszonej i mechanizmów konsensusu pojawił się jako pierwszy w Coinpedia Fintech News

Wstęp

Blockchain rozwija się jak nigdy dotąd, podobnie jak ekosystem programistów. Zrozumienie podstawowych koncepcji blockchain jest koniecznością dla wszystkich związanych z tą dziedziną. Jednym z takich tematów, któremu należy poświęcić szczególną uwagę, aby zapewnić mocne podstawy, jest technologia księgi rozproszonej i mechanizm konsensusu. W tym artykule zbadamy różne aspekty DLT i kompleksowo przeanalizujemy mechanizm konsensusu. Powinniśmy zaczynać?

Co to jest technologia księgi rozproszonej (DLT)? 

Distributed Ledger Technology (DLT) to zdecentralizowany cyfrowy system przechowywania danych, który rejestruje transakcje i wszystkie informacje na ich temat w wielu miejscach jednocześnie. Jak sama nazwa wskazuje, księga rozproszona to księga współdzielona, ​​która jest replikowana przez wszystkie węzły uczestniczące w sieci. Jest to niekonwencjonalna baza danych, która nie wykorzystuje klasycznej metody klient-serwer, polegającej na przechowywaniu danych na centralnym urządzeniu lub administracji.

Cechy charakterystyczne

  • Decentralizacja: 

Nie ma centralnego organu przechowującego wszystkie niezbędne dane lub zatwierdzającego transakcje, a wszystko jest rozproszone w sieci. Jak wiemy w blockchainie, każdy węzeł przechowuje kopię księgi, co gwarantuje, że nie ma żadnych rozbieżności wynikających z jednego punktu kontroli. 

  • Przezroczystość:

Wszystkie węzły i uczestnicy mogą przeglądać księgę, zapewniając przejrzystość w całej sieci. W Ethrerneum transakcje są widoczne w eksploratorze blockchain.

  • Niezmienność:

Należy zachować szczególną ostrożność przed wykonaniem jakiejkolwiek transakcji, ponieważ po jej wykonaniu nie można jej już zmienić. Ta właściwość jest bardzo pomocna w zapobieganiu oszustwom i podwójnym wydatkom.

Porównanie z tradycyjnymi bazami danych

Tradycyjne bazy danych, takie jak SQL i MongoDB, korzystają ze scentralizowanych mechanizmów konserwacji i kontroli, dzięki czemu wszystkie uprawnienia znajdują się w jednym źródle punktowym. Ogólnie rzecz biorąc, CRUD (tworzenie, odczytywanie, aktualizowanie i usuwanie) służy do wykonywania wszelkich operacji na danych. Metoda ta jest podatna na manipulacje, uszkodzenia i straty. Z drugiej strony, technologie DLT wykorzystują słynne algorytmy konsensusu, aby zapewnić przejrzystość, integralność, bezpieczeństwo i decentralizację w zakresie utrzymywania i sprawdzania poprawności zapisów.

Rodzaje ksiąg rozproszonych  

  • Łańcuch bloków:

    • Struktura techniczna: W Blockchain dane są szczególnie przechowywane w blokach, które są następnie łączone ze sobą za pomocą zasad kryptograficznych, tworząc łańcuch bloków, przechowywanych liniowo i chronologicznie.

    • Narzędzia programistyczne: Niektóre narzędzia programistyczne to Geth, który uruchamia i wdraża kontrakty i kod Ethereum. Parity to klient Ethereum, który jest szybki, bezpieczny i niezawodny. Truffle Suite to środowisko programistyczne dla Ethereum. W ostatnim czasie znaczącym wkładem było wdrożenie dApps.

  • Skierowany graf acykliczny (DAG):

    • Wyjaśnienie techniczne: Jeśli mówimy o sieciach, nie sposób nie wspomnieć o wykresach; jedną z takich struktur jest DAG. Tutaj transakcje są ze sobą powiązane, tworząc skierowany wykres, który nie tworzy cyklu. Zapewnia to skalowalność i wydajność.

    • Narzędzia programistyczne: IOTA SDK zapewnia zestaw narzędzi dla sieci IOTA, która wykorzystuje DAG o nazwie Tangle.

  • Hashgraf:

    • Wyjaśnienie techniczne: Hashgraph opiera się na systemie plotkarskim. Węzły rozmawiają z innymi węzłami, aby wymieniać się szczegółami (zdarzeniami). Następnie wirtualne głosowanie pomaga w osiągnięciu porozumienia.

    •  Narzędzia programistyczne: Hedera Hashgraph SDK  Zawiera mnóstwo gadżetów do tworzenia zdecentralizowanych aplikacji w sieci Hedera.

Znaczenie mechanizmów konsensusu

Mechanizmy konsensusu to zestaw protokołów, których powinny przestrzegać węzły w sieci, aby uzgodnić stan księgi. Mechanizmy te służą do walidacji i uwierzytelniania transakcji. Mechanizmy te zapewniają, że wszystkie węzły w DLT zgadzają się co do stanu księgi. Mechanizmy konsensusu oznaczają niezawodność i wiarygodność systemów DLT.

Problemy rozwiązywane przez mechanizmy konsensusu:

  • Podwójne wydatki: Jest to kwestia wydawania tego samego zasobu więcej niż raz.

  • Problem generałów bizantyjskich: osiągnięcie porozumienia stwarza przeszkody, gdy istnieją wadliwe lub wrogie węzły.

Oto przykład znanej metody PoW:

zaimportuj hashlib

czas importu

def proof_of_work(blok, trudność=4):

    przedrostek = „0” * trudność

    podczas gdy prawda:

        blok[‘nonce’] += 1

        hash_result = hashlib.sha256(str(block).encode()).hexdigest()

        if hash_result.startswith(przedrostek):

            blok zwrotny, hash_result

blok = {‘transakcje’: [], ‘nonce’: 0}

czas_początkowy = czas.czas()

nowy_blok, blok_hash = dowód_pracy(blok)

czas_końca = czas.czas()

print(f”Wydobyty blok: {block_hash}”)

print(f”Czas potrzebny: {end_time – start_time} sekund”)

Wspólne mechanizmy konsensusu 

  • Dowód pracy (PoW):

    • Wyjaśnienie techniczne: Dowód pracy jest również znany jako wydobywanie. W tym mechanizmie konsensusu użytkownicy muszą rozwiązywać zagadki kryptograficzne, które ich nagradzają. Jest to konkurs, w którym pierwszy rozwiązany przechodzi przez nowy blok. Algorytm ten wykorzystuje haszowanie do zabezpieczenia łańcucha bloków. 

    • Implementacja programisty: Narzędzia do wdrażania PoW są dostarczane przez środowisko programistyczne Bitcoin, takie jak Bitcoin Core.

  • Dowód stawki (PoS):

    • Wyjaśnienie techniczne: Proof of Stake wybiera walidatorów na podstawie liczby posiadanych przez nich monet i stawki jako zabezpieczenia. Proces selekcji nie zależy tylko od stawki, ale także od czynników takich jak wiek monety i losowość. Do dodania nowego bloku wybierani są walidatorzy posiadający najniższą wartość skrótu i ​​najwyższą kwotę stawki

    • Implementacja programisty: Narzędzia i biblioteki dla PoS są dostarczane przez Ethereum 2.0 SDK

  • Delegowany dowód stawki (DPoS):

    • Wyjaśnienie techniczne:  Wykorzystuje głosowanie i delegatów do zatwierdzania transakcji i tworzenia nowych bloków.

    • Implementacja programisty: Narzędzia i biblioteki dla DPoS są dostarczane przez EOSIO SDK.

  • Praktyczna tolerancja błędów bizantyjskich (PBFT):

    • Wyjaśnienie techniczne: PBFT wymienia komunikaty między węzłami w celu osiągnięcia konsensusu. Może zarządzać i tolerować do jednej trzeciej węzłów.

    • Implementacja dla programistów: narzędzia i biblioteki dla PBFT są dostarczane przez zestaw SDK Hyperledger Fabric.

Wdrażanie mechanizmów konsensusu 

Przykłady kodu 

Oto przykładowy fragment kodu Pos:

Walidator klasy:

    def __init__(samodzielność, stawka):

        self.stawka = stawka

        własna reputacja = 0

walidatory = [Walidator(stawka) dla stawki w [100, 50, 30]]

wybrany_walidator = max(walidatory, klucz=lambda v: v.stawka + v.reputacja)

print(f”Wybrany walidator ze stawką: {selected_validator.stake}”)

Narzędzia i struktury programistyczne 

Niektóre z narzędzi programistycznych są następujące:

  • Truffle Suite: obsługuje rozwój Ethereum

  • EOSIO SDK: używany w aplikacjach DPos

  • Zestaw SDK Hyperledger Fabric: używany w korporacyjnym łańcuchu bloków przy użyciu PBFT.

Rozważania dotyczące wydajności:

Mechanizmy konsensusu są dość skalowalne i dobrze radzą sobie z rosnącą liczbą transakcji. Niektóre popularne mechanizmy, takie jak Pos, chronią przed atakami Sybil. Dzięki temu są w większym stopniu bezpieczne. PoS jest bardziej energooszczędny niż PoW. 

Wybór odpowiedniego mechanizmu konsensusu dla Twojego projektu  

  • Czynniki do rozważenia:

  1. Wymagania techniczne: Upewnij się, że mechanizmy odpowiadają niestandardowym wymaganiom, np. wolumenowi i szybkości transakcji.

  2. Potrzeby bezpieczeństwa: Upewnij się, że bezpieczeństwo i integralność danych nie są zagrożone.

  3. Skalowalność: jak dobrze wybrany przez Ciebie mechanizm jest w stanie obsłużyć wzrost liczby transakcji?

  4. Efektywność energetyczna: Przed wyborem upewnij się, że wydajność i dostępność zasobów są dostępne.

  • Przypadków użycia: 

  1. dApps: Pos służy do bezpiecznych zdecentralizowanych aplikacji.

  2. Inteligentne kontrakty: PoS można używać do inteligentnych kontraktów Ethereum.

  3. Łańcuch dostaw:  Hyperledger Fabric (PBFT) jest używany w rozwiązaniach dla przedsiębiorstw wymagających dużej przepustowości i bezpieczeństwa.

Przyszłe trendy w mechanizmach konsensusu  

Innowacje 

  • Proof of Authority (PoA): Mechanizm ten wykorzystuje do walidacji wstępnie wybrane podmioty. Używany w VeChain.

  • Mechanizmy hybrydowe: Kombinacja różnych elementów, takich jak PoS i PoW, służy do tworzenia wszechstronnych i niestandardowych mechanizmów konsensusu.

Rozwiązania skalowalne

  • Rozwiązania warstwy 2:

Lightning Network: Bitcoin korzysta z tej poprawki poza łańcuchem, aby zapewnić szybsze i tańsze przelewy. Konfiguruje ścieżki płatności pomiędzy użytkownikami. Plazma i Rollupy: Ethereum skaluje się za pomocą tych narzędzi. Zajmują się transakcjami poza łańcuchem i przedstawiają krótkie podsumowanie głównego łańcucha. Ogranicza to pracę dla głównego łańcucha bloków.

  • Fragmentowanie:

Partycjonowanie danych: Sharding dzieli łańcuch bloków na mniejsze, łatwiejsze w zarządzaniu bity, zwane również fragmentami. Każdy fragment zajmuje się transakcjami i inteligentnymi transakcjami. Odciąża to całą sieć.

Przetwarzanie równoległe: Odłamki mogą zajmować się transakcjami w tym samym czasie. To znacznie zwiększa liczbę transakcji, które sieć może obsłużyć.

Praktyczne przykłady i studia przypadków 

Aplikacje w świecie rzeczywistym

Niektóre rzeczywiste zastosowania tych mechanizmów to Bitcoiny wykorzystujące Pow, Ethereum 2.0 korzystające z PoS i Hyoperledger Fabric używane przez IBM i różne inne przedsiębiorstwa na potrzeby prywatnych łańcuchów bloków.

Przewodniki po kodzie: 

Poniżej znajduje się fragment kodu inteligentnej umowy Ethereum: (używana jest pozycja)

solidność pragmy ^0.8.0;

umowa SimpleStorage {

    uint256 publiczne przechowywane dane;

    zestaw funkcji (uint256 x) publiczny {

        przechowywane dane = x;

    }

    funkcja get() widok publiczny zwraca (uint256) {

        zwróć zapisane dane;

    }

}

Wniosek

Przyjrzeliśmy się podstawowym ideom stojącym za DLT, różnymi rodzajami rozproszonych rejestrów i różnymi sposobami osiągania konsensusu. Rozmawialiśmy o tym, dlaczego te metody są ważne, aby zapewnić bezpieczeństwo i dokładność danych. Daliśmy też kilka przydatnych rad, jak zastosować je w praktyce. Dowiedz się więcej o DLT i konsensusie. Wypróbuj różne narzędzia i systemy i pomóż w rozwoju zdecentralizowanej technologii. Twój kolejny wielki pomysł już na Ciebie czeka!

Przeczytaj także: Dlaczego język programowania Rust jest najlepszym wyborem w przypadku innowacji Blockchain