可证明公平的抽奖
承诺-揭示机制、EOS 区块链锚定,以及如何自行验证。
Skincash 每一场抽奖都采用一种任何人都可以在事后独立验证的机制。Skincash 团队在内的任何人都无法预测或操纵开奖结果。
开奖前:承诺
创建抽奖时,我们会生成一个随机的 256 位服务器种子。我们不会公开种子本身 —— 只公开其 SHA-256 哈希值。该哈希值就是承诺,并在抽奖开始的那一刻被冻结写入数据库。由于 SHA-256 是单向的,知道哈希值也无法反推种子。
外部熵源:EOS 区块
在开奖的那一刻,我们的定时任务会查询 EOS 区块链上最新的不可逆区块,并记录其区块哈希。EOS 区块由一个独立网络每半秒产生一次,因此任何未来时刻的区块哈希在承诺时都是不可预测的。这意味着连 Skincash 本身也无法影响抽奖结果。
揭示与开奖
中奖券的计算公式为:winningTicket = (BigInt(sha256(serverSeed + publicSeed + eosBlockId)) mod BigInt(totalTickets)) + 1。开奖后,我们会公布服务器种子、区块 ID、公共种子和总抽奖券数,任何人都可以复现该哈希并验证中奖券。
js
const crypto = require('crypto');
// Published data (visible on the giveaway card)
const serverSeed = '<revealed after draw>';
const publicSeed = '<published at draw>';
const eosBlockId = '<EOS block hash at draw time>';
const totalTickets = <total sold>;
const hash = crypto
.createHash('sha256')
.update(serverSeed + publicSeed + eosBlockId)
.digest('hex');
const winning =
(BigInt('0x' + hash) % BigInt(totalTickets)) + 1n;
console.log('Winning ticket:', winning.toString());如何验证
在任何已结束的抽奖卡片上,点击"验证公平性"。弹窗会显示全部四个输入值,在客户端运行 SHA-256 来证明承诺-揭示对有效,并提供一段可复制粘贴的代码片段,您可以在 Node 或浏览器控制台中运行,以在本地复现中奖券。
这篇文章对您有帮助吗?
您的反馈有助于我们改进帮助中心。
信任与安全中的更多内容
还需要帮助吗?
我们的在线客服团队 24/7 全天候在线,平均响应时间不超过 5 分钟。直接从页面打开聊天,剩下的交给我们。