Skip to main content
Change page

Blokkláncadat-tárolási stratégiák

Page last update: 2025. február 19.

Többféle módon lehet információt tárolni vagy közvetlenül a blokkláncon, vagy olyan módon, hogy azt a blokklánc biztosítja:

  • EIP-4844 blobok
  • Calldata
  • Láncon kívül L1 mechanizmusokkal
  • Szerződés „kódja”
  • Események
  • EVM-tárhely

A módszer kiválasztása számos feltételtől függ:

  • Az információ forrása. A calldata mezőben lévő információ nem származhat közvetlenül a blokkláncról.
  • Az információ célállomása. A calldata csak az általa kezdeményezett tranzakcióban érhető el. Az események egyáltalán nem érhetők el a láncon.
  • Mekkora erőfeszítés elfogadható? A teljes csomópontot futtató számítógépek többet dolgoznak, mint egy könnyű kliens egy alkalmazásban, mely böngészőben fut.
  • Szükséges, hogy minden csomópont könnyedén elérje az információt?
  • Biztonsági követelmények.

Biztonsági követelmények

Általánosságban az információs biztonság három jellemzővel bír:

  • Titkosság, vagyis a felhatalmazással nem rendelkező entitások nem olvashatják el az információt. Ez sok helyen fontos, de itt nem. A blokkláncon nincsenek titkok. A blokklánc működésének alapja, hogy bárki ellenőrzini tudja a státuszváltozásokat, ezért közvetlen módon nem használható titkok tárolására. Vannak módok, hogy bizalmas információkat tároljanak blokkláncon, de ezek valami láncon kívüli elemen alapulnak, hogy legalább egy kulcsot ott tároljanak.

  • Integritás, vagyis az információ korrekt, azt nem változtathatják meg olyanok, akik arra nincsenek felhatalmazva, vagy nem engedélyezett módokon (például ERC-20 tokenekopens in a new tab küldése a „Transfer” esemény nélkül). A blokkláncon minden csomópont ellenőriz minden státuszváltozást, mely biztosítja az integritást.

  • Elérhetőség, vagyis az információ elérhető minden arra felhatalmazott entitásnak. A blokkláncon ezt úgy érik el, hogy az információ minden teljes csomópontonopens in a new tab elérhető.

Ezek a megoldások mind kiváló integritással bírnak, mert a hash-eket az L1-en rögzítik. De más elérhetőségi biztosítékaik vannak.

Előfeltételek

A jelen téma könnyebb megértéséhez érdemes ismerni a blokklánc alapjait. Ez az oldal azt is feltételezi, hogy az olvasó ismeri a blokkokat, tranzakciókat és más kapcsolódó témákat.

EIP-4844 blobok

A Dencun végleges elágazásopens in a new tab óta az Ethereum blokklánc tartalmazza az EIP-4844opens in a new tab változást, ami az Ethereumhoz adatblobokat illesztett, melyek rövid ideig, kb. 18 napigopens in a new tab elérhetőek. Ezeket a blobokat külön árazzák, a végrehajtási gáztól függetlenül, bár hasonló mechanizmussal. Ez egy olcsó megoldás átmeneti adatok tárolására.

Az EIP-4844 blobok fő használati területe az összevont tranzakciók, hogy az általuk feldolgozott tranzakciók bekerüljenek az L1-re. Az optimista rollupoknak publikálni kell a tranzakciókat a blokkláncon. Ezeknek a tranzakcióknak elérhetőnek kell lenniük bárki számára a megkérdőjelezési periódusbanopens in a new tab, hogy a validátorokopens in a new tab kijavíthassák a hibát, ha a rollup szekvenceropens in a new tab rossz státuszgyökeret posztol.

Ugyanakkor a megkérdőjelezési periódus után a státuszgyökér véglegessé válik, a tranzakciók további lényege az marad, hogy a lánc jelen státuszát újra lehessen alkotni. Ez a státusz elérhető a lánc csomópontjaiból is, melyhez kevesebb erőfeszítés szükséges. Így a tranzakciókról szóló információ megmarad néhány helyen, mint amilyenek a blokkfelfedezők, de nincs szükség arra a cenzúrának való ellenállásra, amit az Ethereum biztosít.

A zero-knowledge rollupok is posztolják a tranzakciós adatokat, hogy más csomópontok replikálni tudják a státuszt és ellenőrizhessék az érvényességi bizonyítékokat, de ez is egy rövid távú igény.

A jelen írás idején az EIP-4844-gyel a költség egy wei (10-18 ETH) bájtonként, ami elhanyagolható a 21,000 végrehajtási gázhoz képest, amibe bármelyik tranzakció kerül, beleértve azt, ami blobokat is posztolopens in a new tab. Az EIP-4844 árakat a következő oldalon tekintheti meg: blobscan.comopens in a new tab.

A következőben láthatók azok a címek, melyekre néhány ismert rollup posztolja a blobokat.

Calldata

A calldata azokat a bájtokat jelenti, melyeket a tranzakció részeként küldenek. Ez a blokklánc állandó tárhelyének része a blokkban, amely az adott tranzakciót tartalmazza.

Így lehet a legolcsóbban adatot tenni a blokkba állandó tárolásra. A bájtonkénti költsége 4 végrehajtási gáz (ha a bájt nulla) vagy 16 gáz (minden más értéknél). Ha az adat tömörítve van, ami egy bevett gyakorlat, akkor minden bájtérték ugyanolyan valószínű, így az átlagköltség kb. 15,95 gáz bájtonként.

