Síť a uzly

Jak se bloky šíří, co je plný uzel a co ověřuje tvůj telefon.

Co se naučíš: Pochopíš, jak se bloky šíří a proč síť nepotřebuje žádnou autoritu.

6 min čtení + cvičeníNavazuje na:🛠️ Postav si blockchain

Blockchain z předchozích kapitol běžel v jednom procesu. Skutečná síť je tisíce počítačů, které si navzájem nevěří, nemají žádného koordinátora a přesto se shodnou. Tahle kapitola vysvětluje, jak se to dělá a co přesně ověřuje tvůj telefon.


Jak se blok dostane ke všem

Klíčový je ten prostřední krok. Uzel nikdy nevěří tomu, co dostal. Zkontroluje si práci, řetězení, podpisy, zůstatky a pravidla emise sám. Až potom blok šíří dál.

Z toho plyne vlastnost, která se často připisuje magii: síť nepotřebuje autoritu, protože každý účastník je sám sobě auditorem. Neplatný blok se prostě nerozšíří, protože ho první soused zahodí.


Plný uzel versus lehký klient

Plný uzelLehký klient (SPV)
Co stahujevšechny bloky, dnes stovky GBjen hlavičky, desítky MB
Co ověřujeúplně všechno sámpráci a Merkle důkazy
Čemu musí věřitničemutomu, že mu nikdo neposílá jen část pravdy
Kdo to jeburzy, provozovatelé, nadšencipeněženka v telefonu

Lehký klient používá právě Merkle důkazy z dřívější kapitoly: umí ověřit, že transakce je v bloku, který má dost práce. Neumí ale ověřit, že v tom bloku není něco navíc, co pravidla porušuje. Tomu se říká, že SPV má slabší bezpečnostní model, a je dobré to vědět, než se řekne „ověřuji si to sám".


Mempool: čekárna před blokem

Odeslaná transakce nejde do bloku, jde do mempoolu, tedy do fronty čekajících transakcí u každého uzlu. Miner si z ní vybere, co se mu vyplatí, obvykle podle poplatku za bajt.

Odtud plynou dva jevy, které uživatele překvapují:

  • Transakce může čekat hodiny. Když nabídneš málo, prostě se na tebe nedostane, dokud fronta neprořídne. Není to chyba, je to aukce.
  • Mempool není jeden. Každý uzel má vlastní a mohou se lišit. Proto se občas transakce „ztratí": nikdy se nerozšířila dost daleko.

Co když se uzly neshodnou na pravidlech

Tady je rozdíl, který stojí za zapamatování:

Soft fork je zpřísnění pravidel. Nové uzly odmítají něco, co staré uzly ještě povolují. Starý uzel nové bloky pořád přijme, takže se síť nerozdělí, pokud novou verzi přijme většina výkonu.

Hard fork je rozvolnění nebo změna pravidel. Nové bloky jsou pro staré uzly neplatné, takže kdo neaktualizuje, zůstane na jiném řetězu. Odtud pocházejí všechna ta rozdělení, po kterých existují dvě měny se společnou historií.

Podstatné je, že o tom nerozhoduje nikdo. Rozhodne, co si uzly a mineři nainstalují, a to je politický proces bez hlasovacích lístků.


Cvičení

  1. Proč nemůže miner vyrobit blok, který si přidělí milion coinů odměny?
  2. Tvoje transakce visí v mempoolu tři hodiny. Vyjmenuj tři možnosti, co se stalo, a jak je od sebe odlišíš.
  3. Proč je soft fork bezpečnější změna než hard fork, a co je na tom zrádné?
Náčrt řešení: rozbal, až si cvičení zkusíš sám
  1. Protože odměnu ověřuje každý uzel nezávisle proti pravidlům emise. Blok s nesprávnou odměnou je neplatný a první soused ho zahodí, takže se vůbec nerozšíří. Miner může navrhnout cokoli, ale platnost neurčuje on. Tohle je zároveň nejlepší odpověď na otázku, proč není mining důvěryhodná role: minerovi nemusíš věřit, protože jeho výstup si zkontroluješ.
  2. Nízký poplatek, nedostatečné rozšíření, nebo konflikt s jinou transakcí. Odlišíš to takhle: podívej se na aktuální ceny poplatků, a pokud je tvůj výrazně pod hranicí, je to ono. Zkontroluj transakci u víc nezávislých uzlů nebo prohlížečů, a pokud ji některé nevidí, nerozšířila se. A ověř, jestli neutrácíš vstupy, které už jsi použil jinde. Řešením bývá zvýšení poplatku u téže transakce, pokud to peněženka umí.
  3. Soft fork zpřísňuje, takže staré uzly nové bloky pořád přijímají a síť se nerozdělí. Zrádné je, že starý uzel sice bloky přijímá, ale nekontroluje nová pravidla, takže nevědomky spoléhá na to, že je vynucuje většina výkonu. Formálně tedy zůstává v síti, ale jeho bezpečnostní model se zhoršil, aniž by o tom věděl.

Shrnutí

  • Blok se šíří tak, že ho každý uzel nejdřív sám ověří a teprve pak pošle dál.
  • Síť nepotřebuje autoritu, protože každý účastník je sám sobě auditorem.
  • Plný uzel ověřuje všechno, lehký klient jen práci a Merkle důkazy. Má slabší model.
  • Transakce čeká v mempoolu a o zařazení rozhoduje aukce poplatků.
  • Soft fork zpřísňuje a síť drží, hard fork rozděluje. Rozhoduje o tom, co si kdo nainstaluje.
Proč síť nepotřebuje žádnou autoritu, která by kontrolovala bloky?

Protože každý uzel ověřuje každý blok sám: práci, řetězení, podpisy, zůstatky i pravidla emise. Neplatný blok se nerozšíří, protože ho první soused zahodí a nepošle dál. Minerovi tedy nikdo nemusí věřit, jeho výstup se dá zkontrolovat.

Jaký je rozdíl v bezpečnosti mezi plným uzlem a peněženkou v telefonu?

Plný uzel ověřuje všechna pravidla sám a nemusí věřit nikomu. Lehký klient stahuje jen hlavičky bloků a pomocí Merkle důkazů ověří, že transakce je v bloku s dostatečnou prací. Neumí ale ověřit, že v bloku není něco, co pravidla porušuje, takže spoléhá na to, že většina sítě je poctivá.

Čím se liší soft fork od hard forku?

Soft fork pravidla zpřísňuje, takže staré uzly nové bloky pořád přijímají a síť zůstává jedna. Hard fork pravidla rozvolňuje nebo mění tak, že nové bloky jsou pro staré uzly neplatné, a kdo neaktualizuje, zůstane na jiném řetězu. Odtud vznikají dvě měny se společnou historií.