swap-api
v0.0.3
Published
A swap API using Midway framework and Koa v3
Readme
Aggregator Swap API
一个基于 NestJS 的跨链交易聚合 API 服务,支持多链资产交换和价格查询。
功能特性
- 支持多链资产交换(Solana、Ethereum、Base 等)
- 集成 Li.Fi API 进行跨链交易路由
- 提供代币价格和 Gas 费用查询
- 支持缓存以提高性能
- 完整的 TypeScript 类型支持
- RESTful API 设计
环境要求
- Node.js 16+
- Redis 6+
- TypeScript 5.3+
快速开始
安装依赖
npm install配置环境变量
创建 .env 文件并设置以下变量:
# 服务器配置
PORT=3000
NODE_ENV=development
# Redis 配置
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
# Li.Fi API 配置
LIFI_API_KEY=your_lifi_api_key
# 缓存配置
CACHE_TTL=300 # 缓存过期时间(秒)启动服务
开发模式:
npm run start:dev生产模式:
npm run build
npm run start:prodAPI 文档
获取支持的链
GET /api/swap/chains返回所有支持的区块链信息。
获取代币列表
GET /api/swap/tokens?chains=sol,eth&searchTerm=usdc参数:
chains: 链 ID 或链名称,多个用逗号分隔searchTerm(可选): 搜索关键词
获取代币信息
GET /api/swap/token?chain=sol&token=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v参数:
chain: 链 ID 或链名称token: 代币合约地址
获取交换报价
GET /api/swap/quotation参数:
fromChain: 源链toChain: 目标链fromTokenAddress: 源代币地址toTokenAddress: 目标代币地址fromAmount: 源代币数量(以最小单位表示)fromAddress(可选): 发送方地址toAddress(可选): 接收方地址slippage(可选): 滑点百分比,默认 1.0
获取代币价格
GET /api/swap/token-price?chain=sol&token=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v参数:
chain: 链 ID 或链名称token: 代币合约地址
获取 Gas 价格
GET /api/swap/gas-price?chain=sol参数:
chain: 链 ID 或链名称
项目结构
swap-api/
├── src/
│ ├── controller/ # API 控制器
│ ├── service/ # 业务逻辑服务
│ ├── dto/ # 数据传输对象
│ ├── constants/ # 常量定义
│ ├── utils/ # 工具函数
│ ├── app.module.ts # 主模块
│ └── main.ts # 应用入口
├── test/ # 测试文件
├── .env # 环境变量
├── package.json # 项目依赖
└── tsconfig.json # TypeScript 配置开发
运行测试
npm run test代码风格检查
npm run lint客户端 SDK
我们提供了一个 TypeScript SDK 用于与此 API 交互:
npm install agg-swap-client使用示例:
import { SwapApiClient } from 'agg-swap-client';
const client = new SwapApiClient('http://localhost:3000');
// 获取交换报价
const quote = await client.getQuotation({
fromChain: 'sol',
toChain: 'sol',
fromTokenAddress: 'So11111111111111111111111111111111111111112',
toTokenAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
fromAmount: '1000000000'
});许可证
MIT
