基于 Solana 的去中心化代币发行平台 - 使用 Bonding Curve 机制实现公平发行和自动做市
- ✅ 100% 原创代码实现
- ✅ 基于标准 AMM 算法(Uniswap V2)
- ❌ 并非 Pump.fun 官方代码(Pump.fun 是闭源的)
- 📚 详细说明请查看 DISCLAIMER.md
这是 Pump.fun 概念的完整协议实现,包含详细的中文注释和文档。本项目使用 Solana Anchor 框架构建,实现了一个功能完整、生产就绪的代币发行和交易平台。
- ✅ 完整功能 - 代币创建、买卖交易、流动性迁移
- ✅ 详细注释 - 所有代码都有中文注释
- ✅ 生产就绪 - 完整的错误处理和安全机制
- ✅ 数学严谨 - 精确的 bonding curve 实现
- ✅ 文档齐全 - 包含架构、技术细节、部署指南
# 1. 克隆项目
git clone <repo-url>
cd pumpfun
# 2. 安装依赖
make install
# 3. 构建程序
make build
# 4. 部署到 Devnet
make deploy-devnet
# 5. 运行测试
make test详细说明请查看 快速入门指南
- 使用线性 bonding curve 公式:价格随供应量线性增长
- 公式:
price = initial_price + (current_supply * slope) - 提供公平且透明的价格发现机制
- 任何用户都可以创建新代币
- 设置代币元数据(名称、符号、描述、图片)
- 初始供应量固定为 1,000,000,000 代币
- 创建者获得部分初始供应量
- 用户可以使用 SOL 购买代币
- 根据 bonding curve 自动计算价格
- 代币持有者可以卖出代币获得 SOL
- 收取交易手续费
- 当代币市值达到目标(默认 69,000 SOL)时
- 自动将流动性迁移到 Raydium DEX
- 建立永久流动性池
- 实现完全去中心化交易
pumpfun/
├── programs/
│ └── pump-fun/
│ ├── src/
│ │ ├── lib.rs # 主程序入口
│ │ ├── state.rs # 状态账户定义
│ │ ├── instructions/ # 指令实现
│ │ │ ├── mod.rs
│ │ │ ├── create_token.rs # 创建代币
│ │ │ ├── buy.rs # 购买代币
│ │ │ ├── sell.rs # 卖出代币
│ │ │ └── migrate.rs # 迁移流动性
│ │ ├── errors.rs # 错误定义
│ │ └── utils.rs # 工具函数
│ └── Cargo.toml
├── Anchor.toml
├── Cargo.toml
└── package.json
- Solana 区块链:高性能、低成本
- Anchor 框架:安全的智能合约开发
- SPL Token:标准化代币实现
- Bonding Curve:自动做市机制
- 去中心化:无需许可的代币发行
# 安装依赖
yarn install
# 构建程序
anchor build
# 运行测试
anchor test
# 部署到主网
anchor deploy --provider.cluster mainnetPump.fun 使用**恒定乘积自动做市商(Constant Product AMM)**模型:
x * y = k
- 价格随购买量增加而上涨
- 公平透明的价格发现
- 无需外部流动性提供者
示例:
- 初始储备:30 SOL / 800M tokens
- 购买 1 SOL → 获得约 25.8M tokens
- 价格:~0.0000000387 SOL/token
详细原理请查看 技术文档
pumpfun/
├── programs/pump-fun/src/ # Rust 智能合约
│ ├── lib.rs # 主程序入口
│ ├── state.rs # 状态账户定义
│ ├── errors.rs # 错误类型
│ ├── utils.rs # 工具函数
│ └── instructions/ # 指令实现
│ ├── create_token.rs # 创建代币
│ ├── buy.rs # 购买代币
│ ├── sell.rs # 卖出代币
│ ├── migrate.rs # 迁移流动性
│ └── withdraw_fees.rs # 提取手续费
├── tests/ # 集成测试
├── examples/ # 使用示例
├── scripts/ # 部署脚本
└── docs/ # 文档
- ✅ 溢出保护 - 所有数学运算使用
checked_*方法 - ✅ 权限验证 - 使用 Anchor 约束严格检查
- ✅ 滑点保护 - 用户可设置最小接收量
- ✅ PDA 验证 - 确保账户正确性
- ✅ 重入防护 - 状态更新优先于转账
import { createToken } from './examples/usage';
const result = await createToken(program, creator, {
name: "My Token",
symbol: "MTK",
uri: "https://arweave.net/...",
}, {
initialVirtualSol: 30,
initialVirtualToken: 1_073_000_000,
initialRealSol: 0,
});import { buyToken } from './examples/usage';
await buyToken(
program,
buyer,
tokenMint,
1.0, // 1 SOL
100 // 1% 滑点
);更多示例请查看 examples/usage.ts
| 文档 | 说明 |
|---|---|
| 快速入门 | 5 分钟上手指南 |
| 架构文档 | 详细设计和 API 说明 |
| 技术细节 | 数学原理和实现细节 |
| 部署指南 | Devnet/Mainnet 部署 |
| 项目总结 | 完整项目概述 |
# 构建
make build
# 测试
make test
# 格式化
make format
# Lint
make lint
# 清理
make cleanmake deploy-devnetmake deploy-mainnet
# 需要约 10 SOL详细步骤请查看 部署指南
# 运行所有测试
anchor test
# 仅单元测试
cargo test-bpf
# 集成测试(需要先部署)
anchor test --skip-local-validator- create_token: ~150,000 CU
- buy: ~50,000 CU
- sell: ~50,000 CU
- migrate: ~200,000 CU
欢迎贡献!请先阅读 贡献指南
重要说明: 本项目是独立开发的教育/研究项目,并非 Pump.fun 官方代码。
- ✅ 100% 原创实现 - 所有代码均为原创编写
- ✅ 标准算法 - 基于 Uniswap V2 的恒定乘积公式(行业标准)
- ✅ 最佳实践 - 遵循 Solana/Anchor 官方文档
- Uniswap V2 Whitepaper - AMM 算法原理
- Solana Documentation - 程序开发指南
- Anchor Framework - 开发框架和模式
- Pump.fun - 功能设计灵感(观察公开功能)
详细的参考文献和代码来源说明请查看 REFERENCES.md
本项目仅供学习和研究使用。部署到主网前请:
- 完成完整的安全审计
- 充分测试所有功能
- 了解相关法律法规
- 自行承担风险
本项目与 Pump.fun 官方无任何关联。Pump.fun 是闭源项目。
MIT License - 详见 LICENSE 文件
注意: 本项目使用的所有开源依赖都遵循其各自的许可证(Apache-2.0/MIT)
- GitHub Issues: [提交问题]
- Discord: [加入社区]
- Twitter: [@项目账号]
Made with ❤️ for the Solana ecosystem
如有问题或建议,欢迎提交 Issue 或 Pull Request!