Software

Cardano (₳) síť je schopna vytvořit nový blok během několika sekund

Foto: Cardano (ADA)
Foto: cardano.org, Tag: Cardano

Kryptoměny mohly být vynalezeny jen díky mnoha významným úspěchům v kryptografii. Není překvapením, že kryptografie se používá nejen k podepisování transakcí, ale také k vytváření nových bloků. Cardano síť je schopna vytvořit nový blok během několika sekund, zatímco PoW sítí to trvá minuty. Jak je to možné? V článku se podíváme na to, jak je v síti Cardano vytvořen nový blok z hlediska kryptografie.

Bloky jsou vytvářeny pooly

V síti Cardano jsou za produkci nových bloků odpovědné uzly operátorů, kteří provozují staking pooly. Každý provozovatel poolu potřebuje vygenerovat několik párů klíčů a zaregistrovat se jako producent bloků, což mu umožní stát takzvaným vedoucím slotu (slot leader). Čas je v Cardano protokolu rozdělen do epochy. Každá epocha je rozdělena do slotů. Slot trvá jednu sekundu.

V každé epoše je 432,000 slotů, takže epocha trvá 5 dní. Pomocí parametru d je možné konfigurovat, jak často má být nový blok vytvořen. V současné době je parametr nastaven na hodnotu, která umožňuje síti vytvořit nový blok přibližně každých 20 sekund. To znamená, že přibližně každých 20 sekund se některý uzel stane vedoucím slotu a může vyrazit nový blok. V každé epoše je vytvořeno přibližně 21 600 bloků. Vzhledem k náhodnosti, která je implementována v protokolu, může být ve skutečnosti vytvořeno více, nebo méně bloků.

Cardano síť je schopna vytvořit nový blok během několika sekund
Cardano síť je schopna vytvořit nový blok během několika sekund

V síti Cardano každý registrovaný pool každou sekundu ověřuje, zda je právě on vedoucím slotu v daném slotu. Pokud ano, pak může vyrazit nový blok a poskytnout určitý důkaz, který je následně ověřen ostatními uzly v síti. Čím vyšší stake má pool, tím častěji se může stát vedoucím slotu. Výběr vedoucího slotu je založen na náhodnosti. V ideálním případě je v daném slotu vybrán pouze jeden vedoucí slotu. Je zřejmé, že nesmí být možné, že ve slotu bude vytvořeno mnoho nových platných bloků. Síť by se zaplavila a žádný uzel by nevěděl, jaké transakce jsou platné a jaké ne. Vždy je nutné pracovat pouze na společné většinou utvářené verzi blockchainu.

V sítích PoW musí být spotřebováno významné množství výpočetního výkonu k tomu, aby se vytvořil nový blok. Všechny pooly soutěží mezi sebou o vyřešení složité hádanky a je velmi pravděpodobné, že v daném cyklu uspěje pouze jeden pool. Také v sítích PoW se může stát, že se v cyklu vytvoří dva platné bloky. Říkejme jim blok A a blok B. V dalším cyklu se musí pooly rozhodnout, ke kterému bloku budou chtít připojit nový blok. Ve většině případů pool začne pracovat na novém bloku, jakmile je vytvořen platný blok, který pool obdrží (nebo je sám jeho autorem).

Může se stát, že několik poolů se rozhodne navázat na blok A, protože jej přijali před blokem B. Pravý opak může nastat u jiných poolů v síti, které se rozhodnout navázat na bloku B. Protože se postupem času přidá několik nových bloků. Vždy vyhraje delší řetězec, který rozhodne o tom které bloky zůstanou v blockchainu. Zbytek bloků (po rozvětvení) osiří (bloky nebudou součástí blockchainu a to včetně všech transakcí). Všimněte si, že PoW konsenzus chrání síť před vytvořením mnoha platných bloků v daném cyklu. Vytvoření bloku je finančně nákladné, protože na vyřešení hádanky se přibližně 10 minut vynakládá velké množství elektřiny.

