Powrót

3. Poziom zaawansowany

Ukończono: 0%
Kroki: 0/0
  1. 1. Co to jest Taproot?
  2. 2. Mosty blockchain – co to jest?
  3. 3. Czym jest Ethereum Plasma?
  4. 4. Co to jest Ethereum Casper?
  5. 5. Co to jest dowód Zk-SNARK i Zk-STARK
  6. 6. Co to jest Selfish Minning?
  7. 7. Czym jest spoofing na rynku kryptowalut?
  8. 8. Podpisy Schnorra - co to jest?
  9. 9. MimbleWimble
  10. 10. Cyfrowe prawo własności
  11. 11. Czym są ETFy?
  12. 12. Jak sprawdzić projekt kryptowalutowy – czyli tokenomia kryptowalut
  13. 13. Czym jest atak 51% na blockchain?
  14. 14. Czym jest i jak działa DAO? 
  15. 15. Zero-Knowledge Proof- protokół, który szanuje prywatność
  16. 16. Co to jest EOSREX?
  17. 17. Co to jest Proof of Elapsed Time- dowód upływającego czasu (PoET)?
  18. 18. Mirror Protocol – co to jest?
  19. 19. Aktywa syntetyczne
  20. 20. Jak stworzyć własny NFT?
  21. 21. Czym są likwidacje DeFI?
  22. 22. Nowy system tożsamości - Polygon ID
  23. 23. Fundacja Ethereum i protokół Scroll - czym są?
  24. 24. Czym jest bizantyjska tolerancja błędów?
  25. 25. Czym jest skalowalność technologii blockchain?
  26. 26. Interchain Security- nowy protokół Cosmos (Atom)
  27. 27. Coin Mixing vs. Coin Join - definicja, możliwości i zagrożenia
  28. 28. Czym jest Ethereum Virtual Machine MEV?
  29. 29. Co to są tokeny SoulBound SBD?
  30. 30. Co to jest Lido?
  31. 31. Czym są Threshold Signatures i jak działają?
  32. 32. Technologia blockchain i cyberataki
  33. 33. Skrypt Bitcoina - czym jest i co powinieneś wiedzieć na ten temat
  34. 34. Czym jest zkEVM i jakie są jego podstawowe cechy?
  35. 35. Czy poufne transakcje na blockchainie istnieją? Co to jest Confidential Transaction?
  36. 36. Algorytmiczne stablecoiny – wszystko, co powinieneś o nich wiedzieć
  37. 37. Polygon Zk Rollups - co powinieneś wiedzieć na jego temat?
  38. 38. Co to jest Infura Web3?
  39. 39. Mantle – skalowalność Ethereum L2 – jak działa?
  40. 40. Czym jest NEAR Rainbow Bridge?
  41. 41. Liquid Staking Ethereum i tokeny LSD. Co musisz wiedzieć na ten temat?
  42. 42. 10 najlepszych blockchainowych wyroczni. Jak działają? Czym się różnią?
  43. 43. Czym jest Web3.js i Ether.js? Jakie są między nimi podstawowe różnice?
  44. 44. Czym jest StarkWare i rekurencyjne dowody ważności
  45. 45. Quant Network: Skalowalność przyszłości
  46. 46. Polygon zkEVM - wszystko, co powinieneś wiedzieć
  47. 47. Co to jest Optimism (OP) i jak działają jego rollupy?
  48. 48. Czym są węzły RPC node i jak działają?
  49. 49. SEI Network: wszystko, co musisz wiedzieć o rozwiązaniu warstwy 1 dla DeFi
  50. 50. Rodzaje mechanizmów konsensusu Proof-of-Stake: DPoS, LPoS oraz BPoS
  51. 51. Bedrock: krzywa epileptyczna, która zapewnia bezpieczeństwo!
  52. 52. Czym jest Tendermint i jak działa?
  53. 53. Pantos: jak rozwiązać problem transferu tokenów miedzy blockchainami?
  54. 54. Czym jest szyfrowanie asymetryczne?
  55. 55. Funkcja Base-58 w kryptowalutach
  56. 56. Czym jest i jak działa protokół Nostr?
  57. 57. Czym jest i jak działa most XDAI Bridge?
  58. 58. Porównanie Solidity i Rust: Wybór języka programowania w ekosystemie blockchain.
  59. 59. Czym jest Real-Time Operating System (RTOS)?
  60. 60. Czym jest i jak działa Rinkeby Testnet Ethereum?
  61. 61. Czym jest szyfrowanie probabilistyczne?
  62. 62. Czym jest Pinata w Web 3? Wyjaśniamy!
  63. 63. Czym jest EIP-4337? Czy Ethereum Account Abstraction zmieni Web3 na zawsze?
  64. 64. Czym są audyty inteligentnych kontraktów? Jakie firmy się nim zajmują?
  65. 65. Jak działa portfel AirGapped?
  66. 66. Czym jest proto-danksharding (EIP-4844) na Ethereum?
  67. 67. Czym jest i jak działa zdecentralizowana pamięć masowa?
  68. 68. Jak odzyskać kryptowaluty wysłane na niewłaściwy adres lub sieć? Praktyczny poradnik!
  69. 69. Portfel MPC i Obliczenia Wielostronne: Innowacyjna technologia dla prywatności i bezpieczeństwa.
  70. 70. Podpis progowy w kryptografii: zaawansowana technika podpisywania!
  71. 71. Adres Vanity w kryptowalutach: czym jest i jaka jest jego charakterystyka?
  72. 72. Atak Ponownego Wejścia (Reentrancy Attack) na inteligentnych kontraktach: zagrożenie dla bezpieczeństwa blockchain!
  73. 73. Slither: statyczny analizator dla smart kontraktów!
  74. 74. Sandwich Attack w DeFi: wyjaśnienie i zagrożenia!
  75. 75. Blockchain RPC dla Web3: Kluczowa technologia w świecie zdecentralizowanych finansów!
  76. 76. Re-staking: Korzyści z ponownego delegowania środków w stakingu!
  77. 77. Base: Ewolucja transakcji kryptowalutowych dzięki rozwiązaniu warstwy 2 od Coinbase
  78. 78. IPFS: Nowa era zdecentralizowanego przechowywania danych
  79. 79. Typowe luki i zabezpieczenia mostów w technologii blockchain
  80. 80. JumpNet – nowy sidechain Ethereum
