Yleiset ominaisuustestit ERC4626-holville PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Yleiset ominaisuustestit ERC4626-holveille

Kun DeFi kasvaa ja kypsyy, skaalautuva infrastruktuuri ja komponoitavuus ovat kehittäjien mieleen. Ethereum Requests for Comments (tai ERC:t) – standardoidut työkalusarjat Ethereum-pohjaisten sovellusten rakentamiseen, kuten laajalti käytetty tunnusstandardi ERC20 — Toimivat keskeisenä tehtävänä tarjota johdonmukaisia ​​ohjeita kehittäjille, jotta he voivat vaikuttaa ekosysteemiin aloittamatta tyhjästä. Aiemmin tänä vuonna, tokenisoitu holvistandardi ERC4626 luotiin edistämään ristiinyhteensopivuutta tuottoa kantavien rahakkeiden välillä. Toteutustietojen standardoinnilla voidaan myös ratkaista kiireellisiä komponoitavuusongelmia, mikä tekee protokollien integroinnista helpompaa ja lopulta vähemmän virhealttiita.

Useita DeFi-projekteja on jo tehty hyväksytty Standardin tavoitteena on lisätä niiden holvien koostettavuutta, ja odotamme laajempaa käyttöönottoa koko ekosysteemissä. Olemassa olevien holvien mukauttaminen aiheuttaa kuitenkin kasvukipuja; kriittisesti, tietyt toteutusvirheet voivat paljastaa uusia kohteita hyökkäykselle. Pienilläkin virheillä (niin pienillä kuin vakiorajapinnan väärintulkintalla) voi olla merkittäviä seurauksia sekä turvallisuuteen että käyttökokemukseen, mikä korostaa tarvetta lisätä tietoturvatyökaluja ja -toimenpiteitä, varsinkin koottavamman DeFi-ekosysteemin sisällä. 

Onneksi yksinkertaisilla virheillä voi olla suhteellisen yksinkertaisia ​​ratkaisuja, jos ne havaitaan hyvissä ajoin ennen niiden hyödyntämistä (ja ihannetapauksessa ennen niiden käyttöönottoa). Sitä varten vapautimme ERC4626 ominaisuustestit sumeaa ja symbolista suoritusta varten auttaakseen varaston rakentajia havaitsemaan standardirikkomuksia, jotka voivat rikkoa integraatioita tai johtaa haavoittuvuuksiin. Tässä viestissä selitämme motivoivan ongelman, käymme läpi lähestymistapamme ja päätämme käytännöllisillä neuvoilla.

Ensin vähän taustaa ERC4626-standardista

Valmistui maaliskuussa, ERC4626 on tokenoitujen holvien standardi. Se otettiin käyttöön laajentamaan laajalti käytettyä ERC20 standardi (tällä hetkellä satojen tokeneiden perusta), kannustaa standardisointia tuottoa kantavien holvien välillä ja varmistaa niiden sovellusten ja protokollien (esim. tuottoaggregaattoreiden) kootettavuus, joiden on oltava vuorovaikutuksessa niiden kanssa. Tämä tarkoittaa, että mikä tahansa ERC4626-holviin rakennettu sovellus voidaan helposti laajentaa toimimaan minkä tahansa muun ERC4626-varaston kanssa. 

Tokenoitujen holvien avulla käyttäjät voivat vapaasti tallettaa omaisuutta lyödäkseen holvin osakkeita ja myöhemmin lunastaa osakkeet nostaakseen pääoman ja koron holvista. Nämä holvin osakkeet ovat ERC20-tokeneita, joten niillä voidaan helposti käydä kauppaa tai käyttää vakuudeksi muiden omaisuuserien lainaamiseen. Käyttäjät voivat esimerkiksi tallettaa omaisuuttaan Yearn-holviin ja lyödä yVault-tokeneita, joilla voidaan sitten käydä kauppaa Uniswapissa, panostaa lisätuottoa varten tai käyttää lainausprotokollien vakuutena.

