Аналіз EIP-6963: Крок до покращення сумісності гаманця Ethereum та підвищення зручності користувача

Розширений1/15/2025, 8:36:35 AM
EIP-6963 вводить новий стандарт, спрямований на оптимізацію механізмів виявлення та взаємодії гаманців розширень браузера Ethereum. Він ставить за мету вирішення проблем, таких як конфлікти гаманців, відсутність підтримки багатосервісу та незрозумілі користувацькі враження. Порівняно з існуючим стандартом EIP-1193, EIP-6963 вводить події вікон та двонапрямковий протокол зв'язку, що дозволяє додаткам більш ефективно визнавати та адаптуватися до улюблених гаманців користувачів.

Походження EIP-6963

У блокчейн-екосистемі розширення браузера є додатками гаманців, які існують у вигляді плагінів для браузера. Вони дозволяють користувачам зручно взаємодіяти з обліковими записами блокчейну безпосередньо в межах dApps, таких як відправлення транзакцій, підписання повідомлень або взаємодія з розумними контрактами. Найтиповіший приклад - це MetaMask, який майже став стандартним інструментом для використання додатків екосистеми Ethereum. На відміну від традиційних додатків, розширення браузера вбудовані в середовище браузера. Цей метод спрощує процес взаємодії користувача з блокчейном та усуває технічні бар'єри складних операцій з вузлами або управління особистим ключем. Користувачам потрібно лише встановити розширення, щоб швидко почати використовувати мережу блокчейну.

У цьому контексті термін "постачальник послуг" відноситься до базової технології або інтерфейсу, який підтримує ці функції гаманця. Наприклад, гаманці взаємодіють з вузлами блокчейну через протокол Ethereum JSON-RPC, тоді як постачальник послуг пропонує відповідний інтерфейс RPC для забезпечення можливості гаманцю безпечно обробляти взаємодії на ланцюжку.

Уявіть, що ви хочете використовувати децентралізовану біржу (DEX) або NFT-маркетплейс. Ви відкриваєте веб-сайт dApp, радіючи початку взаємодії. Однак виникає проблема — у вашому браузері встановлено кілька розширень гаманця, таких як MetaMask, Coinbase Wallet і Brave Wallet, але dApp не може правильно визначити, який гаманець ви зараз використовуєте, і навіть видає повідомлення про помилку: «Гаманець не виявлено, будь ласка, встановіть розширення гаманця». Ви намагаєтеся оновити сторінку та перезапустити браузер, але проблема не зникає. Цей поширений сценарій підкреслює практичну проблему: механізми ідентифікації та взаємодії гаманців розширень браузера є недостатніми. У міру того, як з'являється все більше розширень гаманців і постачальників послуг, взаємодія з користувачем стає все складнішою та заплутанішою.

Для вирішення проблем взаємодії між гаманцями та додатками, спільнота запропонувала EIP-1193 (Ethereum JavaScript Provider API), універсальний стандарт, який визначає, як додатки можуть спілкуватися з гаманцями через середовище браузера. Основна ідея EIP-1193 полягає в обробці функцій блокчейну, наданих гаманцем, за допомогою стандартизованого інтерфейсу. Наприклад, додаток спілкується з гаманцем через об'єкт window.ethereum, надсилаючи запити або отримуючи події блокчейну.

Хоча EIP-1193 частково вирішує проблеми сумісності між гаманцями та додатками, воно все ще має деякі очевидні обмеження:

  1. Конфлікт багатофункціонального гаманця: Коли у користувачів встановлено декілька гаманців розширень для браузера, EIP-1193 за замовчуванням прив'язує window.ethereum до першого завантаженого гаманця. У результаті інші гаманці можуть бути неправильно визнані, і у деяких випадках dApp може взагалі не працювати.
  2. Відсутність підтримки багатофункціональності: Багато додатків хочуть підтримувати кілька гаманців, але EIP-1193 не надає чіткого механізму для відмінності або вибору між різними постачальниками послуг. Це змушує розробників додатків створювати складну логіку для обробки адаптації гаманця.
  3. Неінтуїтивний користувацький досвід: Для звичайних користувачів важко зрозуміти технічні причини помилок, таких як "Не виявлено гаманця" або "Підключено некоректно", що підвищує поріг використання і викликає роздратування.

