제트캐시라고 불리는 Zcash 는 따라서 보안과 매우 밀접한 관련이 있습니다.
Zcash가 사용하는 알고리즘은 영지식 증명(zero-knowledge proof) 방식을 쓰고 있습니다. 영 지식 증명이란 말 그대로 아무것도 알려주지도 않으면서 상대가 정직한지 정직 하지 않은지 판별해 낼 수 있다는 것을 말합니다.

 

 비교하자면 비트코인은 기본적으로 모든 것을 공개합니다. 하지만 제트캐시는 수신자, 송신자, 전송 금액등의 정보를 노출하지 않으면서 해당 트랜잭션의 유효성을 송수신 노드 외의 다른 노드들에게 알릴 수 있습니다. 하지만 여기에도 여러가지 기능이 있으니 이 부분은 작동 방식에서 알려드리겠습니다.

이렇게 영-지식 증명을 해내기 위해서 제트캐시는 zk-SNARKs 라는 라이브러리를 이용해 증명자와 상대(검증자) 사이의 상호작용 없이 증명 될 수 있게 됩니다.

 

zk-SNARKs 란?

Zcash는 처음으로 영지식 증명방법을 이용해서 만들어졌습니다. 그 Zcash만의 영지식 증명방법이 바로 zk-SNARKs 입니다.
우리가 흔히 알고 있는 비트코인은 트랜잭션의 유효성을 검증할때 그 안에 있는 기록들을 빠짐없이 검사합니다. 다만 Zcash는 정보를 주지 않고 임의의 좌표를 가지고 서로 대입을 해봄으로써 증명을 합니다. 그래서 트랜잭션의 정보를 공개하지 않고도 유효성을 검증해 볼 수 있는 겁니다.

 

zk_SNARKs 검증 방법

zk_SNARK가 작동하는 방식은 아래와 같습니다.

 

계산 → 사칙 연산 → R1CS → QAP → zk-SNARK

 

예를 들어(a+b)*b*c  라는 방정식이 있습니다.

 

 

 컴퓨터는 먼저 작은 연산을 나누어 사칙연산을 만듭니다. 그리고 R1CS 라고 하는 것을 만들어 좌-우로 옮겨가며 잘 만들어 졌는지 확인합니다. 이때 제약 조건을 점검해야 하는데 이때 QAP 방식을 이용합니다.

 

각 게이트마다 들어가는 변수가 방정식의 해가 될수 있게 만듭니다. (P(1) = x-1) 그리고 이를 모아 하나의 방정식을 만듭니다. 예를 한번 보겠습니다. T(x) = (x — 1)(x — 2)(x — 3) 그렇다면 P가 T로 나누어 떨어지는 것을 볼 수 있습니다.

이제 이 만들어진 다항식으로 증명시에 다항식간의 비교가 이루어 집니다. 검증자와 상대자 간의 다항식이 같다면 특정좌표 s를 줘도 같은 값이 나오겠지만 다른 다항식이라면 높은 확률로 다른 점을 나타낼 것입니다. 두 다항식을 비교하는 작업은

 

‘서로 다른 다항식은 거의 대부분의 점에서 다르다’

 

라는 Schwartz-Zippel Lemma에 따라 임의의 점 s에 대해서 두개의 다항식이 같은 값을 가진다는 것을 보입니다.

즉, QAP 형태로 문제가 변형되면, 증명 과정에 있어서 문제 전체가 필요하지 않고 특정 포인트 s에 대입한 값만 비교하면 되기 때문에, 기존 증명 과정에 비해 훨씬 간결해 집니다.

실제로 두 다항식을 비교하는 과정에서 Homomorphic Hidings 이나 Pairings on Elliptic Curves 등의 기법을 사용합니다.

 

작동방식

 

 

트랜잭션 유형을 두가지로 나뉩니다.
Zcash 주소는 비밀 (z-주소) 또는 투명 (t-주소) 두가지 입니다. Z-주소는 “z,” 로 시작하고 t-주소는 “t”로 시작합니다.

위 그림은 자금이 각 주소마다 이동하는 유형을 4가지로 나눈 것을 보여줍니다. z -> t 로 간 자금은 input 정보를 제공해 주지 않습니다. t -> z 로 간 자금은 output 정보를 제공해 주지 않습니다. 더 자세하게 알고 싶으시면 링크를 눌러 보세요.


Zcash에서 채굴방식


제트캐시의 채굴 방식은 POW 방식의 채굴방식으로 이루어 집니다.
다른 채굴자들과 경쟁해서 이긴 채굴자가 블록을 생성하고 수수료를 받아가는 방식입니다.

 

[1] https://z.cash/ko_KR/technology/zksnarks/

[2] https://z.cash/ko_KR/technology/

[3] 제트캐시 깃헙 : https://github.com/zcash/zcash/tree/master/src/snark

[4]  위키백과 (영지식 증명) https://ko.wikipedia.org/wiki/%EC%98%81%EC%A7%80%EC%8B%9D_%EC%A6%9D%EB%AA%85

[5] 미디엄에서 정리해 놓은 글 : https://medium.com/ai-networkkr/블록체인에서의-개인정보보호-기술-zk-snark-1-de5804e9b50e

 

 

0

You may also like

[퀀트] Making Quant System – daily report
블록체인의 미래와 비즈니스 모델
메인넷 분석 – 스텔라
[퀀트] Making Quant System 4
메인넷분석 – 메타디움
[퀀트] Making Quant System 3
이더리움 코어 개발 11/01 요약
이더리움 코어 개발 10.25 요약
이더리움 코어 개발 10.18 요약
[블록체인 코어개발] 08.17 스터디
[퀀트] Making Quant System 2
[블록체인 코어개발] 08.10 스터디

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다