V síti Cardano je ochrana proti zaplavení sítě spoustou platných bloků založena na kryptografii. Pouze vybraný vedoucí slotu je schopen vyrazit platný blok v daném slotu. Pool musí poskytovat kryptografický důkaz, který lze snadno ověřit jinými uzly. Není možné nějak předem odhadnout, jak vypadá důkaz, takže je nemožné podvádět. Cardano je schopno vytvořit blok levně. Pouze vedoucí slotu je schopen vytvořit v daném slotu platný blok.

Zabezpečení Cardano sítě je o klíčích

Pravděpodobně jste slyšeli, že k odeslání transakce musíte použít kryptografické klíče. Přesněji řečeno, pro tento účel se generují páry klíčů spojené s asymetrickou kryptografií. Dvojice klíčů se skládá ze soukromého klíče a veřejného klíče. Soukromý klíč je tajemstvím, které musí vlastník dobře střežit a v ideálním případě jej držet mimo internetovou síť (offline). Veřejný klíč může být publikován a všichni jej mohou vidět. Když uživatel podepíše transakci soukromým klíčem, poskytne důkaz o tom, že vlastní mince. Je možné podepsat více transakcí stejným soukromým klíčem, protože klíč není procesem podepisování kompromitován. Protistrana potřebuje k ověření podpisu odpovídající veřejný klíč.

Majitel soukromého klíče může utratit mince ADA z konkrétní adresy, která byla vytvořena prostřednictvím odpovídajícího veřejného klíče. Zbytek sítě může transakci snadno ověřit. Podpis stake certifikátu je velmi podobný proces. Pouze vlastník mincí ADA může rozhodovat o stakingu vlastních mincí. Princip je stejný. Soukromé klíče se používají k podepisování vlastníky a veřejné klíče k ověření ostatními uzly. Stake certifikáty se odesílají do sítě a ukládají se do blockchainu. Každý si to tedy může ověřit.

Kryptografie se používá také pro PoS konsenzus sítě Cardano. Existují dva typy klíčů: klíče spojené s adresami a klíče spojené s uzly. V článku si povíme hlavně o klíčích uzlů, protože nás zajímá výroba bloků. Provozovatelé sázkových poolů musí vygenerovat několik párů klíčů:

  • Operační pár klíčů. Tento klíč garantuje právo podepisovat bloky KES klíčem.
  • Pár klíčů využívají technologii Key Evolving Signature (KES). Klíč se používá k podepsání nového bloku. Klíč periodicky expiruje a je potřeba vygenerovat nový.
  • Pár klíčů spojené s technologií Verifiable Random Function (VRF). Klíč se používá ke zjištění, zda je uzel vedoucím slotu v probíhajícím slotu. Uzel to dělá každou sekundu.

Klíče se používají k vytvoření operačního certifikátu. Dále ke kontrole, zda je uzel vedoucím slotu v aktuálně probíhajícím slotu, a k podepisování bloků. Operační klíč by měly být uloženy offline, tedy nikoliv v počítači připojeném k internetu. Operační klíč umožňuje operátorům generovat nový operační certifikát pro každé KES období (časová periode, po které je nutné vygenerovat nový podpisový klíč). KES klíč je operační klíč uložený na uzlu (online) a je určený k autentizaci uzlu.

Nový operační certifikát je odeslán do sítě a uložen v blockchainu. Všechny pooly jsou zaregistrovány a každý uzel ví o všech registrovaných poolech. Operační certifikát se používá k ověření, že pool má oprávnění k produkci bloků. Certifikáty obsahují veřejné informace o poolech, jako jsou adresy, klíče a podpisy operátorů. Provozovatelé musí dobře střežit kryptografická tajemství, která jim umožňují stát se vůdci slotů a podepisovat nové bloky. Operační certifikáty představují spojení mezi offline klíči operátorů a provozními klíči.

