Solana в SSP

·7 мин. чтения·Автор: SSP Editorial Team
Обложка SSP Academy: Solana в SSP

Solana в SSP

Solana быстрая, дешёвая и всё чаще именно та сеть, где стейблкоины действительно движутся. Она же — сеть, в которой мультиподпись при самостоятельном хранении исторически было труднее всего сделать правильно: не потому что криптография сложна, а потому что модель аккаунтов Solana превращает «адрес, которым управляют несколько сторон» в куда более странный объект, чем в Bitcoin.

SSP хранит SOL и токены SPL в той же мультиподписи 2-из-2, которой вы уже пользуетесь для Bitcoin и Ethereum: один ключ в расширении браузера, второй — на телефоне, оба обязательны для каждой транзакции. Эта статья объясняет, что это означает именно на Solana: как выводится адрес, кто платит комиссии, что проверяют ваши устройства и какие части действительно отличаются от привычных вам сетей.

Экран сети Solana в SSP Wallet, тёмная тема

Что такое Solana с позиции самостоятельного хранения

Solana — это единая глобальная машина состояний, которая обрабатывает транзакции параллельно, а не по одной. Для того, кто держит собственные ключи, три свойства важнее заголовков о пропускной способности.

Во-первых, всё является аккаунтом. Ваш баланс, mint токена, код программы и данные, которые эта программа хранит, — всё живёт в аккаунтах с адресом и владельцем. Во-вторых, аккаунты стоят ренты: чтобы существовать в сети, аккаунт обязан держать минимальный баланс SOL, пропорциональный своему размеру. Этот депозит возвращается при закрытии аккаунта, но это настоящие деньги, которые должны откуда-то взяться. В-третьих, транзакции быстро истекают — обычная транзакция Solana ссылается на свежий blockhash и примерно через минуту становится недействительной.

Каждое из этих свойств прямо влияет на подпись двумя устройствами, и каждое в SSP решается явно, а не заминается. Собственная документация Solana — первоисточник по модели аккаунтов и ренты, если вам нужна версия без пересказа.

Адрес без создателя

В большинстве конструкций мультиподписи на Solana кошелёк нужно создать. Кто-то отправляет транзакцию, которая его учреждает, и получившийся адрес зависит от входных данных, выбранных в ходе этой транзакции, — обычно от случайного одноразового ключа. Практический итог: адреса не существует, пока создатель не вызовет его к жизни, и до этого он не может принимать средства.

Ончейн-программа SSP работает иначе. Адрес вашего хранилища — это отпечаток отсортированного набора участников и порога одобрения, и больше ничего. Любой, кто знает участников и порог, может вычислить адрес офлайн, до того как что-либо коснётся сети. Регистрация не требует разрешения: программа лишь проверяет, что предъявленные вами участники действительно хешируются в заявленный адрес, поэтому регистрация ничего не меняет в том, кто может тратить.

Именно поэтому здесь нет создателя, которому нужно доверять, нет привилегированного регистратора и нет административного ключа. Расходование управляется исключительно проверкой порога внутри программы. Если нужна полная картина: почему мультиподписные адреса Solana — это сложно разбирает исходную проблему, самоинициирующаяся мультиподпись Solana — саму программу, а SSP против Squads V4 — это сравнение по пунктам.

Если вам в новинку сама модель 2-из-2, начните с материала что такое мультиподпись 2-из-2.

Почему двум устройствам понадобился долговременный nonce

Вот в чём проблема, которую создаёт истечение. Ваше расширение собирает и подписывает транзакцию. Затем её должен одобрить телефон. Если вы вышли, пообедали и вернулись, blockhash, на который ссылалась транзакция, давно мёртв, и всё приходится собирать заново.

SSP решает это аккаунтом долговременного nonce, выведенным из вашего мультиподписного адреса. Вместо свежего blockhash транзакция ссылается на nonce, который продвигается только тогда, когда транзакция действительно попадает в сеть. Окно подписи перестаёт быть секундомером. Вы можете одобрить на телефоне спустя минуты или часы, и транзакция всё ещё будет действительна, — но использовать её по-прежнему можно лишь однажды, потому что исполнение продвигает nonce.

Аккаунт nonce создаётся при первой отправке и является одним из двух аккаунтов, чья рента входит в стоимость этой первой отправки. Долговременные nonce и подпись двумя устройствами разбирает тему глубже.

