Proof of Elapsed Time--Hyperledger Sawtooth 共识算法
这一片文章中我们介绍一下Hyperledger Sawtooth项目中所提出的PoET共识算法, 现有的区块链共识算法大概可以分为两种:
Nakamoto consensus:通过乐透的方式选择出一个leader,由leader产生块添加到账本中。最典型的例子就是bitcoin,通过挖矿算法来选出一个leader(最先挖出块的节点),leader公布自己的块给其他的参与者,参与者决定是否将其加入到自己的链中,以及决定是否沿着该块继续向下挖掘,而这实际上是一种隐性投票。
PoET属于Nakamoto consenus的一种,它的全称是 Proof of Elapsed Time。而一个好的Nakamoto consenus要有一个好的算法来支撑,它需要具备一下几个要素:
公平:虽然每个节点的能力是有差距的,但要保证每个节点的权利是平等,这样可以使更多的节点参与到选举中来;
可校验:对于参与者而言,校验leader的身份是很容易的;
投资性:选举的投入和产出应该是成正比的。
就拿Bitcoin来讲, 设定一个很高的破坏成本(理论上需要全网51%算力,但实际上只要攻方算力能够保持的其分叉最快增长就可以完成攻击,因为其他的算力并不是统一的,而随着攻方链的增加,其余算力会加入进来),同时保证维护bitcoin的正确性能带来持续性的收益,实际上更多的是利用一个资本间的博弈来引导一个良性循环。
PoET是怎样满足以上要素的?
根据官方文档,PoET的大致思路是这样的是这样的,每个节点发布块之前都要从一个enclave(英文翻译是飞地,所谓飞地就是与国家主体领土隔离的领土,在sawtooh里面它代表一个可信操作)获取一个随机的等待时间,等待时间最短的率先发布块(相当于被选为leader),其中的enclave是通过新型的安全CPU指令来实现的。
enclave支持两个函数“CreateTimer”和“CheckTimer”,CreateTimer用于从enclave中产生一个timer,CheckTimer会去校验这个timer是不是由enclave产生?是否已经过期?如果满足以上两个条件就会一个attestation(凭证)。attestaion 中包含的信息可以用来校验 certificate(证书?wtf?) 是由该enclave 产生的,而且已经等待了timer规定的时间。
成为leader的概率与捐献的资源成比例的(所谓的捐献资源指的是可信环境下的通用处理器, ps:怎么判断捐献的资源是可信的?),因为是通用处理器(consumer and enterprise processors,虽说是通用的,但不知道是不是IBM特产的)不需要定制矿机,所以参与的门槛就比较低,节点就会比较多,整个共识会更健壮。
说简单点就是在不依赖大量的算力开销和硬件开销(矿机)下,通过硬件产生随机数保证选举的随机性。
参考网址:https://intelledger.github.io/introduction.html#proof-of-elapsed-time-poet
以上是本人理解加工后的产物,可能会有所偏差,欢迎大家指正!!!下面是我的一些疑问:
1.enclave 是每个节点一个还是由所有节点贡献的CPU构成?
2.CheckTimer由谁来调用?是leader还是其他参与节点?
3.怎么抵御拜占庭攻击?
接下来会一一解开。
Proof of Elapsed Time--Hyperledger Sawtooth 共识算法的更多相关文章
- 浅析Hyperledger Fabric共识算法 摘自http://www.cocoachina.com/blockchain/20180829/24728.html
Hyperledger Fabric共识算法 区块链系统是一个分布式架构,交易账本信息由各个节点管理,组成一个庞大的分布式账本.在分布式系统中,各个节点收到的交易信息的顺序可能存在差异(例如,网络延迟 ...
- [区块链] 共识算法之争(PBFT,Raft,PoW,PoS,DPoS,Ripple)
近几天对区块链中几种常见的共识机制(PBFT,Raft,PoW,PoS,DPoS,Ripple)进行了总结.尽量使用简单易懂语言,篇幅较大,想了解的可以只读每个算法介绍中前边的原理.本篇文章主要参考& ...
- 区块链共识算法 PBFT(拜占庭容错)、PAXOS、RAFT简述
共识算法 区块链中最重要的便是共识算法,比特币使用的是POS(Proof of Work,工作量证明),以太币使用的是POS(Proof of Stake,股权证明)使得算理便的不怎么重要了,而今PO ...
- 区块链知识博文1: 共识算法之争(PBFT,Raft,PoW,PoS,DPoS,Ripple)
注:这是本人读到的关于共识算法最全和最好的分享博文,系统的介绍了拜占庭容错技术以及共识算法的原理和常用共识算法,原文链接请见后. 目录 一.拜占庭容错技术(Byzantine Fault Tolera ...
- (二)区块链的共识算法:PoS 及其 例子 代码 实现
作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...
- 共识算法:PBFT、RAFT
转自:https://www.cnblogs.com/davidwang456/articles/9001331.html 区块链技术中,共识算法是其中核心的一个组成部分.首先我们来思考一个问题:什么 ...
- 共识算法 pos,Dpos
在之前讲解了比特币中的共识算法pow(proot of work),我们先来简单的回顾一下. 新的交易将会广播给所有节点. 每个节点将都会讲新的交易收集到一个区块中. 每个节点都在为其区块收集困难的工 ...
- [转帖][区块链]共识算法(POW,POS,DPOS,PBFT)介绍和心得
[区块链]共识算法(POW,POS,DPOS,PBFT)介绍和心得 置顶 2017-03-12 18:31:19 乐扣老师lekkoliu 阅读数 127953 收藏 更多 分类专栏: 技术管理 区 ...
- RChain的Casper共识算法
RChain的Casper共识算法是基于Vlad Zamfir的correct-by-construction共识协议和CTO Greg Meredith和其他RChain成员讨论而来的.他们还为Ca ...
随机推荐
- sphinx+reStructuredText制作文档
1 spinx简介 Sphinx 是一种文档工具,它可以令人轻松的撰写出清晰且优美的文档, 由 Georg Brandl 在BSD 许可证下开发. 新版的Python文档 就是由Sphinx生成的,并 ...
- EGOCache缓存框架具体解说
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...
- Swift开发教程--使用Storyboard进行界面跳转
使用storyboard结合代码来做确实能够给开发带来非常多的便利. 在实践的过程中,我们常常会遇到界面的跳转问题. 通过控件和界面的建立的"连接"就能够了. 假设是navigat ...
- 使用Mybatis-Generator自己主动生成Dao、Model、Mapping相关文件
准备工作: 1.数据库驱动程序 2.generatorConfig驱动,(下载地址:https://github.com/mybatis/generator/releases) 3.generator ...
- 基于 HTML5 Canvas 的 3D 机房创建
对于 3D 机房来说,监控已经不是什么难事,不同的人有不同的做法,今天试着用 HT 写了一个基于 HTML5 的机房,发现果然 HT 简单好用.本例是将灯光.雾化以及 eye 的最大最小距离等等功能在 ...
- Struts2学习笔记整理(二)
这里是重点. Action接口 struts2 的Action可以是POJO 为了让用户开发的Action更加规范struts2提供了一个Action接口 ActionSupport基类 Struts ...
- MongoDB 数据库备份与恢复
1.MongoDB数据库备份 1.语法: mongodump -h dbhost -d dbname -o dbdirectory 参数说明: ...
- 什么是 stack?- 每天5分钟玩转 Docker 容器技术(111)
什么是 stack ?在回答这个问题之前我们先回忆一下前面部署 WordPress 应用的过程: 首先创建 secret. 然后创建 MySQL service,这是 WordPress 依赖的服务. ...
- PHP csv文件内容转成数组/Json
$lines = array_map('str_getcsv', file($filePath));; $result = array(); $headers = null; if (count($l ...
- gradle发布jar包
在.gradle文件中添加以下代码 apply plugin: 'application' mainClassName = 'com.excel.ExcelApplication' jar { doF ...