---
title: "Именование смарт-контрактов"
description: "Лучшие практики именования смарт-контрактов Эфириума с помощью ENS"
lang: ru
---

Смарт-контракты являются краеугольным камнем децентрализованной инфраструктуры Эфириума, обеспечивая работу автономных приложений и протоколов. Но даже по мере развития возможностей контрактов пользователи и разработчики по-прежнему полагаются на необработанные шестнадцатеричные адреса для идентификации и ссылки на эти контракты.

Именование смарт-контрактов с помощью [Ethereum Name Service (ENS)](https://ens.domains/) улучшает пользовательский опыт, устраняя необходимость в шестнадцатеричных адресах контрактов, и снижает риск таких атак, как отравление адресов (address poisoning) и спуфинг. В этом руководстве объясняется, почему именование смарт-контрактов имеет значение, как его можно реализовать, а также рассматриваются доступные инструменты, такие как [Enscribe](https://www.enscribe.xyz), которые упрощают этот процесс и помогают разработчикам внедрить эту практику.

## Зачем давать имена смарт-контрактам? {#why-name-contracts}

### Человекочитаемые идентификаторы {#human-readable-identifiers}

Вместо взаимодействия с непрозрачными адресами контрактов, такими как `0x8f8e...f9e3`, разработчики и пользователи могут использовать человекочитаемые имена, например `v2.myapp.eth`. Это упрощает взаимодействие со смарт-контрактами.

Это стало возможным благодаря [Ethereum Name Service](https://ens.domains/), который предоставляет децентрализованную службу имен для адресов Эфириума. Это аналогично тому, как служба доменных имен (DNS) позволяет пользователям интернета получать доступ к сетевым адресам, используя имя, такое как ethereum.org, вместо IP-адреса, такого как `104.18.176.152`.

### Повышение безопасности и доверия {#improved-security-and-trust}

Именованные контракты помогают сократить количество случайных транзакций на неправильный адрес. Они также помогают пользователям идентифицировать контракты, привязанные к конкретным приложениям или брендам. Это добавляет уровень репутационного доверия, особенно когда имена привязаны к известным родительским доменам, таким как `uniswap.eth`.

Из-за длины адреса Эфириума в 42 символа пользователям очень сложно заметить небольшие изменения в адресах, где была изменена пара символов. Например, адрес вроде `0x58068646C148E313CB414E85d2Fe89dDc3426870` обычно усекается до `0x580...870` в пользовательских приложениях, таких как кошельки. Пользователь вряд ли заметит вредоносный адрес, в котором была изменена пара символов.

Этот метод используется при атаках с подменой и отравлением адресов, когда пользователей заставляют поверить, что они взаимодействуют с правильным адресом или отправляют на него средства, тогда как на самом деле адрес просто похож на правильный, но не является им.

Имена ENS для кошельков и контрактов защищают от подобных атак. Как и атаки с подменой DNS, атаки с подменой ENS также могут иметь место, однако пользователь с большей вероятностью заметит опечатку в имени ENS, чем небольшое изменение в шестнадцатеричном адресе.

### Улучшенный UX для кошельков и обозревателей {#better-ux}

Когда смарт-контракт настроен с именем ENS, приложения, такие как кошельки и обозреватели блокчейна, могут отображать имена ENS для смарт-контрактов вместо шестнадцатеричных адресов. Это значительно улучшает пользовательский опыт (UX).

Например, при взаимодействии с таким приложением, как Юнисвоп, пользователи обычно видят, что приложение, с которым они взаимодействуют, размещено на веб-сайте `uniswap.org`, но им будет представлен шестнадцатеричный адрес контракта, если Юнисвоп не назвал свои смарт-контракты с помощью ENS. Если контракт имеет имя, вместо этого они могут увидеть `v4.contracts.uniswap.eth`, что гораздо полезнее.

## Именование при развертывании и после развертывания {#when-to-name}

Существует два момента, когда смарт-контрактам можно дать имя:

- **Во время развертывания**: назначение имени ENS контракту в момент его развертывания.
- **После развертывания**: сопоставление существующего адреса контракта с новым именем ENS.

Оба подхода предполагают наличие у владельца или менеджера доступа к домену ENS, чтобы они могли создавать и настраивать записи ENS.

## Как работает именование ENS для контрактов {#how-ens-naming-works}

Имена ENS хранятся ончейн и преобразуются в адреса Эфириума с помощью резолверов ENS. Чтобы дать имя смарт-контракту:

1. Зарегистрируйте или получите контроль над родительским доменом ENS (например, `myapp.eth`)
2. Создайте поддомен (например, `v1.myapp.eth`)
3. Установите запись `address` поддомена на адрес контракта
4. Установите обратную запись контракта в ENS, чтобы имя можно было найти по его адресу

Имена ENS иерархичны и поддерживают неограниченное количество подимен. Настройка этих записей обычно включает взаимодействие с реестром ENS и контрактами публичных резолверов.

## Инструменты для именования контрактов {#tools}

Существует два подхода к именованию смарт-контрактов. Либо использование [приложения ENS](https://app.ens.domains) с некоторыми ручными шагами, либо использование [Enscribe](https://www.enscribe.xyz). Они описаны ниже.

### Ручная настройка ENS {#manual-ens-setup}

Используя [приложение ENS](https://app.ens.domains/), разработчики могут вручную создавать подимена и устанавливать прямые записи адресов. Однако они не могут установить основное имя для смарт-контракта, настроив обратную запись для имени через приложение ENS. Необходимо выполнить ручные шаги, которые описаны в [документации ENS](https://docs.ens.domains/web/naming-contracts/).

### Enscribe {#enscribe}

[Enscribe](https://www.enscribe.xyz) упрощает именование смарт-контрактов с помощью ENS и повышает доверие пользователей к смарт-контрактам. Он предоставляет:

- **Атомарное развертывание и именование**: назначение имени ENS при развертывании нового контракта
- **Именование после развертывания**: привязка имен к уже развернутым контрактам
- **Поддержка нескольких сетей**: работает в Эфириуме и сетях уровня 2 (l2), где поддерживается ENS
- **Данные верификации контракта**: включает данные верификации контракта, полученные из нескольких источников, для повышения доверия пользователей

Enscribe поддерживает имена ENS, предоставленные пользователями, или свои собственные домены, если у пользователя нет имени ENS.

Вы можете получить доступ к [приложению Enscribe](https://app.enscribe.xyz), чтобы начать именовать и просматривать смарт-контракты.

## Лучшие практики {#best-practices}

- **Используйте понятные имена с указанием версий**, такие как `v1.myapp.eth`, чтобы сделать обновления контрактов прозрачными.
- **Устанавливайте обратные записи**, чтобы связать контракты с именами ENS для их видимости в приложениях, таких как кошельки и обозреватели блокчейна.
- **Внимательно следите за сроками действия**, если хотите предотвратить случайную смену владельца.
- **Верифицируйте исходный код контракта**, чтобы пользователи могли доверять тому, что именованный контракт ведет себя так, как ожидается.

## Риски {#risks}

Именование смарт-контрактов предоставляет значительные преимущества для пользователей Эфириума, однако владельцы доменов ENS должны быть бдительны в отношении управления ими. К числу основных рисков относятся:

- **Истечение срока действия**: как и имена DNS, регистрации имен ENS имеют ограниченный срок действия. Поэтому жизненно важно, чтобы владельцы следили за датами истечения срока действия своих доменов и продлевали их заблаговременно. Как приложение ENS, так и Enscribe предоставляют визуальные индикаторы для владельцев доменов при приближении срока истечения.
- **Смена владельца**: записи ENS представлены в виде NFT в Эфириуме, где владелец конкретного домена `.eth` имеет в своем распоряжении соответствующий NFT. Следовательно, если другой аккаунт станет владельцем этого NFT, новый владелец сможет изменять любые записи ENS по своему усмотрению.

Чтобы снизить такие риски, аккаунт владельца доменов 2-го уровня (2LD) `.eth` должен быть защищен с помощью кошелька с мультиподписью, а для управления именованием контрактов должны создаваться поддомены. Таким образом, в случае любых случайных или злонамеренных изменений владельца на уровне поддомена, они могут быть отменены владельцем 2LD.

## Будущее именования контрактов {#future}

Именование контрактов становится лучшей практикой для разработки децентрализованных приложений (dapp), подобно тому, как доменные имена заменили IP-адреса в интернете. По мере того как все больше элементов инфраструктуры, таких как кошельки, обозреватели и панели управления, интегрируют разрешение ENS для контрактов, именованные контракты повысят безопасность и уменьшат количество ошибок во всей экосистеме.

Делая смарт-контракты более простыми для распознавания и понимания, именование помогает преодолеть разрыв между пользователями и приложениями в Эфириуме, повышая как безопасность, так и UX для пользователей.

## Дополнительная литература {#further-reading}

- [Именование смарт-контрактов с помощью ENS](https://docs.ens.domains/web/naming-contracts/)
- [Именование смарт-контрактов с помощью Enscribe](https://www.enscribe.xyz/docs).