是否存在通过算法保证公平的抽奖模式?

2023-06-28 22:22:30 +08:00
 LeeReamond

如题,由彩票问题引发的思考,如今网络上各种抽奖、彩票等等,是否存在使用算法保证公平的方式?一定要用传统的迷之机器物理摇号+不公正的公证员吗?

想了想,感觉一个简单的想法是使用所有参与抽奖者的信息做总和哈希,生成一段指向唯一中奖者的秘钥。这样每当有新的参与者加入,总和哈希都会变化,使得秘钥不可控。

但是这种方式似乎无法防止枚举作弊,也就是比如如果我想让第 1001 号抽奖者中奖的话,如果我有足够的算力,我可以穷举哪种组合下哈希会指向 1001 ,然后得到结果后按图索骥,伪造一些虚拟身份参与抽奖。

老哥们有无看法?

4914 次点击
所在节点    程序员
63 条回复
moioooo
2023-06-29 06:25:05 +08:00
用开奖时间或者指定时间的区块链哈希来确定中奖者呀。这种方法已经用了很久了。
btc 网络保证了哈希数的公开、不可预测,剩下的只要保证智能合约的算法公开透明就行,而后者根本就不难
rekulas
2023-06-29 07:13:53 +08:00
@LeeReamond 这个只是技术上麻烦,但是算法应当公开,通过应用或 app 封装整套流程,对普通用户来说跟普通抽奖没有区别,而有技术的团队也可以验证和监督该过程
rekulas
2023-06-29 07:20:48 +08:00
@moioooo 区块链没法创造随机数,所以很容易被攻击
参考合约用 hash 开奖的,经常都有被攻击的新闻,这还是暴露出来的,没有暴露的不知道有多少
gpt5
2023-06-29 08:47:50 +08:00
除了随机,还要保证是均匀分布。
上面很多人说的那些随机数,可能确实是“真随机”,但也需要证明是均匀分布的。
比如你有 3 个人抽奖,即使是真随机,但如果 p(x=1)=.4, p(x=2)=.3, p(x=3)=.2 的话,就不公平了。
xuanbg
2023-06-29 08:56:11 +08:00
没有算法才是真的公平,譬如,直接给个无法被人为操控的随机数。
swordmaster
2023-06-29 08:57:17 +08:00
彩票抽奖一定要使用传统的机器物理摇号+公证员这套系统,原因很简单,就是因为彩票的主要受众群体的认知基本都能理解物理随机摇号,却理解不了复杂算法是否能保证公平,你使用算法计算出来的中奖号码反而会被认为会不会存在暗箱操作。物理摇号机至少是透明材质的,大家能看到号码是怎么出来的。因为彩票系统设计的时候已经预留了利润空间,就算不作弊也能获得很高的利润,没必要故意设计一个方便作弊的系统。只不过人性是贪婪的,利益相关方不满足于被分配的利益,开始把手伸向奖金池。。。
Mohanson
2023-06-29 08:57:31 +08:00
彩票中心是否是真随机对于解决这个问题意义很小, 有密码学手段, 即使彩票中心手动控制中奖号码依然是安全的.

1. 用户选择彩票号码, 将该彩票号码视作多项式, 求该多项式的卡特承诺
2. 彩票开奖号码公开
3. 用户使用卡特证明, 证明开奖号码位于自己的多项式上.

结束.
lingeo
2023-06-29 08:59:19 +08:00
@phpfpm 区间太小了吧。
sss15
2023-06-29 09:04:15 +08:00
游戏抽卡一点都不公平
huangqihong
2023-06-29 09:06:23 +08:00
@swordmaster 说的很对啊,你搞系统,大家反而不懂,认为造假的概率更大;哈哈哈,谁知道,国内没有牛顿定律
Cosmic4764
2023-06-29 09:06:37 +08:00
你们都在纠结算法,就没人在意什么算公平么?
c3de3f21
2023-06-29 09:08:59 +08:00
@sss15 确实
wwbfred
2023-06-29 09:11:19 +08:00
@gpt5 算法上加权就行了。你没想明白随机的本质,实际上我们只需要 0 和 1 两个变量按照任意概率随机产生,剩下的都可以用算法搞定。
huangqihong
2023-06-29 09:11:29 +08:00
想到一个问题:你搞了一个公平算法的系统,突然有一天,领导要求你内定谁谁谁,你怎么说?不行还是拒绝?
wwbfred
2023-06-29 09:15:05 +08:00
@cmdOptionKana 不行,不是所有股市都是同时闭盘的。假设 h=f(x,y,z),当其中任意两个变量固定下来时,只需要操作第三个变量即可控制函数的输出,这就意味着谁掌握了最晚闭盘的股市谁就赢了。
rossroma
2023-06-29 09:28:01 +08:00
其实保证公平的方式有千千万,之所以经常有不公的新闻报道,无非使抽奖平台自己不想公平。让抽奖平台自己来保障公平性,不就是既当裁判员又当运动员吗?
行之有效的办法绝对不是什么算法,即便算法绝对公平了,平台方也可能在其上下游做手脚。
我想到的方法是公证员不能由平台方聘请,而是由抽奖者聘请,代表消费者的利益。并且签下违约条款,一旦失职需要巨额赔偿消费者,并让保险公司来兜底。
实际执行层面,每一期彩票消费金额划出固定的比例给到公证处,公证处分出一部分用来购买保险,只要公证处恪守本分,这就是一笔稳赚不赔的买卖,而一旦有坏心思,后果将非常严重。
这里的关键点是:公证处由消费者来指派而非平台方、平台、公证处和保险方必须各种独立,不得有股权或利益关联。
tLbf2p3UC4BM3H1N
2023-06-29 10:26:13 +08:00
不是,真想这个“主要为了赚钱,次要以公益正名”的博彩行业以公平来对待你啊?
chenjia404
2023-06-29 11:02:26 +08:00
@LeeReamond #16 比特币不是保证未来某时刻一定会出现这样一个符合要求的 hash ,而是每个区块需要符合一个工作量证明即可,让这个区块哈希有多少 0 结尾。
mcluyu
2023-06-29 11:24:41 +08:00
算法公不公平普通人信吗? 耳听为虚眼见为实, 盯着看的摇奖机都能造假, 更何况根本没几个买彩票的人能理解的各种看不见的算法了
8520ccc
2023-06-29 11:30:36 +08:00
多随机因子即可:
例如:
1. 区块哈希值
2. 彩票开奖号码
3. 开奖方提前公布随机因子的密文

还可以加入更多

……
得到全部信息后,使用加密算法再通过开奖方提供的随机因子进行一次加密

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/952529

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX