DORA: Distribuovaná dohoda Oracle

Ferary Solomon
3 min readMar 5, 2024

--

Následující příspěvek na blogu je litepaper DORA. Podrobnější popis našeho distribuovaného protokolu oracle naleznete zde, kde si můžete stáhnout celý whitepaper.

DORA-distributed-oracle-agreement

Co je to věštírna? Proč je potřeba?
Zjednodušeně řečeno, orákulum je mechanismus, který propojuje blockchain se světem mimo tento řetězec. Blockchain si lze představit jako neměnnou posloupnost stavových přechodů vznikajících jako výsledek provádění deterministického počítače. Deterministickým počítačem myslíme, že každá instrukce tohoto počítače produkuje stejný výstup, když je mu zadán stejný vstup. Tento deterministický počítač je abstrakcí. Pod kapotou je implementován sítí mnoha počítačů, na kterých běží konsensuální protokol pro určení posloupnosti instrukcí a jejich výsledků.

Od nedeterminismu k determinismu
Můžeme mít v takovém počítači instrukci getCurrentPrice("BTC")? NE. Proč? Protože výstup této instrukce by se lišil v závislosti na tom, kdy je tato instrukce provedena a odkud jsou ceny získávány. To je problém, protože to porušuje základní vlastnost našeho počítače, že je deterministický.

Co se tedy dá dělat, aby se to vyřešilo? Jedním ze způsobů, jak tento problém vyřešit, je získat celý kontext instrukce jako vstup. Mějme například instrukci typu getPrice("BTC", "SomeExchange", "11:59:59 UTC 7. 12. 2022"). V této instrukci explicitně určujeme, že máme načíst cenu v jakém čase a odkud. Stále nám však zbývá vyřešit několik problémů.

Archivace

Předpokládáme, že bez ohledu na to, kdy bychom tuto instrukci provedli, bychom dostali stejný výstup. Co když se pokusíme tuto instrukci vykonat za deset let a "SomeExchange" nebude mít tato data k dispozici? Co kdyby hypoteticky "SomeExchange" uchovávala data pouze pět let kvůli své tehdejší politice uchovávání dat? Co kdyby došlo k nějakému poškození dat? V podstatě potřebujeme spolehlivý a neměnný archiv, abychom dostali naprosto stejný výstup, i když tento příkaz provedeme za deset let. Jeden takový mechanismus již známe. Samotný blockchain! Můžeme mít instrukci putPrice(CommodityCode,source,time,value), která do samotného blockchainu uloží hodnotu CommodityCode získanou ze zdroje v čase, kterou lze později bezpečně načíst.

Autentičnost
Stále však máme problém. Jak poznáme, že hodnota je skutečně ze zdroje získaná v čase? Pokud zdroj sám digitálně podepíše a potvrdí, že v daném čase je cena CommodityCode hodnotou, pak máme hotovo. Takto skutečně fungují některé věštírny. Bohužel ne všechny zdroje informací svá data digitálně podepisují a vkládají do blockchainu. Navíc to, že zdroj dat svá data podepíše, ještě neznamená, že podepsaná data jsou skutečně přesná. V takovém případě potřebujeme sadu subjektů, které mohou dát razítko pravosti a potvrdit, že hodnota je skutečně cenou CommodityCode u zdroje a v čase.

Agregace
Pokud existuje více burz a zdrojů informací, neexistuje jediná skutečná hodnota komodity. Komodity se mohou na různých burzách obchodovat za různé ceny. Mnoho blockchainových aplikací a smart-contracts vyžaduje jedinou hodnotu ceny komodity. V takovém případě potřebujeme agregovat ceny z více zdrojů informací do jediné reprezentativní ceny. Co je to tedy orákulum? Stručně řečeno, orákulum je mechanismus, který přijímá informace z více zdrojů a deterministicky vkládá certifikované autentické reprezentativní informace do blockchainu, aby moderní blockchainové aplikace a smart-contracts mohly tyto informace využívat.

--

--