文章目录

  • 05 共识问题:区块链如何确认记账权?
    • 区块链的共识
    • 拜占庭将军问题
    • POW 工作量证明
      • 挖矿的由来
      • 比特币的 POW 实现
      • 区块链分叉和 51% 攻击
      • POW 机制优缺点
    • 其他共识方法
      • POS 权益证明
      • DPOS 委托权益证明

05 共识问题:区块链如何确认记账权?

区块链可以说是最近几年最热的技术领域之一,区块链起源于中本聪的比特币,作为比特币的底层技术,本质上是一个去中心化的数据库,其特点是去中心化公开透明,作为分布式账本技术,每个节点都可以参与数据库的记录。

区块链是一个注重安全和可信度胜过效率的一项技术,如果说互联网技术解决的是通讯问题,区块链技术解决的则是信任问题。

今天我们关注区块链中的核心问题:作为分布式账本,每个参与者都维护了一份数据,那么如何确认记账权,最终的账本以谁为准呢?

区块链的共识

区块链是一种去中心化的分布式账本系统,区块链的共识问题实际上是来源于分布式系统的一致性问题。

共识(Consensus)故名思义,共同的认识,共识问题研究的是多个成员如何达成一致,典型的比如投票选举。

共识机制在区块链中扮演着核心的地位,共识机制决定了谁有记账的权利,以及记账权利的选择过程和理由。不同的虚拟货币采用共识机制也不同,常见的共识机制有 POW、POS、DPOS等。

我们前面提到 CAP 中的 C 是 Consistency(一致性),Consistency 和 Consensus 有什么区别呢?

Consistency 侧重的是内容在时间顺序上的一致和统一,而 Consensus 则是指由许多参与者对某项内容达成共识,所以一般把 Consistency 翻译为“一致性”,把 Consensus 翻译为“共识”。

拜占庭将军问题

前面的课程中我们已经分享了几个经典的一致性算法,如果把共识机制延伸到分布式系统中,就是系统需要有一个主进程来协调,系统的所有决定都由主进程来达成一致性。

到了区块链中,由于区块链是一种去中心化的分布式系统,所以区块链中是没有类似于团队里的领导,以及分布式系统中的 master 角色,这样就需要有某种共识机制,以便保证系统一致性。

一般在网络通信中,把节点故障,也就是信道不可靠的情况称为“非拜占庭错误”,恶意响应,也就是系统被攻击,传递错误消息称为“拜占庭错误”。

为什么叫拜占庭错误呢?实际上是来自于一个故事模型:

拜占庭帝国就是中世纪的土耳其帝国,拥有巨大的财富,周围 10 个邻邦垂诞已久,但拜占庭高墙耸立,固若金汤,没有一个单独的邻邦能够成功入侵。任何单个邻邦入侵都会失败,同时也有可能自身被其他 9 个邻邦入侵。
拜占庭帝国防御能力如此之强,至少要有十个邻邦中的一半以上同时进攻,才有可能攻破。然而,如果其中的一个或者几个邻邦本身答应好一起进攻,但实际过程出现背叛,那么入侵者可能都会被歼灭。
于是每一方都小心行事,不敢轻易相信邻国,这就是拜占庭将军问题。


在拜占庭问题里,各邻国最重要的事情是:所有将军如何能过达成共识去攻打拜占庭帝国。拜占庭将军问题核心描述是军中可能有叛徒,却要保证进攻一致,由此引申到计算机领域,发展成了一种容错理论:

一群将军想要实现某一个目标,比如一致进攻或者一致撤退,单独行动是行不通的,必须合作,达成共识;由于叛徒的存在,将军们不知道应该如何达到一致。

其实,拜占庭将军问题(Byzantine Generals Problem)和我们前面提到的 Paxos 算法、逻辑时钟等,都是由 Leslie Lamport 提出的。

Lamport 可以说是分布式系统的奠基人之一,由于在分布式领域的一系列贡献,Lamport 获得了 2013 年的图灵奖。

在记账权的归属中,关键的是如何避免恶意共识的出现,也就是错误的记账,类似如何处理拜占庭将军中的叛徒。

比特币是区块链技术最广泛的应用,在比特币中如何决定记账权呢?答案就是 POW 机制,接下来我们分析 POW 工作量证明机制。

POW 工作量证明

PoW(Proof of Work,工作量证明)被认为是经过验证最安全的拜占庭解决机制,最早是用来防垃圾邮件的,典型的就是 Google 邮箱的反垃圾邮件系统。

PoW,就是大家熟悉的挖矿,通过数学运算,计算出一个满足规则的随机数,即获得本次记账权,发出本轮需要记录的数据,全网其它节点验证后一起存储。

一句话介绍:干的越多,获得越多。

Google 邮箱强制要求每一个给 Google 服务器发送邮件的发送者,必须先完成一定量的计算工作,造成一小段时间的延迟,比如延迟 1 秒,如果是正常的邮件发送,这个时间是可以接受;如果是广告邮件发送者,因为要进行大量的发送工作,这种无价值的计算是无法忍受的。

