Skip to content

Latest commit

 

History

History
244 lines (201 loc) · 20.3 KB

JacksonStack.md

File metadata and controls

244 lines (201 loc) · 20.3 KB
timezone
Asia/Shanghai

Kylin

  1. 自我介绍
    web3开发新手;从hackquest了解到Ethereum,Solana,Arbitrum的开发;对Layer2更感兴趣。
  2. 你认为你会完成本次残酷学习吗?
    Y

Notes

2024.12.10

What:
Arbitrum 是一套旨在扩展以太坊的技术方案,允许用户以更低的费用和更快的速度执行在以太坊上的操作,如使用 Web3 应用和部署智能合约。
Arbitrum 的旗舰产品是 Arbitrum Rollup,一个继承了以太坊安全性的 Optimistic Rollup 协议。

Why:
以太坊本身的交易处理能力有限,每秒只能处理大约 20-40 笔交易(TPS),导致用户在交易量高峰时需要竞争交易被打包的机会,从而推高了交易费用。

How:
Arbitrum Rollup 链作为以太坊的一个子模块运行,不要求以太坊节点处理每笔 Arbitrum 交易,而是采用“乐观假设”机制,即默认 Arbitrum 上的活动遵循规则,除非有人提出异议。在争议中,两个验证者通过一个交互式的游戏来缩小争议到一个单一的计算步骤,该步骤在 L1 上执行,以证明诚实方说的是真话。
Arbitrum Rollup 链的数据直接发布在以太坊上,确保了安全性和透明度。交易数据以压缩形式发布在 L1 上,进一步减少了交易的 L1 占用空间。
Arbitrum 强调与以太坊的兼容性,用户可以使用他们喜欢的以太坊钱包,开发者可以使用他们喜欢的以太坊库和工具来构建和部署合约。Arbitrum 使用 Geth 的分叉(Nitro)来实现这一点,使得 Arbitrum 中运行的大部分代码与以太坊相同。
Arbitrum 的最新技术堆栈 Stylus 保持了 Nitro 的以太坊兼容性,并增加了新功能,如使用 Rust、C++ 等编程语言编写高性能智能合约的能力。
对于不需要完全去中心化的应用程序,Arbitrum 提供了 AnyTrust 链,这种链在正常情况下将数据保存在链下,只有在争议发生时才会回到“rollup模式”,这样可以显著降低用户的费用。
Arbitrum 技术支持多条链并行运行,目前以太坊主网上有两条 Arbitrum 链:Arbitrum One(Rollup 链)和 Nova(AnyTrust 链),用户和开发者可以根据他们的安全和交易成本需求选择。

2024.12.11

Arbitrum 提供了多种 Layer 2 解决方案,以提高以太坊的可扩展性和降低交易成本:

Arbitrum One:

  • Optimistic Rollup:通过在链下执行交易并仅将交易数据发布到以太坊主链上,实现高吞吐量。
  • Nitro 升级:引入 WASM 和 Geth,优化交易批处理和压缩,提升性能和降低成本。

Arbitrum Nova:
AnyTrust 技术:依赖数据可用性委员会管理链下数据,减少信任需求,提高用户体验,省去了长时间的提币等待期。

Arbitrum Stylus:
新编程环境:支持使用 Rust、C++ 等语言开发智能合约,增强性能。

Arbitrum Orbit:
自定义专用链:允许创建具有自定义隐私、权限和费用代币的专用链。

2024.12.12

Rollup

Rollup是一种技术,用于提高以太坊网络的交易处理能力(TPS)和降低交易成本。它通过将多笔交易在链下(Layer 2)进行批量处理,然后将结果(压缩数据)发布回以太坊主链(Layer 1)。这样可以减少主链的负担,提高效率。

ZK Rollups

ZK Rollups(Zero Knowledge Rollups)是一种使用零知识证明技术的Rollup方案。它允许在Layer 2上进行交易验证,而无需将所有交易数据发布到主链。
零知识证明允许验证者在不透露交易细节的情况下验证交易的有效性。 ZK Rollups的特点包括:

  • Zero Knowledge:验证者无需看到交易所有数据。
  • Succinct:数据简洁。
  • Non-Interactive:无需知道验证者是谁。
  • Argument of Knowledge:证明交易的真实性与正确性。

