|
|
hai 3 días | |
|---|---|---|
| .vscode | hai 2 meses | |
| public | hai 3 meses | |
| src | hai 3 días | |
| .dockerignore | hai 3 meses | |
| .env.example | hai 1 mes | |
| .gitignore | hai 1 mes | |
| .prettierignore | hai 3 meses | |
| .prettierrc.json | hai 2 meses | |
| API_AUTH.md | hai 1 mes | |
| Caddyfile | hai 1 mes | |
| Dockerfile | hai 1 mes | |
| README.md | hai 3 semanas | |
| docker-compose.yml | hai 1 mes | |
| eslint.config.mjs | hai 2 meses | |
| next.config.ts | hai 1 mes | |
| package.json | hai 1 mes | |
| pnpm-lock.yaml | hai 1 mes | |
| postcss.config.mjs | hai 2 meses | |
| tsconfig.json | hai 2 meses | |
| update.sh | hai 2 meses |
Byreal Table 是一个专为 ByReal DEX 设计的流动性仓位管理工具,提供仓位监控、批量操作、跟单复制等功能。
/position)展示指定流动性池中的所有仓位,支持:
/my-lp)管理个人流动性仓位,支持:
byreal-table/
├── src/
│ ├── app/ # Next.js App Router 页面
│ │ ├── position/ # 仓位总览页面
│ │ ├── my-lp/ # 我的 LP 管理页面
│ │ ├── lp-copy/ # 跟单复制页面
│ │ ├── api/ # API 路由
│ │ │ ├── my-lp/ # LP 相关 API
│ │ │ ├── lp-index/ # 仓位操作 API
│ │ │ ├── lp-copy/ # 复制 API
│ │ │ ├── top-positions/ # 排名 API
│ │ │ └── pools/list/ # 流动性池列表 API
│ │ └── components/ # React 组件
│ ├── lib/
│ │ ├── byreal-clmm-sdk/ # ByReal CLMM SDK
│ │ ├── config.ts # 全局配置
│ │ ├── solana-config.ts # Solana RPC 配置
│ │ └── jupiter.ts # Jupiter 价格 API
├── docker-compose.yml # Docker 编排配置
├── Caddyfile # Caddy 服务器配置
└── .env.example # 环境变量示例
安装依赖
pnpm install
配置环境变量
cp .env.example .env.local
编辑 .env.local:
# Solana RPC 地址
SOL_ENDPOINT=https://lb.drpc.live/solana/
# Solana 私钥(用于签名交易)
SOL_SECRET_KEY=your_secret_key_here
# Jupiter API Key (可选,用于提高速率限制)
JUPITER_API_KEY=your_jupiter_api_key
启动开发服务器
pnpm dev
准备环境文件
cp .env.example .env
编辑 .env 文件,配置必要的环境变量。
生成 Basic Auth 密码文件
# 生成密码哈希
HASH=$(docker run --rm caddy:2-alpine caddy hash-password --plaintext 'your_password')
# 写入 htpasswd 文件
echo "admin $HASH" > htpasswd
启动服务
# 安装 httpd (用于 htpasswd 工具,可选)
apt install httpd
# 或使用 Docker 生成
docker run --rm caddy:2-alpine caddy hash-password --plaintext 'your_password'
# 启动所有服务
docker compose up -d
查看日志
docker compose logs -f
| 变量名 | 说明 | 是否必需 |
|---|---|---|
SOL_ENDPOINT |
Solana RPC 节点地址 | 是 |
SOL_SECRET_KEY |
Solana 钱包私钥 (Base58 格式) | 是 |
JUPITER_API_KEY |
Jupiter API Key | 否 |
NODE_ENV |
运行环境 (development/production) | 否 |
GET /api/my-lp?userAddress={address}&page={page}&pageSize={size}&status={status}
GET /api/my-lp/detail?address={positionAddress}
GET /api/my-lp/copyInfo?parentPositionAddress={address}&poolAddress={pool}
POST /api/lp-index/lp-add
Body: {
"nftMintAddress": string,
"addUsdValue": number,
"needSwap": boolean
}
POST /api/lp-index/lp-close
Body: {
"nftMintAddress": string
}
POST /api/lp-copy
Body: {
"positionAddress": string,
"nftMintAddress": string,
"maxUsdValue": number,
"needSwap": boolean
}
项目使用 Caddy 提供 Basic Auth 认证,保护 API 接口不被未授权访问。
详细配置请参考 API_AUTH.md
在 src/app/api 目录下创建新的路由文件:
// src/app/api/example/route.ts
import { NextRequest, NextResponse } from 'next/server'
export async function GET(request: NextRequest) {
// 处理逻辑
return NextResponse.json({ data: 'example' })
}
import { chain } from '@/lib/config'
// 获取仓位信息
const positionInfo = await chain.getPositionInfoByNftMint(nftMint)
// 添加流动性
const txid = await chain.addLiquidity({
userAddress,
nftMint,
base: 'MintA',
baseAmount,
otherAmountMax,
signerCallback,
})
// 关闭仓位
const txid = await chain.decreaseFullLiquidity({
userAddress,
nftMint,
signerCallback,
})
项目使用多种价格来源:
A: 可以使用公共 RPC 如 https://api.mainnet-beta.solana.com,或使用第三方服务如 DRPC、QuickNode。
A: 检查以下几点:
A: 在"我的 LP"页面选择多个仓位,然后点击"批量快速关仓"按钮。
A: 在"我的 LP"页面,展开有跟单位置的仓位,在子表格中设置金额和倍数,点击狙击图标即可。
欢迎提交 Issue 和 Pull Request!
MIT
本工具仅供学习和研究使用,不构成投资建议。使用本工具进行交易所产生的风险由用户自行承担。