stalim17

Posted on May 23, 2023Read on Mirror.xyz

The Road to Sub-dollar Transactions, Part 2: Compression Edition [KOR]

이 게시물은 1달러 미만의 ORU 거래로 가는 길에 대한 시리즈의 두 번째 게시물입니다. 전체 컨텍스트를 보려면 첫 번째 를 확인하십시오 !

낙관적 롤업은 빠르게 성숙해지고 있습니다. "0에서 1" 단계를 넘어갈 때 게임의 이름은 최적화이며 가장 가시적인 최적화는 비용입니다. 다음 달에는 모든 프로덕션 ORU 네트워크에 최초의 시스템 전체 통화 데이터 압축을 배포하여 수수료를 30–40% 줄일 것입니다. 준비해.

더 멀리 내다보면 Optimism: Bedrock의 일환으로 이번 여름에 훨씬 더 많은 비용을 절감할 계획이 있습니다. 이 게시물은 호출 데이터 압축의 핵심에 대해 자세히 설명합니다. 특히 압축 알고리즘을 평가한 방법과 압축 알고리즘을 사용하여 비용을 1달러 미만으로 낮추는 방법에 대해 설명합니다.

호출 데이터 개요

Optimism은 Ethereum을 데이터 가용성 계층으로 사용합니다. 즉, Optimism에서 실행되는 각 트랜잭션은 Ethereum에 저장됩니다(실행되지는 않음). 바로 지금 우리는 calldata에 Optimism 트랜잭션을 저장합니다. 여러 L2 트랜잭션이 이진 blob으로 일괄 처리되고 blob(및 기타 정보)은 트랜잭션의 데이터 필드에 저장됩니다. 나중에 해당 데이터를 검색하기 위해 트랜잭션 본문(블록 자체에 저장됨)을 살펴봅니다. 이더리움 블록이 저장되기 때문에 Optimism 체인은 항상 이더리움에서 재구성될 수 있습니다.

블록에 데이터를 저장하는 것이 계약 상태에 저장하는 것보다 훨씬 저렴하지만, 과거 블록을 영원히 유지하는 것은 노드 운영자에게 비용을 발생시킵니다. 따라서 Ethereum은 calldata에 요금을 부과합니다. 0바이트당 4가스, 0이 아닌 바이트의 calldata당 16가스 비용이 듭니다(0은 Optimism에 제출된 트랜잭션에서 바이트의 약 40%를 나타냄).

호출 데이터 게시는 롤업 비용 절감의 큰 부분을 차지하지만 여전히 사용자에게 전달되는 기본 비용을 나타냅니다. 따라서 게시된 데이터의 양을 줄일수록 롤업을 더 저렴하게 만들 수 있습니다. 압축 입력: 데이터 크기를 줄이는 기술! 다음은 실제 데이터에서 실행되는 압축 통계에 대한 심층 분석입니다.

압축 개요 및 결과

우리는 옵티미즘이 이더리움에 제출한 22,000개의 배치(거의 3백만 개별 거래)를 살펴보고 다양한 구성으로 압축하여 압축을 가장 잘 구현하고 가능한 것을 실험하는 방법을 결정했습니다.

또한 다양한 압축 알고리즘을 살펴보고 압축률(압축되지 않은 크기의 백분율로 압축된 데이터 크기)과 예상 비용 절감(트랜잭션의 바이트 중 40%가 0바이트라고 가정)을 모두 측정했습니다. ).

이해해야 할 중요한 구성 옵션 중 하나는 사전의 존재입니다. 실제 데이터에서 일반적으로 사용되는 알고리즘 데이터 조각을 표시하기 위해 미리 사전이 생성됩니다. 압축 알고리즘은 사전을 사용하여 특히 소량의 데이터를 한 번에 압축할 때 데이터를 더 잘 압축합니다. 트랜잭션의 무작위 샘플을 취함으로써 개별 트랜잭션 및 배치를 압축할 때 압축률을 향상시키는 zlib 및 zstd용 사전을 생성할 수 있습니다.

이더리움 트랜잭션의 대부분의 필드는 임의적이므로(주소 및 함수 선택자는 해시이며 서명은 임의적이어야 함) 단일 이더리움 트랜잭션은 잘 압축되지 않습니다. 이더리움은 또한 압축 알고리즘이 빠르게 제거하는 0바이트를 크게 할인하기 때문에 비용 절감은 압축률만큼 크지 않습니다. 따라서 최고의 수수료 절감 효과를 얻으려면 가능한 한 많은 데이터에 대해 고급 알고리즘을 실행해야 합니다.

