Na historii blockchainu lze pohlížet jako na jeho globální stav. K ověření nových transakcí však uzel vyžaduje pouze část této historie. S každým přidaným blokem se blockchain rozšiřuje, takže je neefektivní ověřovat nové transakce v neustále rostoucím kontextu. V tomto článku objasníme, jak se z historie blockchainu tvoří globální stav, který se používá pro ověřování nových transakcí a budování nových bloků.
Blockchain je jen historie transakcí
Na blockchain lze nahlížet jako na historii transakcí. Každý blok v řetězci obsahuje seznam transakcí a s přidáním každého nového bloku se historie blockchainu (a tím i globální stav) mění.
Na obrázku níže můžete vidět korelaci mezi nově přidanými bloky do blockchainu a změnou globálního stavu. Každý nově přidaný blok představuje přechod stavu.
Síťový konsensus je zásadní mechanismus, který zajišťuje, aby se všechny uzly (čestná většina uzlů) v síti shodly na aktuálním stavu blockchainu. Konsensus umožňuje síti bezpečný přechod z jednoho stavu do druhého. Jinými slovy, před přidáním nového bloku do blockchainu se musí všechny uzly dohodnout na jeho platnosti.
Aby blockchain správně fungoval, musí být globální stav na všech uzlech distribuované sítě stejný. Tato konzistence je nezbytná pro zajištění integrity a bezpečnosti blockchainu a pro usnadnění dalších změn stavu.
Přechod do nového stavu napříč všemi uzly sítě neproběhne okamžitě. Je to progresivní proces kvůli latenci sítě, i když krátký. V síti Cardano je přechod do nového stavu zahájen v uzlu, který vytváří nový blok, a končí, když všechny uzly sítě tento blok přijmou. Pokud je blok platný a tedy akceptován všemi uzly, došlo ke stavovému přechodu doprovázenému změnou globálního stavu.
Ve skutečnosti změna v globálním stavu neodráží pouze změnu v historii blockchainu. Kontext pro ověření následných blokových transformací se také změní. Tento kontext není kompletní historií blockchainu, která zahrnuje všechny jednotlivé transakce. Místo toho je to podmnožina této historie, konkrétně aktivní sada UTxO nebo také sada UTxO.
Na obrázku můžete vidět, jak každý blok připojený k blockchainu mění aktivní sadu UTxO (globální stav pro validaci nového bloku). Sada UTxO prošla od začátku (STAV 0) 5 postupnými změnami, protože bylo přidáno 5 nových bloků.
Každý uzel v distribuované síti funguje nezávisle, udržuje si svou jedinečnou verzi blockchainu a aktivní sadu UTxO. Kdykoli uzel obdrží kandidáta na nový blok, který má být přidán na konec blockchainu, musí projít validací. Vstupy pro tento proces ověření jsou nový blok a aktivní sada UTxO. Spolu s dalšími parametry zapouzdřenými v hlavičce bloku je uzel vyžadován k ověření všech transakcí v rámci bloku. Výsledkem tohoto ověření je nezávislé rozhodnutí uzlu o tom, zda začlení blok do své lokální verze blockchainu. Tento identický postup se provádí napříč všemi uzly v rámci sítě.
Na obrázku můžete vidět, jak probíhá validace nového BLOK 6, který má být appendem po BLOK 5. Vstupem pro validaci je nový blok a aktivní sada UTxO. Výstupem ověření je rozhodnutí validátoru, zda je nový blok platný (a bude připojen k lokální verzi blockchainu) nebo neplatný.
UTxO Sada
Pokaždé, když uzel přidá nový blok ke své místní verzi blockchainu, změní se také místní verze sady UTxO.
Sada UTxO obsahuje všechny UTxO, které byly vytvořeny jako transakční výstupy a mají potenciál být utraceny v budoucích transakcích. Proto představuje pouze zlomek všech UTxO přítomných v celé historii blockchainu Cardano.
Pojďme si UTxO stručně vysvětlit v kontextu globálního stavu.
UTxO jsou nezávislé a neměnné objekty, které lze utratit pouze jednou. Když jsou utraceny, musí být zcela utraceny. UTxO jsou předměty na jedno použití.
Jakmile je UTxO vytvořen jako výstup transakce, zůstane nezměněn, dokud nebude utracen v nové transakci. Když je utracena, je zcela spotřebována a jako výstup nové transakce je vytvořen nový UTxO.
Když je transakce odeslána, odkazuje na jeden nebo více UTxO jako vstupy, které mají být utraceny.
Když je spotřebován vstupní UTxO, má to za následek vytvoření nového UTxO nebo možná více nových UTxO. Kumulativní hodnota vstupních UTxO v transakci se musí rovnat celkové hodnotě všech výstupních UTxO.
Pokud jde o transakce, úkolem validátoru je zkontrolovat, zda:
- Všechny vstupní UTxO jsou skutečně součástí aktuální sady UTxO, tj. nejsou utraceny a existují v účetní knize.
- Celková hodnota vstupních UTxO je větší nebo rovna celkové hodnotě výstupních UTxO, což zajišťuje zachování hodnoty.
- Transakce je správně podepsána vlastníky vstupních UTxO, což zajišťuje, že pouze právoplatní vlastníci mohou utratit UTxO.
Historii blockchainu lze vidět jako graf všech UTxO, jak utracených, tak neutracených. Tento graf poskytuje kompletní, auditovatelnou historii všech transakcí, které se kdy na blockchainu vyskytly.
Na obrázku níže můžete vidět, jak jsou UTxO spotřebovávány transakcemi. Výstupní UTxO (zelená) se v nových transakcích stanou vstupními UTxO (červená). Všechny UTxO, které nebyly utraceny (modré), představují podmnožinu globálního stavu, který je potřebný pro validaci nových transakcí. Všechny modré UTxO se mohou stát transakčním vstupem, tj. být utraceny. Zelené UTxO již byly utraceny, takže je nelze znovu utratit.
Současný stav blockchainu, který je nutný pro validaci nového bloku (nové transakce v novém bloku), může být znázorněn sběrem všech nevyčerpaných UTxO. Ty jsou začleněny do sady UTxO.
Pro ověření nových transakcí tedy není nutné znát kompletní historii blockchainu (nebo ji mít v aktivní paměti). Místo toho je potřeba pouze aktivní sada nevyčerpaných UTxO (všechny modré UTxO). Získání aktivní sady UTxO však obvykle zahrnuje zpracování celé historie blockchainu, počínaje blokem Genesis.
Je důležité si uvědomit, že aktivní sada UTxO také zahrnuje ty UTxO, které byly vytvořeny v minulosti, tedy v předchozích stavech.
V každém stavu na obrázku byl vyroben jeden blok. V novém stavu N+5 bude pro validaci transakce použita sada UTxO obsahující UTxO ze stavů N+2, N+3 a N+4. V novém bloku, který byl vytvořen ve stavu N+5, je transakce 14, která se pokouší utratit UTxO z transakce 10, a transakce 15, která se pokouší utratit UTxO z transakce 11.
Ve stavu N+5 byl k blockchainu připojen nový blok. Tak byly také vytvořeny nové UTxO a byly vloženy do aktivní sady UTxO. V rámci stejného přechodu stavu byly všechny spotřebované UTxO odstraněny z aktivní sady UTxO.
Na obrázku vidíte sadu UTxO, která je tvořena všemi nevyčerpanými UTxO bez ohledu na přechody mezi stavy.
Uživatelé neustále odesílají nové transakce, z nichž některé mohou být zadány současně. Cílem sítě je zpracovat všechny transakce, což znamená, že jejím cílem je začlenit platné transakce do blockchainu. Přidání nového bloku do blockchainu znamená posun v globálním stavu.
Nové transakce odkazují na UTxO ze sady UTxO. UTxO ze sady slouží jako vstupy pro všechny transakce a představují část změny, která nastane, když je k blockchainu připojen nový blok. Všechny UTxO, které byly vstupy transakcí v nově přidaném bloku, budou odstraněny ze sady UTxO.
Každá transakce v nově přidaném bloku obsahuje jeden nebo více nových UTxO, které jsou začleněny do sady UTxO. Je to další část změny.
Když je k blockchainu připojen nový blok, uzel současně odstraňuje vynaložené UTxO ze sady UTxO a zavádí do ní nově vytvořené UTxO.
Obrázek znázorňuje transformaci v sadě UTxO. Ve STAVU 0 pozorujete šest transakcí, které budou začleněny do následujícího bloku. Červené UTxO jsou ty, které slouží jako transakční vstupy, což znamená, že mají být utraceny. Zelené UTxO jsou ty, které mají být vytvořeny. STATE 1 představuje stav následující po přidání nového bloku. Červené UTxO byly odstraněny ze sady UTxO a byly přidány zelené UTxO. V důsledku toho jsou všechny UTxO v sadě UTxO utratitelné. Nově přidané zelené UTxOs si předstvte jako modré.
Transakce na obrázku odkazují na blok, který byl postaven a odeslán do sítě ve STAVU 0. Ve STAVU 1 již byl přidán do blockchainu. Ve STAVU 1 se již vytváří nový blok, který není na obrázku znázorněn. Můžete si představit nové transakce, které odkazují na UTxO v sadě UTxO.
Závěr
Každý UTxO lze skutečně utratit pouze jednou, což je základní pravidlo, které pomáhá zmařit útoky s dvojí útraty. Jakmile je UTxO použito, nelze jej znovu použít jako vstup pro další transakci. Během ověřování bloku je pro validátor jednoduché potvrdit, že všechny vstupy UTxO jsou jedinečné a existují v sadě UTxO.
Architektura modelu UTxO ve spojení s procesem ověřování transakcí zjednodušuje úlohu validátoru bloků identifikovat a odvrátit potenciální útoky typu double-spend. To patří mezi primární bezpečnostní prvky technologie blockchain.
Sada UTxO složená z jednorázových objektů nabízí výhodu, protože umožňuje vysokou úroveň paralelizace v rámci sítě. Validace transakcí je na sobě nezávislá a odráží nezávislou spotřebu UTxOs. Další výhodou je možnost ověřovat transakce lokálně před odesláním, což zajišťuje, že projdou také ověřením sítě. Místní i síťové ověření závisí na stejných vstupních UTxOs. V období mezi lokální validací a síťovou validací, než je transakce zahrnuta do bloku, zůstávají vstupní UTxOs nezměněny. Proto by neměl existovat důvod k selhání transakce.
Článek připravili Cardanians s podporou od Cexplorer.
Přečtěte si celý článek: https://cexplorer.io/article/understanding-cardano-s-global-state
1 post - 1 participant