Компилятор Solidity: Мої любовно-ненависні стосунки з цим EVM трудягою

robot
Генерація анотацій у процесі

Я провів безліч ночей, змагаючись з solc, цим чортовим інструментом, який перетворює читабельний код Solidity на байт-код, який насправді розуміє Віртуальна машина Ethereum. Дозвольте мені розповісти вам про цей необхідний, але розчаровуючий шматок технології з моєї точки зору як розробника, який пережив свою частку головного болю, викликаного компіляторами.

Solc в основному є перекладачем - він перетворює зручний для людини Solidity на машинно-виконуваний байт-код. Але ця взаємодія не завжди є гладкою. Компілер перевіряє мій синтаксис, забезпечує безпеку типів і генерує ABI (Application Binary Interface), який дозволяє моїм контрактам спілкуватися з іншими додатками. Іноді мені здається, що йому трохи занадто подобається знаходити мої помилки.

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

Індустрія блокчейну продовжує робити вигляд, що solc ідеальний, але давайте будемо відверті – він еволюціонував через численні версії, кожна з яких нібито "виправляє" проблеми, одночасно вводячи нові, непомітні. Версія 0.8.30 є останньою на сьогодні, але я завжди обережний при оновленні. Розривні зміни між версіями вже не раз завдавали мені шкоди.

Розробники DeFi живуть і помирають за цим компілятором. Коли мільйони доларів проходять через ваші протоколи, одна-єдина пропущена крайня ситуація компілятором може призвести до катастрофи. Пам'ятаєте хак DAO? Це не було безпосередньо проблемою компілятора, але це показує, наскільки критично важливими є правильна компіляція та верифікація.

Більшість торгових платформ і постачальників ліквідності покладаються на контракти, скомпільовані solc, для своєї основної функціональності. Ці величезні фінансові операції працюють на коді, який обробляє цей інструмент, проте лише небагато користувачів коли-небудь розглядають цей глибокий технічний рівень під їх торгівлею.

Відкритий вихідний код solc принаймні означає, що фахівці з безпеки можуть шукати помилки, але прірва між виявленням вразливостей і їх виправленням залишається тривожною. Інструмент постійно покращується, але ніколи не є зовсім досконалим - так само, як і решта нашої швидко зростаючої криптоінфраструктури.

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

ETH0.17%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • Прокоментувати
  • Репост
  • Поділіться
Прокоментувати
0/400
Немає коментарів
  • Закріпити