이 기사에서는 LXDAO의 저자 0xSamo가 스타크넷 체인의 핵심 구성 요소, 낙관적/zk 롤업 수수료 구조, EIP-4844의 블롭 메커니즘, 이더스캔의 유연한 사용을 통한 샤프 시스템의 요율에 대해 살펴봅니다. 실제 이유는 재무부가 <강력한> 스타크넷의 코인 발행 후 다른 수입원이 있기 때문에 수입을 창출하기 위해 수수료에 의존할 필요가 없기 때문에 L2 가스를 대폭 줄였기 때문입니다. 가격 벤치마크입니다.
서문
EIP-4844는 더 머지 이후 이더의 가장 큰 업그레이드로 많은 관심을 끌었습니다. 이 업그레이드를 통해 도입된 블롭 임시 저장 공간은 이더 열차에 사이드 캐리지를 추가하는 것과 같으며, 열차의 원래 운행 상태에 영향을 주지 않으면서 더 저렴한 DA 공간을 제공합니다.
옵티미즘, 스타크넷, 아비트럼 및 기타 레이어2 프로젝트는 모두 단기간에 EIP-4844를 지원하여 상당한 수수료 인하를 달성했으며, 다음 거래에서 볼 수 있듯이 LXDAO 재무부에서 기여자의 급여를 위해 생성한 옵티미즘에 대한 다음 거래에서 볼 수 있습니다. EIP-4844 이전과 이후의 가스 수수료는 놀랍게도 100배 차이가 났습니다.
그러나 놀랍게도, 우리는 < strong>ZK 롤업의 대표주자인 스타크넷은 실제로 1달러를 넘나들던 가스 레벨에서 0.01달러까지 떨어지는 놀라운 요금 인하 효과를 얻었습니다.
Starknet의 스타크넷의 수수료가 이렇게 많이 내려간 이유
OP 롤업과 ZK 롤업은 한 계층의 DA 공간에 대한 요구 사항이 다릅니다
이 둘은 다음과 같습니다. OP 롤업은 사용자 서명을 포함한 최근 트랜잭션의 모든 세부 정보를 패키징 및 압축한 후 네트워크의 한 계층에 업로드합니다. 티어 1 네트워크에서 많은 유효성 검사 작업이 필요하지 않으며, 티어 1 네트워크의 DA 공간을 사용하는 데 드는 비용이 거의 전부입니다.
반면, ZK 롤업은 업로드된 데이터의 압축률이 훨씬 더 높습니다. 예를 들어, 레이어2 트랜잭션의 디지털 서명을 업로드하는 대신 ZK Proof에만 의존하여 트랜잭션이 유효한지 확인할 수 있으며, ZK 롤업은 트랜잭션의 모든 세부 정보를 패키징하는 대신 상태 변경 결과만을 패키징하여 체인에 업로드합니다.
예를 들어 레이어 2 네트워크에서 USDC/USDT 쌍을 거래한 사용자가 100명이고, 각 거래 후 자산 컨트랙트의 USDC와 USDT 잔액이 변경된다고 가정해 보겠습니다. OP 롤업의 경우, 이러한 거래 행위 뒤에 생성된 DA 데이터는 100건의 거래, 200개 계정에서 400건의 잔액 변동이며,
그리고 ZK 롤업의 경우, 자산 계약에서 발생한 총 200건의 변경 사항은 2개의 최종 상태 요약 변경으로 압축하여 DA 데이터의 크기를 크게 줄일 수 있습니다.
ZK 롤업은 ZKP가 소비하는 추가 가스를 검증
이 둘의 차이를 이해한 후 첫 인상은 ZK 롤업의 가스 수수료가 더 낮다고 생각할 수 있습니다. 가스비는 더 낮겠지만, 현업에서 운영해본 학생이라면 EIP-4844, StarkNet, ZkSync 등 ZK 롤업은 영지식 증명의 크기가 더 큰 STARK 알고리즘으로 인해 비용이 OP 롤업보다 훨씬 높다는 것을 알 수 있습니다, 특히 StarkNet의 경우 더 많은 영지식 증명을 수행해야 하기 때문에 비용이 더 많이 든다는 것을 알 수 있습니다. 전송 비용은 다른 레이어2보다 높은 경향이 있습니다.
(2023년 어느 시점의 L2별 L2 수수료 표)
ZK 롤업이 온라인에 등장하자마자 OP 롤업을 압도하지 못한 이유는 간단합니다: 거래 데이터의 압축률이 높아 한 레이어로 데이터를 전송하는 비용이 절감되지만, 제로 지식 증명을 검증해야 하므로 계산 비용이 증가합니다.
블롭은 DA 수수료만 줄여줄 뿐 계산 부분에서는 큰 도움이 되지 않으며, ZK 롤업은 OP 롤업보다 EIP-4844에서 얻는 것이 더 적기 때문에 스타크넷이 처리 수수료 측면에서 죽도록 비싸던 것이 빠르게 센트 수준으로 내려가는 것을 보았을 때는 가스비를 빠르게 달성하는 것을 보고 놀라지 않을 수 없었습니다.
스타크넷의 수수료 구성 살펴보기
ZK 롤업은 OP 롤업보다 더 복잡한 경향이 있습니다. 아래 그래프는 옵티미즘 시퀀서가 DA 데이터를 네트워크 레이어에 게시할 때 생성되는 트랜잭션 기록을 보여주며, EIP-4844 상륙 시 OP의 거래 수수료가 두 배로 감소한 이유를 누구나 이해할 수 있습니다.
하지만 스타크넷 수수료의 출처를 조사하는 과정에서 다음과 같은 사실이 밝혀졌습니다. 그러나 스타크넷 수수료의 출처를 조사하는 과정에서 이 글의 저자는 스타크넷의 여러 구성 요소 간의 상호 작용이 훨씬 더 복잡하기 때문에 상당한 어려움을 겪었습니다. 이 전체 과정을 되짚어 보겠습니다.
사라져가는 DA의 계층
옵티미즘의 수수료 구조를 살펴본 경험으로 볼 때, 스타크넷이 메인 네트워크에 제출하는 데이터를 찾는 것이 좋은 생각이라는 것은 당연한 생각입니다. 메인 네트워크에 데이터를 제출하는 스타크넷의 컨트랙트 주소는 이더스캔의 가스 소비 목록 상단에 있어야 하며, 아직 EIP-4844를 적용하지 않은 스크롤과 같이 아직 가스 소비 목록 상단에 있는 컨트랙트를 찾는 것은 어렵지 않을 것입니다.
Starknet 키워드를 검색하면 다음과 같습니다. 이더스캔, 오퍼레이터, 코어 컨트랙트, 메모리 페이지 팩트 레지스트리 등 3개의 관련 컴포넌트를 찾을 수 있는데, DA와 관련된 것으로 보이는 세 번째 컴포넌트는 2년 가까이 전에 개발이 중단된 상태입니다.
현재 스타켄트의 오퍼레이터가 코어 컨트랙트와 지속적으로 상호작용하며 "상태 업데이트" 함수를 호출하고 있음을 알 수 있습니다.
칸쿤 업그레이드가 활성화되기 전과 후의 기록 체인을 살펴보면 칸쿤 업그레이드가 활성화되기 전과 후에 오퍼레이터가 체인에 있었음을 알 수 있습니다. 레코드를 살펴보면, 오퍼레이터의 "상태 업데이트" 동작이 실제로 세부적으로 변경되었음을 알 수 있는데, 첫째, 함수 이름이 "UpdateStateKzgDA"로 변경되었고, 둘째, 이전 상태 업데이트 함수가 < strong>핵심 컨트랙트에 프로그램 출력,온체인 데이터 해시 및 온체인 데이터 크기를 전송하는 반면, 새 버전은 프로그램 출력과 온체인 데이터 크기를 업로드합니다. ProgramOutput 및 KzgProof를 업로드합니다.
여기서 일반적으로 KZG 프로미스는 Blob의 데이터 해시와 유사한 역할을 하며, Blob에 저장된 데이터와 대응 관계를 갖습니다. 새 버전의 상태 업데이트 함수는 이전 버전보다 더 많은 가스를 소비한다는 점에 주목할 필요가 있습니다. 그렇다면 스타크넷은 어떻게 수수료를 그렇게 낮게 유지할 수 있을까요? 그 이유는 정확히 무엇일까요?
< p style="text-align: 왼쪽;">
자세한 내용은 LXDAO의 Layer2 대중화 사이트 MyFirstLayer2:https://layer2 을 참조하세요. myfirst.io/zh#3.3-optimistic-rollup
첫 번째 좌절 후 분석
첫 번째 탐색은 는 그다지 성공적이지는 못했지만, 그래도 몇 가지 추론과 추측을 할 수 있었습니다. 마이퍼스트 레이어2를 보신 분들은 롤업의 핵심 문제가 DA(데이터 가용성) 문제라는 것을 알고 계실 텐데요, 두 프로젝트 모두 주요 데이터를 메인 네트워크에 업로드하여 누구나 필요한 데이터에 쉽게 접근할 수 있도록 함으로써 데이터 가용성 문제를 해결하고 있습니다.
조금 거슬러 올라가서, OP 롤업은 모든 트랜잭션 명령을 간단하고 조잡하게 압축하고 집계하여 패키지로 묶어 네트워크의 한 계층에 업로드하면 다른 모든 사람이 압축된 데이터를 다운로드한 다음 압축을 풀 수 있습니다. 각 트랜잭션을 재생하여 두 번째 계층 네트워크의 상태 변화를 파악합니다.
ZK 롤업은 트랜잭션의 전체 세부 정보를 업로드할 필요 없이 상태 차이(각 배치 실행 전후의 상태 변화량)만 업로드하면 됩니다. ZKRollup은 ZKP를 사용하여 State Diff가 유효하고 오류가 없는지 확인하며, 다른 사람들은 Prev_GlobalState 위에 State Diff를 직접 오버레이하여 레이어 2 네트워크의 최신 상태를 파악할 수 있습니다.
우리 모두 블롭이 가장 중요한 부분이라는 것을 알고 있습니다. <블롭 데이터는 횡설수설처럼 보이는 바이너리 텍스트 문자열에 불과하며, 네트워크의 첫 번째 레이어는 블롭 데이터가 업로드된 후 악성 노드에 의해 변조되지 않도록 보장할 뿐 데이터의 내용을 검증할 책임이 없으며, 당연히 첫 번째 레이어에 배포된 스마트 컨트랙트는 블롭의 내용을 읽을 수도 없습니다.
그렇다면 ZK Proof가 여전히 한 레이어에서 검증된다면, ZK Proof는 블롭에 넣을 수 없는 것이 분명하므로 스타크넷이 수수료 절감이라는 큰 효과를 낼 수 있는 것은 ZKP와는 거의 상관없는, State diff의 저장 위치 때문이 아닐까 판단할 수 있습니다. 스테이트 디프가 저장되는 위치가 변경되었기 때문일 것입니다.
다음 과제는 당연히 스타크넷이 스테이트 디프를 어디에 저장했는지 알아내는 것입니다. 이전에는 어디에 있었는지, 그리고 현재 블롭에 있는지 여부입니다.
또한 업데이트스테이트 함수의 입력 매개변수에서 StateRoot만 찾을 수 있다는 것은 스타크넷이 메인 네트워크에 직접 업로드해야 할 데이터를 자체 오프체인 DAC로 전송하는 것이 아닌지 의심하게 만듭니다. 만약 그렇다면, 스타크넷의 과도한 요금은 완전히 정당화될 수 없으며, ......
SHARP 시스템
다행히도 @0xYandhii와 이 문제를 논의한 후 깨달음을 얻게 되었습니다. 스타크넷의 첫 번째 제품은 사실 범용 메인넷에 출시되기 전의 스타크EX였으며, 탈중앙화 파생상품 거래소인 dYdX도 그 당시의 제품입니다.
메인넷이 가동된 후 오리지널 제품을 포기하는 대신 메인넷과 검증자 계약을 공유하는 방식으로 전환했으며, 공유 증명 및 검증 시스템 시스템인 SHARP: Shared Proving and Verifying System 시스템에서 샤프 블록체인 라이터, 샤프 검증자 및 기타 관련 컨트랙트.
블록 브라우저를 열어 관련 트랜잭션을 조회하면 다음과 같이 확인할 수 있습니다. 다음 4가지 유형의 작업을 수행한 것을 확인할 수 있습니다.
1. VerifyMerkle: 머클 트리 확인
2. VerifyFRI: 제출된 데이터 또는 계산이 원본 이미지를 공개하지 않고도 특정 규칙을 따르도록 하는 데 사용됩니다.
3. 연속 메모리 페이지 등록: 네트워크 계층에 데이터를 쓸 때 호출되는 기능으로 추정됩니다.
4. 증명 확인 및 등록: 이 함수는 빠르면 10분에 한 번, 느리면 1~2시간에 한 번씩 호출됩니다. 스타크넷이 충분히 많은 수의 트랜잭션을 저장한 후에는 해당 트랜잭션에 대한 ZKP의 유효성을 검증합니다.
1, 2, 4번은 ZKProof와 관련된 함수이며, 네트워크의 한 계층에 데이터를 기록하는 단계인 3번 함수는 State diff 업로드와 관련이 있을 가능성이 가장 높다는 것을 알기 어렵지 않게 알 수 있습니다.
1, 2, 4번 함수를 호출하는 비용은 블롭 업그레이드 전후로 큰 변화가 없었지만, 3번 함수를 사용하는 비용은 크게 감소했을 것으로 추측되며, 이는 스타크넷이 비용 절감에 큰 영향을 미친 이유를 설명할 수 있는 근거가 됩니다.
그래서 블록 브라우저를 계속 넘기면서 EIP-4844 이전, 두 번째 이전 버전, 두 번째 첫 번째 버전, 업그레이드 후 최신 버전 세 가지 기간에 대해 각각 한 번씩 검증 주기를 가져가서 네 가지 기능이 호출될 때마다 소비되는 가스를 계산해 보았습니다.
결과는 놀랍습니다.
데이터 퍼블리싱과 관련된 세 번째 함수는 비용이 가 절반으로 감소했지만, 전체 ZK Proof 검증 라운드에 대한 비용 점유율 측면에서 볼 때, 이 정도의 DA 비용 감소로는 앞서 제안한 가설을 정당화할 수 없습니다.
이 퀘스트는 거의 막바지에 이르렀고, 저는 삼체 세계의 대형 입자 충돌기 앞에 앉아서 모든 뇌세포가 "이건 말이 안 돼!"라고 외치는 물리학자가 된 기분입니다. 심지어 스타크넷 커뮤니티에 가서 이에 대해 문의하는 글을 올렸지만, 문제가 너무 복잡해서인지 영어 커뮤니티의 반응이 더뎠습니다.
SHARP 시스템 가스 사용량 탐색
이 시점에서 마지막 트릭이 하나 남았는데, 앞서 다운로드한 거래 데이터의 csv 안에는 다음과 같은 내용만 있습니다. 앞서 다운로드한 트랜잭션 데이터의 csv 안에는 가스 수수료로 소비된 이더리움만 있고 가스 가격, 가스 제한 등에 대한 정보가 없기 때문에 가스 단가 변동이 통계 결과에 미치는 영향을 배제할 수 없습니다. 그래서 이전에 각 트랜잭션의 실제 GasUsed(Gaslimit에서 소진된 부분)를 계산하는 스크립트를 작성했습니다.
이번에 드디어 무언가를 발견했습니다. 칸쿤 업그레이드 이전에는 연속 메모리 페이지 등록이라는 함수가 DA 데이터 업로드 시 한 번은 50,000개, 다른 한 번은 300,000개의 가스를 소비하는 등 2번 트리거된 것을 확인할 수 있습니다.
칸쿤 업그레이드 후에는 거의 모든 호출이 < strong>연속 메모리 페이지 기능 트랜잭션은 50,000개 가스만 소비합니다.
이전에는 샘플 수가 너무 적어서 한 번은 업그레이드 이후 메인넷 가스 요금이 급등하여 통계에 영향을 준 시기로, 칸쿤 업그레이드 전후로 레지스터 연속 메모리 페이지 함수 호출 비용이 크게 변하지 않았다고 생각했는데, 통계를 더 광범위하게 적용하자 문제가 무엇인지 빠르게 파악할 수 있었습니다.
이러한 생각에 따라 다음 세 가지를 재정비했습니다. 이 생각의 선을 따라 3개의 순간에 대한 GasUsed 데이터를 재정렬해보니 이번에는 훨씬 더 의미가 있습니다. 이를 통해 칸쿤 업그레이드 이후 DA 데이터 업로드와 관련된 연속 메모리 페이지 등록 기능이 실제로 크게 줄어든 것을 확인할 수 있으며, 이는 원래 State Diff를 저장하는 단계였어야 하며 칸쿤 업그레이드 이후 DA 데이터가 Blob으로 전송되었다는 것을 알 수 있습니다.
이후 L2beat의 웹사이트에서 스탁넷의 제품 구조 도식을 찾아보니, 위의 기능을 통해 실제로 이더 체인에 스테이트 차이가 저장되는 것을 확인할 수 있었습니다.
(이미지 출처: L2BEAT)
마지막으로, GasUsed의 볼륨 계산(현재 무작위로 선택한 작은 샘플 크기로 느슨하게 추정)을 기반으로 Starknet의 칸쿤 이후 업그레이드 DA 비용은 대략 4배에서 10배의 변화가 있다는 결론을 내립니다. 변화한 것으로 나타났습니다.
이 또한 저희의 초기 추측과 일치합니다: ZK 롤업은 EIP-4844 업그레이드 후 OP 롤업만큼의 이득을 얻지 못했습니다.
요약
이 모든 탐색 끝에 마침내 스타넷 수수료가 크게 하락한 이유를 정리했으며, 결론은 여전히 조금은 흥미롭습니다.
DA 수수료의 큰 폭 하락은 두 가지 이유를 설명하지 못합니다
이전에는 각 배치의 상태 변경 데이터를 네트워크의 한 계층에 직접 업로드하던 스타넷이 이제는 네트워크의 한 계층에 직접 업로드하고 있다는 점이 분명해졌습니다. 네트워크 레이어에 직접 업로드하던 데이터를 이제 블롭에 저장하므로 DA 데이터 부분의 수수료가 약간 줄어들 수 있습니다.
그렇다면 스타크넷 수수료의 99% 하락은 어떻게 설명할 수 있을까요? DA 수수료 인하만으로는 충분하지 않습니다. <유일하게 그럴듯한 설명은 칸쿤 업그레이드 이전에 스타크넷이 사용자에게 너무 많은 요금을 부과했다는 것입니다. STRK 코인이 출시되기 전에는 스타크넷의 모든 활동과 커뮤니티 인센티브에 자금이 필요했습니다. 투자자들의 돈을 태우는 것 외에도, 사용자에게 청구되는 이더리움과 실제로 소비되는 이더리움 사이에 가위 차이를 설정하는 것이 스타크넷의 운영을 유지하는 방법 중 하나였을 것이며, 이로 인해 이전에 가스비가 너무 높았던 것으로 보입니다.
이제 STRK 토큰 발행으로 스타크넷에 충분한 자금이 유입되었으니, 이제 칸쿤 업그레이드를 통해 발에 묶인 모래주머니를 풀고 가스를 합리적인 수준으로 되돌려야 할 때이며, 수수료 인하 효과로 많은 사람들이 놀라워하고 있습니다.
롤업의 과거 데이터 손실 문제
옵 롤업은 업그레이드 후 원래 트랜잭션 콜데이터에 저장되어 있던 데이터를 임시 저장 영역인 블롭으로 이동시켰습니다. 임시 저장 영역인 Blob으로 옮기면서 실제로 약간의 신뢰성이 저하되었습니다.
이전에는 콜데이터 공간에 데이터가 영구적으로 저장되었기 때문에 누구나 이더리움 메인 네트워크에서 충분한 과거 데이터를 다운로드하여 현재 OPR의 상태를 검증하고 동기화할 수 있었습니다.
그러나 칸쿤 업그레이드 이후 블롭의 데이터에는 만료 만료 설정이 적용되었기 때문에 네트워크에서 과거 블롭 데이터를 보관하는 주체가 한 곳도 없다면 OPR의 거래 내역이 사라질 수 있습니다.
최신 레이어 2 네트워크 상태는 여전히 보호될 수 있지만 - 블롭 보존이 OP의 7-14일 챌린지 기간을 초과하기 때문에 - 만료되기 전의 각 블롭의 레이어 2 상태는 여전히 신뢰할 수 있으며, 최근 10일간의 롤링 트랜잭션 기록은 OPR의 보안을 유지합니다.
ZK 롤업은 또한 블롭의 이점을 누리려면 중요한 2단계 상태 데이터를 Calldata 공간에서 블롭 공간으로 옮겨야 합니다. 즉, 일정 시간이 지나면 이전처럼 네트워크의 첫 번째 계층에서 제공한 데이터에 의존하여 두 번째 계층의 상태를 재생할 수 없게 됩니다.
아마도 이것이 표준이 되어 모든 L2 네트워크가 최신 상태의 보안을 유지하기 위해 블롭에 의존하고, 각 L2는 보안과 효율성 사이의 균형을 맞추기 위해 과거 거래 데이터를 저장하기 위한 별도의 솔루션을 찾아야 하는 상황이 될 것입니다.
OP와 ZK의 융합 추세
과거에는 1세대 OP 롤업이 가장 먼저 출시되었고, 1세대 ZK 롤업이 가장 먼저 출시되었습니다. 더 경쟁력 있는 가스 요금을 도입하지 않고 출시되었습니다. 이후 OP Stack, Polygon SDK가 가져온 모듈화 트렌드에 따라 OP Stack은 챌린지 기간을 줄이기 위해 향후 ZK 기술을 도입할 계획까지 세우고 있습니다.
이것은 의심 할 여지없이 OP와 ZK의 두 기술 경로가 당신과 나 사이의 경쟁이 아니며 서로에게서 배울 것이며 합병하는 경향이 있다는 사실을 지적하지만 이번에는 "고귀한"ZK에서 "단순하고 잔인한"ZK로, "단순하고 잔인한"ZK에서 "단순하고 잔인한"ZK로 바뀌고 있다는 사실입니다. 유일한 것은 "고귀한" ZK가 "단순하고 잔인한" OP로부터 배울 수 있는 시간이라는 것입니다.
2단계 네트워크의 기술이 불과 2~3년 만에 이렇게 많이 발전했다는 것이 믿기 어렵지만, 이것이 바로 블록체인 세계의 아름다움일지도 모릅니다.
참고자료:
[1] EIP4844[EB/OL]로 피드더피드 데이터 가용성. (2024-02-11)[2024-04-16] https://community.starknet.io/t/data-availability-with-eip4844/113065. em>h
[2] L2BEAT 연구팀. starknet[EB/OL]. [2024-04-16]. https://l2beat.com/scaling/projects/starknet?selectedChart=activity#contracts.