10 ETH Refund-bug legde THORChain-handel op 10 chains stil
Belangrijkste punten
- •Een reorg van één Ethereum-blok op 31 oktober liet één enkele storting van 10 ETH naar THORChain leiden tot 20 ETH aan uitbetalingen, nadat zowel de gecrediteerde swap als de storting zelf werd terugbetaald.
- •Elke THORChain-node registreerde de reorg, maar de geautomatiseerde hercontrole van de storting kon niet worden afgerond voordat de waarneming op THORChain's keten werd gefinaliseerd en de terugbetaling werd verstuurd.
- •Een automatische solvabiliteitscontrole stopte de ETH-swaps, node-operators stopten binnen circa twee minuten met ondertekenen, en de handel werd uit voorzorg gepauzeerd op tien ketens waaronder ATOM, BCH, BSC, BTC, DOGE, ETH, LTC, SOL, TRON en ZEC.
- •De ontvanger gaf de extra 10 ETH vrijwillig terug, maar THORChain heeft gewaarschuwd dat een kwaadwillende actor die tijdens een reorg een transactie-nonce hergebruikt, uit de kluizen kan worden uitbetaald zonder reden tot terugbetaling.
- •De stillegging vertraagde onopzettelijk het witwassen van fondsen uit de $6,4 miljard Binance-diefstal die aan Noord-Korea's TraderTraitor-groep wordt toegeschreven, en THORChain stelde geen heropendatum vast, met de kanttekening dat na de exploit van circa $10,7 miljoen in mei een vergelijkbare fix en heropening ruim vijf weken duurde.

