ГЛАВНАЯ / ИНСТРУКЦИИ / EIP-6963: КАК DAPP НАХОДИТ НЕСКОЛЬКО РАСШИРЕНИЙ КОШЕЛЬКОВ
EIP-6963: как dApp находит несколько расширений кошельков
Когда в браузере установлено несколько Ethereum-кошельков, старый общий объект window.ethereum мог приводить к конфликту между расширениями. EIP-6963 предлагает событийный способ обнаружения нескольких injected providers: кошелёк объявляет сведения о себе и интерфейс EIP-1193, а dApp собирает варианты для выбора. Объявление позволяет приложению показать кошелёк, но само по себе не подключает аккаунт и не подтверждает подлинность расширения.
Общий window.ethereum не всегда показывает нужный кошелёк
До стандартизированного обнаружения dApp часто обращался к window.ethereum. Если расширений несколько, они могли конкурировать за один объект, и приложение не всегда понимало, какой кошелёк пользователь хочет выбрать. EIP-6963 вводит event-based discovery, позволяя собрать несколько предложений providers.
Стандарт сохраняет совместимость со старым способом, поэтому наличие EIP-6963 не означает, что каждая страница или каждое расширение уже полностью перешли на него. Пользователь может увидеть список вариантов, пустой список или только один кошелёк в зависимости от dApp, браузера и установленных расширений.
dApp запрашивает обнаружение, расширения объявляют provider
В кошельковом потоке используются события eip6963:requestProvider и eip6963:announceProvider. dApp сначала устанавливает обработчик объявления, затем отправляет запрос. Расширение отвечает событием с информацией о provider и объектом EIP-1193. Порядок запуска скриптов может различаться; повторный запрос помогает обработать ситуации, когда одна сторона загрузилась позже.
Информация о provider включает uuid, name, icon и rdns. UUIDv4 помогает различать объявления на странице, name предназначен для показа человеку, icon даёт URI изображения, а rdns содержит идентификатор в reverse-DNS форме. Ни одно из этих полей не является подписанным аттестатом магазина расширений.
- requestProvider и announceProvider различены
- provider metadata записаны отдельно
- порядок событий обработан
| Поле | Роль | Ограничение проверки |
|---|---|---|
| uuid | Различает объявления provider | Не доказывает издателя |
| name | Название для выбора | Может быть подменено |
| icon | Изображение | Нужно безопасное отображение |
| rdns | Reverse-DNS идентификатор | Самозаявлен и может быть неверным |
Сначала выберите provider, затем отдельно откройте доступ к аккаунту
DApp может использовать найденные EIP-6963 данные, чтобы показать пользователю несколько кошельков. После выбора приложение обращается к соответствующему provider по EIP-1193. Запрос аккаунта и последующие вызовы требуют отдельных действий пользователя и кошелька; одно объявление не раскрывает секретный ключ, но может участвовать в fingerprinting браузера.
Если список показывает незнакомое название, откройте официальный магазин браузера и проверьте имя издателя, страницу продукта и домен разработчика. Не считайте логотип, rdns или известное название подтверждением. После подключения убедитесь, что выбран правильный адрес и сеть, а перед подписью проверьте содержание конкретного запроса.
- выбран provider, а затем аккаунт
- Connect считается отдельным шагом
- домен проверен до доступа
Метаданные помогают выбрать, но требуют независимой проверки
Спецификация предупреждает, что rdns может быть неизвестным, неверным или имитировать другого provider; его нельзя использовать как единственное средство feature detection или удостоверения кошелька. Повторяющиеся UUID, изменяемый provider object и неизвестные объявления требуют аккуратной обработки со стороны приложения.
Icon может быть data URI и потенциально содержать SVG. Безопасная реализация должна отображать его как изображение, не вставляя SVG-разметку в DOM. С точки зрения приватности расширения выбирают, когда объявляться: dApp может видеть наличие provider даже до открытия доступа к аккаунту. Не устанавливайте лишние расширения и ограничивайте их доступ к сайтам настройками браузера.
- rdns не принят за сертификат
- SVG показан безопасно
- fingerprinting учтён
Частые вопросы
EIP-6963 подключает кошелёк автоматически?
Нет. Он обнаруживает providers. Подключение аккаунта и запросы кошелька происходят отдельно.
rdns гарантирует официальный кошелёк?
Нет. Это self-attested строка, которую расширение задаёт самостоятельно.
Для чего uuid?
Чтобы различать объявления provider в течение жизни страницы; это не криптографическое удостоверение бренда.
Почему dApp не видит расширение?
Страница может не поддерживать EIP-6963, расширение может использовать другой поток или быть ограничено браузером.
Может ли обнаружение раскрыть приватный ключ?
Нет, сам provider discovery не передаёт приватный ключ. Однако наличие расширений может быть частью fingerprinting, а последующие запросы требуют отдельной оценки.
Чек-лист: eip-6963: как dapp находит несколько расширений кошельков
- расширение найдено через ожидаемый browser provider;
- издатель проверен в официальном магазине;
- rdns и логотип не приняты за сертификат;
- dApp-домен проверен до Connect;
- выбран нужный provider и аккаунт;
- запрос доступа одобрен отдельно;
- иконка отображается как image;
- неизвестные расширения удалены или ограничены.
Материал подготовлен редакцией сайта и проверен 10 ноября 2026 года. Условия бирж, кошельков и блокчейн-сетей могут меняться. Перед операцией сверяйте данные в интерфейсе выбранного сервиса.