Skip to content

Arthur19940725/MonadChogCard

Repository files navigation

🎯 Fantasy Top - NFT Card Trading System

Fantasy Top Logo

基于 Monad 测试网的去中心化 NFT 卡牌交易系统

Monad Solidity License Status

🚀 快速开始📖 功能特性🛠️ 技术架构🎮 使用指南📚 API 文档


📖 项目简介

Fantasy Top 是一个基于 Monad 测试网 构建的去中心化 NFT 卡牌交易系统,灵感来源于炉石传说等知名卡牌游戏。系统支持卡包购买、NFT 卡牌交易、竞拍等完整的区块链游戏生态。

✨ 核心亮点

  • 🔓 无限制访问 - 任何钱包地址都可以登录使用
  • 🎲 公平随机 - 基于区块链的真随机数生成
  • 🏪 去中心化交易 - 完全基于智能合约的 P2P 交易
  • 💎 稀有度系统 - 四级稀有度分布机制
  • 🌐 多钱包支持 - 兼容 MetaMask、OKX Wallet 等主流钱包

🌐 在线演示

功能 链接 描述
🎮 主应用 http://localhost:3000 完整的 NFT 交易系统
🔧 调试页面 http://localhost:3000/debug.html 钱包连接测试
🧪 兼容性测试 http://localhost:3000/test.html 多钱包兼容性验证
👥 多用户演示 http://localhost:3000/access.html 展示无限制访问特性

📊 系统状态

🔗 合约地址 (Monad 测试网)

合约 地址 功能
FantasyCard 0xe8c3437119573cE3D8F73Ea76f2D30A26322f257 ERC721 NFT 卡牌合约
CardPack 0x1fF37d2816d65CA519ba66b754F7dD94a58C2972 卡包购买与开启
FantasyMarketplace 0x47F741F5c512Dd73A72568f2Fa03f89E25342365 去中心化交易市场

🌍 网络信息


🚀 快速开始

📋 环境要求

  • Node.js 16.0+
  • npmyarn
  • Git
  • MetaMaskOKX Wallet

⚡ 一键启动

# 克隆项目
git clone <repository-url>
cd MonadChogCard

# 安装依赖
npm install

# 启动系统
./start.sh

🛠️ 手动部署

# 1. 安装依赖
npm install

# 2. 编译合约
npx hardhat compile

# 3. 部署到 Monad 测试网
npx hardhat run scripts/deploy.js --network monad-testnet

# 4. 启动前端
cd frontend && npm run dev

💰 获取测试币

  1. 访问 Monad 测试网水龙头
  2. 输入您的钱包地址
  3. 获取 MON 测试币

🎮 功能特性

🎁 卡包系统

  • 价格: 0.01 MON = 10 张随机 NFT 卡牌
  • 即时开启: 购买后立即获得卡牌
  • 公平分布: 基于区块哈希的真随机数

💎 稀有度分布

稀有度 概率 颜色标识 属性加成
🔵 普通 60% 灰色边框 基础属性
🟣 稀有 29% 蓝色边框 属性提升 40%
🟠 史诗 10% 紫色边框 属性提升 70%
🟡 传奇 1% 金色边框 属性提升 90%

🏪 去中心化交易市场

交易功能

  • 直接销售 - 固定价格即时交易
  • 竞拍系统 - 出价竞争获得 NFT
  • 历史记录 - 完整的链上交易追踪
  • 价格发现 - 市场驱动的价格机制

费用结构

  • 市场手续费: 2.5%
  • Gas 费用: 由 Monad 网络决定
  • 无隐藏费用: 所有费用透明公开

🃏 NFT 卡牌系统

卡牌属性

{
  "attack": "1-10",      // 攻击力
  "health": "1-10",      // 生命值
  "cost": "1-12",        // 法力消耗
  "rarity": "0-3",       // 稀有度等级
  "cardType": "0-2",     // 卡牌类型
  "dna": "uint256",      // 唯一标识符
  "name": "string",      // 卡牌名称
  "description": "string" // 卡牌描述
}

卡牌类型

  • 🗡️ 随从 - 战场上的战斗单位
  • ✨ 法术 - 一次性效果法术
  • ⚔️ 武器 - 增强战斗能力

🛠️ 技术架构

📦 项目结构

MonadChogCard/
├── contracts/                 # 智能合约
│   ├── FantasyCard.sol        # ERC721 NFT 合约
│   ├── CardPack.sol           # 卡包系统合约
│   └── FantasyMarketplace.sol # 交易市场合约
├── frontend/                  # 前端应用
│   ├── public/
│   │   ├── index.html         # 主页面
│   │   ├── app.js             # 核心逻辑
│   │   ├── style.css          # 样式文件
│   │   ├── debug.html         # 调试页面
│   │   ├── test.html          # 测试页面
│   │   └── access.html        # 多用户演示
│   └── package.json
├── scripts/                   # 部署脚本
│   ├── deploy.js              # 合约部署
│   ├── status.js              # 系统状态查询
│   ├── interact.js            # 合约交互演示
│   └── multi-user-test.js     # 多用户测试
├── test/                      # 测试文件
│   └── FantasyTop.test.js     # 合约单元测试
├── hardhat.config.js          # Hardhat 配置
├── package.json               # 项目依赖
└── README.md                  # 项目文档

🔧 技术栈

智能合约

  • Solidity 0.8.20 - 合约开发语言
  • OpenZeppelin - 安全的合约库
  • Hardhat - 开发框架
  • Ethers.js v6 - 区块链交互库

前端技术

  • Vanilla JavaScript - 纯 JavaScript 实现
  • HTML5/CSS3 - 现代化界面
  • Ethers.js - 钱包连接与合约交互
  • HTTP Server - 轻量级服务器