A jelen írás idején az ár 12 gwei/gáz és 2300 $/ETH, mely szerint a költség kb. 45 cent kilobájtonként. Mivel az EIP-4844 előtt ez volt a legolcsóbb módszer, ezért a rollupok így tárolták a tranzakciós információkat, hogy azok elérhetők legyenek a hiba kivizsgálásraopens in a new tab, de nem kell azokat közvetlenül elérni a láncon.

A következőben láthatóak azok a címek, melyekre néhány ismert rollup posztolja a tranzakciókat.

Láncon kívül L1 mechanizmusokkal

A biztonsági megfontolások alapján talán elfogadható, hogy az információ máshol található, és egy mechanizmus biztosítja az elérhetőségét. Ez két feltétellel működhet:

  1. Az adat hashétopens in a new tab a blokkláncra kell posztolni, melyet input rögzítésnek neveznek. Ez lehet egy 32 bájtos szó, ami nem kerül sokba. Amíg az input rögzítése elérhető, az integritás biztosítva van, mert nem lesz más adat, aminek a hashe ugyanarra mutatna. Ha a helyes adat elérhető, akkor azt meg lehet találni.

  2. Szükség van egy mechanizmusra, mellyel elérhetővé válik az adat. Például a Redstoneopens in a new tab esetében bármelyik csomópont indíthat elérhetőségi kihívást. Ha a szekvencer nem válaszol online a határidőig, az inputrögzítést elvetik, így az információt úgy veszik, mintha sosem lett volna beposztolva.

Ez elfogadható az optimista rollup esetén, mert arra támaszkodunk, hogy legalább egy jóhiszemű ellenőrző van a státuszgyökérre. Egy ilyen jóhiszemű ellenőrző azt is biztosítja, hogy az adat létezik a blokk feldolgozásához, és egy elérhetőségi kihívást ad ki, ha az információ nem elérhető a láncon kívül. Ezt a fajta optimista rollupot nevezik plazmának.

Szerződéskód

Az információ, melyet csak egyszer kell rögzíteni, sosem lesz felülírva, és a láncon belül elérhetőnek kell lennie, szerződéskódként is tárolható. Tehát készítünk egy „okosszerződést” az adattal, majd a EXTCODECOPYopens in a new tab paranccsal kiolvassuk az információt. Ennek előnye az, hogy a kód másolása viszonylag olcsó.

A memória kibővítésének költségén kívül az EXTCODECOPY 2600 gázba kerül, amikor a szerződéshez először férnek hozzá (amikor az „hideg”) és 100 gázba kerülnek a további másolatok, plusz 3 gázba 32 bájtnyi szavanként. A calldata-hoz képes, ami 15,95-be kerül bájtonként, ez kevesebb kb. 200 bájttól kezdve. A memória kibővéítés költségének képleteopens in a new tab alapján, amíg nincs szükség több mint 4 MB memóriára, ez a bővítési költség kisebb, mint a calldata hozzáadása.

Természetesen ez csak az adat kiolvasása. A szerződés létrehozásánek költsége kb. 32 000 gáz + 200 gáz/bájt. Ez csak akkor éri meg, ha az adott információt többször kell kiolvasni különféle tranzakciók során.

A szerződéskód lehet értelmetlen, amíg nem kezdődik 0xEF-fel. Ha a szerződés kezdete 0xEF, akkor az egy ethereum objektum formátumopens in a new tab, amelynek szigorúbb követelményeknek kell megfelelnie.

Események

Az eseményeketopens in a new tab az okosszerződések adják ki, és a láncon kívüli szoftverek olvassák azokat. Előnye az, hogy a láncon kívüli kód képes értelmezni az eseményeket. A költsége 375 gázopens in a new tab plusz 8 gáz bájtonként. Ha 12 gwei/gáz és 2300 $/ETH, akkor ez 1 cent plusz 22 cent kilóbájtonként.

Tárhely

Az okosszerződések hozzáférnek az állandó tárhelyhezopens in a new tab. Ez azonban nagyon drága. Egy 32 bájtos szó beírása egy üres helyre belekerülhet akár 22 100 gázba isopens in a new tab. Ha 12 gwei/gáz és 2300 $/ETH, akkor ez 61 cent minden írásra, vagy 19,5 $ kilóbájtonként.

Ez a legdrágább tárolás az Ethereumon.

Összefoglaló

Ez a táblázat összefoglalja a különböző opciókat azok előnyeivel és hátrányaival együtt.

Tárolási típusAdatforrásElérhetőségi garanciaLáncon belüli elérhetőségTovábbi korlátozások
EIP-4844 blobokLáncon kívüliAz Ethereum garantálja kb. 18 napigopens in a new tabCsak a hash elérhető
CalldataLáncon kívüliAz Ethereum garantálja örökre (része a blokkláncnak)Csak akkor elérhető, ha egy szerződésbe van írva, és abban az adott tranzakcióban
Láncon kívül L1 mechanizmusokkalLáncon kívüliLegalább egy jóhiszemű ellenőrző garantálja a kihívási periódus alattCsak hashA kihívási mechanizmus garantálja a kihívási időszak alatt
SzerződéskódLáncon belüli vagy kívüliAz Ethereum garantálja örökre (része a blokkláncnak)IgenEgy „véletlenszerű” címre van írva, nem kezdődhet 0xEF-fel
EseményekLáncon belüliAz Ethereum garantálja örökre (része a blokkláncnak)Nem
TárhelyLáncon belüliAz Ethereum garantálja örökre (része a blokkláncnak és a jelen státusznak addig, amíg felül nem írják)Igen

Hasznosnak találta a cikket?