1/7 · 配置抽奖

当前区块: 连接中… 🔍 查看当前区块

2/7 · Console

// 操作日志

3/7 · 为什么这个抽奖绝对公平

本站将抽奖的随机性交给了区块链共识网络——以太坊,任何人都无法干预最终结果,可回溯,可验算,绝无作弊可能。

无法预测:以太坊每 ~12 秒产生一个新区块,哈希值在诞生前完全未知,由全球超百万个独立验证者共同决定
不可篡改:哈希值一旦确认上链便永久固化,任何人均可通过 Etherscan 等权威第三方浏览器公开查验
无需信任:采用全公开抽奖算法,复制代码即可在本地 100% 独立还原并验证中奖结果

4/7 · 操作指南:如何使用?

1
锁定名单:确定总参与人数 N,为每位参与者分配唯一编号(1…N),并全员公示
2
选定、等待:公告一个未来的以太坊区块高度,作为本次抽奖的唯一合法信源,等待该区块被以太坊网络打包确认
3
获取哈希:在 Etherscan 上查询该区块,获取其 64 位十六进制的 Block Hash
4
算法开奖:将哈希值输入公开的开奖程序,得出不可争议的中奖号码

5/7 · 算法解析

1
构建种子:拼接 区块哈希当前轮次(从 0000 开始递增的十六进制数)
2
哈希加密:对种子进行一次 SHA-256 加密,得到全新的 64 位字符
3
计算号码:截取前 16 位转为十进制,对总人数 N 取模并加 1,得出当前轮次中奖号码
4
去重机制:若号码已中奖则跳过,Round + 1 继续迭代,直至抽满全部名额

6/7 · 区块链浏览器

🔍 直观查看最新区块

▸ Etherscan 最新区块 https://etherscan.io/blocks
▸ OKLink ETH 最新区块 https://www.oklink.com/zh-hans/eth/block-list

7/7 · 抽奖代码,欢迎独立验证

相同的哈希输入,永远得出完全一致的结果。复制以下代码到任意 Python 环境独立验证:

# ── 验证中奖结果 ── # 在 Etherscan 搜索区块 21000000 # 复制页面上的 Block Hash,粘贴到下方变量中。 import hashlib BLOCK_HASH = "在此粘贴区块哈希值" # 64位十六进制,无论是否带 0x 均可兼容 TOTAL = 100 # 抽奖总参与人数 COUNT = 3 # 需要抽取的中奖人数 # 预处理:去除前后空格,转小写,并剔除可能包含的 0x 前缀 block_hash = BLOCK_HASH.strip().lower().removeprefix("0x") winners = [] selected = set() rnd = 0 # 核心计算循环 while len(winners) < COUNT: # 拼接哈希与轮次(补齐4位十六进制,例如 0000, 0001) seed = f"{block_hash}{rnd:04x}".encode() # 计算 SHA-256 哈希 h = hashlib.sha256(seed).hexdigest() # 取前16位转为整数,取模得出 1~TOTAL 之间的编号 num = int(h[:16], 16) % TOTAL + 1 # 去重判定 if num not in selected: selected.add(num) winners.append(num) rnd += 1 print("=" * 30) print(f"入参区块哈希: {block_hash}") print(f"最终中奖号码: {sorted(winners)}") print("=" * 30)