Для вирішення цієї проблеми спільнота запропонувала EIP-6963 (Стандарт виявлення гаманців розширень браузера), план вдосконалення для гаманців розширень браузера, спрямований на оптимізацію виявлення гаманців та механізмів взаємодії. Рішення спрямоване на зниження бар'єру для нових постачальників гаманців, підтримку справедливішої конкуренції та покращення користувацького досвіду в мережі Ethereum. Зокрема, воно вводить набір віконних подій та забезпечує двонаправленний протокол зв'язку, що дозволяє бібліотекам Ethereum та скриптам, внесеним розширеннями браузера, взаємодіяти. Це дозволить користувачам вибирати свій улюблений гаманець відповідно до їх потреб, покращуючи загальний досвід.

Аналіз коду

Reverse DNS (RDNS)

Reverse DNS (RDNS) забезпечує стабільність ідентифікаторів постачальника гаманця, запобігаючи конфліктам простору імен. EIP-6963 підкреслює правила, якими повинні керуватися конвенції RDNS, такі як правильні формати доменів та частини домену, керовані постачальником. Також наголошується, що додатки не повинні покладатися на значення RDNS для виявлення функцій, щоб уникнути можливості фальшивих або зловісних стимулів. Інтерфейс ProviderDetail EIP-6963 надає додаткам з метаданими постачальника гаманця, допомагаючи у взаємодії з гаманцем.

EIP6963ProviderDetail

Інтерфейс EIP6963ProviderDetail використовується для оголошення та опису інформації про постачальника гаманців. Шляхом включення властивостей, таких як info (метадані гаманця) та provider (інтерфейс постачальника гаманців), це дозволяє dApps отримувати докладну інформацію про гаманці та взаємодіяти з ними за допомогою стандартизованих інтерфейсів. Цей інтерфейс служить основою для досягнення сумісності та взаємодії між децентралізованими додатками та різними гаманцями.

Механізм подій

Механізм подій забезпечує, що додатки та гаманці можуть взаємодіяти та взаємодіяти один з одним, не будучи залежними від фіксованого порядку виконання. Це дозволяє знайти та взаємодіяти між додатками та гаманцями не залежно від порядку виконання, тим самим уникнувши конфліктів та помилок.

Типи подій

EIP6963AnnounceProviderEvent: Цей захід використовується гаманцями для оголошення своєї присутності. Він містить інформацію про гаманець (EIP6963ProviderDetail) та інтерфейс гаманця (EIP1193Provider). Властивість detail цього події містить заморожені метадані гаманця (за допомогою Object.freeze()) для забезпечення незмінності.

EIP6963RequestProviderEvent: Ця подія використовується dApps для запиту постачальника гаманця. DApp використовує цю подію, щоб сповістити гаманець, що він готовий і запитує взаємодію.

Подія Сумісність

Через невизначений порядок виконання коду додатків та гаманців можуть виникати умови гонки. Механізм подій спеціально розроблений для забезпечення того, що додатки та гаманці можуть правильно обробляти події, коли вони виявляють один одного. Гаманець може спочатку випустити подію оголошення, тоді як додаток може ще не бути готовий слухати її до пізніше. Щоб уникнути помилок, гаманець буде повторно спрацьовувати подію оголошення після початкової, забезпечуючи тим самим, що додаток отримає її вчасно.

Опрацювання подій dApp

dApps повинні прослуховувати подію EIP6963AnnounceProviderEvent і не повинні видаляти прослуховувач подій під час завантаження сторінки. Це забезпечує, що dApp може безперервно прослуховувати та реагувати на подію оголошення гаманця протягом його життєвого циклу. Після обробки події оголошення dApp повинен спровокувати подію EIP6963RequestProviderEvent, щоб запитати подальшої взаємодії з гаманцем.

Виявлення та перемикання гаманця

dApps можуть зберігати кілька об'єктів EIP6963ProviderDetail для різних гаманців, що дозволяє користувачам вибирати між різними гаманцями для взаємодії в межах dApp. Це надає більшу гнучкість користувачам, дозволяючи їм переключатися між гаманцями без перезавантаження сторінки.