挖矿的由来

挖矿是比特币系统中一个形象化的表达,那么挖矿是怎么来的呢?

比特币挖矿是将一段时间内比特币系统中发生的交易进行确认,并记录在区块链上形成新区块的过程,由于需要竞争记账权,利用计算机去计算 Hash 数值,随机碰撞解题,这个过程就是挖矿。

换句话说,就是比特币系统出一道数学题,大家抢答最优解,挖矿就是记账的过程,矿工是记账员,区块链就是账本。

比特币的 POW 实现

比特币中的 POW 实现,是通过计算来猜测一个数值(Nonce),得以解决规定的 Hash 问题,下面是比特币的区块结构,可以看到区块头有个随机数字段,这个就是 Nonce 值:

中本聪在比特币系统中设置了一道题目,通过不断调节 Nonce 的值,来对区块头算 Hash,要求找到一个 Nonce 值,使得算出来的 Hash 值满足某个固定值。

具体的 Hash 方法一般是使用 SHA256 算法 ,你可以查看这个小工具来测试 https://tool.oschina.net/encrypt?type=2。

我们来简化一下计算过程,假设第 100 个区块给出的区块值是下列字符串,最早计算出该字符串的节点可以获得比特币:

f7684590e9c732fb3cf4bf0b8e0f5ea9511e8bbaacb589892634ae7938e5700c

由于 Hash 算法是一个不可以逆的算法,没法通过具体的 Hash 值倒推出原文,这样每个节点只能采用穷举的方法,也就是选择各种字符串,比如开始的 a、b、c、1、2、3、…,不断的尝试。

比特币系统自身会调节难度,控制解题的时间,一般来讲,约每 10 分钟挖出一个区块,在这 10 分钟内,计算机只能不停地去计算,去试各种字符串。

这个过程实际上是考验各个节点的服务器性能,也就是算力。如果你算力非常强大,有几万台服务器,可以很快得到 Nonce 值,也就是正确答案:lagou,对应 Hash 值和题目要求一致。

接下来你就可以把这个 Nonce 值放在结构体里,通过 P2P 网络广播出去,其他的系统节点收到后,发现这个 Nonce 值是合法的,能满足要求,会认为你挖矿成功。

由于解出了题目,你会获得系统对应的比特币奖励,以及本区块内所有交易产生的手续费。其他节点发现有人已经算出来了,就会放弃本次计算,然后开启下一个区块的题目,去寻找下一个区块头的 Nonce 值。

作为落地的最大区块链系统,比特币的区块信息一直在动态生成。下面这张截图记录了比特币最近的区块信息,区块信息来自 https://www.blockchain.com/,你也可以点击链接查看最新的区块高度。

区块链分叉和 51% 攻击

Hash 问题具有不可逆的特点,主要依靠暴力计算,谁的算力多,谁最先解决问题的概率就越大。当掌握超过全网一半算力时,就能控制网络中链的走向,这也是所谓 51% 攻击的由来。

前面我们说过,因为区块链中每个节点都可以参与记账,系统中可能出现链的分叉(Fork),最终会有一条链成为最长的链。

但是在现实社会中,牵扯到参与各方巨大的利益关系,算力之间的博弈往往并没有那么简单,以比特币为例,已经分裂出了 BCH(比特币现金)、BTG(比特币黄金)等分叉币。

POW 机制优缺点

POW 的优点有很多,POW 是第一个完全实现去中心化共识算法的,并且节点自由进出,容易实现,由于对算力的高要求,破坏系统花费的成本也巨大。

POW 机制的缺点也是显而易见的,最大的就是浪费能源,巨大的算力被浪费在了无尽的挖矿行为中,并且本身并不产生任何价值。

这也是区块链被很多人指责的一点,浪费了大量的能源,收获的仅仅是一堆无价值的数据存储,换个角度来思考,这也说明了在去中心化的场景下,实现信任是多么的困难。

另一方面也可以看到,大量的数字货币矿场都是建设在西南地区的深山中,利用当地价格低廉的电力资源,或者就直接和发电站建设在一起。

其他共识方法

除了 POW 机制,还有其他的共识方法,典型的就是 POS 和 DPOS 等。

POS 权益证明

POS(Proof of Stake,权益证明)类似现实生活中的股东大会机制,拥有股份越多的人拥有越多的投票权,也就越容易获取记账权。
POS 是通过保证金来对赌一个合法的块成为新的区块,收益为抵押资本的利息和交易服务费。提供证明的保证金越多,则获得记账权的概率就越大,合法记账者可以获得收益。著名的数字货币 ETH(以太坊),就在共识算法中采用了 POS 机制。

DPOS 委托权益证明

采用 DPOS(Delegated Proof of Stake,委托权益证明)机制的典型代表是 EOS,如果说 POS 类似股东大会,比较的是谁持有的股份多,那么 DPOS 类似于公司董事会制度,在 DPOS 共识制度下,会选出一定数量的代表,来负责生产区块。

