共识机制作为区块链的关键技术之一,在业务吞吐量、交易速度、不可篡改性、准入门槛等等方面发挥重要的作用。

区块链是去中心化的,没有中心记账节点,所以需要全网对账本达成共识。目前有POW、POS、DPOS、POOL四种共识机制。

首先从“拜占庭将军问题”开始(简书:中本聪与拜占庭将军问题),

用区块链技术中非对称加密可信的分布式网络解决拜占庭将军问题中的共识问题。

非对称加密

可以解决古代难以解决的签名问题:

  • 消息传送的私密性
  • 能够确认身份
  • 签名不可伪造、篡改

作用:保护消息内容, 并且让消息接收方确定发送方的身份

分布式记账场景

入门经典共识机制:

PoW(Proof of Work,工作量证明)

“解决一道数学难题”

“电脑性能越好,挖矿时间越长,获得的回报也越多。”

概念:工作量证明,引入了对一个特定值的计算工作。

POW共识算法应用场景:比特币(BTC)及其引申出来的BCH、BCD等

算法工作描述:

  1. 矿工们在挖一个新的区块时,必须对SHA-256密码散列函数进行运算,区块中的随机散列值以一个或多个0开始。
  2. 随着0数目的上升,找到这个解所需要的工作量将呈指数增长,矿工通过反复尝试找到这个解。

解决问题:

  1. 谁有权记账
  2. 如何避免记账者作弊

优点:

算法简单,采用大家认可的数学逻辑(找寻随机数),容易实现。安全系数最高,破坏整个系统,需要投入巨大成本。

缺点:

  1. 大量消耗能源。
  2. 它的价值回路必须要通过外部输入。也就是说,采用POW的数字货币仍旧不是理想状态的数字货币,因为它们的安全性不直接与使用者相关,而是要通过矿工这个媒介。

POS(Proof of Stake,权益证明)

“拥有的币越多,有记账权的概率就越大?”

因为POW大量消耗能源和安全性不与使用者相关的问题,POS的出现可以解决这些问题:

  1. 采用POS的货币的安全性直接与使用者相关,省去了矿工这个媒介。
  2. POS简单说就是,每当发表一条消息的时候,不用证明你付出了什么代价,而要证明你拥有一定数量的钱。而拥有钱代表着,如果你作弊损害了这个系统的安全性,你的钱会贬值,这变相地让你付出了代价。
  3. 这东西更好的一点是,如果采用POS,实际上连挖矿奖励都不需要,因为POS实际上不需要付出任何代价。

概念:

试图解决POW机制中大量资源被浪费的情况。这种机制通过计算你持有占总币数的百分比,包括你占有币数的时间来决定记账权。

POS应用场景:...

优点:不需要拼算力挖矿,不会浪费电力。缩短了共识达成的时间,效率提高。

缺点:

  1. 拥有权益的参与者因为可以持币吃利息,所以卖币意愿不强烈,容易产生垄断。
  2. 所有的确认都只是概率上的表达,存在其他攻击的可能性。挖矿成本低,硬分叉十分容易。

DPOS(Delegated Proof of Stake,委任权益证明)

PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)

POOL(验证池)

学习资料:

POW、POS共识机制

知乎POW、POS问答

