four-flap-meme-sdk
Version:
SDK for Flap bonding curve and four.meme TokenManager
358 lines (276 loc) • 8.9 kB
Markdown
# four-flap-meme-sdk
**four.meme 和 Flap Protocol 统一 SDK - 生产环境 MEV 保护方案**
提供完整的代币发行和交易功能,所有操作均通过 **Merkle.io Bundle** 执行,确保 MEV 保护、原子性和私有性。
## 核心优势
🔐 **MEV 保护** - 防止抢跑、三明治攻击和价格操纵
⚛️ **原子性** - 批量交易全成功或全失败
🔒 **私有 Mempool** - 交易不在公开池暴露
📦 **顺序保证** - 多笔交易按指定顺序执行
🚀 **生产就绪** - 经过实战验证的 MEV 保护方案
## 安装
```bash
npm i four-flap-meme-sdk ethers
```
**要求**:Node.js >= 18, ESM, ethers v6
## 获取 Merkle API Key
从 [Merkle.io](https://merkle.io) 获取免费 API Key,用于 Bundle 服务。
## 浏览器环境 CORS 支持
SDK 已内置 Cloudflare Workers 代理,**浏览器环境可直接使用,无需额外配置**:
```typescript
import { FourClient } from 'four-flap-meme-sdk';
// 直接创建,默认使用已配置好的 CORS 代理
const fourClient = new FourClient();
// 或自定义代理地址(可选)
const fourClient = new FourClient({
baseUrl: 'https://your-worker.workers.dev'
});
```
详见:[CLOUDFLARE_WORKER_GUIDE.md](./CLOUDFLARE_WORKER_GUIDE.md)
---
## Four.meme Bundle 方法
### 1. 创建代币 + 原子化批量买入
```typescript
import { createTokenWithBundleBuyMerkle } from 'four-flap-meme-sdk';
const result = await createTokenWithBundleBuyMerkle({
// privateKeys[0] 是创建者/付费者,其余是买家
privateKeys: [
'0x...创建者私钥',
'0x...买家1',
'0x...买家2'
],
buyAmounts: ['0.5', '1.0'], // 对应买家1和买家2
tokenInfo: {
name: 'My Token',
symbol: 'MTK',
description: '革命性代币',
label: 'Meme'
},
config: {
apiKey: 'YOUR_MERKLE_API_KEY',
rpcUrl: 'https://bsc-dataseed.binance.org'
}
});
console.log('Bundle Hash:', result.bundleHash);
console.log('代币地址:', result.tokenAddress);
```
### 2. 批量买入(内盘)
```typescript
import { batchBuyWithBundleMerkle } from 'four-flap-meme-sdk';
await batchBuyWithBundleMerkle({
privateKeys: ['0x...买家1', '0x...买家2', '0x...买家3'],
buyAmounts: ['0.3', '0.5', '0.2'],
tokenAddress: '0x...代币地址',
config: { apiKey: 'YOUR_MERKLE_API_KEY' }
});
```
### 3. 批量卖出(内盘)
```typescript
import { batchSellWithBundleMerkle } from 'four-flap-meme-sdk';
// 需先授权
await batchSellWithBundleMerkle({
privateKeys: ['0x...卖家1', '0x...卖家2'],
sellAmounts: ['1000', '2000'],
tokenAddress: '0x...代币地址',
config: { apiKey: 'YOUR_MERKLE_API_KEY' }
});
```
### 4. 批量授权
```typescript
import { approveFourBatchMerkle } from 'four-flap-meme-sdk';
await approveFourBatchMerkle({
privateKeys: ['0x...地址1', '0x...地址2'],
tokenAddress: '0x...代币地址',
config: { apiKey: 'YOUR_MERKLE_API_KEY' }
});
```
### 5. PancakeSwap V2 批量交易(外盘)
```typescript
import {
fourPancakeProxyBatchBuyMerkle,
fourPancakeProxyBatchSellMerkle
} from 'four-flap-meme-sdk';
// V2 批量买入
await fourPancakeProxyBatchBuyMerkle({
privateKeys: ['0x...买家1', '0x...买家2'],
buyAmounts: ['0.5', '1.0'],
paths: [
['0x...WBNB', '0x...TOKEN'],
['0x...WBNB', '0x...TOKEN']
],
routeType: 'v2',
config: { apiKey: 'YOUR_MERKLE_API_KEY' }
});
// V2 批量卖出
await fourPancakeProxyBatchSellMerkle({
privateKeys: ['0x...卖家1', '0x...卖家2'],
sellAmounts: ['1000', '2000'],
paths: [
['0x...TOKEN', '0x...WBNB'],
['0x...TOKEN', '0x...WBNB']
],
routeType: 'v2',
config: { apiKey: 'YOUR_MERKLE_API_KEY' }
});
```
### 6. PancakeSwap V3 批量交易(外盘)
```typescript
// V3 单跳买入
await fourPancakeProxyBatchBuyMerkle({
privateKeys: ['0x...买家1', '0x...买家2'],
buyAmounts: ['0.5', '1.0'],
tokenIn: '0x...WBNB',
tokenOut: '0x...TOKEN',
fee: 2500, // 0.25%
routeType: 'v3-single',
config: { apiKey: 'YOUR_MERKLE_API_KEY' }
});
// V3 多跳买入
await fourPancakeProxyBatchBuyMerkle({
privateKeys: ['0x...买家1'],
buyAmounts: ['0.5'],
lpAddresses: ['0x...WBNB_USDT_LP', '0x...USDT_TOKEN_LP'],
exactTokenIn: '0x...WBNB',
routeType: 'v3-multi',
config: { apiKey: 'YOUR_MERKLE_API_KEY' }
});
```
---
## Flap Protocol Bundle 方法
### 1. 创建代币 + 原子化批量买入
```typescript
import { flapCreateTokenWithBundleBuyMerkle } from 'four-flap-meme-sdk';
const result = await flapCreateTokenWithBundleBuyMerkle({
chain: 'BSC',
// privateKeys[0] 是创建者/付费者,其余是买家
privateKeys: [
'0x...创建者私钥',
'0x...买家1',
'0x...买家2'
],
buyAmounts: ['0.5', '1.0'], // 对应买家1和买家2
tokenInfo: {
name: 'My Flap Token',
symbol: 'MFT',
meta: 'QmXxx...' // IPFS CID
},
config: {
apiKey: 'YOUR_MERKLE_API_KEY',
rpcUrl: 'https://bsc-dataseed.binance.org'
},
dexThresh: 1,
migratorType: 0,
taxRate: 0,
salt: '0x' + '00'.repeat(32)
});
console.log('Bundle Hash:', result.bundleHash);
```
### 2. 批量买入/卖出(内盘)
```typescript
import {
flapBatchBuyWithBundleMerkle,
flapBatchSellWithBundleMerkle
} from 'four-flap-meme-sdk';
// 批量买入
await flapBatchBuyWithBundleMerkle({
chain: 'BSC',
privateKeys: ['0x...买家1', '0x...买家2'],
buyAmounts: ['0.5', '1.0'],
tokenAddress: '0x...代币地址',
config: { apiKey: 'YOUR_MERKLE_API_KEY' }
});
// 批量卖出
await flapBatchSellWithBundleMerkle({
chain: 'BSC',
privateKeys: ['0x...卖家1', '0x...卖家2'],
sellAmounts: ['1000', '2000'],
tokenAddress: '0x...代币地址',
config: { apiKey: 'YOUR_MERKLE_API_KEY' }
});
```
### 3. PancakeSwap V2/V3 批量交易(外盘)
```typescript
import {
flapPancakeProxyBatchBuyMerkle,
flapPancakeProxyBatchSellMerkle
} from 'four-flap-meme-sdk';
// V2 批量买入
await flapPancakeProxyBatchBuyMerkle({
chain: 'BSC',
privateKeys: ['0x...买家1', '0x...买家2'],
buyAmounts: ['0.5', '1.0'],
paths: [
['0x...WBNB', '0x...TOKEN'],
['0x...WBNB', '0x...TOKEN']
],
routeType: 'v2',
config: { apiKey: 'YOUR_MERKLE_API_KEY' }
});
// V3 单跳卖出
await flapPancakeProxyBatchSellMerkle({
chain: 'BSC',
privateKeys: ['0x...卖家1', '0x...卖家2'],
sellAmounts: ['1000', '2000'],
tokenIn: '0x...TOKEN',
tokenOut: '0x...WBNB',
fee: 2500,
routeType: 'v3-single',
config: { apiKey: 'YOUR_MERKLE_API_KEY' }
});
```
---
## 配置选项
```typescript
type BundleMerkleConfig = {
apiKey: string; // Merkle API Key(必填)
rpcUrl?: string; // RPC 节点(可选)
bundleBlockOffset?: number; // Bundle 有效期,默认 200 区块
gasLimitMultiplier?: number; // Gas limit 倍数,默认 1.2
waitTimeoutMs?: number; // 等待超时,默认 120000ms
slippageBps?: number; // 滑点基点,默认 100 (1%)
txType?: 0 | 2; // 交易类型,0=Legacy, 2=EIP-1559
};
```
---
## 支持的链
- **BSC**(币安智能链)- Four.meme & Flap Protocol
- **Base** - Flap Protocol
- **X Layer** - Flap Protocol
- **Morph** - Flap Protocol
- **Arbitrum One** - Four.meme
---
## 文档
📚 **完整指南**:
- [MERKLE_BUNDLE_COMPLETE_GUIDE.md](./MERKLE_BUNDLE_COMPLETE_GUIDE.md) - 详细的 Merkle Bundle 使用指南
- [README.zh-CN.md](./README.zh-CN.md) - 完整 API 参考(包含所有方法)
📖 **示例代码**:
- [examples/](./examples/) - 完整示例代码
---
## 关键概念
### 内盘 vs 外盘
- **内盘**:代币在联合曲线上交易,价格由数学公式决定
- **外盘**:代币已迁移到 DEX(PancakeSwap),价格由市场决定
### MEV 保护
- **抢跑保护**:交易不在公开 mempool 暴露
- **三明治攻击保护**:Bundle 原子化执行
- **顺序保证**:多笔交易按指定顺序执行
### 原子性
- 批量交易全成功或全失败
- 创建 + 购买在同一 Bundle 中
- 防止部分执行导致的资金损失
---
## 常见问题
**Q: 为什么只推荐 Merkle Bundle 方法?**
A: 生产环境必须使用 MEV 保护,防止抢跑和三明治攻击。Merkle Bundle 是目前最可靠的 MEV 保护方案。
**Q: Merkle API Key 如何获取?**
A: 访问 [Merkle.io](https://merkle.io) 注册并获取免费 API Key。
**Q: Bundle 交易失败怎么办?**
A: 检查配置参数(gasLimit、blockOffset、slippage),确保所有地址有足够余额,适当增大超时时间。
**Q: 支持哪些 DEX?**
A: 目前支持 PancakeSwap V2/V3(通过自定义代理合约)。
**Q: 如何处理 nonce 冲突?**
A: SDK 内置 NonceManager,自动管理所有地址的 nonce,避免冲突。
---
## 许可
MIT
---
**🚀 开始使用 Merkle Bundle 保护你的交易!**