我正在构建一个项目,每周一都会做一个赠品。有三个奖,基本奖,“幸运”奖和头奖。基本奖金的发放比例为70%,幸运奖金的发放比例为25%,大奖奖金的奖励比例为最后5%。
每周一都会有很多人获奖。赠品中的每个人至少可以获得基本的奖品。
现在,我只是生成一个随机数,然后在本地计算机上将奖品分配给每个参与者。这是可行的,但参与者必须相信我没有操纵赠品。
我想通过使用区块链作为随机数生成器来改进这个赠品。问题是我不知道如何在技术上做到这一点。
这是我开始弄清楚如何做到这一点:当创建赠品时,块高度被定义为随机性的来源。每个参与者都有一个userID。当找到特定的块编号时,块哈希链接到userID,然后进行哈希。然后,将得到的散列在赠品中定义的赔率上进行“排列”。
我搞不懂的部分是如何做“测距”。我认为它可能涉及模运算符,但我不确定。如果得到的哈希值落在5%的范围内,那么该用户将获得大奖。如果散列落入70%的范围,那么他将获得基本奖励,依此类推。
发布于 2018-02-10 02:47:58
我想出来了,解决方案如下:
int(hashlib.sha256(block_header + userID).hexdigest(),16) / float(2**256)
您将散列转换为一个整数,然后将该整数除以2**256。这给出了一个从0到1的小数,可以将其与random.random()进行比较以获得奖金。
https://stackoverflow.com/questions/48656958
复制相似问题