Utreexo umožňuje bitcoinovému uzlu ověřovat, že utrácená částka ještě nebyla použita, aniž by si musel ukládat úplný seznam všech neutracených výstupů. Uzel je program, který ověřuje transakce a bloky a komunikuje s dalšími účastníky sítě. Drží malé kontrolní otisky a konkrétní údaje získává s ověřitelnými důkazy. Nemění pravidla utrácení ani množství bitcoinů; nejde o výchozí model Bitcoin Core.
Anna chce Petrovi poslat bitcoin, který dříve přijala. Transakce proto odkáže na její dřívější příjem. Takový samostatný záznam částky a podmínek jejího utracení se nazývá výstup; dokud není utracený, je to UTXO. Vstup nové transakce obsahuje odkaz na tento dřívější výstup a údaje potřebné k jeho utracení. Uzel musí ověřit, že záznam skutečně existuje a Anna jej už neutratila. Běžně k tomu vede UTXO set, databázi všech aktuálně neutracených výstupů, nikoli osobních účtů a jejich zůstatků. S jejím růstem přibývá práce s diskem. Thaddeus Dryja představil Utreexo v roce 2019 jako způsob, jak tuto místní zátěž snížit. [1] [6] [8]
Nejprve se z každého záznamu vypočítá hash, krátký kontrolní otisk jeho dat. V Merkleově stromu se otisky po dvojicích spojují a znovu hashují, až vznikne vrcholový otisk, kořen. Utreexo používá několik takových stromů; ověřující uzel může místo celého seznamu uchovávat jejich kořeny. K Anninu výstupu pak dostane údaje a důkaz tvořený potřebnými sousedními otisky. Z nich si přepočítá cestu ke kořeni a porovná ji se stavem, který už sleduje. Samotné tvrzení odesílatele tedy nestačí. Celé uspořádání se označuje jako kryptografický akumulátor: umožňuje dokazovat, že záznam patří do množiny. Kořeny ale nejsou zmenšená záloha. Nelze z nich zpětně rozbalit všechny původní záznamy. [1] [2]
Odeslané údaje se přepočítají na hash a důkaz umožní zkontrolovat jejich vazbu na stav, který uzel sleduje. Neplatný důkaz nelze jednoduše přijmout jen proto, že přišel od známého serveru. Digitální podpis dokládá oprávnění k platbě pomocí soukromého klíče, tajného číselného údaje, aniž by jej odhalil. Skript je soubor podmínek, které je při utracení výstupu nutné splnit. Ani platný důkaz členství ale nenahrazuje ověření podpisu, skriptu, částek a ostatních pravidel transakce a bloku. Utreexo řeší uložení stavu, nikoli svolení tyto kontroly vynechat. [2] [5] [8]
Někdo stále musí uchovávat dost dat, aby mohl důkazy sestavit. Dokumentace knihovny rozlišuje prover, který drží celý soubor stromů, a verifier, kterému stačí kořeny. Ověřovatel si může část důkazů ukládat do mezipaměti, ale samotné kořeny mu nestačí k vytvoření libovolného důkazu. Data tedy nezmizí ze světa; mění se jejich rozložení mezi účastníky. [2]
Blok sdružuje transakce do dávky, která se připojuje ke společné historii. Při utracení se výstup ze sledované množiny odstraní a nové neutracené výstupy se přidají. S tím se mění i důkazy. Důkaz uložený k dřívějšímu stavu nemusí jít použít beze změny po dalších blocích. Při reorganizaci síť přijme jinou platnou větev řetězce a část dosavadních bloků přestane patřit do společné historie. Implementace musí zvládat aktualizaci důkazů, souběžné transakce a návrat při reorganizaci řetězce; není to jednou stažený certifikát platný navždy. [2] [3]
Pruned Node po ověření zahazuje starší bloková data, ale tradičně si ponechává aktuální UTXO databázi. Utreexo míří právě na tuto databázi. Jde tedy o různé úspory, které se mohou kombinovat. Ani prořezávání, ani malý akumulátor samy o sobě neznamenají, že uzel ověřil minulost bez jejího zpracování. Historie bloků, současný stav a způsob prvotního ověření jsou tři odlišné věci. [6] [5]
Představte si nový uzel, který začne od cizího přehledu stavu místo ověřování bloků od začátku. Přebírá tím předpoklad, že je výchozí stav správný. Malý akumulátor takovou důvěru sám neodstraní: pozdější důkazy se ověřují právě vůči přijatému stavu. U AssumeUTXO se proto odděluje převzetí snapshotu, tedy snímku stavu v určitém okamžiku, od následného ověřování historie na pozadí. Dokumentace utreexod uvádí výchozí start ze stavu pevně zadaného v programu. To není samo o sobě vlastní ověření všech předchozích bloků. Způsob spuštění je samostatná volba a nelze jej zaměňovat s vlastnostmi Utreexa. [7] [3]
Existuje implementace utreexod, která používá Utreexo při ověřování bitcoinové sítě. Při kontrole dne 17. října 2026 ji její dokumentace označuje jako beta a nedoporučuje pro nezanedbatelné částky na mainnetu. Uvádí také možnost --noassumeutreexo pro vypnutí startu z předpokládaného stavu. To není instalační doporučení: před použitím je třeba ověřit aktuální verzi, režim, zdroj programu a možnosti obnovy. [3]
Základní návrh nevyžaduje přepis bitcoinových měnových pravidel ani změnu existujících bloků. Důkazy ale musí někdo vytvářet, přenášet a aktualizovat, takže podpůrné uzly potřebují odpovídající software a komunikaci. Úspora místního stavu může pomoci levnějším zařízením. Neznamená automaticky více transakcí v bloku, nižší poplatek pro každého nebo přechod všech uzlů na nový formát. [1] [4]
Méně dat na disku může znamenat více dat přenesených po síti a závislost na jejich včasné dostupnosti. Správně ověřující uzel odmítne podvržený důkaz. Poskytovatel ale může potřebná data neposlat a zbrzdit ověřování. Provozovatel proto porovnává celý režim: úložiště, přenosy, mezipaměť, ověření výchozího stavu i chování při výpadku. Utreexo může zlevnit vlastní ověřování; nedělá z chybějících dat nepodstatný problém. [3] [4]
Pro nejúplnější obraz čtěte toto heslo společně s UTXO, Full Node, Pruned Node, AssumeUTXO, Merkle Tree, Bitcoin Core.