基于消逝时间量的共识机制(POET)
来自于Intel project:Hyperledger Sawtooth,目前版本 PoET 1.0
PoET 其实是属于Nakamoto consenus的一种,利用“可信执行环境”来提高当前解决方案(如工作证明)的效率。发布到Hyperledger的PoET的初始参考实现是为抽象TEE编写的,以使其对任何TEE实现都保持灵活性。
PoET stochastically elects individual peers to execute requests at a given target rate. Individual peers sample an exponentially distributed random variable and wait for an amount of time dictated by the sample. The peer with the smallest sample wins the election.
For the purpose of achieving distributed consensus efficiently, a good lottery function has several characteristics:
- Fairness: The function should distribute leader election across the broadest possible population of participants.
- Investment: The cost of controlling the leader election process should be proportional to the value gained from it.
- Verification: It should be relatively simple for all participants to verify that the leader was legitimately selected.
现使用SGX技术构建TEE,using new secure CPU instructions which are becoming widely available in consumer and enterprise processors(现在Intel自家的cpu都支持了SGX)。PoET uses these features to ensure the safety and randomness of the leader election process without requiring the costly investment of power and specialized hardware inherent in most “proof” algorithms. (这也是其卖点,具有proof-based算法的高可扩展性,同时也具有低消耗,较高性能)
它基于如下方式运行:
- Every validator requests a wait time from an enclave (a trusted function).
- The validator with the shortest wait time for a particular transaction block is elected the leader.
- One function, such as “CreateTimer”, creates a timer for a transaction block that is guaranteed to have been created by the enclave.
- Another function, such as “CheckTimer”, verifies that the timer was created by the enclave. If the timer has expired, this function creates an attestation that can be used to verify that validator did wait the allotted time before claiming the leadership role.
The PoET leader election algorithm meets the criteria for a good lottery algorithm. 分布类似于其他彩票算法提供的分配。选举的概率与所贡献的资源成比例(在这种情况下,资源是具有可信执行环境的通用处理器)。An attestation of execution provides information for verifying that the certificate was created within the enclave (and that the validator waited the allotted time). Further, the low cost of participation increases the likelihood that the population of validators will be large, increasing the robustness of the consensus algorithm.
----------------------------------------------------
enclave:其实是SGX中的术语,A protected area in an application’s address space which provides confidentiality and integrity even in the presence of privileged malware.
PPK, PSK:PoET ECC public and private key created by the PoET enclave.
关键的函数:


