系列目录

分布式共识算法 (一) 背景

分布式共识算法 (二) Paxos算法

分布式共识算法 (三) Raft算法

分布式共识算法 (四) BTF算法

一、引子

前面介绍的算法,无论是 Paxos 还是 Raft 都只能解决非拜占庭将军容错的一致性问题(CFT,Crash Fault Tolerance),不能够应对“故意的发送错误信息”问题。
本节我们分析一下,BFT(Byzantine Fault Tolerance)伪造信息的拜占庭错误。常见的有工作量证明(PoW)、权益证明(PoS)、委托权益证明(DPoS),这些算法在区块链得到广泛应用。

二、常见BFT共识算法

2.1 POW算法

工作量证明(POW,Proof-of-Work)是一个用于阻止拒绝服务攻击的协议,它在 1993 年被 Cynthia Dwork 和 Moni Naor 提出,它能够帮助分布式系统达到拜占庭容错。

1. 算法核心

使用穷举法,不停的用哈希算法(比如SHA-256)去运算,直到使得运算出的哈希值前面若干位都是0,即小于某个值。掌握了全网51%的算力,就可以所有结果。

SHA-256:是由256位二进制的数字(0和1)构成,转换后由64位16进制的数表示,比如:6b88c087247aa2f07ee1c5956b8e1a9f4c7f892a70e324f1bb3d161e05ca107b。

这个工作量随着哈希值前面0的位数的增加而呈指数型的增加,但是检验这个哈希值只需要进行一次哈希运算就可以了。

2.特点

完全去中心化,安全性高,每个节点是公平的,被攻击成功的可能性小。需要耗费大量的算力,造成能源浪费,交易吞吐量有限。
3.应用

比特币,莱特币.每秒个位数交易量。

2.2 POS算法

权益证明(POS,Proof-of-Stake)最早在2013年被提出,并在Peercoin系统中实现,类似股东机制,拥有股份越多的人越容易获取记账权。

1.算法核心

通过保证金来对赌一个合法的块成为新的区块,收益为抵押资本的利息和交易服务费。保证金越多,获得记账权概率越大。恶意参与者存在保证金被惩罚的风险。一般情况下,掌握超过全网1/3的资源,才可能左右最终的结果。

2.特点

POS不需要消耗大量的电力就能够保证区块链网络的安全性,也不需要在每个区块中创建新的货币来激励矿工参与当前网络的运行,缩短了达成共识所需要的时间。

3.应用

Ethereum 每秒大概能处理 30 笔交易左右。

2.3 DPOS算法

委托权益证明(DPOS,Delegated Proof-of-Stake)能够让每一个人选出可以代表自己利益的人参与到记账权的争夺中,这样多个小股东就能够通过投票选出自己的代理人,保障自己的利益。整个网络中选举出的多个节点能够在 1s 中之内对 99.9% 的交易进行确认
1.算法核心:
在委托权益证明中,每一个参与者都能够选举任意数量的节点生成下一个区块,得票最多的前 N 个节点会被选择成为区块的创建者组,下一个区块的创建者就会从这样一组当选者中随机选取,除此之外,N 的数量也是由整个网络投票决定的,所以可以尽可能地保证网络的去中心化。
 
应用:使用委托权益证明的 EOS 能够每秒处理几十万笔交易。

========参考==========

https://www.jianshu.com/p/f73cee95821e

https://blog.csdn.net/yangwei256/article/details/83023649

最新文章

  1. 网页语言有html,php.jsp,无论什么语言浏览器总是能正常显示,这个解析工作是浏览器完成的吗?
  2. HTML自学基础
  3. 最冤枉的关键字----sizeof
  4. centos的版本和内核查看
  5. UIImagePickerController 如何显示中文界面
  6. C#发送邮件三种方法(Localhost,SMTP,SSL-SMTP)
  7. Go Code
  8. Angularjs基础(学习整理)
  9. React中路由传参及接收参数的方式
  10. Webpack 4教程 - 第六部分 增强开发时体验
  11. cf C题
  12. 9_grep及正则表达式
  13. 01.File文件基本操作
  14. [剑指Offer]6-从尾到头打印链表
  15. Docker网络简介
  16. MFC中如何显示颜色选择对话框
  17. 正则表达式matcher.group()用法
  18. 腾讯云-搭建 Python 开发环境
  19. HeadFirst Jsp 09 (JSTL)
  20. Unity3d平台信息设置

热门文章

  1. 【CodeChef】December Challenge 2019 Div1 解题报告
  2. 洛谷 P5658 括号树
  3. Educational Codeforces Round 37 (Rated for Div. 2) E. Connected Components? 图论
  4. [Vue专题] 对比vue-cli2.x和vue-cli3.x的搭建
  5. Python变量与内存管理
  6. transaction事务案例--银行转账
  7. C语言程序设计100例之(7):级数求和
  8. hive 标准hql建表语法格式
  9. C#中对文件进行选择对话框打开和保存对话框进行复制
  10. Java性能 -- Lock优化