Lekcja 52 z 80

52. Czym jest Tendermint i jak działa?

Bez zbędnego przedłużania, rozpoczniemy dzisiejszą lekcję od naszego głównego tematu.

Tendermint to oprogramowanie służące do spójnego i bezpiecznego replikowania aplikacji na wielu maszynach. Działa ono tak długo, jak długo mniej więcej 1/3 maszyn, na których jest uruchomione, nie ulegnie awarii. Pojęcie spójności odnosi się do procesu, w którym każda niezawodna maszyna widzi ten sam dziennik transakcji i oblicza ten sam stan.

Bezpieczeństwo i spójność stanowią kluczowy problem w systemach rozproszonych, pełniąc istotną rolę w odporności na awarie.

Czy już połączyłeś kropki? Zdolność do tolerowania awarii maszyn, nawet tych złośliwych, jest nazywana bizantyjską tolerancją błędów (BFT). Nazwa ta wywodzi się ze sposobu, w jaki transakcje są łączone w bloki. O bizantyjskiej tolerancji błędów (BFT) pisaliśmy tutaj.

Tendermint składa się z dwóch głównych komponentów: silnika konsensusu blockchain, znanego jako Tendermint Core, który zapewnia, że te same transakcje są rejestrowane na każdej maszynie w tej samej kolejności, oraz ogólnego interfejsu aplikacji, czyli Application BlockChain Interface (ABCI), odpowiedzialnego za dostarczanie transakcji do aplikacji w celu ich przetworzenia. Deweloperzy korzystają z Tendermint do replikacji stanu BFT w aplikacjach napisanych w dowolnym języku programowania i środowisku programistycznym.

