빅터가 처음 버튼을 눌렀을 때, 페기는 빅터에게 버튼이 활성화되었다고 알린다. 이 시점에서 빅터는 페기가 운이 좋아 답을 맞췄거나 실제로 눈으로 보았다거나 둘 중 하나로 생각할 수 있다. 어느 쪽이든 마찬가지로 가능성은 동일하다.
페기가 부정행위를 할 경우를 위해, 두 사람은 여러 번의 라운드를 진행할 수 있다. 빅터는 매번 같은 버튼을 누르거나 다른 버튼을 누를 수 있다. 만약 페기가 추측에 의지한다면 속임수는 금방 드러날 것이다. 정확하게 추측할 확률은 매 라운드마다 점점 줄어든다. 이 과정은 허용 가능한 확률에 도달하고 싶은 횟수만큼 반복하여 실행할 수 있다.
이 시나리오는 페기가 버튼을 누른 시간과 버튼의 효과를 알고 있음을 빅터에게 증명한다. 그리고 빅터가 알아야 할 것은 이것이 전부다. 실험에서는 버튼의 효과나 페기가 어떻게 버튼을 관찰할 수 있는지를 밝히지 않는다. 버튼이 다른 효과가 있음을 증명하지만, 빅터는 그것이 무엇인지를 알 필요가 없다.
증명과 확률
여기서 핵심은 빅터가 어떤 버튼을 누를지 통제할 수 있지만 버튼의 효과를 모른다는 것이다. 그는 피드백 루프를 완성하기 위해 페기에 의존한다. 동시에 빅터는 페기가 어떤 버튼이 눌러졌는지 합법적으로 확인할 수 있음에 대해 높은 확률로 판단할 수 있는 능력을 갖게 된다. 이점이 바로 우리가 영지식 증명이 ‘결정론적’ 증명이 아닌 ‘확률론적’ 증명이라고 말하는 이유이다.페기와 빅터의 시나리오에서 주목해야 할 점은 이것이 상호 증명이라는 점이다. 이 모델에서 검증자는 자유롭게 증명자에게 질문할 수 있다. 증명자가 자체적으로 검증 프로세스를 수행하고 검증자와의 상호작용하지 않고 증명을 전송하는 비상호증명과는 대조적이다. 두 스타일 모드 ZKP를 사용하여 적용할 수 있다.
ZKP와 함께 미래로 향하다
영지식 증명은 계속 확장하고 있는 분야이며, 흥미롭고 불확실한 영역을 탐험하는 지식이다. 가장 일반적인 공통 프로토콜은 영지식 스나크(zk-SNARK) 또는 간결하고 비 상호적인 영지식 논증(Zero Knowledge Succinct Non-Interactive Argument of Knowledge)이다. 영지식 스나크에 대해 알아보려면 지캐시(z-Cash) 프로젝트를 확인해보라.다음은 추가적인 연구를 위한 조언이다.
- 블록체인에서 ZKP를 실제로 적용하려면 미나(Mina) 프로젝트를 살펴보라.
- ZKP는 성능 최적화가 핵심인 이더리움 2 단계에서도 중요한 역할을 한다. 그 분야의 특정 프로젝트에 대해 폴리곤의 나이트폴(Nightfall) 프로젝트를 고려해 보라.
- 작업 코드와 라이브러리는 질크(Zilch) 프로젝트를 참조하라.
- 이 분야의 주류기업이 작업하는 방법은 오쓰0(Auth0)의 작업과 MATTR 프로젝트를 살펴보라.
영지식 증명에 대한 기초를 다지기 가장 좋은 곳은 여전히 오리지널 ZKP 백서이다. 백서를 살펴보면 실제로 공격자가 NP 시간에 증명을 스푸핑하는 능력을 제한하기 위해 증명시스템에 계산 시간 요소를 도입할 수 있는 방법을 생각하면서 계속되는 지적인 논쟁에 접근할 수 있다. 모든 것이 여기서부터 시작한다. 그리고 우리는 아이디어의 가능성을 실현하기 위해 코드와 인프라를 구현하는 위치에 있다.
editor@itworld.co.kr