트랜잭션 자체를 압축한 결과는 다음과 같습니다.

보시다시피 개별 트랜잭션을 자체적으로 압축하면 10–15%만 절약할 수 있습니다. 트랜잭션 크기는 이보다 더 많이 줄어들지만 절감액은 적습니다. 이는 위에서 설명한 0바이트가 더 저렴하기 때문입니다.

사전이 있는 Zstandard는 각 트랜잭션과 사전에 저장된 항목 사이에 공통점이 있기 때문에 훨씬 더 성능이 좋습니다. 그러나 zstd는 한 번에 더 많은 양의 데이터를 압축할 때 더 나은 성능을 발휘합니다.

다른 극단은 모든 단일 예제 트랜잭션을 한 번에 압축하는 것입니다. 이것은 실제로는 불가능 하지만 가능한 최대 압축 비율의 예입니다.

따라서 이 예에서는 압축으로 인해 10%에서 50% 사이의 비용 절감을 살펴봅니다. 그러나 실제로 실제로 무엇을 달성할 수 있습니까?

트랜잭션 배치(수백 개의 트랜잭션)를 압축할 때 압축률은 개별 트랜잭션을 압축하는 것보다 훨씬 낫지만 모든 트랜잭션을 한 번에 압축하는 것보다 약간 나쁩니다. 이는 사용자가 다른 계약보다 훨씬 더 많은 계약과 상호 작용하는 경향이 있기 때문입니다. 또한 특정 필드(예: 체인 ID 및 가스 가격)는 트랜잭션 간에 유사한 경향이 있습니다. 압축 알고리즘은 이러한 유사성에 의존하여 작업을 수행합니다.

서로 다른 압축 알고리즘을 비교할 때 가장 많이 압축하는 알고리즘으로 zlib, zstd 및 brotli를 식별했습니다. Brotli는 유사한 압축 비율에서 zstd 또는 zlib보다 훨씬 느리기 때문에 배제했습니다. 일반적으로 알고리즘(또는 알고리즘에 대한 설정)의 압축률이 높을수록 압축 알고리즘 실행 속도가 느려집니다. ZSTD는 일반적인 벤치마크에서 광범위한 압축 속도/비율 옵션에 대해 다른 압축 알고리즘보다 더 나은 성능을 보이는 경향이 있습니다. 또한 이더리움 트랜잭션은 벤치마크의 데이터와 특성이 다릅니다.

Zlib와 zstd는 상당히 유사하며, zlib 압축(사전 없이)은 단기적으로 출시할 예정입니다. 결과가 매우 좋고 속도가 빠르고 다양한 프로그래밍 언어에서 사용할 수 있기 때문입니다. 장기적으로 우리는 zstd에 의존하여 가능한 최고의 압축 비율과 가능한 최저 사용자 수수료를 달성할 것으로 기대합니다.

결론

요약: 역사적인 추세가 계속된다면 위에서 설명한 압축을 도입하여 수수료를 30-40%까지 줄일 수 있습니다.

Zlib 일괄 압축이 Optimism에 곧 제공됩니다.

  • 코반 3월 17일

  • 3월 24일 메인넷

Zstd 기반 압축(사전 포함)은 Optimism: Bedrock의 로드맵에 있으며 올해 말 출시 예정입니다.

압축을 통해 사용자 요금을 줄이는 것 외에도 Optimism은 EIP-4844 및 추가 비용 절감을 위한 유사한 접근 방식을 통해 데이터 가용성 계층 역할을 하는 이더리움의 기능을 개선하려고 합니다.

지금은 그게 다야! 1달러 미만 거래로 가는 또 다른 단계에 대한 다음 게시물을 기대해 주세요! 아, 언제나처럼 이더리움의 확장 가능하고 지속 가능한 미래를 구축하는 데 전념하는 유능한 옵티미스트 그룹에 합류하는 데 관심이 있다면 여러분의 의견을 듣고 싶습니다! 구인 게시판 에서 모든 채용 공고를 확인하십시오 .

부록: 알고리즘 요약

ZLE는 0바이트 실행 길이 인코딩을 나타냅니다. 0 문자열을 0이 몇 개 있어야 하는지로 대체하는 간단한 압축 알고리즘입니다.