Посібник для новачків 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
Щоб заощадити витрати на газ, не можна записувати комісію для кожного постачальника ліквідності під час кожної транзакції. Можна записувати загальну комісію та комісію, яку слід розподілити між кожним постачальником ліквідності, а при виведенні 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
Щоб заощадити витрати на газ, не можна записувати комісію для кожного постачальника ліквідності під час кожної транзакції. Можна записувати загальну комісію та комісію, яку слід розподілити між кожним постачальником ліквідності, а при виведенні 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(