Цей дизайн досягає безшовного виявлення та взаємодії між dApps та гаманцями за допомогою EIP6963AnnounceProviderEvent та EIP6963RequestProviderEvent. Використовуючи прослуховувачі подій та тригери подій, dApps та гаманці можуть координувати свої дії незважаючи на не визначений порядок виконання, уникати умов гонки та забезпечувати стабільну поведінку. Крім того, dApps можуть перемикати гаманці на основі уподобань користувача, покращуючи взаємодію з користувачем та сумісність гаманців.

Зворотна сумісність

Цей EIP не потребує заміни window.ethereum, що означає, що він не безпосередньо руйнує існуючі додатки, які не можуть бути оновлені для використання цього методу виявлення гаманця. Однак настійно рекомендується, щоб додатки реалізували цей EIP, щоб забезпечити можливість виявлення кількох постачальників гаманців та вимкнули використання window.ethereum, якщо виявлення не вдасться. Також постачальники гаманців повинні забезпечити сумісність з window.ethereum, щоб забезпечити зворотну сумісність з додатками, які не реалізовують цей EIP. Щоб уникнути попередніх конфліктів простору імен, рекомендується, щоб гаманці впроваджували свій об'єкт постачальника в певний простір імен гаманця, а потім проксіювали об'єкт в простір імен window.ethereum.

Дизайн безпеки

Прототипне забруднення об'єкта постачальника гаманця

Розширення браузера, особливо розширення гаманця, мають здатність модифікувати вміст сторінки та об'єкти постачальника, що є основною функцією їх дизайну. Об'єкти постачальника різних гаманців вважаються дуже довіреними інтерфейсами для передачі даних операцій. Щоб запобігти ненавмисним змінам взаємодії між dApp та гаманцем через сторінку або інші розширення, найкращою практикою є заморожування об'єкта EIP1193Provider за допомогою Object.freeze() перед тим, як гаманець відправить подію eip6963:announceProvider. Це забезпечує неможливість модифікації об'єкта. Однак у деяких випадках сумісність веб-сайтів може вимагати модифікації цього об'єкта. У таких випадках впроваджувачам гаманців потрібно знайти баланс між безпекою та сумісністю з вебом.

Підробка та підміна гаманця

Додатки повинні активно виявляти, чи були підмінені властивості або функції об'єкта постачальника гаманця для запобігання підробці чи зміні інших гаманців. Один зі способів виявлення підробки - перевірка, чи у двох об'єктів EIP6963ProviderInfo властивість uuid є однаковою. Додатки та їх бібліотеки виявлення повинні враховувати інші потенційні методи підробки та приймати додаткові заходи захисту для запобігання такій поведінці, забезпечуючи безпеку користувача.

Запобігання виконанню JavaScript в SVG

Використання зображень SVG може призвести до атак розсилання скриптів (XSS), оскільки SVG може містити код JavaScript. Цей код виконується в контексті сторінки і може потенційно змінювати вміст сторінки або впливати на інші гаманці. Тому при відображенні піктограм додатки децентралізованих програм повинні враховувати, як вирішити такі проблеми безпеки, щоб уникнути використання зловмисних зображень як методів затемнення, приховуючи такі зловмисні зміни сторінки або гаманця.

Запобігання відбиткам пальців гаманця

Однією з переваг механізму паралельного циклу подій, який використовується в цьому дизайні, є те, що і dApp, і гаманець можуть ініціювати процес оголошення провайдера. Таким чином, виконавці гаманців можуть вибрати, чи оголошувати себе на всіх сторінках, чи вживати інших заходів, щоб зменшити ймовірність того, що користувачі отримають відбитки пальців через введений об'єкт window.ethereum. Одна з можливих альтернатив полягає в тому, щоб гаманець відклав впровадження об'єкта provider до тих пір, поки dApp не оголосить подію eip6963:requestProvider. На цьому етапі гаманець може ініціювати потік згоди інтерфейсу користувача, запитуючи користувача, чи готовий він поділитися адресою свого гаманця. Такий підхід дозволяє гаманцю ввімкнути функцію "приватного з'єднання". Однак, застосовуючи цей підхід, гаманець також повинен враховувати, як забезпечити зворотну сумісність із dApps, які не підтримують цей EIP.

Особливості вдосконалень EIP-6963

Спрощення процесу виявлення гаманця