05 共识问题:区块链如何确认记账权?相关推荐

  1. 分布式技术原理与实战45讲--05 第05讲:共识问题:区块链如何确认记账权?

    本课时我们主要讲解"共识问题:区块链如何确认记账权?" 区块链可以说是最近几年最热的技术领域之一,区块链起源于中本聪的比特币,作为比特币的底层技术,本质上是一个去中心化的数据库,其 ...

  2. 区块链如何确认记账权?

    文章目录 区块链的共识 拜占庭将军问题 挖矿的由来 比特币的 POW 实现 区块链分叉和 51% 攻击 POW 机制优缺点 总结 区块链可以说是最近几年最热的技术领域之一,区块链起源于中本聪的比特币, ...

  3. 区块链中的记账权问题

    "找到这个随机常数,使得函数值Bn小于某个数",应该怎么理解? -------- 个人技术公众号:解决方案工程师 欢迎同领域的朋友关注.相互交流. -------- 昨天听了中国标 ...

  4. 工信部:筹建全国首个区块链和分布式记账标准化技术委员会

    作者:李秀琴 在3.15即将来临之时,我国工信部给区块链行业又带来了一大利好消息. 3月12日,工业和信息化部(以下简称工信部)在官网发布公告称,其正在就筹建全国区块链和分布式记账技术标准化技术委员会 ...

  5. 视频教程-区块链基础:共识算法-区块链

    区块链基础:共识算法 多年互联网从业经验: 有丰富的的企业网站.手游.APP开发经验: 曾担任上海益盟软件技术股份有限公司项目经理及产品经理: 参与项目有益盟私募工厂.睿妙影音家庭物联网设备.手游东方 ...

  6. 视频教程-区块链算法—共识算法-区块链

    区块链算法-共识算法 工科硕士,持有高校计算机教师资格证书,从事计算机科学少儿分级体系课程的教研与教学工作,先后开设计算思维.Scratch.Python等少儿编程课等. Gardener ¥498. ...

  7. 直播预告 | 共识、区块链和全球一体化经济

    大家好,又到了一周一期的[区块链技术公开课100讲]系列线上直播课啦. 作为国内最优质的区块链技术社区,一块链习已经先后邀请到Celer Network 创始人董沫.开源山寨币矿池 Gpool Cof ...

  8. XAG拥抱区块链和分布式记账技术标准化时代

    4月13日,工信部发布<全国区块链和分布式记账技术标准化技术委员会组建公示>. <公示>显示,首届技术委员会共有71名委员,其中主任委员1名,副主任委员5名,委员兼秘书长1名, ...

  9. 共识机制-区块链核心技术之一

    id:BSN_2021 公众号:BSN研习社 区块链是一种多项计算机技术的集成融合创新.在这众多来源中,最重要的一个是共识机制技术. 共识机制就是所有记账节点之间怎么达成共识,去认定一个记录的有效性, ...

最新文章

  1. Web用户控件的一个毛病
  2. zatree插件优化:优化左侧边栏
  3. 机房收费系统重构(三)—工厂+反射+DAL
  4. c#知识点——数据库
  5. Hadoop YARN安装部署初探
  6. 对肺结节几何矩的特征提取
  7. 网络编程之---广播和IP多播
  8. AMD宣布350亿美元收购赛灵思,CPU、GPU、FPGA全凑齐
  9. android png转灰度,Android提高之使用NDK把彩图转换灰度图的方法
  10. 天津大学计算机考试题库,天津大学在线考试题库及答案[开放英语专]
  11. python PIL生成字母验证图片
  12. 苹果手机能写代码html,这些隐藏在苹果iPhone当中的内置代码你是否知道?
  13. 黑鲨重装计算机安装无法继续,图解黑鲨装机大师装机失败无法开机怎么办?
  14. 进入网站后台,提示HTTP错误404.0-NOtFound
  15. ZUCC_Linux系统管理_实验六 磁盘管理
  16. 物联网充电桩(电动自行车)管理方案
  17. 电子计算机与多媒体课件背景,演示型多媒体课件应用与设计原则
  18. DDD兴起的原因,以及与微服务的关系
  19. 华氏温度与摄氏温度对照表(笔记)
  20. 运维之道 | Zabbix监控mysql主从同步状态并设置触发微信告警

热门文章

  1. ios手机怎么连接adb命令_Mac ADB 命令连接 android手机并进行各种操作
  2. 一脸懵逼学习Hadoop-HA机制(以及HA机制的配置文件,测试)
  3. 陷波滤波器——周期性降噪
  4. android 单元布局,在Android布局中挖洞
  5. 基于matlab的mimo仿真,基于MATLAB的MIMO系统仿真与分析|Matlab代做
  6. 技法(但请少用):为非活动窗口绘制活动的标题栏
  7. 《Python基础教程(第3版)》笔记:第8章异常
  8. 【风马一族_xml】xml语法
  9. nginx HLS m3u8播放视频跨域问题
  10. centos yum清华镜像