レッスン5

Фінал оптимізації смарт-контракту – додаткові поради та підказки

У наших попередніх уроках ми розглянули основні концепції та інструменти, необхідні для оптимізації газу на смарт-контрактах Ethereum, особливо за допомогою Remix IDE. Підсумовуючи цей курс, давайте заглибимося в деякі передові техніки та найкращі практики. Цей заключний урок об’єднає знання, які ми накопичили, гарантуючи, що ви підете з повним розумінням оптимізації газу в смарт-контрактах Ethereum.

Рефакторинг і зменшення складності коду

Один із найпростіших способів заощадити газ – це спростити код. Чим менше коду потрібно виконати, тим менше газу споживається.

Практичний приклад

Розглянемо таку функцію:

Solidity 
 pragma solidity ^0.8.9; 

 contract OptimizationExample { 
 address[] public admins; 

 функція isUserAdmin(адреса користувача) публічний перегляд повертає (bool) { 
 for (uint i = 0; i < admins.length; i++) {
            if (admins[i] == user) return true;
        }
        повертає false; 
 } 
 }

Наведена вище функція використовує цикл, який стає дорожчим, оскільки додається більше адміністраторів. Більш ефективна структура використовує відображення:

Solidity 
 contract OptimizationExampleOptimized { 
 mapping(address => bool) public admins; 

 функція isUserAdmin(адреса користувача) загальнодоступний вигляд повертає (bool) {
        return admins[user];
    }
}

Повторне використання даних

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

Використовуйте бібліотеки

Бібліотеки в Solidity — це фрагменти коду, які можна багаторазово використовувати. Вони можуть допомогти вам написати модульний код, а оскільки вони розгортаються лише один раз і пов’язані з іншими контрактами, вони можуть заощадити газ у довгостроковій перспективі.

Бібліотека Solidity 
 SafeMath { 
 функція add(uint a, uint b) внутрішні чисті повернення (uint) {
        uint c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    //... інші математичні функції 
 } 

 контракт UsingSafeMath { 
 використання SafeMath для uint; 

 одиниця суспільної цінності; 

 приріст функції (uint _value) public {
        value = value.add(_value);
    }
}

Видаліть непотрібне сховище

Ключове слово delete у Solidity дозволяє обнулити змінні, які повертають частину газу. Якщо ви закінчили з певною частиною пам’яті, видаліть її, щоб отримати відшкодування.

Розгляньте журнали подій

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

Уникайте використання дорогих операцій

Деякі операції є більш інтенсивними, ніж інші. Наприклад:

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

Висновок

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

免責事項
* 暗号資産投資には重大なリスクが伴います。注意して進めてください。このコースは投資アドバイスを目的としたものではありません。
※ このコースはGate Learnに参加しているメンバーが作成したものです。作成者が共有した意見はGate Learnを代表するものではありません。
カタログ
レッスン5

Фінал оптимізації смарт-контракту – додаткові поради та підказки

У наших попередніх уроках ми розглянули основні концепції та інструменти, необхідні для оптимізації газу на смарт-контрактах Ethereum, особливо за допомогою Remix IDE. Підсумовуючи цей курс, давайте заглибимося в деякі передові техніки та найкращі практики. Цей заключний урок об’єднає знання, які ми накопичили, гарантуючи, що ви підете з повним розумінням оптимізації газу в смарт-контрактах Ethereum.

Рефакторинг і зменшення складності коду

Один із найпростіших способів заощадити газ – це спростити код. Чим менше коду потрібно виконати, тим менше газу споживається.

Практичний приклад

Розглянемо таку функцію:

Solidity 
 pragma solidity ^0.8.9; 

 contract OptimizationExample { 
 address[] public admins; 

 функція isUserAdmin(адреса користувача) публічний перегляд повертає (bool) { 
 for (uint i = 0; i < admins.length; i++) {
            if (admins[i] == user) return true;
        }
        повертає false; 
 } 
 }

Наведена вище функція використовує цикл, який стає дорожчим, оскільки додається більше адміністраторів. Більш ефективна структура використовує відображення:

Solidity 
 contract OptimizationExampleOptimized { 
 mapping(address => bool) public admins; 

 функція isUserAdmin(адреса користувача) загальнодоступний вигляд повертає (bool) {
        return admins[user];
    }
}

Повторне використання даних

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

Використовуйте бібліотеки

Бібліотеки в Solidity — це фрагменти коду, які можна багаторазово використовувати. Вони можуть допомогти вам написати модульний код, а оскільки вони розгортаються лише один раз і пов’язані з іншими контрактами, вони можуть заощадити газ у довгостроковій перспективі.

Бібліотека Solidity 
 SafeMath { 
 функція add(uint a, uint b) внутрішні чисті повернення (uint) {
        uint c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    //... інші математичні функції 
 } 

 контракт UsingSafeMath { 
 використання SafeMath для uint; 

 одиниця суспільної цінності; 

 приріст функції (uint _value) public {
        value = value.add(_value);
    }
}

Видаліть непотрібне сховище

Ключове слово delete у Solidity дозволяє обнулити змінні, які повертають частину газу. Якщо ви закінчили з певною частиною пам’яті, видаліть її, щоб отримати відшкодування.

Розгляньте журнали подій

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

Уникайте використання дорогих операцій

Деякі операції є більш інтенсивними, ніж інші. Наприклад:

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

Висновок

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

免責事項
* 暗号資産投資には重大なリスクが伴います。注意して進めてください。このコースは投資アドバイスを目的としたものではありません。
※ このコースはGate Learnに参加しているメンバーが作成したものです。作成者が共有した意見はGate Learnを代表するものではありません。