EIP-6963, запропонований у травні 2023 року як новий стандарт Ethereum та затверджений у жовтні того ж року, має на меті вирішити відсутність чітко визначених стандартів, таких як window.ethereum. Стандарт вводить механізм виявлення багатократних постачальників, що дозволяє додаткам надійно виявляти та підключатися до всіх гаманців, встановлених в браузері користувача. Це допомагає подолати обмеження та конфлікти, що виникають при традиційних методах. Порівняно з традиційним підходом window.ethereum, EIP-6963 спрощує процес виявлення гаманців, підтримуючи співіснування декількох розширень гаманців у тому ж браузері. Ця інновація значно покращує сумісність екосистеми Ethereum та поліпшує користувацький досвід.

Чітке визначення та покращений користувацький досвід

EIP-6963 - це не лише функціональне покращення; воно також підвищує впізнаваність гаманців та користувацький досвід, дозволяючи гаманцям впроваджувати інформацію, таку як назва, логотип, UUID та зворотне DNS (RDNS). dApps можуть відображати цю інформацію, що дозволяє користувачам чітко розуміти, з яким гаманцем вони взаємодіють, тим самим уникнути плутанини та помилкових операцій. Це призводить до більш ясного, надійного та користувацькому дружелюбного інтерфейсу. Таким чином, EIP-6963 надає користувачам більш плавний досвід, зменшуючи потенційні суперечності та непотрібні операційні складнощі, в той час як позитивно впливає на загальну екосистему Ethereum.

Потенційні загрози безпеці

Дизайн EIP-6963 вводить потенційні вразливості безпеки. Надаючи список усіх зареєстрованих гаманців, він сприяє взаємодії між dApps та користувачами, але також може бути зловживаний злоякісними додатками. Злоякісні dApps можуть переглядати список гаманців, встановлених користувачами, висновуючи їхні блокчейн-активності або розподіл активів. Якщо механізм реєстрації служби не має жорсткої перевірки, злоякісні гаманці можуть видаїться справжніми постачальниками послуг, обманюючи користувачів, щоб надати доступ і викрасти активи. Тому необхідні додаткові заходи безпеки (такі як згода користувача та перевірка реєстрації).

Складність в користувацькому досвіді

З точки зору користувацького досвіду підтримка кількох гаманців EIP-6963, хоч і є значним покращенням, також може збільшити складність. Наприклад, після встановлення користувачем кількох гаманців додаток може відобразити забагато варіантів, що заплутує користувача, який гаманець обрати. Крім того, деякі гаманці можуть мати назви або логотипи, які неінтуїтивно зрозумілі, що ускладнює ідентифікацію. Для користувачів, які часто міняють гаманці, ця гнучкість може стати тягарем, а не користю.

Опис

EIP-6963 впроваджує підхід, орієнтований на події, для вирішення таких проблем, як співіснування кількох гаманців, конфлікти простору імен і захист конфіденційності користувачів у програмах Web3, значно покращуючи взаємодію з користувачем. Цей стандартизований механізм дозволяє dApps автоматично виявляти та підключати кілька гаманців без ручного перемикання, уникаючи конкуренції та конфліктів між гаманцями, підвищуючи плавність та стабільність з'єднань. EIP-6963 також посилює безпеку, заморожуючи об'єкти постачальника гаманця, щоб запобігти фальсифікації, зменшуючи потенційні ризики безпеки. З точки зору конфіденційності, користувачі можуть вибрати, чи ділитися адресою свого гаманця, запобігаючи витоку особистих даних і дактилоскопії. EIP-6963 підтримує зворотну сумісність зі старими інтерфейсами, забезпечуючи плавний перехід для існуючих систем, одночасно спрощуючи роботу для розробників dApp і покращуючи підтримку кросплатформенності та кількох пристроїв. Загалом EIP-6963 покращує сумісність, безпеку та захист конфіденційності у Web3 та надає розробникам ефективніші інструменти, сприяючи подальшому розвитку екосистеми Web3.

Autor: Rachel
Tradutor: Piper
Revisores: Edward、Piccolo、Elisa
Revisor(es) de Tradução: Ashely、Joyce
* As informações não pretendem ser e não constituem aconselhamento financeiro ou qualquer outra recomendação de qualquer tipo oferecida ou endossada pela Gate.io.
* Este artigo não pode ser reproduzido, transmitido ou copiado sem referência à Gate.io. A contravenção é uma violação da Lei de Direitos Autorais e pode estar sujeita a ação legal.

