web3实战课02:认识L2,链接 L2,感受 L2

标题里的“L2”的正式称谓叫 Layer2,又被称为 “二层扩容”方案。是目前几乎所有区块链主流生态都在重点部署的方向。

📖阅读本文,你将

  1. 获取一个 demo 仓库。
  2. 比较粗浅草率地理解几种主流 Layer2 方案。
  3. 认识 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 OneOp Mainnet

  • 零知识卷叠 Zero-knowledge rollups

    零知识卷叠是乐观卷叠的升级版,它不需要在主链上发布任何证明,它通过更为复杂的工程手段和数学手段,将交易打包成零知识证明,然后发布到主链上。

    零知识卷叠的交易,在主链上发布后,立即生效。

    目前以太坊资金池最大的零知识卷叠方案是 Starknet,很眼熟是不是,前段时间给大量 github 排名靠前的用户发巨额空投的,就是 Starknet

参考文档:
《以太坊 乐观卷叠》
《以太坊 零知识卷叠》

卷叠是目前以太坊最重要的 Layer2 方案,而 乐观卷叠 则是王者中的王者。

以下,是 2024-03-30 的以太坊 Layer2 方案中资金排名前10者:

web3实战课02:认识L2,链接 L2,感受 L2

可以看到,除了乐观卷叠,就是零知识卷叠。

其他方案?完全不够这俩方案打的。

为什么?

很简单,因为卷叠本身是以主链作来实现结算和数据可用性,这是他们最大的优势。

3、二币二哥: 验证所 Validiums

Validiums 几乎可以视为是 零知识卷叠的变种

但它和零知识卷叠的区别在于:

  • 零知识卷叠的数据可用性校验来自于主链,完成零知识打包后,通过零知识证明来验证交易是否合法。
  • Validiums 的数据可用性校验,则并不来自于主链,而是通过 主链上的智能合约 来完成。

虽然最后结算时,交易结果还是需要主链来结算,但 Validiums 方案的数据可用性校验,则完全不需要主链参与。

这意味着它提交了更少的细节,也减少了主链的负担,需要支付的交易费用也更低。

但缺点是:它在安全性上需要面对更多风险。

虽然前10名没有它的影子,但 10 - 20 范围内它却是常客:

web3实战课02:认识L2,链接 L2,感受 L2

目前在以太坊上,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 组件,就可以实现链的选择。

像这样 ↓
web3实战课02:认识L2,链接 L2,感受 L2

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 在区块产生速度、交易费用方面的差异。
【主链】:
web3实战课02:认识L2,链接 L2,感受 L2
【零知识卷叠的头部链】:
web3实战课02:认识L2,链接 L2,感受 L2
【乐观卷叠的头部链】:
web3实战课02:认识L2,链接 L2,感受 L2
【验证所的头部链】:
web3实战课02:认识L2,链接 L2,感受 L2

7、总结

Layer2 方案,是区块链技术发展到今天,最核心的升级方向。

目前,Layer2 方案中,卷叠 是王者,而 验证所 则是它的升级版。

阅读完本文,你可能无法了解太多细节,但至少看到一些奇奇怪怪的 Layer2 时,能有一个大体的了解,知道他们是什么,要解决什么问题。

demo 仓库:github.com/zhangshichu…

demo 在线访问地址:wagmi-demos.vercel.app/02-reading-…

关于我

我是春哥,一个前端工程师。
目前正在学习 web3 领域。
如果你有任何问题,欢迎留言。

原文链接:https://juejin.cn/post/7352079419132100649 作者:摸鱼的春哥

(0)
上一篇 2024年4月1日 上午10:36
下一篇 2024年4月1日 上午10:47

相关推荐

发表回复

登录后才能评论