Az okos szerződések elleni legkomolyabb érv még mindig az, hogy egy papíros szerződést a bíróság elé lehet cibálni, de egy programhiba nagyon hülyén fest a tárgyalóteremben vádlottként.

(fotó: Wikimedia Commons)
A programozás egyik régi klasszikusa a túlcsordulásos hiba. Ha a program által kezelt valamely értéket a szoftver hagyja a maximális értéken túlfutni, akkor az érdekes jelenségeket produkálhat. Többnyire olyanokat, amiket a programozó nem szeretett volna, és ami miatt később restelli magát.

A hiba megjelenését a Civilization nevű klasszikus játék tartalmazza a legjobban bemutatható módon. A világhódítós, építkezős játékban minden választható vezetőt több érték jellemzett, köztük az egyik a békésség szintje volt. Mahatma Gandhi, az indiaiak legendásan erőszakmentes vezetőjének toronymagas volt ez az értéke, nem is nagyon lehetett háborúba vinni. A játékban azonban a különböző felfedezett technológiák módosíthatták a vezetők értékeit. Például az a nemzet, amelyik kikutatta a demokrácia nevű technológiát, jóval békésebbé vált. Egy kivétel volt ez alól, az indiaiak, mert Gandhi eleve nagyon magas értéke már nem viselte el ezt a növekedést, a számláló átfordult, és hirtelen véresszájú atombombákat dobáló háborús héjává vált.

Egy hasonló túlcsordulásos hiba miatt kellett az Okex kriptotőzsdén leállítani a kereskedelmet. Az okos szerződésbe becsúszott ugyanis egy olyan sor, ami őrületesen nagy összegek megadásakor egyszerűen eltörte a programot, a támadónak pedig kiutalt egy rakás tokent. A trükkhöz 8 decilliárdot kellett megadni összegként, ez egy nyolcas és mögötte 63 darab nulla. Meg is mutatjuk:
800000000000000000000000000000000000000000000000000000000000000
Ez annyira nagy szám, hogy nehéz is viszonyítási alapot találni hozzá. A Virgo-szuperhalmaz, amihez a Tejútrendszer is tartozik meg az Androméda-galaxis – térkép, vagy legalábbis eligazítás erre -, ennek a mérete körülbelül 3,54 decilliárd köbkilométer. Ugye, hogy nem lett világosabb!
A programhibát az tette különösen kínossá, hogy tokenekkel kereskedő okos szerződésbe került bele. A hibás tranzakciók így nem vonhatók vissza. A PeckShield blockchain biztonsági startup blogja szerint több, az Ethereum rendszerére alapozott token kereskedelmére készülő szerződés lehet hibás.
A csapat a BEC nevű token egyik tranzakciójára figyelt fel, amely különösen nagy értékben zajlott. Majd a hibát felfedezve több, az ERC-20 technikai szabványt betartó szerződésben is felfedezték ugyanazt a sebezhetőséget. Az Okex leállította az ERC-20 alapú kereskedést, de más tőzsdék is érintettek lehetnek.
Szólj hozzá