Skip to content

一个基于 Monad Testnet 构建的去中心化、透明且公平的抢票裁定引擎。

License

Notifications You must be signed in to change notification settings

ccclucky/ticket-allocation-engine

Repository files navigation

🎟️ 抢票裁定引擎 (Ticket Allocation Engine - MVP)

一个基于 Monad Testnet 构建的去中心化、透明且公平的抢票裁定引擎。本项目旨在利用区块链技术解决稀缺资源高并发抢夺场景下的信任与公平性问题,确保结果透明不可篡改。

Status Network

📖 项目概述

抢票裁定引擎 允许主办方发布限量票务活动,用户通过“先到先得”的方式参与抢票。每一次成功的抢票都会实时铸造一枚唯一的 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)

🚀 快速开始

前置要求

1. 克隆仓库

git clone https://github.com/your-username/ticket-allocation-engine.git
cd ticket-allocation-engine

2. 安装依赖

yarn install

3. 配置部署账户

生成新的燃烧钱包(Burner Wallet)或导入已有私钥:

yarn generate
# 或者
# yarn account:import

注意: 确保你的部署账户在 Monad Testnet 有足够的测试代币(MON)。

4. 部署智能合约

TicketEngine 合约部署到 Monad 测试网:

yarn deploy --network monadTestnet

如果需重置合约状态(强制重新部署):

yarn deploy --network monadTestnet --reset

5. 启动前端

在本地启动 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. 活动是否已开始?
    2. 是否还有剩余票数?
    3. 用户是否已持有该活动门票?(单人限购1张) 如果全部校验通过,合约将铸造并发送 NFT。

🤝 贡献指南

欢迎提交 Pull Request 帮助改进项目!

📄 许可证

本项目基于 MIT License 开源。

About

一个基于 Monad Testnet 构建的去中心化、透明且公平的抢票裁定引擎。

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages