Arbitrum Nitro 백서 속독: 어떻게 EVM과 더 호환되고 거래 비용을 낮출 수 있을까?
편집:Karen,Foresight News
Offchain Labs는 최신 발표된 Arbitrum Nitro 백서에서 Arbitrum Nitro를 2세대 Optimistic Rollup으로 간주하며, 이전 Rollup에 비해 Nitro는 더 높은 처리량, 더 빠른 최종 확정성 및 더 효율적인 분쟁 해결 방안을 제공할 수 있습니다.
Arbitrum Nitro 기술의 핵심은 새로운 증명기(prover)로, WASM 코드에서 Arbitrum의 대화형 사기 증명을 수행할 수 있습니다. 즉, L2 Arbitrum 엔진은 WASM에서 실행될 수 있으며, 항상 맞춤형으로 설계된 AVM(Arbitrum EVM) 아키텍처를 대체하고, 표준 언어와 도구를 사용하여 구축 및 컴파일할 수 있습니다.
Geth core를 Arbitrum에 직접 컴파일하는 것이 Nitro의 가장 멋진 부분이며, Geth는 실제로 이더리움 표준의 EVM 엔진을 정의합니다. 따라서 본질적으로 Nitro는 이더리움 위에서 Geth를 실행하며, WASM으로 컴파일된 Geth 핵심 엔진에 대한 사기를 증명할 수 있습니다.
Arbitrum은 이전에 Nitro가 최적화된 배치 및 데이터 압축 구성 요소를 가지고 있어 Arbitrum의 거래 비용을 더욱 낮출 수 있으며, 이더리움 L1 Gas 호환성 등을 가지고 있다고 밝혔습니다. 그 외에도 사기 증명, 정렬기, 토큰 브릿지도 Nitro의 구성 요소입니다. Nitro는 WASM 및 Geth와 같은 표준 기술 위에 구축되었기 때문에 EVM과 더 호환성이 높습니다. 백서에 따르면, 개선된 Nitro는 Arbitrum One에 비해 효율성이 더 높고 지연성이 더 낮으며 인센티브 호환성도 더 좋습니다.
Arbitrum이 이러한 속성을 구현하기 위한 설계 원칙은 다음과 같습니다:
- 거래 정렬과 결정적 실행을 분리합니다;
- 기존 이더리움 시뮬레이션 소프트웨어와 확장을 결합하고 크로스 체인 기능을 구현합니다;
- 실행과 증명을 각각 컴파일합니다;
- 대화형 사기 증명 기반의 Optimistic Rollup 프로토콜을 사용하여 거래 결과를 Layer1에 배치합니다.
1. 정렬 및 결정적 실행
Nitro는 제출된 거래를 두 단계로 처리하며, 정렬기(Sequencer)가 거래를 정렬하고 주문을 실시간 스트림 및 압축 데이터 배치로 Layer1 체인에 게시합니다. 이러한 거래는 결정적 상태 전환 함수에 따라 한 번에 하나의 정렬된 거래로 처리되며, 이 함수는 체인 상태를 업데이트하고 Layer2 블록을 생성합니다. 이러한 블록은 나중에 Layer1 체인에 정산됩니다.
구체적으로 정렬 측면에서, 정렬기는 신뢰할 수 있고 정직하게 들어오는 거래를 순서대로 정렬하며, 현재 두 가지 방법으로 거래 정렬을 게시합니다. 첫째, 정렬 거래의 실시간 스트림을 게시하여 정렬기가 특정 순서로 거래를 기록할 것이라는 약속을 나타냅니다. 둘째, Sequencer는 거래 배치를 수집한 후, 일반 알고리즘인 brotli를 사용하여 비용을 줄이기 위해 이를 압축하고 결과를 Nitro 체인의 Inbox 계약(이더리움 L1에서 실행됨)에 전달합니다. Sequencer에서 Inbox로의 거래가 이더리움에서 최종성을 가지면, Nitro 체인의 거래 순서는 최종적입니다.
현재 정렬기는 Offchain Labs가 운영하는 중앙 집중식 구성 요소이며, 향후 공정 분산 정렬 프로토콜을 사용하여 위원회 기반의 정렬기로 전환할 계획입니다.
결정적 실행 측면에서, 들어오는 거래를 정렬한 후 Nitro 체인은 체인의 상태 전환 함수(STF)를 사용하여 이를 처리하고 업데이트된 상태를 출력하며 Layer2 블록을 생성합니다.
2. 소프트웨어 아키텍처: Geth at the Core
Nitro에 Geth를 컴파일하는 것은 Nitro의 두 번째 핵심 설계 개념입니다. Geth는 이더리움 노드 소프트웨어인 go-ethereum을 의미합니다. Nitro의 핵심 실행 및 상태 유지 기능은 오픈 소스 go-ethereum(geth) 패키지 코드로 처리되어, 그 실행 및 상태가 이더리움과 높은 호환성을 유지하도록 보장합니다.
Nitro 노드를 구성하는 소프트웨어는 세 가지 주요 레이어에 내장되어 있다고 볼 수 있으며, 각각 기본 레이어------Geth core(이더리움 상태의 데이터 구조를 유지하고 EVM 계약 실행을 시뮬레이션), 중간 레이어(ArbOS) 및 최상위 레이어로 구성됩니다. 여기서 ArbOS는 Layer2 체인을 관리하는 데 필요한 기능을 구현하는 소프트웨어 레이어로, 회계 기능, Nitro와 Layer1 이더리움 간의 양방향 안전 크로스 체인 호출 지원 및 Layer2 전용 비용 추적 및 수집 기능을 포함합니다.
크로스 체인 상호작용 측면에서, Nitro의 크로스 체인 메시징 기능은 자산을 이더리움과 Nitro 체인 간에 효율적으로 이동할 수 있도록 하는 토큰 브릿지를 생성하는 데 사용할 수 있습니다. Offchain Labs 팀은 대체 가능한 토큰의 입금 또는 인출 기능을 제공하는 비공식 토큰 브릿지를 구현하고 발표했습니다. 또한 새로운 및 개선된 배치 및 압축 시스템은 L1 비용을 최소화할 수 있습니다.
최상위 레이어는 클라이언트의 연결 및 들어오는 RPC 요청을 처리하고 이더리움과 호환되는 블록체인 노드를 운영하는 데 필요한 기타 기능을 제공합니다.
3. 실행과 증명을 분리
Nitro는 실행과 증명에 동일한 소스 코드를 사용하지만, 이 두 가지 경우에 대해 서로 다른 목표로 컴파일합니다. Nitro 노드 소프트웨어를 실행할 때는 일반 Go 컴파일러를 사용하여 목표 아키텍처에 대한 원시 코드를 생성하며, 물론 서로 다른 노드 배포에 따라 다를 수 있습니다.
또한, 상태 전환 함수 부분의 코드는 Go 컴파일러에 의해 WebAssembly(WASM)로 컴파일되며, 이는 유형화된 이식 가능한 머신 코드 형식입니다. 그런 다음, WASM 코드는 간단한 변환 및 수정 과정을 거쳐 WAVM이라는 형식으로 변환됩니다.
백서에 따르면, WAVM은 세 가지 주요 측면에서 WASM과 다릅니다. 첫째, WASM의 일부 Go 컴파일러가 생성하지 않은 특성이 제거되었습니다. 둘째, WASM의 일부 기능이 제한되었으며, 부동 소수점 명령이 제거되고 중첩 제어 흐름이 포함되지 않습니다. 셋째, 블록체인 환경과의 상호작용을 위해 일부 연산 코드가 추가되었습니다.
상태 전환 함수의 올바른 결과에 대한 논란이 있는 경우, WAVM 코드의 대화형 사기 증명 프로토콜을 통해 해결됩니다.
4. 대화형 사기 증명을 갖춘 Optimistic Rollup
초기 Arbitrum 설계를 기반으로 Nitro는 개선된 Optimistic Rollup 프로토콜을 사용하며, 이 프로토콜은 최적화된 대화형 사기 증명 프로토콜을 사용합니다.
이 Rollup 프로토콜은 Nitro가 Layer2 체인 상태와 Layer1 이더리움의 관련 데이터를 확인하는 방법입니다. Layer2 사용자는 일반적으로 L1 확인을 기다리지 않고, 기록된 거래 시퀀스에서 거래 결과를 도출할 수 있도록 하는 결정적 상태 전환 함수에 의존합니다.
이 Rollup 프로토콜은 Rollup Blocks(RBlock) 체인을 생성하며, Layer2 블록과는 달리 하나의 Rollup Block은 일반적으로 여러 Layer2 블록을 포장(encapsulate)합니다. 따라서 RBlock의 수는 L2 블록보다 훨씬 적습니다. 처음에 하나의 RBlock은 특정 당사자가 RBlock의 데이터가 올바르다고 주장하는 것을 나타냅니다. 결국, 이러한 각 주장은 프로토콜에 의해 확인되거나 거부되어 RBlock 체인에서 삭제됩니다. 확인된 RBlock 집합은 제네시스 RBlock에서 시작하여 하나의 체인을 형성합니다.