这里有三种情况:如果当前SGX安全时间比waitTimer中的时间要小,那么还没有到时间;如果比这个时间加Twt要大,那么该waiTimer失效了,过期(所以只能在Twt时间内处理);如果在区间内,则生成认证,并且置全局变量
WaitTimer activeWT 为NULL,该变量标识是否有可用的waitTimer对象
阶段:Sign-up Phase(包括client side 和 server side):A validator has to wait forblock to be published on the distributed ledger before participating in an election.
阶段:Election Phase:
客户端开启,从disk中调取密封的数据解密封,然后调用createWaitTimer函数,等待函数产生的duration时间,到了后及时调用creatWaitCertification函数,产生waitCertificate,将(waitCertificate, signature, block, OPK, PPK) 广播出去。其它的server验证这些tuples,最后从所有合法的waitcertificate中找最小的duration为选举成功者。
(验证的过程中,好几点没看懂??还有,验证enclave产生的证书时,是在验证者的enclave中验证,还是在外部验证?)
安全考虑:设置Twt的目的是强制执行此约束以避免在一段时间内没有事务构建块的情况下,几个验证程序在等待WaitTimers的持续时间后可能会保留,并且只有在有足够的事务可用时才生成WaitCertificate。在这一点上,他们都会发出他们的WaitCertificates,产生大量流量并可能导致分叉。超时缓解了这个问题。
关于 Multi-user or Multi-ledger SGX Enclave Service:通过将用户名和分类帐输入参数设置为generateSignUpData()和unsealSignUpData(),可以为多个用户或分类帐使用相同的包围区。 然后将注册元组(用户名,分类帐,PPK,PSK,MCID)密封到磁盘,用户名和分类帐用于生成文件名。 只要用户对服务进行身份验证,后者就可以将安全区解封,并使用与该用户(和分类帐)对应的文件中的注册元组。
参考:https://sawtooth.hyperledger.org/docs/core/releases/latest/architecture/poet.html#introduction
基于消逝时间量的共识机制(POET)的更多相关文章
- Hyperledger中的共识机制
Hyperledger Consensus 共识过程 Hyperlydger中建立共识的过程由以下两个独立的过程构成: Ordering of transactions (交易排序) Validati ...
- POW共识机制原理及优缺点
PoW共识机制 POW工作量证明(英文全称为Proof of Work)在比特币之前就已经出现,中本聪在设计区块链的共识机制的时候就是借鉴了POW工作量证明.常见的是利用HASH运算的复杂度进行CPU ...
- 区块链共识机制(POW、POS、DPOS等)的优缺点
一.POW:工作量证明机制 基本原理: 第一代共识机制,比特币的基础.理解起来,很简单,就是“按劳取酬”,你付出多少工作量,就会获得多少报酬(比特币等加密货币).在网络世界里,这里的劳动就是你为网络提 ...
- 通俗讲解:PoW共识机制与以太坊的关系、Ghost协议 及 PoS共识机制的变种---Casper
作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...
- (转)从拜占庭将军问题谈谈为什么pow是目前最好的共识机制
我们知道基于区块链技术现在有很多的共识机制,包括不限于POW,POS,DPOS,PBFT……,我先不说为什么我最认可POW,我们先来看看著名的拜占庭将军问题: 拜占庭帝国即中世纪的土耳其,拥有巨大的财 ...
- 区块链共识机制之工作量证明(POW)
像比特币.以太坊.NXT.Bitshares等这些区块链系统,其本质上是一种加密经济组织,它建立在点对点网络上,是去中心化.无管辖的,由密码学.经济学和社会共识来共同维护.这些加密网络因各种原因有着多 ...
- 基于netty轻量的高性能分布式RPC服务框架forest<下篇>
基于netty轻量的高性能分布式RPC服务框架forest<上篇> 文章已经简单介绍了forest的快速入门,本文旨在介绍forest用户指南. 基本介绍 Forest是一套基于java开 ...
- 基于netty轻量的高性能分布式RPC服务框架forest<上篇>
工作几年,用过不不少RPC框架,也算是读过一些RPC源码.之前也撸过几次RPC框架,但是不断的被自己否定,最近终于又撸了一个,希望能够不断迭代出自己喜欢的样子. 顺便也记录一下撸RPC的过程,一来作为 ...
- 共识机制:AngelToken技术的根基
共识机制是区块链技术的一个核心问题,它决定了区块链中区块的生成法则,保证了各节点的诚实性.账本的容错性和系统的稳健性. 常用的共识机制主要有 PoW.PoS.DPoS.Paxos.PBFT等. 基于区 ...
随机推荐
- Alpha 冲刺 —— 十分之八
队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭鸭鸭鸭鸭鸭鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作 多次测试软件运行 学习OPENMP ...
- netbeans工具使用xdebug断点调试php源码
对有有经验的程序员,使用echo.print_r().print_f().var_dump()等函数足以调试php代码,如果需要在IDE工具中使用断点调试,xdebug就是一个非常好的php调试工具. ...
- JAVA代码保护从入门到放弃
java语言开发的产品,需要部署到客户现场服务器.产生了对代码进行保护的需求,开始研究代码加密方式. 经过研究分析后有两种思路,混淆和加密.两者各自适应不同的情况. 由于大量spring注解功能,并且 ...
- vmware中centos7设置静态IP
1.vmware—>Edit—>Virtual Network Editor,选中vmnet8-Nat设置,查看网关IP 2.在centos中设置: vi /etc/sysconfig/n ...
- Webpack + React 开发 02 JSX 语法
HTML 语言直接写在 JavaScript 语言之中,不加任何引号,这就是 JSX 的语法,它允许 HTML 与 JavaScript 的混写: render(<h1>Hello Wor ...
- 【数据结构】【CF1073D】 Berland Fair
Description 给定 \(n\) 个商店,他们围成一个圆圈,按照顺时针从 \(1\) 到 \(n\) 编号.你有 \(T\) 元钱,从 \(1\) 号点开始按照顺时针方向走,每到一个商店,只要 ...
- C++并发类成员函数调用(练习1)
一般类成员函数开线程格式 std::thread t1(&类名::函数,&实例化对象,参数....) ||std::thread t1(std::bind(&&类名:: ...
- git<commit和分支>
commit: 在执行提交命令git commit之前,一定要git add要修改的文件,这样才能将更改的内容更新到本地. 在Git 中提交时,会保存一个提交(commit)对象,它包含一个指向暂存内 ...
- Chapter3 (字符串,向量,数组) --C++Prime笔记
1.using用法:using namespace ::name;注意事项:一般不在头文件使用using否则很容易导致运用命名空间不对错误. 2.string的方法: ①getline(输入流,str ...
- Hadoop生态圈-使用phoenix的API进行JDBC编程
Hadoop生态圈-使用phoenix的API进行JDBC编程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
block to be published on the distributed ledger before participating in an election.
客户端开启,从disk中调取密封的数据解密封,然后调用createWaitTimer函数,等待函数产生的duration时间,到了后及时调用creatWaitCertification函数,产生waitCertificate,将(waitCertificate, signature, block, OPK, PPK) 广播出去。其它的server验证这些tuples,最后从所有合法的waitcertificate中找最小的duration为选举成功者。