Аудит — останнє, що потрібно перед початком роботи смарт-контракту

22 Липня 2022

наступна стаття
Іван Бочаров

Співзасновник Авіві

Іван  Бочаров
Аудит — останнє, що потрібно перед початком роботи смарт-контракту

Ретельна перевірка смарт-контрактів з метою виправлення всіх можливих недоліків, або іншими словами — аудит, є обов’язковою умовою перед початком роботи електронних угод. Якщо точніше, то це, якраз, не обов’язково, але б ми дуже хотіли, щоб кожен користувач вважав її такою, оскільки саме від аудиту залежить, наскільки корисним виявиться ваш смарт-контракт. На відміну від інших сучасних IT-напрямків, смарт-контракти мають певні особливості, про які не варто забувати, а саме:

  • Неможливо змінити вже запущений смарт-контракт;

  • Довжина коду має певні обмеження;

  • Виконання контракту у блокчейні не безкоштовне. 

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

Блокчейн, код та газ

Технологія блокчейн відома своєю надійністю і це насправді так. Разом із тим багато людей не розмежовує систему і людей, що із нею співпрацюють — розробників, консультантів та різних хакерів. Оскільки смарт-контракти стосуються переказу чи блокування значних коштів, обов’язково знаходяться люди, які прагнуть отримати із них вигоду нечесним способом. І зробити це дуже просто, якщо мати справу із замовниками, які нічого не розуміють в коді. Навіть незначні втручання в код на етапі його написання можуть призвести до фатальних наслідків — заволодіння вашими коштами сторонніми особами. При цьому блокчейн лишається надійною системою — він просто робитиме те, що запрограмовано у смарт-контракті. 

Таким чином перше, що здатний виявити аудит — це відповідність коду зазначеній меті створення смарт-контракту. Низькорівнева мова Solidity, де код читається досить просто, і знайти сторонні команди цілком реально. Також важливі й самі команди: їхня логічність, простота та послідовність напряму впливають на вартість обслуговування смарт-контракту в подальшому. В електронних угодах кожна команда — це розкіш, оскільки кожна стрічка додає кількості газу для її обробки у блокчейн. Тому смарт-контракти, що написані якісно, зазвичай обчислюються всього лише кілобайтами. 

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

Як відбувається аудит?

Як ви знаєте та як вже було сказано на початку, запущений у роботу смарт-контракт неможливо зупинити чи змінити. Насправді це не зовсім так, але редагування можливе тільки в тому разі, коли при створенні конкретного смарт-контракту можливість внесення змін була зазначена у коді. Саме тому вважаємо, що аудит смарт-контракту має стати фінальним аккордом у створенні кожної нової електронної угоди. Перевірка відбувається на тестовому сервісі, що дозволяє імітувати середовище платформи блокчейн. 

Спеціалісти Авіві практикують індивідуальний підхід до кожного клієнта, але загальна процедура аудиту смарт-контракту виглядає так:

  1. Визначення сфери діяльності смарт-контракту, напрямку проекту, його архітектурою, особливостями, тощ. Це допоможе аудиторам краще зрозуміти логіку роботи смарт-контракту та мети, що він переслідує;

  2. Надання попередньої оцінки вартості та часу. В разі згоди клієнт отримує комерційну пропозицію, укладається угода й починається процес. Зауважимо, що наша компанія підписує додатково договір про нерозголошення комерційної інформації (NDA), тож ви можете бути певними у конфіденційності нашої роботи;

  3. Проведення автоматизованих тестів та перевірки аудиторами. Етап завершується створенням чернетки звіту із зазначенням проміжних результатів, проблемних місць та пропозиціями щодо їхнього усунення;

  4. В разі згоди замовника ми виконуємо роботу й видаємо остаточний звіт з переліком виконаних завдань та результатом. 

Від аудиторів

З практики хочемо зауважити, що найкращим методом пошуку вразливих місць сучасних смарт-контрактів є імітації атаки злоумисників. Найчастіше вони пов’язані з проблемою повторного входу, коли взаємодія відбувається без оновлення інформації про останні транзакції, переповненням цілого числа, що зазвичай може мати 18 діджитів після коми, а також ситуаціями, коли неграмотно структурований код може виказувати намір власника контракту вчиняти різні дії на ринку. Усе це можна знайти, виправити й розпочинати роботи смарт-контракту зі спокійною душею. Тож не поспішайте: давайте спершу проведемо аудит,  аби потім не жалкувати, що цього не зробили.


Схожі статті
Записатись на консультацію

Ми зв'яжемось з Вами протягом 10 хвилин