Аналіз EIP-6963: Крок до покращення сумісності гаманця Ethereum та підвищення зручності користувача

Розширений1/15/2025, 8:36:35 AM
EIP-6963 вводить новий стандарт, спрямований на оптимізацію механізмів виявлення та взаємодії гаманців розширень браузера Ethereum. Він ставить за мету вирішення проблем, таких як конфлікти гаманців, відсутність підтримки багатосервісу та незрозумілі користувацькі враження. Порівняно з існуючим стандартом EIP-1193, EIP-6963 вводить події вікон та двонапрямковий протокол зв'язку, що дозволяє додаткам більш ефективно визнавати та адаптуватися до улюблених гаманців користувачів.

Походження EIP-6963

У блокчейн-екосистемі розширення браузера є додатками гаманців, які існують у вигляді плагінів для браузера. Вони дозволяють користувачам зручно взаємодіяти з обліковими записами блокчейну безпосередньо в межах dApps, таких як відправлення транзакцій, підписання повідомлень або взаємодія з розумними контрактами. Найтиповіший приклад - це MetaMask, який майже став стандартним інструментом для використання додатків екосистеми Ethereum. На відміну від традиційних додатків, розширення браузера вбудовані в середовище браузера. Цей метод спрощує процес взаємодії користувача з блокчейном та усуває технічні бар'єри складних операцій з вузлами або управління особистим ключем. Користувачам потрібно лише встановити розширення, щоб швидко почати використовувати мережу блокчейну.

У цьому контексті термін "постачальник послуг" відноситься до базової технології або інтерфейсу, який підтримує ці функції гаманця. Наприклад, гаманці взаємодіють з вузлами блокчейну через протокол Ethereum JSON-RPC, тоді як постачальник послуг пропонує відповідний інтерфейс RPC для забезпечення можливості гаманцю безпечно обробляти взаємодії на ланцюжку.

Уявіть, що ви хочете використовувати децентралізовану біржу (DEX) або NFT-маркетплейс. Ви відкриваєте веб-сайт dApp, радіючи початку взаємодії. Однак виникає проблема — у вашому браузері встановлено кілька розширень гаманця, таких як MetaMask, Coinbase Wallet і Brave Wallet, але dApp не може правильно визначити, який гаманець ви зараз використовуєте, і навіть видає повідомлення про помилку: «Гаманець не виявлено, будь ласка, встановіть розширення гаманця». Ви намагаєтеся оновити сторінку та перезапустити браузер, але проблема не зникає. Цей поширений сценарій підкреслює практичну проблему: механізми ідентифікації та взаємодії гаманців розширень браузера є недостатніми. У міру того, як з'являється все більше розширень гаманців і постачальників послуг, взаємодія з користувачем стає все складнішою та заплутанішою.

Для вирішення проблем взаємодії між гаманцями та додатками, спільнота запропонувала EIP-1193 (Ethereum JavaScript Provider API), універсальний стандарт, який визначає, як додатки можуть спілкуватися з гаманцями через середовище браузера. Основна ідея EIP-1193 полягає в обробці функцій блокчейну, наданих гаманцем, за допомогою стандартизованого інтерфейсу. Наприклад, додаток спілкується з гаманцем через об'єкт window.ethereum, надсилаючи запити або отримуючи події блокчейну.

Хоча EIP-1193 частково вирішує проблеми сумісності між гаманцями та додатками, воно все ще має деякі очевидні обмеження:

  1. Конфлікт багатофункціонального гаманця: Коли у користувачів встановлено декілька гаманців розширень для браузера, EIP-1193 за замовчуванням прив'язує window.ethereum до першого завантаженого гаманця. У результаті інші гаманці можуть бути неправильно визнані, і у деяких випадках dApp може взагалі не працювати.
  2. Відсутність підтримки багатофункціональності: Багато додатків хочуть підтримувати кілька гаманців, але EIP-1193 не надає чіткого механізму для відмінності або вибору між різними постачальниками послуг. Це змушує розробників додатків створювати складну логіку для обробки адаптації гаманця.
  3. Неінтуїтивний користувацький досвід: Для звичайних користувачів важко зрозуміти технічні причини помилок, таких як "Не виявлено гаманця" або "Підключено некоректно", що підвищує поріг використання і викликає роздратування.

