SuperAPI AI 工具集

example-leaderboard-dapp

编程与开发

查看项目

更新于 10-15 13:52

技能介绍

用途

本技能用于在 Midnight Network 上构建一个隐私保护的街机排行榜 DApp。玩家提交点击挑战分数上链,并支持三种显示模式:匿名、公开或自定义。通过 verifyOwnership 零知识电路,玩家可以证明自己拥有某条记录,而无需暴露私钥。

主要能力

  • 隐私保护:匿名模式下,显示名称由 persistentHash(sk) 生成,UI 解码为随机名称(如 "Crimson Tiger");公开/自定义模式下,使用 getCustomName() 见证提供名称。
  • 所有权证明:verifyOwnership 电路检查 ownerCommitment(secretKey) 是否与存储的 ownerHash 匹配,不泄露 secret。
  • 链上状态:scores 是公开的 Map<Uint<64>, ScoreEntry>,任何人都可通过索引器读取。
  • 完整模板:提供可运行的 Next.js 项目,包含合约、UI、部署脚本和 ZK 资产同步。

使用方式

  1. 复制 templates/leaderboard-dapp/ 目录。
  2. 安装 1AM 钱包后,运行 npm install && npm run compact && npm run sync:assets && npm run dev。
  3. 编译合约:cd contract && npm run compact && cd .. && npm run sync:assets。
  4. 启动证明服务器:docker run -d -p 6300:6300 midnightntwrk/proof-server:8.0.3 -- midnight-proof-server --network preprod。
  5. 打开 http://localhost:3000,连接 1AM 钱包,部署新合约或粘贴已有地址,进行游戏并提交分数。

适用场景

  • 需要隐私保护的排行榜应用。
  • 需要证明分数所有权的场景,如奖品领取或 "你的" 标记。
  • 希望观众无需连接钱包即可查看排行榜的 DApp。

限制

  • 需要安装 1AM 钱包扩展,并配置 Preprod 网络和证明服务器。
  • 版本兼容性需参考 references/versions.json 和官方支持矩阵。
  • 生产部署时需更新网络 ID、索引器 URL 和证明服务器配置。
  • 部分功能(如自定义名称)需在提交分数前调用 setCustomName。