НОВОЕ: Helius приобретает Light Protocol
что такое смарт-кошельки Solana
Блог/Разработка

Что такое смарт-кошельки Solana? Сравнение и руководство по внедрению

Развитие CrossmintDwight Torculas в XDwight Torculas в LinkedIn
Чтение: 8 мин

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

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

В отличие от неисполняемых аккаунтов (аккаунтов данных) и традиционных встроенных кошельков, смарт-кошельки программируемы. Это открывает возможности для функций нового поколения: спонсирования комиссии, использования нескольких подписантов для одного кошелька, установки лимитов расходов и многого другого.

В этой статье вы узнаете о ключевых различиях между встроенными смарт-кошельками в Solana и другими решениями для кошельков.

Вы также узнаете, как смарт-кошельки работают в Solana и как внедрить встроенные смарт-кошельки в свое приложение.

Что такое смарт-кошелек?

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

Какие преимущества дают смарт-кошельки?

Смарт-кошельки устраняют необходимость в сид-фразах и связанный с их потерей риск. Вместо этого пользователи могут назначить один или несколько «подписантов» или ключей для управления кошельком.

Такая гибкость позволяет применять более удобные способы управления ключами, например биометрию (Face ID, Touch ID или ключи доступа), а также продвинутые схемы безопасности (например, мультиподпись) и средства управления корпоративного уровня (например, серверный ключ администратора).

Смарт-кошельки позволяют проводить транзакции без комиссии для пользователя: разработчики могут оплачивать комиссии в SOL или других SPL-токенах, например USDC, и полностью скрывать их от конечного пользователя. В результате взаимодействие становится привычным и похожим на web2.

Это позволяет создавать приложения без запросов на подтверждение транзакций, без сид-фраз или закрытых ключей, которые можно потерять, и с программируемой безопасностью, обеспечиваемой программами (смарт-контрактами).

Встроенные смарт-кошельки, встроенные кошельки и неисполняемые аккаунты

Встроенные смарт-кошелькиВстроенные кошелькиНеисполняемые аккаунты
РеализацияСмарт-контракт с настраиваемой логикойАккаунт без смарт-контракта, встроенный в приложениеОтдельное приложение или расширение браузера
Управление аккаунтомГибкое: пользователи могут назначить одного или нескольких подписантов — от EOA, таких как Phantom, до ключей доступа и кошельков с входом через социальные сети — и при необходимости задать программные правилаПара ключей, защищенная входом через социальную сеть (обычно в TEE или MPC-кластере)Напрямую управляется парой ключей пользователя
Модель храненияГибкая. Можно настроить самостоятельное хранение пользователем, кастодиальное хранение разработчиком или гибридную модель, объединяющую оба режимаОбычно некастодиальная, но некоторые способы восстановления могут сделать ее кастодиальнойСамостоятельное хранение конечным пользователем
Управление ключамиНесколько методов авторизации (MPC, социальное восстановление и т. д.)Обычно осуществляется приложениемПользователь самостоятельно управляет сид-фразой или закрытым ключом
Авторизация транзакцийНастраиваемая логика проверки (мультиподпись, временные блокировки, лимиты)Приложение подписывает транзакции встроенным закрытым ключомПользователь явно подтверждает каждую транзакцию
Оплата комиссииПоддерживает абстракцию и спонсирование комиссии, позволяя оплачивать ее другими SPL-токенами, например USDC или USDTПользователь оплачивает все комиссии за транзакции. В каждом приложении требуется сервис покупки криптовалютыПользователь оплачивает все комиссии за транзакции
Модель безопасностиБезопасность обеспечивается открытым кодом смарт-контракта с дополнительными программируемыми ограничениямиБезопасность зависит от закрытого исходного кода поставщика встроенного кошелькаБезопасность зависит от закрытого клиентского кода
Варианты восстановленияПрограммируемое восстановление (социальное, с помощью ключей доверенных лиц)Способы восстановления, предоставляемые приложениемТолько восстановление по сид-фразе
Контроль расходовПрограммируемые лимиты расходов и процессы утвержденияНекоторые встроенные кошельки поддерживают серверные политики транзакций (будьте осторожны: при неправильной реализации может возникнуть кастодиальная архитектура)Отсутствует
Нормативные требованияГибкие: модель хранения можно программировать, адаптируя кошельки к меняющимся нормативным требованиямПроконсультируйтесь с конкретным поставщиком кошелькаМенее строгий контроль: кошельком управляет пользователь
Корпоративные функцииРолевое управление доступом, процессы утвержденияНекоторые встроенные кошельки имеют ограниченные серверные средства управленияОтсутствуют
Зависимость от поставщикаНизкая. Смарт-кошельки основаны на программах с открытым исходным кодом. Пользователей можно перенести от одного поставщика инфраструктуры к другому без изменения их адресов.Высокая. Чтобы отказаться от встроенного кошелька, каждый пользователь должен восстановить закрытый ключ. Это может быть небезопасно и потребовать от пользователей выполнения действий вручнуюНизкая. Зависит от пользователя

