Strategie ukládání dat na blockchainu
Stránka naposledy aktualizována: 26. února 2026
Existuje několik způsobů, jak ukládat informace buď přímo na blockchainu, nebo způsobem, který je blockchainem zabezpečen:
- Bloby EIP-4844
- Calldata
- Mimo řetězec s mechanismy L1
- Kód kontraktu
- Události
- Úložiště EVM
Volba metody závisí na několika kritériích:
- Zdroj informací. Informace v calldata nemohou pocházet přímo ze samotného blockchainu.
- Cíl informací. Calldata je dostupná pouze v transakci, která ji obsahuje. Události nejsou na řetězci vůbec přístupné.
- Jaká míra obtíží je přijatelná? Počítače, na kterých běží plnohodnotný uzel, mohou provádět více zpracování než lehký klient v aplikaci běžící v prohlížeči.
- Je nutné zajistit snadný přístup k informacím z každého uzlu?
- Požadavky na zabezpečení.
Požadavky na zabezpečení
Obecně se bezpečnost informací skládá ze tří atributů:
-
Důvěrnost, neoprávněné subjekty nesmějí informace číst. To je v mnoha případech důležité, ale ne tady. Na blockchainu neexistují žádná tajemství. Blockchainy fungují, protože kdokoli může ověřit přechody stavů, takže je nelze použít k přímému ukládání tajemství. Existují způsoby, jak ukládat důvěrné informace na blockchain, ale všechny se spoléhají na nějakou komponentu mimo řetězec, která ukládá alespoň klíč.
-
Integrita, informace jsou správné, nemohou je měnit neoprávněné subjekty ani neoprávněnými způsoby (například přenos tokenů ERC-20 (opens in a new tab) bez události
Transfer). Na blockchainu každý uzel ověřuje každou změnu stavu, což zajišťuje integritu. -
Dostupnost, informace jsou dostupné jakémukoli oprávněnému subjektu. Na blockchainu se toho obvykle dosahuje tak, že jsou informace dostupné na každém plném uzlu (opens in a new tab).
Všechna zde uvedená řešení mají vynikající integritu, protože haše jsou zveřejňovány na L1. Mají však různé záruky dostupnosti.
Předpoklady
Měli byste dobře rozumět základům blockchainu. Tato stránka také předpokládá, že je čtenář obeznámen s bloky, transakcemi a dalšími relevantními tématy.
Bloby EIP-4844
Počínaje hardforkem Dencun (opens in a new tab) obsahuje blockchain Etherea EIP-4844 (opens in a new tab), který do Etherea přidává datové bloby s omezenou životností (původně asi 18 dní (opens in a new tab)). Cena těchto blobů se stanovuje odděleně od exekučního paliva, i když se používá podobný mechanismus. Jsou levným způsobem, jak zveřejnit dočasná data.
Hlavním případem použití blobů EIP-4844 je zveřejňování transakcí rollupy. Optimistické rollupy musí zveřejňovat transakce na svých blockchainech. Tyto transakce musí být dostupné komukoli během období pro napadení (opens in a new tab), aby validátoři (opens in a new tab) mohli opravit chybu, pokud sekvencer (opens in a new tab) rollupu zveřejní nesprávný kořen stavu.
Jakmile však období pro napadení uplyne a kořen stavu je finalizován, zbývajícím účelem znalosti těchto transakcí je replikace aktuálního stavu řetězce. Tento stav je také dostupný z uzlů řetězce, přičemž je zapotřebí mnohem méně zpracování. Informace o transakcích by se tedy měly stále uchovávat na několika místech, například v prohlížečích bloků, ale není třeba platit za úroveň odolnosti vůči cenzuře, kterou Ethereum poskytuje.
Rollupy s nulovou znalostí také zveřejňují svá transakční data, aby ostatní uzly mohly replikovat existující stav a ověřit důkazy platnosti, ale opět se jedná o krátkodobý požadavek.
V době psaní tohoto článku stojí zveřejnění na EIP-4844 jeden wei (10-18 ETH) za bajt, což je zanedbatelné ve srovnání s 21 000 exekučního paliva, které stojí jakákoli transakce, včetně té, která zveřejňuje bloby (opens in a new tab). Aktuální cenu EIP-4844 si můžete prohlédnout na blobscan.com (opens in a new tab).
Zde jsou adresy, na kterých si můžete prohlédnout bloby zveřejněné některými známými rollupy.
Calldata
Calldata označuje bajty odeslané jako součást transakce. Jsou uložena jako součást trvalého záznamu blockchainu v bloku, který danou transakci obsahuje.
Toto je nejlevnější metoda pro trvalé vložení dat do blockchainu. Cena za bajt je buď 4 exekučního paliva (pokud je bajt nulový) nebo 16 paliva (jakákoli jiná hodnota). Pokud jsou data komprimována, což je standardní postup, pak je každá hodnota bajtu stejně pravděpodobná, takže průměrná cena je přibližně 15,95 paliva za bajt.
V době psaní tohoto článku jsou ceny 12 gwei/palivo a 2300 $/ETH, což znamená, že cena je přibližně 45 centů za kilobajt. Protože se jednalo o nejlevnější metodu před EIP-4844, je to metoda, kterou rollupy používaly k ukládání informací o transakcích, které musí být dostupné pro napadení chyb (opens in a new tab), ale nemusí být přístupné přímo na řetězci.
Zde jsou adresy, na kterých si můžete prohlédnout transakce zveřejněné některými známými rollupy.
Mimo řetězec s mechanismy L1
V závislosti na vašich bezpečnostních kompromisech může být přijatelné umístit informace jinam a použít mechanismus, který zajistí dostupnost dat v případě potřeby. Aby to fungovalo, jsou zapotřebí dva požadavky:
-
Zveřejněte na blockchainu haš (opens in a new tab) dat, nazývaný závazek vstupu. Může to být jediné 32bajtové slovo, takže to není drahé. Dokud je k dispozici závazek vstupu, je zaručena integrita, protože není možné najít jiná data, která by se hašovala na stejnou hodnotu. Pokud jsou tedy poskytnuta nesprávná data, lze je odhalit.
-
Mít mechanismus, který zajišťuje dostupnost. Například v Redstone (opens in a new tab) může jakýkoli uzel podat výzvu k dostupnosti. Pokud sekvencer neodpoví na řetězci do termínu, závazek vstupu se zruší, takže se informace považují za nikdy nezveřejněné.
To je pro optimistický rollup přijatelné, protože se již spoléháme na to, že pro kořen stavu existuje alespoň jeden poctivý ověřovatel. Takový poctivý ověřovatel se také ujistí, že má data ke zpracování bloků, a vydá výzvu k dostupnosti, pokud informace nejsou k dispozici mimo řetězec. Tento typ optimistického rollupu se nazývá plasma.
Kód kontraktu
Informace, které je třeba zapsat pouze jednou, nikdy se nepřepisují a musí být dostupné na řetězci, lze uložit jako kód kontraktu. To znamená, že vytvoříme "chytrý kontrakt" s daty a poté pomocí EXTCODECOPY (opens in a new tab) informace přečteme. Výhodou je, že kopírování kódu je relativně levné.
Kromě nákladů na rozšíření paměti stojí EXTCODECOPY 2600 paliva za první přístup ke kontraktu (když je "studený") a 100 paliva za následné kopie ze stejného kontraktu plus 3 paliva za 32bajtové slovo. Ve srovnání s calldata, které stojí 15,95 za bajt, je to levnější od přibližně 200 bajtů. Na základě vzorce pro náklady na rozšíření paměti (opens in a new tab), pokud nepotřebujete více než 4 MB paměti, jsou náklady na rozšíření paměti menší než náklady na přidání calldata.
Samozřejmě, to jsou jen náklady na přečtení dat. Vytvoření kontraktu stojí přibližně 32 000 paliva + 200 paliva/bajt. Tato metoda je ekonomická pouze tehdy, když je třeba stejné informace číst mnohokrát v různých transakcích.
Kód kontraktu může být nesmyslný, pokud nezačíná na 0xEF. Kontrakty, které začínají na 0xEF, jsou interpretovány jako objektový formát ethereum (opens in a new tab), který má mnohem přísnější požadavky.
Události
Události (opens in a new tab) jsou emitovány chytrými kontrakty a čteny softwarem mimo řetězec. Jejich výhodou je, že kód mimo řetězec může naslouchat událostem. Cena je palivo (opens in a new tab), 375 plus 8 paliva za bajt dat. Při 12 gwei/palivo a 2300 $/ETH to znamená jeden cent plus 22 centů za kilobajt.
Úložiště
Chytré kontrakty mají přístup k trvalému úložišti (opens in a new tab). Je to však velmi drahé. Zápis 32bajtového slova do dříve prázdného slotu úložiště může stát 22 100 paliva (opens in a new tab). Při 12 gwei/palivo a 2300 $/ETH je to asi 61 centů za operaci zápisu, neboli 19,5 $ za kilobajt.
Toto je nejdražší forma úložiště v Ethereu.
Shrnutí
Tato tabulka shrnuje různé možnosti, jejich výhody a nevýhody.
| Typ úložiště | Zdroj dat | Záruka dostupnosti | Dostupnost na řetězci | Další omezení |
|---|---|---|---|---|
| Bloby EIP-4844 | Mimo řetězec | Záruka Etherea po dobu ~18 dnů (opens in a new tab) | Je dostupný pouze haš | |
| Calldata | Mimo řetězec | Záruka Etherea navždy (součást blockchainu) | Dostupné pouze při zápisu do kontraktu a v dané transakci | |
| Mimo řetězec s mechanismy L1 | Mimo řetězec | Záruka "jednoho poctivého ověřovatele" během období pro napadení | Pouze haš | Zaručeno mechanismem napadení, pouze během období pro napadení |
| Kód kontraktu | Na řetězci nebo mimo řetězec | Záruka Etherea navždy (součást blockchainu) | Ano | Zapsáno na "náhodnou" adresu, nesmí začínat 0xEF |
| Události | Na řetězci | Záruka Etherea navždy (součást blockchainu) | Ne | |
| Úložiště | Na řetězci | Záruka Etherea navždy (součást blockchainu a současného stavu, dokud není přepsán) | Ano |