区块链共识算法原理

Posted 跨链技术践行者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链共识算法原理相关的知识,希望对你有一定的参考价值。

两种共识算法:

拜占庭容错(BFT) Byzantine Fault Tolerance,非拜占庭容错(CFT) Crash Fault Tolerance

CFT认为机器可能宕机,网络可能异常,但是所有信息真实可信。BFT在CFT的基础上,认为出错的机器是可能说谎的。 CFT模型容错需要至少2f+1台机器,BFT模型容错需要至少3f+1台机器

BFT代表的算法:PBFT(基于两阶段提交的算法)POW(工作流证明算法)XFT( Cross Fault Tolerance)

CFT代表的算法:Paxos,Raft及其变种

基本原则:

FTP不可能原理、CAP原理、ACID原则

paxos算法:分布式中没有恶意节点的情况,在两阶段提交中,通过保持最大的提案号来确保提案通过,每次只要超过半数即可

PBFT (拜占庭容错算法):通过预准备(提交提案),准备(各个节点收到提案进行广播),提交(各节点收到一定的请求,则进行提交),此算法可以在N>=3F+1时保持正确

参考:https://blog.csdn.net/jerry81333/article/details/74303194

raft算法:类似于多主从结构,选举出leader再进行两阶段提交。其他节点作为follower遵守leader的决定。

Follower变身candidate 选举为Leader,由leader进行操作,同步到Follower

拜占庭将军问题:对现实网络问题的模型化。节点中有恶意的情况。

比特币网络中使用工作量证明来解决拜占庭问题

Casper 讨论:http://finance.sina.com.cn/blockchain/coin/2018-06-04/doc-ihcmurvh0978930.shtml

merkle patricia tree: https://ethfans.org/toya/articles/588

改进型的POW算法:

Ethash算法:抵抗矿池,推出的算法。使得挖矿与内存和带宽相关

总的来说是在POW基础上加上区块存储和缓存计算

1.根据区块头计算出一个种子,

2.使用种子产生16M的伪随机缓存,轻客户端存储缓存。

3.基于缓存使用特定算法生成1GB的的数据集DAG,使用缓存中的元素可以快速计算DAG指定位置的元素。数据集随时间线性增长。

4.挖矿成了矿工从DAG中随机选择元素进行散列,计算出符合条件的值。

5.验证者只需要存储16M缓存就行了,使用缓存得到DAG中指定位置的元素,然后验证这些元素是不是小于某个散列值

6.缓存和DAG每增加3万个区块更新一次。

POS算法:

基于用户的余额来调整用户出块的可能性

基于链的Pos:

算法周期性的选择一个验证者,给与验证者创建新快的权利,创建者保证使用最长的链。

BFT风格的Pos:

依据持有数量,分配给验证者相应的权利,决定哪个块是新快,验证者不会否定自己的钱,所以必然诚实。

pos产生的问题:

多条准主链,无法产生一条正确的链,因为验证者会尝试在所有备选链上添加区块。

解决:Slasher 事后对 在多条链上创建块的行为进行惩罚。

            Casper

30中并发原理:http://www.techug.com/post/consensuspedia-an-encyclopedia-of-29-consensus-algorithms.html

货币

预付款(众筹6000万)个以太币,

没挖出一个区块,奖励矿工5个以太币(静态奖励),叔区块奖励4.375个(7/8),矿工每引用一个奖励0.15个以太币(1/32),至多两次

静态奖励为5个,动态奖励为交易费用,叔区块引用

交易

交易费用Gas:

维:

gas消耗:

默认消耗GasPrice:0.000000001Ether/Gas(1Gwei,/Gas=1G wei Gas)

两个gas limit: 用户愿意付出的最大Gas数量(用户设置),单个区块所包含的最大Gas总量(矿工设置),基于上一个区块波动1/1024

交易格式:

from:

to: 为空则是创建只能合约的交易。执行时,为智能合约的地址

value: 转移的以太币数量

data(input): 如果存在,则表明该交易是一个创建或者调用智能合约交易

Gas limit: 

GasPrice:  gas价格 维

nonce: 区别同一用户不同的交易

hash:整合交易的hash ,作为ID

r s  v: 发送者的私钥对交易的签名。

编码压缩:

RLP(recursive length prefix)

RLP没有定义转换规则,用户可以按照自己的规则转换

编解码 字符串和列表

以太坊使用大端序来对整数型编码(大端序和小端序)

API

JSON-RPC 

接口列表:

域名

域名使用集邮者拍卖(维客里拍卖)

以上是关于区块链共识算法原理的主要内容,如果未能解决你的问题,请参考以下文章

区块链:3共识算法 拜占庭将军问题

区块链:3共识算法 拜占庭将军问题

web3:区块链共识机制系列-POS(Proof of Stake)股权证明算法

web3:区块链共识机制系列-POS(Proof of Stake)股权证明算法

web3:区块链共识机制系列-POS(Proof of Stake)股权证明算法

web3:区块链共识机制系列-POS(Proof of Stake)股权证明算法