Fault Proof mélymerülés 1. rész: MIPS.sol

Alexis Williams által írt és az OP Labs Blog által 2024. február 15-én közzétett cikk alapján

PROTOKOLLFEJLESZTÉS

A Coinbase-zel működő Fault Proof Deep-Dive Series első része az FPVM intelligens szerződést, az MIPS.sol-t, és azt vizsgálja, hogy hogyan működik az OP Stack hiba ellenállós rendszerén belül.

Fault Proof Deep-Dive Part 1: MIPS.sol
Fault Proof Deep-Dive Part 1: MIPS.sol

A Fault Proof Deep-Dive Series a Coinbase Blockchain Security (BlockSec) csapata és az OP Labs együttműködése, amelynek célja, hogy mélyreható információkat nyújtson a hiba ellenállások összes fő összetevőjéről. Ezen információk megosztásával reméljük, hogy másokat is arra buzdítunk, hogy többet tudjanak meg a Fault Proof architektúrájáról és műszaki vonatkozásairól. Együtt elmozdulhatunk az OP Stack L2 blokkláncok decentralizált jövője felé.

Ebben a blogbejegyzésben a hibaellenállásos virtuális gép (Fault Proof Virtual Machine FPVM) MIPS.sol intelligens szerződésével foglalkozunk.

Mi az a MIPS.sol?

A MIPS.sol intelligens szerződés egy virtuális gép (VM virtual machine) onchain megvalósítása, amely magában foglalja a 32 bites, Big-Endian, MIPS III utasításkészlet-architektúrát (ISA). Ez az intelligens szerződés ugyanazon ISA láncon kívüli MIPSEVM golang megvalósításának megfelelője. Az onchain és off-chain virtuálisgép-megvalósítások együttesen alkotják a Cannont, az OP első FPVM-jét.

A Cannon az FPVM egy példánya, amelyet a Fault Dispute Game részeként használnak az OP Stacket használó, optimista összesítő L2 blokkláncokhoz. Maga a vitajáték moduláris, lehetővé téve bármilyen FPVM használatát; azonban jelenleg a Cannon az egyetlen megvalósított FPVM, ezért minden vitában használni fogják.

Fault Proof vezérlési folyamat

Egy lépést hátralépve összpontosítsunk röviden arra, hogy a MIPS.sol szerződés hol található a Fault Proof folyamatban.

A Clabby által készített Fault Proof Walkthrough videóból újra elkészített fenti diagramon láthatjuk, hogy a MIPS.sol szerződés kölcsönhatásba lép két másik szerződéssel: FaultDisputeGame.sol és PreimageOracle.sol. A FaultDisputeGame.sol a Hibavita-játék telepített példánya aktív vitákhoz. A PreimageOracle.sol a Pre-image Oracle telepített példánya, amely előképeket tárol az összes olyan vitajátékhoz, amely ugyanazt az FPVM-et használja. Így esetünkben egyetlen PreimageOracle.sol szerződés vonatkozik minden olyan játékra, amely a MIPS.sol-t használja FPVM-ként.

A MIPS.sol szerződést egy vitajáték futó példánya hívja meg, és csak akkor hívja meg, ha egy vitajáték eléri az állapotátmeneti fa levélcsomópontját, amely jelenleg vitatott. A levélcsomópont egyetlen MIPS-utasítást képvisel (abban az esetben, ha a Cannon-t használjuk FPVM-ként), amely azután futtatható a láncon. Adott az előzetes állapot, amely a korábban megegyezett L2 állapot az utasításig, és a MIPS.sol szerződésben lefutó utasítás állapota, a hibavitás játék meghatározhatja a valódi utóállapotot. Ezt a valódi feladási állapotot azután a rendszer a hibavita játék megoldására fogja használni úgy, hogy összehasonlítja a levélcsomópontban lévő vitatott bejegyzés állapotát az ellenfél által a vitajáték-példányban javasolt utóállapottal.

Intelligens szerződésvezérlési folyamat

