Foto: Panorama Images/Shutterstock
Blockchains en alles erop en eraan draaien op computercode. Ontelbaar veel regels code maken uiteindelijk een gedecentraliseerd wereldwijd netwerk mogelijk waarover gebruikers met een druk op de knop enorme bedragen kunnen verzenden en applicaties kunnen gebruiken. Maar zo nu en dan zit er een fout in de code. Dit keer ontdekte Jay Freeman een probleem in Optimism. Hiermee zou hij oneindig veel ethereum (ETH) aangemaakt kunnen hebben. Maar deed hij dit ook?
Ethereum layer-2 met bug
Freeman is softwareontwikkelaar en hem viel iets op aan de code van Optimism. Dit is een zogenoemde layer-2 schalingsoplossing op Ethereum gebouwd. Het doel van Optimism is om goedkope en snelle transacties mogelijk te maken voor gebruikers, en dan met name kleine “nano transacties.”
Om te kunnen begrijpen hoeveel schade de door Freeman ontdekte bug had kunnen aanrichten, moeten we eerst begrijpen hoe Optimism werkt. Om snelle transacties met Optimism te kunnen doen dienen gebruikers eerst echte ETH coins vast te zetten als onderpand.
Zodra de gebruiker dit heeft gedaan ontvangt diegene “OETH,” oftewel de Optimism versie van ethereum. Deze kan dan vervolgens tegen lage kosten via het Optimism netwerk verstuurd worden.
“SELFDESTRUCT”
Freeman ontdekte dat hij ethereum vast kon zetten, de OETH in ontvangst kon nemen en daarna het smart contract kon vernietigen middels de SELFDESTRUCT-functie. De echte ETH in het contract werd dan teruggestuurd naar Freemans wallet terwijl de OETH bleef bestaan.
Je kan je misschien voorstellen wat een kwaadwillende hacker hiermee zou kunnen doen. Zo had hij oneindig veel OETH aan kunnen maken:
“Met je onbeperkte aanbod van IOU’s [in dit geval OETH], zou je naar elke gedecentraliseerde beurs op de L2 kunnen gaan en met hun economieën knoeien, door enorme hoeveelheden andere tokens op te kopen.”
Freeman kiest voor beloning
Gelukkig loopt deze bug niet weer uit op een enorm verlies van crypto, zoals wel het geval was bij de recente Wormhole hack. Freeman koos er namelijk voor om het probleem aan te kaarten. Hiervoor werd hij rijkelijk beloond met in totaal $2 miljoen aan ‘bug bounty’ beloningen!
I’d missed the confirmation of this on Thursday, but @bobanetwork had decided to additionally extend to me their (maximum) $100k bug bounty payout, making the total reward for my Ethereum L2 bug–”Unbridled Optimism”–$2,100,042! (…I think this might actually set a new record?) https://t.co/VvoOD0VgLB
— Jay Freeman (saurik) (@saurik) February 13, 2022
(Boba Network is een fork van Optimism en had dus dezelfde bug in de code).