- Повернутися до менюЦіни
- Повернутися до менюдослідження
- Повернутися до менюКонсенсус
- Повернутися до менюСпонсорський матеріал
- Повернутися до меню
- Повернутися до меню
- Повернутися до меню
- Повернутися до менюВебінари та Заходи
ONE з найперших мов смарт-контрактів Ethereum виходить на пенсію
ONE з найстаріших мов розумних контрактів Ethereum демонструє ознаки старіння – і це може вказувати на глибинні недоліки в економіці токенів.
Serpent, ONE з попередніх мов розумних контрактів Ethereum, більше не безпечна для використання.
Це може бути найбільшим винос з аудиту мови компіляції Ethereum Serpent, опублікованого минулого тижня компанією з безпеки блокчейну Zeppelin Solutions. Висновки вказують на десятки проблем із компілятором, включаючи вісім критичних уразливостей.
Два місяці тому Zeppelin найняв Augur, ринок прогнозів на основі Ethereum, для проведення аудиту. с вартістю майже 2 мільйони доларівсвого маркера (REP), який міститься в контракті, написаному мовою Serpent, у Augur були вагомі причини турбуватися про безпеку старішої мови.
Augur був ONE із попередніх проектів Ethereum , і на момент написання його токен-контракту Serpent був основною доступною мовою смарт-контрактів. Але незабаром після цього була представлена Solidity, яка стала флагманською мовою програмування смарт-контрактів Ethereum, відсунувши Serpent на узбіччя.
Незважаючи на це, генеральний директор Augur Джої Круг сказав, що було небагато публічних попереджень про можливі проблеми, які б завадили Serpent виконати код, як очікувалося.
Він сказав CoinDesk:
«Ніхто ніколи не казав, що Serpent небезпечний або знецінений. Він просто T був таким популярним [як Solidity]».
У той час як Augur планував перейти на іншу мову смарт-контракту в певний момент, результати аудиту компілятора по суті змусили проект перейти на іншу мову. Як тільки Zeppelin повідомив Augur про проблеми безпеки, Augur рухався швидко перенести свої токени REP на безпечний ERC-20 токен контракт, написаний у Solidity.
«Низька якість» і «з недоліками»
Для інших, хто цікавиться, чи слід їм Соціальні мережі цей приклад, Zeppelin Solutions виклала повні результати свого аудиту в Звіт на 36 сторінках.
В а публікація в блозі, Zeppelin назвав проект Serpent «низькоякісним» і «недоліковим» і попередив розробників утримуватися від використання мови, доки не буде вирішено багато критичних проблем.
Ця новина спонукала засновника Ethereum Віталіка Бутеріна надіслати a твіт, назвавши мову програмування «застарілою технологією» та попередивши, що їй бракує належного «захисту безпеки».
Що стосується Augur, то найбільш критичною уразливістю Serpent була та , яка дозволяла хакеру змінити дату створення контракту токена REP , фактично призупинивши поставку токена.
«Ви можете змусити контракт думати, що він насправді ще не був офіційно створений, щоб фактично жоден із трансферів не спрацював», — сказав Круг.
Якби у Змія була лише ONE проблема, Круг сказав, що він із задоволенням виправив би код і продовжував би поки що використовувати мову. Але кількість проблем, виявлених аудитом, була просто надто величезною.
Тож замість цього, дотримуючись шляху оновлення, визначеного Zeppelin, Augur переписав його старий токен REP у Solidity та розгорнути новий контракт ERC-20 на Ethereum. Потім він фактично зламав власний смарт-контракт Serpent, заморозивши токен REP , а потім переніс баланс замороженого REP у новий контракт.
В окрему публікація в блозі, Zeppelin закликав будь-які проекти Ethereum , які все ще використовують Serpent, Соціальні мережі аналогічним шляхом міграції, щоб перемістити свої токени на більш безпечний контракт Solidity.
Потрібно більше очей
Мова програмування Serpent і компілятор були написані Бутеріном. Але той факт, що лише ONE людина написала код, може лежати в основі деяких проблем Serpent.
Zeppelin писав у своєму звіті:
«Менше уваги до коду означає менше помічених помилок».
Zeppelin також зазначив, що Serpent існує два роки, з жовтнем 2015 року мало комітів. Крім того, оскільки зараз майже ніхто не використовує Serpent, існує невелика ймовірність того, що хтось помітить проблеми в коді або ці проблеми буде виправлено.
Solidity, з іншого боку, був написаний a команда людей на чолі з Гевін Вуд, ONE із засновників Ethereum. І оскільки Solidity ширше використовується та спостерігає набагато більше активності – у 30 разів більше запитів на отримання, у 20 разів більше комітів, у вісім разів більше Автори, згідно з Zeppelin – порівняно з Serpent, новіша програма менш імовірно матиме таку саму кількість проблем.
Щодо того, що розробникам слід використовувати замість Serpent, у звіті Zeppelin стверджується, що Solidity є найкращою доступною відповіддю на сьогодні. Однак це також пропонує розробникам вважати Viper наступником Serpent, заявляючи, що Viper «LOOKS краще» Serpent. Але в a твіт, Бутерін рекомендував розробникам почекати, поки Viper спочатку не пройде зовнішній аудит.
Аудит солідності?
Але, мабуть, ONE з найбільш тривожних проблем, виявлених аудитом компілятора Zeppelin Serpent, є те, що сама Solidity також не була перевірена. І враховуючи, що токени на мільйони доларів наразі управляються смарт-контрактами, написаними на Solidity, деякі, зокрема Круг, вважають цю новину тривожною.
Додаткове занепокоєння щодо Solidity викликає аудит компілятора Zeppelin після зламу гаманця Parity на 30 мільйонів доларів, де помилка в коді Parity по суті дозволив хакеру перетворити три гаманці з кількома підписами на гаманці з нульовим підписом і злити кошти.
В а публікація в блозіпісля цієї атаки Parity вказав пальцем на Solidity, заявивши, що «деяка провина за цю помилку лежить на мові Solidity та, в її поточному втіленні, на труднощах, з якими ONE зрозуміти дозволи на виконання функцій».
Але ще більша крадіжка Ethereum сталася трохи більше року тому, коли хакер скористався лазівкою в коді Solidity, щоб викачати 50 мільйонів доларів ефіру з проекту під назвою The DAO. Шкода була визнана настільки великою, що розробники Ethereum запровадили хардфорк у протоколі, щоб повернути історію транзакцій.
Аудит коду програмного забезпечення є обов’язковим у багатьох критичних галузях, і Деміан Бренер, генеральний директор Zeppelin, вважає, що те ж саме слід зробити для коду смарт-контракту.
«Враховуючи кількість уразливостей, виявлених у Serpent, ми вважаємо, що перевірка компілятора разом із перевіркою коду має стати найкращою практикою», — написав він в електронному листі CoinDesk. Він додав, що зараз Zeppelin веде переговори з Ethereum Foundation, щоб це сталося.
Тим часом Круг підсумував свої думки з цього приводу, сказавши:
«Загалом, меседж полягає в тому, що слід перевіряти більше речей».
Зміїна шкіра зображення через Shutterstock