Типичные сценарии использования смарт-кошельков

Смарт-кошельки Solana полезны, когда требуется гибкая кастодиальная архитектура, например:

  • Корпоративные казначейские кошельки под управлением нескольких сотрудников
  • Кошельки AI-агентов в сценариях агентных финансов, где один ключ нужен владельцу агента, а другой — самому агенту
  • Необанки и финансовые приложения, в которых пользователь самостоятельно хранит средства, но разрешает банку списывать их, например для регулярных платежей

Важная особенность делегированных подписантов — возможность ограничить их права на управление кошельком, например установив лимиты расходов или ограничения по классам активов.

Как именно смарт-кошельки работают в Solana?

Смарт-кошельки в Solana используют сочетание ончейн-программ и офчейн-инфраструктуры и обладают рядом уникальных особенностей Solana:

Архитектура на основе программ

В отличие от неисполняемых аккаунтов (аккаунтов данных), смарт-кошельки Solana, или исполняемые программные аккаунты, обычно реализованы в виде ончейн-программ, которые управляют одним или несколькими аккаунтами (PDA).

Авторизация транзакций

Вместо одного закрытого ключа смарт-кошельки используют настраиваемую логику авторизации:

  • Можно потребовать несколько подписантов (функция мультиподписи)
  • Можно поддерживать разные методы авторизации (ключи, биометрию, социальные сети)
  • Временные блокировки и лимиты расходов можно применять программно

Делегирование аккаунта

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

Работа с версионированными транзакциями

Смарт-кошельки используют стандартный формат версионированных транзакций Solana.

Что такое абстракция аккаунта?

Абстракция аккаунта (AA) позволяет разработчикам создавать настраиваемые аккаунты смарт-контрактов, которые выходят за рамки неисполняемых аккаунтов, привязанных к одной паре ключей. Это делает взаимодействие с пользователем более гибким.

AA позволяет использовать настраиваемую логику проверки. Благодаря этому аккаунты могут реализовать такие функции безопасности, как социальное восстановление, требования мультиподписи и лимиты расходов, не полагаясь на стандартные правила блокчейна.

Основная цель AA — сделать блокчейн-технологию незаметной для пользователей, устранив технические барьеры, такие как комиссии за транзакции и сид-фразы, но сохранив преимущества самостоятельного хранения.

Как в Solana работают транзакции без комиссии для пользователя?

Ключевое преимущество смарт-кошельков для транзакций без комиссии для пользователя заключается в том, что абстракция происходит на уровне аккаунта и не требует отдельной реализации для каждого dApp. Это делает взаимодействие настолько удобным, что пользователи могут даже не знать о существовании комиссий за транзакции.

Это позволяет разработчикам реализовать:

Встроенную абстракцию комиссии

Смарт-кошельки могут встраивать спонсирование комиссии непосредственно в свою архитектуру. Контракт кошелька может сам определять, кто и при каких обстоятельствах оплачивает комиссию.

Гибкий выбор валюты комиссии

Если вы не хотите оплачивать комиссии пользователя за транзакции, он может платить в SOL или таких токенах, как USDC и USDT.

Механизмы подтверждения

Смарт-кошельки могут использовать настраиваемую логику проверки, чтобы определять, когда разрешены спонсируемые транзакции. Например, можно ограничивать их частоту или разрешать их только для определенных приложений.

Как добавить смарт-кошельки Solana в приложение с помощью Crossmint

