AWS + Mastra + Phantomで作る Solana AI Agent
요약
본 기술 기사는 AWS, Mastra, Phantom을 활용하여 Solana 블록체인 상의 디지털 자산을 조작할 수 있는 AI Agent 구축 방법을 설명합니다. 사용자가 자연어 채팅으로 SOL 전송, NFT 발행/스왑 등 다양한 온체인 작업을 요청하면, 백엔드의 Mastra AI Agent가 의도를 해석하고 적절한 Solana 툴(Tool)을 호출하여 미서명 트랜잭션을 프론트엔드로 반환합니다. 사용자는 Phantom 지갑에서 이 트랜잭션을 확인 및 서명 후 전송하며, 그 결과를 다시 Agent에게 전달하여 상세한 실행 결과 설명을 받을 수 있습니다. 이 시스템은 React와 Mastra를 통합하고, AWS의 서버리스/풀 관리형 아키텍처를 채택하여 구현되었으며, SOL 잔액 조회, NFT 발행(Mint), 토큰 스왑 등 10가지 이상의 기능을 지원합니다.
핵심 포인트
- Solana 블록체인 상의 온체인 작업을 자연어 처리로 수행하는 AI Agent 구축 가능
- Mastra AI Agent가 사용자의 의도를 해석하여 적절한 Solana Tool을 호출하고 미서명 트랜잭션을 생성함
- 사용자는 Phantom 지갑을 통해 트랜잭션에 서명 및 전송하며, 결과 피드백 루프를 통해 작업 완료 과정을 추적할 수 있음
- 시스템은 React 프론트엔드와 Mastra AI Agent 백엔드를 결합하고 AWS 서버리스 아키텍처로 구현됨
- SOL 잔액 조회, NFT 발행(Mint), Jupiter 스왑 등 다양한 온체인 기능을 툴 형태로 모듈화하여 제공함
はじめに
皆さん、AI Agent は作っていますか?
業務効率化のためにさまざまなワークフローを作成しているかと思います。
こちらについてのノウハウや AI Agent のサンプルコードは増えてきているかと思いますが、ブロックチェーンとの連携を可能とする AI Agent の実装例はそれに比べるとまだまだ少ないのではないのでしょうか??
今回はSolanaブロックチェーン上のデジタルアセットを操作する AI Agent の構築方法やその技術スタックについて解説した記事を執筆しました!
ぜひ一例として参考にしてください!
作ったもの
概要
自然言語で Solana DevNet 上の操作(SOL 送金・NFT 発行・DeFi Swap・スマートコントラクト呼び出し)ができるチャットアプリを作成してみました!
チャット画面でユーザーが自然言語を入力するとバックエンドの Mastra AI Agent がインテントを解釈して適切な Solana ツール(transferSolTool
/ mintNftTool
/ jupiterSwapTool
など)を呼び出し、署名済みトランザクションではなく未署名のシリアライズ済みトランザクションをフロントエンドへ返します。ユーザーは Phantom Wallet で内容を確認・署名・送信し、その結果を再度 Agent に渡すことで実行結果の解説を受け取るというものです。
デモ動画
今回作成したアプリはこんな感じに動作します!
機能一覧
| # | 機能名 | 説明 | Agent ツール | 署名 |
|---|---|---|---|---|
| 1 | SOL 残高照会 | ウォレットアドレスの SOL 残高を取得して表示 | getBalanceTool | 不要 |
| 2 | SOL 送金 | 指定アドレスへの SOL 送金トランザクションを構築 | transferSolTool | Phantom で署名 |
| 3 | NFT 一覧取得 | ウォレットが保有する NFT を Metaplex DAS API で取得 | getNftsTool | 不要 |
| 4 | NFT 発行(Mint) | Metaplex MPL Core で NFT 発行トランザクションを構築 | mintNftTool | Phantom で署名 |
| 5 | トークンスワップ | Jupiter v6 経由で SPL トークンのスワップ TX を構築 | jupiterSwapTool | Phantom で署名 |
| 6 | DevNet エアドロップ | DevNet 限定で SOL をエアドロップ(最大 2 SOL / リクエスト) | airdropTool | 不要 |
| 7 | スマートコントラクト呼び出し | 汎用的な Solana Program 呼び出し TX を構築 | callProgramTool | Phantom で署名 |
| 8 | ウォレット接続 | Phantom Wallet の接続・切断・ネットワーク確認 | wallet-adapter | — |
| 9 | トランザクション結果解説 | 署名・送信後の成功/失敗をわかりやすく解説 | Agent フォローアップ | — |
| 10 | 資産パネル | SOL 残高・保有 NFT をサイドパネルに常時表示 | hooks (UI) | — |
機能毎の処理シーケンス図
1. SOL 残高照会
2. SOL 送金
3. NFT 一覧取得
4. NFT 発行(Mint)
5. トークンスワップ(Jupiter v6)
6. DevNet エアドロップ
システムアーキテクチャ図
このアプリは大きく 3 つのレイヤーで構成されています
- フロントエンドレイヤー
- AI Agent レイヤー
- ストレージレイヤー
AWS 側のシステム構成は以下のようになっています!
サーバーレス + フルマネージドな構成としています!
採用しているサービスの一覧表と用途はそれぞれ以下の通りです!
実装時のポイント
ここからはいくつか重要な実装箇所をピックアップして紹介していきます。
React
今回は React と Mastra を統合しています。
ローカルで動作確認する際には指定したパスを呼び出した際にちゃんとバックエンド側の処理が呼び出されるように以下のような設定をViteの設定ファイルに加える必要があります。
今回だと
/chat/
が呼び出された時に API 側の処理を呼び出すように設定しています。
import tailwindcss from "@tailwindcss/vite";
import react from "@vitejs/plugin-react";
import path from "path";
...
実際に Mastra で作成した AI Agent は以下のように呼び出すことになります。
const { messages, sendMessage, status, stop } = useChat({
transport: new DefaultChatTransport({
api: "/chat/solana-agent",
...
}),
});
Mastra
AI Agent の設定自体は以下のようになります。
import { Agent } from "@mastra/core/agent";
import { Memory } from "@mastra/memory";
import { airdropTool } from "../tools/airdrop-tool";
...
今回は Solana についての AI Agent なので追加 Agent SKILL も設定しています (solanaWorkspace というやつですね)。
特定のフォルダの SKILL を参照させることができます。
これで専門知識を兼ね備えた AI Agent になるわけです。
import { LocalSkillSource, Workspace } from "@mastra/core/workspace";
/**
* Solana AI Agent のワークスペース。
...
オンチェーン操作用の各種ツール群
オンチェーン操作のためのツール群を今回実装しています。
参考に残高取得とトランザクション作成用のツールの中身を解説します。
残高取得のツール
残高取得については基本的に Solana の API を叩いてプロンプトから渡されたウォレットアドレスの残高を取得して返すという実装になっています。
import { createTool } from "@mastra/core/tools";
import { Connection, PublicKey } from "@solana/web3.js";
import {
...
トランザクション作成用のツール
今回一番ポイントになるのがこのトランザクション作成用ツールです!
安全性担保のために AI Agent 側では電子署名をせず、トランザクションの作成だけにとどめるようにしています。
そして作成されたトランザクションデータに対してユーザーの意思で署名が行われた場合のみトランザクションをブロックチェーンに送るという実装になっています。
import { createTool } from "@mastra/core/tools";
import {
Connection,
...
Solana Dev Agent SKILL
今回この AI Agent を実装するにあたり以下の Agent SKILL が大変参考になりました。
모든 분도 Solana 위에서 어떤 앱을 개발할 때 시도해 보세요??
Deepwiki 도 있습니다!
설치는 다음 명령어로 실행 가능합니다!
npx skills add https://github.com/solana-foundation/solana-dev-skill
작동 방법
이제 이 AI Agent 의 작동 방법을 공유하겠습니다!
전제 조건
설정
# 저장소를 클론
git clone https://github.com/your-org/solana-agent-repo.git
cd solana-agent-repo/mastra-react
...
개발 서버 시작
# 터미널 1: 프론트엔드 (localhost:5173)
bun run dev
# 터미널 2: Mastra 백엔드 (localhost:4111)
...
로컬은 이렇게 됩니다!
자신의 지갑 주소와 잔고 등을 확인해 보세요!
AWS 에 리소스 배포
다음으로 AWS 에 배포하는 방법을 설명하겠습니다!
cdk 폴더 하에서 실행해야 합니다
이번에는 CDK 를 사용하므로 하나의 명령어로 배포가 완료됩니다!
# 의존성을 먼저 설치
bun install
# 배포
...
배포가 성공적으로 끝나면 위에서 언급한 3 개의 레이어가 모두 배포됩니다.
앱의 작동 방법은 로컬과 동일합니다!
AWS 에서 리소스 정리
검증을 완료했으면 리소스를 삭제하지 마세요!
bun run destroy '*' --force
요약
이렇게 이번에는 여기까지입니다!
모던한 기술 스택을 활용한 Solana AI Agent 구현 방법을 설명했지만, 이를 기반으로 확장할 수 있으므로 앞으로도 흥미로운 기능을 추가하겠습니다!
읽어주셔서 감사합니다!
AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기