智能合约及其web3共识机制

2023-10-31

 

目录

什么是共识?

什么是共识机制?

共识机制的目标

为什么需要共识机制?

如何评价一个共识机制的优劣:

共识机制分类

PoW( Proof of Work)工作量证明:多劳多得

PoS(Proof of Stake)股权证明算法:持有越多,获得越多

优点

缺点

如何配置web3

智能合约测试


 

什么是共识?

我们所说的共识,是指达成了广泛的一致。 比如,一群人去吃晚饭, 如果他们对于提议“吃某火锅”没有任何异议,那么就可以说共识达成了。 如果存在异议,那么他们就必须通过某种方法决定吃什么。 这群人就会分开。

什么是共识机制?

区块链要成为一个难以攻破的、公开的、不可篡改数据记录的去中心化诚实可信系统,需要在尽可能短的时间内做到分布式数据记录的安全、明确及不可逆,提供一个最坚实且去中心化的系统。共识机制在区块链中成为了重要的因素之一。

 

区块链分布式记账的方式使得每个人手上都有一本完整的账本,全网共有。但是随着节点的不断增多,数据越多,账本也越安全,难以摧毁。除此之外,任意一个或者部分节点的账本被篡改,都不可能被全网认同,除非你能控制51%的节点,即51%攻击,但是这耗能巨大,几乎是不可能的。同时随着节点不断增加,谁来记账,如何选择合适的人来记账成为一个问题,而制定一个记账人的选择方式以及规定,让大家来遵守这个规定,达成共识,这就是区块链里面的共识机制。

 

共识机制是区块链节点就区块信息达成全网一致共识的机制,说得更直白一些就是要解决所谓去中心化的信任问题,因为每个节点之间默认是不认识且不可靠的,同时每个节点都不能知道其他节点是否宕机或者背叛的情况下,尽可能的保证记录信息的准确性以及安全性。同时节点越分散,效率越低,网络对于信息的满意度越高,越安全。

共识机制的目标

区块链作为一种按时间顺序存储数据的数据结构,可支持不同的共识机制。共识机制是区块链技术的重要组件。区块链共识机制的目标是使所有的诚实节点保存一致的区块链视图,同时满足两个性质:

1)一致性:所有诚实节点保存的区块链的前缀部分完全相同。

2)有效性:由某诚实节点发布的信息终将被其他所有诚实节点记录在自己的区块链中。

为什么需要共识机制?

在分布式系统中,各个不同的主机通过异步通信方式组成网络集群。为了保证每个主机达成一致的状态共识,就需要在主机之间进行状态复制。异步系统中,可能会出现各样的问题,例如主机出现故障无法通信,或者性能下降,而网络也可能发生拥堵延迟,类似的种种故障有可能会发生错误信息在系统内传播。因此需要在默认不可靠的异步网络中定义容错协议,以确保各主机达成安全可靠的状态共识。所以,利用区块链构造基于互联网的去中心化账本,需要解决的首要问题是如何实现不同账本节点上的账本数据的一致性和正确性。

 

这就需要借鉴已有的在分布式系统中实现状态共识的算法,确定网络中选择记账节点的机制,以及如何保障账本数据在全网中形成正确、一致的共识。

 

如何评价一个共识机制的优劣:

 

  1. 安全性:能否有效防止二次支付,私自挖矿
  2. 扩展性:当系统成员和待确认交易数量增加时,所带来的系统负载和网络通信量的变化,通常以网络吞吐量来衡量
  3. 性能效率:每秒可以处理的交易数量
  4. 资源消耗:达成共识过程中,所要消耗的CPU、内存等计算资源
  5.  

共识机制分类

 

没有一种共识机制是完美无缺的,各共识机制都有其优缺点,有些共识机制是为解决一些特定的问题而生。

BTC作为区块链的第一个应用,它的共识机制PoW共识机制曾经一枝独秀,但是随着区块链技术的不断发展,各类不同的共识机制开始不断涌现,各有千秋,各有拥趸。

 

常见的共识就机制包括:POW(工作量证明机制)、POS(权益证明机制)、POW+POS(混合共识机制)、DPOS(股份授权证明)等等,另外还有Pool验证池、Ripple瑞波共识协议、PBFT(使用拜占庭容错算法)等等

 

PoW( Proof of Work)工作量证明:多劳多得

 

fc850564485bec506b7945373ecc726b.png

最早(也是第一个)被应用的共识机制,最先被BTC采用并且获取了巨大成功,它支撑了BTC系统长达 10 多年无重大故障使其平稳运行。而且 PoW 构想也符合创始人中本聪最初的设想:人人皆可挖矿、按劳分配、公平公正。

 

PoW 属于按劳分配,多劳多得,就如同大家在BTC系统中一起进行数学运算,最先运算出的才能获得奖励。是一种衡量计算机工作量的共识机制。BTC使用的就是工作量证明机制。

 

