Злам DAO: історія Етеріум Класик
Історія зламу DAO у 2016 році та як реакція спільноти призвела до створення Етеріум Класик як окремого ланцюга.
Date published: 15 грудня 2021 р.
Пояснення від Джуніона, що розповідає історію зламу DAO у 2016 році, одного з найбільших цифрових пограбувань в історії крипто, і те, як суперечливе рішення спільноти Етеріум зробити форк блокчейну призвело до створення Етеріум Класик.
Ця стенограма є доступною копією оригінальної стенограми відео (opens in a new tab), опублікованої Джуніоном. Її було трохи відредаговано для зручності читання.
Виявлення (0:00)
Понеділок, 13 червня 2016 року. Професор інформатики з Корнелльського університету вивчає код DAO — одного з найамбітніших проєктів у криптопросторі. Протягом кількох місяців він виступав за призупинення проєкту, оскільки вважав, що існують певні недоліки, які можуть поставити під загрозу всю справу. Але сьогодні він знаходить серйозну вразливість: помилку в рядку 666.
Він побоюється, що ця помилка може дозволити хакеру потенційно здійснювати необмежені зняття коштів, як у банкоматі. Навіть якби зловмисник мав на своєму акаунті лише 10 доларів, він зміг би знімати їх знову і знову, поки всі гроші не зникнуть. У DAO було інвестовано чверть мільярда доларів, і кожен цент був під загрозою.
Slock.it, компанія, що стоїть за DAO, визнає потенційну вразливість, але заявляє, що будь-яка атака буде нездійсненною, тому всі кошти залишаються в безпеці. Вони роблять коміт на GitHub, помінявши місцями два рядки коду — виправлення, яке буде включено до DAO Framework версії 1.1.
Але саме тоді, коли команда святкувала перемогу, хакер таємно йшов їхніми слідами, розробляючи експлойт, який використовує саме цю помилку. Настала п'ятниця, минуло чотири дні, і DAO щойно зламали на суму 55 мільйонів доларів.
Подібно до того, як злам SWIFT на 81 мільйон доларів оприлюднив діри в централізованій банківській індустрії, а атака вірусу-вимагача WannaCry виявила критичні вразливості в комп'ютерних операційних системах, злам DAO оголив ранню крихкість безпеки смарт-контрактів у світі, де код диктує все. Це залишило спільноту Етеріум спустошеною, коли вони гарячково намагалися відновити контроль над блокчейном.
Це історія одного з найбільших цифрових пограбувань в історії та сміливої спроби переписати історію так, ніби цього ніколи не було.
Що таке DAO? (2:00)
Знайомтеся з DAO — скорочення від децентралізованої автономної організації (DAO). Ідея була натхненна краудфандингом. Замість кількох фондів для різних проєктів, мав бути один фонд, який би керував усіма, і не було кращого способу зробити це, ніж за допомогою DAO.
Під час запуску інвестори отримували 100 токенів DAO за кожен внесений етер. Ці токени надавали їм управління протоколом і представляли їхню частку в DAO. Власники токенів могли подавати пропозиції — наприклад, ви могли запропонувати інвестувати один мільйон доларів в обмін на 10% стейк у компанії XYZ.
Після того, як пропозиція проходила початкову перевірку, за неї голосували всі інші інвестори. Протягом цього періоду власники токенів могли віддати свій голос «за», якщо вважали, що інвестиція принесе позитивну очікувану цінність, або «проти», якщо вважали, що вона принесе негативну очікувану цінність. Вони також могли використовувати форум, щоб висловлювати свої думки та читати думки інших.
Коли період голосування закінчувався і досягався кворум у 20% від усіх токенів, DAO автоматично переказувала вказаний етер на смарт-контракт, який представляв пропозицію. Будь-який етер, згенерований з цих пропозицій, потім повертався до скарбниці. Це було схоже на один великий децентралізований хедж-фонд, створений для отримання прибутку. Ідея полягала в тому, що мудрість натовпу допоможе створити найкращі інвестиційні можливості.
Однак все ще потрібен був спосіб захистити меншість від утисків з боку більшості. Якщо група меншості була категорично не згодна з пропозицією, яку вони не могли перевершити за кількістю голосів, замість того, щоб голосувати «проти», вони могли викликати функцію розділення (split) і перемістити свій етер з головної DAO до дочірньої DAO, по суті розділивши DAO навпіл. Ця функція розділення буде дуже важливою пізніше.
Краудфандинг (4:01)
DAO була найбільшим краудфандинговим проєктом в історії, зібравши 12,7 мільйона етерів — на той час це становило 150 мільйонів доларів. Це відбувалося в ранню епоху Етеріум, коли проєкт піддавався величезному хайпу та інвесторському FOMO.
До цього проєкти на Етеріум були переважно довільними перевірками концепцій, але це був повністю функціонуючий проєкт з величезним потенціалом. Він був абсолютно безпечним від будь-яких зламів, захищеним мільйонами майнерів по всьому світу, і він був децентралізованим — весь проєкт складався з серії смарт-контрактів на Етеріум.
Це був незмінний код, розміщений на найбезпечнішому комп'ютері у світі, що забезпечувало ключові властивості DAO: організацію, яка є повністю децентралізованою та автономною. Після того, як контракти були розгорнуті 30 квітня, жодна організація — навіть Slock.it — не могла внести зміни до протоколу або припинити його існування. Його код незліченну кількість разів проходив аудит різними розробниками Етеріум і був доступний усім для перегляду.
Злам (5:02)
«Самотній, такий самотній» — назва пропозиції DAO №59. Це просто звичайна пропозиція про розділення, але насправді саме з неї починається злам. Після того, як хакер подав пропозицію, настає стандартний семиденний період дебатів, до якого може вільно приєднатися будь-хто. Однак ніхто не приєднується до цього розділення.
Це стандартна процедура, коли хтось самостійно викликає розділення, створює дочірню DAO, а потім створює пропозицію, яка відправляє весь етер назад на його гаманець. Це дозволяє користувачеві повернути свої гроші, забезпечені його токенами DAO. Минуло сім днів, і тепер хакеру дозволено викликати функцію розділення. Ніхто нічого не підозрює.
Однак, коли викликається функція розділення, спільнота усвідомлює щось тривожне. Етер викачується з DAO зі швидкістю вісім мільйонів доларів на годину. Спільнота гарячково намагається з'ясувати, що відбувається. Схоже, що зловмисник рекурсивно викликає функцію розділення — знову і знову, сотні разів.
Пам'ятаєте те виправлення помилки, яке відбулося чотири дні тому? Шкода, що немає способу відредагувати код смарт-контракту після його розгортання, тому це виправлення існувало лише на GitHub як частина The DAO 1.1, зовсім іншої DAO, яка перебувала в процесі створення. Це невелике виправлення могло б запобігти всьому цьому — все, що воно робило, це міняло місцями два рядки коду, щоб баланс оновлювався до фактичної виплати.
Але без цього виправлення будь-хто міг багаторазово викликати функцію для зняття етеру до того, як контракт оновить його баланс. Це як банкомат, який не змінює ваш баланс, поки не видасть вам гроші. «Чи можу я зняти десять доларів? Зачекайте, перед цим, чи можу я зняти десять доларів? Зачекайте, перед цим...»
Група Робін Гуда (6:55)
Власники токенів DAO спостерігали, як їхні інвестиції повільно викачувалися з головної DAO до дочірньої DAO, також відомої як темна DAO. Крім того, ціна Етеріум миттєво обвалилася з 20 до 15 доларів після цих новин. Треба було щось робити, і єдиним виходом було викачати решту до того, як це зробить хакер. Так почалася гонка за спустошення.
На іншому кінці світу, у своїй квартирі в районі Копакабана в Ріо-де-Жанейро, Алекс Ван де Санде прокидається від того, що його телефон розривається від повідомлень у Skype. Він повертається до дружини і каже: «Пам'ятаєш, я розповідав тобі про ту величезну купу грошей, яку неможливо зламати? Її зламали».
Алекс зв'язався з деякими іншими невідомими розробниками, і вони сформували групу, яку прозвали Робін Гудом — «білих» хакерів, які мали викачати решту коштів і повернути їх законним власникам. Однак у них не було часу пропонувати нове розділення, оскільки це вимагало б семиденного періоду голосування.
Замість цього вони звернули увагу на пропозицію №71, яка мала завершитися за кілька годин. Вони приєдналися б до цього розділення і використали б той самий злам, щоб перекачати всі кошти, що залишилися, у цю дочірню DAO. Минуло шість годин з початку атаки, і крадію вдалося вкрасти 30% етеру DAO. Але з якоїсь невідомої причини атака перестала працювати. Транзакції не проходили, і всьому цьому було покладено край.
Тим часом Алекс саме готувався розпочати атаку «білих» хакерів, щоб убезпечити решту 70% коштів. Але раптом у нього зникло інтернет-з'єднання. Залишалося всього 30 хвилин, і він гарячково телефонував до NET, свого бразильського інтернет-провайдера, але отримав лише відповідь від роботизованого голосу: «Ми бачимо, що у вашому районі є проблема з інтернетом». Пропозиція про розділення завершилася, і він щойно змарнував вікно можливостей для здійснення атаки Робін Гуда.
Наступного ранку Алекс спробував знову зібрати групу, щоб проникнути в іншу пропозицію про розділення, але інші були зайняті. «Ми почувалися найгіршими хакерами в історії. Нам завадили поганий інтернет і сімейні зобов'язання».
Гонка за спустошення (9:10)
Через чотири дні після початкової атаки DAO знову зазнала нападу. Вона викачувалася повільно — по кілька етерів за раунд — але вже накопичила кілька тисяч доларів. Здавалося, що це зловмисник промацує ґрунт. На цьому етапі Робін Гуду потрібно було щось робити.
Вони вирішили проникнути в розділення №78, оскільки ідентифікували куратора пропозиції, і вона незабаром закінчувалася. Вони зв'язалися з деякими «китами», які з радістю пожертвували свої токени DAO, що дозволило команді забезпечити шість мільйонів токенів. Чим більше токенів мав контракт Робіна, тим швидше він міг викачувати етер. Зловмисник прискорив темп, і до нього приєдналися інші зловмисники. Але завдяки пожертвам Робін Гуд зміг їх випередити. Це дозволило їм убезпечити 7,2 мільйона етерів — 55% від DAO.
Форк (10:08)
Головна DAO тепер була спустошена, і всі кошти були розподілені між кількома дочірніми DAO — двома основними з яких були DAO «білих» хакерів і темна DAO. Але всі гроші були заблоковані в часі. Жодна пропозиція не могла бути висунута в рамках дочірньої DAO, поки не закінчиться 27-денний період очікування. І навіть після цього відправка коштів на зовнішню адресу вимагала подання пропозиції та очікування протягом двох тижнів. По суті, залишався ще 41 день до того, як хакер міг би перевести в готівку те, що дорівнювало 5% від загальної пропозиції Етеріум.
Але хакер так і не зміг доторкнутися до свого Етеріум. Те, що сталося далі, є одним із найсміливіших і найсуперечливіших епізодів в історії блокчейну. Спільнота вирішила, що не дозволить хакеру перемогти. Вони хотіли переписати історію так, щоб кожна транзакція, пов'язана зі зламом, була скасована, і кожен отримав би свої гроші назад. Вони вирішили зробити форк Етеріум.
Блокчейн схожий на список транзакцій, який продовжує зростати з кожним видобутим блоком. Кожна транзакція назавжди вкорінюється в блокчейні. Але якщо понад 50% майнерів вступлять у змову, вони можуть неправомірно змінити блокчейн, переписуючи історію так, як їм заманеться. Зазвичай це називається атака 51%. Але в цьому форку не було нічого зловмисного — спільнота лише повертала гроші, які були в неї вкрадені.
Код — це закон (11:48)
Тим не менш, не всі підтримували запропонований форк. Вони стверджували, що код — це закон. З цієї точки зору, зловмисник був не стільки хакером, скільки розумним юристом, який уважно прочитав умови контракту. Тому жодні кошти насправді не були вкрадені, і він мав би законне право на етер з темної DAO.
Важливо зазначити, що сам Етеріум ніколи не був зламаний — це був просто погано написаний смарт-контракт, який був експлуатований. Це дві різні речі. Крім того, вони вважали, що речі, які відбуваються в блокчейні, є незмінними і ніколи не повинні піддаватися втручанню незалежно від ситуації.
Через день після початкової атаки зловмисник надіслав відкритий лист у груповий чат DAO в Slack, підписаний його приватним ключем:
"До DAO та спільноти Етеріум: я уважно вивчив код The DAO і по праву заявив права на 3 мільйони етерів, і хотів би подякувати DAO за цю винагороду. Я розчарований тими, хто характеризує використання цієї навмисної функції як 'крадіжку'. Я використовую цю явно закодовану функцію відповідно до умов смарт-контракту. Софтфорк або хардфорк означатиме вилучення мого законного і правомірного етеру. Такий форк назавжди і безповоротно зруйнує всю довіру не лише до Етеріум, але й до сфери смарт-контрактів та технології блокчейн. Не робіть помилки: будь-який форк, софт чи хард, завдасть подальшої шкоди Етеріум і знищить його репутацію та привабливість."
Після подальшої перевірки люди зрозуміли, що підпис був недійсним, тому цей лист був написаний лише кимось, хто видавав себе за зловмисника.
З іншого боку, прихильники стверджували, що «код — це закон» є занадто радикальним твердженням, і що люди повинні мати останнє слово через соціальний консенсус. Хакеру не можна дозволяти отримувати прибуток від експлойту, оскільки це етично неправильно і, швидше за все, незаконно. Але найголовніше, DAO була просто занадто великою, щоб зазнати краху. Вона утримувала близько 15% від загальної пропозиції етеру.
Етеріум Класик (14:34)
У події, що перегукувалася з фінансовою кризою 2008 року, розробники Етеріум врятували DAO. Віталік Бутерін, творець і провідний розробник Етеріум, не вибачався за те, що наполягав на форку. В одному з інтерв'ю він пізніше сказав: «Деякі користувачі Біткоїн бачать хардфорк як певне порушення їхніх найфундаментальніших цінностей. Особисто я вважаю, що ці фундаментальні цінності, доведені до таких крайнощів, є дурними».
Ці погляди панували серед більшості спільноти Етеріум. Суперечливе голосування спільноти — де один етер дорівнює одному голосу — показало 87% підтримки форку. Тож на блоці 1 920 000 комп'ютерні вузли по всьому світу оновили своє програмне забезпечення і прийняли форк. Усі етери з DAO та дочірніх DAO були переміщені на контракт повернення коштів.
Але на цьому все не закінчується. Оригінальний блокчейн Етеріум — той, що зі зламом DAO — продовжував працювати. Насправді він зростав. Майнери, які виступали проти форку, продовжували видобувати блоки, і транзакції все ще здійснювалися. Наступного дня біржа Poloniex додала монету до лістингу, і вона почала торгуватися по 2 долари за штуку. Цей ланцюг став відомим як Етеріум Класик — оригінальний, незмінений блокчейн.
Якби ви тримали етер до форку, тепер у вас був би один Етеріум і один Етеріум Класик. Якби ви тримали один етер у DAO, ви змогли б вивести один Етеріум з контракту повернення коштів. А якби ви щойно зламали DAO, ви б заробили пристойний статок в Етеріум Класик — близько семи мільйонів доларів.
Спадщина DAO (16:14)
Спочатку Етеріум Класик набрав обертів як альтернатива, з сильною спільнотою блокчейн-фундаменталістів, які були не згодні з порятунком. Але з того часу Етеріум Класик не зміг набути популярності і насправді існує лише як ідея з невеликою корисністю. У той час як Етеріум є домом для тисяч протоколів, Етеріум Класик має лише кілька базових. Очевидно, що форк переміг.
Через два місяці Робін Гуд переказав 2,9 мільйона своїх Етеріум Класик на Poloniex і продав їх усі за Етеріум у спробі обвалити ціну. 14% було успішно конвертовано, але 86% було заморожено Poloniex і повернуто групі. Робін Гуд створив контракт повернення коштів у мережі Етеріум Класик для користувачів, які постраждали від зламу DAO.
Що стосується хакера, він пішов з 3,6 мільйонами Етеріум Класик — сьогодні це коштує 150 мільйонів доларів. Але якби не було форку, ці 3,6 мільйона Етеріум сьогодні коштували б понад сім мільярдів доларів.
Тривалий вплив DAO (17:26)
Важливо зазначити, що DAO тепер зазвичай називають Genesis DAO, щоб уникнути плутанини, оскільки це була перша DAO, але точно не остання. Незважаючи на початкові невдачі, DAO стали лише популярнішими. MakerDAO управляє стейблкоїном DAI, а протоколи децентралізованих фінансів (DeFi), такі як Юнісвоп зі своїм токеном UNI, зазвичай мають DAO для управління. Усі ці DAO спираються на досвід попередніх проєктів для створення ще більш універсальних та успішних організацій.
Але Genesis DAO була першою у своєму роді, створеною як експеримент — дорогий експеримент — контролюючи 250 мільйонів доларів на своєму піку, або 15% від загальної пропозиції Етеріум. Крістоф Єнч, провідний розробник, очікував, що вона збере лише п'ять мільйонів доларів, і пізніше сказав, що шкодує, що не встановив ліміт. Для такого великого експерименту це було занадто рано і, безумовно, занадто масштабно, щоб дозволити йому зазнати краху.
Створення смарт-контракту схоже на розробку безпілотного автомобіля — це велика відповідальність, що вимагає ретельного тестування, щоб уникнути аварій. Навіть з цією новою обережністю протоколи DeFi все ще зламують на суми понад 50 мільйонів доларів, деякі навіть після аудиту професійними аудиторськими фірмами. Але з часів зламу DAO більше не було жодних порятунків. Спільнота Етеріум тепер сильніша і готова рухатися далі до ще більших і амбітніших проєктів, створюючи наступне покоління цифрових застосунків.