区块链网络

  • Monad Testnet - 高性能 EVM 兼容链
  • Chain ID: 10143
  • Gas Token: MON

🎯 使用指南

👛 钱包设置

配置 Monad 测试网

  1. 打开钱包设置
  2. 添加自定义网络
  3. 输入网络信息:
    网络名称: Monad Testnet
    Chain ID: 10143
    RPC URL: https://testnet-rpc.monad.xyz
    货币符号: MON
    区块浏览器: https://testnet.monadexplorer.com
    

🎮 游戏流程

1. 连接钱包

// 支持的钱包
- MetaMask
- OKX Wallet
- 任何 EVM 兼容钱包

2. 购买卡包

// 调用合约函数
CardPack.buyPack() payable
// 价格: 0.01 MON
// 获得: 10 张随机 NFT 卡牌

3. 交易 NFT

// 上架销售
Marketplace.listItem(tokenId, price)

// 直接购买
Marketplace.buyItem(tokenId) payable

// 竞拍出价
Marketplace.placeBid(tokenId) payable

📚 API 文档

🔌 智能合约接口

FantasyCard.sol (ERC721)

// 查询卡牌属性
function cardAttributes(uint256 tokenId) 
    view returns (CardAttributes memory)

// 创建新卡牌 (仅 Owner)
function createCard(address to) 
    onlyOwner returns (uint256)

// 查询总供应量
function totalSupply() view returns (uint256)

CardPack.sol

// 购买卡包
function buyPack() payable

// 查询用户卡牌
function getUserCards(address user) 
    view returns (uint256[] memory)

// 查询卡包价格
function getPackPrice() pure returns (uint256)

FantasyMarketplace.sol

// 上架商品
function listItem(uint256 tokenId, uint256 price)

// 购买商品
function buyItem(uint256 tokenId) payable

// 出价竞拍
function placeBid(uint256 tokenId) payable

// 接受竞拍
function acceptBid(uint256 tokenId, address bidder)

🌐 前端 API

钱包连接

// 连接钱包 (支持 MetaMask/OKX)
await connectWallet()

// 检查网络
const network = await provider.getNetwork()

// 切换到 Monad 测试网
await switchToMonadTestnet()

合约交互

// 购买卡包
await contracts.cardPack.buyPack({ value: packPrice })

// 上架 NFT
await contracts.marketplace.listItem(tokenId, price)

// 查询用户资产
const userCards = await contracts.cardPack.getUserCards(address)

🧪 测试

🔍 运行测试

# 运行所有测试
npx hardhat test

# 查看系统状态
npx hardhat run scripts/status.js --network monad-testnet

# 测试多用户访问
npx hardhat run scripts/multi-user-test.js --network monad-testnet

# 合约交互演示
npx hardhat run scripts/interact.js --network monad-testnet

📊 测试覆盖

  • 卡包购买 - 价格验证、随机性测试
  • NFT 生成 - 属性分布、DNA 唯一性
  • 市场交易 - 上架、购买、竞拍流程
  • 事件追踪 - 所有关键操作的事件记录
  • 多用户访问 - 钱包兼容性与权限测试

🔒 安全特性

🛡️ 智能合约安全

  • ReentrancyGuard - 防重入攻击
  • Ownable - 权限管理
  • SafeMath - 溢出保护 (Solidity 0.8+)
  • 输入验证 - 严格的参数检查

🔐 前端安全

  • 钱包验证 - 多重签名验证
  • 网络检查 - 自动切换到正确网络
  • 错误处理 - 全面的异常捕获
  • 用户提示 - 清晰的操作反馈

💰 资金安全

  • 合约审计 - 基于 OpenZeppelin 标准
  • 测试覆盖 - 完整的单元测试
  • 事件日志 - 所有操作可追踪
  • 去中心化 - 无单点故障

🌍 多语言支持

系统支持多种语言,为全球用户提供友好的使用体验:

  • 🇨🇳 中文 (默认)
  • 🇺🇸 English
  • 🇯🇵 日本語
  • 🇰🇷 한국어

🤝 贡献指南

我们欢迎所有形式的贡献!

📝 提交流程

  1. Fork 项目仓库
  2. 创建 功能分支 (git checkout -b feature/amazing-feature)
  3. 提交 更改 (git commit -m 'Add amazing feature')
  4. 推送 分支 (git push origin feature/amazing-feature)
  5. 创建 Pull Request

🐛 报告问题

  • 使用 Issues 报告 Bug
  • 提供详细的错误描述和复现步骤
  • 附上相关的日志信息

💡 功能建议

  • Discussions 中提出新想法
  • 描述功能的用途和价值
  • 考虑实现的可行性

📈 路线图

🚀 已完成 (v1.0)

  • ✅ 基础 NFT 卡牌系统
  • ✅ 卡包购买与开启
  • ✅ 去中心化交易市场
  • ✅ 多钱包支持
  • ✅ Monad 测试网部署

🔄 进行中 (v1.1)

  • 🔄 移动端适配
  • 🔄 多语言国际化
  • 🔄 高级筛选功能
  • 🔄 交易数据分析

📅 计划中 (v2.0)

  • 📋 卡牌战斗系统
  • 📋 锦标赛模式
  • 📋 社交功能
  • 📋 DAO 治理
  • 📋 主网部署

📞 联系我们

🔗 相关链接

📧 联系方式


📄 许可证

本项目基于 MIT License 开源协议。

MIT License

Copyright (c) 2024 Fantasy Top Team

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

🙏 致谢

特别感谢以下项目和团队:


🎊 Fantasy Top - 让 NFT 交易更有趣!🎊

🚀 立即开始📖 详细文档🔧 开发指南


如果这个项目对您有帮助,请给我们一个 ⭐ Star!

GitHub stars GitHub forks

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors