热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PoS机制随机性解读,波卡的随机性原理如何运作?

我们在《去中心化的底层是共识——Polkadot 混合共识机制解读》一文中详细解读了波卡的共识机制——权益证明。随机性方法对于权益证明区块链来说尤为重要,波卡中的随机性方法包括 RANDAO 、VRF
我们在《去中心化的底层是共识——Polkadot 混合共识机制解读》一文中详细解读了波卡的共识机制——权益证明。随机性方法对于权益证明区块链来说尤为重要,波卡中的随机性方法包括 RANDAO 、VRF、VDF 等,今天和大家一起来探索几种不同随机性方法的差异。



01

波卡生态中的随机性

权益证明区块链中的随机性对于公平和不可预测的验证人责任的分配很重要。计算机不擅长随机数,因为它们是确定性的设备(相同的输入总是产生相同的输出)。人们通常在计算机上所说的随机数(比如在游戏应用中),是伪随机的 -- 也就是说,它们依赖于用户或另一种类型的预言机提供的足够随机的种子,比如大气噪声的气象站、你的心率,甚至熔岩灯,从中可以产生一系列看似随机的数字。但是,相同的种子,总是会产生相同的序列。
虽然,这些输入会根据时间和空间的不同而不同,而且不可能在世界各地的某一区块链的所有节点中得到相同的结果。如果节点得到不同的输入来构建区块,就会发生分叉。现实世界的熵并不适合作为区块链随机性的种子。
目前在生产环境中,有两种主要的区块链随机性方法。
RANDAO 和 VRF。
在波卡生态中使用 VRF 作为随机性方法。



02

VRF:以过往结果定义现在和未来

可验证的随机函数(VRF)是一种数学运算,它接受一些输入并产生一个随机数,同时产生一个真实性证明,证明这个随机数是由提交者产生的。该证明可以由任何挑战者验证,以确保随机数的生成是有效的。
Polkadot 中使用的 VRF 与 Ouroboros Praos 中使用的大致相同。Ouroboros 的随机性对区块生产来说是安全的,对 BABE 来说也很好用。它们的不同之处在于,Polkadot 的 VRF 不依赖于中央时钟(问题变成了 -- 谁的中央时钟?),相反,它依赖于自己过去的结果来确定现在和未来的结果,它使用槽数作为时钟模拟器,估计时间。
工作细节
槽是不连续的时间单位,长度为 6 秒。每个槽可以包含一个区块,但也可以不包含。槽构成 epochs -- 在 Polkadot,2400 个槽构成一个 epoch,这使得 epoch 的长度为 4 小时。
在每个槽中,每个验证者 "掷骰子"。他们执行一个函数(VRF),将以下内容作为输入:
  • "密钥", 一个专门为这些掷骰子而设的密钥。
  • 一个 epoch 随机数,这是来自上一个 epoch(N-2)的区块的 VRF 值的散列,所以过去的随机性会影响当前的待定随机性(N)。
  • 槽的编号。

输出是两个值:一个 RESULT(随机值)和一个 PROOF(证明随机值是正确生成的证明)。然后将 RESULT 与协议执行中定义的阈值(特别是在 Polkadot 主机中)进行比较。如果该值小于阈值,那么掷出这个数字的验证者就是该槽位可行的区块生产候选人。
然后验证者尝试创建一个区块,并将这个区块与之前获得的 PROOF 和 RESULT 一起提交给网络。在 VRF 下,每个验证者都为自己掷出一个数字,将其与一个阈值进行核对,如果随机掷出的数字低于该阈值,则产生一个区块。
精明的读者会注意到,由于这种工作方式,有些槽可能没有验证者作为区块生产者候选人,因为所有验证者候选人都掷得太高,错过了阈值。我们澄清了如何解决这个问题,并确保 Polkadot 的区块时间在维基页面的共识章节中保持在恒定时间附近。


03

RANDAO:

诚实验证者保障随机性的安全

在链上获得随机性的另一种方法是以太坊的 RANDAO 方法。RANDAO 要求每个验证者通过对一些种子进行成千上万次的哈希来进行准备。然后验证者在一个回合中公布最终的哈希值,随机数由每个参与者进入游戏的情况得出。只要有一个诚实的验证者参与,随机性就被认为是安全的(在经济上不可能被攻击)。RANDAO 可以选择用 VDF 进行增强。



04

VDF:

在公共环境中独立有效地验证

可验证的延迟函数是指需要规定时间来完成的计算,即使在并行计算机上也是如此。它们产生独特的输出,可以在公共环境中独立和有效地进行验证。通过将 RANDAO 的结果输入 VDF,引入了一个延迟,使任何攻击者试图影响当前随机性的行为变得过时。
VDF 可能会通过 ASIC 设备实现,需要与其他类型的节点分开运行。虽然只有一个就足以保证系统的安全,而且它们将是开源的,几乎是免费分发的,但运行它们既不便宜也没有激励,对选择这种方法的区块链和用户之间将产生不必要的冲突。



06

更多技术资源

Polkadot 关于区块链随机性和分类的研究 -- 包含对所做选择的推理和证明。https://w3f-research.readthedocs.io/en/latest/polkadot/block-production/Babe.html
关于 Polkadot 中使用的随机性的讨论 - W3F 的研究人员讨论了 Polkadot 中的随机性,以及它何时可用,在何种假设下可用。https://github.com/paritytech/ink/issues/57


About Us

关于我们

One Block+ 是全球最大的 Substrate 技术开发者社区,也是 Parity 在亚洲唯一的运营合作伙伴,波卡生态早期项目的创始人、CTO、核心开发者大部分都来自 One Block+ 社区。

Twitter: https://twitter.com/OneBlock_

Medium: https://medium.com/@OneBlockplus

Telegram: https://t.me/oneblock_dev

Discord: https://discord.gg/z2XZZWEcaa

Bilibili: https://space.bilibili.com/1650224419

YouTube: https://www.youtube.com/channel/UCWo2r3wA6brw3ztr-JmzyXA


推荐阅读
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • AstridDAO 专访:波卡稳定币黑马 BAI
    加入Pol ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了Flutter添加APP启动StoryView相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上)【下载本文PDF进行阅读】设计模式是前人通过大量的实践总结出来的一些经验总结和最佳实践。在经过多年的软件开发实践之后,回过头 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • FIN7后门工具伪装成白帽工具进行传播
    fin7,后门,工具,伪装,成,白, ... [详细]
  • HyperledgerComposer环境安装1.安装基本软件包**如果使用Linux安装HyperledgerComposer,请注意以下建议:以 ... [详细]
author-avatar
小哥
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有