标题里的“L2”的正式称谓叫
Layer2
,又被称为 “二层扩容”方案。是目前几乎所有区块链主流生态都在重点部署的方向。
📖阅读本文,你将
- 获取一个
demo
仓库。 - 比较粗浅草率地理解几种主流
Layer2
方案。 - 认识
wagmi
里常用的获取链基本信息的方式。
1、主流链几乎都在选择 Layer2
?
1.1 安全去中心化的代价
几乎所有区块链要面临三个核心问题:
- 如何保证区块链的安全性
- 如何保证区块链的去中心化
- 如何保证区块链的高吞吐量和低延迟
(可能还要加上第四点:交易的低燃料费)
而这三个核心问题,却又是彼此牵制和制约的。
在 比特币 的世界里,人们要发现新的区块,就必须等待全世界海量的显卡算出下一个合法区块,这样账本上的交易才能被确认和记录,这虽然保证了它的去中心化和安全性,但消耗大量的算力和能源,更会导致整个比特币的吞吐量非常低,而且延迟也非常高。
而 以太坊 虽然通过 POW
质押的共识机制,保证了去中心化和安全性,提升了区块链的吞吐量和延迟,但其 EVM
虚拟机中动态 GAS
消耗,使得新交易写入区块的燃料费非常高昂,而且性能也并不能满足日益变多的交易现状。
为了在满足 安全 和 去中心化 的基础上,提升吞吐、降低耗费,Layer2
方案应运而生。
它是当前环境下,提速的最佳选择。
1.2 Layer2
方案
众所周知,区块链是一个巨大的分布式账本,为了保证安全性和去中心化,每个新区块的产生都有着严格的规则。
Layer2
是如何在不破坏现有规则的情况下,实现提速和降费的呢?
目前主要分这三个大的方向:
- 卷叠
Rollups
- 验证所
Validiums
- 状态通道
State Channels
- 侧链
Sidechain
下面,我们来一一认识它们。
2、 二币一哥:打包交易的 Rollups
卷叠
Rollups
是一种打包交易的方案,它可以将多个小笔交易打包成一个大笔交易,然后提交到区块链上。
举个简单的例子:
你需要往家里邮寄一封信,但邮递员效率不高,而且每次只能携带10封信,每封信收10块钱。所以你需要排队,并且花费10块钱巨款。
此时,有个擅长打包的大哥发现了你的问题,他开了一个网点,按每人1块钱一封的价格收集信件,然后塞到一个大包裹里,再扔给之前的邮递员。
邮递员也不傻,说你这包裹变大了,得收20。ok,没问题,但这包裹里塞了40封信,划算到每个人头上现在只需要
0.5
元了。
邮递员当然就是区块链主链,比如以太坊或比特币。
而擅长打包的大哥,就是 Rollups
方案。
目前市面上流行的 Rollups
方案,主要有两个:
-
乐观卷叠
Optimistic rollups
乐观卷叠先假设所有人都很诚实,然后验证是否有人撒谎,发现有人撒谎了,就回滚到上一个状态。并且惩罚撒谎者。
因此,乐观卷叠发布到主链后,不会立刻生效,会产生一个【举证期】,允许用户在【举证期】内,提交证据证明该次交易有【欺诈行为】。一旦证实,交易会回滚到上一个状态。
所以,乐观卷叠的交易不是立即生效的。
目前以太坊资金池最大的乐观卷叠方案是
Arbitrum One
和Op Mainnet
。 -
零知识卷叠
Zero-knowledge rollups
零知识卷叠是乐观卷叠的升级版,它不需要在主链上发布任何证明,它通过更为复杂的工程手段和数学手段,将交易打包成零知识证明,然后发布到主链上。
零知识卷叠的交易,在主链上发布后,立即生效。
目前以太坊资金池最大的零知识卷叠方案是
Starknet
,很眼熟是不是,前段时间给大量github
排名靠前的用户发巨额空投的,就是Starknet
。
卷叠是目前以太坊最重要的 Layer2
方案,而 乐观卷叠 则是王者中的王者。
以下,是 2024-03-30
的以太坊 Layer2
方案中资金排名前10者:
可以看到,除了乐观卷叠,就是零知识卷叠。
其他方案?完全不够这俩方案打的。
为什么?
很简单,因为卷叠本身是以主链作来实现结算和数据可用性,这是他们最大的优势。
3、二币二哥: 验证所 Validiums
Validiums
几乎可以视为是 零知识卷叠的变种。
但它和零知识卷叠的区别在于:
- 零知识卷叠的数据可用性校验来自于主链,完成零知识打包后,通过零知识证明来验证交易是否合法。
- 而
Validiums
的数据可用性校验,则并不来自于主链,而是通过 主链上的智能合约 来完成。
虽然最后结算时,交易结果还是需要主链来结算,但 Validiums
方案的数据可用性校验,则完全不需要主链参与。
这意味着它提交了更少的细节,也减少了主链的负担,需要支付的交易费用也更低。
但缺点是:它在安全性上需要面对更多风险。
虽然前10名没有它的影子,但 10 - 20
范围内它却是常客:
目前在以太坊上,Validiums
方案中,最受关注的,就是 ImmutableX
,它是一款专注于游戏资产去中心化的产品。
4、状态通道 State Channels
状态通道 State Channels
是一种闪电网络,它允许两个用户之间直接进行支付,而无需第三方中介。
举个例子:
你和N名陌生人进行一场德州扑克游戏,每一节胜负,你们都需要互相进行筹码支付。
如果这种场景下,你们走主链交易,那么你们需要花费 N
笔交易费用,并且受限于主链的吞吐量和延迟,体验极差。
此时,主链给你们一人一个临时账本,每当支付产生,你们把每笔交易记录在临时账本上,
当每个临时账本的拥有者都认可游戏结束时,主链再一次性打包交易,把所有交易计算后进行资金分配,并记录在主链上。
这样一来,实际的主链交易只有 1
笔,并且主链的吞吐量和延迟也得到了提升。
当然,这样也引入了一些安全问题,比如:
- 如何解决交易里的争议
- 如何保证所有参与者一直在线
等等,就不在本文讨论范围内(过于细节)。
5、侧链 Sidechain
侧链 是指与主链隔离的另一条链,通常它的共识算法和区块参数与主链不同(比主链更高效),但必须满足一个条件:能够通过链桥和主链之间进行资产转移。
那么问题来了,在已经有主链的情况下,还需要这样一条和其完全独立的 侧链 呢?
答案是,相比于主链,侧链往往在 共识机制 或 区块参数 上更加大胆,通过舍弃一定的安全性,来换取更高的效率和吞吐量。
而 链桥 的存在,让侧链实际具备了帮主链分担负载的能力。
6、【实战】链接与对比
照例,所有代码可以参考这个 demo
项目:github.com/zhangshichu…
demo
在线访问地址:wagmi-demos.vercel.app/02-reading-…
6.1 接入相关链
我们在主流方案中各挑选一个有代表性的链进行接入。
在 @/configs/wallet.ts
里写如下代码:
import {
mainnet, // 以太坊主网
arbitrum, // Arbitrum
optimism, // OP Mainnet
immutableZkEvm // immutableX
} from 'wagmi/chains'
// 配置链接入
export const config = createConfig({
chains: [mainnet, optimism, arbitrum, immutableZkEvm],
transports: {
[mainnet.id]: http(),
[optimism.id]: http(),
[arbitrum.id]: http(),
[immutableZkEvm.id]: http(),
},
// ... 无关代码
})
只需要进行如上配置之后,就可以通过 useChains
获取到对应的链对象。
import { useChains } from "wagmi"
// 四条链都在这里了
const chains = useChains()
再配合一个 Antd Select
组件,就可以实现链的选择。
像这样 ↓
6.2 获取具体链的信息
wagmi
的核心是 viem
,而 viem
在客户端的支持上,主要提供了这两类端的能力:
- 公共端:
public-client
- 钱包端:
wallet-client
我们今天要使用的其实和钱包关系不大,主要是 public-client
相关以下两个能力:
useBlockNumber
: 获取当前链的区块高度(也就是产生了多少个区块了)useEstimateFeesPerGas
:获取预估的每次Gas
行为产生的费用。这个解释起来很费劲,后面开单章解释,但可以简单理解它和链上交易的费用正相关。
import { useBlockNumber, useEstimateFeesPerGas } from 'wagmi';
// 获取当前链的区块高度(也就是产生了多少个区块了)
const { data: blockNumber, isLoading: isBlockNumberLoading} = useBlockNumber({ chainId: chain.id, watch: true })
// 获取预估的每次 Gas 行为产生的费用。这个解释起来很费劲,后面开单章解释,但可以简单理解它和交易费用正相关。
const { data: gasPriceInfo, isLoading: isGasPriceLoading } = useEstimateFeesPerGas({ chainId: chain.id })
打开 demo
,直观地感受一下 主链 和各 Layer2
在区块产生速度、交易费用方面的差异。
【主链】:
【零知识卷叠的头部链】:
【乐观卷叠的头部链】:
【验证所的头部链】:
7、总结
Layer2
方案,是区块链技术发展到今天,最核心的升级方向。
目前,Layer2
方案中,卷叠 是王者,而 验证所 则是它的升级版。
阅读完本文,你可能无法了解太多细节,但至少看到一些奇奇怪怪的 Layer2
时,能有一个大体的了解,知道他们是什么,要解决什么问题。
demo
仓库:github.com/zhangshichu…
demo
在线访问地址:wagmi-demos.vercel.app/02-reading-…
关于我
我是春哥,一个前端工程师。
目前正在学习 web3
领域。
如果你有任何问题,欢迎留言。
原文链接:https://juejin.cn/post/7352079419132100649 作者:摸鱼的春哥