Перейти к основному содержимому

Смарт-аккаунты и валидаторы

Смарт-аккаунты Pali — это контрактные EVM-аккаунты, которыми могут управлять модули. Passkey — один из поддерживаемых способов управления смарт-аккаунтом. Вместо подписания каждого действия обычным приватным ключом EOA пользователь может одобрять действия через интерфейс passkey браузера или операционной системы.

В основе WebAuthn passkey лежат подписи P-256. Passkey-валидатор Pali устроен так, чтобы смарт-аккаунт мог проверять эти доказательства P-256. Поэтому биометрическое подтверждение или passkey платформы может авторизовать действие в сети, не раскрывая приватный ключ passkey кошельку Pali или dapp.

Зачем использовать смарт-аккаунт?​

  • Модульные способы одобрения повседневных действий.
  • Управление через ECDSA-валидатор, контролируемый кошельком, если аккаунтом должен владеть обычный ключ кошелька.
  • Политики совместного управления через составные валидаторы.
  • Пакетное выполнение с одним одобрением пользователя.
  • Восстановление через guardians после временной блокировки.
  • Детерминированное создание аккаунтов, чтобы Pali мог реконструировать их записи.

Passkey, ECDSA и совместно управляемые аккаунты​

Экран настроек Pali для создания смарт-аккаунта
Пользователи могут создавать модульные смарт-аккаунты из настроек или по запросу dapp, а затем выбирать валидатор, который контролирует одобрения.

Pali поддерживает три вида валидаторов:

  • Passkey: браузер или операционная система запрашивает подтверждение WebAuthn.
  • ECDSA: настроенные EVM-адреса владельцев одобряют действия аккаунта.
  • Составной: дочерние валидаторы, например passkey или ECDSA, объединены с заданным порогом.

Валидаторы отвечают на вопрос «кто может одобрять действия этого аккаунта?». Полезно то, что ответ может измениться без смены аккаунта:

  • Любой из моих способов входа (1-of-N): одобряйте удобным passkey или ключом.
  • Несколько из нас вместе (t-of-N): согласиться должен кворум людей или устройств; подходит для общих средств.
  • Все мы вместе (N-of-N): одобрить должен каждый настроенный способ входа; для наиболее чувствительных аккаунтов.

Политики могут содержать другие политики, поэтому команда может задать, например, «ключ руководителя плюс любые два passkey сотрудников». При изменении политики адрес, балансы и история остаются прежними. Поскольку подписание модульное, в будущем на том же аккаунте можно использовать новые типы подписей, включая постквантовые.

Guardians намеренно не входят в этот список. Guardian не может одобрить транзакцию; его единственное полномочие — запустить медленное и видимое восстановление при потере доступа. Это разделение защищает от потери доступа, не предоставляя никому повседневного контроля.

Pali может использовать общий профиль passkey кошелька или создать отдельные учётные данные passkey для аккаунта. Общие passkey удобны пользователям, которым нужен один passkey под контролем кошелька. Отдельные passkey помогают изолировать учётные данные для разных сервисов или политик.

Развёртывание​

Пока Pali готовит создание аккаунта, смарт-аккаунт может существовать в виде контрфактического адреса. Pali выводит адрес из детерминированных входных данных фабрики, развёртывает аккаунт через фабрику Pali и сохраняет долговечные метаданные аккаунта локально.

Для детерминированного развёртывания аккаунт начинает работу с начальным валидатором под контролем кошелька. Если пользователь или dapp выбрал passkey или другой валидатор, Pali устанавливает его и удаляет начальный валидатор через выполнение смарт-аккаунта.

Поддержка сетей​

Смарт-аккаунтам нужны фабрика Pali и контракты модулей по адресам, которые Pali использует для активной сети. В этой сборке Pali тестовая сеть zkTanenbaum настроена для создания смарт-аккаунтов. Поддержка основной сети zkSYS использует ту же модель после настройки адресов основной фабрики и модулей.

Другие совместимые EVM-сети могут использовать те же контракты. Если активная сеть поддерживает канонический механизм развёртывания CREATE2, Pali может развернуть недостающую инфраструктуру смарт-аккаунтов из кошелька: откройте настройки, перейдите в расширенные настройки и используйте кнопку развёртывания в разделе Настройка смарт-аккаунта. Passkey-валидаторам нужна поддержка проверки P-256 WebAuthn, которую многие современные EVM-среды предоставляют через прекомпилированный контракт P-256/passkey.

