一个基于 TypeScript 的命令行工具,用于从 BSC(币安智能链)上的 Uniswap V3 和 PancakeSwap V3 池中移除流动性。
- 交互式命令行界面,方便选择池和管理仓位
- 支持 Uniswap V3 和 PancakeSwap V3 两个池
- 高效的 multicall 交易,在一次交易中完成减少流动性和收集代币
- 使用 ethers.js v6 的 TypeScript 实现
- Node.js(推荐 v16 或更高版本)
- 带有私钥的 BSC 钱包
- BSC RPC 节点访问权限
- 要移除仓位的 LP NFT ID
- 克隆仓库:
git clone <repository-url>
cd Lp_remove- 安装依赖:
npm install- 在根目录创建
.env文件:
cp .env.example .env- 在
.env中配置环境变量:
PRIVATE_KEY=你的私钥
BSC_RPC_URL=https://bsc-dataseed.binance.org/在开发模式下运行工具(支持热重载):
npm run dev- 构建项目:
npm run build- 运行编译后的版本:
npm start [NFT_ID]如果不提供 NFT ID 作为命令行参数,工具会交互式地提示你:
- 选择池(Uniswap 或 PancakeSwap)
- 输入你的仓位 NFT ID
示例:
npm run dev
# 按照提示选择池并输入 NFT ID你也可以直接提供 NFT ID:
npm run dev -- 12345
# 或在生产环境:
npm start 12345- 工具使用配置的 RPC URL 连接到 BSC 网络
- 选择要交互的池(Uniswap 或 PancakeSwap)
- 输入流动性仓位的 NFT ID
- 工具获取仓位详情和当前流动性
- 构建一个 multicall 交易,包含:
- 将流动性减少至零
- 将所有代币收集回你的钱包
- 发送交易并在链上确认
- Uniswap V3:
0x7b8A01B39D58278b5DE7e48c8449c9f4F5170613 - PancakeSwap V3:
0x46A15B0b27311cedF172AB29E4f4766fbE7F4364
Lp_remove/
├── src/
│ ├── index.ts # 主应用逻辑
│ └── abi/
│ └── pool_abi.json # 池合约 ABI
├── dist/ # 编译后的 JavaScript(自动生成)
├── .env # 环境变量(不纳入 git)
├── package.json # 项目依赖
├── tsconfig.json # TypeScript 配置
└── README.md # 本文件
- 永远不要提交
.env文件或暴露你的私钥 - 在与合约交互前务必验证池地址
- 如果可能,先在测试网用小额测试
- 工具将
amount0Min和amount1Min设置为 0,这意味着没有滑点保护
- ethers: 用于与智能合约交互的以太坊库
- dotenv: 从 .env 文件加载环境变量
- inquirer: 交互式命令行提示
- typescript: TypeScript 编译器
- ts-node-dev: 支持热重载的开发服务器
ISC
- 确保你有足够的 BNB 支付 gas 费用
- 验证 NFT ID 正确且属于你的钱包
- 检查该仓位仍有流动性可移除
- 验证你的 BSC_RPC_URL 可访问
- 如果默认节点缓慢或不可用,尝试使用备用 RPC 节点
- 确保使用兼容的 Node.js 版本(v16+)
- 删除
node_modules和package-lock.json,然后重新运行npm install
本工具按原样提供,仅用于教育和便利目的。使用风险自负。在签署交易前务必验证,并了解 DeFi 操作涉及的风险。