Ohjeita panostuspöytäkirjojen tarkastamiseen

Ohjeita panostuspöytäkirjojen tarkastamiseen

Lukeaika: 6 pöytäkirja

Tässä blogissa olemme hahmotelleet likviditeetin panostusprotokollien käsitteen ja panostusprotokollien auditointiohjeet. Ohjeet kattavat useita haavoittuvia kohtia, kuten nostomekanismit, pyöristysvirheet, ulkoiset puhelut, maksulogiikka, silmukat, rakenteet, panostuksen kesto jne. Tämä blogiviesti on hyödyllinen viite panostusprotokollien tarkasteluun ja voi auttaa sinua tunnistamaan mahdolliset virheet. .

Mikä on likviditeettipanos?

Likviditeettipanoksen avulla käyttäjät voivat panostaa kryptovaluuttaomistuksensa ja ansaita palkintoja likviditeetistä tinkimättä. Sen sijaan, että lukitsisivat kolikot määräajaksi, käyttäjät voivat saada nestemäisen rahakkeen, joka edustaa heidän panostamiaan varojaan. Tällä tunnuksella voidaan käydä kauppaa tai sitä voidaan käyttää kuten mitä tahansa muuta kryptovaluuttaa, jolloin käyttäjät voivat käyttää omaisuuttaan haluamallaan tavalla samalla, kun he ansaitsevat panospalkkioita.

Ohjeet panostusprotokollan auditointiin PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Sinulla on esimerkiksi 100 ETH:ta, jonka haluat panostaa Ethereum-verkkoon. Sen sijaan, että lukitsisit ETH:si määräajaksi, voit käyttää Lidon kaltaista likviditeettiä panostaaksesi ETH:si ja saada vastineeksi stETH-nimisen nestetokenin. StETH:n avulla voit silti käydä kauppaa tai käyttää panostamaasi ETH:ta samalla kun ansaitset panospalkkioita.

Aloitetaan panossopimusten auditointi:

Tutustu kaikkiin saatavilla oleviin auditointieritelmiin ennen sopimuskoodin kirjoittamista. Se voi olla valkoisen paperin, README-tiedostojen tai jonkin muun muodossa. Nämä antavat sinulle käsityksen siitä, mitä sopimuskoodi sisältää.

Kun tarkastelet panossopimuksen auditointierittelyä, ota huomioon seuraavat seikat:

  • Maksutyypit ja niiden laskelmat.
  • Palkintomekanismi panostetuille tokeneille
  • Omistajan valtuudet
  • Pitääkö sopimuksessa ETH?
  • Mitä tunnusmerkkejä sopimus sisältää?
  • Alkuperäinen sopimus, josta se on erotettu

Tarkista, että tekniset tiedot vastaavat koodia. Aloita maksuilla ja tokenomiikalla, jonka jälkeen vahvistetaan omistajan valtuutus. Tarkista, että kaikki palkkiot ja maksujen arvot ovat asiakirjojen mukaisia.

Haavoittuvia paikkoja etsiä?

1. Palkintojen nostomekanismi:

Tarkista, että panosmerkkipalkkiomekanismi on otettu käyttöön oikein ja että palkinnot jaetaan oikeudenmukaisesti ja suhteellisesti kaikille panostajille. Projektit voivat jakaa palkkioita kahdella tavalla: joko automaattisesti, säännöllisin väliajoin tai käyttäjien itsensä pyynnöstä. Nostotoiminto voidaan toteuttaa ja räätälöidä protokollan liiketoimintalogiikan mukaan.
Alla on muutamia tarkistuspisteitä:

  • Tarkista, pystyykö joku nostamaan enemmän kuin palkkio + panostettu summa.
  • Tarkista yli-/alivuoto summalaskelmasta
  • Tarkista, voivatko tietyt parametrit vaikuttaa negatiivisesti palkkioihin laskennan aikana.
  • Jos tässä funktiossa käytetään block.timestamp tai block.number. Tarkista, voidaanko sitä hyödyntää millään tavalla.

2. Maksulogiikka:

Jos talletuksesta ja nostosta veloitetaan jokin maksu, varmista, ettei yksikään käyttäjä voi ohittaa maksua. Ole lisäksi valppaana mahdollisten yli- tai alivuoto-ongelmien varalta. Vain järjestelmänvalvojalla tai omistajalla tulee olla oikeus muuttaa maksuasetuksia. Varmista myös, että enimmäismaksuille on asetettu kynnys, joka estää ylläpitäjää asettamasta sitä liian suureksi.

3. LP Tokenin lyönti-/polttomekanismi:

Tarkista, että lyönti- ja polttomekanismit on toteutettu oikein. Polttofunktion pitäisi kumota kaikki mintufunktion tekemät tilan muutokset. Lisäksi on erittäin tärkeää varmistaa, että käyttäjät saavat oikean määrän tokeneita ensimmäisen panoksen aikana, kun pooli on tyhjä.

Lyönti- ja polttofunktioiden logiikka voidaan matemaattisesti todentaa piilotettujen haavoittuvuuksien paljastamiseksi. Myöskään lyötyjen LP-rahakkeiden kokonaistarjonta ei saa ylittää panostettua omaisuutta.

4. Pyöristysvirheet:

Vaikka tietyt pienet pyöristysvirheet ovat tyypillisesti väistämättömiä eivätkä huolestuttavia, ne voivat kasvaa merkittävästi, kun niitä on mahdollista moninkertaistaa. Etsi reunatapauksia, joissa pyöristysvirheistä voi hyötyä toistuvasti panostamalla ja poistamalla.

Sen määrittämiseksi, voivatko pyöristysvirheet kertyä huomattavaan määrään pitkän ajan kuluessa, voimme laskea matemaattisesti mahdollisten pyöristysvirheiden alueen.