ZK Rollups适合需要快速结算的业务,如支付和交易所,但算法复杂,对应用开发有一定门槛。

Optimistic Rollups

Optimistic Rollups是一种Rollup方案,它默认所有交易都是有效的,除非有人提出异议。如果有人发现欺诈行为,可以通过挑战机制来解决。
Optimistic Rollups的特点包括:

  • 乐观假设:默认所有交易都是有效的。
  • 挑战机制:如果发现问题,可以通过挑战来解决。

Optimistic Rollups适合开发Dapp和DeFi应用,但提币回Layer 1的速度较慢。

Arbitrum

Arbitrum是一种基于Optimistic Rollups的Layer 2协议,它通过多轮欺诈证明来增强安全性,并拥有自己的虚拟机,更加兼容以太坊网络。
Arbitrum与Optimism的主要区别在于它进行多轮欺诈证明,并且交易计算不依赖Layer 1。

2024.12.13

围绕 optimistic rollups,最主要的设计抉择是,如何解决争议。假设 Alice 断言 Rollup 会的运行会产生某个结果,而 Bob 不同意,那协议该如何定夺,选择谁提交的结果呢? 处理的方法基本可分两类:交互式证明,或者重执行交易。

交互式证明

交互式证明的思路是让 Alice 和 Bob 参与一个由 L1 合约引导的回合制协议,使用任何 L1 合约所需的最小开销来解决他们之间的分歧。
Arbitrum 的方法基于对争议的剖析。如果 Alice 的断言涉及了 N 个执行步骤,那就让她曝光出两个各涉及 N/2 个步骤的断言,然后让 Bob 选择一个来挑战。这样一来,争议的规模就缩小了一半。
这个过程持续进行,每一回合都将争议的规模缩小一半,直到争议的范围变成一个执行步骤。注意,直到此时为止,L1 引导合约都不必考虑实际上执行了什么。仅当争议被缩小到单个执行步骤时,L1 引导合约才需要理解这一步要执行什么指令,以及 Alice 对该步的断言是否为真,以此解决争议。
交互式证明背后的关键原理是,如果 Alice 和 Bob 有所争议,Alice 和 Bob 应尽可能做链下的工作来解决争议,而不是让 L1 合约承担负担。
重执行交易 让一个 Rollup 区块在区块内每一笔交易后附带一个状态哈希值断言。然后,在争议情形中,L1 引导合约将模拟一整笔交易的执行,看结果是否与 Alice 的断言一致。

优势

  • 效率更高 乐观情况下,一个区块只需要包含一个断言,空间占用小,节省成本。 悲观情况下,引导合约只需要执行一个步骤即可验证争议,速度快
  • 更高的交易级 gas limit 交互式证明的 gas limit 相较于 Ethereum 要大得多,重执行证明受限于 Ethereum 的 gas limit,可能没办法在一笔交易内模拟执行完
  • L2 上的合约大小没有限制 交互式证明不需要为 L2 合约在 Ethereum 上创建对应合约,所以不受限制;重执行模式的 gas limit 必须小于 Ethereum 合约的 gas limit(因为模拟执行的 gas limit 消耗更大)
  • 灵活性 举个例子,EVM 中新增指令,必要的功能无非是能在以太坊上验证一个单步执行的证据。而重执行模式就严格受限于 EVM

2024.12.14