A MIPS.sol intelligens szerződésnek egyetlen belépési pontja van: a step() funkció. Ezt a funkciót hívja meg a futó vitajáték, amely egyetlen MIPS utasítást hajt végre a láncon. Magas szinten a következő műveleteket hajtják végre:

  1. A virtuális gép végrehajtási állapotának bemeneti adatait elemzi és betölti a memóriába. Ezeket az adatokat a Cannon golang megfelelője generálja, amelyet a játék résztvevői az OP-Challengeren keresztül futtatnak le a láncból.

  2. A memóriabiztos bemenet beolvasása és ellenőrzése megtörtént. Ez a memóriaellenőrzés arra a helyre mutat a memóriában, ahonnan a következő MIPS utasítást be kell tölteni és le kell futtatni.

  3. A következő MIPS utasítás kerül végrehajtásra. Az MIPS.sol szerződés logikájának többsége egy MIPS utasítás végrehajtását kezeli a MIPS III specifikáció szerint. A MIPS utasítások kezelésekor az egyetlen utasítás, amely nem követi a szigorú előírásokat, a SYSCALL (rendszerhívás) utasítás. A rendszerhívások viselkedése az operációs rendszerre jellemző, és a MIPS.sol esetében a végrehajtható rendszerhívások csak töredékét teszik ki az összes rendszerhívásnak. A rendszerhívások elsődleges célja a PreimageOracle.sol szerződés olvasásainak kezelése és a szerződésbe történő írások szimulálása.

  4. Az utasítás eredménye visszaírható egy regiszterbe vagy a memóriába. Memóriába írás esetén a vitajáték bemenetként egy második memóriaigazolást is biztosít. A második memóriaellenőrzésnek egybe kell esnie azzal a memóriahellyel, amelyre a program várhatóan írni fog, és a MIPS.sol intelligens szerződés az új értéket és a memóriaellenőrzést használja az új memória merkle gyökér kiszámításához.

A MIPS utasítás teljesítése után egy állapotkivonat kerül vissza a vitajáték példányba. Az állapotkivonat a virtuális gép végrehajtási állapotának keccak256 hash-je, ahol az első bájt nem felel meg a hash-nek, hanem felülírja a virtuális gép állapotát jelző értékkel. A vitajáték az állami hash és a virtuális gép állapotát fogja használni a vita megoldásához.

MIPS.sol Szerződés állam

Amint azt korábban említettük, a MIPS.sol szerződés kölcsönhatásba lép két másik intelligens szerződéssel: FaultDisputeGame.sol és PreimageOracle.sol. A FaultDisputeGame.sol szerződés biztosítja a virtuális gép aktuális végrehajtási állapotát és legfeljebb két memóriaellenőrzést. A PreimageOracle.sol szerződés előképeket biztosít, amelyeket a MIPS.sol felhasználhat a valódi L2 állapot meghatározásához. Az előképből származó tartalom tartalmazhat adatokat az L1-ből és az L2-ből is, amelyek lehetnek blokkfejlécek, tranzakciók, nyugták, szerződés állapota stb.

Ez a két szerződés együttesen biztosítja az összes releváns információt, amely egyetlen MIPS-utasítás végrehajtásához szükséges. A MIPS.sol szerződés semmilyen információt nem tárol az utasítás végrehajtásáról a tárhelyen. Így a szerződést bármely Hibavita Játék felhasználhatja anélkül, hogy bármilyen értéket vissza kellene állítani. Következésképpen a MIPS.sol szerződés csak azt biztosítja, hogy a megadott memóriabizonyítványokból számított merkle gyökér egyenlő legyen a virtuális gép végrehajtási állapotában lévő merkle gyökérrel. Ellenkező esetben a FaultDisputeGame.sol szerződésen múlik, hogy biztosítsa a megadott információk helyességét és a vitajáték résztvevője által megtett intézkedések helyességét.

Az MIPS.sol dokumentációja

Ezzel lezárult a MIPS.sol intelligens szerződés mélyreható merülését. Ezen a blogbejegyzésen kívül a Coinbase részletes dokumentációt készített, amely részleteket tartalmaz az intelligens szerződés egyes funkcióiról, felsorolja az FPVM által támogatott MIPS-utasításokat és még sok mást. Tekintse meg a Fault Proofok oldalon – MIPS.sol | Optimism Docs.

A kriptovaluta nem szabályozott. A megtermelt nyereség adóköteles lehet. Bármely befektetés értéke csökkenhet.

Nem pénzügyi vagy adótanácsadás. Ez a hírlevél szigorúan oktató jellegű, és nem befektetési tanács, vagy felkérés eszköz vásárlására vagy eladására vagy pénzügyi döntések meghozatalára. Ez a hírlevél nem adótanácsadás. Beszéljen a könyvelőjével. Végezzen saját kutatást.

Köszönöm, hogy elolvasta. Kérem iratkozzon fel.

Subscribe to Bankless Magyar
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.