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 ...
随机推荐
- 19_Android中图片处理原理篇,关于人脸识别站点,图片载入到内存,图片缩放,图片翻转倒置,网上撕衣服游戏案例编写
1载入图片到内存 (1).数码相机照片特别是大于3m以上的,内存吃不消,会报OutOfMemoryError,若是想仅仅显示原图片的1/8,能够通过BitmapFactory.Options来实现.详 ...
- hbase 0.98.1集群安装
本文将基于hbase 0.98.1解说其在linux集群上的安装方法,并对一些重要的设置项进行解释,本文原文链接:http://blog.csdn.net/bluishglc/article/deta ...
- Java深入 - MyBatis的经常用法
MyBatis我们这篇文章主要记录一些经常使用的操作方法.这样在开发和使用的过程中这篇文章能够当做工具书来使用. MyBatis的数据源配置 <bean id="dataSource& ...
- ABP 框架启程
准备动手写一套电商的系统,辗转收集了不少相关的开源项目,最后决定使用ABP作为起点. 在园子里好多人都在推广ABP.有个园友做了一个集合贴,方便大家使用 ABP集合贴 建议大家优先看 HK Zhan ...
- make工程管理器
1.概述 大型程序中,人们希望工具自动识别修改的文件,而且不需要输入冗长的命令,就可以进行编译链接等操作,于是make工程管理器应运而生. make可以自动识别文件时间戳,只处理修改的文件: make ...
- 详细:idea如何设置类头注释和方法注释
IntelliJ IDEA 类注释和自定义方法注释 来源:https://my.oschina.net/baishi/blog/617478#navbar-header intellj idea的 ...
- 0基础手把手教你搭建webpack运行打包项目(未完待续)
这些天在项目之余的时间学习了webpack打包项目的东西,非常荣幸的找到一些大神的文章来学习,死劲嚼了几天,终于略知一二.在以后的工作上还需继续学习,下面我将分享我这几天学到的一点东西,希望能让我一个 ...
- 前后端分离ueditor富文本编辑器的使用-Java版本
最近在写一个自己的后台管理系统(主要是写着玩的,用来熟悉后端java的知识,目前只是会简单的写点接口),想在项目中编写一个发布新闻文章的功能,想到了使用百度的ueditor富文本编辑器,网上找了很多j ...
- 【java】文件操作java.io.File
package 文件操作; import java.io.File; import java.io.IOException; public class TestFile { public static ...
- Jstree 使用CheckBox插件 选中父节点时被禁用的子节点也会选中问题
问题描述: 最近用jstree遇到一个问题,使用CheckBox插件时,当父节点选中时,被禁用的子节点也会选中如下 解决方案: 1. 将jstree升级到最新的版本,v3.3.4及以上就可以 2. ...