ChallengeManager 在 Fraud Proofs 系统中扮演着仲裁挑战游戏的角色,其主要功能和流程如下:

  1. 区块挑战(Block challenge)

    • 挑战开始时,系统会对全局状态(包括区块哈希)进行二分查找(bisecting)。在对实际机器执行产生争议之前,争议会被缩小到单个区块。
    • 一旦挑战被缩小到单个区块,当前响应者可以调用 challengeExecution。这个过程类似于二分查找,响应者必须提供一个竞争性的全局状态和机器状态,但这些信息用于过渡到执行挑战阶段。
  2. 执行挑战(Execution challenge)

    • 一旦挑战被缩小到单个区块,实际的机器执行可以被二分查找。一旦执行被缩小到单个步骤,当前响应者可以调用 oneStepProveExecution
    • 响应者必须提供执行机器步骤的证明数据。如果执行该步骤的结果与之前断言的不同,当前响应者赢得挑战。
  3. 通用二分协议(General bisection protocol)

    • ChallengeLib 辅助库包含一个 hashChallengeState 方法,该方法对一系列段哈希、起始位置和总段长度进行哈希处理,生成 ChallengeLib.ChallengechallengeStateHash。这些信息足以推断出每个段哈希的位置。
    • 挑战的“度”(degree)指的是段哈希的数量减一。一个段与下一个段之间的距离(以步骤计)是 floor(segmentsLength / degree),对于最后一对段,segmentsLength % degree 被加到正常距离上,以确保总距离是 segmentsLength
    • 挑战开始时只有两个段(度为一),这是断言者的初始断言。然后,二分游戏在挑战者的回合开始。
    • 在游戏的每一轮中,当前响应者必须选择一对相邻的段来挑战。通过这样做,他们对对手的主张提出争议,即从第一个段开始执行指定的距离(步数)将得到第二个段。此时,双方同意第一个段的正确性,但对第二个段的正确性持不同意见。
    • 响应者必须提供一个二分查找,起始段等于第一个段,但结束段与第二个段不同。这样做,他们将挑战分解为更小的距离,并轮到对手。
  4. 赢得挑战(Winning the challenge)

    • 目前,赢得挑战并不是即时的。相反,它只是使当前响应者成为胜者的对手,并设置状态哈希为0。在那种状态下,该方没有任何有效的移动,因此最终会因超时而输掉。这样做是作为一种预防措施,以便如果挑战被错误地解决,还有时间诊断和修复错误,通过合同升级。

2024.12.16

Arbitrum One

  • 架构:结合 L1 和 L2,L1 组件是 EthBridge,负责仲裁和维护收件箱与发件箱。AVM(Arbitrum 虚拟机)作为 L1 和 L2 之间的网关,ArbOS 在 AVM 上运行,确保智能合约在 L2 上执行。
  • 存款与提款:通过 L1 的 EthBridge 合约和 L2 的 Custom Gateway 合约进行代币的存入和提取。
  • Rollup 类型:多轮交互型 Rollup,通过争议断言(DA)推进虚拟机状态,押注机制和交互式纠纷解决协议确保正确性。

Arbitrum Nitro

  • 技术升级:Nitro 是 One 的技术栈升级,包括证明程序、以 Geth 为核心、执行与证明分开、交互式欺诈证明的 Optimistic Rollup。
  • 无共识机制:Sequencer 公开操作,任何人都可以计算状态转移函数,降低成本。
  • Geth 重写:完全支持以太坊的数据结构、格式和虚拟机,提高兼容性。
  • 执行与证明分离:使用不同的代码实现执行和证明,提高效率。
  • 交互式欺诈证明:首创的证明系统,通过多轮交互确保安全性和正确性。

AnyTrust

  • 数据可用性委员会:引入委员会存储 calldata 数据,减少主网上的数据量。
  • 最小信任假设:至少需要两名诚实成员保证协议运行。
  • Nova:基于 AnyTrust 技术的新链,专为成本敏感的用例设计,提供两种数据发布方式。 Arbitrum L3 战略
  • Arbitrum Orbit:开发框架,允许创建和启动 L3 网络,定制链特性。
  • XAI:基于 Arbitrum Orbit 的首条 L3,专注于游戏和计算密集型 AI 模型。
  • BOLD:无需许可验证机制,最小化结算状态延迟。
  • Stylus:支持多语言构建应用程序的开源 SDK,降低 gas 成本,实现 EVM+ 兼容性。

2024.12.17

Arbitrum Nitro

排序 确定性执行
此图总结了 Nitro 中如何处理交易。 image