Tendermint jest łatwy w użyciu, bardzo prosty do zrozumienia, wydajny i przede wszystkim użyteczny dla wielu aplikacji rozproszonych.

To oprogramowanie ma dwa sposoby programowania. Pierwszym z nich są rozproszone magazyny wartości kluczowych, takie jak Zookeeper, etcd i Consul. Wykorzystują one inny konsensus niż bizantyjska tolerancja błędów (BFT).

Drugim sposobem jest po prostu blockchain, obejmujący kryptowaluty takie jak Bitcoin, Ethereum, czy alternatywne projekty ksiąg rozproszonych, jak na przykład Hyperledger’s Burrow.

Przykładem aplikacji zbudowanej na Tendermint jest sieć Cosmos.

Architektura Tendermint

Wcześniej wspomnieliśmy, że Tendermint składa się z dwóch kluczowych elementów: Tendermint Core i Application Blockchain Interface (ABCI). Teraz przyjrzyjmy się dokładniej tym komponentom.

Tendermint Core

Tendermint Core stanowi podstawowy element całej architektury protokołu. Pełni funkcję mechanizmu konsensusu, nadzorując jednoczesne rejestrowanie transakcji na różnych maszynach. To dzięki Tendermint Core możliwe jest zapisywanie transakcji na blockchainie, zapewniając niezmienność.

Mechanizm konsensusu w Tendermint Core oparty jest na Proof-of-Stake (PoS). Losowo wybrani walidatorzy weryfikują transakcje w całym ekosystemie PoS, a bloki są dodawane tylko wtedy, gdy osiągnięty zostanie konsensus. Zagłębimy się bardziej w rolę walidatorów w osobnym akapicie tej lekcji.

Application Blockchain Interface (ABCI)

ABCI pełni rolę mostu pomiędzy Tendermint a deweloperami, którzy korzystają z jego funkcjonalności. Jest rodzajem tłumacza dla Tendermint Core, umożliwiając deweloperom budowanie aplikacji na protokole w dowolnym języku programowania.

Co ciekawe, deweloperzy mogą tworzyć projekty w sieci Cosmos, wykorzystując Tendermint Core jako połączenie między samym protokołem a zestawem do tworzenia oprogramowania (SDK) Cosmos.

Tendermint-walidatorzy

Działanie Tendermint jest zasadniczo proste i łatwe do zrozumienia. Protokół ten działa asynchronicznie i opiera się na mechanizmie Bizantyjskiej Tolerancji Błędów.

Uczestnicy protokołu są nazywani walidatorami. Na zmianę proponują bloki transakcji i głosują nad nimi. Bloki przekazywane są w łańcuchu, gdzie każdy blok odpowiada jednej wysokości. Jeśli blok nie zostanie dodany do łańcucha, przechodzi do następnej “rundy”, a nowi walidatorzy otrzymują propozycję tego bloku dla danej wysokości. Dodanie bloku do łańcucha wymaga dwóch etapów głosowania: pre-vote oraz pre-commit. Blok jest zatwierdzany, gdy więcej niż 2/3 walidatorów odda głos na blok w tej samej rundzie.

W bardziej zaawansowanym aspekcie działania protokołu, osoby zatwierdzające (walidatorzy) mogą nie oddać swojego głosu, być offline lub napotkać opóźnienia w sieci. W takiej sytuacji Tendermint pozwala na pominięcie danego walidatora.

Walidatorzy czekają krótko na otrzymanie pełnego bloku od wnioskodawcy przed oddaniem głosu na jego przejście “do kolejnej rundy”. Ten limit czasu sprawia, że Tendermint jest protokołem słabo synchronicznym. Jednak reszta protokołu działa asynchronicznie. Walidatorzy podejmują decyzję o postępie dopiero, gdy dany blok uzyska 2/3 głosów.