Het cross-chain liquiditeitsprotocol THORChain bevrorz de handel op tien blockchains nadat een reorg van één Ethereum-blok had veroorzaakt dat de kluizen tweemaal uitbetaalden op één enkele storting van 10 ETH. Het protocol laat gebruikers assets swappen tussen de blockchains die het verbindt: stortingen gaan de kluizen in en node-operators ondertekenen de uitbetalingen die deze verlaten. Het beschreef de gebeurtenissen in een bericht op X op 1 november, waarin werd gesteld dat de gebruiker de extra 10 ETH had teruggegeven en dat de kernontwikkelaars aan de noodzakelijke aanpassingen werkten.
Wat de reorg verwijderde
Op 31 oktober om 11:34 UTC verving Ethereum één recent blok door een concurrerende versie. Het verworpen blok bevatte een storting van 10 ETH naar een THORChain-kluis, die de waarnemers van het protocol al hadden gezien en gecrediteerd.
Blokken van die recentheid kunnen nog worden vervangen. Ethereum beschouwt een blok pas als gefinaliseerd na ongeveer twee epochen, ruwweg 13 minuten, en niets in het verslag van THORChain wijst erop dat de gefinaliseerde geschiedenis is veranderd. De fout ontstond binnen THORChain, dat actie ondernam op een storting voordat Ethereum deze had bevestigd.
Er volgden twee betalingen. De swap die hoorde bij de gecrediteerde storting miste zijn prijscap, dus THORChain betaalde 10 ETH terug. De storting van de verzender op de geaccepteerde Ethereum-keten werd daarna eveneens terugbetaald. Eén storting van 10 ETH bereikte de kluis, en 20 ETH verliet deze.
De eigen waarschuwing van THORChain laat zien hoe één storing dubbel kon worden geteld. Elk Ethereum-account nummert zijn transacties met een nonce. Zodra de oorspronkelijke overdracht met zijn blok verdween, kon die nonce opnieuw worden gebruikt op de geaccepteerde keten. THORChain schreef dat bij elke externe reorg "een kwaadwillende actor een nieuwe transactie met dezelfde nonce kan uitvoeren" en wordt uitbetaald uit de kluizen.
Elke node zag de reorg. De terugbetaling ging toch uit.
Detectie was niet het probleem. Volgens THORChain registreerde elke node de reorg, maar de geautomatiseerde hercontrole die de status van de storting moest vaststellen, kon niet worden afgerond voordat THORChain de waarneming op zijn eigen keten finaliseerde. De Bifrost-documentatie beschrijft hoe waarnemingen worden teruggedraaid wanneer een externe transactie verdwijnt. Op 31 oktober vond die terugdraaiing niet plaats voordat de terugbetaling was uitgevoerd.
Het bericht zegt niet waarom de hercontrole te weinig tijd had of wat de oplossing zal veranderen. De terugbetaling dekte deze uitbetaling alleen omdat de ontvanger er voor koos het geld terug te geven. Zoals THORChain de zwakte beschreef, betaalt het wie deze activeert, en iemand die transacties timet rond een toekomstige reorg zou geen enkele reden hebben iets terug te sturen.
Waarom een zwakte van 10 ETH tien chains bevrorz
De automatische solvabiliteitscontrole van THORChain signaleerde het tekort en stopte de ETH-swaps. Binnen ongeveer twee minuten stopten node-operators ook met het ondertekenen van ETH-transacties, wat uitbetalingen uit de kluizen blokkeert. Vervolgens legden zij uit voorzorg de handel op andere ketens stil, omdat de nonce-waarschuwing betrekking heeft op reorgs op elke verbonden keten, niet alleen Ethereum.
De stand van THORChain's diensten ten tijde van het bericht van 1 november:
- Handel stilgelegd: ATOM, BCH, BSC, BTC, DOGE, ETH, LTC, SOL, TRON, ZEC
- Handel actief: AVAX, BASE, RUNE, XRPL
- Uitgaande betalingen: Statusgegevens van 31 oktober toonden aan dat ondertekenen op de meeste stilgelegde ketens nog was ingeschakeld, zodat openstaande uitbetalingen konden vertrekken terwijl nieuwe swaps geblokkeerd bleven.
De handelsstatus is gebaseerd op het bericht van THORChain van 1 november; de ondertekenstatus is gebaseerd op de status-API van THORChain zoals gemeld op 31 oktober.
De lijn is al een keer verschoven. Op de avond van 31 oktober meldde The Defiant dat de status-API van THORChain de handel op 12 van de 13 externe ketens toonde als gepauzeerd. Tegen het bericht van 1 november waren er drie daarvan weer ingeschakeld. THORChain zei niet waarom die drie eerst kwamen.
Geen van dit alles stopt de onderliggende netwerken. Bitcoin, Ethereum en de andere ketens blijven blokken produceren; de stilleggingen beperken alleen wat THORChain voor elk ervan verwerkt.
Op één manier gelezen toont het incident dat de beveiligingen werken. De controle sloeg aan zonder menselijke invoer, uitbetalingen stopten binnen minuten en de blootstelling bleef op 10 ETH. In mei moest dezelfde controle handel en ondertekening stoppen nadat een exploit circa $10,7 miljoen uit een kluis had gehaald. Wat de controle niet kan, is de waarnemingslogica herstellen, en daarom werden de stilleggingen uitgebreid in plaats van versoepeld toen de kluis weer compleet was.
Drie stemmen om te stoppen, vier om te overrulen
Stilleggingen als deze zijn operationele instellingen, en de governance-documentatie van THORChain laat een kleine groep nodes deze wijzigen. Een instelling heeft minstens drie stemmen van actieve nodes nodig en moet elke concurrerende waarde overtreffen; bij een gelijkspel blijft de huidige instelling geldig.
Die drempel is eerder publiekelijk op de proef gesteld. Tijdens het witwassen in februari 2025 van fondsen die bij Bybit waren gestolen, stemden drie validators voor het stilleggen van ETH-handel, en andere node-operators draaiden die stemming vrijwel onmiddellijk terug. Het verslag van THORChain van 1 november merkt ook op dat het stilleggen van een keten de nodes geen controle over de kluisassets geeft. Activiteit stoppen en overdrachten ondertekenen zijn gescheiden bevoegdheden.
Een stillegging die THORChain niet tegen witwassers wilde gebruiken
Op 28 september, toen THORChain werd opgeroepen fondsen uit de Bitget-hack te bevriezen, schreef het op X dat een netwerkstillegging een noodmaatregel is om het protocol te beschermen, en weigerde die tegen die fondsen te gebruiken. De reorg-zwakte is precies dat soort noodgeval, en de stillegging die hij veroorzaakte trof de witwassers alsnog.
Chainalysis, dat de diefstal van $6,4 miljard bij Binance toeschrijft aan de TraderTraitor-groep van Noord-Korea, zei op 1 november dat THORChain "onopzettelijk het witwassen van een aanzienlijk bedrag aan gestolen fondsen van Binance had vertraagd." De vertraging kwam door dezelfde functie die gewone gebruikers frustreert: een stilgelegde keten verwerkt nobedens swaps.
Wat moet gebeuren voordat de swaps terugkeren
De ontwikkelaarsdocumentatie van THORChain waarschuwt tegen het sturen van fondsen naar een stilgelegde keten, omdat transacties onverwerkt kunnen blijven tot de stillegging wordt opgeheven. Het bericht van 1 november gaf geen heropendatum. Node-operators schakelen elke keten weer in zodra zij die veilig achten.
Drie dingen zouden laten zien dat de zwakte is gesloten in plaats van gepauzeerd: THORChain die de aanpassing publiceert van de omgang met externe reorgs, node-operators die upgraden naar die aanpassing, en de terugkeer van ETH-ondertekening naast de handel op de stilgelegde ketens. Na de exploit in mei verliep dat pad van noodpatch naar volledige fix en heropende handel over ruim vijf weken. Dat is een referentie voor het proces, geen tijdschema voor deze.
De teruggegeven 10 ETH vereffende de uitbetaling van 31 oktober. Weer ingeschakelde ETH-ondertekening zou het eerste openbare teken zijn dat de operators vertrouwen dat THORChain de volgende reorg aankan.