这一片文章中我们介绍一下Hyperledger Sawtooth项目中所提出的PoET共识算法, 现有的区块链共识算法大概可以分为两种:

Nakamoto consensus:通过乐透的方式选择出一个leader,由leader产生块添加到账本中。最典型的例子就是bitcoin,通过挖矿算法来选出一个leader(最先挖出块的节点),leader公布自己的块给其他的参与者,参与者决定是否将其加入到自己的链中,以及决定是否沿着该块继续向下挖掘,而这实际上是一种隐性投票。

Byzantine Fault Tolerance (BFT) consensus: 基于传统的拜占庭算法,通过多轮的投票来达成一致性。目前已知小蚁区块链是使用这种共识机制,在hyperledger的官网上面声称Ripple和Stellar实现了这种共识机制,但还尚待考证。

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 共识算法的更多相关文章

  1. 浅析Hyperledger Fabric共识算法 摘自http://www.cocoachina.com/blockchain/20180829/24728.html

    Hyperledger Fabric共识算法 区块链系统是一个分布式架构,交易账本信息由各个节点管理,组成一个庞大的分布式账本.在分布式系统中,各个节点收到的交易信息的顺序可能存在差异(例如,网络延迟 ...

  2. [区块链] 共识算法之争(PBFT,Raft,PoW,PoS,DPoS,Ripple)

    近几天对区块链中几种常见的共识机制(PBFT,Raft,PoW,PoS,DPoS,Ripple)进行了总结.尽量使用简单易懂语言,篇幅较大,想了解的可以只读每个算法介绍中前边的原理.本篇文章主要参考& ...

  3. 区块链共识算法 PBFT(拜占庭容错)、PAXOS、RAFT简述

    共识算法 区块链中最重要的便是共识算法,比特币使用的是POS(Proof of Work,工作量证明),以太币使用的是POS(Proof of Stake,股权证明)使得算理便的不怎么重要了,而今PO ...

  4. 区块链知识博文1: 共识算法之争(PBFT,Raft,PoW,PoS,DPoS,Ripple)

    注:这是本人读到的关于共识算法最全和最好的分享博文,系统的介绍了拜占庭容错技术以及共识算法的原理和常用共识算法,原文链接请见后. 目录 一.拜占庭容错技术(Byzantine Fault Tolera ...

  5. (二)区块链的共识算法:PoS 及其 例子 代码 实现

    作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...

  6. 共识算法:PBFT、RAFT

    转自:https://www.cnblogs.com/davidwang456/articles/9001331.html 区块链技术中,共识算法是其中核心的一个组成部分.首先我们来思考一个问题:什么 ...

  7. 共识算法 pos,Dpos

    在之前讲解了比特币中的共识算法pow(proot of work),我们先来简单的回顾一下. 新的交易将会广播给所有节点. 每个节点将都会讲新的交易收集到一个区块中. 每个节点都在为其区块收集困难的工 ...

  8. [转帖][区块链]共识算法(POW,POS,DPOS,PBFT)介绍和心得

    [区块链]共识算法(POW,POS,DPOS,PBFT)介绍和心得 置顶 2017-03-12 18:31:19 乐扣老师lekkoliu 阅读数 127953  收藏 更多 分类专栏: 技术管理 区 ...

  9. RChain的Casper共识算法

    RChain的Casper共识算法是基于Vlad Zamfir的correct-by-construction共识协议和CTO Greg Meredith和其他RChain成员讨论而来的.他们还为Ca ...

随机推荐

  1. python爬虫(四)_urllib2库的基本使用

    本篇我们将开始学习如何进行网页抓取,更多内容请参考:python学习指南 urllib2库的基本使用 所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地.在Python中有很 ...

  2. Web Api 基于Zookeeper的服务注册与发现

    安装与差异 Zookeeper安装请参考我上篇文章 http://www.cnblogs.com/woxpp/p/7700368.html 基于Nginx的服务提供和消费 基于zookeeper的服务 ...

  3. Django的Form

    Django的Form有两个基本用途: 1.用于生成html的Form表单 2.用于后台做表单验证 #!/usr/bin/env python # -*- coding:utf-8 -*- impor ...

  4. Spring:Bean生命周期

    关于Bean生命周期,我在网上找了两张图: 图1: 图2: 总结起来就是: Bean构建: Bean对象创建 > @Autowired | @Resource> @PostConstruc ...

  5. JAVA IO分析三:IO总结&文件分割与合并实例

    时间飞逝,马上就要到2018年了,今天我们将要学习的是IO流学习的最后一节,即总结回顾前面所学,并学习一个案例用于前面所学的实际操作,下面我们就开始本节的学习: 一.原理与概念 一.概念流:流动 .流 ...

  6. web.config中配置数据库(多数据)连接的两种方式

    这是我的第一篇文章,既然是第一篇了,那就从最基础的只是说起--web.config中配置数据库连接. 网上有很多这方面的资料,但发现并没有一篇从头到位很清楚明了说完的,今天就把我的整理写在这里吧. 在 ...

  7. InfluxDb中写入重复数据问题解决方案

    1.InfluxDb版本 0.10.3 2.Measurement TodayChargeTimeReport 只有time和Field列,没有Tag列 3.现象:通过定时任务向上面的表中写入数据: ...

  8. DotNetCore跨平台~为Lind.DotNetCore框架添加单元测试的意义

    回到目录 单元测试大叔认为有几下两个必要的作用,也是为什么要上单元测试的原因 组件,框架在修改和BUG解决后,进行正确性的测试,然后才能打包 业务模块,主要提现在进行业务规则的模拟上面,保证了业务逻辑 ...

  9. 小程序代码包压缩 策略&方案

    微信小程序自推出以来,逐渐发展,目前正受到越来越多的青睐.其中很重要的一点得益于小程序的轻量级特性,每个小程序最多不超过2MB,招之即来挥之即去,相比于几十上百兆的APP,用户进入小程序,或者说,小程 ...

  10. 【java】控制台实现贪吃蛇小游戏-LinkedList、Scanner

    package com.myproj.snake; public class Node { private int i,j; public Node(){} public Node(int i, in ...