Свідок історії сьогодні. Добре відомий протокол DEX CurveFinance був атакований, і ліквідність багатьох пулів була виснажена. Попереднє розслідування виявило, що винен компілятор смарт-контрактів Vyper! Це було настільки обурливо, що люди не могли не назвати його хорошим хлопцем. Попередня статистика показує, що збиток перевищив 50 мільйонів доларів США, а миттєва ціна токена платформи CRV колись була близькою до нуля!

Якщо коротко пояснити друзям, які не знають техніки, коли ми використовуємо блокчейн, ми часто маємо справу з кодами, що працюють на блокчейні. Ці коди називаються «розумними контрактами».

Для публічного ланцюга, такого як Ethereum, який зосереджується на смарт-контрактах, він має набір стандартних кодів для смарт-контрактів для тих, хто розробляє на ньому програми (також називається dApp, децентралізований додаток) для написання та запуску програм. Наприклад, Uniswap і Curve — це програми dApp, які працюють на Ethereum.

Оскільки комп’ютер має бути простим у управлінні та заощаджувати місце для зберігання, стандартний код, що зберігається в ланцюжку, є дуже компактним двійковим числом, близьким до машинної мови, яке незручно для читання та запису безпосередньо.

Щоб зробити відкриття програм зручнішим, для написання програм було винайдено багато «мов високого рівня», які зручні для читання та запису. Раніше було три типи, схожі на мову LISP, а інший не став популярним, тому що його просував Віталік (засновник Ethereum). Синтаксис схожий на мову Javascript, яка називається Solidity

Після того, як програмісти напишуть програми смарт-контрактів на цих мовах високого рівня, їм потрібно використовувати інструмент під назвою «компілятор», щоб «перекласти» їх на «машинну мову», яка може працювати в блокчейні Ethereum, тобто стандартний код.

Очевидно, що різні мови високого рівня мають різні компілятори. Це легко зрозуміти в перекладі на японську мову і перекладі на англійську мову.

Цього разу Curve зазнала атаки через недолік у певній версії компілятора Vyper, який використовується деякими пулами Curve (підозрюється, все ще розслідується). Це схоже на те, що японською мовою я кажу «Я хочу пити», а перекладач перекладає це на Китайська. Коли її переклали на "Я хочу їсти крабів". Це обурливо

На щастя, популярність Vyper в даний час не висока, Solidity є найбільш використовуваним в Ethereum і сумісних мережах. Перекладач з англійської зрозуміліший і помилок перекладу немає, слава Богу

У перші дні Uniswap, лідер DEX, засновник Гейден використовував мову Vyper для написання коду. На щастя, Хайден пізніше найняв професійного технічного директора та змінив код на Solidity. Тож цього разу через проблему компілятора Vyper Uniswap безпечний і здоровий. Curve Finance, яка широко використовує мову Vyper, постраждала.

Проблема, викликана цим дефектом, є класичною «проблемою повторного входу». Згадуючи той рік, у 2015 році, інцидент DAO безпосередньо призвів до хардфорка Ethereum, розколу на ETH та ETC. Ця проблема повторного входу — справді прокляття історії!

Але проблема повторного входу в The DAO виникла на мовному рівні високого рівня. Тобто ви спочатку хотіли випити, але замість цього перекладач не помилився переклад.

Що стосується цього інциденту з Curve, страшне те, що ви все зробили правильно, але перекладач зробив неправильний переклад, і ви не змогли його зрозуміти (аудиторська компанія не переглядатиме скомпільований двійковий код), тому його було введено без хтось помічає Фатальну ПОМИЛКУ! Це також стало тривожним дзвінком для всієї сучасної індустрії DeFi і навіть усієї індустрії блокчейнів!

Сьогодні всі, від авторів коду до рецензентів коду та сторонніх аудиторів, не дивитимуться на скомпільований двійковий код. Усі припускають, що з компілятором не буде проблем, поки вони бачать, що мова високого рівня написана правильно, вони думають, що проблем не буде.

Чому Сатоші Накамото не додав занадто потужні функції смарт-контракту до сценарію BTC? Це робиться для того, щоб уникнути непробачних помилок, викликаних підвищеною складністю. Деякі люди критикують BTC за консервативність, але перед обличчям активів вартістю в мільйони, десятки або навіть мільярди доларів обережності та консерватизму ніколи не буває зайвим. Більшість людей все ще звичайні люди. Втрата десятків або мільйонів доларів стане смертельним ударом для того, хто на це потрапить.

Це також підкреслює попередження закону Мерфі: будь-яке посилання, яке може піти не так, обов’язково піде не так, поки пройде достатньо часу. Цього разу це був Вайпер, що було благом. А що, якщо в Solidity є фатальна вразливість, з тисячами мільярдів активів і блискучими будівлями миттєво висохло дно котла? і вони всі розвалилися, хіба це не страшно?

Чому важко пройти через цикл? Перш ніж досягти тієї чи іншої омріяної мети, ви повинні спочатку перевірити, чи зможете ви «дожити до того дня».