Руководство для новичков по Web3: Советы по разработке контрактов Uniswap
Недавно, когда я писал учебник по разработке децентрализованной биржи, я обратил внимание на код реализации Uniswap V3 и узнал много интересных моментов. В качестве разработчика, который впервые пробует разрабатывать Defi контракты, эти приемы будут очень полезны новичкам, желающим изучить разработку контрактов.
Предсказуемый адрес развертывания контракта
Обычно адреса развернутых контрактов выглядят случайными, так как связаны с nonce. Но в некоторых случаях нам нужно вывести адрес контракта, основываясь на информации о торговых парах и связанных данных. Uniswap использует метод CREATE2 для создания контрактов, добавляя параметр salt, чтобы сгенерированные адреса были предсказуемыми. Логика генерации нового адреса следующая: hash("0xFF", адрес создателя, salt, initcode).
. Таким образом, при обычной торговле без переполнения обеспечивается точность. Хотя теоретически все еще существует небольшая потеря точности, она уже приемлема.
![Web3 Новичок серия: Маленькие советы по разработке контрактов, которые я узнал из кода Uniswap])https://img-cdn.gateio.im/webp-social/moments-b0c3d4eb7e8ca88cc4cfc9476a34437a.webp(
Расчет дохода по механизму Share
Чтобы сэкономить на расходах Gas, нельзя фиксировать комиссию для каждого поставщика ликвидности при каждой сделке. Можно зафиксировать общую комиссию и комиссию, которую должен получить каждый поставщик ликвидности, а при выводе LP комиссия рассчитывается на основе удерживаемой ликвидности. Это похоже на механизм дивидендов по акциям.
![Web3 Новичок серия: маленькие советы по разработке контрактов, которые я узнал из кода Uniswap])https://img-cdn.gateio.im/webp-social/moments-45e66af69435e6d4412ae506e77ab893.webp(
Рациональное использование данных вне цепи
Не вся информация должна извлекаться из блокчейна. Например, списки торговых пулов, информация о торговых пулах и т. д. могут храниться в традиционных базах данных и периодически синхронизироваться с блокчейном. Некоторые поставщики RPC блокчейна предлагают расширенные интерфейсы, которые позволяют быстрее и экономнее получать данные.
Разделение контрактов и применение стандартных контрактов
Проект может включать несколько фактически развернутых контрактов или разбивать один контракт на несколько с помощью наследования. Использование существующих стандартных контрактов (например, ERC721) может повысить эффективность разработки. Например, некоторые платформы используют контракты ERC721 для управления позициями, что упрощает управление и повышает эффективность разработки.
Практика — лучший способ обучения. Попробуйте реализовать упрощенную версию децентрализованной биржи, чтобы глубже понять код реализации основных DEX и узнать больше о знаниях, применяемых в реальных проектах. Рекомендуется заинтересованным разработчикам обратиться к соответствующим открытым курсам и шаг за шагом завершить разработку упрощенной версии биржи.
![Web3 Новичок серия: маленькие советы по разработке контрактов, которые я узнал из кода Uniswap])https://img-cdn.gateio.im/webp-social/moments-f95ddc9d89809cf11dbe65b9bafda157.webp(
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
22 Лайков
Награда
22
6
Поделиться
комментарий
0/400
BagHolderTillRetire
· 07-08 01:52
Контракт настолько сложен, что у меня голова кругом.
Посмотреть ОригиналОтветить0
RugDocScientist
· 07-05 04:24
Да, старший брат действительно умеет подводить итоги.
Посмотреть ОригиналОтветить0
SeasonedInvestor
· 07-05 04:20
Хе-хе, Новичок, если не можешь научиться, не учись.
Посмотреть ОригиналОтветить0
SatoshiLegend
· 07-05 04:17
Технические детали не совсем полные, на уровне прослеживаемости все еще существуют несколько уязвимостей... Рекомендуется обратиться к исходному коду v2.
Семь советов по разработке контрактов Uniswap: руководство, обязательное для изучения новичками
Руководство для новичков по Web3: Советы по разработке контрактов Uniswap
Недавно, когда я писал учебник по разработке децентрализованной биржи, я обратил внимание на код реализации Uniswap V3 и узнал много интересных моментов. В качестве разработчика, который впервые пробует разрабатывать Defi контракты, эти приемы будут очень полезны новичкам, желающим изучить разработку контрактов.
Предсказуемый адрес развертывания контракта
Обычно адреса развернутых контрактов выглядят случайными, так как связаны с nonce. Но в некоторых случаях нам нужно вывести адрес контракта, основываясь на информации о торговых парах и связанных данных. Uniswap использует метод CREATE2 для создания контрактов, добавляя параметр salt, чтобы сгенерированные адреса были предсказуемыми. Логика генерации нового адреса следующая: hash("0xFF", адрес создателя, salt, initcode).
. Таким образом, при обычной торговле без переполнения обеспечивается точность. Хотя теоретически все еще существует небольшая потеря точности, она уже приемлема.
![Web3 Новичок серия: Маленькие советы по разработке контрактов, которые я узнал из кода Uniswap])https://img-cdn.gateio.im/webp-social/moments-b0c3d4eb7e8ca88cc4cfc9476a34437a.webp(
Расчет дохода по механизму Share
Чтобы сэкономить на расходах Gas, нельзя фиксировать комиссию для каждого поставщика ликвидности при каждой сделке. Можно зафиксировать общую комиссию и комиссию, которую должен получить каждый поставщик ликвидности, а при выводе LP комиссия рассчитывается на основе удерживаемой ликвидности. Это похоже на механизм дивидендов по акциям.
![Web3 Новичок серия: маленькие советы по разработке контрактов, которые я узнал из кода Uniswap])https://img-cdn.gateio.im/webp-social/moments-45e66af69435e6d4412ae506e77ab893.webp(
Рациональное использование данных вне цепи
Не вся информация должна извлекаться из блокчейна. Например, списки торговых пулов, информация о торговых пулах и т. д. могут храниться в традиционных базах данных и периодически синхронизироваться с блокчейном. Некоторые поставщики RPC блокчейна предлагают расширенные интерфейсы, которые позволяют быстрее и экономнее получать данные.
Разделение контрактов и применение стандартных контрактов
Проект может включать несколько фактически развернутых контрактов или разбивать один контракт на несколько с помощью наследования. Использование существующих стандартных контрактов (например, ERC721) может повысить эффективность разработки. Например, некоторые платформы используют контракты ERC721 для управления позициями, что упрощает управление и повышает эффективность разработки.
Практика — лучший способ обучения. Попробуйте реализовать упрощенную версию децентрализованной биржи, чтобы глубже понять код реализации основных DEX и узнать больше о знаниях, применяемых в реальных проектах. Рекомендуется заинтересованным разработчикам обратиться к соответствующим открытым курсам и шаг за шагом завершить разработку упрощенной версии биржи.
![Web3 Новичок серия: маленькие советы по разработке контрактов, которые я узнал из кода Uniswap])https://img-cdn.gateio.im/webp-social/moments-f95ddc9d89809cf11dbe65b9bafda157.webp(