Сім корисних порад з розробки смартконтрактів

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

Поради щодо розробки контрактів

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

Web3 новачок серії: маленькі поради щодо розробки контрактів, які я навчився з коду Uniswap

Прогнозована адреса контракту

Використовуючи операцію CREATE2, ми можемо розгортати контракти з передбачуваними адресами. Конкретний метод полягає у додаванні параметра salt під час створення контракту:

солідність pool = address(new UniswapV3Pool{salt: keccak256(abi.encode(token0, token1, fee))}());

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

Web3 новачок серія: маленькі поради з розробки контрактів, які я дізнався з коду Uniswap

Розумне використання функцій зворотного виклику

У деяких випадках виклик методу контракту B з контракту A є корисною моделлю, коли B потім викликає метод A. Наприклад, у DEX, коли викликається метод swap, буде викликано swapCallback, у якому завершиться переказ токенів, що забезпечить цілісність та безпеку всього процесу交易.

Використання виключень для передачі інформації

Іноді можна майстерно використовувати try-catch для захоплення специфічних виключень для отримання інформації. Наприклад, при симуляції торгівлі можна отримати прогнозовані дані, захоплюючи специфічні виключення, які викидаються методом swap, не вносячи спеціальні зміни в метод swap.

Web3 новачок серія: маленькі трюки розробки контрактів, які я дізнався з коду Uniswap

Гарантія точності великих обчислень

При виконанні фінансових розрахунків, щоб уникнути втрат точності, викликаних дією ділення, можна спочатку виконати операцію зсуву вліво (, що еквівалентно множенню на 2^96). Після завершення обчислень слід виконати зсув вправо, що дозволяє забезпечити точність без переповнення.

Розрахунок доходу в режимі Share

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

Web3 новачок: маленькі поради з розробки контрактів, які я навчився з коду Uniswap

Раціональне використання даних поза ланцюгом

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

Розподіл і повторне використання контрактів

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

Ці маленькі, але дуже корисні поради, сподіваюся, надихнуть всіх на розробку смарт-контрактів. Щоб дійсно оволодіти цими прийомами, найкращий спосіб - це практикуватися самому, застосовуючи їх у реальних проектах.

Web3 новачок серія: малюнки, які я дізнався з коду Uniswap, маленькі поради з розробки контрактів

Переглянути оригінал
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Нагородити
  • 8
  • Поділіться
Прокоментувати
0/400
MetaMisfitvip
· 55хв. тому
Це занадто базово, чи не так?
Переглянути оригіналвідповісти на0
ProbablyNothingvip
· 22год тому
Занадто лінивий, просто дістаємо з бібліотеки.
Переглянути оригіналвідповісти на0
TeaTimeTradervip
· 07-11 02:06
Посібник з основних навичок для початкових контрактів
Переглянути оригіналвідповісти на0
FudVaccinatorvip
· 07-11 02:04
Знаючі це знають, прогнозування адреси розгортання дійсно смачне
Переглянути оригіналвідповісти на0
HackerWhoCaresvip
· 07-11 02:03
Пішов, пішов, новачок-програміст знову прийшов за порадами.
Переглянути оригіналвідповісти на0
SchrodingerProfitvip
· 07-11 02:03
Такі трюки... це все старі істини.
Переглянути оригіналвідповісти на0
MonkeySeeMonkeyDovip
· 07-11 01:55
Вже досвідчений у контрактах, так? Залишайся на зв'язку~
Переглянути оригіналвідповісти на0
0xSherlockvip
· 07-11 01:51
Відчувається, що це все тільки розмови на папері.
Переглянути оригіналвідповісти на0
  • Закріпити