Glamsterdam-päivityksen eteneminen on pysähtynyt Hoodi-testiverkossa, koska ehdotetut muutokset Ethereumin gas-laskentaan voivat muuttaa joidenkin jo käytössä olevien älysopimusten toimintaa. Riski ei rajoitu siihen, että tapahtumat maksaisivat enemmän: sopimus voi toimia odottamattomasti, jos sen logiikka perustuu vanhaan käsitykseen siitä, kuinka paljon gasia tietty toiminto kuluttaa. Ethereum Foundationin mukaan Hoodissa ei tehdä päivitystä ennen kuin ongelmat on ratkaistu.
8
Mitä EIP-8037 ja EIP-8038 muuttavat?
Ethereumissa gas on laskentayksikkö, jolla mitataan verkossa suoritettavien toimintojen kustannuksia. EIP-8037 nostaa uuden tilan luomisen kustannuksia ja tuo niille erillisen laskentatavan. EIP-8038 puolestaan muuttaa olemassa olevan tilan käyttämisen gas-kustannuksia. Yhdessä ehdotukset muuttavat joidenkin toimintojen hinnoittelua ja gasin laskentaa.
20
23
8
Muutos on tärkeä, koska älysopimus voi käyttää gas-rajoja ja gas-mittauksia päätelläkseen, onnistuiko toiminto, epäonnistuiko se vai pitäisikö sitä yrittää uudelleen. Jos gasia kuluu eri tavalla kuin sopimus olettaa, sen logiikka voi mennä vikaan etenkin ulkoisten kutsujen epäonnistuessa.
6
19
Missä ongelmat voivat näkyä?
- Kiinteät kaasubudjetit: Sopimus voi välittää toiselle toiminnolle ennalta määrätyn määrän gasia sen aiemman kustannuksen perusteella. Jos toiminto kallistuu, budjetti ei ehkä enää riitä. Foundationin mukaan osa projekteista nojaa juuri tällaisiin oletuksiin, joita ehdotukset muuttaisivat.
8
9
gasleft()-tarkistukset: ChainSecurityn mukaan gasleft() kertoo suorituskehyksen jäljellä olevan execution-gasin määrän. Jos erillinen valtion gas-varanto ehtyy, myös tilan luomisen kustannuksia voidaan kattaa tästä saldosta. ChainSecurity varoittaa päättelemästä pelkän jäljellä olevan gasin perusteella, miksi kutsu epäonnistui: väliin tuleva peruutus tai gasin palautuminen voi tehdä tällaisesta päättelystä epäluotettavaa.
19
- Virheiden käsittely: ChainSecurityn löydöistä kertovan raportoinnin mukaan muuttunut gas-laskenta voi saada osan sopimuksista tallentamaan epäonnistuneen toiminnon pysyvästi sen sijaan, että toiminto peruttaisiin siististi tai sitä voisi yrittää uudelleen.
41 Jos tämä estäisi noston sopimuksesta, jota ei voi muuttaa, varat voisivat jäädä käyttäjien ulottumattomiin. Kyse on mahdollisesta seurauksesta, ei näytöstä siitä, että pääverkossa olisi jo jäänyt varoja jumiin.
11
41
Foundation puhuu kahdeksasta gas-laskentaan liittyvästä invariantista eli oletuksesta, joihin jotkin sopimukset voivat nojata. Tämä ei tarkoita, että jokainen Ethereum-sopimus olisi vaarassa rikkoutua. Foundation on julkaissut esimerkkejä ja tarkistuskysymyksiä, joiden avulla kehittäjät voivat arvioida omaa koodiaan.
2
8
Mitä ChainSecurity havaitsi?
Ethereum.org kertoi, että pääverkossa oli tullut esiin 13 esimerkkiä. Myös muu uutisointi kuvaili 13:a käytössä olevaa sopimusta, joiden virhetilanteiden käsittelyyn muutos saattaa vaikuttaa.
13
38 Esimerkit osoittavat, ettei yhteensopivuusriski ole pelkästään teoreettinen. Ne eivät kuitenkaan tarkoita, että 13 sopimusta olisi jo rikkoutunut: huoli koskee sitä, miten ne voisivat käyttäytyä, jos ehdotetut muutokset otettaisiin käyttöön.
8
38
Saatavilla olevat lähdetiedot eivät sisällä täydellistä, riippumattomasti tarkistettavaa luetteloa kaikista 13 sopimuksesta tai niiden virhetilanteista. Kahdeksaa invarianttia ei myöskään pidä tulkita takeeksi siitä, että jokainen sopimus olisi tarkistettu.
Näin Ethereum Foundation reagoi
Foundation kertoi 6. marraskuuta tekevänsä yhteistyötä ChainSecurityn ja Dedaubin kanssa sekä suorittavansa omia tarkistuksia. Se pyysi kehittäjiä ja auditoijia selvittämään, nojaavatko heidän projektinsa muutoksen kohteena oleviin oletuksiin.
8 Julkaistuihin materiaaleihin kuuluu esimerkkejä ja omatoimisia tarkistuskysymyksiä. Raportoinnissa projekteja on lisäksi kehotettu ottamaan yhteyttä osoitteeseen glamsterdam@ethereum.org, jos ne havaitsevat riskin.
2
Kehotus koskee myös projektikohtaisia tarkistuksia. Protokollan yleinen auditointi ei voi osoittaa, että jokainen sovellus ja sen virhetilanteiden käsittely toimivat turvallisesti. Tiimien on testattava omat sopimuksensa muuttuvia gas-sääntöjä vasten.
8
33
Glamsterdam-päivityksen aikajana
Glamsterdam aktivoitiin Sepolia-testiverkossa 6. lokakuuta.
6 ChainSecurity julkaisi gas-laskentaa käsittelevän analyysinsä 13. lokakuuta.
19 Foundation ilmoitti 22. lokakuuta, että Hoodiin suunniteltu 26. lokakuuta aktivointi siirtyy eikä uutta ajankohtaa ollut tuolloin tiedossa. Siirto koski myös Hoodin gas-rajan suunniteltua nostoa 200 miljoonaan.
49
34
Foundation vahvisti 6. marraskuuta, ettei Hoodissa tehdä haarautusta eli forkia ennen kuin tunnistetut riskit on ratkaistu.
8 Tilanne on siis tietoturvasyistä keskeytetty testaus, ei uusiin päivämääriin perustuva aikataulu. Käytettävissä olevat päivitykset eivät myöskään vahvista, että hätätilanteen peruutusfork olisi suunniteltu varojen palautuskeinoksi.