区块链共识机制:POW、POS、DPOS、PBFT、POOL的更多相关文章

  1. (转)区块链共识机制分析——论PoW,PoS,DPos和DAG的优缺点

    近期,随着区块链技术在社区中的声音越来越大,业界已经开始从技术角度对区块链进行全方位的解读.作为第一批区块链技术的实现,传统比特币与以太坊在共识机制.存储机制.智能合约机制.跨链通讯机制等领域并没有非 ...

  2. [转帖][区块链]共识算法(POW,POS,DPOS,PBFT)介绍和心得

    [区块链]共识算法(POW,POS,DPOS,PBFT)介绍和心得 置顶 2017-03-12 18:31:19 乐扣老师lekkoliu 阅读数 127953  收藏 更多 分类专栏: 技术管理 区 ...

  3. [区块链] 共识算法之争(PBFT,Raft,PoW,PoS,DPoS,Ripple)

    近几天对区块链中几种常见的共识机制(PBFT,Raft,PoW,PoS,DPoS,Ripple)进行了总结.尽量使用简单易懂语言,篇幅较大,想了解的可以只读每个算法介绍中前边的原理.本篇文章主要参考& ...

  4. 区块链共识机制(POW、POS、DPOS等)的优缺点

    一.POW:工作量证明机制 基本原理: 第一代共识机制,比特币的基础.理解起来,很简单,就是“按劳取酬”,你付出多少工作量,就会获得多少报酬(比特币等加密货币).在网络世界里,这里的劳动就是你为网络提 ...

  5. 区块链共识机制之工作量证明(POW)

    像比特币.以太坊.NXT.Bitshares等这些区块链系统,其本质上是一种加密经济组织,它建立在点对点网络上,是去中心化.无管辖的,由密码学.经济学和社会共识来共同维护.这些加密网络因各种原因有着多 ...

  6. 任何国家都无法限制数字货币。为什么呢? 要想明白这个问题需要具备一点区块链的基础知识: 区块链使用的大致技术包括以下几种: a.点对点网络设计 b.加密技术应用  c.分布式算法的实现 d.数据存储技术 e.拜占庭算法 f.权益证明POW,POS,DPOS 原因一: 点对点网络设计 其中点对点的P2P网络是bittorent ,由于是点对点的网络,没有中心化,因此在全球分布式的网

    任何国家都无法限制数字货币.为什么呢? 要想明白这个问题需要具备一点区块链的基础知识: 区块链使用的大致技术包括以下几种: a.点对点网络设计 b.加密技术应用  c.分布式算法的实现 d.数据存储技 ...

  7. 老K漫谈区块链的共识(3)——分布式系统和区块链共识

    1. 啥是分布式系统 当我们评价一个新的事物或者介绍一个新的技术的时候,我们不能架空历史和环境,新的事物不可能脱离历史和环境凭空诞生.任何新的事物和新的技术总是或多或少的,与旧的事件以及过去的技术有所 ...

  8. 区块链共识算法 PBFT(拜占庭容错)、PAXOS、RAFT简述

    共识算法 区块链中最重要的便是共识算法,比特币使用的是POS(Proof of Work,工作量证明),以太币使用的是POS(Proof of Stake,股权证明)使得算理便的不怎么重要了,而今PO ...

  9. 区块链共识算法|RAFT和PBFT的区别

    这里有个很形象的比喻: 一个团队一定会有一个老大和普通成员.对于 raft 算法,共识过程就是:只要老大还没挂,老大说什么,我们(团队普通成员)就做什么,坚决执行.那什么时候重新老大呢?只有当老大挂了 ...

随机推荐

  1. nginx跨域

    在 conf文件server块里面加上: add_header 'Access-Control-Allow-Origin' "$http_origin"; add_header ' ...

  2. Socket网络编程--聊天程序(7)

    接上一小节,本来是计划这一节用来讲数据库的增删改查,但是在实现的过程中,出现了一点小问题,也不是技术的问题,就是在字符界面上比较不好操作.比如要注册一个帐号,就需要弄个字符界面提示,然后输入数字表示选 ...

  3. flink source code

    https://github.com/apache/flink/tree/master/docs https://github.com/flink-china/1.6.0 https://github ...

  4. Forward+ Shading架构

    Forward+ = Tile based Light Culling + Tile based Forward Rendering 整体渲染架构分为如下3大步骤: 1.PrePass将场景的min ...

  5. Android查询不到电话号码解决方法

    貌似联系人有三个数据库,且不同步,另外也有可能是版本问题. 解决方案:https://github.com/codinguser/android_contact_picker 接下来会对其进行一些改造 ...

  6. linux每日命令(3):ln命令

    ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在 ...

  7. linux每日命令(4):pwd命令

    Linux中用 pwd 命令来查看"当前工作目录"的完整路径. 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录. 在不太确定当前位置时,就会使用pwd来判定当前目录在文 ...

  8. opencv 基本使用

    1.下载opencv库 https://opencv.org/ 下载后文件: 双击提取文件到指定路径: * 下载winpack版本可以省去自己编译的步骤,下载后无需安装双击可以直接提取文件到指定目录: ...

  9. Linux(C/C++)下的文件操作open、fopen与freopen

    open是linux下的底层系统调用函数, fopen与freopen c/c++下的标准I/O库函数,带输入/输出缓冲. linxu下的fopen是open的封装函数,fopen最终还是要调用底层的 ...

  10. MTK 自定义按键添加广播

    一.给自定义按键添加广播 修改PhoneWindowManager.java中的interceptKeyBeforeDispatching方法 /frameworks/base/policy/src/ ...