🔒심화

심화 · 프라이버시

6장에서 우리는 Etherscan으로 USDC 컨트랙트를 직접 열어봤다. 누구나, 회원가입도 없이, 전 세계 모든 거래와 잔액을 들여다볼 수 있었다. 학습할 때는 이 투명성이 매력이었다. 그런데 입장을 바꿔보자. 우리 회사의 자금 흐름이, 고객의 거래 내역이 전 세계에 실시간 공개된다면?

이 챕터의 질문

모든 거래가 공개되는 블록체인을, 비밀유지 의무가 있는 금융기관이 쓸 수 있을까?

접근제어: 아예 참여자를 제한한다

가장 직관적인 해법부터요. 아무나 못 들어오게 하면 됩니다.

지금까지 배운 이더리움은 퍼블릭 체인이에요. 누구나 노드를 돌리고, 누구나 트랜잭션을 보내고, 누구나 데이터를 읽을 수 있어요. 반대로 프라이빗(허가형) 체인은 허가받은 참여자만 노드가 될 수 있어요. 3장에서 본 BFT 합의(Hyperledger Besu)가 바로 이런 환경을 위한 거예요. 참여자가 누구인지 아니까, 막대한 채굴 비용 대신 투표로 합의할 수 있는 거고요.

퍼블릭 체인허가형 체인
참여누구나허가된 기관만
데이터 열람전 세계 공개참여자 내부로 제한
합의PoW / PoSBFT (즉시 확정)
예시이더리움, 비트코인Hyperledger Besu·Fabric 컨소시엄
퍼블릭 체인허가형 체인누구나 노드 참여노드익명노드익명노드익명노드익명노드익명자유롭게 진입 / 이탈전 세계 공개모든 거래를 누구나 열람허가된 기관만 참여은행 A은행 B은행 CBFT 합의로 블록 확정검증된 노드 간 BFT 합의내부로 제한참여 기관만 거래 열람
퍼블릭 체인은 누구나 노드로 참여하고 전 세계에 공개된다. 허가형 체인은 검증된 기관만 참여하고 내부로 제한된다

허가형 체인 안에서도 한 단계 더 쪼갤 수 있어요. Channel(Hyperledger Fabric의 개념)은 같은 네트워크 안에서 특정 참여자들끼리만 공유하는 부분 장부예요. 은행 A·B·C가 한 컨소시엄에 있어도, A와 B 사이의 거래는 둘만 보는 채널에 기록하는 식이에요.

데이터 제어: 장부에는 흔적만, 내용은 당사자에게만

다음 단계는 같은 네트워크 안에서 데이터 자체를 가리는 거예요. 핵심 아이디어는 단순해요. 체인 위에는 "거래가 있었다"는 증거(해시)만 올리고, 실제 내용은 당사자끼리만 주고받는다.

각 참여자는 Besu(블록체인 클라이언트)와 Tessera(프라이빗 트랜잭션 매니저)를 한 쌍으로 운영해요. 동작 방식은 이래요.

  1. A은행이 B은행에게 프라이빗 트랜잭션을 보내요.
  2. 실제 페이로드(금액, 조건)는 Tessera가 암호화해서 A와 B의 Tessera에만 저장해요.
  3. 그 페이로드의 해시는 Besu가 공개 트랜잭션으로 체인에 올려요. 암호화·전달은 Tessera, 체인 기록은 Besu가 맡는 거예요.
  4. 다른 참여자들은 "무언가 거래가 있었다"는 것과 보낸 주소만 알 뿐, 금액·조건은 볼 수 없어요.

3장의 블록 해시 연결을 떠올리면 구조가 익숙할 거예요. 해시가 체인에 박혀 있으니 당사자들이 나중에 내용을 조작할 수 없고(변조 검증), 내용 자체는 체인 밖에 있으니 비밀이 유지돼요.

