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

robot
Генерация тезисов в процессе

Советы по разработке контрактов

Недавно, разрабатывая проект децентрализованной биржи, я ознакомился с кодом некоторых известных DEX и научился множеству интересных приемов разработки контрактов. Будучи новичком в разработке DeFi, я получил много вдохновения от этих приемов и уверен, что они также помогут другим, кто хочет изучать разработку смарт-контрактов.

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

Адрес предсказательного контракта

Обычно адреса деплоенных контрактов выглядят случайными, так как они связаны с nonce. Но в некоторых случаях нам нужно вывести адрес контракта, основываясь на информации о транзакциях. Это можно сделать, используя способ CREATE2 для создания контракта, добавив параметр salt при создании контракта. Таким образом, сгенерированный адрес предсказуем, и следует логике "новый адрес = hash('0xFF', адрес создателя, salt, initcode)".

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

Использование обратных функций

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

Передача информации с помощью исключений

При оценке сделки можно обернуть выполнение метода swap в блок try-catch. Поскольку во время оценки токены фактически не обмениваются, возникнет ошибка. В колбэк-функции можно выбросить специальную ошибку, а затем поймать и извлечь необходимую информацию. Этот метод позволяет избежать изменения метода swap специально для нужд оценки, делая логику более простой.

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

Проблема точности обработки больших чисел

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

Расчет дохода по способу Share

Что касается дохода от комиссионных для поставщиков ликвидности, нет необходимости фиксировать каждую сделку. Можно зафиксировать общую комиссию и комиссию, причитающуюся за каждую единицу ликвидности, а при выводе LP рассчитывать сумму, которую можно вывести, исходя из удерживаемой ликвидности. Это похоже на принцип выплаты дивидендов по акциям.

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

Сочетание данных на цепочке и вне цепочки

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

Разделение контрактов и использование стандартных контрактов

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

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

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

Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 2
  • Поделиться
комментарий
0/400
AirdropHustlervip
· 07-19 11:31
Эти навыки разработки, похоже, приносят небольшую прибыль для Brother.
Посмотреть ОригиналОтветить0
0xSherlockvip
· 07-16 20:55
Стандартное руководство для новичков.
Посмотреть ОригиналОтветить0
  • Закрепить