【问题标题】:How to create a publicly visible, provably random seed ahead of time? (Verifiable random number)如何提前创建一个公开可见的、可证明的随机种子? (可验证的随机数)
【发布时间】:2019-05-27 23:39:48
【问题描述】:

假设您正在与 n 名参与者进行一场辩论,并且希望以完全随机的方式将他们分成两半。

可以通过创建一个参与者列表,随机打乱该列表,然后强制前 n/2 个参与者作为一个团队进行辩论。

但是,如果这场辩论特别重要,我们希望确保我们创建的团队是可证明随机的,并且是公开可见的。我们希望能够证明我们创建的团队不是任何人的决定的直接结果。有没有办法做到这一点?

我相信这个问题归结为为随机数生成器创建种子的问题,该生成器基于特定时间的世界状态,但我不确定。这是软件工程师以前解决过的问题吗?是否有针对此问题的 API?

【问题讨论】:

  • 请提供一个简短但完整的示例来说明问题?
  • 我认为辩论的例子就足够了。你能解释一下不清楚的地方吗?这个想法可以在软件工程中有很多应用,我的一个项目需要它,这就是我在这里发布它的原因。
  • 你试过什么?你研究了什么?什么语言?来源?这是一个很难缩小范围的非常广泛的问题,可能有助于通过具体的代码示例来帮助充实问题。
  • 我无法研究这个问题,因为用谷歌搜索/搜索非常困难。您只需获得有关如何在特定语言中创建随机数的在线 RNG 和 CS1 级别问题的结果。我能想到的最佳解决方案是使用特定股票在特定日期的收盘价来播种 RNG。这个问题与特定语言和/或代码 sn-ps 没有任何关系。它更多的是关于如何解决软件工程和其他地方可能出现的随机数的特定问题。

标签: random random-seed


【解决方案1】:

您可能想到的是verifiable random numbers,它是使用将与验证它们所需的所有信息一起公开的数据生成的随机数。据我所知,在实践中对可验证随机数的最多使用是在 Internet 工程任务组的提名委员会(或简称 NomCom)的选择程序中。 RFC 3797 描述了这个选择过程,以及可验证随机选择的一般工作原理。

另一项相关技术是可验证延迟函数,该函数需要花费大量时间来计算(例如,将公开披露的数据散列为看起来随机的数字),但它很容易验证输出是否正确。这在两部作品中有所描述,其中包括:

  • Lenstra, A.K., Wesolowski, B. “一个随机动物园:树懒、独角兽和 trx”,2015 年(在这个概念出现之前)。
  • Boneh, D., Bonneau, J. 等人。 “可验证的延迟函数”,2018 年。

【讨论】:

  • 这正是我想要的。我不知道这个词的存在,有一个词与这个概念相关联感觉很棒。 RFC 3797 链接非常适合阅读...谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-08
  • 2012-02-13
  • 2023-03-23
  • 2014-02-10
  • 2013-11-30
  • 1970-01-01
  • 2012-12-28
相关资源
最近更新 更多