一个基于 Monad Testnet 构建的去中心化、透明且公平的抢票裁定引擎。本项目旨在利用区块链技术解决稀缺资源高并发抢夺场景下的信任与公平性问题,确保结果透明不可篡改。
抢票裁定引擎 允许主办方发布限量票务活动,用户通过“先到先得”的方式参与抢票。每一次成功的抢票都会实时铸造一枚唯一的 ERC721 NFT 门票 并发送至用户的钱包。
核心解决的问题:
- 公平性:拒绝暗箱操作和后台预留。
- 透明性:剩余票数和交易结果全链上实时可见。
- 所有权:门票即资产(NFT),真正由用户持有。
- 🛡️ 链上公平验证:所有裁定逻辑(检查时间、剩余票数、限购规则)均由智能合约
TicketEngine.sol原子化执行。 - ⚡ 适配高并发:专为 Monad 区块链的高吞吐能力设计,从容应对抢票流量。
- 🖼️ 链上 SVG NFT:门票以 ERC721 标准铸造,且图片元数据(SVG)直接由合约动态生成,无需依赖中心化存储。
- 📱 现代化交互:基于 Next.js 和 TailwindCSS 构建的丝滑前端体验。
- 👤 个人资产中心:提供“我的”页面,集中展示抢到的 NFT 门票和历史参与记录。
- 🛠️ 零代码发布:主办方通过前端界面即可创建并发布上链活动。
- 区块链网络: Monad Testnet (EVM 兼容)
- 合约框架: Hardhat
- 前端框架: Next.js (React)
- UI 样式: TailwindCSS + DaisyUI
- Web3 集成: Wagmi, Viem, RainbowKit
- 合约标准: ERC721 (OpenZeppelin)
git clone https://github.com/your-username/ticket-allocation-engine.git
cd ticket-allocation-engineyarn install生成新的燃烧钱包(Burner Wallet)或导入已有私钥:
yarn generate
# 或者
# yarn account:import注意: 确保你的部署账户在 Monad Testnet 有足够的测试代币(MON)。
将 TicketEngine 合约部署到 Monad 测试网:
yarn deploy --network monadTestnet如果需重置合约状态(强制重新部署):
yarn deploy --network monadTestnet --reset在本地启动 Next.js 应用:
yarn start访问 http://localhost:3000 即可开始交互。
├── packages
│ ├── hardhat
│ │ ├── contracts
│ │ │ └── TicketEngine.sol # 核心智能合约逻辑
│ │ ├── deploy # 部署脚本
│ │ └── scripts # 工具脚本
│ └── nextjs
│ ├── app # Next.js App Router 页面
│ │ ├── create # “创建活动”页
│ │ ├── event/[id] # “活动详情”页
│ │ └── me # “个人中心/票夹”页
│ ├── components # 通用 UI 组件
│ └── scaffold.config.ts # DApp 配置文件
核心逻辑位于 TicketEngine.sol 中:
createEvent(...): 主办方调用此函数初始化并发布活动。grabTicket(...): 用户调用此函数尝试抢票。合约会严格校验:- 活动是否已开始?
- 是否还有剩余票数?
- 用户是否已持有该活动门票?(单人限购1张) 如果全部校验通过,合约将铸造并发送 NFT。
欢迎提交 Pull Request 帮助改进项目!
本项目基于 MIT License 开源。