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 ...
随机推荐
- uva225 回溯剪枝
这道题要剪枝,不然会超时,还有就是每次参加过的城市下次不能再参观,不然会WA. 对于障碍物的坐标我用了两种方法,第一种就是直接用STL里面的set,对于判断是否访问过直接用的count,用时960ms ...
- Luogu P1092 虫食算
题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子: 43#9865#045 +8468#6633 44445509678 其中# ...
- Luogu P1522 牛的旅行 Cow Tours
题目描述 农民 John的农场里有很多牧区.有的路径连接一些特定的牧区.一片所有连通的牧区称为一个牧场.但是就目前而言,你能看到至少有两个牧区通过任何路径都不连通.这样,Farmer John就有多个 ...
- 用开源的 ffmpeg 实现屏幕录像机
在我看来,FFmpeg 绝对是一个很酷的应用.那么,它究竟有什么用呢?简单地讲,FFmpeg 相当于一个屏幕录像机.你可以使用它将屏幕上的操作过程录制下来,然后再将其播放给别人看.我们可以利用它制作教 ...
- Google最新的图片格式WEBP全面解析
前言 不管是 PC 还是移动端,图片一直是流量大头,以苹果公司 Retina 产品为代表的高 PPI 屏对图片的质量提出了更高的要求,如何保证在图片的精细度不降低的前提下缩小图片体积,成为了一个有价值 ...
- vxWorks BSP主要文件目录的组成及主要文件的作用
vxWorks BSP主要文件目录的组成及主要文件的作用 1.目录target/config/All: 这个目录下的文件是所有BSP文件共享的,不是特别需要不要更改里面的任何文件. a.configA ...
- 基于stm32的can总线彻底研究
1.CAN总线的初始化 void can_init(void){ CAN_InitTypeDef CAN_InitStructure; CAN_FilterInitT ...
- stm32之keil开发环境搭建
只要按照下面的一步步来,绝对能从0开始建立一个STM32工程.不仅包括工程建立过程,还有Jlink设置方法.本文使用芯片为STM32F103CB. 1 下载stm32F10x的官方库 http://w ...
- MTBF
MTBF,即平均故障间隔时间,英文全称是"Mean Time Between Failure".是衡量一个产品(尤其是电器产品)的可靠性指标.单位为"小时".它 ...
- css 超出规定行数自动隐藏
单行overflow: hidden;text-overflow: ellipsis;white-space: nowrap; 多行(兼容各个浏览器)//通过覆盖最后几个字的形式p{positio ...