Семь основных приемов, которые помогут вам овладеть разработкой смарт-контрактов

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

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

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

Предсказуемый адрес контракта

Обычно при развертывании контракта получается случайный адрес, но в некоторых сценариях нам необходимо иметь возможность предсказывать адрес контракта. Uniswap использует метод CREATE2 для создания контракта, добавляя параметр salt, что позволяет предсказывать создаваемый адрес контракта. Это очень полезно в таких сценариях, как определение прав на транзакции или получение адреса пула.

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

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

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

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

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

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

Гарантия точности больших чисел

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

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

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

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

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

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

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

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

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

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

UNI3%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 7
  • Поделиться
комментарий
0/400
LiquidityOraclevip
· 08-02 23:11
Интеграция еще одной статьи для начинающих о повторном разогреве еды
Посмотреть ОригиналОтветить0
WhaleWatchervip
· 08-02 19:29
Немного сложно понять, кто может объяснить create2?
Посмотреть ОригиналОтветить0
RetailTherapistvip
· 07-31 02:40
Лучше написать свой DEX, чтобы разыгрывать людей как лохов.
Посмотреть ОригиналОтветить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
  • Закрепить