Сім основних порад, які допоможуть вам опанувати розробку смартконтрактів

Поради та враження з розробки контрактів

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

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

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

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

![Web3 новачок серія: маленькі хитрощі розробки контрактів, які я навчився з коду Uniswap](https://img-cdn.gateio.im/webp-social/moments-0aaa61a4d43aba7fdeddbc55e3665305.webp01

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

У деяких ситуаціях взаємні виклики контрактів дуже корисні. Наприклад, у Uniswap, коли викликається метод swap контракту UniswapV3Pool, він викликає swapCallback, передаючи обчислену фактичну кількість токенів, що потрібна. Викликаюча сторона повинна перевести токени в UniswapV3Pool під час зворотного виклику, що забезпечує повне виконання та безпеку методу swap.

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

У контракті Quoter Uniswap використовується конструкція try-catch для виконання методу swap UniswapV3Pool. Це робиться для симуляції swap з метою оцінки необхідних токенів для торгівлі, шляхом захоплення конкретних помилок і розбору інформації про помилки для отримання необхідних даних. Цей підхід уникає необхідності спеціальної модифікації методу swap для оцінки торгівлі, що робить логіку більш зрозумілою.

![Web3 новачок серії: маленькі поради з розробки контрактів, які я дізнався з коду Uniswap])https://img-cdn.gateio.im/webp-social/moments-b0c3d4eb7e8ca88cc4cfc9476a34437a.webp(

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

У Uniswap залучено велику кількість обчислень; щоб уникнути втрати точності під час операцій ділення, часто використовують зсув вліво на 96 біт ), що еквівалентно множенню на 2^96(. Таким чином, у нормальних умовах торгівлі, коли не відбувається переповнення, можна забезпечити точність обчислень. Хоча теоретично все ще може бути незначна втрата точності, але це вже прийнятно.

Обчислення прибутку способом Share

Щоб уникнути витрат великої кількості Gas на записування комісій за кожну угоду для кожного LP, Uniswap використовує спосіб, подібний до виплат дивідендів акціонерам. Необхідно лише записати загальну комісію та комісію, яка повинна бути розподілена на одиницю ліквідності, а під час вилучення LP можна розрахувати належну комісію відповідно до утримуваної ліквідності.

![Web3 новачок серії: маленькі поради з розробки контрактів, які я навчився з коду Uniswap])https://img-cdn.gateio.im/webp-social/moments-45e66af69435e6d4412ae506e77ab893.webp(

Поєднання даних на ланцюзі та поза ним

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

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

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

![Web3 новачок серії: маленькі хитрощі розробки контрактів, які я навчився з коду Uniswap])https://img-cdn.gateio.im/webp-social/moments-f95ddc9d89809cf11dbe65b9bafda157.webp(

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

UNI-3.7%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 7
  • Поділіться
Прокоментувати
0/400
LiquidityOraclevip
· 08-02 23:11
Інтеграція ще однієї статті для початківців з炒冷饭
Переглянути оригіналвідповісти на0
WhaleWatchervip
· 08-02 19:29
Трохи важко зрозуміти, хто може пояснити create2?
Переглянути оригіналвідповісти на0
RetailTherapistvip
· 07-31 02:40
Відправити це, краще написати декс і обдурювати людей, як лохів
Переглянути оригіналвідповісти на0
gas_guzzlervip
· 07-31 02:40
Прогнозування адреси, це смішно, свята Uniswap
Переглянути оригіналвідповісти на0
DeFiGraylingvip
· 07-31 02:35
Безмовний. Знову це навчання, яке підводить новачків...
Переглянути оригіналвідповісти на0
DEXRobinHoodvip
· 07-31 02:35
DOGE教父 сказав правду! Сидіти у в'язниці не є сном!
Переглянути оригіналвідповісти на0
NightAirdroppervip
· 07-31 02:34
Говорили півдня, але термінові позики все ж кращі~
Переглянути оригіналвідповісти на0
  • Закріпити