Tendermint posiada również mechanizm upraszczający, używając tego samego procesu do zatwierdzenia bloku i jego przejścia do kolejnej rundy. Przy założeniu, że mniej niż 1/3 walidatorów jest zdecentralizowana (bizantyjska), protokół zapewnia bezpieczeństwo, uniemożliwiając naruszenia bloków. Aby blok mógł być dodany do łańcucha, wprowadza kilka zasad blokowania, które regulują przepływ. Po zadeklarowaniu bloku przez walidatora, jest on blokowany na danej wysokości, a następnie odbywa się głosowanie nad tym blokiem.

Skalowalność i elastyczność Tendermint

Zalety protokołu Tendermint są liczne, a jedną z nich jest wysoka skalowalność. Protokół ten może elastycznie dostosowywać się do liczby obsługiwanych transakcji.

Jak już dowiedziałeś się na naszym uniwersytecie, wiele blockchainów i protokołów boryka się z problemem skalowalności, co prowadzi do zatorów, gdy przepustowość sieci nie nadąża za ilością działań. W rezultacie sieć staje się zatłoczona, prędkość transakcji maleje, a koszty rosną.

Tendermint osiąga swoją skalowalność dzięki zastosowaniu shardingu. Transakcje w protokole są uruchamiane na shardach, czyli mniejszych bazach danych.

Kolejną zaletą jest elastyczność. Tendermint wykazuje większą elastyczność w porównaniu do przeciętnego blockchaina, co wynika z jego modułowej struktury. Dzięki temu łatwo można oddzielić mechanizm konsensusu od interfejsu aplikacji. Deweloperzy nie muszą uruchamiać ekosystemu od podstaw – mogą bezpośrednio współdziałać z interfejsem aplikacji i ABCI.

Architektura modułowa

Wspomnieliśmy już, że Tendermint posiada unikalne cechy, prawda? Dodajmy do tego jeszcze jedną zaletę – modułową architekturę. W odróżnieniu od standardowych blockchainów, które posiadają monolityczną strukturę, Tendermint został zaprojektowany jako system z modułowymi elementami.

Monolityczna struktura oznacza, że poszczególne elementy są jednocześnie niezależne i silnie ze sobą powiązane. Natomiast modułowa architektura Tendermint ułatwia aktualizację jednego aspektu systemu bez zakłócania pracy całego. Ponadto pozwala programistom na tworzenie niestandardowych programów, nie wymagając jednoczesnego uruchamiania całej sieci.

Tendermint Core, który omówiliśmy wcześniej, jest właśnie modułowym systemem z warstwą aplikacji. Na tej warstwie deweloperzy mogą konstruować i integrować swoje aplikacje niezależnie od warstw sieci i konsensusu. Taka elastyczność umożliwia deweloperom implementację kodu bez konieczności przejmowania się pobocznymi elementami.

Pozytywne aspekty modułowej architektury Tendermint obejmują:

  1. Uproszczenie procesu tworzenia aplikacji.
  2. Możliwość budowania aplikacji przy użyciu różnych języków programowania.
  3. Bezproblemowe wdrażanie różnorodnych zdecentralizowanych aplikacji.

Podsumowanie

Tendermint to fascynujący i innowacyjny protokół, który pełni rolę silnika dla łańcuchów blockchain. Śmiało można stwierdzić, że umożliwia deweloperom realizację wielu interesujących zadań. Jednym z najważniejszych aspektów jest możliwość budowania aplikacji przy użyciu dowolnego języka programowania.

Podstawowe elementy Tendermint, czyli Tendermint Core i ABCI stanowią fundamenty tego protokołu. Cały ekosystem wyróżnia się wysoką skalowalnością, integralnością i modułowością.