심화 · 프라이버시
6장에서 우리는 Etherscan으로 USDC 컨트랙트를 직접 열어봤다. 누구나, 회원가입도 없이, 전 세계 모든 거래와 잔액을 들여다볼 수 있었다. 학습할 때는 이 투명성이 매력이었다. 그런데 입장을 바꿔보자. 우리 회사의 자금 흐름이, 고객의 거래 내역이 전 세계에 실시간 공개된다면?
❓ 이 챕터의 질문
접근제어: 아예 참여자를 제한한다
가장 직관적인 해법부터요. 아무나 못 들어오게 하면 됩니다.
지금까지 배운 이더리움은 퍼블릭 체인이에요. 누구나 노드를 돌리고, 누구나 트랜잭션을 보내고, 누구나 데이터를 읽을 수 있어요. 반대로 프라이빗(허가형) 체인은 허가받은 참여자만 노드가 될 수 있어요. 3장에서 본 BFT 합의(Hyperledger Besu)가 바로 이런 환경을 위한 거예요. 참여자가 누구인지 아니까, 막대한 채굴 비용 대신 투표로 합의할 수 있는 거고요.
| 퍼블릭 체인 | 허가형 체인 | |
|---|---|---|
| 참여 | 누구나 | 허가된 기관만 |
| 데이터 열람 | 전 세계 공개 | 참여자 내부로 제한 |
| 합의 | PoW / PoS | BFT (즉시 확정) |
| 예시 | 이더리움, 비트코인 | Hyperledger Besu·Fabric 컨소시엄 |
허가형 체인 안에서도 한 단계 더 쪼갤 수 있어요. Channel(Hyperledger Fabric의 개념)은 같은 네트워크 안에서 특정 참여자들끼리만 공유하는 부분 장부예요. 은행 A·B·C가 한 컨소시엄에 있어도, A와 B 사이의 거래는 둘만 보는 채널에 기록하는 식이에요.
데이터 제어: 장부에는 흔적만, 내용은 당사자에게만
다음 단계는 같은 네트워크 안에서 데이터 자체를 가리는 거예요. 핵심 아이디어는 단순해요. 체인 위에는 "거래가 있었다"는 증거(해시)만 올리고, 실제 내용은 당사자끼리만 주고받는다.
각 참여자는 Besu(블록체인 클라이언트)와 Tessera(프라이빗 트랜잭션 매니저)를 한 쌍으로 운영해요. 동작 방식은 이래요.
- A은행이 B은행에게 프라이빗 트랜잭션을 보내요.
- 실제 페이로드(금액, 조건)는 Tessera가 암호화해서 A와 B의 Tessera에만 저장해요.
- 그 페이로드의 해시는 Besu가 공개 트랜잭션으로 체인에 올려요. 암호화·전달은 Tessera, 체인 기록은 Besu가 맡는 거예요.
- 다른 참여자들은 "무언가 거래가 있었다"는 것과 보낸 주소만 알 뿐, 금액·조건은 볼 수 없어요.
3장의 블록 해시 연결을 떠올리면 구조가 익숙할 거예요. 해시가 체인에 박혀 있으니 당사자들이 나중에 내용을 조작할 수 없고(변조 검증), 내용 자체는 체인 밖에 있으니 비밀이 유지돼요.
Paladin은 이 접근을 한 단계 발전시킨 프로젝트예요(LF Decentralized Trust, Besu 진영). Tessera가 "가린다/안 가린다"의 이분법이라면, Paladin은 토큰·계약 단위로 프라이버시 방식을 골라 붙이는 프로그래머블 프라이버시를 지향해요. 어떤 자산은 당사자 간 비공개로, 어떤 자산은 영지식증명 기반으로, 같은 EVM 네트워크 위에서요.
영지식증명: 보여주지 않고 증명한다
마지막 단계가 가장 강력해요. 데이터를 가리는 게 아니라, 데이터를 공개하지 않은 채로 "그 데이터에 대한 사실"만 증명하는 거예요.
영지식증명(ZKP, Zero-Knowledge Proof) 은 이런 걸 가능하게 해요.
- "내 잔액이 얼마인지"는 밝히지 않고 "송금에 충분한 잔액이 있다"만 증명
- "내 나이가 몇 살인지"는 밝히지 않고 "성인이다"만 증명
- "거래 내역 전체"는 밝히지 않고 "자금세탁 블랙리스트와 무관하다"만 증명
직관적으로 이상하게 들리지만, 수학적으로 성립해요. 증명자(Prover)가 비밀 입력으로 증명을 생성하면, 검증자(Verifier)는 비밀을 보지 않고도 그 증명이 참인지 확인할 수 있어요.
블록체인에서 가장 널리 쓰이는 형태가 zk-SNARK예요. 이름이 길지만 핵심 성질은 두 개예요.
- Succinct(간결): 증명이 아주 작고, 검증이 빨라요. 원본 계산이 아무리 커도요.
- Non-interactive(비대화형): 증명자와 검증자가 주고받을 필요 없이, 증명 한 번 올리면 누구나 검증해요. 블록체인에 딱 맞는 성질이에요.
검증이 빠르고 증명이 작다는 성질은 프라이버시를 넘어 확장성에도 쓰여요. "수천 건의 거래를 올바르게 처리했다"는 증명 하나만 체인에 올리는 방식인데, 이게 바로 Layer 2 챕터에서 다룰 ZK Rollup이에요.
핵심 요약
| 단계 | 기술 | 핵심 아이디어 |
|---|---|---|
| 접근제어 | 허가형 체인, Channel | 참여자 자체를 제한 |
| 데이터 제어 | Tessera, Paladin | 체인엔 해시만, 내용은 당사자만 |
| 영지식증명 | ZKP, zk-SNARK | 데이터를 공개하지 않고 사실만 증명 |
세 단계는 배타적이지 않아요. 실제 금융 인프라는 허가형 네트워크 위에 데이터 제어를 얹고, 민감한 검증에 ZKP를 쓰는 식으로 조합해요.
📚 참고자료 보기
- Hyperledger Besu: Private transactions: Tessera 기반 프라이빗 트랜잭션 공식 문서
- Paladin (LF Decentralized Trust): 프로그래머블 프라이버시 프로젝트
- ethereum.org: Zero-knowledge proofs: ZKP 개요 (한국어)
- Vitalik Buterin: An approximate introduction to how zk-SNARKs are possible: zk-SNARK 원리 해설