Liiketoimintalogiikka tuoton tuottamiseen ja jakamiseen (ja osakkeen hinnan määrittämiseen) voi vaihdella toteutuksissa. Kattaakseen mahdollisimman monta varastoa (tavoitteena tehdä niistä yhteentoimivia vs. identtisiä), ERC4626-standardi keskittyy käyttöliittymän kuvaamiseen jättäen suurimman osan toteutuksen yksityiskohdista määrittelemättä. Tämä mahdollistaa vaihtelut liiketoimintalogiikassa niin kauan kuin holvi täyttää käyttöliittymän erityisvaatimukset ja kannustaa yhteentoimivuus useiden erilaisten sovellusten ja tyyppisten ERC4626-holvien välillä.

Kun lisää holveja luodaan, odotamme, että ne toteutetaan alusta alkaen ERC4626-standardin mukaisesti; mutta olemme tällä hetkellä jossain määrin siirtymävaiheessa, jolloin kehittäjien, jotka haluavat hyödyntää parempaa koostettavuutta, on päivitettävä olemassa olevat varastot, sovellukset ja protokollat ​​standardin mukaisiksi. Ja päivittyessään he kohtaavat useita monimutkaisia ​​​​ja haasteita. 

Standardien noudattamisen haasteet (ja vaatimusten noudattamatta jättämisen sudenkuopat)

Uuden standardin noudattaminen ei ole aina yksinkertaista. Jokaisen ERC4626-holvin on täytettävä uskollisesti (ja tarkasti) standardin vaatimukset kuvatulla tavalla. Muuten ERC4626-holvien integroinnista tulee yhä monimutkaisempaa erilaisten muunnelmien huomioon ottamiseksi. Tämä monimutkaisuus tekee integroinnista luonnostaan ​​virhealttiita; ja koska ne eivät ole riittävän varmoja tulevaisuudesta, ne voivat ajan myötä johtaa tietoturva-aukoihin.

Epästandardit ERC20-tunnukset (esim. Tether USD) vaativat, että monet DeFi-järjestelmät käyttävät lisäkirjastoa (kuten SafeERC20) tunnuksen siirtoja suoritettaessa, jotta voidaan turvallisesti käsitellä erilaisia ​​käyttäytymismalleja (esimerkiksi ei palauteta mitään, kun siirto onnistuu palauttamisen sijaan true). Tämä tarkoittaa, että kaikki järjestelmät, jotka ovat vuorovaikutuksessa näiden tokenien kanssa, voivat tulla haavoittuvaiksi, jos järjestelmää ei ole suunniteltu käsittelemään oikein "puuttuvien palautusten" tapauksia. Nämä skenaariot voivat mahdollisesti aiheuttaa yhteisen tietoturvaongelman ja lisätä yleisiä kehitys- ja ylläpitokustannuksia (kun otetaan huomioon ongelmien lieventämiseen tarvittava lisälogiikka ja riippuvuudet). Standardin noudattaminen on siis kriittistä yksittäisten toteutusten lisäksi myös koko ekosysteemin turvallisuuden kannalta. Yksi haavoittuvuus yhdessä järjestelmässä tai riippuvuudessa voi aiheuttaa laajoja ongelmia.

Ihannetapauksessa standardit määritellään muodollisesti ilman epäselvyyttä (esim. ERC20:n muodollinen eritelmä), ja jokainen toteutus voidaan virallisesti todentaa standardispesifikaatioiden mukaisesti. Käytännössä tätä ei kuitenkaan ole helppo saavuttaa lyhyessä ajassa, koska yhteisöltä vaaditaan kustannuksia ja vaivaa.

Esittelyssä suoritettavat ERC4626-ominaisuudet yhdenmukaisuusongelmien tunnistamiseksi 

Pyrimme saavuttamaan ihanteellisen tilan (jokainen holvi on muodollisesti varmennettu tiukkojen muodollisten spesifikaatioiden mukaisesti), olemme kirjoittaneet ERC4626-standardin ominaisuudet havaita poikkeavuuksia standardivaatimusten hienovaraisissa, helposti huomaamattomissa yksityiskohdissa.  