工作量证明主要通过哈希计算找出合理数据的步骤来完成:将区块头数据带入哈希函数计算公式,不断调整区块头数据中的随机数,直到计算出满足特定标准的哈希值,工作量证明就会完成。

 

简单来说就是多劳多得,谁的算力强,计算得就更快,获得记账权的概率就越高,算力竞争的胜者将获得相应区块记账权和BTC奖励。 因此,矿机芯片的算力越高,挖矿的时间更长,就可以获得更多的数字货币。进行运算获得奖励的过程称之为挖矿,参与挖矿的人们称之为矿工。这种证明方式决定了其验证过程需要大量的数据计算,而其他节点却很容易验证计算结果是否正确,因此 区块链系统无法被恶意节点所欺骗。但是这种证明方式需要消耗大量能源(电力及计算硬件损耗),很不 环保。并且在理论上,如果集合了全网51%的算力即可对区块链网络进行有效攻击,因此许多基于比特币 代码产生的、市值较小的山寨币很容易遭受攻击。

 

代表token:BTC、BCH、LTC等。

 

优点

公平公正:去中心化程度高,人人都可以参与获得记账权;

安全系数高:全网算力越高,其安全程度也越高,如破坏该系统需要投入巨大成本;

算法简单,容易实现

缺点

资源浪费:因每一笔交易都需要通过多数矿工的确认,在这些矿工进行运算的过程中消耗大量的电力资源等。

效率低下:区块的确认时间难以缩短;容易产生分叉,需要等待多个确认。

算力集中:根据往年数据显示,在资本大量进入的情况下,过去一年矿池算力份额排名前五位的矿池占据了BTC总算力份额的 65%,马太效应逐渐显现,而算力过度集中还存在着 51% 攻击的风险。

永远没有最终性,需要检查点机制来弥补最终性。

 

PoS(Proof of Stake)股权证明算法:持有越多,获得越多

8f4f8fdeae90d153e85c77c8af94364e.png

 

因 PoW 存在的问题,PoS 在主流算法一路畅通的“杀了出来”,成为了最具有挑战者。近几年,基于 PoS共识打造的区块链项目越来越多,如目前市值保持第二的ETH也加入了 PoS。“Staking经济”在 2019年成为了热门词语,同时也被交易所和钱包大力追捧。

 

POS机制采用类似股权证明与投票的机制,选出记帐人,由它来创建区块。持有股权愈多则有较大的特权,且需负担更多的责任来产生区块,同时也获得更多收益的权力。 POS 机制中一般用币龄来计算记账权,每个币持有一天算一个币龄,比如 持有 100 个币,总共持有了 30 天,那么此时的币龄就为 3000。在 POS机制下,如果记账人发现一个 POS 区块, 他的币龄就会被清空为 0,每被清空 365 币龄,将会从区块中获得 0.05 个币的利息(可理解为年利率 5%)。

 

PoS权益证明同样需要通过计算找出合理的哈希值来完成。 但不同的是权益证明机制通过节点持有加密货币的时间和数量来判断节点的权益大小。根据权益大小不同,用户之间看到的计算目标值也不同。权益大的节点,获得目标值更加简单,更容易获得下一个区块的记账权。 这种方式不需要每个节点都进行大量的运算,节省了电力能源。同时全网51%的算力攻击在权益证明机制下是无效的,因为发起这种攻击反而会损害自身的利益。但是可能会出现币种持有数量大的节点权力过 大,对区块链记账享有绝对支配权的情况,

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

智能合约及其web3共识机制 的相关文章

