区块链共识算法原理
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
接口列表:
域名
域名使用集邮者拍卖(维客里拍卖)
以上是关于区块链共识算法原理的主要内容,如果未能解决你的问题,请参考以下文章
web3:区块链共识机制系列-POS(Proof of Stake)股权证明算法
web3:区块链共识机制系列-POS(Proof of Stake)股权证明算法