Для вирішення цієї проблеми спільнота запропонувала EIP-6963 (Стандарт виявлення гаманців розширень браузера), план вдосконалення для гаманців розширень браузера, спрямований на оптимізацію виявлення гаманців та механізмів взаємодії. Рішення спрямоване на зниження бар'єру для нових постачальників гаманців, підтримку справедливішої конкуренції та покращення користувацького досвіду в мережі Ethereum. Зокрема, воно вводить набір віконних подій та забезпечує двонаправленний протокол зв'язку, що дозволяє бібліотекам Ethereum та скриптам, внесеним розширеннями браузера, взаємодіяти. Це дозволить користувачам вибирати свій улюблений гаманець відповідно до їх потреб, покращуючи загальний досвід.

Аналіз коду

Reverse DNS (RDNS)

Reverse DNS (RDNS) забезпечує стабільність ідентифікаторів постачальника гаманця, запобігаючи конфліктам простору імен. EIP-6963 підкреслює правила, якими повинні керуватися конвенції RDNS, такі як правильні формати доменів та частини домену, керовані постачальником. Також наголошується, що додатки не повинні покладатися на значення RDNS для виявлення функцій, щоб уникнути можливості фальшивих або зловісних стимулів. Інтерфейс ProviderDetail EIP-6963 надає додаткам з метаданими постачальника гаманця, допомагаючи у взаємодії з гаманцем.

EIP6963ProviderDetail

Інтерфейс EIP6963ProviderDetail використовується для оголошення та опису інформації про постачальника гаманців. Шляхом включення властивостей, таких як info (метадані гаманця) та provider (інтерфейс постачальника гаманців), це дозволяє dApps отримувати докладну інформацію про гаманці та взаємодіяти з ними за допомогою стандартизованих інтерфейсів. Цей інтерфейс служить основою для досягнення сумісності та взаємодії між децентралізованими додатками та різними гаманцями.

Механізм подій

Механізм подій забезпечує, що додатки та гаманці можуть взаємодіяти та взаємодіяти один з одним, не будучи залежними від фіксованого порядку виконання. Це дозволяє знайти та взаємодіяти між додатками та гаманцями не залежно від порядку виконання, тим самим уникнувши конфліктів та помилок.

Типи подій

EIP6963AnnounceProviderEvent: Цей захід використовується гаманцями для оголошення своєї присутності. Він містить інформацію про гаманець (EIP6963ProviderDetail) та інтерфейс гаманця (EIP1193Provider). Властивість detail цього події містить заморожені метадані гаманця (за допомогою Object.freeze()) для забезпечення незмінності.

EIP6963RequestProviderEvent: Ця подія використовується dApps для запиту постачальника гаманця. DApp використовує цю подію, щоб сповістити гаманець, що він готовий і запитує взаємодію.

Подія Сумісність

Через невизначений порядок виконання коду додатків та гаманців можуть виникати умови гонки. Механізм подій спеціально розроблений для забезпечення того, що додатки та гаманці можуть правильно обробляти події, коли вони виявляють один одного. Гаманець може спочатку випустити подію оголошення, тоді як додаток може ще не бути готовий слухати її до пізніше. Щоб уникнути помилок, гаманець буде повторно спрацьовувати подію оголошення після початкової, забезпечуючи тим самим, що додаток отримає її вчасно.

Опрацювання подій dApp

dApps повинні прослуховувати подію EIP6963AnnounceProviderEvent і не повинні видаляти прослуховувач подій під час завантаження сторінки. Це забезпечує, що dApp може безперервно прослуховувати та реагувати на подію оголошення гаманця протягом його життєвого циклу. Після обробки події оголошення dApp повинен спровокувати подію EIP6963RequestProviderEvent, щоб запитати подальшої взаємодії з гаманцем.

Виявлення та перемикання гаманця

dApps можуть зберігати кілька об'єктів EIP6963ProviderDetail для різних гаманців, що дозволяє користувачам вибирати між різними гаманцями для взаємодії в межах dApp. Це надає більшу гнучкість користувачам, дозволяючи їм переключатися між гаманцями без перезавантаження сторінки.

Цей дизайн досягає безшовного виявлення та взаємодії між dApps та гаманцями за допомогою EIP6963AnnounceProviderEvent та EIP6963RequestProviderEvent. Використовуючи прослуховувачі подій та тригери подій, dApps та гаманці можуть координувати свої дії незважаючи на не визначений порядок виконання, уникати умов гонки та забезпечувати стабільну поведінку. Крім того, dApps можуть перемикати гаманці на основі уподобань користувача, покращуючи взаємодію з користувачем та сумісність гаманців.

