Filecoin: 影响力容错(PFT)和预期共识(EC)

名字翻译:Power Fault Tolerance-影响力容错
关于这个名字翻译,小编思考了大约2周时间,期间也跟各路技术牛人进行了交流。
The Power Fault Tolerance model (PFT) unifies all these classes of protocols by modeling the influence participants have over the output of the protocol as power
这是filecoin协议里面对 PFT的解释,power概念就是矿工的影响力(influence),“Power”是filecoin系统的投票权力的大小度量,根据矿工贡献的Power来计算矿工的投票权有多大,根据信达雅的基本要求,所以称为“影响力容错”。之前曾经考虑过“权利容错”和“权益容错”,“权利”这个词本身表达不了大小的概念,而“权益”又跟Proof of Stake(权益证明:EC共识是在这个基础上进行的,有必要区分)有冲突,于是小编把这个词翻译成影响力容错。或许有更贴切的表达方式,欢迎讨论!
共识(Consensus):拜占庭共识
共识---一个区块链领域领域里面经常谈起的一个概念,任何区块链都无法绕开的一个问题。在我们的日常生活中,绝大多数机构都是中心化的,一家银行,快递公司,电商网站等等。共识是在参与者之间达成一致。由于中心化的机构由中心化的机构本身来维护共识,比如:银行,帮我们所有人记账,由国家权力保障,我们信任银行,这是我们的经济得以发展的基础。
在区块链领域里面,所有节点都是对等节点,就是说没有任何一个节点有超越其他节点的权限。那么想在这么一个一盘散沙的节点中维护一个共识是一件非常难的事情,试想一下,大广场上有1000个平等的互相不信任的人,要让他们对一件事情做出共同的决策,其难度有多高?
起源
在学术界里面这个问题起源于1982年Leslie Lamport(图灵奖获得者)在他的论文里面提出的“拜占庭将军问题”(Byzantine Generals Problem),目的是解决分布式对等网络的通信容错问题。
拜占庭将军问题描述:
简单的描述:假设有9个拜占庭将军共同围困一座城市,将军之间都是平等的,他们的对于城市的策略只有两种:进攻和撤退。如果一部分进攻一部分撤退,将会造成灾难性的后果。9个将军分布在城市的不同方向,只能通过信使进行通信。那么他们要达成一致,就需要进行投票,每位将军根据收到的情报来决定进攻还是撤退。
问题是将军里面会有叛徒,比如:当将军的投票达到4个进攻4个撤退的时候,叛徒将军可以采取对4个进攻的将军投进攻票,对4个撤退的将军投撤退票。决策的最终结果就会崩溃,一部分将军选择了进攻,一部分将军选择了撤退。

