8.1 主流共识介绍

背景

共识算法是区块链项目中最核心的部分,有分布式,就需要达成共识。共识算法对于加密货币而言至关重要的,因为它可以防止双花问题。

从历史上看,双花问题是限制数字货币发展的一个重要挑战,直到采用了分布式账本之后才得以改观。正因为加密货币是由公开的和不可篡改的分布式账本实现的,因此必须采用共识算法来验证账本是否具有唯一性,以保证整个加密货币网络不被恶意节点所破坏。因此,共识算法必须具备容错的能力。例如,通常假设只需要一部分节点作出反应,但最少需要百分五十一的节点反应。

主流共识介绍

在当前的多个项目中,有四种主要的实现方式:工作量证明(pow),权益证明(pos),委托权益证明(dpos)和EOS中使用的BFT-DPOS共识,每个都有其独特的优点和缺点。

工作量证明(pow)

工作量证明是第一个成功的去中心化区块链共识算法,工作量证明被比特币和其他的一些加密货币使用,工作量证明要求节点参与者执行复杂的计算,计算出符合要求的结果,而对于其他网络参与者来说要易于验证。

Pow的过程,即为不断调整Nonce值,对区块头做双重SHA256哈希运算,使得结果满足给定数量前导0的哈希值的过程。其中前导0的个数,取决于挖矿难度,前导0的个数越多,挖矿难度越大。

 

pow挖矿过程:

  1. 生成一笔交易,并与其它所有准备打包进区块的交易组成交易列表,生成Merkle根哈希值。

  2. 将Merkle根哈希值,与其它字段组成区块头,80字节长度的区块头作为Pow算法的输入。

  3. 不断变更区块头中的随机数Nonce,对变更后的区块头做双重SHA256哈希运算,与当前难度的目标值做比对,如果小于目标难度,即Pow完成。

Pow完成的区块向全网广播,其他节点将验证其是否符合规则,如果验证有效,其他节点将接收此区块,并附加在已有区块链之后,之后将进入下一轮挖矿。

POW的优点:

完全去中心化和分布式账本。

POW的缺点:

计算复杂,浪费资源,交易吞吐量较低。

权益证明(pos)

权益证明也是需要节点进行计算,最后计算的结果小于难度值,则抢到区块的概率越高。要求所有的参与者抵押一部分他们所拥有的token来验证交易。不同于通过完成复杂计算问题来验证交易,验证者需要通过锁定token来完成交易验证。选取交易验证者的方式通常是根据他们所抵押的token占整个网络代币的比例,以及token抵押时长,因为抵押的token越多,持有的时间越长,计算的难度就越小。权益证明通过长期绑定验证者的利益和整个网络的利益来阻止不良行为。通过锁定代币,如果验证者存在欺诈性交易,那么他们所抵押的token也会被削减。

PoS一个重要的概念是币龄,币龄 = 持有的币数 * 持有币的天数,例如钱包里有90个点点币,都持有了10天,则币龄=900。与PoW一样,为了抢到将区块写入区块链的权利,节点同样要进行hash计算,只不过最终的解和币龄有关,计算公式: proofHash < coinAge * target; coinAge是币龄,target是一个目标值,用于调整难度。coinAge * target的值越大,难度就越小,抢到区块的概率就越高。

 

pos挖矿过程:

  1. 团队运行节点;

  2. 注册成为验证人;

  3. Staking过程(持币人委托给节点,或是团队自由代币进行Staking委托);

  4. 选举验证人(系统通过算法选出每一轮的出块节点或是验证节点);

  5. 打包交易、广播交易、验证人确认一连串过程;

  6. 获得奖励(奖励是由节点与持币人按照Staking比例分配);

PoS的优点:

(1) 不需要PoW那么大的算力,可以减少资源浪费;

(2) 不容易遭受51%攻击,相比起掌握系统一半以上的算力,拥有整个系统51%的财力会更加困难。

PoS缺点:

(1) 容易被垄断:因为持币越多,持有的越久,币龄就越高,越容易挖到区块并得到激励,持币少的人基本上没有机会,这样整个系统的安全性实际上会被持币数量较大的一部分人(大股东们)掌握;而比特币则不存在这个问题,因为理论上任何人都可以购买矿机获得提高自己的算力(甚至可以联合起来),提升自己挖矿成功的概率;

(2) 很难应对分叉的情况:当出现分叉时,PoS可以在两条链上同时挖矿并获得收益。而PoW则不存在这个问题,因为当出现分叉以后,PoW总是选择工作量大的链做为主链。

委托权益证明(dpos)

虽然委托权益证明和权益证明名字差不多,但实施细节却有显著的不同。在委托权益证明中,不同于权益证明的抵押token来验证交易,而是通过token的持有者投票产生一组交易验证者(超级节点)。 委托权益证明是去中心化的,因为网络中的所有参与者都能参与投票选取节点来验证交易,但也是中心化的,因为只有一组交易验证者,这样的好处就是提高交易和验证的速度。由于区块生产者数量有限,DPoS能够处理的事务吞吐量比PoW高出多个数量级。委托权益证明的实施中需要维持良好的信誉,通过持续投票流程以及验证节点的更换,来得以保证选取产生的验证者有良好的责任心和信任感。

