区块链的随机性:理论障碍和实践解决方案

爱丽丝和鲍勃希望通过互联网玩骰子游戏,其中有一些利害关系。他们认为,“当以太坊可用时,为什么要支付托管服务呢?”。他们的直觉是否正确?是否可以使用以太坊智能合约玩骰子。一个简短的回答是肯定的,他们可以。但是,他们的决定中隐藏的成本是多少?

在区块链网络中生成随机数是一个微妙的主题。但在深入探讨这个话题之前,我们必须首先认识到随机数在我们生活中扮演的重要角色。在每个应用程序中左右使用随机数。仅举几例,每当我们连接到Facebook或Gmail等应用程序时,我们的计算机和服务器都会生成随机数。这些数字对于确保我们与Gmail的通信安全至关重要。另一个例子是博彩业,其利润仅依赖于安全的随机数生成。

要理解为什么随机数生成是一个微妙的主题,我们必须首先了解如何将事务添加到区块链。为了向区块链添加交易,具有不同兴趣的网络用户需要就交易历史达成一致。为了理解如何实现这一点并且不失一般性,我们将研究如何将事务添加到比特币分类账中。基于此,很容易对区块链网络中随机数生成的理论障碍发展直觉。

根据比特币协议(以及所有区块链协议),每个节点都维护着自己的分类账副本。当节点想要与区块链交互时,它会创建一个事务并用她的私钥对其进行签名,从而证明她对网络的身份。然后,它广播它所知道的网络的其他用户的交易。接收事务的用户检查事务是否有效。例如,在比特币网络中,节点将检查进行交易的节点是否有足够的资金。有效的交易被重新广播到网络,从而确保整个网络最终将了解它们(基于八卦的通信)。然后,矿工收集足够数量的浮动在网络中的交易,将这些交易安排在一个区块中,并尝试将该区块追加到区块链中。当矿工追加新区块时,她会将新区块链广播到网络。最后,网络的所有用户都下载新的区块链并验证协议是否正确遵循,从而确保新的区块链有效。

现在想象下面的场景:Alice,Bob和Charlie正在玩下面的游戏。爱丽丝会让矿工超越硬币,如果结果是“头”,她会向Bob发送50个Eth,如果是“尾巴”,她会将其发送给“Alice”。现在想象两个不同的矿工独立工作,希望将这个奇怪的交易添加到区块链中。具有高概率的矿工将在硬币超越中具有不同的结果,因此将不同意谁是交易的接收者。矿工们对交易历史的这种不同意见最终会导致整个网络崩盘。从高层次的角度来看,这就是随机数生成是区块链网络中一个微妙主题的原因。

由于随机数的重要性,已经提供了许多解决方案来缓解该问题。但是,没有一种解决方案是免费的。这是设计依赖随机数的系统时必须考虑的关键点。让我们考虑一下可用的选项。要找到随机性,有以下解决方案:

1.使用前一个块的哈希值

该方法依赖于散列函数提供的伪随机性。在这个方案中,Alice告诉矿工根据他们创建的块生成一个随机数。当选择这种方法时,矿工处于利用我们系统的有利位置。这个优点来自矿工是第一个计算随机数的事实。回到爱丽丝,鲍勃和查理之间的比赛。想象一下鲍勃是矿工。然后Bob如果他丢失了硬币超越,他可以选择不发布新的块。这种情况称为加密货币社区中的阻止阻止攻击。

2.使用随机服务提供商:

随机性即服务提供商可以分为两类,中心化和去中心化。中心化的,是受信任的公司,根据要求为您提供由他们生产的随机数,以换取少量费用。从理论上讲,可信方的引入与以太坊的去中心化应用(dAPP)的核心思想形成了深刻的矛盾。但是,它在实践中被广泛用于oraclize等提供商。另一方面,去中心化的随机性即服务提供商依靠密码术来生成随机数。这些服务背后的想法非常复杂,但在内心深处,他们依靠Blum的硬币翻过电话协议(我建议你看看这个协议,因为它依赖于非常智能方式使用的简单的想法)。这些方法的问题在于它们在计算上是昂贵的,并且在以太坊中这被转换为高交易成本。此外,它们的安全性在很大程度上取决于用户。作为食物虽然人们应该问自己以下问题“密码qwerty是多么随机?”。

一般来说,链随机性是一个开放的问题。您可以访问Ethereum Github页面,了解此文章以太坊研究中未提及的其他解决方案。

提示:投资有风险,入市需谨慎,本资讯不作为投资理财建议。请理性投资,切实提高风险防范意识;如有发现的违法犯罪线索,可积极向有关部门举报反映。
你可能还喜欢