A은행 (송신자)Besu체인 기록Tessera암복호·전달B은행 (수신자)Tessera암복호·전달Besu체인 기록체인 밖, 두 은행만 보관암호화한 거래 내용 직접 전달체인에 공개 기록① Besu가 해시를블록체인 (공유 원장)해시(증거)만 기록 · 0x7a3f…② 합의로 전 노드에 전파C은행거래 사실만 확인D은행거래 사실만 확인내용은 볼 수 없음금액·조건 비공개※ 금액·조건은 가렸지만, 수수료(가스)를 낸 송신자(A)의 주소는 체인에 그대로 공개돼요.거래 당사자가 누구인지까지 숨기려면 privacy group이 필요해요.
실제 내용(금액·조건)은 A·B의 Tessera에만 암호화 저장되고, 체인에는 Besu가 올린 해시만 남는다. 다른 참여자는 거래 사실과 송신자 주소만 본다

Paladin은 이 접근을 한 단계 발전시킨 프로젝트예요(LF Decentralized Trust, Besu 진영). Tessera가 "가린다/안 가린다"의 이분법이라면, Paladin은 토큰·계약 단위로 프라이버시 방식을 골라 붙이는 프로그래머블 프라이버시를 지향해요. 어떤 자산은 당사자 간 비공개로, 어떤 자산은 영지식증명 기반으로, 같은 EVM 네트워크 위에서요.

영지식증명: 보여주지 않고 증명한다

마지막 단계가 가장 강력해요. 데이터를 가리는 게 아니라, 데이터를 공개하지 않은 채로 "그 데이터에 대한 사실"만 증명하는 거예요.

영지식증명(ZKP, Zero-Knowledge Proof) 은 이런 걸 가능하게 해요.

  • "내 잔액이 얼마인지"는 밝히지 않고 "송금에 충분한 잔액이 있다"만 증명
  • "내 나이가 몇 살인지"는 밝히지 않고 "성인이다"만 증명
  • "거래 내역 전체"는 밝히지 않고 "자금세탁 블랙리스트와 무관하다"만 증명

직관적으로 이상하게 들리지만, 수학적으로 성립해요. 증명자(Prover)가 비밀 입력으로 증명을 생성하면, 검증자(Verifier)는 비밀을 보지 않고도 그 증명이 참인지 확인할 수 있어요.

공개 명제 (둘 다 아는 조건)예: 잔액 ≥ 기준값증명자 (Prover)비밀 입력 🔒예: 실제 잔액 (숨김)증명 생성증명 (Proof)비밀 없이 '참'만 담음검증자 (Verifier)증명 검증비밀을 보지 않고 대조증명만 전달비밀은 넘어가지 않음통과 (true)조건을 만족실패 (false)가짜 증명은 못 속임
양쪽은 공개 명제(예: 잔액 ≥ 기준값)를 공유한다. 증명자는 실제 잔액은 숨긴 채 '참'이라는 증명만 만들고, 검증자는 비밀 없이 증명만 대조한다. 조건을 만족하면 통과(true), 거짓 증명은 통과시키지 않는다(false). ※ 증명을 한 번 만들어 그대로 올리는 비대화형(NIZK) 기준.

블록체인에서 가장 널리 쓰이는 형태가 zk-SNARK예요. 이름이 길지만 핵심 성질은 두 개예요.

  • Succinct(간결): 증명이 아주 작고, 검증이 빨라요. 원본 계산이 아무리 커도요.
  • Non-interactive(비대화형): 증명자와 검증자가 주고받을 필요 없이, 증명 한 번 올리면 누구나 검증해요. 블록체인에 딱 맞는 성질이에요.

검증이 빠르고 증명이 작다는 성질은 프라이버시를 넘어 확장성에도 쓰여요. "수천 건의 거래를 올바르게 처리했다"는 증명 하나만 체인에 올리는 방식인데, 이게 바로 Layer 2 챕터에서 다룰 ZK Rollup이에요.

핵심 요약

단계기술핵심 아이디어
접근제어허가형 체인, Channel참여자 자체를 제한
데이터 제어Tessera, Paladin체인엔 해시만, 내용은 당사자만
영지식증명ZKP, zk-SNARK데이터를 공개하지 않고 사실만 증명

세 단계는 배타적이지 않아요. 실제 금융 인프라는 허가형 네트워크 위에 데이터 제어를 얹고, 민감한 검증에 ZKP를 쓰는 식으로 조합해요.

📚 참고자료 보기