Jak jsme řekli, certifikát provozního klíče musí být podepsán offline (offline) klíčem. Tento klíč garantuje právo podepisovat bloky skrze KES klíč, jehož platnost pravidelně expiruje po určitých epochách a který je vygenerovaný na základě parametrů z genesis bloku (první blok v blockchainu). Používá se mechanismus podobný schématu “forward secure signature scheme”. Tento mechanismus je založen na myšlence, že protivník není schopen falšovat podpisy, které byly vytvořeny v minulosti, protože umožňuje zachovat stejný veřejný klíč, ale stále dokola generovat nové soukromé klíče. Soukromý klíč lze tedy ihned smazat, jakmile je použit. Platnost podpisového KES klíče pravidelně expiruje a pro další období je nutné vygenerovat nový. Starý KES klíč je navždy smazán. Nikdo tedy není schopen znovu podepsat blok jednou vymazaným KES klíčem. Pokud hacker kompromituje klíč a získá přístup k podpisovému klíči, může ho od daného okamžiku používat pouze k podepisování nových bloků, nikoli však bloků, které byly podepsány v minulosti. To znemožňuje hackerovi přepsat historii.

Když uzel generuje operační certifikát, Vloží do něj počítadlo (counter). Počítadlo je číslo, které se zvyšuje vždy, když je nový certifikát vytvořen a publikován uzlem. Když se uzel stane vedoucím slotu a razí nový blok, vloží počítadlo do hlavičky nového bloku. Ostatní uzly v síti bloky ověřují a mohou zkontrolovat, zda je certifikát aktuální, nebo zda byl nahrazen novějším. Počítadlo je jednoduchý mechanismus, jak přepsat certifikát, když je kompromitován KES klíč. Například pokud je ukradený hackerem. Operátoři by si měli uložit své operační “cold” klíče vždy offline. Díky tomu jsou pouze operátoři schopni vygenerovat novější certifikát a zvýšit počítadlo.

Validující uzly mohou přijmout dva bloky pro stejný slot. Jeden je podepsán hackerem a druhý provozovatelem, jehož klíč KES byl prolomen. Uzly ověřující bloky mají snadnou práci. Vidí, že existují dva bloky, které tvrdí, že jsou vytvořeny stejným uzlem (uzel jež je svázaný s konkrétním offline klíčem), ale obsahuje různé KES klíče. Certifikáty jsou uloženy v blockchainu, aby ověřovací uzly věděly, které certifikáty jsou nejnovější. Blok, který obsahuje vyšší počítadlo, vyhraje a bude přidán do blockchainů ověřovacích uzlů. Hackerův blok bude vyhozen.

Kdy a jak je vytvořen nový blok?

Jak jsme řekli, loterie rozhoduje o registrovaném uzlu, který se stane vedoucím slotu. Proto je vždy vybrán jeden konkrétní uzel, kterému je přiděleno právo na vytvoření nového bloku. Nikdo jiný toto právo v daném bloku nemá. Řádově jednotky. Všechny registrované uzly v síti Cardano využívají VRF k autonomnímu zjištění, zda mohou v daném slotu vytvořit nový blok právě oni. Díky náhodnosti tohoto procesu se může občas stát, že více uzlů se může stát vedoucím slotu v daném slotu. Řádově jednotky. Není to problém a později vám ukážeme, jak je konflikt vyřešen.

Může se stát, že za 20 sekund lze vytvořit více bloků, protože loterie je náhodný proces a uzly používají VRF nezávisle na sobě. Nová fáze loterie se odehrává každou sekundu a nový blok lze vytvořit například v 5. následujícím slotu po přidání posledního. Výběr nového vedoucího slotu však může trvat déle. Je také možné, že k tomu může dojít v 30. následujícím slotu po přidání posledního. V každé epoše by mělo být vytvořeno přibližně 21 600 bloků, ale může to být více nebo méně. Ke snížení nebo zvýšení rychlosti výběru vedoucího slotu lze použít speciální síťový parametr.

