这是「吃瓜群众自治社」旗下 GUA 币(GUA Token) 的主仓库。
目标不是“发一个币”,而是把它做成一条 可运行、可验证、可持续 的闭环系统:
✅ 发放(Airdrop):成员自己领取(Claim),不靠人工逐个转账
✅ 使用(Voting / Staking):用 GUA 投票决定本期视频选题/决策
✅ 兑现(Escrow → Reward):投票锁仓的币不是口嗨,会按条件自动发给 Topic Owner(创作者)
✅ 持续(Emission / Incentive):空投发完后,贡献者还能持续获得 GUA(按贡献发放、按期领取)
⚠️ 重要提示
- 参与投票的锁仓 GUA 不会退回:它进入“赏金池”,最终用于支付创作者或进入 Treasury。
- 本项目不承诺任何金融收益,不构成投资建议。
本仓库专门把任务拆成可认领的 Issue,欢迎不同类型的贡献者:
- Solidity / Foundry(合约与测试)
- 前端 dApp(领取、投票、提交交付、质疑)
- 脚本与数据(Merkle tree、snapshot、生成领取列表)
- 文档与规范(流程、参数、反诈骗、安全说明)
👉 从 Issues 入手,优先认领带 good first issue 的任务。
- 我们发布一份领取名单(地址 + 数量)
- 离线生成 Merkle root,上链
- 用户自己
claim(amount, proof)领取(防重复领取)
- 每期视频一次(一期一投票)
- 用 GUA 锁仓投票:锁仓池 = 本期赏金池
- 投票截止后 winner = 锁仓最多的 Topic
- Admin 确认采用 winner → 立即支付 10%(订金)
- 创作者 14 天内提交交付证明
- 提交后 72h 质疑期:
- 无质疑 → 自动支付剩余 90%
- 有质疑 → 进入争议(v0.1 由 Admin 仲裁)
- 空投后,贡献者通过贡献获得“下一期领取额度”
- 仍采用 Merkle 方式:每期/每周发布新 root
- 贡献者自己领取(Claim),链上可验证、操作简单
submitDeadline:14 dayschallengeWindow:72 hours
payoutSplit:10% / 90%- 投票锁仓池:不退回(进入赏金池或 Treasury)
challengeBond:10,000 GUAchallengeReward:5,000 GUA(从 Treasury 额外奖励)- 质疑失败:bond 全进 Treasury
- 质疑成功:bond 退回 + Treasury 额外奖励 5,000 GUA
- 超时未提交交付:剩余 90% → Treasury
- 争议仲裁 deny:剩余 90% → Treasury
完整规则见:docs/spec-v0.1.md
创作者提交交付时,必须在视频置顶评论粘贴固定格式文本:
GUA-DELIVER:<proposalId>:<topicId>:<ownerWallet>:<nonce>
ownerWallet必须与 Topic 创建时绑定的钱包一致nonce由前端生成(防复制旧证明)- 合约只存
pinnedCodeHash(不存完整文本) - v0.1 不依赖 YouTube API 自动校验:靠公开证据 + 72h 质疑期
详见:docs/pinned-comment-proof.md
部署后把占位符替换为真实地址
- Network: Base Sepolia
- GUA Token:
0x0dcd1bf9a1b36ce34237eeafef220932846bcd82 - MerkleAirdrop (Claim):
0x0b306bf915c4d645ff596e518faf3f9669b97016 - TopicBountyEscrow (Vote+Payout):
0xc6e7df5e7b4f2a278906862b61205850344d4e7d - Treasury:
0x04caa97d9c6ffbcebf0edd924f110df28989ffcb - Admin:
0x04caa97d9c6ffbcebf0edd924f110df28989ffcb
├── contracts/
│ └── (Upgradeable UUPS Contracts) # ✅ GUAToken, TopicBountyEscrow, MerkleAirdrop
├── script/
│ ├── Deploy.s.sol # ✅ 部署脚本(Foundry)
│ ├── deploy.ps1 # ✅ Windows 一键部署脚本
│ ├── deploy.sh # ✅ Linux/Mac 一键部署脚本
│ └── update-config.js # ✅ 前端配置自动同步脚本
├── test/ # ✅ 包含所有合约的单元测试
├── dapp/ # ✅ Next.js 前端应用
│ ├── config.json # 自动同步的合约地址配置
│ └── .env # 前端私有配置 (WalletConnect ID)
├── docs/ # 系统设计文档
├── openspec/ # OpenSpec 规范
├── foundry.toml # Foundry 配置
└── README.md # 本文件
状态说明:
- ✅ 已完成
- Foundry: Install Guide
- Node.js: (For frontend & automation scripts)
- Git
# Install Submodules (Foundry)
forge install
# Install NPM packages (Frontend & Scripts)
npm install
cd dapp && npm install && cd ..Copy the example environment files and fill in your details:
Backend (.env):
cp .env.example .env
# Edit .env and set PRIVATE_KEY, OWNER_ADDRESS, etc.Frontend (dapp/.env):
cp dapp/.env.template dapp/.env
# Edit dapp/.env and set NEXT_PUBLIC_WALLET_CONNECT_PROJECT_IDforge build
forge testWe provide automation scripts to deploy contracts and sync addresses to the frontend automatically.
Windows (PowerShell):
.\script\deploy.ps1 -Network sepoliaMac / Linux:
chmod +x script/deploy.sh
./script/deploy.sh sepoliaThis script will:
- Deploy UUPS Upgradeable contracts to Base Sepolia.
- Verify contracts on BaseScan.
- Automatically update
dapp/config.jsonand thisREADME.mdwith new addresses.
cd dapp
npm run devOpen http://localhost:3000 to interact with the DAO.
因为质疑成功需要从 Treasury 额外奖励 5,000 GUA,Treasury 必须提前给合约授权 allowance:
-
Treasury 执行:approve(TopicBountyEscrow, )
-
合约将使用:transferFrom(TREASURY, challenger, 5000 GUA)
详见:docs/treasury-ops.md
- 交易追踪:用 BaseScan 查看交易哈希与合约地址(dApp 页面提供直达链接)
- 紧急暂停:Admin 可在前端执行 Pause/Unpause,用于快速止损与排查
- 激励发布:生成新一期 root → 更新合约 root → 公布 proofs.json
目标:跑通 一次完整闭环,证明系统可用。
-
发布一份测试空投名单(50 个地址)
-
用户自己 Claim 领取 GUA(MerkleAirdrop)
-
开一轮投票:3–5 个 Topic,锁仓投票决定 winner
-
Admin 确认采用 winner → 支付 10%
-
创作者提交交付 → 72h 无质疑 → 支付 90%
-
发布下一期“贡献领取”名单(Merkle root 更新)→ 贡献者自己 Claim
流程:
-
在 Issues 认领任务(留言 “I’ll take this”)
-
Fork 仓库 → 新建分支开发
-
提交 PR:说明做了什么、如何验证、测试结果/截图
-
Review 通过后合并
建议从 good first issue 开始。
-
我们不会私聊索要助记词/私钥/转账
-
官方链接仅以公告渠道为准
-
任何自称“官方人员”私聊你要你操作钱包的,基本都是骗子
-
Code: MIT
-
Docs: CC BY-NC 4.0(可选)
提交代码/文档即表示你有权贡献并同意本项目许可条款。 ::contentReference[oaicite:0]{index=0}