< Назад к новостям

Ethereum в SSP — multisig Schnorr на ERC-4337

·4 мин. чтения·Автор: SSP Editorial Team
Знак RELEASE с иконками ключа, молнии, щита и процессора над заголовком Ethereum + Schnorr Multisig — Account Abstraction ERC-4337

18 июля 2024 года SSP Wallet v1.6.0 добавил Ethereum — и SSP стал первым кошельком, выпустившим настоящие аккаунты Schnorr-multisig на Ethereum с использованием Account Abstraction ERC-4337. Другие кошельки называют себя «Ethereum multisig», складывая один внешний аккаунт за интерфейсом. SSP выбрал более сложный путь, чтобы та же модель 2-из-2, которая охраняет Bitcoin внутри SSP, теперь охраняла и ETH.

TL;DR

  • Ethereum (ETH) присоединяется к SSP как полноценная сеть.
  • Аккаунты — это смарт-контракты по ERC-4337, а не EOA, поэтому правило 2-из-2 живёт в сети.
  • Две подписи Schnorr агрегируются в одну до выхода в Ethereum, удерживая газ предсказуемым.
  • Библиотека подписания открыта в npm: @runonflux/aa-schnorr-multisig-sdk.
  • Поддержка токенов ERC-20 — следующий шаг; этот релиз приносит сам ETH и фундамент AA под ним.

Что приземлилось: поддержка Ethereum по сложному пути

Большинство кошельков «поддерживают Ethereum», создавая внешний аккаунт (EOA), — один приватный ключ, одна подпись, одна точка отказа. Добавление multisig поверх обычно означает программную политику на стороне кошелька, а не правило, навязанное сетью. Сеть по-прежнему видит один ключ, и тот, кто им владеет, может перемещать средства в одиночку.

SSP отказался от этого срезания углов. Весь смысл модели 2-из-2 SSP в том, что ни SSP Wallet на десктопе, ни SSP Key на телефоне не могут самостоятельно перемещать средства — совместное подписание является свойством аккаунта, а не соглашением интерфейса. Чтобы сохранить это в Ethereum, EOA никогда не было бы достаточно. Аккаунт Ethereum должен был стать смарт-контрактом, который по своей конструкции требует двух подписей. Именно это и было выпущено в v1.6.0.

Что Schnorr multisig означает здесь

UTXO-скрипты Bitcoin способны выразить 2-из-2 нативно — именно так существующие сети SSP навязывают совместное подписание. Модель аккаунтов Ethereum этого не умеет — без посторонней помощи. SSP закрывает этот разрыв подписями Schnorr.

Schnorr — это схема подписи с одним свойством, важным здесь: два подписанта могут каждый выдать частичную подпись, и эти частичные подписи можно объединить в одну валидную, которая проверяется относительно единого агрегированного открытого ключа. Для любого читающего сеть это выглядит как одна подпись от одного подписанта. Для SSP двум устройствам пришлось согласиться. Криптографическая глубина — агрегация ключей, координация nonce-ов, раунды в стиле MuSig2 — раскрыта в нашей статье академии о подписях Schnorr и агрегации multisig, если нужно. Резюме для пользователя короткое: тот же рукопожатие SSP Wallet + SSP Key, которым вы уже пользуетесь, теперь выражено как одна агрегированная подпись Schnorr в Ethereum.

Account Abstraction ERC-4337

Account Abstraction (AA) — это зонтичный термин, позволяющий аккаунтам Ethereum вести себя как программируемые кошельки, а не как голые пары ключей. В стандартной модели Ethereum есть два типа аккаунтов: EOA, управляемые единственным приватным ключом, и контракты, которые сами не могут инициировать транзакции. AA снимает это различие на уровне приложения.

ERC-4337 — это стандарт Ethereum, который доставляет AA, не меняя сам Ethereum. Вместо хард-форка он определяет объект транзакции более высокого уровня под названием UserOperation, бандлер, превращающий их в обычные транзакции Ethereum, и контракт EntryPoint, который их валидирует. Ваш «аккаунт» — это смарт-контракт, который сам решает, как аутентифицировать траты. Для SSP это правило аутентификации звучит так: агрегированная подпись Schnorr от SSP Wallet и SSP Key — или ничего. Никакого хард-форка L1, никаких особых операторов узлов, никаких допущений доверия за пределами того, что уже развёрнуто в основной сети.

Открытая библиотека

Слой подписания Schnorr-multisig не зарыт внутри приложения SSP. Мы выделили его в переиспользуемую библиотеку и выпустили под той же открытой позицией, что и остальной SSP. TypeScript SDK живёт на npm как @runonflux/aa-schnorr-multisig-sdk; сопровождающие его Solidity-контракты Account Abstraction живут в репозитории @runonflux/account-abstraction на GitHub.

Если вы разработчик кошельков, исследователь безопасности или просто любопытствуете, как Schnorr-multisig AA на самом деле собирается на Ethereum, оба проекта доступны для чтения, форка и контрибуций. Пулл-реквесты и issue приветствуются — мы предпочитаем закалять одну общую библиотеку под большим количеством глаз, чем позволять каждому кошельку, которому нужен этот примитив, изобретать его заново.

Что это открывает

Конкретно для v1.6.0 предлагаемая сеть — сам Ethereum: балансы ETH, переводы ETH, тот же переключатель в панели Chains, которым вы пользуетесь для любой другой монеты, теперь с AA-аккаунтом за ним. Сантехника, которую укладывает этот релиз, — самая тяжёлая часть. Как только аккаунты Schnorr AA 2-из-2 существуют и работают, любой Ethereum-подобный баланс становится досягаемым.

Поддержка токенов ERC-20 — естественный следующий шаг, и она уже в дорожной карте; мы расскажем о ней отдельным постом в newsroom, когда она выйдет. На сегодня заголовок таков: Ethereum в SSP, в SSP правильным образом, а его криптографические и смарт-контрактные основы открыты в npm и на GitHub, чтобы любой мог их проверить.

Источник: заметки о релизе SSP Wallet v1.6.0.

Поделиться статьёй

Похожие статьи