Кто платит комиссии

В Solana аккаунт, оплачивающий комиссию транзакции, называется fee payer, и он обязан подписать её. Для только что появившейся мультиподписи это создаёт неудобную проблему запуска: хранилищу нужен SOL, чтобы оплатить транзакцию, которая переместила бы его SOL, а аккаунтов, требующих ренты, ещё не существует.

SSP использует paymaster. Relay SSP управляет аккаунтом, который подписывается как fee payer, авансирует сетевую комиссию и любую ренту и получает возмещение от вашего хранилища внутри той же транзакции. Нет ни отдельного шага, ни выданного кредита, ни способа провести возмещение без ваших двух подписей — оно едет внутри предложения, которое одобряют ваши устройства.

Два следствия стоит усвоить:

  • Не нужно заранее пополнять адрес SOL ради комиссии. Получайте SOL, отправляйте SOL. Аккаунты создаются при первой отправке.
  • Первая отправка стоит дороже последующих. Она оплачивает постоянную ренту мультиподписного аккаунта и аккаунта nonce; последующие отправки платят немногим больше сетевой комиссии. Точные цифры — в статье этой серии о комиссиях.

Если понятие paymaster вам незнакомо, спонсирование газа и paymaster, объяснение описывает общий приём — SSP уже применяет ту же идею в сетях EVM, о чём рассказано в материале Ethereum в SSP.

Что можно хранить

Solana в SSP поддерживает нативный SOL и токены SPL. Из коробки это официальный mint USDC от Circle и FLUX на Solana, а другие токены SPL, найденные в вашем хранилище, SSP распознаёт дополнительно.

Различие, на котором многие спотыкаются: в Solana вы не храните токен на своём основном адресе. Каждый токен живёт в собственном ассоциированном токен-аккаунте, принадлежащем вашему адресу, по одному на mint. Этот аккаунт тоже требует ренты, и именно поэтому отправка токена SPL тому, кто никогда его не держал, стоит чуть дороже: вы платите за то, чтобы его токен-аккаунт вообще появился. SSP создаёт его автоматически в рамках перевода, вместо того чтобы падать с ошибкой, а статья этой серии о токен-аккаунтах разбирает детали.

Составление отправки Solana в SSP Wallet, тёмная тема

Что проверяют ваши устройства перед подписью

Транзакции Solana непрозрачны так, как транзакции Bitcoin непрозрачными не бывают. То, что делает транзакция, живёт внутри данных инструкций, и кошелёк обязан их декодировать, прежде чем сможет сказать вам о них хоть что-то правдивое. Кошелёк, который просто показывает присланное сервером, просит вас довериться серверу.

SSP декодирует транзакцию на ваших собственных устройствах, байт за байтом, с помощью открытой библиотеки @runonflux/solana-multisig. Получатель, сумма и mint токена читаются из сырых байтов и сверяются с тем, что показано на экране. Если они расходятся, подпись жёстко блокируется: расхождение в этой точке указывает на активную атаку, а не на сбой отображения. В переводах SPL число десятичных знаков токена встроено в саму подписываемую инструкцию, поэтому mint, заявляющий другие десятичные знаки, приводит к отказу ончейн-программы.

Тот же принцип управляет и программой: сборки для mainnet воспроизводимы из опубликованного исходного кода, поэтому байткод, развёрнутый по адресу SSPWVu7dtTDkZYmDx73StqV46PioSmdiNE7igpjHK1r, можно независимо пересобрать и сверить. Утверждение о безопасности стоит ровно столько, насколько вы способны проверить его сами.

С чего начать

Обновите SSP Wallet и SSP Key до последней версии и включите Solana в переключателе сетей. С пакетной синхронизацией из v2 её можно включить вместе с любыми другими сетями одним одобрением на телефоне. Если SSP у вас ещё не настроен вовсе, начните с материала настройка вашего первого кошелька SSP.

Дальше Solana ведёт себя как любая другая сеть в SSP: она входит в общую сумму вашего портфеля, отправки идут по тому же пути «составить → проверить → одобрить» с полным адресом получателя на экране, и каждую транзакцию совместно подписывают оба ваших устройства. Анонс запуска в mainnet рассказывает, что и когда вышло.

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

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