5. Panoksen kesto:

Varmista, että panostuksen kestolaskelmat sopimuksessa ovat linjassa määritellyn liiketoimintalogiikan kanssa. Varmista, että käyttäjät eivät voi lunastaa palkintoja ennen kuin panostusaika on päättynyt ohittamalla kestotarkistukset. Tarkista myös, voiko hyökkääjä hyödyntää panostuksen kestoa saadakseen lisää palkintoja.

6. Ulkopuhelut ja merkkien käsittely:

Suurin osa ulkoisista puheluista tulee token-sopimuksiin. Joten meidän on määritettävä, minkä tyyppisiä tokeneja panostussopimus käsittelee. On välttämätöntä tarkistaa ulkoiset puhelut mahdollisten virheiden ja paluuhyökkäysten varalta. Deflaatiomerkit tai siirtomaksulliset rahakkeet, kuten Safemoon, voivat aiheuttaa ongelmia, jos niiden logiikkaa ei ole toteutettu oikein.

7. Hintamanipulaatioiden tarkistukset:

Hintamanipulaatio flash-lainan kautta on yksi yleisimmistä DeFi-projektien hakkeroista. Saattaa olla tilanteita, joissa pahantahtoiset toimijat voivat käyttää flash-lainoja manipuloidakseen hintoja panostaessaan tai avattaessaan suuria määriä tokeneita. Tarkista panostus- ja panostustoiminnot huolellisesti välttääksesi reunatapausskenaariot, jotka voivat johtaa flash-lainoihin perustuviin hinnanmanipulaatiohyökkäuksiin ja muiden käyttäjien varojen menettämiseen.

8. Muutamia lisätarkastuksia:

  • silmukoita: Jos sopimuslogiikka sisältää silmukan ryhmien yli, on tärkeää varmistaa, että lohkokaasurajaa ei ylitetä. Tämä voi tapahtua, kun taulukon koko on erittäin suuri, joten sinun tulee tutkia, mitkä toiminnot voivat lisätä taulukon kokoa ja voivatko käyttäjät käyttää sitä hyväkseen DoS-hyökkäyksen aiheuttamiseksi. Katso tämä raportti.
  • Rakenteet: Panossopimuksissa käytetään struct-tyyppiä käyttäjä- tai poolitietojen tallentamiseen. Kun määrität tai käytät funktion rakennetta, on tärkeää määrittää, käytetäänkö "muistia" vai "tallennustilaa". Se saattaa auttaa meitä säästämään bensaa. Lisätietoja on osoitteessa tähän artikkeliin.
  • Edessä juokseva: Etsi skenaarioita, joissa pahantahtoiset toimijat voisivat toteuttaa minkä tahansa tapahtuman edukseen.
  • Toimintojen näkyvyys / kulunvalvontatarkastukset: Kuka tahansa voi käyttää mitä tahansa toimintoa, joka on ilmoitettu ulkoiseksi tai julkiseksi. Siksi on tärkeää varmistaa, että mikään julkinen toiminto ei voi suorittaa mitään arkaluonteisia toimia. On erittäin tärkeää varmistaa, että panostusprotokollassa on otettu käyttöön asianmukaiset säädöt, joilla estetään luvaton pääsy sekä panostettuihin kolikoihin että järjestelmän infrastruktuuriin.
  • Keskittämisen riskit: On tärkeää olla antamatta omistajalle liiallisia valtuuksia. Jos järjestelmänvalvojan osoite vaarantuu, se voi aiheuttaa merkittävää vahinkoa protokollalle. Varmista, että omistajan tai järjestelmänvalvojan oikeudet ovat asianmukaiset, ja varmista, että protokollalla on suunnitelma tilanteiden käsittelemiseksi, joissa järjestelmänvalvojan yksityiset avaimet vuotavat.
  • ETH / WETH käsittely: Sopimuksiin sisältyy usein erityinen logiikka ETH:n käsittelyyn. Esimerkiksi kun msg.value > 0, sopimus voi muuntaa ETH:n WETH:ksi sallien silti WETH:n vastaanottamisen suoraan. Kun käyttäjä määrittää valuutaksi WETH:n, mutta lähettää ETH:n kutsun mukana, tämä voi rikkoa tiettyjä invariantteja ja johtaa virheelliseen toimintaan.

Tähän mennessä olemme keskustelleet likviditeetin panostamista koskevista protokollista ja tällaisten protokollien auditointiohjeista. Lyhyesti sanottuna Likviditeettipanos antaa käyttäjille mahdollisuuden ansaita panostuspalkkioita likviditeetistä tinkimättä. Olemme hahmotellut panostussopimusten haavoittuvia kohtia, joihin tilintarkastajien tulee kiinnittää huomiota, kuten peruutusmekanismit, maksulogiikka, LP-merkkien lyönti/polttomekanismi, pyöristysvirheet, panostuksen kesto, ulkoiset puhelut ja hinnanmanipulaatiotarkistukset. 

Suosittelemme tilintarkastajia tarkastelemaan tarkastusspesifikaatioasiakirjoja, yhdistämään spesifikaatiot koodiin sekä tarkistamaan maksut ja tokenomiikkavalidoinnin. Suosittelemme myös lisätarkistuksia, kuten silmukoita taulukoiden yli, muistin tai tallennustilan määrittämistä struct-tyyppisille tiedoille ja etukäteisskenaarioita. Nämä ohjeet ovat hyödyllisiä panostusprotokollien auditoinnissa ja auttavat tunnistamaan mahdolliset viat.


11 Näyttökerrat

Aikaleima:

Lisää aiheesta Quillhash