中文 | English
一个为 Ingress First Saturday 活动设计的可复现、可校验抽奖系统。
项目简介
用户只需要:
- 上传一张图片(例如 IFS 活动合照)
- 输入一个字符串(例如当场公布的 passcode)
系统就会基于这两个输入生成固定随机种子,并据此产出可重复、可校验的抽奖结果。
它特别适合 IFS 等需要公开透明、可复核结果的活动场景:相同输入一定得到相同结果,任一输入变化都会改变结果,同一次抽奖中中奖者不会重复。
功能特点
- 使用图片内容计算 SHA-256 Hash
- 使用输入字符串计算 SHA-256 Hash
- 将两者组合为固定 Seed
- 基于 Seed 进行伪随机抽奖
- 支持最多 1000 人参与
- 中奖序号不会重复
- 页面直接展示复现所需信息:图片 Hash、字符串 Hash、Seed、中奖序号
使用方法
- 上传图片。
- 输入字符串 / Passcode。
- 输入抽奖总人数和中奖人数。
- 点击“开始抽奖”。
- 页面会展示图片 Hash、字符串 Hash、Seed 与中奖序号,便于现场公示和复核。
如何校验抽奖结果
如果要验证某次抽奖是否可信,只需要重新输入完全相同的信息:
- 同一张图片文件
- 同一个字符串
- 相同的总人数
- 相同的中奖人数
只要输入完全一致,系统就应产生:
- 相同的图片 Hash
- 相同的字符串 Hash
- 相同的 Seed
- 相同的中奖序号
任意一项输入发生变化,结果也会随之变化。
输入限制
- 抽奖总人数必须是 1 ~ 1000 之间的整数
- 中奖人数必须是 大于等于 0 的整数
- 中奖人数不能大于总人数
- 同一次抽奖中,中奖者不会重复
- 当中奖人数为 0 时,系统不会返回中奖序号
结果说明
系统返回的是中奖序号,例如 #3、#17、#52。使用前请先约定参与者与序号之间的对应关系,例如报名顺序、签到顺序或现场编号。
本地运行
如果你想在本地启动这个页面:
npm install
npm run dev
启动后在浏览器打开本地开发地址即可使用。
适用范围
本项目适合作为:
- IFS 活动抽奖工具
- 小型活动的公开可复现抽奖页面
- 需要“可验证随机性”的简单抽奖场景