当前位置: 首页 > news >正文

区块链共识机制优缺点对比都是什么

想知道更多区块链技术知识,请百度【链客区块链技术问答社区】
链客,有问必答!!

区块链就是运行在P2P网络上的去中心化账本。在公有链区块链项目例如比特币,成千上万的用户在使用这个区块链。
 
  我们怎么去在这样的系统中获得信任呢,并且在私有区块链中也是一样的情况。这就是共识机制的来源。
 
  共识保证了区块链上的参与者可以互相信任,并且对下个区块进行验证。共识也确保了网络中的规则被遵守,同时承认在区块链环境下只有一个真理。
 
  根据你使用的区块链种类不同,你需要不同的共识算法来确保区块链上最后的区块能够在任何时候都反应出全网的状态。在本文中,大白会大致说明不同的共识算法。
 
  工作量证明(POW)
 
  我们先从比特币和以太坊说起。工作量证明算法需要矿工解决复杂的密码数学难题。所以这是个依赖于算力的游戏。简单说,你将区块中的数据都打包并加密,直到你获得有效的哈希值。
 
  优势:寻找有效的哈希值很困难,但是很容易控制哈希是正确的,所以无法欺骗整个系统。系统可以承受大量节点。
 
  缺点:需要消耗非常多的能源,而且不是很环保。如果有人能控制51%的算力,就会有被攻击的风险。
 
  权益证明(POS)
 
  以太坊正在朝着PoS共识机制改变。下个区块的矿工会基于随机参数,例如他们拥有的代币数量,他们拥有这个代币的时间等等来确定。
 
  同时也有其他机制,例如存款证明或者是燃烧证明等等。其实这个很简单,如果节点X有1个代币,节点Y有2个,那么节点Y就会有2倍几率去验证一个区块。
 
  优点:比起工作量证明,更加节约能源。
 
  缺点:更多的安全问题?如果同时在不同的链上工作,也不会有惩罚。这样做,就很难去保证转账的真实性。
 
  消逝时间证明(PoET)
 
  消逝时间证明是超级账本锯齿湖项目中使用的共识。每个参与者都需要有个等待时间,来确保安全的程序集。获得最短等待时间的参与者会被选为挖出区块,经过等待时间,挖出区块。
 
  优势:挖出区块的人会一直变化,同样的人每次都不会选择下个区块。
 
  劣势:安全程序集是复杂的技术,相对工作量证明来说,更容易进行欺诈。也有中心化的趋势,因为我们必须使用第三方信任机构来确保这个程序集是真的安全。
 
  简化的拜占庭容错算法(SBFT)
 
  在这个算法中,区块验证者是一个知名的机构。例如在整个商业网络中可以是一个监管者。这个区块验证者创造并提出新的区块转账。在SBFT共识中,一定数量的节点一定要接受这个区块,当然这取决于错误节点的数量。在这样的系统中,最少要有2f+1的节点必须要接受商业网络中的新区块,f就是错误节点的数量。
 
  举例来说,我们假设现在系统中有30个参与者,其中包含了5个错误节点。作为需要验证的新区块,11(2×5+1)个节点。
 
  这个错误可以是恶意的,也可能是无效的节点。
 
  优点:比工作量证明更快,有更好的扩容性。
 
  缺点:有中心化趋势。一个验证者提出下个区块。
 
  权威证明(PoA)
 
  适合私有链网络,并且不需要分布式信任体系。原理相对简单:网络中的一些人在满足某些条件之后被认证为验证者,例如身份认证。这些验证者负责维持区块链数据。
 
  优点:非常适合私有链,速度非常快。
 
  缺点:牺牲了信任。
 
  结论
 
  我们对区块链世界的共识机制做出了概览,这篇文章只是列举了一部分可能性,当然还有其他可能的共识机制。
 
  总体来说,我们可以将这些共识分为3类:
 
  - 标准的工作量共识
 
  - 基于共识的许可性投票(PoA,SBFT)
 
  - 基于共识的许可性投注(PoET)

相关文章:

  • Python数据可视化的10种技能
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • sql语句实战
  • 小程序微服务单个SSL证书部署多个项目解决方案
  • Async注解的使用,异步进行代码解耦
  • 我们在编写python代码时应该注意那几件事 !
  • Collection和Collections的区别是什么?
  • 根据出生日期计算年龄
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • centos7系统安装完成初始化
  • tkinter内嵌Matplotlib系列(一)之解读官网教材
  • SpringMvc4.0.0+Spring4.0.0+Mybatis3.2.7整合开发
  • js-时间戳转字符串
  • PYTHON2.day02
  • POJ3635 Full Tank
  • 30秒的PHP代码片段(1)数组 - Array
  • Apache Zeppelin在Apache Trafodion上的可视化
  • laravel 用artisan创建自己的模板
  • Laravel5.4 Queues队列学习
  • MD5加密原理解析及OC版原理实现
  • PHP变量
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 电商搜索引擎的架构设计和性能优化
  • 记一次删除Git记录中的大文件的过程
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 译自由幺半群
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​低代码平台的核心价值与优势
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (二)linux使用docker容器运行mysql
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (力扣)1314.矩阵区域和
  • (转)母版页和相对路径
  • (转)四层和七层负载均衡的区别
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .NET 材料检测系统崩溃分析
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .net操作Excel出错解决
  • .project文件
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [20161214]如何确定dbid.txt
  • [BJDCTF2020]The mystery of ip
  • [C#基础]说说lock到底锁谁?
  • [CISCN2021 Quals]upload(PNG-IDAT块嵌入马)
  • [hibernate]基本值类型映射之日期类型
  • [JavaWeb]—Spring入门
  • [JS入门到进阶] 前端开发不能写undefined?这是误区!
  • [LeetCode]—Copy List with Random Pointer 深度复制带“任意指针”的链表
  • [Lucene] Lucene 全文检索引擎简介