Ethereum trekt op het laatste moment de geplande Glamsterdam-upgrade op testnet Hoodi terug. De activatie van 26 oktober vervalt nadat vragen ontstonden over de manier waarop nieuwe gasregels bestaande smart contracts kunnen laten reageren.
Een nieuwe datum is er nog niet. Ontwikkelaars willen eerst verder onderzoeken hoe EIP-8037 uitpakt bij contracten die al op
Ethereum bestaan.
Activatie van 26 oktober vervalt volledig
Glamsterdam stond op Hoodi gepland voor 26 oktober om 17.42 uur UTC, bij epoch 132.352.
Die configuratie wordt nu verwijderd.
Dat geldt voor Amsterdam op de execution layer en Gloas op de consensus layer. Ook de geplande verhoging van Hoodi's gaslimiet naar 200 miljoen gaat op dat moment niet door.
De wijziging draait alleen een toekomstige configuratie terug.
De bestaande geschiedenis van de
blockchain wordt niet teruggedraaid.
EIP-8037 staat centraal in het onderzoek
De Foundation noemt specifiek de interactie tussen EIP-8037 en bestaande mainnetcontracten als reden om meer tijd te nemen.
EIP-8037 verandert hoe Ethereum kosten voor het creëren van nieuwe state berekent.
State is informatie die permanent door het netwerk moet worden bijgehouden, zoals waarden in contractopslag.
De upgrade introduceert daarvoor een afzonderlijke gasvoorraad naast de normale execution gas.
Op papier moet dat de prijs van langdurige opslag beter laten aansluiten op de belasting die zulke gegevens voor het netwerk veroorzaken.
Voor bestaande contractcode kan het echter ook aannames veranderen die jarenlang hetzelfde waren.
Een mislukte call kan anders eindigen dan voorheen
Smart contracts kunnen een externe call uitvoeren en daarna controleren of die handeling is gelukt.
Wanneer zo'n call door een tekort aan gas mislukt, kan het bovenliggende contract proberen de fout af te handelen.
Onder de bestaande regels kan daarbij zo weinig gas overblijven dat ook die foutafhandeling faalt.
De volledige transactie wordt dan teruggedraaid.
Onder Glamsterdam kan een aparte voorraad voor state gas in sommige situaties beschikbaar blijven nadat de onderliggende call mislukt.
Daardoor kan de foutafhandeling ineens wél worden voltooid.
Dezelfde contractcode kan dus ander gedrag geven
Dat verschil lijkt technisch, maar kan praktisch zwaar wegen.
Stel dat een contract na een mislukte call permanent vastlegt dat een claim is afgehandeld of dat een nieuwe poging niet meer is toegestaan.
Onder de oude gasregels kon de foutafhandeling zelf tekortkomen en werd alles teruggedraaid.
Onder de nieuwe regels kan voldoende gas beschikbaar zijn om die statuswijziging wél vast te leggen.
De code is hetzelfde.
De uitkomst verandert doordat de gasregels veranderen.
ChainSecurity waarschuwt daarom dat ontwikkelaars niet alleen naar normale succesvolle uitvoering moeten kijken, maar juist naar failure paths.
Het omgekeerde probleem bestaat eveneens
Glamsterdam maakt niet simpelweg meer gas beschikbaar.
EIP-8037 kan bepaalde handelingen waarbij nieuwe state ontstaat juist veel duurder maken.
EIP-8038 verandert daarnaast de executionkosten voor toegang tot bestaande state.
Een contract met een hard gecodeerd gasbudget kan daardoor tegen de andere kant van hetzelfde probleem aanlopen.
Een hoeveelheid gas die vandaag voldoende is voor een bepaalde functie kan na de upgrade tekortschieten.
Ook dat kan gedrag veranderen zonder dat de contractcode zelf is aangepast.
Geen bewijs van een aanval op Ethereum
De beveiligingsanalyse beschrijft mogelijke compatibiliteitsproblemen.
Er is daarmee geen aanval op Ethereum-mainnet aangetoond.
EIP-8037 en EIP-8038 zijn daar nog niet geactiveerd.
De zorgen gaan juist over wat er zou kunnen gebeuren wanneer nieuwe regels worden ingevoerd terwijl bestaande
smart contracts aannames bevatten die onder eerdere gasregels zijn ontstaan.
Hoodi is bedoeld om zulke problemen vóór een mainnetfork zichtbaar te maken.
Het uitstel is daarmee een extra onderzoeksstap, geen herstelactie na een mainnetincident.
Sepolia draait Glamsterdam al
Glamsterdam werd op 6 oktober al op Sepolia geactiveerd.
Hoodi moest de volgende grote testfase worden.
De upgrade bevat veel meer dan alleen de twee omstreden gasvoorstellen.
Zo staan onder meer enshrined proposer-builder separation, block-level access lists en wijzigingen aan de manier waarop Ethereum gas en blockruimte berekent op de planning.
Dat Glamsterdam op Sepolia draait, betekent niet dat alle effecten op bestaande mainnetcontracten daarmee voldoende zijn getest.
Het mainnet bevat immers een veel grotere verzameling historische contractcode en toepassingen.
De verhoging naar 200 miljoen gas wacht eveneens
De oude Hoodi-planning koppelde de fork aan een forse verhoging van de block gas limit.
Die zou naar 200 miljoen gaan.
Ook dat plan voor 26 oktober is verwijderd.
Een hogere gaslimiet geeft per blok ruimte voor meer uitvoering, maar stelt tegelijk hogere eisen aan nodes die het blok binnen de beschikbare tijd moeten verwerken.
De nieuwe gasregels van Glamsterdam zijn mede bedoeld om zulke grotere blokken beheersbaar te houden.
Nu de fork wordt uitgesteld, gaat ook deze verhoging niet afzonderlijk door.
Oude clientconfiguratie kan juist problemen veroorzaken
Het annuleren van een hard fork vereist meer dan alleen een nieuwe kalenderdatum.
Software waarin de oude activatie nog staat geprogrammeerd, kan op 26 oktober alsnog proberen over te schakelen naar de Glamsterdam-regels.
Een Hoodi-node met zo'n configuratie kan dan van het netwerk afwijken.
Daarom vraagt de Ethereum Foundation operators expliciet om zowel hun executionclient als consensusclient te controleren.
De eerdere versietabellen uit de oorspronkelijke aankondiging mogen niet meer worden gebruikt als bewijs dat software geschikt is voor de nieuwe situatie.
Lighthouse brengt v8.3.2 uit
Voor Lighthouse is die correctie inmiddels beschikbaar.
De
release van Lighthouse v8.3.2 schakelt de geplande Gloas-fork op Hoodi uit.
Alle Hoodi-gebruikers van Lighthouse moeten volgens de ontwikkelaars vóór het oorspronkelijke activatiemoment op 26 oktober overstappen.
Stakingoperators moeten daarbij hun beacon node en validatorclient bijwerken en ook controleren of hun executionclient de aangepaste Hoodi-configuratie gebruikt.
Voor Ethereum-mainnetgebruikers is v8.3.2 vanwege dit uitstel niet vereist.
Andere clients volgen hun eigen releases
Lighthouse is slechts één Ethereum-client.
De Foundation houdt voor Hoodi afzonderlijke versies bij van onder meer Lodestar, Besu, Nethermind en Ethrex die de uitgestelde activatie verwerken.
Voor andere clients moeten operators de eigen release-instructies volgen.
Dat is belangrijk omdat Ethereum meerdere onafhankelijke clientimplementaties gebruikt.
Een versie die Glamsterdam correct kon activeren volgens de oude planning is niet automatisch geschikt om diezelfde geplande fork nu juist níét uit te voeren.
ETH-houders hoeven niets te doen
Voor gewone
ETH-bezitters verandert er nu niets.
Het uitstel betreft alleen Hoodi.
Er is bovendien nog geen definitieve datum vastgesteld waarop Glamsterdam naar Ethereum-mainnet gaat.
De Foundation zegt expliciet dat mainnetgebruikers en ETH-houders vanwege dit besluit geen actie hoeven te ondernemen.
Ook applicatieontwikkelaars moeten hun Hoodi-tests niet langer rond 26 oktober plannen.
Uitstel laat precies zien waarvoor een testnet dient
Glamsterdam moet Ethereum uiteindelijk meer verwerkingsruimte geven en verschillende onderdelen van de protocolwerking veranderen.
Maar grotere capaciteit is weinig waard wanneer bestaande contracten daardoor onverwacht ander gedrag vertonen.
Dat maakt EIP-8037 nu de rem op de planning.
De volgende stap is niet een haastig gekozen nieuwe forkdatum, maar bepalen welke bestaande contractpatronen gevoelig zijn voor de veranderde gasregels en hoe groot dat probleem werkelijk is.
Pas daarna kan Hoodi opnieuw als generale repetitie dienen.