
概述
这款Solana单页应用程序通过集成 Jupiter Ultra API,并结合Quicknode 和Solana 配器技术,支持代币兑换。该应用程序为用户提供了一个无缝的界面,可在Solana 进行代币兑换,并支持实时余额更新和交易追踪。
有关 Jupiter Ultra API 集成和实现细节的详细分步指南,请参阅配套指南:《如何使用 Jupiter Ultra API 交换代币》。
Mainnet ——真实代币与手续费
Jupiter Ultra Swap 仅在Solana mainnet提供。这意味着执行兑换操作时将交易真实的代币,并产生真实的网络手续费。您可能会因价格波动、滑点或选择错误的代币对而造成资产贬值。请先使用小额资金进行测试。
建筑
┌─────────────────┐
│ Next.js 用户界面 │
│ (客户端) │
└────────┬────────┘
│
├─ 钱包适配器(Phantom、Backpack、Solflare)
│
├─ API 路由(服务器端)
│ ├─ /api/tokens
│ ├─ /api/balances
│ ├─ /api/quote
│ ├─ /api/execute
│ └─ /api/rpc
│
├─ Jupiter Ultra API
│ └─ 代币兑换与报价
│
└─Quicknode
└─Solana
功能
- 支持多种钱包:可连接 Phantom、Backpack 或 Solflare 钱包
- 代币选择:从经过验证的Solana 全面列表中选择代币进行兑换
- 实时余额:直接从区块链查看实时代币余额
- 掉期报价:在执行交易前即时获取掉期报价
- 交易执行:使用JupiterUltra的“报价 → 下单 → 签署 → 执行 → 状态”生命周期
- 交易追踪:在Solana 监控交易状态并查看交易详情
先决条件
- Node.js(v18 或更高版本)
- A Quicknode Solana endpoint
- 用于掉期功能的Jupiter API 密钥
- 一个mainnet Solana (Phantom、Backpack 或 Solflare)
- 少量mainnet SOL作为交易手续费
- 少量待兑换的代币(测试时建议使用USDC)
要获取您的Quicknode URL:
- 请在 Quicknode
- 创建一个新的Solana endpoint
- 复制 HTTP 提供商 URL
项目结构
jupiter-ultra-swap/
├── app/
│ ├── api/ # 服务器端 API 路由
│ │ ├── balances/ # 代币余额查询
│ │ ├── execute/ # 交换执行
│ │ ├── quote/ # 兑换报价
│ │ ├── rpc/ # RPC 代理
│ │ └── tokens/ # 代币列表
│ ├── providers/ # React 上下文提供程序
│ ├── globals.css # 全局样式
│ ├── layout.tsx # 根布局
│ └── page.tsx # 主切换界面
├── components/ # 兑换 UI 组件
├── hooks/ # 自定义 React 钩子
│ ├── useWallet.ts # 钱包连接逻辑
│ ├── useTokens.ts # 代币数据管理
│ └── useSwap.ts # 兑换协调逻辑
├── lib/ # 工具库
│ ├── jupiter-client.ts # Jupiter API 客户端
│ ├──solana.ts #Solana 客户端
│ └── types.ts # TypeScript 类型定义
└── .env.example # 环境变量模板
入门指南
1. 克隆仓库:
git clone https://github.com/quiknode-labs/qn-guide-examples.git
cdsolana
2. 安装依赖项:
npm 安装
3. 配置环境变量:
cp .env.example .env.local
编辑 .env.local 并添加您的Quicknode URL 和 Jupiter API 密钥。
#Quicknode Solana endpoint
QUICKNODE=此处填写您的 Quicknode RPC 端点
# 用于交换功能的 Jupiter API 密钥
JUPITER_API_KEY=此处填写您的 Jupiter API 密钥
4. 运行开发服务器:
npm 运行 dev
5. 打开应用程序:
在浏览器中访问http://localhost:3000。
API 端点
该应用程序包含以下服务器端 API 路由:
/api/tokens: 返回可用于交换的代币列表/api/balances: 获取已连接钱包的代币余额/api/quote: 从 Jupiter Ultra API 获取掉期报价/api/execute: 执行互换交易/api/rpc: 将 RPC 请求转发至Quicknode
预览

投稿与反馈
我们非常期待收到您的反馈,并欢迎大家为本示例应用贡献力量!
如需报告问题或提供反馈,请在 qn-guide-示例 存储库。
如需贡献,请按照以下步骤操作:
- 分叉该仓库
- 创建一个功能分支:git checkout -b feature/amazing-feature
- 提交您的更改:git commit -m "添加超棒的功能"
- 推送您的分支:git push origin feature/amazing-feature
- 提交一个拉取请求。
探索更多示例应用