Holvin kehittäjät voivat suorittaa testejä havaitakseen mahdolliset standardirikkomukset toteutuksissaan ennen käyttöönottoa. Ja holviintegraattorit voivat tarkistaa, noudattavatko annetut holvit standardia ennen kuin integroivat ne järjestelmään. Ominaisuuksia voidaan myös testata verkkoon jo asennettujen live-holvien kanssa mainnet fork -testauksella. Live-holvien testaus voi olla hyödyllistä – varsinkin kun varastot on otettu käyttöön tai päivitetty äskettäin – sen varmistamiseksi, että kaikki järjestelmän parametrit on asetettu oikein. 

Valitsimme ominaisuuspohjaiset testit - jotka on kirjoitettu Foundryssa ja jotka ovat valmiita suoritettaviksi sen fuzzerilla - tehdäksemme ominaisuuksista suoritettavia (ja siten testattavia). Jatkossa niitä voidaan ajaa myös symbolisten suoritusten tai mallintarkistustyökalujen avulla, jotta varmistetaan muodollisesti, että annettu varasto täyttää kaikkien mahdollisten syötteiden ja ehtojen ominaisuudet.

Kirjoitimme ominaisuudet riittävän yleisiksi, jotta niitä voidaan soveltaa monenlaisiin varastoihin, jotka toteuttavat erilaista liiketoimintalogiikkaa. Käytimme vain julkisia käyttöliittymätoimintoja tehdäksemme niistä agnostisia toteutuksen yksityiskohtien suhteen. (Tästä rajoituksesta johtuen kuitenkin tietyt standardivaatimukset, jotka viittaavat toteutuskohtaisiin sisäisiin tietoihin, jätettiin ominaisuuksista pois.)

Esimerkiksi seuraava ominaisuus vastaa yhtä vaatimuksista convertToShares() toiminto, "EI SAA näyttää mitään vaihtelua soittajasta riippuen.” Kun otetaan huomioon kaksi tiliosoitetta ja summa, se saa kummankin tilin kutsumaan convertToShares() samalla summalla ja varmistaa, että kaksi palautusarvoa ovat samat. Tämä ominaisuus on riippumaton toteutustiedoista convertToShares(), joka vaihtelee holveittain, ja kaikkien ERC4626:n toteuttavien varastojen on täytettävä. Tämä ominaisuus voidaan suorittaa antamalla erityisiä syötearvoja (yksikkötestausta varten), useita satunnaisia ​​syötteitä (fuzz-testausta varten) tai symbolisia arvoja (symbolista suoritusta ja muodollista varmennusta varten). Sitä voidaan käyttää myös paikallisesti tai verkkohaarukkaa vastaan ​​(integraatiotestausta varten).

Käyttötapaus: ominaisuudet, jotka testaavat pyöristysvirheitä

Esimerkiksi pyöristysvirheet ovat tärkeä luokka (näennäisesti vähäisiä) virheitä, joilla voi olla sarjavaikutuksia. ERC4626:n taustalla oleva kirjanpitologiikka, esim. lyödävien osakkeiden tai nostettavien omaisuuserien määrän laskeminen, on toteutettu kiinteän pisteen aritmetiikkaa käyttäen – pyöristysvirheet ovat väistämättömiä. varten turvallisuusstandardi määrittelee kuitenkin eksplisiittisesti suositellun pyöristyssuunnan kullekin rajapintatoiminnolle jättäen virherajat määrittämättömiksi ja toteutuskohtaisesti. Tarkemmin sanottuna deposit() ja redeem() funktioiden pitäisi palauttaa an varten- likimääräinen tarkka arvo, kun taas mint() ja withdraw() funktioiden pitäisi palauttaa an yli-arviointi. Esimerkiksi, jos osakkeen nykyinen hinta (eli omaisuuden määrä per osake) on 2, niin deposit() 3 wein omaisuutta saa lyödä enintään 1 wei osakkeita (ts. floor(3/2)), sillä aikaa withdraw() 3 wein omaisuuden kanssa tulisi polttaa vähintään 2 wei osakkeita (ts. ceil(3/2)).

