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.
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.
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.
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.
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:
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.
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.
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.
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.
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.
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.