根据加密货币块标题

时间:2018-02-07 06:00:26

标签: python probability blockchain

我正在建立一个每个星期一都有赠品的项目。有三个奖项,基本奖,"幸运"奖品和头奖奖金。基本奖金在70%的时间内发放,幸运奖金在25%的时间内发放,奖金奖金在最后5%的时间内获得奖励。

每周一有多人获得奖品。赠品中的每个人至少获得基本奖品。

现在我只是生成一个随机数,然后将奖品分配给我本地计算机上的每个参与者。这是有效的,但参与者必须相信我没有操纵赠品。

我希望通过使用区块链作为随机数生成器来改善这种赠品。问题是我不知道如何在技术上做到这一点。

这是我开始弄清楚如何做到这一点:当创建赠品时,块高度被定义为随机源。每个参与者都有一个用户ID。找到特定块编号后,将块哈希连接到userID,然后进行哈希处理。然后得到的散列是"范围"在赠品中定义的赔率。

我无法弄清楚的部分是"范围"。我认为它可能涉及模运算符,但我不确定。如果产生的散列落入5%范围,则该用户获得累积奖金。如果哈希值达到70%的范围,那么他将获得基本奖金等等。

1 个答案:

答案 0 :(得分:0)

我想出来了,解决方案如下:

int(hashlib.sha256(block_header + userID).hexdigest(),16)/ float(2 ** 256)

您将散列转换为整数,然后将该整数除以2 ** 256。这会给出一个从0到1的小数,可以与random.random()进行比较以获得奖品。