Layer2区块链扩容方案(1)——总述

写在前面

这篇文章作为一个简单介绍,很多技术只是大致提及或者引用,之后会在详细学习后逐项解释。

补充知识

在了解扩容方案之前,我们最好了解一些相关的知识概念

EVM

“EVM” 是“Ethereum Virtual Machine”(以太坊虚拟机)的缩写。

EVM是什么?

  1. EVM是由成千上万台计算机(节点)组成的一台云计算机,每台计算机上运行一个软件,该软件基本上只是计算智能合约交易的输出

  2. EVM这台虚拟机一般用来处理Defi交易(EVM是专门为了处理Defi交易设计的),可以读取编译过的智能合约。如果两条链均适用EVM,那么他们之间进行的资产转移和交互就比较方便,而这种转移的合约一般使用的是Solidity语言编写的(cardona和solana是用rust语言编写的,这是区块链开发的另一种常见语言)

  3. EVM和正常的计算机一样,读的是ByteCode(0 1组成的机器码);开发人员一般使用的Solidity书写智能合约,这种合约需要通过编译器(比如常见remix)编译后才能被EVM读懂。除了这两种语言,再讲一下Opcode(操作码),类似于CPU读的汇编代码,操作码是一种开发人员不写、EVM不读的代码;但是我们可以借助这个概念理解汽油费的计算方式,常说的汽油费就是 每个操作*该操作所需的费用最后求和得到的。

EVM的运行

  1. EVM处理交易时,每个交易依次运行,不会同时执行

  2. 完成一笔交易,称作EVM的状态被更新了

  3. EVM持有状态与数据集合,交易前和交易后的状态都被记录(可以借此实现回滚),而这些交易的列表组成了区块链

PoS权益证明

关于Pos的一些内容,我们在以太坊的文章中谈到过,这里简单的提一下。PoS,即Proof of Staking通常指使用代币质押来获得出块权的方案。

运行流程

  1. 区块提议:在 PoS 网络中,验证者(或烘焙者、出块者)会在获得区块生成权利时,提议一个新区块。这个过程通常是随机的,系统会根据验证者的质押数量、网络的共识算法等因素来确定哪个验证者可以提议一个新区块。

  2. 区块验证:提议的区块需要经过其他验证者的验证,以确保区块中的交易和数据是有效的,并符合网络协议的规则。这一步骤是为了防止恶意行为和保证区块的正确性。

  3. 区块确认:经过验证的区块会被添加到区块链中,成为新区块链的一部分。验证者会根据网络的共识规则获得一定的奖励,作为他们参与区块生成和验证的回报。

  4. 奖励发放:生成和验证区块的验证者会收到区块奖励,这通常包括新生成的代币和交易手续费。

优势

  1. 在PoS中,质押一定代币的节点才有出块权(或者说是验证交易的权力),这样使得能源得到节约以及使得区块链被破坏的风险降低(本质上是增加了造假者的代价)

  2. PoS实现了“No one runs with no reward”,使得大家参与区块链的成本降低(不会无缘无故的浪费电力)

  3. 使得去中心化程度加深,一定程度上降低了矿场矿池对于算力垄断而达到的危害区块链的风险(相交于PoW而言)

选择验证者(矿工)的规则

  1. 往往是质押金额多的节点更优先得到出块权

  2. 同时,引入了随机数选择器的方法

质押者的风险与奖励

风险

  1. 质押的Staking中的代币在质押期无法参与交易

  2. 对于没有审核交易经验的人,往往需要雇佣技术人员来验证,这就需要承担验证错误带来的质押金丢失的风险(这是疏忽、和恶意节点的故意破坏动机不同),以及支付一定数额的佣金

  3. 不良行为一旦被发现,就会扣除所有押金

  4. 验证者的奖励发放有一定延时:

    1. 区块生成时:验证者在成功生成一个新区块后,通常会获得该区块的奖励。这包括区块奖励(通常是新生成的代币)以及交易手续费。

    2. 奖励周期:在一些PoS系统中,奖励可能不是即时发放的,而是在一定的奖励周期后集中发放。例如,奖励可能会按照预定的时间间隔(如每周、每月)进行发放。

    3. 结算期:某些PoS网络还可能设置一个结算期或延迟期,以确保奖励的准确性和避免潜在的欺诈行为。在此期间,奖励会暂时被锁定,直到结算完成。

奖励

下面举的是常见代币的方式,至于奖励的细节可以看一下以太坊的文章

  1. Tezos代币:6%(每年) 实际收益大约4.6%

  2. Cardano代币:4-5%(每年)

  3. Algo代币:8-10%(每年)

  4. Eth:4-7%(每年)

缺点

没有原始资产(coin)的节点可能无法参与

总述

区块链扩容受到 Vitalik 提出的不可能三角的限制,不可能三角是指区块链系统设计无法同时兼顾可扩展性,去中心化和安全性,三者只能取其二。这是一个很让人失望的结论,但我们必须知道,一切事物都有自己的边界,公链不应该做所有的事情,公链应该做它该做的事情:“公链是以最高效率达成共识的工具,能够以最低成本来构建信任”。作为共识的工具,信任的引擎,公链不应该为了可扩展性放弃去中心化与安全性。

拓展的常见思路(方案)

方案一:拓展基础层(Layer1)

方案二:将工作外包给新层(Layer2)

下面是详细的拓展层表格信息:

Layer内容
layer 2:链下扩展可编程应用层
堆栈脚本 算法 智能合约合约层
layer 1:链上扩展分配机制 发行机制激励层
PoA Raft PoW PoS共识层
P2P网络 传播机制 验证机制网络层
区块数据 链式结构 时间戳哈希函数 Merkle树 非对称加密数据层
layer0:第0层OSI模型中传输层与网络层

在底层区块链( Layer1 )上构建一个扩展层( Layer2 ), Layer1 来保证安全和去中心化,绝对可靠、可信;它能做到全球共识,并作为“加密法院”,通过智能合约设计的规则进行仲裁,以经济激励的形式将信任传递到 Layer2 上,而 Layer2 追求极致的性能,它只能做到局部共识,但是能够满足各类商业场景的需求。

这篇文章要简要介绍的是Layer2的拓展方案

Layer2方案

很喜欢有人对Layer2的一个例比:Layer2的拓展方案就像是公路上的车,客车、货车、轿车、摩托车都可以运行,都有发动机这一机动车的特性;但是,针对特定的运输任务,往往只选择某一种特殊的车辆,比如运送大型货物用货车、单人驾驶一般使用轿车和摩托车......

这就像Layer2的拓展方案,常见的Layer2拓展方案有以下五种:Rollup(打包)、sidechain(副链)、Plasma(子链)、channel(交易合并),下面我将逐条介绍。

Layer2的拓展,不是通过代码直接影响主链的状态,而是允许网络通过他们拓展外部因素或工具

Rollup

rollup很形象的一种解释就是“打包”,比如你想发送几封信给到同一个地点,往往可以将这几封信打包到一个大信封里面,而不是分别发出,这和Rollup的原理不谋而合;再比如为了解决一道填空题,它可能有很多步骤和过程,但是这些都在演草纸上进行,只是将最终的答案写在答题卡上。Rollup是在以太坊之外执行交易的方案,之后将交易的最终数据发布到主链上

也就是,将一系列交易汇总起来,最终以一个数据的形式汇总到区块链上。

Rollup总述

  1. Rollup 本质上是一条独立的区块链

  2. 和以太坊一样,Rollup 协议也使用 “虚拟机” 来执行智能合约代码。Rollup 的虚拟机独立于以太坊自己的虚拟机(EVM)运行,但是由以太坊上的智能合约管理;这种联系可以让 Rollup 和以太坊之间进行通信。

  3. Rollup 负责执行事务并处理数据,以太坊负责接收并存储结果

  4. 不同于以太坊的区块是由多数节点认可来实现其合法性的,监控 Rollup 状态的一方可以将 “断言” 发送至以太坊,来说明交易是如何处理的;以太坊将决定是否接受这个断言,无论这个断言是否获得了 Rollup 上多数参与方的支持在 Rollup 上,实际只有一方负责处理交易和生成区块,这样的出块方式具有中心化的特性

ZkRollup

zkRollup就是基于零知识证明的二层扩容方案(layer2)zkRollup的原理一句话就可以讲清楚:链下进行复杂的计算和证明的生成,链上进行证明的校验并存储部分数据保证数据可用性。zkRollup数据可用性可以让任何人都能根据链上存储的交易数据,还原出账户的全局状态,从而消除由于数据可用性带来的安全风险。

工作原理

zkRollup在链下利用Merkle tree存储账户状态,由Operator收集用户的交易,交易收集完成后Operator会执行每个交易(校验余额,校验nonce,校验签名,执行状态转换),当交易执行完成后会产生一个新的Merkle tree Root,为了证明链下状态转移是正确的,Operator会在交易执行完成后生成一个零知识证明的proof

下图表示Operator工作过程,黄色的表示用户发送的交易,绿色的表示Operator中维护的merkle treeOperator执行交易后本地的merkle tree root会由prev state root转换成post state root,图中蓝色的表示Operator生成证明账户状态转移有效的零知识证明。

