연구기관: 시어랩스
머리말
머리말
블록체인 기술의 전문가이든 아니든 Crypto 세계에 충분히 오래 머무르는 한. Ethereum 확장, layer2 및 Rollup이라는 단어는 익숙합니다. 많은 사람들이 이러한 개념 중 하나 이상에 익숙하지만 어떻게 관련되어 있습니까? 이러한 기술이 필요한 이유는 무엇입니까? 그들은 어떤 종류의 문제를 해결하려고 하는가?
위의 질문에 대한 답을 알고 싶다면 이 기사가 도움이 되기를 바랍니다.
텍스트
텍스트
~부터CryotoKitty이더리움 체인의 정체가 발생한 날부터 이더리움 개발자들은 이더리움의 처리량을 개선하기 위한 솔루션을 끊임없이 모색해 왔습니다.
원칙적으로 두 가지 범주로 나눌 수 있습니다.
(1) 이더리움 블록 자체를 변형시키는 것인데 이를 Layer1 솔루션이라고 하자 여기서 주요 솔루션은 샤딩이다.
(2) 이더리움을 사용하는 방식을 변경하고 트랜잭션의 실행 및 처리를 오프체인으로 전환하는 것입니다.이더리움 자체는 트랜잭션의 유효성을 확인하고 보안을 제공하는 데만 사용됩니다. 이것이 우리가 Layer2에 대해 자주 듣는 것입니다.
Layer2의 핵심 아이디어는 오프체인에서 많은 수의 실제 트랜잭션을 실행하고 계산한 다음 이더리움에서 매우 적은 수의 트랜잭션을 통해 트랜잭션의 최종 유효성을 검증하는 것입니다. State Channel이든 Plasma이든 Rollup이든 모두 이 원칙을 따릅니다.
보조 제목
1. 상태 채널
다음은 상태 채널의 가장 원시적인 구조입니다.
스테이트 채널은 오랫동안 존재해 온 블록체인 스케일링 솔루션으로, 가장 유명한 어플리케이션은 비트코인의 라이트닝 네트워크입니다.
그의 원리를 설명하는 것에 비해,상태 채널이 무엇인지 더 잘 설명할 수 있는 예는 다음과 같습니다.
당신은 아래층 이발소를 매우 좋아합니다. 이발소에 갈 때마다 Tony 씨는 항상 귀에 카드를 신청하라고 요청할 것입니다.
언젠가는 최종 결정하고 카드를 신청하십시오. 어쨌든 앞으로 올 것입니다. 그래서 당신은 카드를 얻기 위해 이발소에 1,000위안을 이체합니다.
앞으로 이발하러 갈 때마다 이발소에 돈을 이체할 필요 없이 카드에 있는 잔액을 차감하는 동시에 이발소와 실제 거래를 완료한 것입니다. 머리를 자를 때마다.
한 달 후 이사를 가는데 카드에 있는 돈이 다 쓰이지 않았습니다. 그래서 카드 반납을 위해 이발소에 신청하면 이발소의 Tony 씨가 200위안을 환불해 줍니다.
이번 달에 당신은 이발소에서 12번 이상을 보냈지만 당신과 이발소는 실제로 두 번만 돈을 주고받았습니다.
이 프로세스를 블록체인에 적용하면 카드 구매 프로세스는 실제로 스마트 계약에 돈을 입금하는 동시에 귀하와 이발소 간의 상태 채널을 여는 것입니다. 카드를 반환하는 과정에서 귀하와 이발사 사이의 "상태 채널"이 닫힙니다. 귀하와 이발소 간의 상호 전송은 이더리움 메인 체인의 두 트랜잭션과 동일합니다.
카드가 없고 이발을 마칠 때마다 이발소에 계좌를 이체해야 한다고 상상해보세요.
애플리케이션 시나리오
애플리케이션 시나리오
(1) 상태 채널은 스트리밍 지불과 같은 일부 간단한 시나리오에서 매우 중요한 역할을 할 수 있습니다.체인에서 메시지를 서명하여 트랜잭션 데이터를 기록하고 논리적으로 발생한 많은 트랜잭션을 메인으로 단순화합니다. 체인.
(2) 비용이 저렴하기 때문에 상태 채널은 ETH 또는 BTC로 아침 커피를 구매하는 것과 같은 일부 소액 결제 시나리오에 매우 적합합니다.
한정
보조 제목
2. 플라즈마
1: 원리이제 우리 모두는 상태 채널의 한계를 알고 있으며 이 문제를 해결하기 위해 플라즈마가 등장했습니다. 대상자에게 자산을 보내는 문제를 해결하고 TPS 개선도 보장할 수 있습니다. 사실 오랫동안 개발자들이 Layer2 솔루션을 연구하기 시작했을 때 Plasma는 한때 "하나"로 간주되었습니다.
플라즈마를 이해하려면 먼저 플라즈마가 실제 기술이 아니라 설계 아이디어나 기술 아키텍처에 가깝다는 점을 이해해야 합니다.
플라즈마는 일반적으로 메인 체인과 다른 합의 메커니즘을 가질 수 있는 체인이거나 자체 마이너를 가질 수 있습니다. 그러나 가장 중요한 것은 "라는 플라즈마 체인이있을 것입니다.Operator생성하는 역할"머클 트리, 이 머클 트리의 루트 해시 값을 검증 및 기록을 위해 메인 체인에 제출합니다. Merkle 트리와 그 루트 해시가 상태 전환의 검증으로 사용될 수 있는 이유는 이 애플리케이션도 사용하는 Rollup에서 논의될 것입니다.
이와 같이 두 번의 제출 동안 서브 체인에서 얼마나 많은 트랜잭션이 발생했는지에 관계없이 서브 체인은 트랜잭션 실행으로 인한 상태 정보만 메인 체인에 제출하면 됩니다.
다음은 플라즈마 메커니즘을 사용하는 간단한 다이어그램입니다.
플라즈마 체인에 진입하려는 사용자는 자산을 이더리움 메인 체인에 매핑해야 하며, 플라즈마 체인 또는 메인 체인에 자산을 전송해야 하는 경우 다른 사람이 "사기 증명"을 사용하기 위해 도전 기간을 거쳐야 합니다. " 자산 양도의 유효성을 확인하는 메커니즘.
"사기 증명"즉, 이 챌린지 기간(통상 7일 이상) 동안 누구나 Merkle tree 검증을 통해 사용자 자산 출금이 불법임을 증명할 수 있습니다.
그러나 이것은 두 가지 문제를 야기합니다.(1) 이 인출의 정확성을 확인하려면 Plasma는 상태 이전 결과만 제출하기 때문에 레이어 2에 트랜잭션 및 상태 정보를 저장할 노드가 필요하며 레이어 2에 대한 정보가 있어야 합니다. 사기 증거를 제출하면 검증자의 역할 비용이 크게 증가합니다.
(2)는"데이터를 사용할 수 없음"보조 제목
3. 롤업
우리는 Plasma의 매우 중요한 문제가 "데이터를 사용할 수 없음"이라는 것을 알 수 있습니다. 메인 체인은 운영자가 제출한 상태 전송 결과만 수신하고 누군가가 트랜잭션 및 상태 정보를 아래에 저장했다고 기대할 수 있습니다. 증명 메커니즘은 하위 체인 제출의 진위를 보장하는 데 사용되며 이 과정에서 확인자 역할만 담당하고 보안 수준이 낮습니다.
1. "사용할 수 없는 데이터"에 대한 구체적인 이해
Ethereum은 체인에서 발생하는 모든 데이터를 공개하고 누구나 쿼리할 수 있습니다. 그러나 Plasma는 이러한 트랜잭션 데이터를 메인 체인에 제출하지 않고 실행 결과만 제출하므로 효율성이 크게 향상되지만 그렇게 하는 대가는 Plasma가 이더리움 메인 체인과 동일한 수준의 신뢰를 구축할 수 없다는 것입니다.
Rollup은 원래 메인체인 처리 방식과 Plasma 방식의 절충안이라 볼 수 있는데, 메인체인에 데이터를 제출하지만 영리한 코딩 방식을 통해 이러한 데이터의 압축을 극대화함과 동시에 삭제 및 Rollup 자체의 특성에 따라 적절히 축소 데이터의 일부, 최종 제출된 데이터는 누구나 검증할 수 있는 한.
트랜잭션 데이터가 체인에 업로드되면 누구나 이 데이터를 기반으로 Rollup에서 제출한 결과가 올바른지 확인할 수 있습니다. 따라서 Rollup이 Plasma보다 안전합니다.
데이터 가용성데이터 가용성”, 데이터를 메인 체인에 제출하여 보안을 크게 강화합니다.
그렇다면 롤업은 정확히 어떻게 구현됩니까?
2. 원리
(1) 상태 루트: 첫째, 롤업은 메인 체인에 하나(또는 일련의 상호 관련된) 계약이 있습니다.
이 계약은 Rollup 레이어에서 상태 레코드를 유지하는 데 사용됩니다. 이 상태 레코드는 실제로 Merkle 트리의 루트 노드에 저장된 해시 값입니다. 이 해시 값을 호출합니다.state root。
그리고 이 Merkle 트리의 리프 노드는 Rollup의 계정 상태 정보입니다. Merkle 트리가 무엇인지 모르는 경우 다음과 같은 간단한 예가 있습니다.
이것이 바이너리 트리임을 알 수 있으며 현재 롤업 레이어 계정의 상태 정보는 바이너리 트리의 리프 노드에 기록됩니다.
두 개의 상태 정보(예: State 1/State 2)마다 특정 해시 공식에 따라 고유한 해시 값(예: Hash(1,2) )을 이 두 리프 노드 노드의 아버지로 계산할 수 있습니다. 등등, 마지막으로 루트 노드에 저장된 해시 값을 얻습니다.
해시를 계산하는 방법을 알 필요는 없으며 몇 가지만 기억하면 됩니다.
1 임의의 리프 노드가 변경되면 루트 노드의 값이 변경됩니다(모든 상태 변경으로 인해 루트 해시가 변경됨)
2 두 트리의 루트해시값이 같다면 두 트리의 리프노드에 저장된 정보가 정확히 같다는 뜻(따라서 기본 상태 정보의 일관성을 확인하기 위해 두 루트 노드의 해시 값만 비교하면 됨)
텍스트
텍스트
키는 계정 주소이고 값은 잔액/Nonce/계약 코드/저장소(계약 계정의 경우)와 같은 상태 정보를 포함합니다.
롤업에서 트랜잭션이 발생하면 분명히 이러한 계정의 상태가 변경되어 새로운 상태 루트가 생성됩니다.
이는 Rollup에서 최신 상태 변경에 대한 매우 정확하고 시기 적절한 피드백을 제공할 수 있지만 트랜잭션이 발생할 때마다 메인 체인에서 상태 루트가 업데이트되면 발생하는 비용이 Layer1에서 이러한 트랜잭션을 실행하는 것보다 높을 것입니다.
따라서 이 문제를 해결하기 위해 롤업에서 생성된 트랜잭션을 일괄적으로 패키징 및 집계하고 이 일괄 처리의 모든 트랜잭션이 실행된 후 상태에 따라 새로운 상태 루트가 생성됩니다. 누가 트랜잭션 패키지를 메인 체인의 스마트 계약에 제출하든 상관없이 그는 이 새로운 상태 루트를 계산하고 이전 상태 루트 및 트랜잭션 데이터와 함께 제출해야 합니다.
패키징의 이 부분을 "배치"라고 합니다. 제출자가 롤업 계약에 배치를 제출한 후 메인 체인은 새로운 상태 루트가 올바른지 여부를 확인합니다. 확인이 통과되면 상태 루트가 업데이트됩니다. 마지막으로 제출된 상태 루트 그리고 마지막으로 롤업에서 상태 이전 확인을 완료합니다.
텍스트
따라서 Rollup의 본질은 실제로 발생하는 많은 양의 트랜잭션을 메인 체인의 트랜잭션으로 집계하는 것입니다. "법원 판사"의 역할은 궁극적으로 이러한 거래를 확인합니다. 따라서 실제 트랜잭션 효율성을 높이고 트랜잭션 비용을 줄이면서 메인 체인의 합의 및 보안을 활용합니다.
3: 의심
위의 설명을 읽은 후 몇 가지 질문이 있을 수 있습니다. 걱정하지 마십시오. 단계별로 추론하고 설명합니다.
(1) 거래 데이터를 전량 제출하면 아직 증설이 어렵죠? 위에서 언급한 데이터 압축으로 이 문제가 해결됩니까? 어떻게 합니까?
이 두 가지 기술 솔루션은 확장을 달성할 수 있으며 핵심은 트랜잭션의 압축 및 패키징입니다. 이더리움의 블록 가스 한도에는 상한선이 있기 때문에 압축된 트랜잭션이 적을수록 한 번에 더 많은 트랜잭션을 메인 체인에 제출할 수 있습니다. 어떻게 해야 할까요?
다음은 Vitalik이 자신의 기사에서 설명하는 압축 모드로 이해를 돕기 위한 예입니다.
Ethereum 메인 체인의 단순 트랜잭션(예: ETH 전송)은 일반적으로 약 110바이트를 소비합니다. 그러나 Rollup에서 보내는 ETH는 약 12바이트로 줄일 수 있습니다.
이러한 압축 효과를 달성하기 위해 한편으로는 더 간단하고 진보된 인코딩을 채택하고 있으며 현재 이더리움의 RLP는 각 값의 길이에서 1바이트를 낭비하고 있습니다. 반면에 몇 가지 깔끔한 압축 트릭이 있습니다.
nonce: 롤업에서 nonce를 완전히 생략할 수 있습니다.
Gasprice: 사용자가 2의 16제곱과 같이 고정된 범위의 가스프라이스로 지불하도록 허용할 수 있습니다.
가스: 가스를 2의 배수로 설정할 수도 있습니다. 또한 배치 수준에서 가스 한도를 설정할 수도 있습니다.
To: 주소는 Merkle 트리의 인덱스로 식별할 수 있습니다.
값: 과학적 표기법으로 값을 저장할 수 있습니다. 대부분의 경우 전송에는 1~3개의 유효 숫자만 필요합니다.
서명: BLS 집계 서명을 사용하여 여러 서명을 하나로 결합할 수 있습니다.
이러한 압축 기술이 롤업 확장의 핵심입니다 트랜잭션 데이터를 압축하지 않으면 롤업은 메인 체인 기준으로 약 10배 정도의 효율성을 향상시킬 수 있지만 이러한 압축 기술을 사용하면 50배의 효율성을 달성할 수 있습니다. 100배 이상의 압축 효율.
동시에 가스를 절약하기 위해 이러한 압축된 트랜잭션 데이터는 calldata 매개변수에 저장됩니다. 유명한 EIP-4488은 메인 체인 트랜잭션에 의해 운반될 수 있는 롤 레이어의 트랜잭션 데이터 양을 더욱 최적화하기 위해 calldata의 각 데이터 바이트의 가스 소비를 줄이는 것을 제안했습니다. 특정 압축 효과에 대해서는 아래 두 가지 ZK-Rollup을 비교할 때 간단한 데이터를 표시합니다.
(2) 제출된 확인 가능한 정보가 정확한지 어떻게 확인합니까?
최종 상태 전환 확인(트랜잭션의 확인을 나타내기도 함)은 상태 루트의 업데이트에 의해 결정되기 때문에 Rollup의 제출자는 원하는 트랜잭션 데이터와 상태 루트를 마음대로 제출할 수 있는 것 같으니 어떻게 해야 할까요? 그가 제출했는지 확인하십시오. 이 정보가 정확합니까?
이 문제의 경우 일반적으로 두 가지 솔루션이 있으며 다른 솔루션에 따라 롤업도 두 가지 범주로 나뉩니다.
4:Optimistic Rollup
이름 그대로, 이 솔루션은 제출자가 실제로 잘못된 배치를 제출한 나쁜 사람이라는 사기 증거를 통해 누군가가 증명하지 않는 한 제출자가 제출한 배치가 정확하다고 낙관적으로 믿도록 선택합니다.
(1) 다음은 사기 방지 구성의 간단한 예입니다(Vitalik에게 다시 한 번 감사드립니다).
제출된 배치가 잘못되었음을 증명하기 위해 사기 증거를 제출하려면 아래 그림의 녹색 부분에 포함된 정보가 필요합니다.
1. 제출자가 제출한 배치
2. 이전 state root로 표현되는 Merkle 트리(실제로 실제 계정 상태 정보를 나타냄)의 일부이며, 이 부분을 기반으로 완전한 Merkle 트리를 구성할 수 있습니다.
두 번째 파트에서 구성한 머클 트리를 기반으로 배치에 제출된 트랜잭션의 실행을 시뮬레이션하여 새로운 계정 상태, 새로운 머클 트리 및 새로운 상태 루트를 얻었습니다.
이전 단계에서 얻은 상태 루트를 배치의 상태 루트와 비교하여 배치가 올바른지 확인합니다.
(2) 검증 프로세스
우리는 상태 루트의 진정성을 보장하기 위해 Optimstic 프로세스를 논리적으로 정리했습니다. 실제로 제출자가 악행을 저지할 수 있도록 제출자는 종종 자금을 서약해야 합니다. 그의 제출이 잘못된 것으로 확인되면, 약정자금의 일부를 벌칙으로 공제합니다. 동시에 해당 사기 증거를 제출하는 검증자는 사기 증거를 모니터링하고 제출하는 행동을 장려하기 위해 일부 솔루션에서 자금을 공제받게 됩니다.
OR과 Plasma를 비교하면 몇 가지 유사점을 발견할 수 있습니다. 예를 들어 둘 다 사기 방지 메커니즘을 사용하고 OR이 메인 체인에 제출되는 것을 모니터링하는 검증자 역할이 필요합니다. 그러나 OR은 트랜잭션 데이터를 메인 체인에 동시에 제출하기 때문에 OR의 검증자는 OR 자체에 트랜잭션을 저장하고 기록할 필요가 없습니다.비교를 위해 독자가 비교할 수 있도록 위의 간단한 아키텍처 다이어그램을 여기에 배치합니다.
5:ZK-Rollup
(1) Zk-rollup의 핵심
또 다른 유형의 솔루션은 ZK 롤업입니다. OR(낙관적 롤업)과 달리 ZK 롤업은 다음과 같은 기본적인 가정을 합니다.
나는 제출자가 올바른 배치를 적극적으로 제출할 수 있다고 믿지 않거나 법학의 "유죄 추정"과 유사합니다. 트랜잭션 데이터 및 이전/이전 상태 루트 외에도 제출자는 배치를 제출할 때 ZK-SNARK 인증서도 소지해야 합니다.
유효기간 증명서유효기간 증명서", 그는 제출된 배치가 올바른지 확인하는 데 직접 사용할 수 있습니다. 이 증명이 롤업 계약에 제출된 후 누구나 롤업 레이어에서 트랜잭션의 특정 배치를 확인하는 데 사용할 수 있으며 이는 롤업이 그렇지 않음을 의미합니다. 확인을 위해 제출한 후 7~14일을 기다려야 합니다.
(2) 유효성 증명과 사기 증명의 차이점
그렇다면 ZK-Rollup과 같은 "유효성 증명"과 Plasma/Optimsitic Rollup에서 사용하는 "사기 증명"의 차이점을 널리 이해하는 방법은 무엇입니까?
우선 세 가지 솔루션 모두 레이어 2에서 트랜잭션을 정렬, 실행 및 패키징할 사람이 필요합니다. 이 역할을 "집행자"라고 부르겠습니다.
Plasma 실행자는 실행 결과만 제출합니다.다른 사람이 믿든 말든 원칙에 따라 나를 믿지 않으면 도전을 시작해야 하며 도전을 시작하려면 기본 트랜잭션 데이터를 저장해야 합니다. 당신 자신.
OR도 마찬가지인데 집행자도 거래내역을 제출할 때 올려주니 믿느냐 안믿느냐의 문제이기도 하구요 믿지 못하시면 거래데이터를 바탕으로 직접 확인하시면 됩니다 .
그러나 ZK는 다릅니다. ZK는 당신이 저에게 도전하기 위해 며칠 동안 당신을 기다리고 싶지 않다고 말했습니다. 그래서 ZK는 제출할 때 인증서를 직접 생성하고, 이 인증서를 그 위에 올려놓고 제출하는 동안 검증을 완료합니다.
동시에 Plasma/OR 둘 다 집행자가 악을 행하면 돈을 잃을 것이라는 서약을 해야 하지만 ZK는 그렇지 않습니다. .
이러한 차이점과 더불어 또 다른 의미 있는 점은 ZK-SNARK를 통해 모든 트랜잭션 데이터를 제출하지 않고도 이 일괄 트랜잭션의 유효성을 증명할 수 있다는 점입니다. 이는 Rollup에 매우 중요합니다. 이에 대해 다음과 같이 설명하겠습니다.
(3) ZK-Rollup 구현 로직
우선 ZK-Rollup은 기본적으로 롤업 솔루션이므로 다음 두 가지 작업을 수행해야 합니다.
트랜잭션 데이터 일괄 처리 및 압축
새 상태 루트 생성
유일한 차이점은 검증 방법입니다. ZK-Rollup은 검증자가 사기 증명 프로세스를 시작할 때까지 기다리지 않고 ZK-SNARK 증명을 직접 생성하여 Batch에 추가하고 메인 체인 롤업 계약에 제출합니다.
그림과 같이 제출된 콘텐츠는 OR에 비해 ZK-Proof를 추가하고 검증자의 역할이 숨겨져 있습니다.
롤업 계약에 제출한 후 누구나 확인할 수 있으며 검증에 성공한 후 메인 체인 롤업 계약은 State 루트를 최신 제출 데이터로 업데이트합니다.
(4) ZK-SNARK 유효성 증명을 생성하는 방법은 무엇입니까?
A ZK-SNARK란?
ZK-SNARK의 전체 이름은 "Zero-Knowledge Succinct Non-Interactive Argument of Knowledge"입니다.
간결한 비대화형 영지식 증명. 각 부분의 의미를 설명하려고 합니다.
Succint(concise): 실제로 증명된 데이터의 양과 비교하여 이 방법은 훨씬 적은 양의 증명을 생성합니다.
예를 들어 일련의 트랜잭션이 존재하고 발생한다는 것을 증명하려면 생성되는 증명 데이터의 양이 이러한 트랜잭션 자체의 데이터 양보다 작아야 합니다.
비대화형(상호작용 없음): 증명이 구축된 후 증명자는 검증자에게 간단한 메시지를 한 번만 보내면 되며 일반적으로 누구나 허가 없이 검증할 수 있습니다.
이는 블록체인의 ZK-Rollup 또는 ZK 응용 프로그램에 매우 중요합니다. 왜냐하면 일부 ZK 증명은 증명자와 검증자 사이에 여러 상호 작용이 필요하고(색상 문제를 추측하는 것이 전형적인 예임) 체인에 넣는 것은 이를 시작하는 것을 의미합니다. 비용 측면에서 참을 수 없는 여러 거래.
인수: 제한된 컴퓨팅 성능으로 증명자의 공격에 저항할 수 있음
이 부분은 증명을 생성하는 데 사용되는 암호화 알고리즘의 복잡성이 기존 컴퓨팅 성능 조건에서 수용 가능한 시간과 경제적 비용으로 격렬하게 해독될 수 없음을 의미합니다.
지식의 지식: 무엇이 증명되고 있는지 모른 채 증명을 구성하는 것은 불가능합니다.
이는 ZK-Rollup에도 매우 중요합니다. 누군가가 비거래 데이터를 기반으로 ZK 증명을 생성하여 메인 체인 계약에 제출하도록 허용할 수 없기 때문입니다.
마지막으로 중요한 것"Zero-Knowledge”:
영지식이란 증명자가 검증자에게 진술(Statement)을 증명할 때 유용한 정보나 증명된 개체 자체와 관련된 정보를 공개하지 않는 것을 의미합니다.
B 가장 간단한 영지식 증명 예 중 하나는 다음과 같습니다.
앨리스는 어떤 금고의 비밀번호를 알고 있다는 것을 밥에게 증명하고 싶어하는데 비밀번호가 금고를 여는 유일한 방법인데 밥에게 금고의 비밀번호를 알려주고 싶지 않은데 어떻게 해야 할까요?
Bob은 금고에 Bob과 그의 전 여자 친구의 지문이 있는 Bob의 전 여자 친구가 쓴 연애 편지가 있다는 것을 알고 있었습니다.
그래서 앨리스는 밥의 등 뒤에서 금고를 열고 러브레터를 꺼내 밥에게 주었다.
이것은 Alice가 금고의 암호를 알고 있음을 증명하고 Alice는 Bob에게 암호가 무엇인지 말하지 않았습니다. 성공!
C ZK-Rollup에 대한 ZK-SNARK 증명을 생성하는 방법은 무엇입니까?
간단히 말해서 ZK-SNARK 증명 생성은 다음 단계로 나뉩니다.
문제의 논리적 검증 규칙 결정(예: 잔액 및 nonce가 요구 사항을 충족하는지 확인 등)
논리적 검증 규칙을 게이트 회로 Circle 문제로 변환
Gate Circuit Circle 문제를 R1CS(rank-1 제약 시스템, 1차 제약 시스템) 형식으로 변환
R1CS를 QAP(2차 산술 프로그램)로 변환
이 기사이 기사。
이 부분이 이전의 모든 부분보다 더 복잡하다고 생각하신다면 맞습니다. 또한 복잡한 것은 현재 ZK-Rollup 솔루션 제공 업체인데, 이는 현재 ZK-Rollup 연구 개발 진행 및 실제 적용이 Optimstic Rollup보다 느린 이유 중 하나입니다. 수학/암호화 전문가 또는 Matter Labs 개발자가 아닌 경우 알아야 할 몇 가지 사항은 다음과 같습니다.
ZK-SNARK 증명을 생성하는 것은 머클 트리를 검증하는 것보다 훨씬 더 많은 계산과 시간이 소요됩니다.
어떤 언어, 컴파일 환경, 가상 머신 및 명령어 세트도 위에서 언급한 프로세스의 완료를 원활하게 지원할 수 없으며 추가 적응이 필요합니다.
첫 번째 요점은 주요 ZK 솔루션 제공업체가 현재 노력하고 있는 방향입니다. 첫 번째는 시간 비용으로 사용 가능한 ZK-Proof를 생성하는 데 1시간이 걸리면 간접 사용자 인출 시간도 길어집니다. 계산 비용에는 두 부분이 포함됩니다. 하나는 생성된 ZK-Proof의 데이터 볼륨이고 다른 하나는 Proof를 검증하는 데 필요한 컴퓨팅 성능입니다. 이 두 부분이 클수록 이더리움에서 더 많은 가스를 소비해야 하며 이는 ZK-Rollup의 최적화 성능에 영향을 미칩니다.
두 번째 요점은 이것이 현재 ZK-Rollup의 개발을 제한하는 주요 이유입니다. EVM 설계 초기에 개발자들은 ZK 기술이 나중에 사용될 것이라는 사실을 전혀 몰랐습니다. 따라서 EVM 작업에 사용 가능한 영지식 증명을 생성하는 것은 거의 불가능하므로 ZK-EVM이 필요합니다.
D ZK가 EVM과 호환되는 것이 왜 그렇게 어려운가요?
DeFillama를 열면 TVL의 최상위 계층 2 솔루션이 모두 OR임을 알 수 있습니다.이러한 OR 솔루션에는 이미 자체 네트워크가 있고 이러한 네트워크는 EVM과 호환되기 때문입니다.개발자는 원활하게 통합할 수 있습니다.Ethereum의 스마트 계약은 다음 위치에 이식됩니다. 그들의 네트워크와 사용자는 또한 스왑, 모기지를 수행하고 네트워크에서 유동성을 제공할 수 있습니다.
그러나 ZK-Rollup은 여전히 이를 달성하기 어렵고 기존의 많은 솔루션은 단순 결제 및 스왑 시나리오만 지원할 수 있습니다.
그 이유는 무엇보다 레이어 1에서 배포된 스마트 컨트랙트의 바이트코드가 모두 이더리움 스토리지(스토리지 아이템)에 저장된다는 점을 분명히 해야 합니다. 그런 다음 트랜잭션은 P2P 네트워크에서 전파되며, 각 트랜잭션에 대해 각 전체 노드는 해당 바이트 코드를 로드하고 동일한 상태를 얻기 위해 EVM에서 실행해야 합니다(트랜잭션은 입력 데이터로 사용됨).
레이어 2에서는 스마트 컨트랙트의 바이트코드도 저장 항목에 저장되지만 사용자의 조작 방식도 동일하다. 그러나 트랜잭션은 체인 아래 중앙 집중식 zkEVM 노드로 전송되며 동시에 zkEVM은 바이트코드를 실행해야 할 뿐만 아니라 트랜잭션이 완료된 후 상태가 올바르게 업데이트되었음을 나타내는 증명을 생성해야 합니다. 마지막으로 레이어 1 계약은 증명을 확인하고 상태를 업데이트할 수 있으며 이때 레이어 2에서 트랜잭션을 다시 실행할 필요가 없습니다.
즉, zk-Rollup에서 트랜잭션을 실행하는 것은 완전히 다른 논리와 경로입니다.동시에 zkEVM은 트랜잭션을 실행하는 동안 zk 회로 증명을 생성하도록 적응합니다.기존 EVM은 다음과 같이 ZK-SNARK 증명을 생성합니다.질문:
ZK-SNARK에서 요구하는 일부 타원 곡선 작업은 지원되지 않습니다.
기존의 가상 머신과 비교하여 EVM에는 회로 설계가 어려운 고유한 opcode가 많이 있습니다.
EVM은 256비트 정수에서 실행되며(가장 일반적인 가상 머신이 32-64비트 정수에서 실행되는 것처럼) 영지식 증명은 "자연스럽게" 프라임 필드에서 실행됩니다.
이는 EVM에서 ZK Proof를 생성하는 문제 중 일부일 뿐이며 OR도 EVM 작업을 수행하기 위해 가상 머신을 구축해야 하지만 트랜잭션 실행을 기반으로 트랜잭션 패키징 및 기타 기능을 완료하기만 하면 되므로 훨씬 간단합니다. ZK-Rollup의 경우 EVM과 호환되면서 ZK-Proof를 생성하는 어려움 외에도 Layer1에서 이 증명을 확인하는 것이 쉽지 않습니다.
ZK-EVM의 난이도에 대해 더 알고 싶다면 다음 기사를 읽어보세요: https://hackmd.io/@yezhang/S1_KMMbGt
위의 내용을 읽은 후 zk-Rollup의 구현이 기술적 어려움이 높다는 것은 부인할 수 없습니다. 그렇다면 더 "간단한" Optimistic Rollup 기술을 직접 사용하지 않는 이유는 무엇입니까?
이제 이 두 롤업 기술을 간단히 비교해 보겠습니다.
6:Optimstic VS ZK
(1) 효율성 최적화(TPS/거래 수수료)
원천
@W3.Hitchhiker 팀의 기여에 감사드립니다!
그림에서 우리는 ZK 체계가 OR 체계보다 더 효율적이라는 것을 알 수 있습니다.그 이유는 무엇입니까?
롤업 체계의 경우 가장 중요한 것은 이더리움 트랜잭션에서 얼마나 많은 레이어 2 트랜잭션 데이터를 전달할 수 있는지이며 이는 두 가지 매개변수와 관련이 있습니다.
Rollup에 의해 압축된 트랜잭션의 가스 소비
이더리움 블록의 최대 가스 한도
그 중 ZK-Rollup 증명의 저장 및 검증은 일정량의 저장 공간과 가스를 소비해야 하지만(신뢰할 수 있는 데이터는 약 500K) 첫 번째 문제를 Rollup으로 해결할 수 있습니다. 그러나 더 나은 트랜잭션 압축과 트랜잭션 데이터 스토리지 소비가 가스 소비의 대부분이기 때문에 ZK-Rollup은 OR 효율성 최적화보다 더 나은 성능을 발휘합니다.
또한 표에서 ZKPort가 최고의 TPS 및 거래 비용 최적화를 가지고 있음을 알 수 있습니다.이는 주로 ZKPort가 사용하는 Validium이 본질적으로 사기 증명을 ZK 증명으로 대체하는 플라즈마 솔루션이기 때문입니다.거래 데이터를 제출하지 않습니다.그 효율성 전적으로 플라즈마 체인의 처리 효율성에 의해 결정되지만 보안 측면에서 데이터 가용성 문제도 직면합니다.
위의 계산은 30 Gwei의 가스 가격을 가정하고 Ethereum 활동이 급증할 때 가스 가격이 어떻게 되는지 알고 있습니다. 그때 롤업, 특히 ZK 체계의 비용 최적화 효과가 더 분명해질 것입니다.
(2) 시간 비용
앞서 Optimtisc Rollup에서 인출하려면 사기 방지 메커니즘으로 인해 7-14일의 제출 기간이 필요하다고 언급했습니다.
물론 Boba Network와 같은 Optimstic Rollup 솔루션에서 제안하는 유동성 풀 메커니즘과 유사하게 Rollup 메커니즘 자체와 독립적인 일부 동작을 통해 철회 기간을 줄일 수 있습니다.
다음과 같은 시나리오를 가정해 보겠습니다.
Alice는 L2에 5ETH 자산을 보유한 OR 사용자입니다.
L1의 또 다른 유동성 풀 B는 ALice와 같은 OR 사용자에게 유동성을 제공하기 위해 전환됩니다.
이제 Alice는 OR에서 모든 자산을 되찾고 싶어하고 B와 거래를 합니다.
Alice는 Bob으로부터 직접 5ETH를 가져가는 동시에 일정 수수료를 지불할 수 있습니다.
7일 후 Alice의 자산이 잠금 해제되고 Alice가 가져간 5ETH가 풀로 반환됩니다.
이것은 유동성 풀에 대한 특정 위험이 있으므로 OR 계약을 모니터링하고 부정직한 제출에 대한 벌금을 받아 위험을 헤지할 수 있으며 동시에 부과된 취급 수수료는 위험을 줄이기 위한 준비금이기도 합니다.
그러나 이 방법은 NFT에 적합하지 않습니다. NFT는 나눌 수 없고 유동성 풀이 단순히 NFT를 사용자에게 복사할 수 없기 때문입니다.
그러나 ZK-Rollup에는 이러한 문제가 없습니다.제출자는 제출 시 자신의 결백을 증명하고 검증 가능한 ZK-SNARK 인증서를 제공해야 합니다.현재 ZK-SNARK 인증서 생성 시간은 몇 분에 이를 수 있습니다. 사용자는 다음 배치가 제출되고 확인될 때까지 기다리기만 하면 됩니다.
시간 비용은 OR의 단점이며 ZK-Rollup의 중요한 장점 중 하나이기도 합니다.
(3) 적응성
Optimsitic과 ZK 모두 복잡한 EVM 계약 호출 작업에 대한 호환성 및 적응 문제에 직면해 있지만 Optimsitic이 구현하기 더 쉽습니다.
Arbiturm 및 Optimsim을 포함한 OR 솔루션에는 Ethereum 메인 체인에서 발생하는 모든 트랜잭션을 처리할 수 있는 EVM 호환 가상 머신이 있습니다. Uniswap/Synthetix/Curve와 같은 일부 OG 수준 DeFi 프로토콜도 OR 네트워크에 배포되었습니다.
EVM 호환 ZK-SNARK를 구성하는 것은 매우 어려운 것으로 입증되었으며 지금까지 공개적으로 사용 가능한 ZK-Rollup 솔루션이 없습니다. 그러나 최근 좋은 소식이 있습니다. zkSync 2.0 퍼블릭 테스트넷이 2월 말에 공식적으로 출시되었으며, 이는 이더리움 테스트넷에서 최초의 EVM 호환 ZK 롤업이기도 합니다. 아마도 ZK Rollup의 공식적인 대규모 실제 사용은 우리가 생각했던 것보다 빠를 것입니다.
(4) 보안
이 질문에 대한 대답은 분명합니다. OR의 보안은 경제학에서 나옵니다. 제대로 작동하기 위해 OR은 언제든지 제출자를 모니터링하고 사기 증거를 제출할 준비를 하기 위해 메인 체인의 유효성 검사기 그룹을 구동하는 합리적인 인센티브 메커니즘을 설계해야 합니다. 제출자에 관해서는 노드가 서약 및 기타 방법을 통해 악행에 대한 해당 대가를 지불하도록 해야 합니다.
ZK의 보안은 블록체인에 대한 신뢰의 기초와 마찬가지로 수학 또는 암호화에서 비롯됩니다. 코드는 악을 행하지 않습니다. 수학과 암호가 제공하는 보증은 인간 본성이 악을 행하지 않을 것이라는 낙관적 믿음보다 훨씬 더 안정적입니다.
물론 롤업이 데이터 가용성 문제를 해결하기 위해 데이터를 메인 체인에 제출하지만 현재 롤업 메커니즘 자체에는 특정 보안 문제가 있습니다. 그러나 트랜잭션 처리, 주문, 압축, 패키징 및 제출을 담당하는 사람에 대해서는 논의하지 않았습니다. Arbitrum, Optimism 및 StarkNet과 같은 일부 현재 주류 솔루션은 자체적으로 실행하는 단일 노드인 시퀀서라는 역할을 사용합니다.이 접근 방식의 결과는 높은 수준의 중앙 집중화입니다.
우리는 분권화가 모든 보안의 전제라는 것을 알고 있습니다.이 시퀀서 모델의 장점은 높은 효율성입니다.롤업이 아직 탐색 단계에 있을 때 신속하게 반복할 수 있습니다.이러한 솔루션은 또한 시퀀서의 분권화 프로세스가 앞으로 차차 시행.. 예를 들어 PoS 또는 dPoS를 사용하여 시퀀서 노드를 선택하면 Metis와 같은 새로운 솔루션이 탐색되었습니다.
(5) 개요
위의 논의를 표로 시각화해 보겠습니다.
전반적으로 OR은 이 단계에서 더 성숙한 솔루션이며 실제로 이더리움 개발자가 이미 Optimstic 및 Arbiturm의 제품을 사용할 수 있습니다. 그러나 사기 방지 메커니즘을 사용하기 때문에 현재 인출 시간과 보안이 의심스럽고 비용 최적화도 ZK보다 약간 열등합니다.
ZK Rollup의 약점은 기본적으로 기술적인 문제이며, 관련 연구에 많은 우수한 개발자들이 투자하고 있어 Vitalik을 비롯한 대부분의 사람들은 ZK Rollup이 향후 더 나은 확장 솔루션이 될 것이라는 데 동의합니다.
7: 롤업은 완벽합니까?
위의 세 가지 유형의 레이어 2 솔루션에 대한 설명을 마친 후 이미 이들에 대해 어느 정도 이해했다고 생각합니다. 사실 글을 쓰는 순서는 개발자가 Layer 2 확장 솔루션을 연구하는 순서이기도 한데, 종종 특정 솔루션의 문제점을 발견한 후 관련 문제를 해결하기 위해 다른 더 나은 솔루션을 제안합니다. 암호화 연구 분야뿐만 아니라 이 프로세스는 모든 엔지니어링 문제로 확장될 수 있습니다.
아이디어는 가장 실행 가능한 솔루션을 찾을 때까지 개발, 테스트, 반복, 최적화됩니다.
이제 Rollup이 우리가 찾고 있는 답인 것 같습니다. 보편성과 데이터 가용성의 문제를 해결함과 동시에 보안과 효율성 측면에서 좋아 보입니다. 그럼 무결점인가요?
대답은 '아니오'입니다. 어떤 솔루션도 완벽할 수 없습니다. 롤업에도 많은 문제가 있습니다. 더 나은 ZK-롤업도 피할 수 없습니다.
(1) 효율성 최적화에는 한계가 있습니다.
롤업과 플라즈마의 주요 차이점에 대해 이야기할 때 데이터 가용성 보장에 대해 이야기했습니다. 롤업은 트랜잭션 데이터를 메인 체인에 제출해야 하는데, 이것이 롤업 방식이 플라즈마를 능가하는 주된 이유입니다.
그러나 다른 한편으로, 온체인 트랜잭션은 롤업이 여전히 이더리움 메인 체인의 용량에 의해 제한됨을 의미합니다.
간단한 계산:
현재 이더리움 블록 최대 가스 한도: 12.5M 가스
온체인에 저장된 바이트당 데이터 비용: 16 가스
블록당 최대 바이트: ~781,000바이트(12500000/16)
Rollup이 ETH 전송을 수행하는 데 필요한 데이터 양: 12바이트(이전 섹션의 가스 비용 참조)
블록당 트랜잭션: ~65,000(781,000바이트/12바이트)
Ethereum의 평균 블록 시간: 13초
TPS:~5000(65,000 tx/13 s)
여기서 우리는 많은 가정을 합니다. 예를 들어 모든 트랜잭션이 단순한 ETH 전송이라고 가정합니다. 실제 트랜잭션에는 복잡한 계약 호출이 많이 포함되며 가스 소비가 더 높아집니다. 그리고 ZK-Rollup의 경우 ZK-Proof 검증 비용도 계산해야 합니다(이 중 절반은 약 500K 가스임).
그럼에도 불구하고 Rollup이 달성할 수 있는 TPS는 약 5000 정도에 불과합니다. 또한 Plasma 메커니즘을 사용하여 가져온 직접적인 효율성 최적화가 Rollup보다 훨씬 높다는 것도 확인했습니다.
이더리움 재단도 이 문제를 잘 알고 있으며 현재 주요 솔루션은 샤딩 + 롤업으로 롤업으로 인한 TPS를 한 단계 더 높일 것입니다.
(2) 유동성의 파편화:
현재 다중 체인 구조의 영향으로 자체 유동성 파편화가 점점 더 심각해졌습니다.
그러나 여러 기술 솔루션과 여러 솔루션의 존재로 인해 향후 롤업 네트워크의 수는 계속 증가할 것이며 이는 더 심각한 유동성 파편화를 가져올 것입니다.
이더리움의 현재 TVL과 레이어 2 네트워크 살펴보기
좋은 소식은 크로스 체인 커뮤니케이션이 이 문제를 해결할 수 있다는 것입니다.대표적인 사건은 Synthetix가 이미 Ethereum 메인 체인과 Optimism의 부채 풀을 병합하는 작업을 진행하고 있다는 것입니다. 이 과정이 순조롭게 순조롭게 마무리된다면 메인체인과 서브체인의 유동성 융합 추세가 어느 정도 촉진될 것으로 판단된다.
결국 합성 자산 프로젝트의 부채 풀 모델은 현재의 일반적인 유동성 풀 모델보다 훨씬 더 복잡하며 Uniswap과 같은 주류 DeFi 프로젝트가 이 프로세스를 계속할 것으로 예상할 수 있습니다.
(3) 통신 장애 및 기술적 장애로 인한 구성 가능성 감소:
이전 질문에서 우리는 유동성을 분리시키는 통신 문제에 대해 이야기했습니다.이 현상은 메인 체인 dapp과 서브 체인 dapp 간의 상호 작용에도 적용됩니다.Ethereum에 구축된 모든 새로운 프로토콜은 레고 블록과 같습니다.다른 프로토콜은 될 수 있습니다. DeFi가 빠르게 성장하는 이유 중 하나입니다.
통신 문제를 해결할 수 없는 경우 하위 체인의 dapp은 자체 생태계를 다시 설정해야 하므로 더 많은 자원 낭비가 발생합니다. 하위 체인과 주 체인 사이뿐만 아니라 하위 체인과 하위 체인 사이에도 통신 메커니즘을 구축해야 합니다.
다시 말하지만 일부 우수한 개발자가 이 작업을 진행하고 있으므로 이러한 작업과 프로세스를 단순화하기를 바랍니다. 결국 Layer1의 작업 자체가 번거롭기 때문에 Layer2의 복잡도가 더해지면 Web3 세상의 문턱은 더욱 높아질 것입니다.
(4) 중앙화 위험
발문
발문
전체 텍스트가 10,000 단어를 초과하여 내 예상을 훨씬 초과했습니다. 이더리움의 확장 자체는 매우 웅장하고 복잡한 주제입니다. 이 기사에서는 Layer2 솔루션의 일부만 관련되어 있습니다. Layer1 확장 솔루션(샤딩)과 Side Chain, Validium 등 기타 Layer2 솔루션은 언급하지 않습니다. 사실 이더리움의 확장은 한 번에 해결할 수 있는 단일 솔루션이 아닙니다. 많은 솔루션 공급자도 여러 경로를 탐색하고 있으며 Polygon과 같은 회사는 다양한 유형의 Layer 2 솔루션에 투자했습니다.
동시에 기사의 많은 것들이 기사의 길이에 의해 제한되며 Layer2와 Layer1 간의 제출에 어떤 종류의 통신 지원이 필요한지와 같이 여전히 탐색해야 합니다. 레이어 1에서 사기 증명/유효성 증명이 구현되는 방식, 다양한 ZK/OR 구현 방식 간의 구체적인 차이점 등 이러한 것들을 이해하는 것은 Layer2, 특히 롤업 확장을 이해하고자 하는 연구자들에게 매우 중요합니다. 이해를 돕고 기사의 일부 개념을 정리하기 위해 보다 일반적인 개요를 만들었습니다.예를 들어 OR/ZK는 트랜잭션 데이터 압축 측면에서 매우 다른 솔루션을 가지고 있습니다. 기사에서 사용된 vitalik의 예는 다음과 같습니다. ZK 솔루션에 더 편향되어 있습니다. 작성 과정에서 우수한 Layer2 콘텐츠도 참조하여 텍스트와 텍스트 끝에 표시했습니다.또한 더 많은 콘텐츠가 나타나 모든 사람이 관련 인식을 확립하는 데 도움이되기를 바랍니다.
마지막으로 우리가 소개한 두 가지 롤업 솔루션의 관점에서 보면,Optimstic Rollup이 시장을 주도했습니다., 사용 가능한 제품을 출시하면서 점차 주류 Dapp을 유치하여 생태계에 통합하고 있으며 관련 개발자의 큰 기여가 이루어진 것은 부인할 수 없습니다. 하지만참조:
참조:
1.An Incomplete Guide to Rollups (Vitalik)