随机推荐

  • 人生,天命,自己

    前提摘要 我现在刚刚毕业 正在找工作 疯狂投简历 目前还没有消息 但是我最近有一个想法 在这个想法之上正在研究一个关于文档关联的新东西 简单来说就是利用相关性算法 然后 使用py代码来实现文档关联 为什么我会公开说出我的研究 或者是我发表关
  • [C++]高效使用c++11--理解auto类型推导

    推导类型 1 理解类型推导 auto的推导方式和template是一样的 所以我们首先来介绍template是如何推导类型的 template
  • pip:python -m pip install --upgrade pip 解决办法

    在使用 pip 安装 Flask 的时候 命令行报错 You are using pip version 9 0 1 however version 21 2 4 is available You should consider upgra
  • Qt - 高级网络操作 HTTP/FTP

    欢迎转载 请注明出处 https blog csdn net qq 39453936 spm 1010 2135 3001 5343 原文链接 https blog csdn net qq 39453936 article details
  • Redis的5大类型

    Redis的5大类型 Redis是单进程 单线程 单实例并发很多的请求 如何变得很快的呢 Redis默认有16个库 redis cli raw进行当前编码的匹配 底层是按照字节存储的 二进制安全 Redis的5大类型 1 String 包含
  • 再见Xshell,这款免费开源的终端工具真香~

    作为一名后端开发 在日常工作中肯定是要和服务器打交道的 自然也就需要使用终端工具 在 Windows 系统的电脑上我一直是使用 Xshell 以前还挺好用的 后面这款工具竟然把 ftp 功能给剥离出去了 单独搞了个 Xftp 这让我使用起来
  • 4.1-支持向量机

    文章目录 一 铰链损失 Hinge loss 二 核方法 Kernel Method 2 1 径向基函数核 Radial Basis Function Kernel 2 2 Sigmoid Kernel 三 支持向量机相关方法 SVM re
  • PyTorch学习日志_20201030_ Autograd 包

    日期 2020 10 30 主题 PyTorch入门 内容 根据PyTorch官方教程文档 学习PyTorch中所有神经网络的核心 Autograd 包的基础操作 主要与张量相关 根据自己的理解和试验 为代码添加少量注解 具体代码如下 fr
  • TCP往返传输时间(RTT)的估计

    TCP往返传输时间 RTT 的估计1 TCP传输往返时间是指发送端从发送TCP包开始到接收到它的立即响应所耗费的传输时间 当接收端和发送端同时支持TCP时戳选项时 发送端记录在TCP包头选项内的时戳可以被接收端随响应反射回来 发送端就可以利
  • Windows下OMNET++的安装和各种架构调试心得

    以下所述的为windows平台下OMNET 集成在MSVC6 0环境下的使用方法 一 OMNET的安装 1 到OMNET官方网站下载windows平台下的安装程序 当前版本为omnetpp 3 2p1 win32 下载Ghostscript
  • smart检测指标详解

    一 SMART概述 要说Linux用户最不愿意看到的事情 莫过于在毫无警告的情况下发现硬盘崩溃了 诸如RAID的备份和存储技术可以在任何时候帮用户恢复数据 但为预防硬件崩溃造成数据丢失所花费的代价却是相当可观的 特别是在用户从来没有提前考虑
  • linux下socket编程处理TCP粘包

    一 数据接收时会出现以下几种情况 一次接收到了客户端发送过来的一个完整的数据包 一次接收到了客户端发送过来的 N 个数据包 由于每个包的长度不定 无法将各个数据包拆开 一次接收到了一个或者 N 个数据包 下一个数据包的一部分 还是很悲剧 无
  • Redis内存数据库

    Redis内存数据库 NoSQL数据库简介 Redis简介 Redis应用场景 windows下安装和使用Redis 在linux下安装redis Redis数据可视化RedisDesktopManager Redis配置 Redis 数据
  • 无人机(总结的一个报告)

    无人机系统是配备了必要的数据处理单元 传感器 自动控制和通信系统 并且能够自动执行任务的系统 脑 能源 传感器 执行机构 无人系统分为 区域 无人空中系统 UAS 无人地面系统 UGS 无人海上系统 UMS 那么军用无人机系统未来的发展从哪
  • 如何用Jenkins和Perforce Helix Core搭建CI/CD管道

    Jenkins是常用的CI CD管道支持工具 在这一篇文章中 我们将详细讨论Jenkins对于CI CD管道的重要性 以及如何用Jenkins和Perforce Helix Core搭建CI CD管道 什么是Jenkins搭建的CI CD管
  • 使用Cmake封装API接口成Package方法

    本文是个人探究API封装成Package以让他人像使用OpeCV PCL等第三方库那样方便时所总结的经验 一 CmakeLists txt的编写 1 基本工程实现 cmake minimum required VERSION x x 最小C
  • c语言push操作的作用,C语言对栈的实现基本操作

    c语言中栈是一种数据结构 后进先出 即最后进入栈的数据最先弹出 c语言中没有栈这种数据类型 需要自己编程构建 下面我们就一起来了解一下c语言中栈的基本操作 C语言对栈的实现基本操作 操作如下 include include include
  • 重新学javaweb---路径专题

    绝对路径 以 开头的路径就叫做绝对路径 绝对路径在相对于的路径上直接拼接得到最终的路径 相对路径 不以 开头的路径就叫做相对路径 相对路径基于当前所在的路径计算的到最终的路径 硬盘路径 以盘符开头的路径就叫做硬盘路径 是哪个路径就是哪个路径
  • AKM项目轶事之客户南沙工厂Kick-off大会

    AKM项目轶事之客户南沙工厂Kick off大会 2014 10 29我们项目组一行十多号人 从上海飞往广州 参加客户在广州南沙工厂的项目Kick off meeting 项目启动大会 第二天 我们提前赶到客户办公室 在一个大会议室里面 我
  • 智能合约及其web3共识机制

    目录 什么是共识 什么是共识机制 共识机制的目标 为什么需要共识机制 如何评价一个共识机制的优劣 共识机制分类 PoW Proof of Work 工作量证明 多劳多得 PoS Proof of Stake 股权证明算法 持有越多 获得越多