用户事务在Nitro链中的处理流程:

  • 创建和签名事务: 用户创建事务,并使用他们的钱包进行签名。 用户将签名后的事务发送给Nitro链的Sequencer。
  • Sequencer排序: Sequencer接收事务,并将其按顺序排列。 Sequencer的职责是将接收到的事务放入有序序列,并发布这个序列。
  • 状态转换函数: 排序后的事务逐一通过状态转换函数。 状态转换函数根据链的当前状态和下一个事务来更新状态。 状态转换函数会检测并丢弃任何无效的交易。
  • 确定性和结果: 状态转换函数是确定性的,意味着其行为仅取决于当前状态和下一个交易的内容。 任何知道交易序列的人都可以通过状态转换函数计算出相同的结果。
  • 节点操作: Nitro节点通过获取交易序列并在本地运行状态转换函数来操作。 这个过程不需要共识机制。
  • Sequencer发布序列: Sequencer通过两种方式发布序列:实时馈送和在L1以太坊上发布的批次。 实时馈送允许订阅者即时接收每个事务的通知。 这种即时通知提供了交易的“软确定性”,因为它依赖于Sequencer保持其承诺。
  • 硬性终局: Sequencer定期将交易批次压缩并发布到L1以太坊链上。 一旦这些以太坊交易在以太坊上具有最终确定性,记录的Layer 2 Nitro交易也将具有最终确定性。 这种最终确定性是“硬性终局”,因为交易的位置和结果是确定性的,任何一方都可以知道。
  • 数据压缩: Sequencer使用名为“brotli”的通用数据压缩算法在最高压缩设置下压缩其批次。

2024.12.18

核心的Geth image

Nitro 节点软件的结构可以被理解为由三个主要层组成:

  • 基础层(Geth核心) 这一层是 Geth 的核心部分,负责模拟 EVM 合约的执行和维护以太坊状态的数据结构。Nitro 将这部分代码编译为库,并进行了一些必要的小修改以添加钩子。

  • 中间层(ArbOS):这一层是自定义软件,提供了与 Layer 2 功能相关的额外功能,包括解压和解析 Sequencer 的数据批次、核算 Layer 1 的 gas 成本和收集费用以补偿这些成本,以及支持跨链桥功能,比如从 L1 存入以太币和代币以及将它们提回 L1。

  • 顶层:主要由节点软件组成,主要来源于 Geth。这一层处理来自客户端的连接和传入的 RPC 请求,并提供运行与以太坊兼容的区块链节点所需的其他顶级功能。

由于顶层和底层严重依赖于 Geth 的代码,这种结构被称为 "geth sandwich"(Geth 三明治),其中 Geth 扮演面包的角色,而 ArbOS 是馅料。

State Transition Function(STF)由底层的 Geth 层和中间层的 ArbOS 层的一部分组成。STF 是源代码中的一个指定函数,隐式包含了该函数调用的所有代码。
STF 以收件箱中收到的交易字节作为输入,并可以访问以太坊状态树的可修改副本。
执行 STF 可能会修改状态,并在最后发出新区块的标头(以以太坊的区块标头格式),该区块将被附加到 Nitro 链中。

2024.12.19

执行与证明分开 Nitro 通过将执行与证明分开来解决实际 rollup 系统中的挑战:

  1. 执行与证明使用相同源代码:Nitro 对于执行和证明使用相同的源代码,但将它们编译成不同的目标格式,以适应不同的需求。

  2. 编译执行代码:在编译 Nitro 节点软件以供执行时,使用普通的 Go 编译器生成目标架构的原生代码,这会因不同的节点部署而异。

  3. 编译证明代码:对于证明部分,状态转换函数(State Transition Function, STF)的代码由 Go 编译器编译成 WebAssembly (WASM),这是一种类型化、可移植的机器代码格式。然后,WASM 代码经过转换,形成 Nitro 所使用的 WAVM 格式。

  4. WAVM 的特点

    • 去除未使用特性:WAVM 移除了 WASM 中一些 Go 编译器不生成的特性,确保这些特性不会出现在转换阶段。
    • 限制特定功能:WAVM 不包含浮点指令,将浮点指令替换为对 Berkeley SoftFloat 库的调用,以减少架构间浮点不兼容性的风险。WAVM 也去除了嵌套控制流,将控制流指令转换为跳转。此外,WAVM 避免了执行时间可变的 WASM 指令,通过转换为使用固定成本指令的结构来实现。
    • 添加操作码:WAVM 添加了一些操作码以实现与区块链环境的交互,例如读取和写入链的全局状态,从链的收件箱中获取下一条消息,或发出成功结束执行 STF 的信号。
  5. ReadPreImage 指令和 Hash Oracle 技巧

    • ReadPreImage 指令:这是一个新指令,它接受一个哈希 H 和一个偏移量 I 作为输入,并返回 H 原像中偏移量 I 处的数据字节。这个指令只能在原像公开已知且大小小于固定上限(约 110 KB)的上下文中使用,以确保安全。
    • Hash Oracle 技巧:这种技巧涉及存储数据结构的 Merkle 哈希,并依赖协议参与者存储完整的结构,从而支持通过哈希获取内容,这可以追溯到最初的 Arbitrum 设计。

