Нещодавно, беручи участь у проекті з розробки навчального посібника для децентралізованої біржі, я вивчив цінні навички розробки контрактів, досліджуючи код Uniswap V3. Як новачок у розробці Defi контрактів, ці навички справили на мене значний вплив, і я впевнений, що вони також будуть корисні іншим новачкам, які хочуть навчитися розробці контрактів.
Прогнозована адреса контракту
Зазвичай, коли розгортається контракт, він отримує випадкову адресу, але в деяких випадках нам потрібно мати можливість передбачити адресу контракту. Uniswap використовує CREATE2 для створення контракту, додаючи параметр salt, що дозволяє передбачити створену адресу контракту. Це дуже корисно в таких ситуаціях, як визначення прав на торгівлю або отримання адреси пулу.
https://img-cdn.gateio.im/webp-social/moments-b0c3d4eb7e8ca88cc4cfc9476a34437a.webp(
Гарантія точності великих чисел
У Uniswap залучено велику кількість обчислень; щоб уникнути втрати точності під час операцій ділення, часто використовують зсув вліво на 96 біт ), що еквівалентно множенню на 2^96(. Таким чином, у нормальних умовах торгівлі, коли не відбувається переповнення, можна забезпечити точність обчислень. Хоча теоретично все ще може бути незначна втрата точності, але це вже прийнятно.
Обчислення прибутку способом Share
Щоб уникнути витрат великої кількості Gas на записування комісій за кожну угоду для кожного LP, Uniswap використовує спосіб, подібний до виплат дивідендів акціонерам. Необхідно лише записати загальну комісію та комісію, яка повинна бути розподілена на одиницю ліквідності, а під час вилучення LP можна розрахувати належну комісію відповідно до утримуваної ліквідності.
![Web3 новачок серії: маленькі поради з розробки контрактів, які я навчився з коду Uniswap])https://img-cdn.gateio.im/webp-social/moments-45e66af69435e6d4412ae506e77ab893.webp(
Поєднання даних на ланцюзі та поза ним
Не вся інформація повинна отримуватися з ланцюга. Наприклад, списки пулів, інформація про пули тощо можуть зберігатися у звичайних базах даних і періодично синхронізуватися з ланцюгом. Ключові транзакції виконуються в ланцюзі, тоді як не ключову інформацію можна отримувати більш ефективними способами для підвищення продуктивності та ефективності.
Розділення контракту та повторне використання стандартного контракту
Великі проекти зазвичай містять кілька контрактів, які фактично розгорнуті, навіть якщо розгорнуто лише один контракт, його можна розділити на кілька контрактів через успадкування для зручності обслуговування. Водночас використання вже існуючих стандартних контрактів ), таких як ERC721(, може підвищити ефективність розробки та спростити управління.
![Web3 новачок серії: маленькі хитрощі розробки контрактів, які я навчився з коду Uniswap])https://img-cdn.gateio.im/webp-social/moments-f95ddc9d89809cf11dbe65b9bafda157.webp(
Практика є найкращим способом навчання. Втілення простенької версії децентралізованої біржі своїми руками не лише дозволить глибше зрозуміти код реалізації Uniswap, але й навчитися більшої кількості знань з реальних проектів. Сподіваюся, що ці спостереження стануть у нагоді на твоєму шляху розробки контрактів.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
14 лайків
Нагородити
14
7
Поділіться
Прокоментувати
0/400
LiquidityOracle
· 08-02 23:11
Інтеграція ще однієї статті для початківців з炒冷饭
Переглянути оригіналвідповісти на0
WhaleWatcher
· 08-02 19:29
Трохи важко зрозуміти, хто може пояснити create2?
Переглянути оригіналвідповісти на0
RetailTherapist
· 07-31 02:40
Відправити це, краще написати декс і обдурювати людей, як лохів
Переглянути оригіналвідповісти на0
gas_guzzler
· 07-31 02:40
Прогнозування адреси, це смішно, свята Uniswap
Переглянути оригіналвідповісти на0
DeFiGrayling
· 07-31 02:35
Безмовний. Знову це навчання, яке підводить новачків...
Переглянути оригіналвідповісти на0
DEXRobinHood
· 07-31 02:35
DOGE教父 сказав правду! Сидіти у в'язниці не є сном!
Переглянути оригіналвідповісти на0
NightAirdropper
· 07-31 02:34
Говорили півдня, але термінові позики все ж кращі~
Сім основних порад, які допоможуть вам опанувати розробку смартконтрактів
Поради та враження з розробки контрактів
Нещодавно, беручи участь у проекті з розробки навчального посібника для децентралізованої біржі, я вивчив цінні навички розробки контрактів, досліджуючи код Uniswap V3. Як новачок у розробці Defi контрактів, ці навички справили на мене значний вплив, і я впевнений, що вони також будуть корисні іншим новачкам, які хочуть навчитися розробці контрактів.
Прогнозована адреса контракту
Зазвичай, коли розгортається контракт, він отримує випадкову адресу, але в деяких випадках нам потрібно мати можливість передбачити адресу контракту. Uniswap використовує CREATE2 для створення контракту, додаючи параметр salt, що дозволяє передбачити створену адресу контракту. Це дуже корисно в таких ситуаціях, як визначення прав на торгівлю або отримання адреси пулу.
https://img-cdn.gateio.im/webp-social/moments-b0c3d4eb7e8ca88cc4cfc9476a34437a.webp(
Гарантія точності великих чисел
У Uniswap залучено велику кількість обчислень; щоб уникнути втрати точності під час операцій ділення, часто використовують зсув вліво на 96 біт ), що еквівалентно множенню на 2^96(. Таким чином, у нормальних умовах торгівлі, коли не відбувається переповнення, можна забезпечити точність обчислень. Хоча теоретично все ще може бути незначна втрата точності, але це вже прийнятно.
Обчислення прибутку способом Share
Щоб уникнути витрат великої кількості Gas на записування комісій за кожну угоду для кожного LP, Uniswap використовує спосіб, подібний до виплат дивідендів акціонерам. Необхідно лише записати загальну комісію та комісію, яка повинна бути розподілена на одиницю ліквідності, а під час вилучення LP можна розрахувати належну комісію відповідно до утримуваної ліквідності.
![Web3 новачок серії: маленькі поради з розробки контрактів, які я навчився з коду Uniswap])https://img-cdn.gateio.im/webp-social/moments-45e66af69435e6d4412ae506e77ab893.webp(
Поєднання даних на ланцюзі та поза ним
Не вся інформація повинна отримуватися з ланцюга. Наприклад, списки пулів, інформація про пули тощо можуть зберігатися у звичайних базах даних і періодично синхронізуватися з ланцюгом. Ключові транзакції виконуються в ланцюзі, тоді як не ключову інформацію можна отримувати більш ефективними способами для підвищення продуктивності та ефективності.
Розділення контракту та повторне використання стандартного контракту
Великі проекти зазвичай містять кілька контрактів, які фактично розгорнуті, навіть якщо розгорнуто лише один контракт, його можна розділити на кілька контрактів через успадкування для зручності обслуговування. Водночас використання вже існуючих стандартних контрактів ), таких як ERC721(, може підвищити ефективність розробки та спростити управління.
![Web3 новачок серії: маленькі хитрощі розробки контрактів, які я навчився з коду Uniswap])https://img-cdn.gateio.im/webp-social/moments-f95ddc9d89809cf11dbe65b9bafda157.webp(
Практика є найкращим способом навчання. Втілення простенької версії децентралізованої біржі своїми руками не лише дозволить глибше зрозуміти код реалізації Uniswap, але й навчитися більшої кількості знань з реальних проектів. Сподіваюся, що ці спостереження стануть у нагоді на твоєму шляху розробки контрактів.