Зворотна сумісність

Цей EIP не потребує заміни window.ethereum, що означає, що він не безпосередньо руйнує існуючі додатки, які не можуть бути оновлені для використання цього методу виявлення гаманця. Однак настійно рекомендується, щоб додатки реалізували цей EIP, щоб забезпечити можливість виявлення кількох постачальників гаманців та вимкнули використання window.ethereum, якщо виявлення не вдасться. Також постачальники гаманців повинні забезпечити сумісність з window.ethereum, щоб забезпечити зворотну сумісність з додатками, які не реалізовують цей EIP. Щоб уникнути попередніх конфліктів простору імен, рекомендується, щоб гаманці впроваджували свій об'єкт постачальника в певний простір імен гаманця, а потім проксіювали об'єкт в простір імен window.ethereum.

Дизайн безпеки

Прототипне забруднення об'єкта постачальника гаманця

Розширення браузера, особливо розширення гаманця, мають здатність модифікувати вміст сторінки та об'єкти постачальника, що є основною функцією їх дизайну. Об'єкти постачальника різних гаманців вважаються дуже довіреними інтерфейсами для передачі даних операцій. Щоб запобігти ненавмисним змінам взаємодії між dApp та гаманцем через сторінку або інші розширення, найкращою практикою є заморожування об'єкта EIP1193Provider за допомогою Object.freeze() перед тим, як гаманець відправить подію eip6963:announceProvider. Це забезпечує неможливість модифікації об'єкта. Однак у деяких випадках сумісність веб-сайтів може вимагати модифікації цього об'єкта. У таких випадках впроваджувачам гаманців потрібно знайти баланс між безпекою та сумісністю з вебом.

Підробка та підміна гаманця

Додатки повинні активно виявляти, чи були підмінені властивості або функції об'єкта постачальника гаманця для запобігання підробці чи зміні інших гаманців. Один зі способів виявлення підробки - перевірка, чи у двох об'єктів EIP6963ProviderInfo властивість uuid є однаковою. Додатки та їх бібліотеки виявлення повинні враховувати інші потенційні методи підробки та приймати додаткові заходи захисту для запобігання такій поведінці, забезпечуючи безпеку користувача.

Запобігання виконанню JavaScript в SVG

Використання зображень SVG може призвести до атак розсилання скриптів (XSS), оскільки SVG може містити код JavaScript. Цей код виконується в контексті сторінки і може потенційно змінювати вміст сторінки або впливати на інші гаманці. Тому при відображенні піктограм додатки децентралізованих програм повинні враховувати, як вирішити такі проблеми безпеки, щоб уникнути використання зловмисних зображень як методів затемнення, приховуючи такі зловмисні зміни сторінки або гаманця.

Запобігання відбиткам пальців гаманця

Однією з переваг механізму паралельного циклу подій, який використовується в цьому дизайні, є те, що і dApp, і гаманець можуть ініціювати процес оголошення провайдера. Таким чином, виконавці гаманців можуть вибрати, чи оголошувати себе на всіх сторінках, чи вживати інших заходів, щоб зменшити ймовірність того, що користувачі отримають відбитки пальців через введений об'єкт window.ethereum. Одна з можливих альтернатив полягає в тому, щоб гаманець відклав впровадження об'єкта provider до тих пір, поки dApp не оголосить подію eip6963:requestProvider. На цьому етапі гаманець може ініціювати потік згоди інтерфейсу користувача, запитуючи користувача, чи готовий він поділитися адресою свого гаманця. Такий підхід дозволяє гаманцю ввімкнути функцію "приватного з'єднання". Однак, застосовуючи цей підхід, гаманець також повинен враховувати, як забезпечити зворотну сумісність із dApps, які не підтримують цей EIP.

Особливості вдосконалень EIP-6963

Спрощення процесу виявлення гаманця

