[이더리움] 2주차 과제 기본질문 - Advanced Part 2.
4. 영지식 증명에 대해 어린아이에게 설명해 준다고 생각하고 본인만의 언어로 설명해주세요.
영지식 증명은 말 그대로 지식이 없이 해당 내용을 증명하는 것이다. 비유를 통해 설명을 해 보도록 한다.
증명자 재석은 어떤 동굴 안에 비밀의 문을 열 수 있는 열쇠를 가지고 있다. 동굴은 다음과 같은 고리 모양으로 되어 있으며 가운데 비밀의 문이 있다. 입구에서는 비밀의 문이 보이지 않는다. 검증자 명수는 키를 가지고 있을 수도 있고, 아닐 수도 있다. 명수가 키를 가지고 있는지 여부를 재석은 알아내야 하지만 명수는 그 사실을 알려주지 않는다.
이러한 상황 속에서 명수가 아무런 정보도 주지 않고 키를 가지고 있는지 재석이 증명하려면 다음과 같이 해볼 수가 있다.
먼저 명수가 A 또는 B 문으로 들어간다. 재석은 명수가 어떤 문으로 들어갔는지 알 수 없다. 명수가 동굴로 들어간 이후 재석은 동굴 입구에서 명수에게 A 또는 B 중 지정된 하나의 문으로 나오라고 한다. 명수는 그 말을 듣고 그 문으로 나온다.
이 때 명수가 키를 가지고 있다면 어느 문으로 들어갔든지 간에 재석이 원하는 문으로 나올 수가 있지만, 키를 가지지 않고 있다면 재석이 원하는 문으로 나올 확률은 50%이다. 재석이 이 실험을 여러 차례 반복하면 명수가 열쇠를 가지고 있는지 없는지를 100%까지는 알 수 없지만 99% 이상의 확률로 추론할 수 있다.
재석이 아무리 이 절차를 명수에게 시켜도 명수는 재석에게 정보를 주지 않는다. 이는 오로지 재석만이 명수가 키를 가지고 있는지 없는지를 알 수 있는 유효한 증명이 되는 것이다.
5. 이더리움 확장성 개선 방법으로 옵티미스틱 롤업(Optimistic Rollup)과 ZkRollup(영지식 롤업)이 있습니다. 둘의 차이가 어떻게 되는지 설명해주세요.
zk롤업
먼저 zk롤업은 기존 롤업에 영지식증명을 더한 것이다. 그렇다면 롤업에 대해서 먼저 알아보고 가자.
롤업은 주요 이더리움 체인(Layer 1) 외부에서 트랜잭션 실행을 수행하지만 레이어 1에 트랜잭션 데이터를 게시하는 솔루션이다. 트랜잭션 데이터가 레이어 1에 있으므로 이를 통해 롤업을 레이어 1에서 보호할 수 있다.
롤업의 세 가지 속성은 다음과 같다.
- 레이어 1 외부에서 트랜잭션 실행
- 데이터 또는 트랜잭션 증거는 레이어 1에 위치
- 레이어 1의 트랜잭션 데이터를 사용하여 레이어 2에서 올바른 트랜잭션 실행을 시행할 수 있는 레이어 1의 롤업 스마트 컨트랙트
롤업은 관리자가 롤업 계약에 채권을 스테이킹해야 한다. 이는 운영자가 트랜잭션을 올바르게 확인하고 실행하도록 장려한다.
다시 zk롤업으로 돌아와서, zk롤업의 블록 생성자(aggregator)는 트랜잭션과 상태 루트값 뿐만 아니라, 상태 루트값을 변경한 영지식 증거를 동시에 루트 체인에 업로드 한다. 영지식 증거가 첨부되었기 때문에 zk롤업의 경우 별도의 연산 검증이 필요가 없고, 따라서 빠르게 롤업 블록을 확정할 수 있다.
zk롤업은 레이어 2에서 이더리움으로 자금을 이동시키고자 할 때 옵티미스틱 롤업보다 훨씬 시간이 짧게 걸리는 완결성 장점이 크다. 또한 옵티미스틱 롤업은 현재 체인 안에서 보안성이 보장되는 자금이 일정 금액으로 제한되는 상황이지만, zk롤업은 그러한 제한이 없다.
따라서 zk롤업은 결제에 더 적합한 특징을 가지고 있다. zk sync와 같은 결제 서비스가 메인넷으로 나오게 되었고, gitcoin 및 loopring에서 결제 및 코인 간 교환에 실제로 zk롤업을 사용하지만 이 이상의 서비스에는 현재 제약이 있다.
영지식 롤업은 zk롤업 이라고도 하며, 수백 개의 전송을 오프체인으로 묶거나 롤업을 하고 SNARK로 알려진 암호 증명을 생성한다. 즉, zk 롤업은 영지식 증명이라는 복잡한 수학 및 암호학적 구조를 통해 '이것이 레이어 2에서 왔을 수밖에 없다'는 것을 증명하는 것이다. 이를 유효성 증명이라고 하며 레이어 1에 게시된다. zk롤업 스마트 컨트랙트의 레이어 2의 모든 전송상태를 유지하며 이 상태는 유효성 증명으로만 업데이트 할 수 있다. 즉, zk 롤업은 모든 트랜잭션 데이터 대신 유효성 증명만 필요하다. zk롤업을 사용하면 더 적은 데이터가 포함되기 때문에 블록 검증이 더 빠르고 저렴하다.
옵티미스틱 롤업
롤업의 블록 생산자(aggregator, block producer)는 유저들의 트랜잭션을 모아 연산을 해서 상태 루트(state root)를 구하고, 트랜잭션 전체와 상태 루트값을 이더리움 메인체인에 기록한다. 이때 트랜잭션 자체가 모두 올라가며 블록 생산자는 누구나 될 수 있기 때문에 데이터가 불가용한 상황은 발생되기 어렵다.
트랜잭션 모두가 이더리움 메인체인에 기록된다는 점을 제외하면 상호운용성과 관련된 모든 아키텍처는 플라즈마 혹은 샤딩과 같다.
이더리움 메인체인에 기록된 상태 루트와 트랜잭션을 누구나 검증할 수 있고, 일정한 기간이 지나기 전까지 확정되지 않는다. 이러한 구조 때문에 롤업에서 블록 생산자(aggregator) 혹은 유저들이 만들어낸 이중 지불 트랜잭션이 확정되기 어렵다.
옵티미스틱 롤업의 경우 트랜잭션 전체를 루트체인에 모두 기록한다는 점과 기록하는 당사자인 블록 생산자(aggregator)가 따로 정해지지 않고 누구나 될 수 있다. 옵티미스틱 롤업은 모든 트랜잭션을 루트체인에 업로드 함으로써 데이터 불가용 상황을 막는다.
옵티미스틱 롤업(OR)은 이더리움의 기본 레이어에서 실행되지 않고 그 위에서 실행되는 레이어2 구성의 한 유형이다. 이더리움으로 보안을 유지하면서 규모에 맞는 스마트 컨트랙트를 실행할 수 있게 해준다. 이러한 구조는 플라즈마와 유사하지만 플라즈마의 거의 무한한 확장성을 닮아 OVM(Optimistic Virtual Machine)이라는 EVM 호환 가상 머신을 실행한다. 즉, OVM을 통해 이더리움이 할 수 있는 모든 것을 실행할 수 있다.
사기 증명(fraud proof) : OR은 진위 확인을 위해 모든 거래내역을 이더리움에 전송하는 방식을 택한다. 만약 의심가는 거래가 발생하면 사용자나 네트워크 검증자가 이더리움에서 트랜잭션을 재실행하며 값을 하나하나 대조하는 것이다. 한편, 레이어 2의 특정 트랜잭션 관련 상태를 아는 컨트랙트인 '상태 관리자'가 있고, '실행 관리자'는 레이어 2의 상태를 상태 관리자를 통해서만 확인한다. 만약, 레이어 2에서 온 것이 아닌 것으로 판명나는 경우 프로세스를 멈춰버린다.
참고 자료
https://ko.wikipedia.org/wiki/%EC%98%81%EC%A7%80%EC%8B%9D_%EC%A6%9D%EB%AA%85
https://m.blog.naver.com/mage7th/222456796052