Anyza Club
创建登录

← 基于 Bitcoin 哈希的抽奖系统

基于 Bitcoin 哈希的抽奖如何运作

真正公平的抽奖不需要你相信任何人。这里是完整的机制——发生了什么、先后顺序以及确切的算法——供任何人核对。

免费开始抽奖
Anyza 吉祥物与抽奖地球仪和一枚比特币

第 1 步

名单被冻结

第 2 步

我们选择一个尚不存在的 Bitcoin 区块

第 3 步

算法决定中奖者

1. 名单被冻结

当组织者点击“开始抽奖”时,名字会严格按粘贴的顺序保存,每行一个:第 1 个、第 2 个、第 3 个…

同一时刻,我们会计算名单的数字指纹(SHA-256)。改动名字中的任意一个字母,整个指纹都会改变——所以它会显示在页面上:之后任何改动都会很明显。

该指纹还会通过 OpenTimestamps 记录到 Bitcoin。.ots 文件就是证明:这份确切的名单在那一刻已经存在。

2. 我们选择一个尚不存在的 Bitcoin 区块

冻结时,我们查看网络的最新区块(最高区块),并把“最高区块 + 2”固定为决定结果的区块。

区块的哈希不可预测:全球成千上万的矿工消耗真实的能源竞相生成它。没有人——无论是组织者还是 Anyza——能在区块出现之前知道哈希。

我们会等待选定的区块出现,以及它之上的又一个区块用于确认。平均需要 20 到 30 分钟。

3. 算法决定中奖者

有了区块哈希,每位中奖者都由一个简单的算法得出,对所有人都一样:

  1. 拼出文本:区块哈希 + “:” + 抽奖代码 + “:” + k(第 1 位中奖者 k = 1,第 2 位 k = 2…)。
  2. 计算该文本的 SHA-256,取前 15 个字符——它是一个十六进制数。
  3. 把这个数除以名单中剩余的名字数量;余数就是位置(余数 0 = 第一个)。
  4. 该位置的名字中奖并从名单中移出——所以没有人会中两次。对下一个 k 重复。
位置 = int( sha256(“区块哈希:抽奖ID:k”)[0:15], 16 ) mod N

一个用真实数字演示的例子

一个真实的 Bitcoin 区块、一个示例抽奖代码和一份 40 个名字的名单:

区块哈希

00000000000000000000ba717add9e9ca88219ed055ab6a33fcb5a4a229036ef

抽奖代码

5c033623-67a6-4a4c-bd5b-1d0721e0b6e6

第 1 位中奖者(k = 1,40 个名字)

sha256("…a229036ef:5c03…b6e6:1")

→ 3c13c940ddd9060 → 270564059204391008

→ 270564059204391008 mod 40 = 8

余数 8 → 从 0 开始数第 8 个位置 = 名单上的第 9 个中奖。

第 2 位中奖者(k = 2,剩余 39 个名字)

sha256("…a229036ef:5c03…b6e6:2")

→ 0e74889ef2fd4a9 → 65100476880770217

→ 65100476880770217 mod 39 = 3

余数 3,在剩下的 39 个名字的名单中 → 位于该位置的人中奖。

每次抽奖的代码都不同:同一个区块在不同抽奖中会产生不同结果——而且没有人能在看到区块之后再选代码,因为它是在冻结时生成的。

证明先后顺序的时间线

每个抽奖的页面会显示四个时刻,附日期和时间:

  1. 名单已冻结,哈希已保存

    名字和指纹被固定——早于决定结果的区块出现。

  2. 名单已记录到 Bitcoin

    OpenTimestamps 把指纹写入区块:独立证明名单早已存在。

  3. 决定结果的区块被挖出

    几分钟后,选定的区块出现,时间记录在区块本身。

  4. 结果已计算

    凭区块哈希,算法指出中奖者——任何人重新计算,结果永远一致。

如果名单在区块之后被改动,指纹就与记录在 Bitcoin 上的不一致。如果区块在名单之前就已存在,区块高度会暴露这一点:它在冻结时被选为“最高区块 + 2”。

任何人如何验证

  • 重新计算

    在抽奖页面,“在此重新计算”按钮会在你的浏览器中计算一切:名单的指纹和每位中奖者。

  • 核对区块

    区块的哈希和时间在任何 Bitcoin 浏览器上都是公开的,例如 mempool.space。

  • 上传 .ots 文件

    “上传 .ots 文件”按钮(或 opentimestamps.org)会核对名单记录在哪个区块。

Anyza Club 社区里的自动抽奖

在社区里,算法相同——名单是满足规则的参与者(成员、订阅者、参加过活动、完成课时或发过帖子的人),在截止时冻结。两种模式:

  • 快速模式:截止时的“最高区块 + 2”,与公开抽奖相同。
  • 最高级验证:名单的 Bitcoin 记录确认之后的第一个区块——可证明名单早于决定结果的区块存在。
免费创建我的社区

常见问题

能预测下一个区块的哈希吗?

不能。哈希取决于交易和矿工通过反复试错寻找的一个数字,每秒数十亿次。如果可预测,Bitcoin 挖矿就无法运作。

Anyza 或组织者能作弊吗?

不可能不留痕迹。名单和指纹在区块之前就被固定,区块在同一时刻被选定,算法是公开的。任何改动都会让指纹或结果在验证时对不上。

如果有人一直重复抽奖,直到出现想要的结果呢?

每个抽奖都有自己的页面和链接,并带有创建日期。所以组织者应在结果之前公布链接:事先没有公布的抽奖什么也证明不了。

如果 Bitcoin 网络重组了区块呢?

我们会等待一次确认(上面再有一个区块)后才开奖。两个区块的重组极为罕见;而且所用哈希会记录在页面上,所以始终可以重新计算。

余数会偏向某个人吗?

实际上不会。15 个字符构成一个最多 60 位的数;在最多 5,000 个名字的情况下,各位置之间的概率差异小于一万亿分之一。

名字的顺序会有影响吗?

顺序在冻结时固定,并且是指纹的一部分。由于区块哈希不可预测,没有任何位置占优势。

准备好开始你的抽奖了吗?

免费、无需注册,附可分享的链接,结果通过邮件发送。

免费开始抽奖

Anyza Club 上的热门社区

查看全部

Anyza Events 即将举行的活动

查看全部

Anyza Market 上新 — 用加密货币支付

查看全部

Anyza 更多免费工具

Anyza Classificados

用加密货币付款的分类信息

汽车、手表、单车、公寓、服务——卖家已验证,价格以稳定币标注,交易由你们双方直接完成。

打开分类信息
Anyza Radar

哪里已经接受比特币

一张接受比特币的商店、咖啡馆和服务地图,支持 11 种语言——基于 BTC Map 和 OpenStreetMap。

打开 Radar
Anyza Events

带二维码和门口签到的门票

聚会、大会和线上活动。买家直接付给主办方;门口签到在任何手机上都可离线使用。

打开 Events