EIP-6963, запропонований у травні 2023 року як новий стандарт Ethereum та затверджений у жовтні того ж року, має на меті вирішити відсутність чітко визначених стандартів, таких як window.ethereum. Стандарт вводить механізм виявлення багатократних постачальників, що дозволяє додаткам надійно виявляти та підключатися до всіх гаманців, встановлених в браузері користувача. Це допомагає подолати обмеження та конфлікти, що виникають при традиційних методах. Порівняно з традиційним підходом window.ethereum, EIP-6963 спрощує процес виявлення гаманців, підтримуючи співіснування декількох розширень гаманців у тому ж браузері. Ця інновація значно покращує сумісність екосистеми Ethereum та поліпшує користувацький досвід.

Чітке визначення та покращений користувацький досвід

EIP-6963 - це не лише функціональне покращення; воно також підвищує впізнаваність гаманців та користувацький досвід, дозволяючи гаманцям впроваджувати інформацію, таку як назва, логотип, UUID та зворотне DNS (RDNS). dApps можуть відображати цю інформацію, що дозволяє користувачам чітко розуміти, з яким гаманцем вони взаємодіють, тим самим уникнути плутанини та помилкових операцій. Це призводить до більш ясного, надійного та користувацькому дружелюбного інтерфейсу. Таким чином, EIP-6963 надає користувачам більш плавний досвід, зменшуючи потенційні суперечності та непотрібні операційні складнощі, в той час як позитивно впливає на загальну екосистему Ethereum.

Потенційні загрози безпеці

Дизайн EIP-6963 вводить потенційні вразливості безпеки. Надаючи список усіх зареєстрованих гаманців, він сприяє взаємодії між dApps та користувачами, але також може бути зловживаний злоякісними додатками. Злоякісні dApps можуть переглядати список гаманців, встановлених користувачами, висновуючи їхні блокчейн-активності або розподіл активів. Якщо механізм реєстрації служби не має жорсткої перевірки, злоякісні гаманці можуть видаїться справжніми постачальниками послуг, обманюючи користувачів, щоб надати доступ і викрасти активи. Тому необхідні додаткові заходи безпеки (такі як згода користувача та перевірка реєстрації).

Складність в користувацькому досвіді

З точки зору користувацького досвіду підтримка кількох гаманців EIP-6963, хоч і є значним покращенням, також може збільшити складність. Наприклад, після встановлення користувачем кількох гаманців додаток може відобразити забагато варіантів, що заплутує користувача, який гаманець обрати. Крім того, деякі гаманці можуть мати назви або логотипи, які неінтуїтивно зрозумілі, що ускладнює ідентифікацію. Для користувачів, які часто міняють гаманці, ця гнучкість може стати тягарем, а не користю.

Опис

EIP-6963 впроваджує підхід, орієнтований на події, для вирішення таких проблем, як співіснування кількох гаманців, конфлікти простору імен і захист конфіденційності користувачів у програмах Web3, значно покращуючи взаємодію з користувачем. Цей стандартизований механізм дозволяє dApps автоматично виявляти та підключати кілька гаманців без ручного перемикання, уникаючи конкуренції та конфліктів між гаманцями, підвищуючи плавність та стабільність з'єднань. EIP-6963 також посилює безпеку, заморожуючи об'єкти постачальника гаманця, щоб запобігти фальсифікації, зменшуючи потенційні ризики безпеки. З точки зору конфіденційності, користувачі можуть вибрати, чи ділитися адресою свого гаманця, запобігаючи витоку особистих даних і дактилоскопії. EIP-6963 підтримує зворотну сумісність зі старими інтерфейсами, забезпечуючи плавний перехід для існуючих систем, одночасно спрощуючи роботу для розробників dApp і покращуючи підтримку кросплатформенності та кількох пристроїв. Загалом EIP-6963 покращує сумісність, безпеку та захист конфіденційності у Web3 та надає розробникам ефективніші інструменти, сприяючи подальшому розвитку екосистеми Web3.

Autor: Rachel
Tradutor: Piper
Revisores: Edward、Piccolo、Elisa
Revisor(es) de Tradução: Ashely、Joyce
* As informações não pretendem ser e não constituem aconselhamento financeiro ou qualquer outra recomendação de qualquer tipo oferecida ou endossada pela Gate.io.
* Este artigo não pode ser reproduzido, transmitido ou copiado sem referência à Gate.io. A contravenção é uma violação da Lei de Direitos Autorais e pode estar sujeita a ação legal.
Comece agora
Inscreva-se e ganhe um cupom de
$100
!