Дивовижні ідеї для розробки контрактів: надихаючись кодом Uniswap
Нещодавно, пишучи посібник з розробки децентралізованої біржі, я глибоко вивчав код реалізації Uniswap V3 і отримав багато користі. Як розробник, який раніше створював прості контракти NFT, я вперше занурився в сферу Defi контрактів. Ось кілька маленьких порад, які, сподіваюся, будуть корисні новачкам у розробці контрактів.
Прогнозована адреса розгортання контракту
Зазвичай адреса, отримана після розгортання контракту, виглядає випадковою, оскільки пов'язана з nonce. Проте в деяких ситуаціях нам потрібно вивести адресу контракту на основі інформації про угоду та відповідних даних. Uniswap використовує метод CREATE2 для створення контрактів, додаючи параметр salt, що робить згенеровану адресу контракту передбачуваною. Цей метод дуже корисний для визначення прав доступу до угод або отримання адреси пулу.
Розумне використання функцій зворотного виклику
У Solidity контракти можуть викликати один одного. Метод swap Uniswap використовує механізм зворотного виклику, щоб забезпечити повне виконання логіки транзакції без необхідності складного ведення змінних для забезпечення безпеки.
Неправильна передача інформації та оцінка угод
У контракті Quoter Uniswap метод swap виконується через блок try-catch, що дозволяє вловлювати специфічні помилки для оцінки необхідних токенів для транзакції. Цей метод є як практичним, так і простим, не вимагаючи окремої модифікації методу swap для оцінки потреб.
Велике число вирішує проблему точності
Uniswap часто використовує операцію зсуву вліво на 96 біт (еквівалентно множенню на 2^96) під час обчислень, щоб забезпечити точність без переповнення. Цей метод особливо ефективний при обробці розрахунків цін і ліквідності.
Режим поділу обчислення прибутку
Щоб уникнути необхідності фіксувати комісії для кожного постачальника ліквідності (LP) під час кожної угоди, Uniswap використовує спосіб, подібний до дивідендів акцій. Записуючи загальну комісію та комісію, яка повинна бути розподілена між кожним постачальником ліквідності, LP може при виведенні розрахувати належний дохід на основі власної ліквідності.
Стратегія отримання інформації з блокчейну
Не вся інформація повинна отримуватися з блокчейну. Наприклад, списки торгових пулів, інформація про торгові пули тощо можуть зберігатися в традиційних базах даних і періодично синхронізуватися з блокчейном. Цей підхід може суттєво підвищити ефективність і продуктивність.
Розподіл контракту та використання стандартного контракту
Великі проекти можуть містити кілька реально розгорнених контрактів або розділити один контракт на кілька шляхом наслідування. Контракт NonfungiblePositionManager Uniswap є чудовим прикладом, оскільки він успадковує кілька контрактів і використовує стандартний контракт ERC721 від OpenZeppelin.
Практика дає справжнє знання. Реалізувавши просту версію децентралізованої біржі власноруч, ви глибше зрозумієте кодову реалізацію Uniswap та отримаєте цінний досвід у реальних проектах. Незалежно від того, чи є ви прихильником Web3, чи розробником проектів Defi, вірю, що ці поради будуть вам корисні.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
12 лайків
Нагородити
12
7
Поділіться
Прокоментувати
0/400
LuckyBlindCat
· 07-19 21:04
Цей код зрозумілий?
Переглянути оригіналвідповісти на0
AirdropHuntress
· 07-19 01:08
Варто вивчити, код має певні цікаві моменти.
Переглянути оригіналвідповісти на0
MEVEye
· 07-18 19:39
Є кілька цікавих моментів: розкриваємо маленькі хитрощі контрактів
Переглянути оригіналвідповісти на0
UncleWhale
· 07-18 19:39
Зберігайте це, знадобиться для навчання розробці в майбутньому.
Переглянути оригіналвідповісти на0
MetaMaximalist
· 07-18 19:34
фасцинуюче розуміння стійкості протоколу. але, чесно кажучи, це базові речі веб3...
Переглянути оригіналвідповісти на0
SpeakWithHatOn
· 07-18 19:23
Вчитися, вчитися, а потім ще й випадати волосся, занадто важко.
Аналіз коду Uniswap: 7 порад з розробки контрактів для підтримки Децентралізованих фінансів
Дивовижні ідеї для розробки контрактів: надихаючись кодом Uniswap
Нещодавно, пишучи посібник з розробки децентралізованої біржі, я глибоко вивчав код реалізації Uniswap V3 і отримав багато користі. Як розробник, який раніше створював прості контракти NFT, я вперше занурився в сферу Defi контрактів. Ось кілька маленьких порад, які, сподіваюся, будуть корисні новачкам у розробці контрактів.
Прогнозована адреса розгортання контракту
Зазвичай адреса, отримана після розгортання контракту, виглядає випадковою, оскільки пов'язана з nonce. Проте в деяких ситуаціях нам потрібно вивести адресу контракту на основі інформації про угоду та відповідних даних. Uniswap використовує метод CREATE2 для створення контрактів, додаючи параметр salt, що робить згенеровану адресу контракту передбачуваною. Цей метод дуже корисний для визначення прав доступу до угод або отримання адреси пулу.
Розумне використання функцій зворотного виклику
У Solidity контракти можуть викликати один одного. Метод swap Uniswap використовує механізм зворотного виклику, щоб забезпечити повне виконання логіки транзакції без необхідності складного ведення змінних для забезпечення безпеки.
Неправильна передача інформації та оцінка угод
У контракті Quoter Uniswap метод swap виконується через блок try-catch, що дозволяє вловлювати специфічні помилки для оцінки необхідних токенів для транзакції. Цей метод є як практичним, так і простим, не вимагаючи окремої модифікації методу swap для оцінки потреб.
Велике число вирішує проблему точності
Uniswap часто використовує операцію зсуву вліво на 96 біт (еквівалентно множенню на 2^96) під час обчислень, щоб забезпечити точність без переповнення. Цей метод особливо ефективний при обробці розрахунків цін і ліквідності.
Режим поділу обчислення прибутку
Щоб уникнути необхідності фіксувати комісії для кожного постачальника ліквідності (LP) під час кожної угоди, Uniswap використовує спосіб, подібний до дивідендів акцій. Записуючи загальну комісію та комісію, яка повинна бути розподілена між кожним постачальником ліквідності, LP може при виведенні розрахувати належний дохід на основі власної ліквідності.
Стратегія отримання інформації з блокчейну
Не вся інформація повинна отримуватися з блокчейну. Наприклад, списки торгових пулів, інформація про торгові пули тощо можуть зберігатися в традиційних базах даних і періодично синхронізуватися з блокчейном. Цей підхід може суттєво підвищити ефективність і продуктивність.
Розподіл контракту та використання стандартного контракту
Великі проекти можуть містити кілька реально розгорнених контрактів або розділити один контракт на кілька шляхом наслідування. Контракт NonfungiblePositionManager Uniswap є чудовим прикладом, оскільки він успадковує кілька контрактів і використовує стандартний контракт ERC721 від OpenZeppelin.
Практика дає справжнє знання. Реалізувавши просту версію децентралізованої біржі власноруч, ви глибше зрозумієте кодову реалізацію Uniswap та отримаєте цінний досвід у реальних проектах. Незалежно від того, чи є ви прихильником Web3, чи розробником проектів Defi, вірю, що ці поради будуть вам корисні.