Найменування смарт-контрактів
Смарт-контракти є наріжним каменем децентралізованої інфраструктури Етеріуму, що забезпечує роботу автономних застосунків та протоколів. Але навіть попри розвиток можливостей контрактів, користувачі та розробники досі покладаються на необроблені шістнадцяткові адреси для ідентифікації та посилання на ці контракти.
Найменування смарт-контрактів за допомогою Ethereum Name Service (ENS) (opens in a new tab) покращує користувацький досвід, усуваючи необхідність використання шістнадцяткових адрес контрактів, і знижує ризик таких атак, як отруєння адрес та спуфінг. Цей посібник пояснює, чому найменування смарт-контрактів є важливим, як його можна реалізувати, а також розповідає про доступні інструменти, такі як Enscribe (opens in a new tab), що спрощують цей процес і допомагають розробникам впроваджувати цю практику.
Навіщо давати імена смарт-контрактам?
Зрозумілі для людини ідентифікатори
Замість взаємодії з незрозумілими адресами контрактів, такими як 0x8f8e...f9e3, розробники та користувачі можуть використовувати зрозумілі для людини імена, наприклад v2.myapp.eth. Це спрощує взаємодію зі смарт-контрактами.
Це стало можливим завдяки Ethereum Name Service (opens in a new tab), який надає децентралізовану службу найменування для адрес Етеріуму. Це аналогічно тому, як система доменних імен (DNS) дозволяє користувачам інтернету отримувати доступ до мережевих адрес, використовуючи ім'я, наприклад ethereum.org, замість IP-адреси, такої як 104.18.176.152.
Покращена безпека та довіра
Іменовані контракти допомагають зменшити кількість випадкових транзакцій на неправильну адресу. Вони також допомагають користувачам ідентифікувати контракти, прив'язані до певних застосунків або брендів. Це додає рівень репутаційної довіри, особливо коли імена прив'язані до відомих батьківських доменів, таких як uniswap.eth.
Через те, що адреса Етеріуму складається з 42 символів, користувачам дуже важко помітити невеликі зміни в адресах, де було змінено кілька символів. Наприклад, адреса на кшталт 0x58068646C148E313CB414E85d2Fe89dDc3426870 зазвичай скорочується до 0x580...870 у клієнтських застосунках, таких як гаманці. Користувач навряд чи помітить зловмисну адресу, в якій було змінено кілька символів.
Цей метод використовується в атаках зі спуфінгом та отруєнням адрес, коли користувачів змушують повірити, що вони взаємодіють або надсилають кошти на правильну адресу, тоді як насправді адреса лише нагадує правильну, але не є нею.
Імена ENS для гаманців та контрактів захищають від таких типів атак. Як і атаки зі спуфінгом DNS, атаки зі спуфінгом ENS також можуть мати місце, однак користувач з більшою ймовірністю помітить помилку в імені ENS, ніж невелику зміну в шістнадцятковій адресі.
Кращий UX для гаманців та оглядачів
Коли смарт-контракт налаштовано з іменем ENS, застосунки, такі як гаманці та оглядачі блокчейну, можуть відображати імена ENS для смарт-контрактів замість шістнадцяткових адрес. Це значно покращує користувацький досвід (UX).
Наприклад, під час взаємодії з таким застосунком, як Юнісвоп, користувачі зазвичай бачать, що застосунок, з яким вони взаємодіють, розміщений на вебсайті uniswap.org, але їм буде показана шістнадцяткова адреса контракту, якщо Юнісвоп не назвав свої смарт-контракти за допомогою ENS. Якщо контракт має ім'я, замість цього вони можуть побачити v4.contracts.uniswap.eth, що набагато корисніше.
Найменування під час розгортання та після розгортання
Існує два моменти, коли смарт-контрактам можна дати ім'я:
- Під час розгортання: призначення імені ENS контракту під час його розгортання.
- Після розгортання: прив'язка існуючої адреси контракту до нового імені ENS.
Обидва підходи вимагають наявності доступу власника або менеджера до домену ENS, щоб вони могли створювати та встановлювати записи ENS.
Як працює найменування ENS для контрактів
Імена ENS зберігаються ончейн і перетворюються на адреси Етеріуму за допомогою резолверів ENS. Щоб дати ім'я смарт-контракту:
- Зареєструйте або отримайте контроль над батьківським доменом ENS (наприклад,
myapp.eth) - Створіть субдомен (наприклад,
v1.myapp.eth) - Встановіть запис
addressсубдомену на адресу контракту - Встановіть зворотний запис контракту в ENS, щоб дозволити знаходити ім'я за його адресою
Імена ENS є ієрархічними та підтримують необмежену кількість субімен. Встановлення цих записів зазвичай передбачає взаємодію з реєстром ENS та контрактами публічних резолверів.
Інструменти для найменування контрактів
Існує два підходи до найменування смарт-контрактів. Або використання застосунку ENS (opens in a new tab) з деякими ручними кроками, або використання Enscribe (opens in a new tab). Вони описані нижче.
Ручне налаштування ENS
Використовуючи застосунок ENS (opens in a new tab), розробники можуть вручну створювати субімена та встановлювати записи прямих адрес. Однак вони не можуть встановити основне ім'я для смарт-контракту, встановивши зворотний запис для імені через застосунок ENS. Необхідно виконати ручні кроки, які описані в документації ENS (opens in a new tab).
Enscribe
Enscribe (opens in a new tab) спрощує найменування смарт-контрактів за допомогою ENS та підвищує довіру користувачів до смарт-контрактів. Він забезпечує:
- Атомарне розгортання та найменування: призначення імені ENS під час розгортання нового контракту
- Найменування після розгортання: прив'язка імен до вже розгорнутих контрактів
- Підтримка кількох ланцюгів: працює в мережах Етеріуму та рівня 2 (l2), де підтримується ENS
- Дані верифікації контракту: включає дані верифікації контракту, отримані з кількох джерел, для підвищення довіри користувачів
Enscribe підтримує імена ENS, надані користувачами, або власні домени, якщо користувач не має імені ENS.
Ви можете отримати доступ до застосунку Enscribe (opens in a new tab), щоб почати давати імена та переглядати смарт-контракти.
Найкращі практики
- Використовуйте зрозумілі імена з версіями, такі як
v1.myapp.eth, щоб зробити оновлення контрактів прозорими. - Встановлюйте зворотні записи, щоб пов'язати контракти з іменами ENS для видимості в застосунках, таких як гаманці та оглядачі блокчейну.
- Уважно стежте за термінами дії, якщо хочете запобігти випадковим змінам власника.
- Верифікуйте вихідний код контракту, щоб користувачі могли довіряти тому, що іменований контракт працює так, як очікується.
Ризики
Найменування смарт-контрактів надає значні переваги для користувачів Етеріуму, однак власники доменів ENS повинні бути пильними щодо управління ними. До основних ризиків належать:
- Закінчення терміну дії: як і імена DNS, реєстрації імен ENS мають обмежений термін дії. Тому вкрай важливо, щоб власники стежили за датами закінчення терміну дії своїх доменів і продовжували їх завчасно. Як застосунок ENS, так і Enscribe надають візуальні індикатори для власників доменів, коли наближається закінчення терміну дії.
- Зміна власника: записи ENS представлені як NFT в Етеріумі, де власник певного домену
.ethмає у своєму розпорядженні відповідний NFT. Отже, якщо інший акаунт отримає право власності на цей NFT, новий власник зможе змінювати будь-які записи ENS на власний розсуд.
Щоб зменшити такі ризики, акаунт власника доменів 2-го рівня (2LD) .eth має бути захищений за допомогою гаманця з мультипідписом, а для управління найменуванням контрактів слід створювати субдомени. Таким чином, у разі будь-яких випадкових або зловмисних змін власника на рівні субдомену, вони можуть бути скасовані власником 2LD.
Майбутнє найменування контрактів
Найменування контрактів стає найкращою практикою для розробки децентралізованих застосунків (dapp), подібно до того, як доменні імена замінили IP-адреси в інтернеті. Оскільки все більше інфраструктури, такої як гаманці, оглядачі та інформаційні панелі, інтегрують розпізнавання ENS для контрактів, іменовані контракти підвищать безпеку та зменшать кількість помилок у всій екосистемі.
Роблячи смарт-контракти простішими для розпізнавання та розуміння, найменування допомагає подолати розрив між користувачами та застосунками в Етеріумі, покращуючи як безпеку, так і UX для користувачів.