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

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

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

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

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

老哥们有无看法?

4914 次点击
所在节点    程序员
63 条回复
snarkprayer
2023-06-29 12:00:33 +08:00
挺难的,想起来机核关于投票机制的一期博客,https://www.gcores.com/radios/120273 在同样的投票结果下,不同的投票机制会导致完全不同的结果
Shintaku
2023-06-29 12:08:22 +08:00
北京小客车摇号科学吗
NoOneNoBody
2023-06-29 12:15:37 +08:00
你理解错了,用传统机器的原因是“可展示”,并非电子方式公平性更差
只要是“人”完成抽奖的某些步骤,就有作弊的可能,要完全防止,需要“足够多”的审视,这个“足够多”很难界定
epicnoob
2023-06-29 12:18:21 +08:00
单就彩票来说,买彩票的有多少懂“算法”,什么“股市收盘”也可能没接触过。小球掉下来是几就是几,简单易懂,谁觉得不公平不买就是了。
iqoo
2023-06-29 13:02:52 +08:00
jybox
2023-06-29 13:21:00 +08:00
我之前就这个话题写过一篇文章,也做了一个 Demo
https://jysperm.me/2017/02/distributed-random-rollup/

思路和楼主差不多,就是让每个参与者都贡献一个随机数来影响最终的随机数,只要把整个过程记录下来,那么结果就是复现的。
blinue
2023-06-29 13:33:30 +08:00
https://www.random.org/
用大气噪声生成随机数
rekulas
2023-06-29 15:26:43 +08:00
@8520ccc 多随机因子只适用于黑盒中运行的系统(例如 linux 的熵池,相对黑客它是不可见的)
对于抽奖这种需要公开的模式,反而更危险,因子越多被攻击可能性越大,因为只要有任何一个点被成功攻击,其他的都形同虚设
LeeReamond
2023-06-29 15:59:43 +08:00
@rekulas 使用 APP 封装的话又出现一个 APP 是否可靠的问题,比较无解,也许还要配一套开源+信用的系统。原理上来说当然是只有秘钥永远储存在用户大脑里是最可靠的,只有当用户在校验时才提供这部分信息
Vraw5
2023-06-29 16:35:56 +08:00
歪个楼,让我想起来一个视频 大学生抽奖,现场写了代码跑抽奖 https://www.bilibili.com/video/BV11s4y1T7Qy/
013231
2023-06-29 17:43:49 +08:00
@ffgrinder 了解一下 2012 年 6 月 4 日的上证指数?
nothingistrue
2023-06-29 18:12:58 +08:00
抽奖的公平,最看重的是不被少数人控制。所以不要相通过任何算法、编程、或者高科技的东西来搞。你搞得越高级,用得人越看不懂,而看不懂就等同于暗箱操作。就算用的人都是高级程序员都能看懂,但是越高级验证难度越高,最后还是等同于暗箱操作。

举个简单的例子。“迷之机器物理摇号+不公正的公证员”,这个证假的难度只是没法去现场验证,如果能去的话,那随便找个小学生就能证假。而如果你搞了高科技算法,那绝大多数人是无法证假的。
moonrailgun
2023-06-29 18:49:28 +08:00
@nothingistrue 不是很认可你的看法。只要算法是公开的可证的,那么所谓的高科技算法,只要结果是可复现的,那么就是可信的。就像有无数人可以监督你,对于试图造假的人来说这是一种不可控的监视。

当然如果你这所谓的高科技算法高到全球只有有限的几个人且哪怕原理告诉所有人也没人学会的水平那当我没说。
LeeReamond
2023-06-29 20:00:17 +08:00
@013231 与个人认知水平有关 ,认知水平局限在那里,这种人你跟他说什么他听不懂的
r6cb
2023-06-29 20:01:51 +08:00
真随机数还是要靠现实世界吧,比如 https://www.random.org
rekulas
2023-06-29 21:25:17 +08:00
@LeeReamond 不会,app 只是方便普通用户使用,但技术圈肯定会对数据做校验的,app 层没法作弊,因为算法都是开源的
就像区块链钱包一样,你可以用官方钱包,可以用开源钱包甚至可以直接网页钱包,只是方便普通人使用,但你要是敢乱来,只要一次产品就死了
rus4db
2023-06-29 21:33:11 +08:00
ffgrinder
2023-06-29 22:20:47 +08:00
@LeeReamond #52 笑麻了,十一年前的,没有任何人有意控制指数的前提下,甚至没有人敢公开声明"我今天要把指数操纵到这个点位"的前提下,收盘搞了个数字,就是“可以控制了”。

轮子是这样的。
ffgrinder
2023-06-29 22:27:31 +08:00
@013231 #49 笑麻了,十一年前的,没有任何人有意控制指数的前提下,甚至没有人敢公开声明"我今天要把指数操纵到这个点位"的前提下,收盘搞了个数字,就是“可以控制了”。

轮子是这样的。

@LeeReamond 误点到你了
Mastercvmo
2023-06-29 23:27:36 +08:00
温度,湿度,这样的真正随机变量才可以。

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

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

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

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

© 2021 V2EX