Поділитися маленькими порадами щодо розробки контрактів
Нещодавно, розробляючи проект децентралізованої біржі, я звернув увагу на код відомих DEX і навчився кількох цікавих технік розробки контрактів. Як новачок у розробці DeFi, ці техніки надихнули мене, і я впевнений, що вони також будуть корисні іншим, хто хоче навчитися розробці розумних контрактів.
Адреса ф'ючерсного контракту
Зазвичай адреси розгорнутого контракту виглядають випадковими, оскільки пов'язані з nonce. Але в деяких випадках нам потрібно вивести адресу контракту, спираючись на інформацію про транзакцію. Це можна реалізувати, використовуючи метод CREATE2 для створення контракту, додавши параметр salt під час створення контракту. Таким чином, згенерована адреса є передбачуваною, дотримуючись логіки "нова адреса = hash('0xFF', адреса творця, salt, initcode)".
https://img-cdn.gateio.im/webp-social/moments-b0c3d4eb7e8ca88cc4cfc9476a34437a.webp(
Проблема точності обробки великих чисел
При обчисленні ціни та ліквідності, щоб уникнути втрат точності, викликаних діленням, можна спочатку зсунути значення вліво на 96 біт ), що еквівалентно множенню на 2^96(, а потім виконати обчислення. Хоча теоретично все ще можуть бути незначні втрати точності, але в межах прийнятного.
Розрахунок доходу за допомогою Share方式
Щодо доходу від комісій для постачальників ліквідності, немає необхідності фіксувати його при кожній угоді. Можна зафіксувати загальну комісію та комісію, яку слід отримати за одиницю ліквідності, а під час виведення LP сума, яку можна вивести, розраховується на основі утримуваної ліквідності. Це схоже на принцип виплати дивідендів акцій.
![Web3 новачок серія: Малі хитрощі розробки контрактів, які я дізнався з коду Uniswap])https://img-cdn.gateio.im/webp-social/moments-45e66af69435e6d4412ae506e77ab893.webp(
Поєднання даних на ланцюгу та поза ним
Не вся інформація потребує запису в блокчейн або отримання з нього. Наприклад, списки торгових пулів, інформація тощо можуть зберігатися в традиційних базах даних, періодично синхронізуючись з блокчейном. Це може підвищити ефективність і знизити витрати. Звичайно, ключові угоди все ще повинні проводитися в блокчейні.
Розподіл контрактів та використання стандартних контрактів
Великі проекти можуть бути розділені на кілька фактичних контрактів або розділені кодом через успадкування. Одночасно можна використовувати існуючі стандартні контракти, такі як ERC721, щоб підвищити ефективність розробки. Наприклад, використання NFT для управління ліквідними позиціями.
![Web3 новачки: маленькі хитрощі розробки контрактів, які я навчився з коду Uniswap])https://img-cdn.gateio.im/webp-social/moments-f95ddc9d89809cf11dbe65b9bafda157.webp(
Щоб глибше зрозуміти ці техніки, найкращий спосіб - це самостійно розробити спрощену версію DEX. У процесі практики ви глибше зрозумієте різні концепції дизайну, а також зможете дізнатися більше корисних знань. Сподіваюся, ці поділися надихнуть вас і допоможуть.
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
10 лайків
Нагородити
10
2
Поділіться
Прокоментувати
0/400
AirdropHustler
· 07-19 11:31
Цей розробницький трюк для Брата Бро вважається невеликим, але вигідним бізнесом.
7 корисних порад з розробки смартконтрактів для підтримки DEX проектів
Поділитися маленькими порадами щодо розробки контрактів
Нещодавно, розробляючи проект децентралізованої біржі, я звернув увагу на код відомих DEX і навчився кількох цікавих технік розробки контрактів. Як новачок у розробці DeFi, ці техніки надихнули мене, і я впевнений, що вони також будуть корисні іншим, хто хоче навчитися розробці розумних контрактів.
Адреса ф'ючерсного контракту
Зазвичай адреси розгорнутого контракту виглядають випадковими, оскільки пов'язані з nonce. Але в деяких випадках нам потрібно вивести адресу контракту, спираючись на інформацію про транзакцію. Це можна реалізувати, використовуючи метод CREATE2 для створення контракту, додавши параметр salt під час створення контракту. Таким чином, згенерована адреса є передбачуваною, дотримуючись логіки "нова адреса = hash('0xFF', адреса творця, salt, initcode)".
https://img-cdn.gateio.im/webp-social/moments-b0c3d4eb7e8ca88cc4cfc9476a34437a.webp(
Проблема точності обробки великих чисел
При обчисленні ціни та ліквідності, щоб уникнути втрат точності, викликаних діленням, можна спочатку зсунути значення вліво на 96 біт ), що еквівалентно множенню на 2^96(, а потім виконати обчислення. Хоча теоретично все ще можуть бути незначні втрати точності, але в межах прийнятного.
Розрахунок доходу за допомогою Share方式
Щодо доходу від комісій для постачальників ліквідності, немає необхідності фіксувати його при кожній угоді. Можна зафіксувати загальну комісію та комісію, яку слід отримати за одиницю ліквідності, а під час виведення LP сума, яку можна вивести, розраховується на основі утримуваної ліквідності. Це схоже на принцип виплати дивідендів акцій.
![Web3 новачок серія: Малі хитрощі розробки контрактів, які я дізнався з коду Uniswap])https://img-cdn.gateio.im/webp-social/moments-45e66af69435e6d4412ae506e77ab893.webp(
Поєднання даних на ланцюгу та поза ним
Не вся інформація потребує запису в блокчейн або отримання з нього. Наприклад, списки торгових пулів, інформація тощо можуть зберігатися в традиційних базах даних, періодично синхронізуючись з блокчейном. Це може підвищити ефективність і знизити витрати. Звичайно, ключові угоди все ще повинні проводитися в блокчейні.
Розподіл контрактів та використання стандартних контрактів
Великі проекти можуть бути розділені на кілька фактичних контрактів або розділені кодом через успадкування. Одночасно можна використовувати існуючі стандартні контракти, такі як ERC721, щоб підвищити ефективність розробки. Наприклад, використання NFT для управління ліквідними позиціями.
![Web3 новачки: маленькі хитрощі розробки контрактів, які я навчився з коду Uniswap])https://img-cdn.gateio.im/webp-social/moments-f95ddc9d89809cf11dbe65b9bafda157.webp(
Щоб глибше зрозуміти ці техніки, найкращий спосіб - це самостійно розробити спрощену версію DEX. У процесі практики ви глибше зрозумієте різні концепції дизайну, а також зможете дізнатися більше корисних знань. Сподіваюся, ці поділися надихнуть вас і допоможуть.