区块链的“随机数”是什么?

区块链的“随机数”是指在区块链系统中应用到的实时随机数据。“随机数”是数学定义的一种特殊数据,它是一个值或数据序列,在该序列中,每个数据不可预测,而且根据此序列,它的值或序列也不能由任何确定的过程精确地预测。区块链中的“随机数”用于生成不可预测的哈希值,也被用于公平性维护及分配资源、信息公开、安全加密等多样化的目的。

区块链的“随机数”主要是用于多种场景,例如游戏中的随机奖励等比较重要的场景中,以保证被奖励的用户公平地获得机会,而不会被被任何人操纵。利用“随机数”,可以保证在多节点间提供可验证的信息,并且不允许任何一方拒绝提交信息,从而保证信息公开透明和安全的传输环境。其次,利用“随机数”可以防范恶意篡改数据的行为,保证交易安全,同时也可以创建只有众筹参与者可见的安全加密环境,防止恶意攻击行为。

此外,区块链的“随机数”还可以用于分配资源,为所有参与者提供公平、公正的渠道来投票或获得资源。通过“随机数”的处理,可以确保参与者的行为纳入进取实时的数据披露,并由此进行及时的监督,以确保投票的评价机制能够总体客观地反映参与者的实际行为。

总之,区块链的“随机数”可以有效帮助区块链系统中的各种功能,为系统带来不可预测的特性,加强信息的安全设计,以及保证各种投票流程的公正性和公平性。上述各种特性让区块链系统变得更加安全和可靠,是真正实现智能合约、分散应用等技术的基础。

区块链的“随机数”是什么?

区块链的“随机数”是什么?

随机数对于区块链技术来说很关键。 本质上,分布式账本的核心问题就是随机选择出块人的问题,这个随机性要能被全网确认,并且不能被操控,也不能被预测, 否则恶意节点通过操控这个随机数就可以操控长链,从而实现双花攻击。

PoW的方案是让大家进行算力竞赛,设置一个计算哈希的难题,谁先算出来谁赢,算力高的赢的概率高,算力低的赢的概率低,以这样的方式保证胜出者是随机的。投入的算力能够体现在哈希值上, 这样全网能够验证,并选择包含最多算力的那条链。恶意节点只能通过提升自己的算力来增加攻击成功的概率。

PoS的方案是选举,大家不用浪费电力去进行算力竞赛,而是文明一点,随机选举一个节点来出块,并且被选中的概率和它拥有的份额相关。 如果“随机”这一步没有问题的话,恶意节点只能通过增加自己的份额,增加自己被选中的概率,从而增加双花攻击的成功概率。 这里有一点比PoW的方案要好就是,要实现攻击,先得成为持币大户,如果攻击成功币价大跌,攻击者也会承受最大的损失。 而PoW方案中虽然算力要花钱,但是如果攻击者没有持币,那么他的利益和币价不一定是正相关的,不能排除仍然存在攻击的动力。

那么接下来的核心问题就是,这个不能被操控不能被预测的随机数从哪来。

传统地PoS方案尝试从链上现有的数据入手,比如使用上一个区块的哈希值,上一个区块的时间戳等等来作为随机数的来源,但这些会带来额外的安全风险。 因为区块本身的信息就是节点写进去的,然后又要根据里面的信息来选举后续的出块者,存在循环论证的嫌疑,安全性不会太好。 这也是传统地认为PoS方案不如PoW可靠的部分原因。

Cardano项目采用的Ouroboros协议是被密码学界证明安全的一个PoS协议,也是唯一一个被工业界采用的可证明安全性的PoS协议。 它采用密码学的手段来生成这个随机数。为了弄清楚这个过程,我们先从更基础的密码学工具开始:

承诺(Commitment)和打开(Open)
假设张三李四要玩剪刀石头布,用传统方式作弊者如果稍微出的晚一点,可以等看到对方的手势后再做选择。 为了防止这种情况,他们:

先各自做出选择,然后把自己的选择做个哈希;
交换这个哈希;
等双方都收到对方的哈希后,再交换双方的选择;
验证对方的选择和之前的哈希一致;
这样双方都知道了对方的选择,也能确认对方的选择是提前就做好的。 这个哈希值就叫做承诺,因为它里面包含了保密信息,但又没有泄漏保密信息,而最终发送对应的保密信息,就叫做打开承诺。