Интегрировать смарт-кошельки в приложение можно разными способами: на стороне клиента, на стороне сервера или с помощью архитектуры с двумя ключами для AI-агентов.

В приведенном ниже руководстве вы узнаете, как развернуть свой первый смарт-кошелек на стороне сервера.

Предварительные требования

Сначала создайте аккаунт разработчика в тестовой консоли Crossmint.

Затем откройте Настройки > Общие в проекте и измените тип кошелька на «Смарт-кошельки».

Чтобы получить API-ключ, перейдите в раздел Интеграция > API-ключи и выберите «Создать новый ключ» в разделе «Серверные ключи».

В категории Wallets API выберите следующие области доступа:

  • wallets.create
  • wallets.read
  • wallets:signatures.create
  • wallets:transactions.create
  • wallets:transactions.read
  • wallets:transactions.sign

Нажмите «Создать серверный ключ», чтобы сохранить ключ для следующего шага.

Создайте свой первый смарт-кошелек

Создайте файл (например, createWallet.ts) и добавьте в него этот код:

Код
const apiKey = "YOUR_API_KEY";
const walletType = "solana-smart-wallet";
const adminSigner = {
    // In production, you may want to use an MPC solution, like
    // crossmint-managed MPC keys
    type: "solana-keypair",
};

async function createWallet() {
    const response = await fetch("https://staging.crossmint.com/api/2022-06-09/wallets", {
        method: "POST",
        headers: {
            "X-API-KEY": apiKey,
            "Content-Type": "application/json",
        },
        body: JSON.stringify({
            type: walletType,
            config: {
                adminSigner,
            },
        }),
    });

    return await response.json();
}

createWallet()
    .then((json) => console.log(json))
    .catch((err) => console.error(`error: ${err}`));

Перед запуском укажите в YOUR_API_KEY ключ, полученный на предыдущем шаге.

Теперь запустите скрипт:

Код
npx tsx createWallet.ts

API вернет ответ с данными вашего нового кошелька.

Сохраните адрес кошелька: он понадобится на следующем шаге.

Взаимодействуйте с кошельком

Теперь, когда кошельки настроены на вашем сервере, можно начать с ними взаимодействовать.

Откройте Crossmint Testnet USDXM Faucet и вставьте адрес кошелька из предыдущего шага, чтобы получить тестовые USDXM в Solana.

Теперь, когда у вас есть токены, проверим баланс кошелька (checkBalance.ts):

Код
const apiKey = "YOUR_API_KEY";
const walletAddress = "YOUR_WALLET_ADDRESS"; // From previous step
const tokens = ["sol", "usdc", "usdxm"]; // Tokens to fetch balances for
const chains = ["solana"]; // Chains to query balances from

async function getWalletBalance() {
    const url = new URL(`https://staging.crossmint.com/api/v1-alpha2/wallets/${walletAddress}/balances`);
    url.search = new URLSearchParams({
        tokens: tokens.join(','),
        chains: chains.join(',')
    }).toString();

    const response = await fetch(url, {
        method: "GET",
        headers: {
            "X-API-KEY": apiKey,
            "Content-Type": "application/json",
        },
    });

    return await response.json();
}

getWalletBalance()
    .then((json) => console.log(json))
    .catch((err) => console.error(`error: ${err}`));

Поздравляем! Теперь на вашем сервере развернуты смарт-кошельки.

Теперь вы можете изучить документацию, чтобы узнать, как провести первую транзакцию, добавить делегированных подписантов и многое другое.

Заключение

Смарт-кошельки откроют новое поколение приложений на базе Solana с более удобным онбордингом и взаимодействием, повышенной безопасностью и улучшенным соблюдением нормативных требований.

Crossmint с энтузиазмом поддерживает множество сценариев — от интеллектуальной собственности и программ лояльности до AI-агентов. Наши простые API и no-code-инструменты для кошельков, платежей и токенизации надежно масштабируются до миллионов пользователей. А после запуска встроенных смарт-кошельков Solana они также поддерживают финтех-компании и приложения с AI-агентами.

Если вы хотите узнать больше о внедрении смарт-кошельков Solana в свой проект, свяжитесь с нами. Мы будем рады помочь.

Дополнительные ресурсы

Подпишитесь на Helius

Следите за новостями разработки на Solana и получайте уведомления о наших публикациях

Увеличенное изображение