Útmutató a tőzsdei jegyzőkönyvek auditálásához

Útmutató a tőzsdei jegyzőkönyvek auditálásához

Olvasási idő: 6 jegyzőkönyv

Ebben a blogban felvázoltuk a likviditási befektetési protokollok fogalmát és a befektetési protokollok auditálási irányelveit. Az irányelvek számos sebezhető pontra vonatkoznak, mint például a visszavonási mechanizmusokra, kerekítési hibákra, külső hívásokra, díjlogikára, hurkokra, struktúrákra, tét időtartamára stb. Ez a blogbejegyzés hasznos referencia lesz a tét protokollok auditálásához, és segíthet azonosítani a potenciális hibákat. .

Mi az a likviditási befektetés?

A likviditási befektetés lehetővé teszi a felhasználók számára, hogy a likviditás feláldozása nélkül tétet szerezzenek kriptovalutában, és jutalmakat szerezzenek. Ahelyett, hogy egy meghatározott időtartamra zárolnák érméiket, a felhasználók egy folyékony tokent kaphatnak, amely a megtett eszközeiket jelképezi. Ezzel a tokent bármely más kriptovalutához hasonlóan lehet kereskedni vagy használni, így a felhasználók tetszés szerint használhatják eszközeiket, miközben tét jutalmakat is szerezhetnek.

Guidelines for Auditing Staking Protocols PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Például 100 ETH-ja van az Ethereum hálózaton. Ahelyett, hogy határozott időre zárolná ETH-ját, használhat egy likviditási befektetési szolgáltatást, például a Lido-t az ETH kockáztatására, és cserébe kaphat egy stETH nevű folyékony tokent. A stETH segítségével továbbra is kereskedhet vagy felhasználhatja a megtett ETH-t, miközben tét jutalmakat keres.

Kezdjük a befektetési szerződések auditálásával:

Vizsgálja meg az összes rendelkezésre álló audit-specifikációt, mielőtt belekezdene a szerződéskódba. Lehet fehér papír, README fájlok vagy valami más formájában. Ezek alapján képet kaphat arról, hogy mit fog tartalmazni a szerződéskód.

Amikor megnézi az adásvételi szerződés könyvvizsgálati specifikációját, ügyeljen a következőkre:

  • A díjak típusai és számításaik.
  • Jutalmazási mechanizmus a téttel ellátott tokenekért
  • A tulajdonos jogköre
  • Tartani fog a szerződésben az ETH-t?
  • Milyen jelzőket tartalmaz a szerződés?
  • Eredeti szerződés, ahonnan villás

Ellenőrizze, hogy a specifikációk megegyeznek-e a kóddal. Kezdje a díjakkal és a tokenomikával, majd a tulajdonos jogosultságának érvényesítésével. Ellenőrizze, hogy minden jutalom és díjérték összhangban van-e a dokumentációval.

Sebezhető helyeket keresni?

1. Jutalomfelvételi mechanizmus:

Ellenőrizze, hogy a tét token jutalmazó mechanizmus megfelelően van-e végrehajtva, és hogy a jutalmakat igazságosan és arányosan osztják-e el az összes téttel rendelkező személy között. A projektek kétféle módon oszthatják ki a jutalmakat: vagy automatikusan, időszakosan, vagy maguk a felhasználók kérésére. A kivonási funkció a protokoll üzleti logikájának megfelelően megvalósítható és testreszabható.
Íme néhány ellenőrző pont:

  • Ellenőrizze, hogy valamelyik felhasználó képes-e többet kivenni, mint a jutalma + a tét összege.
  • Ellenőrizze a túlcsordulást/alulcsordulást az összeg kiszámításánál
  • Ellenőrizze, hogy bizonyos paraméterek negatív hatással lehetnek-e a jutalmakra a számítás során.
  • Ha ebben a függvényben block.timestamp vagy block.number használatos. Ellenőrizze, hogy kihasználható-e bármilyen módon.

2. Díj logika:

Ha a befizetés és a kifizetés bizonyos díjköteles, akkor ellenőrizze, hogy egyetlen felhasználó sem tudja megkerülni a díjat. Ezenkívül ügyeljen az esetleges túlcsordulási vagy alulcsordulási problémákra. Csak a rendszergazda vagy a tulajdonos jogosult a díjbeállítások módosítására. Győződjön meg arról is, hogy megállapították-e a maximális díjak küszöbértékét, megakadályozva, hogy az adminisztrátor túl magas összeget állapítson meg.

3. Az LP token verési/égetési mechanizmusa:

Ellenőrizze, hogy a pénzverési és égetési mechanizmusokat megfelelően alkalmazták-e. Az égési függvénynek meg kell fordítania a minta függvény által végzett összes állapotváltozást. Ezenkívül alapvető fontosságú annak ellenőrzése, hogy a felhasználók megkapják-e a megfelelő mennyiségű tokent az első tét során, amikor a készlet üres.

A verési és égetési függvények logikája matematikailag ellenőrizhető, hogy felfedjen minden rejtett sebezhetőséget. Ezenkívül a verett LP tokenek teljes készlete nem haladhatja meg a kockázott eszközöket.

4. Kerekítési hibák:

Annak ellenére, hogy bizonyos kisebb kerekítési hibák jellemzően elkerülhetetlenek és nem aggodalomra adnak okot, jelentősen megnövekedhetnek, ha lehetőség nyílik a többszörözésre. Keressen olyan szélső eseteket, amikor a kerekítési hibákból hasznot húzhat az ismételt kockázással és eltávolítással.