img

Operatorprev state rootpost state root,交易数据和proof证明提交至链上合约,合约校验proof通过后会将来新的状态写入到链上,合约不需要单独校验每笔交易的合法性,只需要校验proof是否有效,降低了链上gas消耗,其中交易数据是存储在较便宜的位置CALLDATA上。链下每一次的状态转变都需要提供零知识证明,由主链上的合约进行验证,只有验证通过才能更改状态。即每一次状态转变都严格依赖密码学证明。

zkRollup生成的证明大小(很小),验证时间(很快基本上是常数),不会随着交易数量的增长而变大,所以zkRollup可以极大地提高TPS。影响zkRollup链上性能的只有链上CALLDATA存储数据的成本,随着以太坊Istanbul升级,CALLDATA使用成本降为原来的1/4zkRollup的性能则获得4倍提升,TPS可达到近2000左右。

img

上链的数据中prve state rootpost state rootproof基本上是不会随着交易增长变化的,只有上图中黄色交易部分会随着交易增长变大,所以为了能在一个区块链中容纳更多的交易,需要对上链的交易进行压缩。zkRollup使用merkle tree来记录地址,这样地址就可以表示成merkle tree的索引值,地址数据的大小就从原本的20 bytes减少到3 bytes,在以太坊上金额用32个字节256位的大整型来表示,这里压缩到6个字节,货币最小单位从wei变成Mwei=10^6 wei,手续费压缩到1个字节,nonce压缩到2个字节,nonce的范围0~65535,也就是说一个账户最多可以发送65535笔交易,交易的签名直接删除了,不出现交易中,因为每笔交易的合法性在链下都通过零知识证明的电路约束校验过了。

(关于工作原理的简要介绍来自登链社区)

OptimisticRollup

发展历史

增强比特币可扩展性的最早举措之一是侧链。侧链是与父链共同运行的区块链,但具备不同的特点:出块时间更短、区块大小更大、智能合约的表达性更强等。然而,普通的侧链有个致命的缺点:如果一条侧链上的绝大多数矿工/验证者都是不诚实的,用户资金就会被盗。这些年来,有很多技术都在尝试增强侧链的安全性,来保证在绝大多数参与者不诚实的情况下,用户资金也不会被盗(这被称为信任最小化的双向锚定)。更早一点的例子有合并挖矿(merged mining)、影子链(shadow chain),之后又出现了 Plasma 和 ZK rollup。有趣的是,在 ORU 出现之前,一个类似的方案是分片机制下的延迟状态执行(我们很快会讲到这点!)。这些研究的集大成者就是我们如今所知的 Optimistic Rollup。2019 年 6 月,《最小可行合并共识》首次阐述了这一技术。从那时起,以太坊社区就开始大力支持 ORU,将其作为以太坊式智能合约执行的可扩展性方案。(该段落引自登链社区)

执行过程

Optimistic Rollup 可视化

  1. 聚合者将 rollup 上的交易收集起来,打包进 rollup 区块,并将该 rollup 区块连同保证金(我们很快就会解释为什么需要保证金)一起发送到以太坊(或另一条类似以太坊的区块链,上面运行着具有大量状态的智能合约)上的智能合约中。这个 rollup 区块不会被翻译或执行——智能合约只记录区块哈希,并追踪所有 rollup 区块的哈希。rollup 区块本身不存储在智能合约内,但是所有人都可以在以太坊的历史交易中找到它们。

  2. rollup 区块包含一个状态根,即,该 rollup 区块的状态树的根。如果该状态根是无效的,则任何人都可以在挑战期内使用欺诈证明来证明它是无效的。这可能是因为这个 rollup 区块中有一笔交易是无效的,或者因为状态根是无效的。如果一个 rollup 区块被证明是无效的,合约就会将 rollup 链回滚,这个无效区块后面的所有的 rollup 区块都会变成孤块。一旦欺诈证明成功,保证金中的一部分会支付给证明者,剩余部分则销毁。

  3. 如果直到挑战期结束都没有人提交欺诈证明,合约会敲定 rollup 区块,允许聚合者取回保证金。用户将款项从 rollup 链上取回到主链上时,需要在 rollup 链上发起取款请求,只有当合约敲定该 rollup 区块后,款项才能取回。

