7 корисних порад з розробки смартконтрактів для підтримки DEX проектів

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

Поділитися маленькими порадами щодо розробки контрактів

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

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

Адреса ф'ючерсного контракту

Зазвичай адреси розгорнутого контракту виглядають випадковими, оскільки пов'язані з nonce. Але в деяких випадках нам потрібно вивести адресу контракту, спираючись на інформацію про транзакцію. Це можна реалізувати, використовуючи метод CREATE2 для створення контракту, додавши параметр salt під час створення контракту. Таким чином, згенерована адреса є передбачуваною, дотримуючись логіки "нова адреса = hash('0xFF', адреса творця, salt, initcode)".

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

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

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

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

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

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

Проблема точності обробки великих чисел

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

Розрахунок доходу за допомогою Share方式

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

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

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

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

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

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

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

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

Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 2
  • Поділіться
Прокоментувати
0/400
AirdropHustlervip
· 07-19 11:31
Цей розробницький трюк для Брата Бро вважається невеликим, але вигідним бізнесом.
Переглянути оригіналвідповісти на0
0xSherlockvip
· 07-16 20:55
Стандартний посібник для новачків.
Переглянути оригіналвідповісти на0
  • Закріпити