区块链技术之共识机制
“共识机制”一词通常通俗地用于指代“股权证明”、“工作证明”或“权威证明”协议。然而,这些只是防止女巫攻击的共识机制的组成部分,共识机制是思想、协议和激励的完整堆栈,使一组分布式节点能够就区块链的状态达成一致。共识机制是区块链节点(运行区块链并保存所有交易记录的计算机)如何可靠地达成此协议的标准化方式,取代了很多人工验证者和审计,加密货币、区块链和分布式账本受益匪浅。共识机制是区块链系统中用于实现关于账本状态的分布式协议的程序,是一个时间段内对事物的前后顺序达成共识的一种算法,是区块链技术应用的核心,一般是在有很多进程和用户的网络中实现的。
关键要点
- 共识机制是用于在分散的计算机网络中达成协议、信任和安全的任何方法。
- 在区块链和加密货币的背景下,工作量证明 (PoW) 和权益证明 (PoS) 是两种最普遍的共识机制。
- 共识机制通过加密和使用自动组验证在保护信息方面发挥着重要作用。
共识机制的重要性
加密世界中共识机制的目标是防止不良行为者故意作弊,典型的作弊例子就是“双花”——假设Anthony,这个场景中的坏人,试图通过向Bethany转移10个代币然后尝试将完全相同的10个代币转移给Chris来作弊。最大的挑战在于确保每个人都能始终了解并同意谁拥有哪些代币,通过该协议或共识,Chris已经知道Anthony不再拥有他打算发送的代币。
共识机制通过使提出新的经过验证的交易块变得昂贵且困难来解决双重支出问题,从而阻止不良行为者尝试。同时,这些机制会激励“好”节点提出他们真正相信会被接受的区块,以获得有价值的奖励。
共识机制的发展历史
当计算机和网络在1980年代和90年代开始流行时,创建了共享数据库,以便多个用户可以访问他们存储的信息。大多数都有一个中央数据库,用户可以从不同的站点访问权限。这种设置演变成集中式网络,管理员授予用户权限并维护数据的完整性。
这些共享数据库被称为分布式分帐,因为它们记录信息并联网供不同位置的许多用户访问。需要解决的最重要的问题之一是防止数据篡改和未经授权的访问,无论是否是恶意的。需要一种自动化分布式数据库管理的方法来确保数据不被更改。
这种需求导致了分布式自治共识的产生,其中网络上的程序使用加密技术就数据库的状态达成一致。协议旨在通过使用加密算法来创建一长串字母数字数字(称为散列)来达成,然后由网络上运行的程序进行验证。只有当输入到哈希算法的信息发生变化时,哈希才会发生变化,因此程序被设计为比较哈希以确保它们匹配。
当网络上运行的每个程序都创建了一个匹配的字母数字字符串时,就可以说该数据已通过网络达成共识。因此,建立了共识机制,通常将信用归功于匿名比特币创建者中本聪。然而,在中本聪发布让比特币出名的白皮书之前,许多人在共识机制上工作了多年。
比较流行的共识机制类型以及运作方式
1. 工作量证明(Proof of Work——POW)
优点:(1)安全级别高;(2)提供一种去中心化验证交易的方法;(3)允许矿工获得挖矿奖励。
缺点:(1)交易速度慢且价格昂贵,效率低下;(2)高耗能;(3)采矿通常需要昂贵的设备。
应用实例:BTC、DOGE、LTC等加密货币。
工作量证明 (POW) 过程也称为挖矿,矿工称为节点,矿工解决需要大量计算能力的复杂数学难题。为此,矿工使用多种挖矿方法,如CPU挖矿、GPU挖矿、FPGA挖矿、矿池、ASIC挖矿等等。解决数学难题后,如果矿工是第一个找到解决方案的矿工,他们将获得一个区块作为奖励。此外,谜题只能通过反复试验来解决。因此,矿工需要越来越多的计算能力才能快速找到解决方案。
谜题的难度级别根据块的开采速度而变化,如果快速创建块,则拼图会变得更加困难,反之亦然。因此,必须在特定时间范围内创建新块,以仔细调整拼图的难度级别。比特币等几种流行的加密货币使用工作量证明流程。然而,工作量证明共识机制以惊人的速度消耗资源,据有关统计,比特币目前预估的年耗电量为51.13TWh,因此,这种方法可能很昂贵。
2. 权益证明(Proof of Stake——POS)
优点:(1)尽管资源和能源消耗成本较高,但权益证明共识具有很高的能源效率;(2)缩短了各个节点之间达成共识的时间。
缺点:(1)仍需要挖矿,资源和能源消耗成本较高;(2)基于哈希运算竞争获取记账权的方式,可监管性弱。
应用实例:ETH、ADA、ONT、ATOM等加密货币。
权益证明使用随机过程来确定谁有机会生产下一个区块。区块链用户可以将他们的代币锁定一段时间以成为验证者。成为验证者后,用户可以生产区块,也可以根据区块链的设计来选择验证器。通常,拥有最大股份或拥有硬币时间最长的用户更有可能创建新区块。
验证者通常会因为他们的工作而获得奖励,奖励是在他们创建的区块中执行的所有交易的全部或部分交易费用。或者,由于通货膨胀,验证者可能会收到特定数量的代币。通过这种方法,股权证明方法为验证者提供了维护区块链网络的激励。与工作量证明等其他区块链共识机制相比,权益证明更节能。
3.委托权益证明(Delegated Proof of Stake——DPOS)
优点:(1)最大优势为不同人群提供了公平的参与机会;(2)大幅减少了参与验证和记账的节点数量,可以达到秒级的共识验证;(3)集中于更快的交易终结,确保更好的能源效率。
缺点:(1)区块链更加中心化并且更容易受到攻击;(2)整个共识机制还是依赖于代币,而很多商业应用并不需要代币模式;(3)委托权益证明也代表了少数人为多数人做决定的经典案例。
应用实例:EOS、TRX等加密货币。
在委托权益证明过程中,用户可以抵押他们的代币并投票给特定数量的委托人。用户投票的权重基于他们的股份。例如,如果用户“X”为一名受托人投入20个代币,而另一个用户“Y”投入2个代币,则X的投票将比Y的投票具有更大的权重。获得最高票数的受托人有机会产生新的块。与其他区块链共识机制(如股权证明)一样,代表们将获得交易费用或特定数量的代币奖励。
委托权益证明机制是最快的区块链共识机制之一。与工作量证明机制相比,该机制可以处理更多的交易。由于其股权加权投票系统,DPOS通常被视为数字民主。
4. 容量证明(Proof of Capacity——POC)
优点:(1)可以使用任何普通硬盘驱动器,包括基于Android系统的硬盘驱动器;(2)能源效率比基于ASIC的比特币加密货币挖掘高出30倍;(3)无需专用硬件或不断升级硬盘;(4)可以轻松擦除采矿数据,并且可以将驱动器重新用于任何其他数据存储目的。
缺点:(1)采用该系统的开发商并不多;(2)恶意软件有可能影响挖矿活动;(3)广泛采用可能会引发一场生产更高容量硬盘的“军备竞赛”。
应用实例:SIGNA等加密货币。
在容量证明方法中,复杂数学难题的解决方案存储在硬盘等数字存储器中,这整个过程称为绘图。在存储设备中存储了数学谜题的解决方案后,用户可以使用它来生产块,最快找到解决方案的用户将有机会创建新区块,因此,具有最高存储容量的用户将有更高的机会产生新块。
5. 经过时间的证明(Proof of Elapsed Time——POET)
经过时间证明过程随机且公平地根据他们等待的时间来决定新区块的生产者。为此,该机制为每个用户提供了一个随机等待时间,等待时间最早完成的用户将产生一个新块。这种共识机制只有在系统可以验证没有用户可以运行多个节点并且等待时间是真正随机的情况下才有效。
6.身份证明
身份证明将用户的私钥与授权身份进行比较。基本上,身份证明是用户私钥的加密证据,以加密方式附加到特定交易。来自区块链网络的任何已识别用户都可以创建一个数据块,该数据块可以呈现给网络中的任何人。身份证明确保所创建数据的完整性和真实性。此外,智慧城市可以使用身份证明等区块链共识机制来验证其公民的身份。
7.授权证明
权威证明机制是权益证明的修改版本,其中网络中验证者的身份受到威胁。在这种情况下,身份是验证者的个人身份与他们的官方文件之间的对应关系,以帮助验证他们的身份。这些验证者将他们的声誉放在网络上。在权威证明中,成为验证者的节点是唯一被允许生成新块的节点。身份受到威胁的验证者会受到激励来保护和维护区块链网络。此外,验证者的数量相当少(即25个或更少)。
8. 活动证明
活动证明机制是工作证明和权益证明的结合。在活动证明中,矿工试图找到难题的解决方案并领取奖励。然而,在活动证明机制中创建的块是具有挖矿奖励地址和标题信息的简单模板。然后使用标头信息来选择一组随机验证器来对块进行签名。拥有更大股份的验证者将有更大的机会被选中签署新区块。一旦选定的验证者签署了一个新区块,它就成为网络的一部分。如果该块未被某些验证者签名,它将被丢弃并使用一个新块。过程中产生的网络费用在获胜的矿工和验证者之间分配。
尽管有相似的目标,但各种区块链共识机制通过不同的方法确保达成共识。目前还不存在单一可靠的共识机制,但现有机制已经随着时间的推移而发展以满足区块链技术的需求。此外,由于底层技术相当新,预测从长远来看将流行和有用的区块链共识机制的类型可能会变得越来越复杂。因此,希望在其组织中引入区块链技术的企业领导者必须充分了解各种区块链共识机制。
相关文章:
区块链技术之共识机制
“共识机制”一词通常通俗地用于指代“股权证明”、“工作证明”或“权威证明”协议。然而,这些只是防止女巫攻击的共识机制的组成部分,共识机制是思想、协议和激励的完整堆栈,使一组分布式节点能够就区块链的状态达成一致。共识机制是区块链…...
SpringCloud断路器——Hystrix
Hystrix 本专栏学习内容来自尚硅谷周阳老师的视频 有兴趣的小伙伴可以点击视频地址观看 简介 Hystrix是一个用于处理分布式系统的延迟和容错的一个开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix…...
分布式 - 分布式体系架构:集群和分布式
文章目录01. 什么是集群?02. 集群为什么可以提高系统的可靠性?03. 集群为什么可以提高系统的性能?04. 什么是分布式计算?05. 如何进行分布式计算?06. 集群如何提高计算效率?07. 集群的优点和缺点࿱…...
NodeJs常用内置模块
目录 一、Path模块 二、fs模块 2.1、fs同步读取文件fs.readFileSync() 2.2、fs异步读取文件fs.readFile() 2.3、异步写入文件内容fs.writeFile() 三、Http模块 四、模块化 4.1、CommonJs的导入导出 4.2、ES6的导入导出 五、了解global和this 六、Sort()应用(数组排序…...
4.0 功能抢先看 | 读懂一个项目的研发效能 之 项目人效
思码逸企业版 4.0 的部分功能已进入内测阶段✨近期我们会用几篇文章,浅剧透一下 4.0 的新鲜功能。 最近几篇的主题将是 4.0 版本中的 GQM 看板——GQM 代表 Goal-Question-Metric(目标-问题-指标),是一套构建软件研发效能度量的系…...
Object方法
系列文章目录 前端系列文章——传送门 JavaScript系列文章——传送门 文章目录系列文章目录对象方法一、Object原型方法1、hasOwnProperty2、isPrototypeOf3、propertyIsEnumerable4、toString5、其他二、Object方法1、assign2、create3、defineProperties4、defineProperty5、…...
042:cesium加载Eris地图(多种形式)
第042个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中加载加载Eris地图。这里显示4种形式的地图,分别为:World_Imagery、World_Street_Map、World_Terrain_Base、World_Physical_Map。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示…...
第十四届蓝桥杯大赛软件赛省赛(C/C++B组)
目录试题 A. 日期统计1.题目描述2.解题思路3.模板代码试题 B.01 串的熵1.题目描述2.解题思路3.模板代码试题 C. 冶炼金属1.题目描述2. 解题思路3.模板代码试题 D. 飞机降落1.题目描述2. 解题思路3.模板代码试题 E. 接龙数列1.题目描述2. 解题思路3.模板代码试题 F. 岛屿个数1.题…...
Python生成随机验证码
pip install pillow 实现代码 import random from PIL import Image, ImageDraw, ImageFont,ImageFilterdef check_code(width120, height30, char_length5, font_filekumo.ttf, font_size28):code []img Image.new(modeRGB, size(width, height), color(255, 255, 255))draw…...
Longitudinal Change Detection on Chest X-rays Using Geometric Correlation Maps
文章来源:[MICCAI2019] Keywords:Chest X-ray;Longitudinal analysis;Change detection;Geometric correlation 一、本文提出的问题以及解决方案 在胸部X-ray图像的诊断中,医生会考虑与先前检查相比病变的…...
5年功能测试的一些心得
一、前言 功能测试是测试工程师的基础功,很多人功能测试还做不好,就想去做性能测试、自动化测试。很多人对功能测试的理解就是点点点,如何自己不用心去悟,去研究,那么你的职业生涯也就停留在点点点上了。在这里&#…...
在外包做了3年测试,离职后却成功入职字节跳动.....
最近换了份工作,当时和群里的朋友也聊过换工作的话题,他们都觉得这是一次非常冒险的行为,说我这是一次豪赌——成了会有更好的职业发展,没成可能就会出现两三年的发展断层,甚至影响职业生涯路径。一步错,步…...
网络编程套接字( TCP )
目录 1、实现一个TCP网络程序(单进程版) 1.1、服务端serverTcp.cc文件 服务端创建套接字 服务端绑定 服务端监听 服务端获取连接 服务端提供服务 服务端main函数命令行参数 服务端serverTcp.cc总代码 1.2、客户端clientTcp.cc文件 客户端main函数命令行…...
QT 判断当前操作系统是否为 Windows 8 及以下版本
判断当前操作系统是否为 Windows 8 及以下版本,可以使用 QSysInfo 类中的静态函数 QSysInfo::windowsVersion(),其返回值是一个 QOperatingSystemVersion 类型的对象,包含了当前操作系统的主版本号、次版本号和补丁版本号。我们可以通过比较主…...
走进小程序【五】微信小程序架构之【逻辑层】详解
文章目录🌟前言🌟小程序架构🌟逻辑层 App Service🌟注册小程序🌟注册页面🌟使用 Page 构造器注册页面🌟在页面中使用 behaviors🌟使用 Component 构造器构造页面🌟页面生…...
mysql workbench使用教程
mysql workbench使用教程1、打开workbench,显示如下界面,点击2、连接建立好之后,点击已经建立好的连接,连接mysql服务器1、打开workbench,显示如下界面,点击 填写信息 密码是之前安装MySQL时设置的密码 点击…...
蓝易云:Linux系统常用命令-系列【3】
在Linux中,有许多常用的命令可以用来管理文件、目录、进程等。下面是一些常用的Linux命令的介绍。 1. cd:改变当前目录。例如,cd /home。 2. ls:列出指定目录下的所有文件和子目录。例如,ls -al。 3. rm:…...
Nginx实现会话保持,集群模式下session域共享
前言 生产环境下,多数系统为了应对线上多种复杂情况而进行了集群架构的部署,保证系统的高性能、价格有效性、可伸缩性、高可用性等。通常将生产环境下的域名指向Nginx服务,通过它做HTTP协议的Web负载均衡。 session是什么 在计算机中&…...
【SpringMVC】6—SpringMVC拦截器
⭐⭐⭐⭐⭐⭐ Github主页👉https://github.com/A-BigTree 笔记链接👉https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以,麻烦各位看官顺手点个star~😊 如果文章对你有所帮助,可以点赞👍…...
【算法】插入排序
插入排序实现思路:将一个新的数,和前面的比较,只要当前数小于前一个则和前一个交换位置,否则终止;「时间复杂度:O(N^2);」「空间复杂度:O(1)」 一、标准方式 function insertSort(a…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