围观一下牛人:Leslie Lamport
在这个问题中,将军投票达成一致协议,就叫做拜占庭共识,在有将军叛变的情况下仍然能够达成正确的共识就做拜占庭容错,当然这是一个很简化版的描述。(小编在巴比特上面找到一个讲的比较全面的,大家可以参考一下:http://www.8btc.com/bitcoin-and-the-byzantine-generals-problem)。
将这个问题转换到计算机里面,对等节点之间的通讯是通过电信号进行的,电信号是会出现各种干扰(例如磁场),0和1最终可能会发生错误。
这个难题困扰了学术界很久很久,直到1999年Miguel Castro和Barbara Liskov提出了实用拜占庭容错算法PBFT(Practical Byzantine Fault Tolerance),提供了(n-1)/3节点的容错。这是一个非常了不起的成就(算法的具体过程不属于本文的讨论范围,有兴趣的读者可以自行Google一下)。
2009年中本聪使用工作量证明(Proof of Work)解决了这一问题,使得BTC能够成为现实。
那么具体到Filecoin上,Filecoin是如何解决拜占庭容错的呢?
Filecon在拜占庭容错BTF的基础上提出了改进版的拜占庭容错,这就是 影响力容错(Power Fault Tolerance)和预期共识(Expected Consensus),用来替代能源和计算资源严重浪费的工作量证明(Proof-of-Work)机制。
Filecoin的分布式网络协议可以使用任何共识协议来实现,完全可以使用BTC的机制(Proof-of-Work)。但是BTC的工作量证明带来的问题是能源和计算资源的巨大浪费,于是Filecoin协议抛弃这个共识机制,使用Proof-of-Spacetime(PoSt)来替代工作量证明,PoSt是filecoin在验证矿工存储用户数据的时候产生的,Filecoin把矿工在网络中的当前存储数据相对于整个网络的存储比例转化为矿工投票权(voting power of the miner),重用PoSt来产生共识,太环保了,不用像BTC那样浪费计算资源和能源,并且能激励矿工投入更多的硬盘而不是计算资源和能源,为网络做贡献-----完美!!!
预期共识(Expected Consensus,EC):
Filecoin的共识协议是基于权益共识(Proof-of-Stake)构建的,将权益共识里面的权益(stake)换成了存储,这就是Filecoin的预期共识(Expected Consensus),策略是每一轮里面选举出来一名或者多名矿工来创建新的block,矿工赢得选举的可能性跟矿工已分配的存储成比例。
在每一个周期里面,预期选举出来的领导矿工(Leader)是1个,但是在某些情况下也会选举出来多个领导矿工。被选举出来的矿工创建新的block,并把新的block对网络进行广播。尽管链中的block是线性的,但是filecoin的block数据结构采用的DAG(有向无环图),可以在同一时间产生多个block(所以Filecoin的交易要比BTC的有效的多,这也是为什么把filecoin叫做“可能的blockchain 3.0”)。
共识是一个区块链领域的核心,区块链天生就是对等的分布式网络,这就是所谓的去中心化。去中心化现在被吹的有点过了,去中心化不是万物的灵药,只是在自己领域里面有独特的作用,中心化的效率还是非常高的。所以不应一味的强调去中心化,而是应该根据实际的应用场景来决定使用范围。相信区块链的共识协议会随着区块链的发展进化出更加美好的共识协议,区块链也会逐步进化,成长!
作者飞向未来,致力于IPFS/Filecoin在中国的技术推广,他的微信公众号和社群,目前是中国最活跃最顶级的IPFS社群。作者飞向未来是圆方圆区块链的特邀嘉宾,所有转载都已经得到飞向未来本人授权。
更多飞向未来导师的公众号,可以在IPFS指南公众号中找到。
圆方圆链圈

Filecoin: 影响力容错(PFT)和预期共识(EC)的更多相关文章
- Filecoin:一种去中心化的存储网络(二)
开始初步了解学习Filecoin,如下是看白皮书的内容整理. 参考: 白皮书中文版 http://chainx.org/paper/index/index/id/13.html 白皮书英文版 http ...
- seleium 之 EC 的用法
场景 Expected Conditions的使用场景有2种 直接在断言中使用 与WebDriverWait配合使用,动态等待页面上元素出现或者消失 方法注释 先翻译一下这些方法的用法 title_i ...
- 浅析Facebook LibraBFT与比原链Bystack BBFT共识
如果说什么是区块链的灵魂,那一定是共识机制. 它是区块链的根基.无论公链或是联盟链,共识机制都从基础上限制了区块链的交易处理能力和扩展性. 2019年6月18日,Facebook 发布了自己 Libr ...
- Hadoop 3.0 EC技术
Hadoop 3.0 EC技术 EC的设计目标 Hadoop默认的3副本方案需要额外的200%的存储空间.和网络IO开销 而一些较低I/O的warn和cold数据,副本数据的访问是比较少的(hot数据 ...
- Block Chain Learning Notes
区块链是什么 区块链技术是由比特币创造的,本文也将从比特币开始进行引导,一步一步告诉大家什么是区块链.如果你想立马知道区块链是什么,也可以直接转到文章末尾的区块链定义. 区块链,可能是当下最有前景又充 ...
- 如何阅读一本书([美] 莫提默·J. 艾德勒 / 查尔斯·范多伦 )
进入豆瓣读书 前言 2017年1月2日跟着熊猫书院开始了为期十月的阅读计划. 熊猫书院是一个微信公众号,但仅对熊猫书院学员开放.它是一个很好的读书产品,从入学申请.入学报到.班长 ...
- python selenium expected_conditions使用实例
今天正好虫师问到selenium python binding中support.expected_conditions的用法,顺手总结了一下,希望对大家有所帮助. 场景 Expected Condit ...
- web自动化测试-selenium的三种等待
一.等待的作用 1.在系统的功能运行过程中,所有的内容是需要一定的时间来实现展示, 2.时间耗费长短与网络速度.系统框架设定.接口的执行复杂度有关, 3.因此需要设置缓冲时间,若未设置缓冲时间,容易导 ...
- Selenium 对元素的判断(expected_conditions)(转载)
我们在用webdriver去操作元素时,先要判断这个元素是否存在,存在才去操作,否则就会报错. selenium的expected_conditions模块提供了一些判断方法 场景 Expected ...
随机推荐
- HDU - 2187 贪心
思路: 按照单价升序排序,依次买就行. AC代码 #include <cstdio> #include <cmath> #include <algorithm> ...
- 【BZOJ2095】 Bridge
Time Limit: 1000 ms Memory Limit: 128 MB Description YYD为了减肥,他来到了瘦海,这是一个巨大的海,海中有n个小岛,小岛之间有m座桥连接,两个 ...
- Spring data mongodb ObjectId ,根据id日期条件查询,省略@CreatedDate注解
先看看ObjectId 的json 结构,非常丰富,这里有唯一机器码,日期,时间戳等等,所以强烈建议ID 使用 ObjectId 类型,并且自带索引 Spring data mongodb 注解 @C ...
- 四级地址插件升级改造(京东商城地址选择插件)city-picker
最近公司做的项目要和京东的数据做对接,所以要做个类似京东商品的详情页.页面的数据,是可以从京东接口获取到的,但是地址插件选择的效果需要自己实现.前端的同事在之前的项目中,已经选择了一款地址插件(cit ...
- CSRF的本质及防御
本质:产生的原因本质上是参数可知或可预测 防御: 1.加密参数:加密加盐,不可知,不可预测 忧虑,引入其他麻烦:一.数据分析困难 ...
- 微信开源的Android热补丁框架 Tinker
前不久,微信开源了其Android热补丁框架Tinker,它的特别之处在于放在github.com/Tencent下面,是该账号下第一个正式的开源项目,可以看到腾讯对它的重视和认可. 早在6月份微信客 ...
- 图像处理------Canny边缘检测
一:历史 Canny边缘检测算法是1986年有John F. Canny开发出来一种基于图像梯度计算的边缘 检测算法,同时Canny本人对计算图像边缘提取学科的发展也是做出了很多的贡献.尽 管至今已经 ...
- Failed while installing Dynamic Web Module 3.0
1.错误描述 2.错误原因 Java Web项目不满足Web Module 3.0,需要降低Web Module版本 3.解决办法 (1)降低Web Module版本为2.5 (2)修改jdk版本,升 ...
- GStreamer 简化 Linux 多媒体开发
Streamer 是 GNOME 桌面环境下用来构建流媒体应用的开源多媒体框架(framework),其目标是要简化音/视频应用程序的开发,目前已经能够被用来处理像 MP3.Ogg.MPEG1.MPE ...
- CentOS持久化二进制日志(systemd日志)
1.创建日志存储文件 /var/log/journal 2.改变存储文件属主属组 chown root:systemd-journal /var/log/journal/ 3.修改文件权限 chmod ...