区块链的核心:共识机制

2023-10-26

我在上一篇“区块链到底是怎么运行的”一文中,提到了“打包交易”和“广播交易”这两个概念,其实,以上谈到的两个内容正是区块链最核心的技术内容之一:共识机制。

在今天的文章中,我们就展开聊一聊区块链共识机制到底是什么,以及区块链的共识过程到底是怎样的。

分布式系统的经典问题: 拜占庭将军问题

拜占庭将军问题其实是虚构出来的一个故事,是为了方便通俗地介绍分布式系统所面临的难题。在常规的分布式系统中,都有一个默认的假设,那就是分布式网络中的所有节点都是可信的,也就是说这些节点都是自己人,不会发虚假信息。而拜占庭将军问题之所以复杂主要就是因为每个节点都有可能是不可信的,他可能已经做了叛徒,或者被敌人挟持从而会谎报军情。拜占庭将军的问题就是要解决如何在允许有少部分人不可信的情况下,去达到最终的分布式一致性,即如何在不受这些不可信节点的影响下来达成共识。

区块链本质上也是分布式系统的一种,其共识机制也是为了上述问题而提出的解决方案。

什么是区块链共识机制?

共识机制是区块链是核心的组成要素之一,它决定了区块链的业务吞吐量、交易速度、不可篡改性、准入门槛等等,是最为关键的技术要素之一。要理解区块链共识机制,首先就需要理解区块链共识机制到底解决了什么问题。共识机制主要解决了两个问题:1. 谁有权利;2. 如何防止作弊。上一次我们构造了一个中心化记账的场景,在这个场景下,记账问题其实可以简化为大家信任中心记账者即可。然而在分布式记账的场景下,问题更为复杂。首先,大家面临的最大问题是谁有权利记账,其次是如何避免记账者作弊。毕竟,谁都有权利记账,也就意味着谁都有可能作弊。以上两部分共同构成了区块链共识机制。

最经典的入门型共识机制:PoW 工作量证明PoW (Proof of Work)

工作量证明可以解决上述的两个问题,在上一篇文章中,其实我们已经悄悄讲解了一点 PoW 共识机制,你还记得上文提到的“24 点”那个游戏吗?“24 点”其实是尽可能随机地选取系统中任意的节点来规避作弊者,这个方案的实践其实就是 PoW 共识机制。

产生记账者的随机性其实来自于谁最先计算出 24 点的答案,这个问题可以简化成谁拥有的计算资源更多,谁就拥有整个系统的最大概率的记账权。一旦这个概率超过一半以上,那么这个系统就有一定的中心化风险。

如何理解上面一段话呢?举个例子,李四家发明了一种算盘,可以快速计算 24 点答案,比起其他人掰手指头,李四家总是有很大的概率拿下记账权,换句话说,也就是李四和全村其他所有人竞争,相当于算盘对全村其他人手指头的竞争。如果算盘足够强大,就能有一半的概率获得记账权,那么李四个人的诚实性,就成为了系统的唯一破绽。

比如李四在第一次记账时篡改部分交易,第二次还是他记账,还继续篡改交易,那么两次修改如果逻辑自洽的话,是可以形成假账的,这就是所谓的中心化风险。所以在 PoW 这种机制中,计算资源(又称算力)是决定记账权的唯一因素。与之对应的,便是计算难度。计算难度又称作挖矿难度,计算难度是区块链为了控制产生答案的速度,比如平均 10 分钟就有一个答案产生,平均 2 分钟一个答案产生。在上述场景中,因为李四有了算盘,强大的计算资源突然加入以后,肯定会让整个系统的产生答案的速度变快很多,作为系统本身会自适应,将难度提升,降低答案产生的速度。

上面介绍了这么多,其实是想引出另外一个问题,PoW 到底是如何避免作弊者的呢?答案就是计算资源(算力)。设想,如果一个作弊者想篡改交易,首先得获得记账权。而影响记账权的唯一因素只有计算资源(算力)的大小,如果想篡改交易,只能投入大量的计算资源与整个系统中其他所有人进行对抗,这是十分困难的,尤其在整个系统有一定基础计算资源(算力)的情况下。

假设作弊者的计算资源(算力)占整个系统的 30%,那么连续两次获得记账权的概率是 9%,看起来作弊的可能性还是挺高的,如果是连续 6 次获得记账权呢?概率直降到万分之七。

在比特币中,一笔交易想要被最终确认生效,必须等这个交易所在的区块之后的连续 6个区块都被确认了才能生效,只有这样它被篡改的可能性将越来越小,最后变得几乎不可能被篡改。这也是区块链不可被篡改说法的由来。试想,如果任何作弊者花了大量的成本获取了系统 30% 的计算资源(算力),最后只有万分之七的概率获得篡改的可能性,比起作弊,还不如诚实记账的收益高。

总结一下,今天带你了解了区块链的共识机制,也顺便浅谈了拜占庭将军问题,介绍了区块链的入门共识机制 PoW,它其实也是目前区块链领域使用最广泛,应用最成熟的共识机制。当然今天的内容主要还是概念表述,具体技术实现细节后面再给大家分析。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

区块链的核心:共识机制 的相关文章

  • Kafka指南

    Kafka入门 API Spring集成 入门 下载代码 https kafka apache org downloads kafka 2 13 2 6 0 tgz 启动服务器 创建一个单节点ZooKeeper实例 bin zookeepe

随机推荐

  • JAVA练习

    任务 任务要求 1 定义一个整型数组 并赋初值 61 23 4 74 13 148 20 2 定义变量分别保存最大值 最小值 累加值和平均值 并假设数组中的第一个元素既为最大值又为最小值 3 使用 for 循环遍历数组中的元素 分别与假定的
  • bat打包成exe

    在之前的文章中向大家介绍了如何通过exe 4j将jar打包成exe文件 这篇文章为大家介绍一下如何将 bat文件打包成exe文件 首先为大家介绍一下 下面我们使用的打包工具 下载地址 BAT to EXE Converter 积分多的小伙伴
  • Linux 抓包工具 tcpdump

    查看当前版本 tcpdump help 抓取指定端口包 tcpdump i eth0 c 10 udp or tcp port 1111 XX vvv 命令说明 c 10 抓10个包 udp or tcp 协议方式 可使用 tcp 或 ud
  • 自动化运维工具-Ansible(3)-模块介绍

    目录 Ansible命令格式 Ansible常用模块 Ansible模块如何搜索 Ansible模块保存位置 一 Ansible命令格式 Ansible 比喻为工人 Servers 目标机器 单个机器或者机器组 Module names 根
  • GoT:用大语言模型解决复杂的问题

    GoT 用大语言模型解决复杂的问题 摘要 介绍 背景和符号表示 语言模型和上下文学习 Input Output IO Chain of thought CoT Multiple CoT Tree of thoughts ToT GoT框架
  • 西门子S7-200 SMART 入门级项目案例详解

    这里写自定义目录标题 一 起保停控制 二 单按钮控制 三 正反转控制 四 混合控制 五 顺序控制 一 起保停控制 二 单按钮控制 三 正反转控制 四 混合控制 五 顺序控制
  • AIGC:从入门到精通

    AI生成内容 AIGC 人工智能生成内容 是一种新型的内容创作方式 它继承了专业生产内容 PGC Professional generated Content 和用户生成内容 UGC User generated Content 的优点 并
  • SVN+Gitee配置版本控制库

    软件 TortoiseSVN Downloads TortoiseSVN Gitee https gitee com 操作步骤 在Gitee中新建仓库 设置仓库名以及模板 Readme文件 启用SVN访问 在仓库的管理页面 选择 功能设置
  • 分库分表入门

    垂直分表 垂直分表就是在同一数据库内将一张表按照指定字段分成若干表 每张表仅存储其中一部分字段 垂直分表拆解了原有的表结构 拆分的表之间一般是一对一的关系 优势 充分提高了热点数据的操作效率 商品信息的操作的高效率不会被商品描述的低效率所拖
  • 【第04例】IPD进阶

    目录 前言 专栏目录 内容详解 IPD 相关专栏推荐 华为流程体系 CSDN学院相关内容
  • pytorch使用masked掩盖某些值(筛选值)

    mask主要用来根据一定条件 筛选出一部分值来 基本案例 import torch x torch randn 3 4 mask 1 x ge 0 5 大于0 5的为True 小于0 5的值为False mask 2 torch BoolT
  • Deeplabcut教程(二)使用

    因为很久没用这个了所以就一直没更使用教程 写的安装教程收到好几条私信要使用教程 这几天在帮一个朋友跑这个 于是就有了这个使用教程 安装教程 Deeplabcut教程 一 安装 GPU CPU版本 纯新人向 CSDN博客 Step 1 启动
  • ubuntu交叉编译工具arm-linux-gcc安装

    1 安装交叉编译工具 arm linux gcc 安装包4 4 6 TQ210 release 20120720 tar bz2 环境 ubuntu 20 版 已换清华源 1 1解压文件 提取解压1 1 6到home目录 1 2配置环境 打
  • Unkonw column ‘xxx‘ in ’field list‘错误

    Unkonw column xxx in field list 错误 当使用jpa进行数据库操作时 数据库中的数据为 外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img 6I9QHwpX 1680000912061
  • Anaconda/jupyter notebook修改虚拟环境名称

    1 找到用户文件夹下的txt文件 比如C Users your username conda environments txt windows平台 找到当前主用户文件夹 有一个 conda文件夹 里面有一个environments txt文
  • 我的2012移动开发年度总结——革命的一年

    2012年 是我在移动行业畅游的一年 这一年发生了很多事 人生三大事之一结婚 评选csdn专家荣誉称号 坚持写博客写了一年 对手机这个行业总算有了个大体的认识 但是还有一些不顺人意的事 这里就不说了 但有一件事不得不说 在这家公司上班以来
  • QWidget尺寸限定

    1 控件只能在最小和最大之间进行调整 不能超过范围 直接宽高同时设置 window setMinimumSize 200 200 window setMaximumSize 500 500 app QApplication sys argv
  • unity3D游戏开发十之粒子系统

    Shuriken粒子系统是Unity3 5版本新推出的粒子系统 它采用模块化管理 个性化的粒子模块配合粒子曲线编辑器使用户更容易创作出各种缤纷复杂的粒子效果 依次打开菜单栏中的GameObject gt Greate Other gt Pa
  • win10 python如何安装requests———超详细教程

    第一步 先检查你的python安装路径下的Scripts文件里有没有东西 我一开始查看时发现竟然是空白的 去搜寻了答案 python安装文件中 Scripts文件夹中没有文件目录 空白 注 我只是操作了该教程中的第二步 在cmd中输入pyt
  • 区块链的核心:共识机制

    我在上一篇 区块链到底是怎么运行的 一文中 提到了 打包交易 和 广播交易 这两个概念 其实 以上谈到的两个内容正是区块链最核心的技术内容之一 共识机制 在今天的文章中 我们就展开聊一聊区块链共识机制到底是什么 以及区块链的共识过程到底是怎