Ожидающая завершения настройка​

При медленной настройке доступно действие Проверить статус. Выход со страницы или переключение сети не отменяет уже отправленную транзакцию. Вернитесь в исходную сеть и проверьте статус её настройки, прежде чем повторять развёртывание. Истечение времени ожидания или отсутствие ответа не доказывает, что ничего не было развёрнуто.

Восстановление​

Экран настроек политики смарт-аккаунта Pali
Экран политики смарт-аккаунта показывает установленные модули, сведения об активном валидаторе, восстановление через guardians и управление модулями.

Если локальное состояние кошелька удалено или Pali установлен на новом устройстве, детерминированные смарт-аккаунты Pali можно реконструировать из метаданных кошелька и конфигурации сети. Аккаунтам с passkey-валидаторами по-прежнему нужен доступ к соответствующим учётным данным passkey для одобрения действий.

Одни учётные данные passkey могут управлять несколькими смарт-аккаунтами. Pali отделяет профиль учётных данных passkey от метаданных каждого развёрнутого смарт-аккаунта.

Восстановление через guardians​

Для восстановления смарт-аккаунтов Pali использует guardians под самостоятельным контролем пользователя. Guardian — это EVM-адрес, которым пользователь управляет отдельно от активного валидатора; обычно это резервный EVM-кошелёк, импортированный аккаунт или аппаратный кошелёк. Однако в сети guardian может быть любым аккаунтом, способным доказать подпись, включая контрактный аккаунт. Пока аккаунт работает, пользователь может добавлять и удалять guardians, а также менять период ожидания восстановления на экране политики.

Модуль восстановления проверяет одобрения guardians стандартными способами проверки подписей: обычной ECDSA-подписью для обычных адресов или проверкой контрактной подписи ERC-1271, если адрес guardian сам является контрактом. Поэтому guardian может быть другим смарт-аккаунтом, в том числе со своей политикой подписания на основе составного, пользовательского или будущего постквантового валидатора. Путь восстановления наследует схему подписи, которую применяет аккаунт guardian, поэтому безопасность восстановления не ограничена классическими ECDSA-ключами.

Текущее ограничение: экраны guardians в Pali собирают одобрения от guardians на основе ключей — аккаунтов кошелька, импортированных или аппаратных аккаунтов. Контрактные аккаунты guardians полностью поддерживаются развёрнутым модулем восстановления, однако создание их одобрения ERC-1271 пока не входит в пошаговый интерфейс Pali. Кроме того, контракт guardian уже должен быть развёрнут в сети, чтобы отвечать на проверки подписи. Эта гибкость уже заложена в модель аккаунта, поэтому такие типы guardians можно добавить в кошелёк без повторного развёртывания или изменения самого аккаунта.

Восстановление через guardians не мгновенно. При его запуске создаётся новая цель восстановления, настроенному guardian предлагается подписать намерение восстановления и отправляется запрос с временной блокировкой. После окончания периода ожидания любой может завершить транзакцию восстановления. Затем пользователь сможет управлять аккаунтом с помощью заменяющего валидатора.

Подпись guardian связана с сетью, адресом аккаунта, модулем восстановления, солью восстановления, режимом выполнения и данными вызова восстановления. Pali использует новую соль для каждой попытки восстановления, а модуль допускает только одно активное восстановление на аккаунт.

Техническое примечание: executor восстановления через guardians хранит для каждого аккаунта набор guardians, порог, задержку, срок действия и ожидающее восстановление. Сейчас Pali предлагает простые сценарии guardians для понятного интерфейса, а модуль поддерживает пороговые политики, например 1-of-N или M-of-N.

Аккаунты, созданные через dapp​

Dapp могут запросить смарт-аккаунт через wallet_prepareSmartAccount:

{
"label": "Trading desk",
"authenticator": {
"id": "p256-webauthn"
}
}

Dapp также могут запросить ECDSA-валидатор:

{
"label": "Trading desk",
"authenticator": {
"id": "ecdsa",
"config": {
"owners": ["0x..."],
"threshold": 1
}
}
}

Если запрошенный ECDSA-владелец не является локальным аккаунтом Pali, Pali показывает предупреждение и требует явного подтверждения перед продолжением.

Ссылки на стандарты​

Смарт-аккаунты Pali основаны на открытых стандартах смарт-аккаунтов: