Поради з розробки контрактів, отримані з коду 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, Uniswap використовує подібний до акціонерного способу. Записуючи загальні комісії та комісії, що мають бути розподілені на одиницю ліквідності, LP під час вилучення потрібно лише розрахувати комісії, які можна вилучити, виходячи з наявної ліквідності, що значно знижує споживання газу.
![Web3 новачок серія: маленькі поради з розробки контрактів, які я навчився з коду Uniswap])https://img-cdn.gateio.im/webp-social/moments-45e66af69435e6d4412ae506e77ab893.webp(
Раціональне використання інформації поза ланцюгом
Враховуючи високі витрати на зберігання в ланцюгу, не вся інформація повинна зберігатися в ланцюгу або отримуватися з ланцюга. Наприклад, списки торгових пулів, інформація про пул тощо можуть зберігатися у традиційній базі даних та періодично синхронізуватися з даними ланцюга. Цей підхід може підвищити ефективність і знизити витрати.
Розподіл контрактів та повторне використання стандартних контрактів
Проект може містити кілька фактично розгорнутх контрактів, навіть якщо розгорнуто лише один контракт, можна розділити код на кілька контрактів за допомогою успадкування. Крім того, використання вже існуючих стандартних контрактів (як-от ERC721) може підвищити ефективність розробки та посилити надійність контракту.
Висновок
Практика є найкращим методом навчання. Спробувавши реалізувати спрощену версію децентралізованої біржі, можна глибше зрозуміти реалізацію коду Uniswap та отримати цінний досвід з реальних проектів. Для розробників, які мають зацікавленість у глибшому вивченні розробки проектів Web3 та DeFi, участь у практичних курсах буде чудовим вибором.
![Web3 новачок серії: маленькі поради з розробки контрактів, які я дізнався з коду Uniswap])https://img-cdn.gateio.im/webp-social/moments-f95ddc9d89809cf11dbe65b9bafda157.webp(
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
12 лайків
Нагородити
12
6
Поділіться
Прокоментувати
0/400
GateUser-9ad11037
· 14год тому
Новачок увійти в позицію教程齁
Переглянути оригіналвідповісти на0
WalletManager
· 14год тому
Ретельний аудит перед контрактом - це фундаментальні роботи... навчитися цьому.
Переглянути оригіналвідповісти на0
SmartContractRebel
· 14год тому
Розробник вже давно живе на старих здобутках.
Переглянути оригіналвідповісти на0
GateUser-a606bf0c
· 14год тому
Це все? Занадто базово, чи не так?
Переглянути оригіналвідповісти на0
BlockchainBouncer
· 14год тому
Летить так швидко, що не розумію.
Переглянути оригіналвідповісти на0
GasGuzzler
· 14год тому
Навіть якщо я скажу це ще десять разів, я все одно не зможу написати.
Розкриття коду Uniswap: 7 основних порад з розробки смартконтрактів
Поради з розробки контрактів, отримані з коду 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, Uniswap використовує подібний до акціонерного способу. Записуючи загальні комісії та комісії, що мають бути розподілені на одиницю ліквідності, LP під час вилучення потрібно лише розрахувати комісії, які можна вилучити, виходячи з наявної ліквідності, що значно знижує споживання газу.
![Web3 новачок серія: маленькі поради з розробки контрактів, які я навчився з коду Uniswap])https://img-cdn.gateio.im/webp-social/moments-45e66af69435e6d4412ae506e77ab893.webp(
Раціональне використання інформації поза ланцюгом
Враховуючи високі витрати на зберігання в ланцюгу, не вся інформація повинна зберігатися в ланцюгу або отримуватися з ланцюга. Наприклад, списки торгових пулів, інформація про пул тощо можуть зберігатися у традиційній базі даних та періодично синхронізуватися з даними ланцюга. Цей підхід може підвищити ефективність і знизити витрати.
Розподіл контрактів та повторне використання стандартних контрактів
Проект може містити кілька фактично розгорнутх контрактів, навіть якщо розгорнуто лише один контракт, можна розділити код на кілька контрактів за допомогою успадкування. Крім того, використання вже існуючих стандартних контрактів (як-от ERC721) може підвищити ефективність розробки та посилити надійність контракту.
Висновок
Практика є найкращим методом навчання. Спробувавши реалізувати спрощену версію децентралізованої біржі, можна глибше зрозуміти реалізацію коду Uniswap та отримати цінний досвід з реальних проектів. Для розробників, які мають зацікавленість у глибшому вивченні розробки проектів Web3 та DeFi, участь у практичних курсах буде чудовим вибором.
![Web3 новачок серії: маленькі поради з розробки контрактів, які я дізнався з коду Uniswap])https://img-cdn.gateio.im/webp-social/moments-f95ddc9d89809cf11dbe65b9bafda157.webp(