UX Web3 и абстракция аккаунтов

Web3-UX печально известен сложностью. Разбираем, почему так, и какие приёмы (включая абстракцию аккаунтов) его упрощают.

Абстракция аккаунтов (Account Abstraction, ERC-4337) — подход, при котором аккаунт пользователя — это смарт-контракт, а не просто ключ; он позволяет оплату газа за пользователя, вход по email/passkey и пакетные операции.

Главная причина, по которой обычные люди не пользуются dApp, — ужасный UX. Установи расширение, запиши seed-фразу, купи токен на газ, переключи сеть, подтверди две транзакции… Фронтендер не может переписать блокчейн, но может сильно сгладить эти острые углы.

Почему Web3-UX сложный

  • Газ. Чтобы что-то сделать, нужен нативный токен сети. Новичок без ETH не может даже начать.
  • Seed-фраза. Потерял — потерял всё; нет «восстановить пароль».
  • Подтверждения. Каждое действие — окно кошелька с непонятным текстом.
  • Сети. Пользователь должен знать, в какой он сети, и уметь переключаться.
  • Необратимость. Ошибся адресом — деньги ушли навсегда.

Приёмы фронта, упрощающие UX

  1. Показывать данные до подключения. Не заставляйте подключать кошелёк, чтобы просто посмотреть.
  2. Понятные статусы транзакции. «Подтвердите в кошельке» → «Ждём блок» → «Готово», со ссылкой на эксплорер.
  3. Объяснять каждое действие. Рядом с подписью — человеческое описание.
  4. Автопереключение сети. Заметили не ту сеть — предложите переключиться одной кнопкой.
  5. Проверка адреса получателя. Валидация, ENS-резолвинг (vitalik.eth вместо 0x…), предупреждение о незнакомом адресе.

Абстракция аккаунтов — следующий уровень

ERC-4337 меняет правила. Если аккаунт — это смарт-контракт, становятся возможны вещи, которые в Web2 считались данностью:

  • Спонсирование газа (paymaster). dApp платит газ за пользователя — тот может действовать без токена на счету.
  • Вход без seed-фразы. По passkey/биометрии или социальному восстановлению ключа.
  • Пакетные операции. approve + transfer в одной подписи вместо двух — конец «почему два раза подтверждать».
  • Лимиты и правила. «Не больше 100$ в день без доп. подтверждения».

Для фронтендера это значит: часть боли постепенно уходит на уровень кошелька/инфраструктуры, и UX dApp приближается к привычному вебу. Многие новые кошельки (smart wallets) уже это используют.

Как работает под капотом

В ERC-4337 пользователь подписывает не транзакцию, а «UserOperation» — намерение. Специальные узлы (bundlers) собирают такие намерения и отправляют их в сеть, а контракт-аккаунт проверяет подпись и исполняет действие. Paymaster — отдельный контракт, который соглашается оплатить газ. Поэтому «вход по email» и «бесплатный газ» — не магия, а смарт-контракты поверх обычной сети; фронт работает с ними через SDK кошелька, часто скрывая детали от пользователя полностью.

Частые ошибки

  • Заставлять подключать кошелёк ради просмотра. Лишний барьер на входе.
  • Молчаливые статусы транзакций. Пользователь не понимает, что происходит, и нервничает.
  • Показывать сырые 0x-адреса без ENS/проверок. Растёт шанс ошибки и фишинга.

Итоги

  • Web3-UX сложен из-за газа, seed-фраз, подтверждений и необратимости.
  • Фронт сглаживает это статусами, объяснениями, ENS и автопереключением сети.
  • Абстракция аккаунтов (ERC-4337) убирает газ и seed-фразы, приближая UX к привычному.
Проверьте себя
1. Что позволяет абстракция аккаунтов (ERC-4337)?
AУскорить блоки
BСпонсировать газ за пользователя и входить без seed-фразы
CОтменять транзакции в mainnet
DХранить ключи на сервере dApp
2. Какой приём фронта снижает порог входа в dApp?
AТребовать кошелёк для любого просмотра
BПоказывать данные до подключения кошелька
CСкрывать статусы транзакций
DПоказывать только сырые 0x-адреса
3. Зачем резолвить ENS-имена (vitalik.eth) вместо показа 0x-адреса?
AЭто дешевле по газу
BПонятнее и снижает риск ошибки/фишинга при выборе получателя
CENS обязателен по стандарту
DЧтобы ускорить блок