缺点

  1. 在默认情况下,由于与以太坊上的智能合约交互本身存在延迟,欺诈证明的挑战期会很长(长达数周),还会因此导致提款延迟。客户端执行可以大幅缩短挑战期。但是,我们只需要让流动性提供者通过原子交换来提供提款服务,并收取少量费用,就可以轻松解决延迟问题。实际上,这是一种新的 DeFi 元件:流动性提供者可以通过提供服务,利用其流动性来赚取收益。

  2. ORU 的吞吐量以以太坊的数据可得性吞吐量为上限。在这种情况下,我们可以将 ORU 视为伪分片。多个 ORU 可以在同一个数据可得性层上并行运行。幸运的是,数据可得性相比执行更容易扩展。LazyLedger 等项目经过专门优化,可以提供具备高度可扩展性的通用数据可得性层,让所有 rollup 项目都能充分发挥其潜力。

sidechain

sidechain借助主链数据,使用自己的EVM进行交易的处理,最后将其拥有的数据同步给主链。Sidechain使用的方案以安全性为代价换取速度。Sidechain里面的有趣的地方有“双重挖矿”和”双向锚定“,双向锚定结合一个代币交换项目来理解。在同专栏的另一篇文章中以Polygon跨链桥(MATIC网络)作为例子进行讲解。

Plasma

Plasma即子链方案,就是一条链的子链通过Plasma网络,将自己的重要消息通知到主链上。

Plasma之所以不能称为主流的扩容方案,在于Plasma的数据并没有提交到链上,所以在Plasma上退出一笔资产的周期会长达一周左右(争议期),如果在争议期间没有人提交欺诈证明,那么资产才可以安全退出到主链。(这里不做详细介绍,等我学习差不多之后再写一篇文章介绍)

channel

我对于channel的理解为“多笔交易化作一笔交易”,就是将主链上的资产转换为虚拟币,在所有交易完成后结算虚拟币并等比例换回主链资产。channel的典型案例是lighting network(闪电网络),我们下面就以其为例进行讲解。值得注意的是,channel没有自己的EVM,因此无法运行合约,只能用来处理交易。

闪电网络

通俗理解,闪电网络的支付方式可以理解为“欠条版比特币”,即用户将BTC存在一个多签钱包中,创建一个支付通道并进行互相的交易,如果用户想要回比特币,就可以将自己现有在这个网络中的资产换成BTC。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/48439.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

相机的内参与外参

目录 一、相机的内参二、相机的外参 一、相机的内参 如下图所示是相机的针孔模型示意图: 光心O所处平面是相机坐标系(O,P),像素平面所在坐标系为像素坐标系(O’,P’)。 焦距f:O到O’的距离 相机的内参表示的是相机坐标…

QT 信号槽机制

核心函数为 QMetaObject::Connection QObject::connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type Qt::AutoConnection) 参数为 1.信号发生对象 2.信号发生对象的信号 3.槽对象 4.槽对象的槽函…

嵌入式linux系统中压力测试的方法

在Linux环境下,确保系统各项资源充分且稳定地运行对任何系统管理员来说都至关重要。特别是在生产环境中,理解如何对系统资源进行基准测试和压力测试可以帮助预防未来的问题,同时也能够优化现有系统的性能。 在本文中,我们将探讨如何使用命令行工具来对Linux系统的CPU、内存…

C语言 ——— 函数指针的定义 函数指针的使用

目录 何为函数指针 打印 函数名的地址 及 &函数名的地址 函数指针的代码(如何正确存储函数地址) 函数指针的使用 何为函数指针 类比: 整型指针 - 指向整型数据的指针,整型指针存放的是整型数据的地址 字符指针 - 指向字…

SQLynx数据库管理工具

背景:业主对网络安全要求比较高,不提供VPN等远程工具,也不能开放3306端口到互联网。那怎么样运维数据库就是个难题?找到了SQLynx这个可以网页访问的数据库管理工具,给大家分享一下。 1.介绍 SQLynx原名SQL Studio&…

平面五杆机构运动学仿真matlab simulink

1、内容简介 略 89-可以交流、咨询、答疑 2、内容说明 略 ] 以 MATLAB 程序设计语言为平台 , 以平面可调五杆机构为主要研究对象 , 给定机构的尺寸参数 , 列出所 要分析机构的闭环矢量方程 , 使用 MATLAB 软件中 SIMULINK 仿真工具 , 在 SIMULINK 模型窗口下建立数…

深入浅出WebRTC—LossBasedBweV2

WebRTC 同时使用基于丢包的带宽估计算法和基于延迟的带宽估计算法那,能够实现更加全面和准确的带宽评估和控制。基于丢包的带宽估计算法主要依据网络中的丢包情况来动态调整带宽估计,以适应网络状况的变化。本文主要讲解最新 LossBasedBweV2 的实现。 1…

Docker Desktop安装

