文章目录
一、filcoin的随机性来源-Drand
官网: https://github.com/drand/drand
[推荐阅读]熵联盟:并非所有的英雄都身披斗篷
参考URL: https://blog.cloudflare.com/zh/league-of-entropy-zh/amp/
一文了解FIL 的随机性来源-Drand
参考URL: https://www.wk588.com/forum.php?mod=viewthread&tid=32968
区块链的安全保障之一来自于各种的不可预测性,比如私钥、出块权、挑战种子等等。FIL在最初的设计中采用 Ticket Chain 来产生不可预测但可公开验证的随机数。目前改为利用Drand来作为随机数源。
Filecoin最初启用和设计的 Ticket 链,Ticket Chain实际上是一个逻辑链,是寄生在Filecoin 链之上的。尽管 Ticket 链进行了很好的设计,但是仍然有其不令人满意的地方。
比如说:
1)其Ticket是每个区块都有的,但是每个高度仅需要一个,所以这里带来一个选择问题,但这个问题不大;另外,
2)Ticket 本身并不是对所有人来说都是不可预测的,因为 Ticket 是矿工产生的,所以出块矿工比其他人更早知道这个随机数是什么;再进一步,
3)当链发生分叉重组的时候,Ticket就会发生变化,这给许多依赖Ticket进行的计算将失效。
Ticket Chain并不是一个理想的解决方案,FIL团队是善于采纳新技术的,在权衡之下,目前的处理方式,随机数的产生完全脱离FIL网络,启用一个公共的、不可预测的、无倾向性的,可公共验证的随机源,这个随机源,就是 Drand。
可信随机源要解决的问题
简单来说,一个良好的随机源应该包含如下特性:
- 不可预测:任何时间点任何个体和群体都不能预测为发布的随机数
- 没有偏向性:最后的输出分布完全是随机的,不能有任何的倾向性
- 公共可验证:在随机数生成之后,任何人都可以进行验证
- 去中心化:随机数的产生应当是由一群独立而且活跃的个体产生出来
- 可获得性:系统必须保持持续运行,总是(按照节奏)不断地输出随机结果
1. 关于Drand
官网:https://github.com/drand/drand
Drand是一个独立的项目。
类似于ETH2.0实行的信标链(Beacon Chain),FIL目前采用Drand作为其Beacon源。
官网描述:
Drand - A Distributed Randomness Beacon Daemon
Drand (pronounced “dee-rand”) is a distributed randomness beacon daemon written in Golang.
Linked drand nodes collectively produce publicly verifiable, unbiased and unpredictable random values at fixed intervals using bilinear pairings and threshold cryptography.
Drand was first developed within the DEDIS organization, and as of December 2019, is now under the drand organization.
Drand:分布式随机信标守护程序
Drand(发音为“ dee-rand”)本身是一个程序,作为分布式节点都可以加入运行。Drand 由 Golang编写,使用双线性配对和阈值加密技术,将运行drand的服务器彼此链接,以固定的间隔生成共同的的,可公开验证的,无偏向于的,不可预测的随机值。Drand节点还可以将本地生成的私有随机性提供给客户端。
drand最初是在DEDIS(去中心化分布式组织)组织内部开发的,在2019年12月,独立成为drand组织。</