肥皂盒VRF验证功能上线, 绝对公平无法造假,结果公开可查验!
肥皂盒已上线VRF验证功能,展示每次订单的计算结果及公式
证明其抽取的随机性及概率不可人为调控
请更新app至【安卓端3.1.0】、【ios端2.1.01】最新版本后,于【肥皂盒订单-背包管理-全部订单】内查看证明,VRF验证功能仅适用于2026/5/26起肥皂盒订单
VRF为可验证计算且无法造假的随机函数生成工具
下面将对其的计算逻辑进行简要说明
一、我们的抽奖如何保证公平?
本抽奖使用 VRF(Verifiable Random Function,可验证随机函数)生成随机数。
简单来说:
每次抽奖的随机数都是系统实时生成
任何人都无法提前知道结果
平台无法人为指定用户中奖
抽奖结束后,所有人都可以自行验证结果
VRF 的核心作用是:
“既随机,又可以公开验证没有作弊”
二、什么是 VRF?
VRF 可以理解为:
“带证明的随机数”
普通随机数的问题是:
用户无法确认是不是后台自动生成
平台理论上可以偷偷修改结果
而 VRF 会同时生成:
1.一个随机数
2.一个对应的验证证明(Proof)
任何人都可以通过:
VRF 公钥(Public Key)
抽奖参数(Seed),明细Id + "|" + 时间戳
随机字符串(Random Output)
验证凭证(Proof)
来验证:
该随机数确实由系统生成
随机数未被修改
平台无法事后篡改
页面会公开以下信息:
VRF 公钥
本次随机字符串
本次随机数
验证凭证 Proof
抽奖时奖池数据
中奖序号
因此所有用户都可以自行验证自己的抽奖结果。
三、奖品是如何分配的?
每个肥皂盒内有固定数量奖品。
奖品数量,奖品等级由卖家配置上传,卖家上传开售后无法更改。
例如:
| 奖品 | 剩余数量 |
|---|---|
| 奖品1 | 1 |
| 奖品2 | 3 |
| 奖品3 | 5 |
| 奖品4 | 11 |
当前总剩余奖品数量:
20 个
奖品不会无限生成。
每抽走一个:
对应奖品数量减少
总奖品数量减少
后续中奖概率实时变化
因此:
每次抽奖都基于“当前真实剩余奖池”计算。
四、中奖序号如何计算?
系统会先生成一个32 字节的 VRF 随机字符串,截取前 8 字节,右移 11 位 ,提取其中最可靠的 53 个随机比特(Java中double类型最多能精确表示 53 位有效二进制位),然后映射成一个 [0,1) 之间的双精度浮点随机数 。
随机字符串:8753c474e66827714eb7dc3c0ce6e7e1f5d59a46679006f3877325bb2eb56e74
随机数:0.5286219392204718
当前奖池剩余奖品总数:20
计算方式:
随机数 × 当前剩余奖品总数
即:
0.5286219392204718 × 20 = 10.572438784409436
然后:
仅取整数位
得到:
10
这个数字:
就是本次抽奖的中奖序号。
五、中奖序号如何对应奖品?
系统会根据当前奖池剩余情况,为所有奖品分配连续范围。
例如当前奖池:
| 奖品 | 数量 | 对应范围 |
|---|---|---|
| 奖品1 | 1 | 0 |
| 奖品2 | 3 | 1~3 |
| 奖品3 | 5 | 4~8 |
| 奖品4 | 11 | 9~19 |
如果本次中奖序号为:
10
则:
10 落在:
奖品4 奖品范围(9~19)
因此最终中奖结果为:
奖品4。
六、为什么奖品范围会变化?
因为奖池是实时减少的。
例如:
奖品4被抽走后:
| 奖品类型 | 剩余数量 |
|---|---|
| 奖品1 | 1 |
| 奖品2 | 3 |
| 奖品3 | 5 |
| 奖品4 | 10 |
总数量变为:
19
对应范围也会重新计算。
因此:
每一次抽奖,都是基于“当前剩余奖池”重新生成中奖范围。
七、用户如何自行验证?
用户可根据页面公开信息自行复算:
- 查看订单内抽奖时奖池总数量
- 查看订单内各奖品对应范围
- 获取 VRF 随机数
- 使用公式:
中奖随机数 × 抽奖时奖池奖品总数 - 对结果仅取整数位
- 查看该数字落在哪个奖品范围内
即可得到与系统一致的中奖结果。
同时还可以使用:
VRF 公钥
Proof 验证凭证
验证随机数真实性。
八、重要说明
平台无法提前指定中奖结果
平台无法修改 VRF 已生成随机数
所有中奖结果均可公开验证
奖池数量实时减少,不会无限补充
每次抽奖概率都会随剩余奖品动态变化
本机制旨在确保:
抽奖过程公开、透明、可验证。