Annak megállapítására, hogy a kerekítési hibák jelentős összeget halmozhatnak fel hosszabb időn keresztül, matematikailag kiszámíthatjuk a lehetséges kerekítési hibák tartományát.

5. Tétezés időtartama:

Győződjön meg arról, hogy a szerződésben szereplő vállalási időtartam számításai összhangban vannak a megadott üzleti logikával. Az időtartam-ellenőrzések megkerülésével ellenőrizze, hogy a felhasználók nem válthatnak-e be jutalmakat a tét időtartamának lejárta előtt. Ezenkívül ellenőrizze, hogy a tét időtartamát a támadó kihasználhatja-e több jutalom megszerzésére.

6. Külső hívások és tokenkezelés:

A legtöbb külső hívás a token szerződésekre irányul. Tehát meg kell határoznunk, hogy a tét szerződés milyen típusú tokeneket kezel. Alapvető fontosságú, hogy ellenőrizze a külső hívásokat az esetleges hibák és visszatérési támadások szempontjából. A deflációs tokenek vagy az átviteli díjjal járó tokenek, mint például a Safemoon, problémát jelenthetnek, ha logikájuk nincs megfelelően implementálva.

7. Ármanipulációk ellenőrzése:

A gyorskölcsönnel történő ármanipuláció az egyik leggyakoribb feltörés a DeFi projekteken. Előfordulhatnak olyan helyzetek, amikor a rosszindulatú szereplők gyorskölcsönök segítségével manipulálhatják az árakat nagy mennyiségű tokenek tétje vagy eltávolítása során. Gondosan tekintse át a befektetési és -kivonási funkciókat, hogy elkerülje a szélsőséges eseteket, amelyek gyorskölcsön-alapú ármanipulációs támadásokhoz és más felhasználók pénzének elvesztéséhez vezethetnek.

8. Néhány további ellenőrzés:

  • Hurkok: Ha a szerződéses logika magában foglalja a tömbök hurkolását, fontos annak biztosítása, hogy a blokkgáz-korlátot ne lépjék túl. Ez akkor fordulhat elő, ha a tömb mérete nagyon nagy, ezért meg kell vizsgálnia, milyen funkciók növelhetik a tömb méretét, és hogy bármely felhasználó kihasználhatja-e azt DoS támadásra. Nézd meg ezt jelentést.
  • Struktúrák: A kockáztatási szerződések a struct típust használják a felhasználói vagy készletadatok tárolására. Egy függvényen belüli struktúra deklarálásakor vagy elérésekor fontos meghatározni, hogy a „memória” vagy a „tárhely” értéket használja-e. Segíthet megtakarítani egy kis gázt. További információért kérjük, tekintse meg a ehhez a cikkhez.
  • Elöl futó: Keressen olyan forgatókönyveket, amelyekben a rosszindulatú szereplők bármilyen tranzakciót lebonyolíthatnak a maguk javára.
  • Funkció láthatósági/hozzáférési ellenőrzések: Bármely külső vagy nyilvános funkcióhoz bárki hozzáférhet. Ezért fontos annak biztosítása, hogy egyetlen közfeladat sem végezhet érzékeny tevékenységet. Alapvető fontosságú annak ellenőrzése, hogy a tétbemutató protokoll megfelelő ellenőrzéseket valósított-e meg, hogy megakadályozza az illetéktelen hozzáférést mind a tétbe helyezett érmékhez, mind a rendszer infrastruktúrájához.
  • Centralizációs kockázatok: Fontos, hogy ne adjunk túlzott hatáskört a tulajdonosnak. Ha az adminisztrátori cím veszélybe kerül, az jelentős károkat okozhat a protokollban. Ellenőrizze, hogy a tulajdonos vagy a rendszergazdai jogosultságok megfelelőek-e, és győződjön meg arról, hogy a protokoll rendelkezik-e tervvel az olyan helyzetek kezelésére, amikor a rendszergazda privát kulcsai kiszivárognak.
  • ETH / WETH kezelés: A szerződések gyakran tartalmaznak speciális logikát az ETH kezelésére. Például, ha az msg.value > 0, a szerződés átalakíthatja az ETH-t WETH-vé, miközben továbbra is lehetővé teszi a WETH közvetlen fogadását. Ha a felhasználó a WETH-t adja meg pénznemként, de ETH-t küld a hívással, ez feltörhet bizonyos invariánsokat, és helytelen viselkedéshez vezethet.

Eddig tárgyaltuk a likviditási befektetési protokollokat és az ilyen protokollok auditálási irányelveit. Dióhéjban, a likviditási befektetés lehetővé teszi a felhasználók számára, hogy a likviditás feláldozása nélkül szerezzenek tétjutalmakat. Felvázoltuk azokat a sérülékeny pontokat, amelyekre a könyvvizsgálóknak figyelniük kell a kockáztatási szerződésekben, mint például a visszavonási mechanizmusok, a díj logika, az LP token verési/égetési mechanizmusa, a kerekítési hibák, a tét időtartama, a külső hívások és az ármanipulációs ellenőrzések. 

Javasoljuk az auditoroknak, hogy vizsgálják meg az auditálási specifikációkat, párosítsák a specifikációkat a kóddal, és ellenőrizzék a díjakat és a tokenomikai érvényesítést. Javasoljuk továbbá a további ellenőrzéseket, például a tömbök hurkolását, a memória vagy a tárhely megadását a struct típusú adatokhoz és az előre futó forgatókönyveket. Ezek az irányelvek hasznosak lesznek a kockáztatási protokollok auditálásához, és segítenek azonosítani a lehetséges hibákat.


11 Nézetek

Időbélyeg:

Még több Quillhash