
Как создать безопасного ИИ-агента на Solana
Содержание
- Проблема безопасности: как ИИ-агентам безопасно получать доступ к кошелькам Solana?
- Баланс между безопасностью и автономностью
- Как создать ИИ-агента на Solana
- Предварительные требования
- Создайте кошелек Solana в Turnkey
- Создайте для бота пользователя только с доступом через API
- Ограничьте возможности бота с помощью политик
- Не только безопасные кошельки: как верифицируемые среды помогают создавать безопасных ИИ-агентов
- 1. Удаленная аттестация
- 2. QuorumOS (QOS)
- 3. StageX и воспроизводимые сборки
- Почему это важно для ИИ-агентов
- Дополнительные материалы
Изучите наш новый набор инструментов для агентов:
Подробнее читайте в анонсе Helius for Agents.
Стремительный рост числа ИИ-агентов, торгующих на Solana, вызвал активные спекуляции об автономных агентах, проводящих финансовые транзакции.
Текущая волна ИИ-токенов обеспечивает более $1 млрд торгового объема за 24 часа, а их рыночная капитализация превышает $9,5 млрд.[1]
Но помимо этих спекулятивных рынков в криптоиндустрии уже происходит более глубокая трансформация, основанная на многолетнем развитии автоматизации.
Боты уже выполняют подавляющее большинство криптовалютных транзакций — до 90% в некоторых сегментах рынка.[2]
Это пока не полностью автономные ИИ-агенты. Но они явно являются их предшественниками и со временем становятся все более универсальными и независимыми.
Их распространенность подчеркивает важный факт: криптовалютная инфраструктура идеально подходит для программных автономных транзакций.
Проблема безопасности: как ИИ-агентам безопасно получать доступ к кошелькам Solana?
По мере распространения ИИ-агентов на Solana и за ее пределами возникла серьезная проблема безопасности: как автономным системам получать доступ к кошелькам, не снижая уровень безопасности?
Для выполнения ончейн-операций ИИ-агенту нужен доступ к кошельку. Но хранение приватных ключей в коде создает серьезные уязвимости:
- Они становятся приоритетными целями для злоумышленников
- Ошибки в коде могут привести к потере средств
- Разработчики редко организуют их так, чтобы разделить средства
- Они могут открыть путь для неконтролируемого поведения ИИ
Реальный пример таких рисков произошел в сентябре 2024 года, когда злоумышленники использовали уязвимость в Banana Gun — торговом боте на базе Telegram. Из-за ошибки в оракуле сообщений хакеры вывели $3 млн из кошельков пользователей.
Бот или агент с прямым доступом к кошельку может совершать непреднамеренные и необратимые транзакции из-за эксплойта, ошибки или неконтролируемого цикла принятия решений.
Баланс между безопасностью и автономностью
Традиционные решения вынуждают разработчиков выбирать между безопасностью и настоящей автономностью агентов. Они либо раскрывают приватные ключи, либо требуют централизованного хранения активов. Ни один из этих вариантов не подходит для производственных систем.
Одно из решений предлагает Turnkey — гибкая инфраструктура управления ключами, специально созданная для безопасности, масштабирования и автоматизации. Вместо раскрытия приватных ключей Turnkey позволяет ИИ-агентам взаимодействовать с кошельками через API с ограниченной областью действия и политиками доступа.
Вот как это работает:
API-ключи с ограниченной областью действия
ИИ-агенты получают ограниченные учетные данные API, привязанные к конкретным кошелькам и действиям.
Детализированные политики
Разработчики могут точно определить, какие действия разрешены ИИ-агенту: подписывать транзакции при определенных условиях, взаимодействовать с конкретными смарт-контрактами или соблюдать ограничения частоты запросов.
Контроль со стороны пользователя
Конечные пользователи или разработчики могут сохранять полный контроль над кошельками, делегируя ИИ-агентам отдельные действия.
Почему это работает:
Такой подход позволяет ИИ-агентам автономно взаимодействовать с ончейн-активами, не получая необработанные приватные ключи. Это решает проблему безопасности и сохраняет не требующую доверия и разрешений природу криптовалют.
Кроме того, верифицируемая вычислительная среда Turnkey позволяет командам развертывать ИИ-агентов в среде, где любой может проверить исполняемый код. Подробнее об этом ниже.
Рассмотрим практический пример предоставления простому боту API-ключа с разрешениями для кошелька. Затем разработчик сможет перейти к следующему этапу — превратить бота в полностью автономного ИИ-агента.
Как создать ИИ-агента на Solana
Создадим безопасного торгового бота с помощью Turnkey. Мы рассмотрим:
- Настройку кошелька Solana с политиками доступа
- Создание пользователя только с доступом через API для бота
- Определение политик, ограничивающих поведение бота
- Реализацию простой торговой функции с помощью Jupiter Exchange
Предварительные требования
Перед началом работы с кодом необходимо установить Node.js и npm.
Вам также потребуется аккаунт Turnkey.
Создайте кошелек Solana в Turnkey
Войдите в панель управления Turnkey и выполните следующие действия:
- Перейдите в раздел Wallets
- Нажмите Create New Wallet
- Выберите Solana и ED25519 в настройках кошелька
- Пополните этот кошелек некоторым количеством SOL для торговли
Создайте для бота пользователя только с доступом через API
Далее:
- Перейдите на вкладку Users
- Нажмите Add User
- Выберите API key в разделе типов доступа
- Укажите имя, например «Trading Bot Alpha»
Запишите идентификатор пользователя, а затем нажмите кнопку подтверждения. Этот ключ понадобится для настройки политики.
Ограничьте возможности бота с помощью политик
Сначала перейдите на вкладку Policies и нажмите Add new policy. Затем настройте политику, ограничивающую доступные боту действия. Определим политику, которая гарантирует, что бот:
- Может выполнять только переводы токенов, без других типов транзакций
- Может торговать только SOL и USDC
- Не может выполнять транзакции объемом более 1 SOL
{
"policyName": "AI Trading Bot Policy",
"effect": "EFFECT_ALLOW",
"consensus": "approvers.any(user, user.id == '<BOT_USER_ID>')",
"condition": "solana.tx.instructions.count() == solana.tx.spl_transfers.count() && solana.tx.spl_transfers.all(transfer, transfer.token_mint == '<USDC_MINT>' || transfer.token_mint == '<SOL_MINT>') && solana.tx.spl_transfers.all(transfer, transfer.amount < 1000000000)"
}Настройте проект
Теперь создайте проект и установите зависимости.
mkdir ai-trading-bot
cd ai-trading-bot
npm init -y
npm install @solana/web3.js @turnkey/sdk-server @turnkey/solana @jup-ag/apiСоздайте файл .env для хранения учетных данных.
TURNKEY_API_PRIVATE_KEY="YOUR_API_PRIVATE_KEY_HERE"
TURNKEY_API_PUBLIC_KEY="YOUR_API_PUBLIC_KEY_HERE"
TURNKEY_ORGANIZATION_ID="YOUR_TURNKEY_ORGANIZATION_ID_HERE"Создайте простого бота
Теперь напишем код. Создайте файл index.js:
import process from "node:process";
import { Turnkey } from "@turnkey/sdk-server";
import { TurnkeySigner } from "@turnkey/solana";
import {
Connection,
clusterApiUrl,
PublicKey,
VersionedTransaction
} from "@solana/web3.js";
import { createJupiterApiClient } from "@jup-ag/api";
// Load environment variables
process.loadEnvFile(".env");
// Define token addresses
const USDC = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";
const SOL = "So11111111111111111111111111111111111111112";
const BOT_ADDRESS = "YOUR_TURNKEY_WALLET_ADDRESS_HERE";
const BOT_PUBLIC_KEY = new PublicKey(BOT_ADDRESS);
async function main() {
// Initialize Turnkey and Jupiter clients
const turnkey = new Turnkey({
apiBaseUrl: "https://api.turnkey.com",
apiPrivateKey: process.env.TURNKEY_API_PRIVATE_KEY,
apiPublicKey: process.env.TURNKEY_API_PUBLIC_KEY,
defaultOrganizationId: process.env.TURNKEY_ORGANIZATION_ID,
});
const signer = new TurnkeySigner({
organizationId: process.env.TURNKEY_ORGANIZATION_ID,
client: turnkey.apiClient(),
});
const connection = new Connection(clusterApiUrl("mainnet-beta"), "confirmed");
const jupiterClient = createJupiterApiClient();
Создайте учетные данные с политиками доступа
Теперь перейдем к самому интересному. Вместо предоставления ИИ-агенту полного доступа к кошельку мы создадим для него учетные данные с политиками доступа:
const agentUSDCPolicy = {
"policyName": "Require consensus on Solana transactions containing SPL token transfers of over 1000 USDC",
"effect": "EFFECT_ALLOW",
"consensus": "approvers.count() >= 2",
"condition": "solana.tx.spl_transfers.all(transfer, transfer.token_mint == 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v') && solana.tx.spl_transfers.all(transfer, transfer.amount > 1000000000)",
"notes": "",
}
const agentSOLPolicy = {
"policyName": "Require consensus on Solana transactions containing SOL transfers over 1 SOL",
"effect": "EFFECT_ALLOW",
"consensus": "approvers.count() >= 2",
"condition": "solana.tx.transfers.count == 1 && solana.tx.transfers[0].amount > 1000000000",
"notes": "",
}
const createUSDCPolicyResponse = await turnkey.apiClient().createPolicy(agentUSDCPolicy);
const createSOLPolicyResponse = await turnkey.apiClient().createPolicy(agentSOLPolicy);
Реализуйте торговую функцию бота
Установив ограничения, можно реализовать торговую функцию:
async function executeTrade(fromToken: string, toToken: string, amount: string) {
// Get quote from Jupiter
const quoteResponse = await jupiterClient.quoteGet({
inputMint: fromToken,
outputMint: toToken,
amount: amount
});
// Create swap transaction
const swapResponse = await jupiterClient.swapPost({
swapRequest: {
userPublicKey: BOT_PUBLIC_KEY,
quoteResponse: quoteResponse,
},
});
// Sign and submit transaction
const transaction = VersionedTransaction.deserialize(
Buffer.from(swapResponse.swapTransaction, "base64")
);
const signedTx = await signer.signTransaction(
transaction,
BOT_PUBLIC_KEY
);
const txid = await connection.sendRawTransaction(
signedTx.serialize(),
{ skipPreflight: true, maxRetries: 5 }
);
await connection.confirmTransaction(txid);
return txid;
}
main();
Вот и все!
Это еще не полноценный ИИ-агент, но такой простой бот с политиками доступа закладывает основу.
Теперь можно расширить его автономность, добавить логику принятия решений и превратить его в более продвинутого агента.
Можно также дополнительно повысить безопасность: требовать мультиподпись для транзакций с высоким риском или предоставлять агентам доступ к кошелькам, контролируемым конечными пользователями.
Не только безопасные кошельки: как верифицируемые среды помогают создавать безопасных ИИ-агентов
Безопасность транзакций ИИ-агентов зависит не только от защиты доступа к кошельку. Необходимо также проверять, действительно ли агент исполняет заявленный код.
Представьте мир, где ИИ-агенты безопасно проводят транзакции и работают в полностью верифицируемой среде. В ней любой может независимо проверить, какой именно код исполняет агент.
Верифицируемая вычислительная инфраструктура Turnkey позволяет любому проверить, какое программное обеспечение работает внутри защищенного анклава. Это решает одну из важнейших проблем современного доверенного программного обеспечения.
В основе Turnkey лежат доверенные среды выполнения (TEE), в частности AWS Nitro Enclaves. Они создают защищенную от несанкционированного вмешательства среду для выполнения критически важных операций. Эти анклавы работают как изолированные виртуальные машины без постоянного хранилища и доступа к внешней сети. После запуска их нельзя изменить. Это гарантирует, что после развертывания анклава его код и данные остаются защищены от внешнего вмешательства, в том числе со стороны самого поставщика инфраструктуры.
Однако одного безопасного выполнения недостаточно — важна возможность верификации. Turnkey обеспечивает ее благодаря трем ключевым инновациям:
1. Удаленная аттестация
Каждый анклав Turnkey создает криптографическое доказательство, точно удостоверяющее, какой код он исполняет. Такая аттестация включает хеш операционной системы анклава и бинарного файла приложения, подписанный модулем AWS Nitro Secure Module (NSM). Вскоре любой сможет независимо проверить это доказательство и убедиться, что анклав исполняет ожидаемое программное обеспечение.
2. QuorumOS (QOS)
Минималистичная операционная система с открытым исходным кодом, созданная специально для верифицируемости. QOS гарантирует, что каждый анклав исполняет только утвержденный код, доступный для аудита. Она также предоставляет манифесты QOS — машиночитаемые доказательства, связывающие выполнение в анклаве с общедоступным для проверки цифровым отпечатком программного обеспечения.
3. StageX и воспроизводимые сборки
Чтобы устранить риск атак на цепочку поставок, Turnkey требует использовать воспроизводимые сборки. Любой бинарный файл, исполняемый внутри анклава, можно независимо повторно скомпилировать из понятного человеку исходного кода и проверить, что он не был изменен. Это обеспечивает точное соответствие между кодом, проверенным разработчиками, и программным обеспечением, работающим в защищенной среде.
Сочетая TEE, удаленную аттестацию и воспроизводимые сборки, Turnkey позволяет запускать приложения с полной верифицируемостью — будь то защита кошелька, криптографическая подпись или выполнение ИИ-агента. Эта архитектура выходит за рамки традиционных моделей облачной безопасности, основанных на доверии, и предлагает новую парадигму, в которой безопасность доказуема, прозрачна и децентрализована.
Почему это важно для ИИ-агентов
Верифицируемая среда выполнения повышает безопасность и расширяет возможности проектирования автономных систем, финансовых приложений и любых сервисов, требующих доказуемого доверия.
Когда пользователи могут независимо проверять программное обеспечение, работающее в анклаве, открываются новые возможности. Например, выполнение ИИ без необходимости доверия, при котором разработчики и пользователи могут уверенно избегать агентов «Волшебник страны Оз», то есть людей, выдающих себя за настоящих ИИ-агентов.
Помимо верифицируемого ИИ, команды могут развертывать любые решения — от офчейн-сопроцессоров до доверенных оракулов и систем инференса ИИ. Для каждого из них будет доступно криптографическое доказательство того, что решение работает строго в соответствии с заявленными условиями и не может быть обновлено в одностороннем порядке. В таблице ниже приведены примеры критически важных рабочих нагрузок, которые выиграют от переноса в среды с возможностью аттестации:
Хотите принять участие и запускать собственные критически важные приложения с возможностью верификации?
Команда Turnkey начинает сотрудничать с отдельными командами для развертывания ИИ-агентов и других приложений в полностью верифицируемой среде выполнения, где любой может проверить точный код, работающий за кулисами.
Дополнительные материалы
- CoinGecko — Рыночная капитализация ИИ-агентов
- QZ — Боты выполняют 90% транзакций со стейблкоинами
- Новый технический документ Turnkey
- Официальный сайт Turnkey
- Свяжитесь с нами, чтобы обсудить развертывание верифицируемого ИИ
Похожие статьи
Подпишитесь на Helius
Следите за новостями разработки на Solana и получайте уведомления о наших публикациях


