В экосистеме блокчейна браузерные расширения кошельков - это приложения кошельков, которые существуют в виде браузерных плагинов. Они позволяют пользователям удобно взаимодействовать с блокчейн-аккаунтами непосредственно в рамках dApps, таких как отправка транзакций, подписание сообщений или взаимодействие со смарт-контрактами. Самым типичным примером является MetaMask, который почти стал стандартным инструментом для использования dApps в экосистеме Ethereum. В отличие от традиционных приложений, браузерные расширения кошельков встроены в браузерную среду. Этот метод упрощает процесс взаимодействия пользователя с блокчейном и устраняет технические барьеры сложных операций с узлами или управления закрытым ключом. Пользователям нужно только установить расширение, чтобы быстро начать использовать сеть блокчейна.
В этом контексте термин "провайдер услуг" относится к базовой технологии или интерфейсу, поддерживающему эти функции кошелька. Например, кошельки взаимодействуют с узлами блокчейна через протокол Ethereum JSON-RPC, в то время как провайдер услуг предлагает соответствующий интерфейс RPC, чтобы позволить кошельку безопасно обрабатывать взаимодействия с цепью.
Представьте, что вы хотите использовать децентрализованную биржу (DEX) или торговую площадку NFT. Вы открываете веб-сайт dApp и с нетерпением ждете начала взаимодействия. Однако возникает проблема — в вашем браузере установлено несколько расширений кошелька, таких как MetaMask, Coinbase Wallet и Brave Wallet, но dApp не может правильно определить, какой кошелек вы используете в данный момент, и даже выдает сообщение об ошибке: «Кошелек не обнаружен, пожалуйста, установите расширение кошелька». Вы пытаетесь обновить страницу и перезапустить браузер, но проблема не устранена. Этот распространенный сценарий высвечивает практическую проблему: механизмы идентификации и взаимодействия кошельков расширений браузера неадекватны. По мере того, как появляется все больше расширений кошельков и поставщиков услуг, пользовательский опыт становится все более сложным и запутанным.
Для решения проблем взаимодействия между кошельками и dApps сообщество представило EIP-1193 (Ethereum JavaScript Provider API), универсальный стандарт, который определяет, как dApps могут общаться с кошельками через браузерное окружение. Основная идея EIP-1193 заключается в том, чтобы обрабатывать функции блокчейна, предоставленные кошельком, через стандартизированный интерфейс. Например, dApp общается с кошельком через объект window.ethereum, отправляя запросы или получая события блокчейна.
Хотя EIP-1193 частично решает проблемы совместимости между кошельками и dApps, у него все еще есть некоторые очевидные ограничения:
Для решения этой проблемы сообщество предложило EIP-6963 (Стандарт обнаружения кошелька расширения браузера), план совершенствования кошельков расширений браузера, направленный на оптимизацию механизмов обнаружения и взаимодействия кошельков. Решение направлено на снижение порога входа для новых поставщиков кошельков, поощрение более справедливой конкуренции и улучшение пользовательского опыта в сети Ethereum. В частности, оно вводит набор событий окна и обеспечивает двусторонний протокол связи, позволяющий библиотекам Ethereum и скриптам, внедренным расширениями браузера, взаимодействовать. Это позволит пользователям выбирать предпочтительный кошелек в зависимости от их потребностей, улучшая общий опыт.
Обратное DNS (RDNS) обеспечивает стабильность идентификаторов провайдера кошелька, предотвращая конфликты пространства имен. EIP-6963 подчеркивает правила, которым должны следовать соглашения о RDNS, такие как допустимые форматы доменов и части доменов, контролируемые провайдером. Он также подчеркивает, что dApps не должны полагаться на значение RDNS для обнаружения функций, чтобы избежать возможности поддельных или злонамеренных стимулов. Интерфейс ProviderDetail EIP-6963 предоставляет dApps метаданные провайдера кошелька, помогая в взаимодействии с кошельком.
Интерфейс EIP6963ProviderDetail используется для объявления и описания информации о поставщике кошелька. Включая свойства, такие как инфо (метаданные кошелька) и поставщик (интерфейс поставщика кошелька), он позволяет dApps получать подробную информацию о кошельках и взаимодействовать с ними через стандартизированные интерфейсы. Этот интерфейс служит основой для достижения совместимости и совместимости между децентрализованными приложениями и различными кошельками.
Механизм событий обеспечивает возможность обнаружения и взаимодействия между dApps и кошельками без зависимости от фиксированного порядка выполнения. Это позволяет обнаружению и взаимодействию между dApps и кошельками не зависеть от порядка выполнения, тем самым избегая конфликтов и ошибок.
EIP6963AnnounceProviderEvent: Это событие используется кошельками для объявления своего присутствия. Оно содержит информацию о кошельке (EIP6963ProviderDetail) и интерфейсе кошелька (EIP1193Provider). Свойство detail этого события содержит замороженные метаданные кошелька (с использованием Object.freeze()), чтобы обеспечить неизменяемость.
Событие EIP6963RequestProviderEvent: Это событие используется dApps для запроса провайдера кошелька. DApp использует это событие, чтобы уведомить кошелек, что он готов, и запросить взаимодействие.
Из-за неопределенного порядка выполнения кода dApp и кошелька могут возникать гонки. Механизм событий специально разработан для обеспечения правильной обработки событий dApps и кошельками, когда они обнаруживают друг друга. Кошелек может первым отправить событие анонса, в то время как dApp может не быть готов к прослушиванию его до более позднего времени. Чтобы предотвратить ошибки, кошелек повторно запустит событие анонса после первого, гарантируя, что dApp получит его своевременно.
dApps должны прослушивать событие EIP6963AnnounceProviderEvent и не должны удалять прослушиватель событий во время загрузки страницы. Это гарантирует, что dApp может непрерывно прослушивать и реагировать на событие анонса кошелька в течение его жизненного цикла. После обработки события анонса dApp должен запустить событие EIP6963RequestProviderEvent для запроса дальнейшего взаимодействия с кошельком.
dApps могут хранить несколько объектов EIP6963ProviderDetail для различных кошельков, позволяя пользователям выбирать между различными кошельками для взаимодействия в рамках dApp. Это обеспечивает большую гибкость для пользователей, позволяя им переключаться между кошельками без перезагрузки страницы.
Этот дизайн достигает безшовного обнаружения и взаимодействия между dApps и кошельками через EIP6963AnnounceProviderEvent и EIP6963RequestProviderEvent. С помощью прослушивателей событий и триггеров событий dApps и кошельки могут координировать свои действия несмотря на неопределенный порядок выполнения, избежать состязательных ситуаций и обеспечить стабильное поведение. Более того, dApps могут переключать кошельки на основе предпочтений пользователей, улучшая пользовательский опыт и совместимость кошельков.
Этот EIP не требует замены window.ethereum, что означает, что он не непосредственно нарушает существующие приложения, которые не могут быть обновлены для использования этого метода обнаружения кошелька. Однако настоятельно рекомендуется, чтобы dApps реализовывали этот EIP, чтобы гарантировать, что они могут обнаруживать несколько провайдеров кошельков и отключали использование window.ethereum, если он используется в качестве резервного метода при сбое обнаружения. Аналогично, провайдерам кошельков следует поддерживать совместимость с window.ethereum, чтобы обеспечить обратную совместимость с dApps, которые не реализуют этот EIP. Чтобы избежать проблем предыдущего конфликта имен, рекомендуется, чтобы кошельки внедряли свой объект провайдера в определенное пространство имен кошелька, а затем проксировали объект в пространство имен window.ethereum.
Расширения браузера, особенно кошельковые расширения, имеют возможность изменять содержимое страницы и объекты-поставщики, что является основной особенностью их дизайна. Объекты-поставщики различных кошельков считаются высокодоверенными интерфейсами для передачи данных о транзакциях. Чтобы предотвратить непреднамеренные изменения взаимодействия между dApp и кошельком со стороны страницы или других расширений, лучшей практикой является заморозка объекта EIP1193Provider с помощью Object.freeze() до того, как кошелек отправит событие eip6963:announceProvider. Это гарантирует, что объект не может быть изменен. Однако в некоторых случаях совместимость с веб-приложениями может потребовать изменения этого объекта. В таких случаях создателям кошельков необходимо найти баланс между безопасностью и совместимостью с вебом.
dApps должны активно обнаруживать, были ли изменены свойства или функции объекта-поставщика кошелька, чтобы предотвратить подделку или изменение других кошельков. Один из способов обнаружить подделку - проверить, совпадает ли свойство uuid в двух объектах EIP6963ProviderInfo. dApps и их библиотеки обнаружения должны учитывать другие потенциальные методы подделки и принимать дополнительные меры защиты от такого поведения, обеспечивая безопасность пользователей.
Использование изображений SVG может привести к атакам межсайтового выполнения сценариев (XSS), поскольку SVG может содержать код JavaScript. Этот код выполняется в контексте страницы и потенциально может изменять содержимое страницы или влиять на другие кошельки. Поэтому при визуализации значков dApps должны учитывать, как обрабатывать такие угрозы безопасности, чтобы предотвратить использование злонамеренных изображений в качестве методов обфускации, скрывающих злонамеренные изменения страницы или кошелька.
Одним из преимуществ использования механизма параллельного цикла событий в этом дизайне является то, что как dApp, так и кошелек могут инициировать процесс объявления поставщика. Поэтому создатели кошельков могут выбрать, объявлять ли себя на всех страницах или предпринимать другие меры для снижения вероятности идентификации пользователей с использованием внедренного объекта window.ethereum. Один из возможных вариантов - задержать внедрение объекта поставщика кошелька до того момента, пока dApp не объявит событие eip6963:requestProvider. На этом этапе кошелек может инициировать поток согласия пользовательского интерфейса, спрашивая пользователя, готов ли он поделиться своим адресом кошелька. Такой подход позволяет кошельку включить функцию "частного подключения". Однако, принимая такой подход, кошельку также необходимо учитывать, как обеспечить обратную совместимость с dApp, которые не поддерживают этот EIP.
EIP-6963, предложенный в мае 2023 года в качестве нового стандарта Ethereum и принятый в октябре того же года, направлен на решение отсутствия четко определенных стандартов, таких как window.ethereum. Стандарт вводит механизм обнаружения множественных поставщиков инъекций, позволяющий dApps надежно обнаруживать и подключаться ко всем установленным кошелькам в браузере пользователя. Это позволяет преодолеть ограничения и конфликты, возникающие при традиционных методах. По сравнению с традиционным подходом window.ethereum, EIP-6963 упрощает процесс обнаружения кошелька, поддерживая сосуществование нескольких расширений кошелька в одном браузере. Это новшество значительно улучшает взаимодействие в экосистеме Ethereum и повышает удобство использования пользователем.
EIP-6963 - это не только функциональное улучшение; он также улучшает узнаваемость кошельков и пользовательский опыт, позволяя кошелькам внедрять информацию, такую как имя, логотип, UUID и обратное DNS (RDNS). dApps могут отображать эту информацию, позволяя пользователям четко понимать, с каким кошельком они взаимодействуют, тем самым избегая путаницы и ошибочных операций. Это приводит к более ясному, надежному и удобному интерфейсу. Таким образом, EIP-6963 обеспечивает пользователя более плавным опытом, снижая потенциальные споры и избыточные операционные трудности, а также позитивно влияет на общую экосистему Ethereum.
Дизайн EIP-6963 вводит потенциальные уязвимости безопасности. Предоставляя список всех зарегистрированных кошельков, он облегчает взаимодействие между dApps и пользователями, но также может быть злоупотреблен зловредными приложениями. Зловредные dApps могут читать список установленных пользователями кошельков, делая выводы о их блокчейн-деятельности или распределении активов. Если механизм регистрации службы не обладает строгой проверкой, зловредные кошельки могут выдавать себя за законных поставщиков услуг, обманывая пользователей и крадя активы. Поэтому дополнительные меры безопасности (такие как согласие пользователя и проверка регистрации) необходимы.
С точки зрения пользовательского опыта множественная поддержка кошельков EIP-6963, хотя и является значительным улучшением, также может увеличить сложность. Например, после установки нескольких кошельков пользователю могут быть представлены слишком много вариантов в dApp, что может запутать пользователя в выборе кошелька. Кроме того, некоторые кошельки могут иметь наименования или логотипы, которые не являются интуитивно понятными, что увеличивает сложность их идентификации. Для пользователей, которым часто приходится переключаться между кошельками, такая гибкость может стать бременем, а не преимуществом.
EIP-6963 вводит событийно-ориентированный подход для решения проблем таких, как совместное существование нескольких кошельков, конфликты пространства имен и защита конфиденциальности пользователей в приложениях Web3, значительно улучшая опыт пользователя. Этот стандартизированный механизм позволяет dApps автоматически находить и подключать несколько кошельков без ручного переключения, избегая при этом конкуренции и конфликтов между кошельками, улучшая плавность и стабильность соединений. EIP-6963 также укрепляет безопасность, замораживая объекты поставщика кошельков для предотвращения вмешательства, уменьшая потенциальные риски безопасности. В плане конфиденциальности пользователи могут выбирать, делиться ли своим адресом кошелька, предотвращая утечки личности и фингерпринтинг. EIP-6963 поддерживает обратную совместимость с более старыми интерфейсами, обеспечивая плавный переход для существующих систем, упрощая работу разработчиков dApp и улучшая поддержку кросс-платформенности и многоприборности. В целом, EIP-6963 улучшает совместимость, безопасность и защиту конфиденциальности в Web3 и предоставляет разработчикам более эффективные инструменты, способствуя дальнейшему развитию экосистемы Web3.
Пригласить больше голосов
Содержание
В экосистеме блокчейна браузерные расширения кошельков - это приложения кошельков, которые существуют в виде браузерных плагинов. Они позволяют пользователям удобно взаимодействовать с блокчейн-аккаунтами непосредственно в рамках dApps, таких как отправка транзакций, подписание сообщений или взаимодействие со смарт-контрактами. Самым типичным примером является MetaMask, который почти стал стандартным инструментом для использования dApps в экосистеме Ethereum. В отличие от традиционных приложений, браузерные расширения кошельков встроены в браузерную среду. Этот метод упрощает процесс взаимодействия пользователя с блокчейном и устраняет технические барьеры сложных операций с узлами или управления закрытым ключом. Пользователям нужно только установить расширение, чтобы быстро начать использовать сеть блокчейна.
В этом контексте термин "провайдер услуг" относится к базовой технологии или интерфейсу, поддерживающему эти функции кошелька. Например, кошельки взаимодействуют с узлами блокчейна через протокол Ethereum JSON-RPC, в то время как провайдер услуг предлагает соответствующий интерфейс RPC, чтобы позволить кошельку безопасно обрабатывать взаимодействия с цепью.
Представьте, что вы хотите использовать децентрализованную биржу (DEX) или торговую площадку NFT. Вы открываете веб-сайт dApp и с нетерпением ждете начала взаимодействия. Однако возникает проблема — в вашем браузере установлено несколько расширений кошелька, таких как MetaMask, Coinbase Wallet и Brave Wallet, но dApp не может правильно определить, какой кошелек вы используете в данный момент, и даже выдает сообщение об ошибке: «Кошелек не обнаружен, пожалуйста, установите расширение кошелька». Вы пытаетесь обновить страницу и перезапустить браузер, но проблема не устранена. Этот распространенный сценарий высвечивает практическую проблему: механизмы идентификации и взаимодействия кошельков расширений браузера неадекватны. По мере того, как появляется все больше расширений кошельков и поставщиков услуг, пользовательский опыт становится все более сложным и запутанным.
Для решения проблем взаимодействия между кошельками и dApps сообщество представило EIP-1193 (Ethereum JavaScript Provider API), универсальный стандарт, который определяет, как dApps могут общаться с кошельками через браузерное окружение. Основная идея EIP-1193 заключается в том, чтобы обрабатывать функции блокчейна, предоставленные кошельком, через стандартизированный интерфейс. Например, dApp общается с кошельком через объект window.ethereum, отправляя запросы или получая события блокчейна.
Хотя EIP-1193 частично решает проблемы совместимости между кошельками и dApps, у него все еще есть некоторые очевидные ограничения:
Для решения этой проблемы сообщество предложило EIP-6963 (Стандарт обнаружения кошелька расширения браузера), план совершенствования кошельков расширений браузера, направленный на оптимизацию механизмов обнаружения и взаимодействия кошельков. Решение направлено на снижение порога входа для новых поставщиков кошельков, поощрение более справедливой конкуренции и улучшение пользовательского опыта в сети Ethereum. В частности, оно вводит набор событий окна и обеспечивает двусторонний протокол связи, позволяющий библиотекам Ethereum и скриптам, внедренным расширениями браузера, взаимодействовать. Это позволит пользователям выбирать предпочтительный кошелек в зависимости от их потребностей, улучшая общий опыт.
Обратное DNS (RDNS) обеспечивает стабильность идентификаторов провайдера кошелька, предотвращая конфликты пространства имен. EIP-6963 подчеркивает правила, которым должны следовать соглашения о RDNS, такие как допустимые форматы доменов и части доменов, контролируемые провайдером. Он также подчеркивает, что dApps не должны полагаться на значение RDNS для обнаружения функций, чтобы избежать возможности поддельных или злонамеренных стимулов. Интерфейс ProviderDetail EIP-6963 предоставляет dApps метаданные провайдера кошелька, помогая в взаимодействии с кошельком.
Интерфейс EIP6963ProviderDetail используется для объявления и описания информации о поставщике кошелька. Включая свойства, такие как инфо (метаданные кошелька) и поставщик (интерфейс поставщика кошелька), он позволяет dApps получать подробную информацию о кошельках и взаимодействовать с ними через стандартизированные интерфейсы. Этот интерфейс служит основой для достижения совместимости и совместимости между децентрализованными приложениями и различными кошельками.
Механизм событий обеспечивает возможность обнаружения и взаимодействия между dApps и кошельками без зависимости от фиксированного порядка выполнения. Это позволяет обнаружению и взаимодействию между dApps и кошельками не зависеть от порядка выполнения, тем самым избегая конфликтов и ошибок.
EIP6963AnnounceProviderEvent: Это событие используется кошельками для объявления своего присутствия. Оно содержит информацию о кошельке (EIP6963ProviderDetail) и интерфейсе кошелька (EIP1193Provider). Свойство detail этого события содержит замороженные метаданные кошелька (с использованием Object.freeze()), чтобы обеспечить неизменяемость.
Событие EIP6963RequestProviderEvent: Это событие используется dApps для запроса провайдера кошелька. DApp использует это событие, чтобы уведомить кошелек, что он готов, и запросить взаимодействие.
Из-за неопределенного порядка выполнения кода dApp и кошелька могут возникать гонки. Механизм событий специально разработан для обеспечения правильной обработки событий dApps и кошельками, когда они обнаруживают друг друга. Кошелек может первым отправить событие анонса, в то время как dApp может не быть готов к прослушиванию его до более позднего времени. Чтобы предотвратить ошибки, кошелек повторно запустит событие анонса после первого, гарантируя, что dApp получит его своевременно.
dApps должны прослушивать событие EIP6963AnnounceProviderEvent и не должны удалять прослушиватель событий во время загрузки страницы. Это гарантирует, что dApp может непрерывно прослушивать и реагировать на событие анонса кошелька в течение его жизненного цикла. После обработки события анонса dApp должен запустить событие EIP6963RequestProviderEvent для запроса дальнейшего взаимодействия с кошельком.
dApps могут хранить несколько объектов EIP6963ProviderDetail для различных кошельков, позволяя пользователям выбирать между различными кошельками для взаимодействия в рамках dApp. Это обеспечивает большую гибкость для пользователей, позволяя им переключаться между кошельками без перезагрузки страницы.
Этот дизайн достигает безшовного обнаружения и взаимодействия между dApps и кошельками через EIP6963AnnounceProviderEvent и EIP6963RequestProviderEvent. С помощью прослушивателей событий и триггеров событий dApps и кошельки могут координировать свои действия несмотря на неопределенный порядок выполнения, избежать состязательных ситуаций и обеспечить стабильное поведение. Более того, dApps могут переключать кошельки на основе предпочтений пользователей, улучшая пользовательский опыт и совместимость кошельков.
Этот EIP не требует замены window.ethereum, что означает, что он не непосредственно нарушает существующие приложения, которые не могут быть обновлены для использования этого метода обнаружения кошелька. Однако настоятельно рекомендуется, чтобы dApps реализовывали этот EIP, чтобы гарантировать, что они могут обнаруживать несколько провайдеров кошельков и отключали использование window.ethereum, если он используется в качестве резервного метода при сбое обнаружения. Аналогично, провайдерам кошельков следует поддерживать совместимость с window.ethereum, чтобы обеспечить обратную совместимость с dApps, которые не реализуют этот EIP. Чтобы избежать проблем предыдущего конфликта имен, рекомендуется, чтобы кошельки внедряли свой объект провайдера в определенное пространство имен кошелька, а затем проксировали объект в пространство имен window.ethereum.
Расширения браузера, особенно кошельковые расширения, имеют возможность изменять содержимое страницы и объекты-поставщики, что является основной особенностью их дизайна. Объекты-поставщики различных кошельков считаются высокодоверенными интерфейсами для передачи данных о транзакциях. Чтобы предотвратить непреднамеренные изменения взаимодействия между dApp и кошельком со стороны страницы или других расширений, лучшей практикой является заморозка объекта EIP1193Provider с помощью Object.freeze() до того, как кошелек отправит событие eip6963:announceProvider. Это гарантирует, что объект не может быть изменен. Однако в некоторых случаях совместимость с веб-приложениями может потребовать изменения этого объекта. В таких случаях создателям кошельков необходимо найти баланс между безопасностью и совместимостью с вебом.
dApps должны активно обнаруживать, были ли изменены свойства или функции объекта-поставщика кошелька, чтобы предотвратить подделку или изменение других кошельков. Один из способов обнаружить подделку - проверить, совпадает ли свойство uuid в двух объектах EIP6963ProviderInfo. dApps и их библиотеки обнаружения должны учитывать другие потенциальные методы подделки и принимать дополнительные меры защиты от такого поведения, обеспечивая безопасность пользователей.
Использование изображений SVG может привести к атакам межсайтового выполнения сценариев (XSS), поскольку SVG может содержать код JavaScript. Этот код выполняется в контексте страницы и потенциально может изменять содержимое страницы или влиять на другие кошельки. Поэтому при визуализации значков dApps должны учитывать, как обрабатывать такие угрозы безопасности, чтобы предотвратить использование злонамеренных изображений в качестве методов обфускации, скрывающих злонамеренные изменения страницы или кошелька.
Одним из преимуществ использования механизма параллельного цикла событий в этом дизайне является то, что как dApp, так и кошелек могут инициировать процесс объявления поставщика. Поэтому создатели кошельков могут выбрать, объявлять ли себя на всех страницах или предпринимать другие меры для снижения вероятности идентификации пользователей с использованием внедренного объекта window.ethereum. Один из возможных вариантов - задержать внедрение объекта поставщика кошелька до того момента, пока dApp не объявит событие eip6963:requestProvider. На этом этапе кошелек может инициировать поток согласия пользовательского интерфейса, спрашивая пользователя, готов ли он поделиться своим адресом кошелька. Такой подход позволяет кошельку включить функцию "частного подключения". Однако, принимая такой подход, кошельку также необходимо учитывать, как обеспечить обратную совместимость с dApp, которые не поддерживают этот EIP.
EIP-6963, предложенный в мае 2023 года в качестве нового стандарта Ethereum и принятый в октябре того же года, направлен на решение отсутствия четко определенных стандартов, таких как window.ethereum. Стандарт вводит механизм обнаружения множественных поставщиков инъекций, позволяющий dApps надежно обнаруживать и подключаться ко всем установленным кошелькам в браузере пользователя. Это позволяет преодолеть ограничения и конфликты, возникающие при традиционных методах. По сравнению с традиционным подходом window.ethereum, EIP-6963 упрощает процесс обнаружения кошелька, поддерживая сосуществование нескольких расширений кошелька в одном браузере. Это новшество значительно улучшает взаимодействие в экосистеме Ethereum и повышает удобство использования пользователем.
EIP-6963 - это не только функциональное улучшение; он также улучшает узнаваемость кошельков и пользовательский опыт, позволяя кошелькам внедрять информацию, такую как имя, логотип, UUID и обратное DNS (RDNS). dApps могут отображать эту информацию, позволяя пользователям четко понимать, с каким кошельком они взаимодействуют, тем самым избегая путаницы и ошибочных операций. Это приводит к более ясному, надежному и удобному интерфейсу. Таким образом, EIP-6963 обеспечивает пользователя более плавным опытом, снижая потенциальные споры и избыточные операционные трудности, а также позитивно влияет на общую экосистему Ethereum.
Дизайн EIP-6963 вводит потенциальные уязвимости безопасности. Предоставляя список всех зарегистрированных кошельков, он облегчает взаимодействие между dApps и пользователями, но также может быть злоупотреблен зловредными приложениями. Зловредные dApps могут читать список установленных пользователями кошельков, делая выводы о их блокчейн-деятельности или распределении активов. Если механизм регистрации службы не обладает строгой проверкой, зловредные кошельки могут выдавать себя за законных поставщиков услуг, обманывая пользователей и крадя активы. Поэтому дополнительные меры безопасности (такие как согласие пользователя и проверка регистрации) необходимы.
С точки зрения пользовательского опыта множественная поддержка кошельков EIP-6963, хотя и является значительным улучшением, также может увеличить сложность. Например, после установки нескольких кошельков пользователю могут быть представлены слишком много вариантов в dApp, что может запутать пользователя в выборе кошелька. Кроме того, некоторые кошельки могут иметь наименования или логотипы, которые не являются интуитивно понятными, что увеличивает сложность их идентификации. Для пользователей, которым часто приходится переключаться между кошельками, такая гибкость может стать бременем, а не преимуществом.
EIP-6963 вводит событийно-ориентированный подход для решения проблем таких, как совместное существование нескольких кошельков, конфликты пространства имен и защита конфиденциальности пользователей в приложениях Web3, значительно улучшая опыт пользователя. Этот стандартизированный механизм позволяет dApps автоматически находить и подключать несколько кошельков без ручного переключения, избегая при этом конкуренции и конфликтов между кошельками, улучшая плавность и стабильность соединений. EIP-6963 также укрепляет безопасность, замораживая объекты поставщика кошельков для предотвращения вмешательства, уменьшая потенциальные риски безопасности. В плане конфиденциальности пользователи могут выбирать, делиться ли своим адресом кошелька, предотвращая утечки личности и фингерпринтинг. EIP-6963 поддерживает обратную совместимость с более старыми интерфейсами, обеспечивая плавный переход для существующих систем, упрощая работу разработчиков dApp и улучшая поддержку кросс-платформенности и многоприборности. В целом, EIP-6963 улучшает совместимость, безопасность и защиту конфиденциальности в Web3 и предоставляет разработчикам более эффективные инструменты, способствуя дальнейшему развитию экосистемы Web3.