承诺和打开是一种模式,哈希只是实现手段之一。
简单随机数协议(Coin-Tossing)
现在我们可以设计一个多方生成随机数的协议:

每个节点在本地产生一个随机数,并把它的承诺广播给其他人
当它收到所有人广播的承诺后,再把打开也广播给其他人。
最后大家把得到的随机数异或到一起,因为异或操作满足交换律和结合律,所以操作顺序不影响结果。
最终大家都得到了一个一致的无法被操纵的随机数。 但这个简单协议的问题在于,恶意节点可以选择终止协议,也就是不发送自己的打开,会使得其他人无法进行下去。要解决这个问题,我们还需要另一个工具。

可验证秘密共享(Verifiable Secret Sharing)
秘密共享是说,一个人可以把一个需要保密的信息,拆分成n份,分别发送给n个人,只要恶意节点不超过一定数量,最终大家可以综合各自的信息片段把原始信息还原出来。 并且就算分发者如果作弊,大家也可以检查出来。具体的实现方式也有多种,这里就不深入了。

有了这个工具,就算恶意节点不发送打开,我们也能根据拆分信息还原出他的随机数,如果他想在拆分信息上作弊,大家也能检查出来并把他踢掉。

结合这几个技术,我们就可以有一个完整的随机数生成协议了。最后,因为我们本来就是个区块链,所以协议过程中需要广播的信息,我们可以直接写到链上去, 这样可以简化实现,并且也不需要所有投票节点同时在线,并且如果有人作弊,作弊的记录将会永远保存在链上。

最后综合一下整个协议流程:

在提交阶段,每个节点本地生成随机数和对应的承诺,同时把随机数拆成n份匹配其他的投票节点, 并且用相应投票节点的公钥对每一份信息进行加密,保证它只能被对应的节点解密, 然后把承诺和加密后的拆分信息一起广播给区块链。
当大家收到大部分节点的承诺和拆分信息后,就进入打开阶段,每个节点把自己的打开发到链上。
然后是恢复阶段,每个节点检查是否有节点发送了承诺但没有发送打开, 如果有,则解密自己对应的那份拆分信息并发布,然后根据大家发布的拆分信息恢复出该节点的随机数。
现在大家就有了所有节点的随机数,把它们异或到一起,最终得到了一个一致的随机数,并用它来选择下一轮的出块人。



最后,这个随机数不光可以用来选择出块人,也可以给智能合约用,这是PoS另一个好处; 而PoW体系虽然出块人是随机的,但并没有产生一个具体的随机数,所以智能合约要用随机数,还是得从区块链本身的数据里面去获取了。

24小时热点

热点专题

Gem和Genie功能大对比

2022年4月25日,OpenSea官方发推宣布收购NFT交 ...

2400372

TopHolder 头号藏家

Genie 就是一个 NFT 市场的交易聚合器

Web3 中的「聚合器」是一个非常重要的组件,例如 1inc ...

2364313

嗨艺购

USDT是什么币?新手如何购买和交易?

USDT是什么币?新手如何购买和交易?USDT是什么?USD ...

1303476

Cosmos Art

2024年pi币多少钱一个?介绍pi币历年价格

Pi币是一种新兴的数字货币,它的概念于2019年由一位斯坦福 ...

1290923

Alameda Research

CORE未来能涨到多少钱?core2024大约能涨到多少钱?

在数字货币市场中,CORE 作为一种加密货币,在过去的一段时 ...

880429

BitKeep钱包

欧科集团设立1000万元疫情防治专项基金 联合中华慈善总会共同支援一线防护工作

这个春节,新型冠状病毒疫情牵动着大家的心。1月26日0—24 ...

832809

TokenInsight

举报:PAXG币 (PAX Gold)涉嫌违法?

PAXG币(PAX Gold)是一种基于以太坊区块链网络创建 ...

782805

NewsBTC

什么是Polygon(Matic)网络?

由于网络拥堵仍然是以太坊区块链的一个问题,像Polygon这 ...

778519

树图链

ZT交易所介绍

ZT交易所介绍 ZT是为全球用户提供最优质数字资 ...

764476

ZT GLOBAL 交易所

以太坊2.0测试币Goerli有价值吗?怎么体现价值?

选择以太坊2.0币的五大理由: 1、资产的安全性 ...

700888

区链之家