VRF je druh funkce, která vyžaduje několik vstupů a vytváří výstup. Funkce VRF přebírá ID slotu, pro který se právě rozhoduje, podpisový VRF klíč (jedinečný pro každý uzel) a nonce. Nonce je hash, který je vytvořen pomocí prvních 2/3 výstupů VRF z bloků, které byly vytvořeny v předchozí epoše. Tyto vstupy jsou zpracovány funkcí VRF a je vytvořeno náhodné číslo. Na základě velikosti staku daného poolu je vypočítána určitá prahová hodnota (mez). Pokud je náhodné číslo menší než tato prahová hodnota, stává se uzel vedoucím slotu. Všimněte si, že velikost staku daného poolu ovlivňuje četnost, s jakou se pool stává vedoucím slotu. Čím vyšší je stake, tím vyšší četnost.

Když se uzel stane vedoucím slotu, vloží transakce, které čekají na zpracování, do nového bloku. Rovněž vloží vypočítaný výstup VRF a důkaz VRF, že uzel získal právo na vytvoření nového bloku. Nový blok je podepsán KES klíčem a rozeslán do sítě.

Ostatní uzly v síti obdrží nový blok a ověří jej. Kromě ověření transakcí v bloku se také ověřuje VRF důkaz pomocí veřejného klíče poolu, který vytvořil blok. Všechny certifikáty poolu jsou uloženy v blockchainu. Validátoři tak mohou snadno ověřit podpis bloku. Blok musí být podepsán soukromým klíčem, který odpovídá veřejnému klíči, který lze najít v odpovídajícím certifikátu poolu. Pokud je blok platný, poctiví validátoři jej vloží do svých verzí blockchainu.

Tento mechanismus chrání síť před problémem zvaným Nothing-at-Stake. Časový plán vedoucích slotů není předem znám a nelze jej odvodit. Pooly zjišťují jestli jsou vedoucími slotů zcela samostatně a ostatní uzly zjistí vítěze loterie o až v okamžiku, kdy obdrží nové bloky. Pouze vlastníci poolů znají své soukromé VRF klíče, které jsou potřebné pro určení o lídrem slotů.

Když by útočník ukradl klíče VRF a KES, může operátor použít operační offline klíč a vytvořit nový certifikát. Samozřejmě, po vyřešení problému se zabezpečením svého uzlu a zabránění dalšímu hacknutí. I kdyby to operátor neudělal, platnost KES klíče dříve či později vyprší. Provozovatelé musí udržovat “studený” operační klíč opravdu offline podobně, jako si uživatelé uchovávají své SEEDy na kousku papíru. Nebojte se. Většina operátorů jsou profesionálové a dobře vědí, jak chránit kryptografická tajemství.

Protivník nemůže jen tak náhodně vygenerovat nějaký náhodný podvodný řetězec ze stejného genesis bloku. Sada slot lídrů je vždy stejná od začátku do konce blockchainu a vyvíjí se dynamicky. Když je známa nonce, lze vypočítat novou sadu slot lídrů pro další epochu. Nová nonce je známá nejprve v okamžiku, kdy končí současná epocha a k jejímu výpočtu lze použít 2/3 bloků. Lze vytvořit mnoho podvodných bloků, které by mohly zaplavit síť, ale procesem ověření projdou pouze ty bloky, které byly vytvořeny vedoucími slotů a podepsány jen a právě jimi.

Všimněte si, že také v síti PoW je možné vytvořit spoustu podvodných bloků a zaplavit síť. Proces ověřování je velmi podobný. Do blockchainu budou přidány pouze bloky, které obsahují důkaz o vyřešené složité výpočetní práci. Rozdíl je v tom, že v případě Cardana je spotřeba elektřiny velmi nízká. Kryptografie se používá odlišně k vytvoření důkazu, který umožňuje validátorům přijmout nově vytvořený blok. V sítích PoW musí být k vytvoření důkazu spotřebována elektřina. Principielně je to však velmi podobné.

