Час читання: 4 протокол
Цей посібник допоможе вам знайти цю неприємну помилку, яка вас турбує, і інструменти для її усунення.
Налагодження має вирішальне значення для будь-якого циклу розробки програмного забезпечення; люди завжди роблять помилки. Ось чому ми непереможні; ми робимо помилки і вчимося на них. Налагодження — це процес виявлення, де наш код відстає, виправлення цього та вивчення цієї помилки, щоб вона не повторювалася.
Розробка розумних контрактів має вирішальне значення для створення блокчейн-додатків. Але, як і в будь-якому іншому циклі розробки програмного забезпечення, налагодження смарт-контрактів іноді може бути складним, і оскільки тут ми часто маємо справу з величезною сумою грошей, ми не можемо залишати нічого напризволяще. Ми повинні бути досконалими в написанні смарт-контрактів і досконалими в усуненні помилок. Ось чому ми створили цей блог, щоб ви могли дізнатися про налагодження від найкращих.
Перш ніж щось виправляти, нам потрібно знати проблему, тому давайте почнемо з визначення різних типів помилок у розробці смарт-контрактів.
Поширені помилки
У цьому розділі ми розглянемо різні типи помилок, з якими регулярно стикаються розробники смарт-контрактів.
- Синтаксична помилка:– Цю помилку легко виправити. Це трапляється, коли розробник допускає помилку в коді, через яку комп’ютер не може його зрозуміти, наприклад пропускає крапку з комою.
- Логічна помилка:- Цей тип помилки іноді буває важко знайти. Це не перешкоджає виконанню, але функціональність програми змінюється. Ця програма поводиться неочікувано, як смарт-контракт, який переказує гроші на неправильну адресу під час надсилання грошей з одного рахунку на інший.
- Помилка під час виконання:- Ці помилки важко передбачити. Вони приходять у несподіваний час і в несподіваних місцях. Це відбувається під час виконання смарт-контрактів і відбувається через неефективну обробку винятків. Наприклад, це може статися, коли контракт не в змозі обробити несподівані вхідні дані або спроби виконати операцію, заборонену базовим блокчейном. Наприклад, контракт намагається переказати більше грошей, ніж дозволений параметр.
- Помилки, скасовані під час виконання:- Це трапляється, коли користувач робить будь-який неправомірний запит, який суперечить логіці смарт-контракту, тоді запит скасовується та повертається. Це відбувається тому, що інколи розумні контракти вимагають виконання певних вимог для обробки транзакції. Тим не менш, користувач продовжує транзакцію, не виконавши вимоги, а потім транзакцію не переносять і повертають. Наприклад, користувач намагається переказати 100 доларів, але на балансі є 50 доларів.
- переповнення стека:- Ресурси для виконання операцій коштують плати за газ. Чим важка функція, тим більше вартість. Деякі з важких механізмів у кодуванні - це цикли та
Рекурсивні виклики<!– wp:paragraph –>Рекурсивний виклик — це умова, яка може посилатися на себе та знову і знову викликати їх у циклі. Рекурсивна функція використовує базовий випадок (if) і індукційний випадок (else). Атаки повторного входу виконуються шляхом використання рекурсивних викликів у коді. <br/><!– /wp:paragraph –>
” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>рекурсивні виклики. Переповнення стека має відношення до
Рекурсивні виклики<!– wp:paragraph –>Рекурсивний виклик — це умова, яка може посилатися на себе та знову і знову викликати їх у циклі. Рекурсивна функція використовує базовий випадок (if) і індукційний випадок (else). Атаки повторного входу виконуються шляхом використання рекурсивних викликів у коді. <br/><!– /wp:paragraph –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>рекурсивні виклики.
Рекурсивні виклики<!– wp:paragraph –>Рекурсивний виклик — це умова, яка може посилатися на себе та знову і знову викликати їх у циклі. Рекурсивна функція використовує базовий випадок (if) і індукційний випадок (else). Атаки повторного входу виконуються шляхом використання рекурсивних викликів у коді. <br/><!– /wp:paragraph –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>Рекурсивні виклики — це метод виклику функції в одній функції з різними вхідними даними. можна подумати про повторювану функцію, як машина для виробництва соку цукрової тростини. Машина працює як функція, а цукрова тростина — як вхідна інформація. Кожен запуск цукрової тростини з машини означає виклик функції. Через один раз цукрова тростина знову потрапляє під машину, і цей процес продовжує повторюватися. Ось що таке рецидив. Але оскільки ми хочемо скоротити витрати на газ і ресурси EVM, ethereum обмежує повторювані виклики до 1024 разів. Коли ви викликаєте функцію 1025-й раз, це призводить до переповнення стека.
- Помилка JUMP:- Коли ви намагаєтесь викликати функцію, якої не існує, або використовуєте мову асемблера та вказуєте на помилкову пам’ять, це призводить до помилки. Це навіть може статися, коли ви викликаєте функцію якогось іншого контракту, але ця функція не існує. Ці типи помилок називаються помилками JUMP.
Це були деякі типові помилки смарт-контрактів, з якими стикаються розробники; іноді буває важко виявити та зрозуміти помилки. Щоб знайти помилки та спробувати їх виправити, ми використовуємо різні інструменти. Давайте переглянемо їх один за одним у наступному розділі.
Чотири корисні інструменти налагодження
У цьому розділі ми дізнаємося про інструменти, які широко використовуються для виявлення та вирішення помилок найбільш досвідченими розробниками в усьому світі. Ходімо.
Каска
Цей інструмент широко використовується і прийнятий для тестування смарт-контрактів за різними параметрами. Він забезпечує середовище розробки з відкритим кодом для Ethereum. Він містить інструменти для розробки, тестування та розгортання смарт-контрактів. Його вбудований налагоджувач корисний багатьом розробникам у всьому світі. Це також відіграє важливу роль на етапі тестування.
Трюфель
Це популярний фреймворк розробки для Ethereum. Як і hardhat, він містить інструменти для розробки, тестування та розгортання смарт-контрактів, а також вбудований Налагоджувач трюфеля, що допомагає розробникам легко розробляти на етапі тестування.
Ремікс
Це те, з чим стикався майже кожен розробник, коли тільки починав свою подорож у web3. Це онлайн-редактор коду для надійності, тому для початку розробки не потрібно інсталювати офлайн. Його вбудована функція налагодження дозволяє розробникам сканувати код і перевіряти проблеми зі змінними. І все це в режимі онлайн, не потрібні офлайн-інструменти.
Етерський канал
Це популярний і надійний дослідник блоків для Ethereum. Це дозволяє розробникам перевіряти та налагоджувати смарт-контракти, розгорнуті в блокчейні Ethereum. Використовуючи це, ви можете відстежувати транзакції та діяльність будь-якої адреси чи контракту. Це допоможе вам визначити, де буде проблема, якщо ваш смарт-контракт стикається з проблемами в ланцюжку.
Висновок
Налагодження смарт-контрактів є складним і іноді розчаровуючим, але це вирішальний етап, пов’язаний із безпекою та тестуванням. Саме тут уразливості найімовірніше виявляться хакерам і можуть призвести до повного збою протоколу. Щоб уберегтися від подібних обставин, настійно рекомендується йти на перевірку.
QuillAudits працює в цій галузі протягом тривалого часу та має команду експертів, яка може впоратися з усіма можливими вразливими місцями та допомогти вам захистити ваш протокол. Щодо тестування, його важливості та його зв’язку з налагодженням, прочитайте детальний блог, який допоможе вам зрозуміти кожен аспект https://blog.quillhash.com/2023/02/16/testing-and-formal-verification/. Заходьте на наш веб-сайт і перевіряйте свій проект!
12 думки
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- Платоблокчейн. Web3 Metaverse Intelligence. Розширені знання. Доступ тут.
- джерело: https://blog.quillhash.com/2023/03/03/4-most-useful-smart-contract-debugging-tools/
- a
- МЕНЮ
- рахунки
- через
- діяльність
- адреса
- після
- проти
- ВСІ
- дозволяє
- завжди
- кількість
- та
- Інший
- застосування
- навколо
- зовнішній вигляд
- збірка
- нападки
- Спроби
- аудит
- Balance
- база
- оскільки
- КРАЩЕ
- Блокувати
- blockchain
- Блокчейн застосування
- Блог
- Помилка
- помилки
- Створюємо
- побудований
- вбудований
- call
- званий
- Виклики
- не може
- нести
- випадок
- певний
- складні
- шанс
- обставин
- код
- Кодування
- Приходити
- загальний
- повний
- комп'ютер
- стан
- контракт
- контрактів
- Коштувати
- витрати
- вирішальне значення
- Вирізати
- цикл
- угода
- розгорнути
- розгортання
- докладно
- Розробник
- розробників
- розвивається
- розробка
- різний
- важкий
- під час
- кожен
- редактор
- Навколишнє середовище
- помилка
- помилки
- Ефіріума
- Блокчейн Ethereum
- Навіть
- Кожен
- EVM
- приклад
- виняток
- виконання
- виконання
- досвід
- досвідчений
- експерт
- дослідити
- дослідник
- облицювання
- зазнає невдачі
- Провал
- особливість
- плата
- знайти
- Перший
- виправляти
- Вперед
- Рамки
- від
- розчарування
- функція
- функціональність
- ГАЗ
- отримати
- Go
- йде
- керівництво
- хакери
- обробляти
- Обробка
- траплятися
- відбувається
- Жорсткий
- сильно
- важкий
- допомога
- корисний
- допомагає
- тут
- дуже
- HTTPS
- величезний
- Людей
- ідентифікувати
- ідентифікує
- значення
- in
- includes
- неефективний
- вхід
- питання
- питання
- IT
- сам
- подорож
- стрибати
- Знати
- відстає
- мова
- вести
- УЧИТЬСЯ
- вивчення
- Залишати
- дозволяє
- Ймовірно
- рамки
- Довго
- багато часу
- машина
- зробити
- РОБОТИ
- багато
- засоби
- пам'ять
- метод
- відсутній
- помилка
- гроші
- більше
- найбільш
- Необхідність
- наступний
- offline
- На ланцюжку
- ONE
- онлайн
- з відкритим вихідним кодом
- операція
- операції
- Інше
- параметр
- параметри
- ідеальний
- фаза
- місця
- plato
- Інформація про дані Платона
- PlatoData
- точка
- популярний
- це можливо
- передбачати
- представити
- запобігати
- надходження
- процес
- програма
- проект
- протокол
- забезпечує
- Квілхаш
- Читати
- рецидив
- повторювані
- Рекурсивний
- про
- регулярно
- пов'язаний
- зв'язок
- повторний
- запросити
- вимагати
- Вимога
- ресурси
- результати
- Роль
- прогін
- то ж
- зберегти
- сканування
- розділ
- безпечний
- безпеку
- відправка
- розумний
- розумний контракт
- Спритні контракти
- So
- Софтвер
- розробка програмного забезпечення
- солідність
- деякі
- стек
- Стажування
- почалася
- Як і раніше
- такі
- Приймати
- команда
- Тестування
- Команда
- світ
- їх
- самі
- через
- час
- times
- до
- занадто
- інструмент
- інструменти
- трек
- угода
- Transactions
- переклад
- переклади
- тривожний
- Довірений
- Типи
- при
- що лежить в основі
- розуміти
- розуміння
- Unexpected
- us
- використання
- користувач
- різний
- Уразливості
- вразливість
- Web3
- веб-сайт
- Що
- який
- широко
- волі
- в
- без
- світ
- світовий
- б
- лист
- Ти
- вашу
- себе
- зефірнет