一、共识相关
1、POW共识
工作量证明,按劳分配,算力决定一切,谁的算力多,谁记账的概率就越大。
具体:找到一个hash值 SHA256(SHA256(Block_Header)),使得新区块头的哈希值小于某一个指定的值,即区块头中的“难度目标”。找到之后,会全网进行广播打包的区块进行验证,验证通过,该区块会被接受,从而记录到账本中。
2、POS共识
股权证明,根据用户持有货币的多少和时间(币龄),发放利息的制度。纯POS机制的加密货币,只能通过IPO的方式发行,这就导致“少数人”获得大量成本极低的加密货币。信用基础并不牢固。出块方式是通过随机数。
3、 DPOS
权益持有者选举任何数量的见证人来生成区块,类似人民代表大会制度。即将POS中多有可记账改为只有选举出的见证者才可以记账。优点是交易确认时间短。
二、HyperLedger Fabric共识算法
1、solo模式单一order节点出块
2、kafka模式
3、拜占庭容错
三、Hyperledger 工作流程
Fabric
基本的流程包括四个阶段,分别是模拟(simulate)
、排序(order)
、验证(validata)
、提交(commit)
模拟
如其名字所说的一样,这一阶段只是模拟进行交易,并不真正更新ledger
。
client
发起交易请求,请求被发送至endorsers
(endorsement peer
,这些peer
是根据endorsement policy
选出来的),endorsers
根据当前本地的ledger状态
并行模拟进行这些交易,虽然不改变ledger状态,但是会产生一个read set
和一个write set
记录这个交易的影响,模拟完成后,endorser
对read set
和write set
进行签名并将其一起返回给client
。
如果client
收到的read set
和write set
是一致的(可能存在恶意endorser或者智能合约存在不确定的算法导致出现不一致),那么client
就会生成一个真正的交易请求,包含read set
、write set
和对应的签名,并将这个请求发送给ordering service
。
排序
ordering service
对来自client
的交易进行排序,需要注意的是这里并不检查交易的内容,默认按照交易到达的顺序进行排序(这种简单的排序可能导致大量的交易冲突,降低性能,如果按某一特定的顺序排序可以极大的较少交易冲突,提高吞吐量,这也是这篇论文提出的最重要的工作,这里就不细说)。
ordering service
将交易排序后打包成block
,发送给网络中的peers
,这里不保证所有的peer
同时收到这个block
,但保证收到的block
的顺序是一致的(使用gossip协议
)。
验证
当peer
收到block
后,就开始验证阶段。
验证阶段主要包括两个检查:
Endorsement Policy
检查
检查交易是否满足endorsement policy
以及是否包含有效的签名,否则说明交易可能被client
或者恶意peer
篡改过,直接丢弃。- 交易冲突检查
检查交易之间是否存在冲突,也就是是否读脏数据的问题(某个交易在读取ledger
之前,ledger
被前一个交易改变了),如果存在就丢弃该交易。
两次检查都通过的话就可以进入commit
阶段了。
提交
peer
将block
添加到链上,注意这里是所有的交易(有效的和无效的)都加进来了。然后根据有效的交易改变当前的ledger
状态。
参考链接
https://blog.csdn.net/yijiull/article/details/94966044
版权声明:《 区块链实习问题总结 》为admin原创文章,转载请注明出处!
最后编辑:2021-1-28 20:01:20