Jak jsme již řekli výše, může se stát, že se dva uzly stanou vedoucími slotů ve stejném slotu a oba vytvoří platné bloky. K blockchainu lze připojit pouze jeden z nich. Když tedy validátoři obdrží dva platné bloky a musí si vybrat jeden z nich, udělají to následovně. Existuje velmi jednoduché pravidlo, které určuje, který blok vyhraje. Validátoři připojí blok, který má nižší VRF důkaz. Můžete si to představit jako srovnání dvou čísel. Blok s vyšším číslem (VRF důkazem) osiří. To znamená, že je zahozeno společně se všemi transakcemi.

Blockchain je v podstatě jen sled po sobě jdoucích bloků. Nový blok se připojuje vždy nakonec. Když je uzel vedoucím slotu, vytvoří nový blok, který lze připojit pouze na konec blockchainu. Každý blok obsahuje číslo bloku. Číslo bloku se zvyšuje s každým nově připojeným blokem.

Předpokládejme, že Alice’s pool je vedoucím slotu ve slotu X a vytváří nový platný blok. Bob’s pool se stává vedoucím slotu ve slotu X + 1 a také vytváří nový platný blok. Oba bloky byly vyrobeny ve velmi podobnou dobu a mají stejné číslo bloku. Alice’s pool v době výroby vlastního bloku nevěděl o Bobově bloku a naopak. Carol’s pool je nyní vedoucím slotu v slotu X + 20 (nikdo nebyl vedoucí slotu v slotech od X + 2 do X + 19). Carol’s pool použije Bobův blok, protože je novější, co se týče pořadí slotu. Vítěze opět určuje jednoduché pravidlo. Pokud je k dispozici více platných bloků se stejným číslem bloku, pak uzel vybere blok s vyšším číslem slotu. Jinými slovy, nejnovější blok. Druhý (starší) blok osiří (bude zahozen).

V případě, že by Bobův blok nebyl šířen sítí dostatečně rychle a Carol’s pool by dostal pouze blok od Alice, blok od Boba by by osiřel, přestože má vyšší číslo slotu. V našem scénáři by se to hypoteticky mohlo stát, kdyby Carol’s pool zjistil, že je vedoucím slotu ve slotu X + 3 a pool Alice by byl geograficky blíže než pool Boba. Bobův blok by tedy nedorazil včas k poolu jež vlastní Carol. Carol’s pool považuje blok od Alice za nejnovější. Blok od Alice by byl nakonec přidán do blockchainu a po něm by následoval blok od Carol. Všimněte si, že Carolin blok také zvyšuje číslo bloku. Bobův blok dorazí k Carol’s poolu později a bude zahozen. Jak se blok od Carol šíří sítí, Bobův blok bude zahozen také všemi ostatními uzly. Provozovatelé poolů by měli zajistit, aby se jejich bloky šířily co nejrychleji, aby se zabránilo situaci, že jejich bloky budou zahozené.

Závěr

Podobně jako vlastník soukromého klíče může podepsat transakci za účelem utrácení mincí, může pool podepsat nový blok. V obou případech lze podpis ověřit rychle a jednoduše. Uzly poolu musí ukládat klíče online a tyto klíče mohou být odcizeny. Může se to stát, ale jak jste mohli vidět, existují mechanismy, které zabraňují hackerům poškodit síť nebo přepsat historii blockchainu. V budoucnu se navíc dočkáme některých vylepšení, díky nimž bude Ouroboros PoS ještě bezpečnější.

Zdroj: https://cardanians.io/en/the-cryptography-behind-cardano-blocks-137

MŮŽE SE VÁM TAKÉ LÍBIT ▼

Komentuj ▼

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Více článků ► Software