Nova image Nitro 是 One 的技术栈升级,并不是独立于 One 的网络,Nitro 升级后全称还是 Arbitrum One;而22年8月初上线的 Nova 是独立于 One 的网络。
One/Nitro 跟 Nova 的区别:最核心的不同点是数据可用性,One 的数据可用性在链上(以太坊主网),Nova 的数据可用性在链下(数据可用性委员会 DAC)。
Rollup 的本质是执行层的分离,把复杂运算转移到链下执行。 One 将完整的数据集以 Calldata 的形式发布到以太坊主网,由于 Calldata 占用了一定的主网区块空间,此操作支付的 gas 费是 One 成本最大的组成部分。 Nova 提供了 2 种数据发布方式,一种是像 Nitro 一样以 Calldata 的形式发布完整数据,另一种是发布 DACert 证明数据的可用性。
Nova 的定序器将完整的数据集同时发送给所有 DAC 的委员会成员,委员会签名后把带有签名的证明返回给定序器,定序器收集到足够多的证明就能将它们聚合并创建有效的数据可用性证明(DACert),然后把 DACert 发布到主网。
如果定序器没有收集到足够多的证明,Nova 会回退到 Rollup 模式(以 Calldata 形式发布数据到主网)。
最简单的理解就是:One 把链下执行数据储存在以太坊主网,Nova 把数据存储在链下的数据可用性委员会。
相对于 One 而言,Nova 通过牺牲一定的安全性来提高性能,游戏社交类等需要高频交互的 Dapp 适合部署在 Nova 上。

2024.12.20

Your Chain, Your Rules
核心理念:“Your Chain, Your Rules”:强调用户和开发者对区块链的控制权和自我治理能力。
技术路线图:

  • DevEx, UX, and Adoption
    • Stylus:允许使用 WASM 语言(如 Rust、C 和 C++)开发,超越了以太坊上构建的限制,支持 EVM 并降低 Gas 费用。
    • Arbitrum 纪念日更新:预计在 Arbitrum 纪念日发布重大更新,包括 Arbitrum Stylus 在 Arbitrum One 和 Nova 主网上的上线。
  • 去中心化:
    • BoLD(2024年下半年):提高安全性和去中心化验证,使 Arbitrum 更接近 Stage 2 rollup。
    • 审查超时(2024年下半年):限制反复审查或排序器离线对 Arbitrum 链的负面影响。
    • 去中心化排序器(预计2025年):将交易排序的责任分配给更广泛的去中心化网络参与者。
  • 互操作性与可扩展性:
    • Arbitrum Orbit:允许开发者自定义他们的链,以适应特定用例。
    • 快速提现(2024年第三季度):使 AnyTrust 链能够绕过确认延迟,实现快速结算。
    • 链集群(2025年):通过允许多个 Orbit 链紧密对齐,减少跨链通信时间。
  • 性能与效率:
    • 多客户端支持(2025年上半年):优化区块生产速度,降低硬件成本,提高吞吐量。
    • 自适应定价(2025年上半年):动态设置 Gas 限制,提高资源利用效率。
  • 零知识证明:
    • ZK+Optimistic 混合证明:探索将 ZK 证明集成到 Arbitrum 链中,提供即时确认声明的可选快速路径。
  • 未来展望:Offchain Labs 致力于在问题出现之前创造解决方案,推动区块链技术的边界。