Web3 & DApp Development Fundamentals · Lekcja

Bloki i łańcuchy

Jak łączą się bloki

Lekcja 1 z 413 kroki

Bloki i łańcuchy to bezpłatna lekcja Web3 & DApp Development Fundamentals na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Web3 & DApp Development Fundamentals, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Web3 & DApp Development Fundamentals zawiera 4 lekcji w sumie.

Czym jest blok

Blok to podstawowy kontener w blockchainie. Zawiera zestaw zweryfikowanych transakcji oraz metadane, które łączą go z resztą łańcucha.

Każdy blok składa się z dwóch głównych części:

  • Nagłówek — metadane (znacznik czasu, hashe, nonce)
  • Ciało — lista transakcji

Budowa nagłówka bloku

Nagłówek jest niewielki, ale ma duże znaczenie. Typowy nagłówek w stylu Ethereum zawiera:

  • previousHash — hash poprzedniego bloku
  • timestamp — czas utworzenia bloku
  • merkleRoot — odcisk palca wszystkich transakcji
  • nonce — wartość używana w mechanizmie konsensusu

To nagłówek jest haszowany w celu identyfikacji bloku.

block Header {
    previousHash: 0x9f1c...a3
    timestamp:    1717000000
    merkleRoot:   0x4be2...07
    nonce:        42891
}

Jak bloki łączą się ze sobą

Każdy blok przechowuje hash poprzedniego bloku. To właśnie to pojedyncze pole zmienia zbiór bloków w łańcuch.

Ponieważ każdy blok wskazuje wstecz, bloki tworzą uporządkowaną sekwencję, do której można tylko dopisywać elementy, sięgającą aż do pierwszego bloku.

Block 0 (Genesis)
   |  hash = 0xAAA
   v
Block 1  prevHash = 0xAAA  hash = 0xBBB
   |
   v
Block 2  prevHash = 0xBBB  hash = 0xCCC

Blok genezy

Blok genezy to pierwszy blok w dowolnym blockchainie. Jest wyjątkowy, ponieważ nie ma rodzica — jego previousHash zazwyczaj składa się wyłącznie z zer.

Każdy inny blok można prześledzić aż do bloku genezy, który pełni funkcję wspólnego źródła zaufania dla całej sieci.

Genesis = {
    previousHash: 0x0000000000000000
    timestamp:    1438269973
    transactions: []
}

Dlaczego połączenie wstecz ma znaczenie

Połączenie wstecz sprawia, że manipulacje są oczywiste. Jeśli ktoś zmieni transakcję w starym bloku, hash tego bloku ulegnie zmianie.

Jednak następny blok przechowuje stary hash w polu previousHash, więc połączenie zostaje przerwane. Niezgodność można natychmiast wykryć.

Łańcuchy pozwalają tylko na dopisywanie

Blockchainy to struktury danych, do których można tylko dopisywać elementy. Można dodawać nowe bloki na końcu, ale nie można wstawiać ani usuwać bloków w środku bez zerwania każdego kolejnego połączenia.

Ta właściwość stanowi podstawę niezmienności blockchaina.

Wysokość bloku

Wysokość bloku to liczba bloków znajdujących się między danym blokiem a blokiem genezy. Blok genezy ma wysokość 0, następny blok ma wysokość 1 i tak dalej.

Wysokość określa jednoznaczną pozycję każdego bloku i pozwala sieci uzgodnić, który łańcuch jest najdłuższy.

height 0 -> Genesis
height 1 -> Block 1
height 2 -> Block 2
...
height N -> latest block

Transakcje wewnątrz bloku

Ciało bloku zawiera uporządkowaną listę transakcji. Kolejność ma znaczenie: określa stan końcowy po zastosowaniu bloku.

Po sfinalizowaniu bloku zawarte w nim transakcje — a także ich kolejność — pozostają na zawsze niezmienione.

Block 12 body:
  tx[0]: Alice -> Bob   (5 ETH)
  tx[1]: Bob   -> Carol (2 ETH)
  tx[2]: Carol -> Dave  (1 ETH)

Rozmiar i limity bloków

Bloki nie mogą rosnąć bez ograniczeń. Każdy łańcuch ustala limit — Bitcoin stosuje limit wyrażony w bajtach, natomiast Ethereum ogranicza całkowitą ilość gasu, którą może zużyć blok.

Limity te sprawiają, że bloki są wystarczająco małe, aby szybko propagować je w sieci.

Identyfikowanie bloku za pomocą hasha

Tożsamość bloku określa jego hash — wynik przepuszczenia jego nagłówka przez kryptograficzną funkcję skrótu.

Zmiana dowolnego pola nagłówka całkowicie zmienia hash. Dlatego hashe działają jak odciski palca bloków, po których można wykryć manipulację.

blockHash = sha256(
    previousHash + timestamp +
    merkleRoot + nonce
)

Połączenie wszystkich elementów

Blockchain to po prostu lista połączonych bloków, w której każde połączenie jest kryptograficznym hashem poprzedniego bloku.

To połączenie uporządkowania, haszowania i zapisu, do którego można tylko dopisywać elementy, sprawia, że łańcuch jest godny zaufania bez centralnego organu.

Szybkie sprawdzenie

Sprawdź swoją wiedzę o tym, jak łączą się bloki.

Podsumowanie: bloki i łańcuchy

Dowiedzieli się Państwo, że:

  • Blok ma nagłówek (metadane) i ciało (transakcje)
  • Bloki łączą się dzięki przechowywaniu wartości previousHash
  • Blok genezy jest korzeniem i nie ma rodzica
  • Łańcuchy pozwalają tylko na dopisywanie elementów, dzięki czemu są niezmienne
  • Tożsamość bloku określa jego hash

Następnie omówimy, jak drzewa Merkle’a wydajnie podsumowują wszystkie transakcje.

Bezpłatny start

Ucz się Web3 & DApp Development Fundamentals dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
29
Lekcje
105

Często zadawane pytania

Czy lekcja „Bloki i łańcuchy” jest bezpłatna?

Tak — pełny tekst „Bloki i łańcuchy” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Web3 & DApp Development Fundamentals, przejdź na CoddyKit PRO. Kurs Web3 & DApp Development Fundamentals zawiera 4 lekcji w sumie.

Co nauczysz się w „Bloki i łańcuchy”?

Jak łączą się bloki Ćwiczysz Web3 & DApp Development Fundamentals z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Web3 & DApp Development Fundamentals?

Nie wymagamy żadnego doświadczenia. Web3 & DApp Development Fundamentals w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Bloki i łańcuchy”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Web3 & DApp Development Fundamentals?

Tak. Każda lekcja Web3 & DApp Development Fundamentals zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Bloki i łańcuchy
  2. Drzewa Merkle'a
  3. Haszowanie w blockchainie
  4. Rozproszone rejestry
← Powrót do Web3 & DApp Development Fundamentals