Ugrás a fő tartalomra
Change page

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

Utolsó módosítás: @Satglow(opens in a new tab), 2024. június 18.

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:

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ás(opens in a new tab) óta az Ethereum blokklánc tartalmazza az EIP-4844(opens in a new tab) változást, ami az Ethereumhoz adatblobokat illesztett, melyek rövid ideig, kb. 18 napig(opens 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ódusban(opens in a new tab), hogy a validátorok(opens in a new tab) kijavíthassák a hibát, ha a rollup szekvencer(opens 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 posztol(opens in a new tab). Az EIP-4844 árakat a következő oldalon tekintheti meg: blobscan.com(opens in a new tab).

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

RollupPostafiók címe
Optimism(opens in a new tab)0xFF00000000000000000000000000000000000010(opens in a new tab)
Arbitrum(opens in a new tab)0x1c479675ad559DC151F6Ec7ed3FbF8ceE79582B6(opens in a new tab)
Base(opens in a new tab)0xFF00000000000000000000000000000000008453(opens in a new tab)

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 kilóbá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ásra(opens 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.

RollupPostafiók címe
Optimism(opens in a new tab)0xFF00000000000000000000000000000000000010(opens in a new tab)
Arbitrum(opens in a new tab)0x1c479675ad559DC151F6Ec7ed3FbF8ceE79582B6(opens in a new tab)
Base(opens in a new tab)0xFF00000000000000000000000000000000008453(opens in a new tab)

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ét(opens 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 Redstone(opens 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 EXTCODECOPY(opens 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éplete(opens 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átum(opens in a new tab), amelynek szigorúbb követelményeknek kell megfelelnie.

Események

Az eseményeket(opens 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áz(opens 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árhelyhez(opens 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 is(opens 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 napig(opens in a new tab)Csak 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?