Kirjoitimme pyöristämiseen liittyvät ominaisuudet riippumattomiksi taustalla olevasta kirjanpitologiikasta käsittelemällä sitä mustana laatikkona. Tarkemmin sanottuna muotoilimme ne niin kutsutuiksi "paluu"-ominaisuuksiksi, jotka kuvaavat kahden vastakkaisen funktion välistä suhdetta. Esimerkiksi seuraava ominaisuus määrittelee, että lyömällä N osaketta juuri suljetun omaisuuden nostamisen tulee polttaa vähintään N osaketta. Toisin sanoen, kukaan ei voi tehdä ilmaista voittoa muuttamalla omaisuutta ja holvin osakkeita edestakaisin lyömällä ja nostamalla toistuvasti.

katkelma ERC4626-ominaisuustesteistä

Huomasimme todellakin, että useat ERC4626-varastot pääverkossa eivät täytä yllä olevaa ominaisuutta pyöristysvirheiden vuoksi. Tämä tarkoittaa, että kuka tahansa voi ansaita esimerkiksi pari satoshi BTC:tä (1 satoshi ~= 0.02 senttiä kirjoitettaessa) yksinkertaisesti (ja toistuvasti) lyömällä ja nostamalla, tyhjentämällä holvin hitaasti. Tämä voi itse asiassa tuottaa voittoa ketjuille, jotka nauttivat erittäin alhaisista kaasumaksuista (esim. Fantom), tai jos omaisuuden hinta nousee riittävän korkeaksi tulevaisuudessa.

ERC4626-standardin testaus luonnossa

Testasimme kiinteistöjämme verkosta ~100 ERC4626-holvia vastaan ​​ja löysimme monia holveja, jotka eivät noudattaneet standardivaatimuksia - lähinnä pyöristysvirheiden vuoksi (esim. lattiapyöristyksen käyttö silloin, kun katto halutaan, kuten kuvailimme). Erityisesti tietyt holvit eivät onnistuneet lyömään tarkkaa määrää osakkeita, joita pyysi mint() toiminto, vaikka standardi nimenomaisesti vaatii tätä. Jotkut heistä lähettivät myös epäjohdonmukaista Deposit tapahtuma, jossa kirjatut tiedot eroavat tosiasiallisesti lyödystä. Yllätykseksemme joitain holveja ei koskaan lyöty paikan päällä ollenkaan; Sen sijaan he laittavat rahapajapyynnöt jonoon ja käsittelevät ne myöhemmin eränä erillisenä tapahtumana.

Vaikka näitä erilaisia ​​käyttäytymismalleja ei sinänsä voitu hyödyntää, niistä voi tulla haavoittuvia, kun ne integroidaan muihin järjestelmiin, jotka odottavat vain normaalia käyttäytymistä. Nämä ongelmat tekevät holvin integroinnista paljon vaikeampaa, mikä saattaa neutraloida meneillään olevat ponnistelut ja motivoida standardointia.

Käytämme omaisuustestejämme ja muita käytännöllisiä vaiheita kohti standardinmukaisuutta

Standardin tarkka noudattaminen voi estää erilaiset käyttäytymiset (mieluiten ennen kuin niitä koskaan otetaan käyttöön). Toivomme, että kiinteistömme auttavat muutamien lisätoimintojen ohella. Niille, jotka kehittävät ja/tai integroivat ERC4626-holvia:

  • Suosittelemme kiinteistömme hoitamista testit holvejasi vasten. He löytävät nopeasti ongelmat, jos niissä on selkeitä standardirikkomuksia.
  • Suosittelemme myös tutustumaan meidän ominaisuudet Tarkistaaksesi ymmärryksesi vakiovaatimuksista ja muuttaaksesi toteutustasi, jos havaitset tahattomia eroja.
  • Jos holvisi joutuu poikkeamaan standardista, suosittelemme, että dokumentoit selkeästi epätyypilliset käytökset, jotta muut voivat käsitellä nämä poikkeamat oikein integroitaessa holvisi. Huomaa, että tätä tulisi harkita viimeisenä keinona.

***
ERC4626-holveista voi tulla tärkeä rakennuspalikka DeFille lähitulevaisuudessa – ja koostettavuuden vuoksi on tärkeää, että sekä uudet että olemassa olevat holvit noudattavat standardia. Uusia toteutuksia syntyy standardin mukaisesti, joten ei ole parempaa aikaa kuin nykyinen standardoida olemassa olevia varastoja. 

