Skip to content

bindoon/pumpfun

Repository files navigation

🚀 Pump.fun 核心协议(教育/研究版)

License: MIT Solana Anchor

基于 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

详细说明请查看 快速入门指南

🏗️ 核心功能

1. Bonding Curve 定价机制

  • 使用线性 bonding curve 公式:价格随供应量线性增长
  • 公式:price = initial_price + (current_supply * slope)
  • 提供公平且透明的价格发现机制

2. 代币创建

  • 任何用户都可以创建新代币
  • 设置代币元数据(名称、符号、描述、图片)
  • 初始供应量固定为 1,000,000,000 代币
  • 创建者获得部分初始供应量

3. 买卖交易

  • 用户可以使用 SOL 购买代币
  • 根据 bonding curve 自动计算价格
  • 代币持有者可以卖出代币获得 SOL
  • 收取交易手续费

4. 流动性迁移

  • 当代币市值达到目标(默认 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 mainnet

📊 Bonding Curve 机制

Pump.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 clean

🚀 部署

Devnet

make deploy-devnet

Mainnet

make 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 官方文档

主要参考

  1. Uniswap V2 Whitepaper - AMM 算法原理
  2. Solana Documentation - 程序开发指南
  3. Anchor Framework - 开发框架和模式
  4. Pump.fun - 功能设计灵感(观察公开功能)

详细的参考文献和代码来源说明请查看 REFERENCES.md

⚠️ 免责声明

本项目仅供学习和研究使用。部署到主网前请:

  1. 完成完整的安全审计
  2. 充分测试所有功能
  3. 了解相关法律法规
  4. 自行承担风险

本项目与 Pump.fun 官方无任何关联。Pump.fun 是闭源项目。

📄 许可证

MIT License - 详见 LICENSE 文件

注意: 本项目使用的所有开源依赖都遵循其各自的许可证(Apache-2.0/MIT)

🔗 相关链接

📧 联系方式

  • GitHub Issues: [提交问题]
  • Discord: [加入社区]
  • Twitter: [@项目账号]

Made with ❤️ for the Solana ecosystem

如有问题或建议,欢迎提交 Issue 或 Pull Request!

About

defi for pump.fun

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published