합의 층 차폐 풀, 프로토콜에 넣는 비공개 송금

Strawmap 그 이후 (장기) · CL-enshrined shielded pool

이더(ETH)를 넣고 빼는 것은 공개하되, 그 안에서 누가 누구에게 얼마를 보냈는지는 숨기는 비공개 송금 공간을 합의 층 규칙에 직접 넣는 구상입니다.

왜 필요한가

이더리움의 거래는 누구나 볼 수 있습니다. 보낸 사람, 받는 사람, 금액이 영구히 남아 급여나 회사 자금 관리처럼 내역을 드러내기 어려운 용도에는 쓰기 힘듭니다. 지금은 스마트 컨트랙트로 만든 차폐 풀(shielded pool)이 이 역할을 맡습니다. 그런데 풀이 여러 개로 나뉘면 한 풀에 섞이는 사람이 줄어 숨는 효과가 약해지고 컨트랙트를 고치려면 관리자 키가 필요해 자금 탈취 위험이 생깁니다. 이 항목은 차폐 풀을 프로토콜 자체에 넣어 두 문제를 함께 풀려는 구상입니다. 풀이 하나면 참여자 전체가 한 무리로 섞여 숨는 효과가 가장 커지고 수정은 관리자 키 대신 하드포크로만 이뤄집니다. 합의 층에 넣는다는 말은 스마트 컨트랙트가 아니라 검증자들이 함께 지키는 합의 규칙에 이 기능을 둔다는 뜻입니다. 실행 층에서는 같은 생각을 시스템 컨트랙트로 구현하는 EIP-8182 제안이 따로 논의되었습니다. Strawmap은 L1 비공개 송금을 장기 목표(North Star)로 적어 두었고 이 항목은 거기에 이르는 여러 길 가운데 하나입니다. 어떤 길이 가장 나은지는 아직 연구 커뮤니티에서 비교하는 단계라 내용이 바뀌거나 빠질 수 있습니다.

어떻게 동작하나

  1. 공개 지갑에서 풀에 넣기 이더를 풀에 예치합니다. 이때 넣은 사람과 금액은 공개되지만 풀 안에서 그 돈을 쓸 수 있는 사람은 드러나지 않습니다.
  2. 풀 안에서 비공개로 보내기 풀 안의 송금은 영지식 증명(zero-knowledge proof)으로 처리합니다. 보낸 사람, 받는 사람, 금액은 숨긴 채 돈이 새로 생기거나 두 번 쓰이지 않았다는 것만 증명합니다.
  3. 공개 지갑으로 빼기 풀에서 돈을 꺼내면 받는 사람과 금액은 다시 공개됩니다. 다만 그 돈이 풀 안에서 어디서 왔는지는 연결되지 않습니다.

← 로드맵