Kun työskentelemme kohti ihanteellista tilaa (jossa eri varastot ovat tasaisesti koostettavissa), voidaan suorittaa ERC4626-ominaisuustestejä, jotta standardirikkomukset voidaan havaita helpommin varastototeutuksissa. Omaisuustestit (dokumentaatioineen ja esimerkeineen) ovat kaikki julkisesti saatavilla Githubissamme säilytyspaikka. Otamme mielellämme vastaan ​​palautettasi ja panoksiasi!

***
Tässä esitetyt näkemykset ovat yksittäisen AH Capital Management, LLC:n ("a16z") lainaaman henkilöstön näkemyksiä, eivätkä ne ole a16z:n tai sen tytäryhtiöiden näkemyksiä. Tietyt tähän sisältyvät tiedot on saatu kolmansien osapuolien lähteistä, mukaan lukien a16z:n hallinnoimien rahastojen kohdeyrityksiltä. Vaikka a16z on otettu luotettavilta uskotuista lähteistä, se ei ole itsenäisesti tarkistanut tällaisia ​​tietoja, eikä se esitä tietojen nykyistä tai pysyvää tarkkuutta tai sen soveltuvuutta tiettyyn tilanteeseen. Lisäksi tämä sisältö voi sisältää kolmannen osapuolen mainoksia; a16z ei ole tarkistanut tällaisia ​​mainoksia eikä tue mitään niiden sisältämää mainossisältöä.

Tämä sisältö on tarkoitettu vain tiedoksi, eikä siihen tule luottaa lainopillisena, liike-, sijoitus- tai veroneuvona. Näissä asioissa kannattaa kysyä neuvojanne. Viittaukset arvopapereihin tai digitaaliseen omaisuuteen ovat vain havainnollistavia, eivätkä ne ole sijoitussuositus tai tarjous tarjota sijoitusneuvontapalveluita. Lisäksi tämä sisältö ei ole suunnattu eikä tarkoitettu sijoittajien tai mahdollisten sijoittajien käytettäväksi, eikä siihen voida missään olosuhteissa luottaa tehdessään sijoituspäätöstä mihinkään a16z:n hallinnoimaan rahastoon. (A16z-rahastoon sijoitustarjous tehdään vain minkä tahansa tällaisen rahaston suunnatun osakeannin muistion, merkintäsopimuksen ja muiden asiaankuuluvien asiakirjojen perusteella, ja ne tulee lukea kokonaisuudessaan.) Kaikki mainitut sijoitukset tai kohdeyritykset, joihin viitataan, tai kuvatut eivät edusta kaikkia investointeja a16z:n hallinnoimiin ajoneuvoihin, eikä voi olla varmuutta siitä, että investoinnit ovat kannattavia tai että muilla tulevaisuudessa tehtävillä investoinneilla on samanlaisia ​​ominaisuuksia tai tuloksia. Luettelo Andreessen Horowitzin hallinnoimien rahastojen tekemistä sijoituksista (lukuun ottamatta sijoituksia, joiden osalta liikkeeseenlaskija ei ole antanut a16z:lle lupaa julkistaa, sekä ennalta ilmoittamattomat sijoitukset julkisesti noteerattuihin digitaalisiin omaisuuseriin) on saatavilla osoitteessa https://a16z.com/investments /.

Kaaviot ja kaaviot ovat vain tiedoksi, eikä niihin tule luottaa sijoituspäätöstä tehtäessä. Aiempi kehitys ei kerro tulevista tuloksista. Sisältö puhuu vain ilmoitetun päivämäärän mukaan. Kaikki näissä materiaaleissa esitetyt ennusteet, arviot, ennusteet, tavoitteet, näkymät ja/tai mielipiteet voivat muuttua ilman erillistä ilmoitusta ja voivat poiketa tai olla ristiriidassa muiden ilmaisemien mielipiteiden kanssa. Tärkeitä lisätietoja on osoitteessa https://a16z.com/disclosures

Aikaleima:

Lisää aiheesta Andreessen Horowitz