0 Preface/Foreward 1 安装 1.1 运行docker安装包 安装完Docker Desktop后,运行Docker Desktop,出现WSL 2安装不完整情况,具体情况如下: 解决方法:旧版 WSL 的手动安装步骤 | Microsoft Learn 也可以直接下载新的安…

2023发卡商城源码,最新自助下单彩虹云商城系统免授权无后门源码

# 彩虹自助下单系统 > PHP版本: > 7.0.1 ____ * 去除所有授权验证 * 支持自定义说说接口 * 去除后台广告与更新 * 可自定义易支付接口 ____ >安装教程: > 1、上传源代码到空间或服务器,并确保权限可读写。 > 2、上传完成后,使用浏览器…

VulnHub:cengbox1

靶机下载地址,下载完成后,用VirtualBox打开靶机并修改网络为桥接即可搭建成功。 信息收集 主机发现和端口扫描 扫描攻击机(192.168.31.218)同网段存活主机确认目标机ip,并对目标机进行全面扫描。 nmap 192.168.31.…

springboot 项目整合 AI (文心一言)

百度智能云网址:https://cloud.baidu.com/?fromconsole 注册——个人认证——登录成功 第一步:点击千帆大模型平台 ​ 第二步:点击应用接入——创建应用 ​ 第三步:点击接口文档——API列表——可以点击指定模型进行查看调…

H3CNE(路由基础、直连路由与静态路由)

目录 6.1 直连路由 6.2 静态路由理解性实验 6.2.1 配置直连路由 6.2.2 配置静态路由 6.3 路由表的参数与比较 6.3.1 优先级的比较 6.3.2 开销的比较 6.4 路由器中的等价路由、浮动路由、默认路由 6.4.1 等价路由 6.4.2 浮动路由 6.4.3 默认路由(缺省路由) 6.1 直连路…

Python爬虫:代理ip电商数据实战

引言:数据访问管理引发的烦恼 作为一名Python博主,爬虫技能对于获取和分析数据至关重要,经常爬一下,有益身心健康嘛。爬虫技术对很多人来说,不仅仅是一种工具,更像是一种艺术,帮助我们从互联网…

Pytorch学习笔记——在GPU上进行训练

文章目录 1. 环境准备2. 导入必要库3. 加载数据集4. 定义简单的神经网络模型5. 检查和设置GPU设备6. 定义损失函数和优化器7. 训练模型8. 全部代码展示及运行结果 1. 环境准备 首先,确保PyTorch已经安装,且CUDA(NVIDIA的并行计算平台和编程模…

用PyTorch从零开始编写DeepSeek-V2

DeepSeek-V2是一个强大的开源混合专家(MoE)语言模型,通过创新的Transformer架构实现了经济高效的训练和推理。该模型总共拥有2360亿参数,其中每个令牌激活21亿参数,支持最大128K令牌的上下文长度。 在开源模型中&…

vue3前端开发-小兔鲜项目-一些额外提醒的内容

vue3前端开发-小兔鲜项目-一些额外提醒的内容!今天这一篇文章,是提醒大家,如果你正在学习小兔鲜这个前端项目,有些地方需要提醒大家,额外注意的地方。 第一个:就是大家在进入二级页面后,有一个分…

深度学习-7-使用DCGAN生成动漫头像(实战)

参考什么是GAN生成对抗网络,使用DCGAN生成动漫头像 1 什么是生成对抗网络 生成对抗网络,英文是Generative Adversarial Networks,简称GAN。 GAN是一种无监督的深度学习模型,于2014年首次被提出。该算法通过竞争学习的方式生成新的、且与原始数据集相似的数据。 这些生成…

昇思25天学习打卡营第19天|生成式-DCGAN生成漫画头像

打卡 目录 打卡 GAN基础原理 DCGAN原理 案例说明 数据集操作 数据准备 数据处理和增强 部分训练数据的展示 构造网络 生成器 生成器代码 ​编辑 判别器 判别器代码 模型训练 训练代码 结果展示(3 epoch) 模型推理 GAN基础原理 原理介…

C#实战 | 天行健、上下而求索

本文介绍C#开发入门案例。 01、项目一:创建控制台应用“天行健,君子以自强不息” 项目说明: 奋斗是中华民族的底色,见山开山,遇水架桥,正是因为自强不息的奋斗,才有了辉煌灿烂的中华民族。今…

xmind--如何快速将Excel表中多列数据,复制到XMind分成多级主题

每次要将表格中的数据分成多级时,只能复制粘贴吗 快来试试这个简易的方法吧 这个是原始的表格,分成了4级 步骤: 1、我们可以先按照这个层级设置下空列(后买你会用到这个空列) 二级不用加、三级前面加一列、四级前面加…