委托权益证明的优势在于良好的可扩展性以及快速的交易验证,但是缺点在于部分中心化。委托权益证明目前被用于Steemit,EOS和BitShares等项目中。

DPoS,以限制网络上验证者的数量为代价,提供高级别的可扩展性。其中固定数量的选定实体(称之为区块生产者或见证人)被挑选来以循环顺序创建区块。区块生产者由网络用户投票决定,他们每个人都得到与他们在网络上拥有的代币数量(他们的股份)成正比的选票。或者,选民可以选择将他们的股权委托给另一名选民,被委托的选民将代表他们投票选举区块生产者。DPOS与POW最大的区别是不用计算,生产者由投票决定,并已确定好生产顺序来依次生产区块。

DPoS的优点:

提高了交易和验证的速度,处理事务吞吐量比今天的PoW高出多个数量级。

DPoS的缺点:

1.投票的积极性并不高:绝大多数持股人从未参与投票。这是因为投票需要时间、精力以及技能,而这恰恰是大多数投资者所缺乏的。

2.垄断性高:PoW下几乎没有门槛,任何人都可以投入算力,通过竞争获得区块奖励。而DPoS延续了PoS的弊端,只有持币者才可以获得区块链奖励,其实这就带来了一种制度性门槛,最终导致DPoS币的流动性大大减少,穷者越穷,富者越富。

BFT-DPOS共识机制

拜占庭容错机制(BFT)

BFT( Byzantine Fault Tolerance)称为拜占庭容错,拜占庭容错技术是一类分布式计算领域的容错技术。 拜占庭将军的问题,当 n > 3m 时,即叛徒的个数 m 小于将军总数的 n 的 1/3 时,通过口头同步通信(假设通信是可靠的),可以构造同时满足“一致性”和“正确性”的解决方法,即将军们可以达成一致的命令。 N个区块生产者由区块生产者候选人被选举出来,当一个区块被(2/3 + 1)个区块生产者确认时,它会得到最终确定(即不可逆转)。 选民如果发现区块生产者是恶意的(即试图审查事务或双重支出),则可以通过在下一轮投票时不给他投票“炒掉”他。

 

EOS的共识机制采用(BFT-DPOS)共识机制,EOS通过投票的方式选举出21个超级节点作为记账节点,21个区块生产者通过token持有者的投票被选出,选中的生产者依据商定好的顺序生产区块,这个顺序由21个生产者商定,每生产10轮,21个节点会从新投票被选出。如果轮到某节点出块而没有出块,则该节点可能被投票出局,由其他备选节点顶替,每个节点有6秒的时间片,轮流出块,每0.5秒出一个块,每个生产者节点每次出12个块(6/0.5)。

DPoS共识加上BFT算法后,生产节点出块时,会确认收到的块,同时向剩下20个节点进行广播,如果有超过(2/3+1)的节点验证通过,则将该区块加入备选不可逆块列表中(单节点验证成功),当全网有超过(2/3+1)的节点把该区块验证通过后,最后的不可逆块是从排好序的备选不可逆块列表中取1/3处获取,因为可能存在网络问题,会导致最后的不可逆块冲突(后面章节详细介绍),为了解决冲突,需要对备选不可逆块再做(2/3+1)次确认。

优点:

BFT-DPOS可以使得EOS的出块和确认块速度显著增加,并且可以解决网络延迟造成的块丢失问题。

缺点:

1.投票参与度较低,要成为生产节点,配置要求较高,普通人很难参与,导致投票积极性不高。

2.token垄断性高,普通人很难成为生产者,获取奖励。

总结

各种共识的优缺点:

共识方式优点缺点
pow完全去中心化,破坏系统需要极大成本挖矿算法复杂,消耗资源较大,交易吞吐量较低
pos完全去中心化,挖矿算法较简单,不用浪费太多资源很难应对分叉的情况,投票参与度较低,token垄断性高
dpos出块,交易和验证的速度较快投票参与度较低,token垄断性高,部分中心化,可能出现不可逆块冲突
bft-dpos出块和确认块,交易速度快投票参与度较低,token垄断性高,部分中心化

链接

http://www.3heu.com/

https://www.jianshu.com/p/4de66ee2b2c6

https://blog.51cto.com/14267585/2391383

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博私信或留言,博看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博删除。 6、可私信博看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博私信或留言,博看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博删除。 6、可私信博看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博私信或留言,博看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博删除。 6、可私信博看论文后选择购买源代码。
应用背景为变电站电力巡检,基于YOLO v4算法模型对常见电力巡检目标进行检测,并充分利用Ascend310提供的DVPP等硬件支持能力来完成流媒体的传输、处理等任务,并对系统性能做出一定的优化。.zip深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值