Chaumian eCash는 David Chaum의 연구에서 출발한 디지털 현금 시스템을 통틀어 부르는 말입니다. 지갑은 디지털 코인을 보관하고 사용하는 앱입니다. 보통 mint라고 부르는 발행자로부터 블라인드 서명이 붙은 디지털 코인을 받습니다. 수학적으로 데이터를 가려 특정 코인의 발행과 나중의 사용을 분리합니다. 하지만 코인의 수납이나 상환은 여전히 발행자가 담당하며, 일반적인 온라인 방식에서는 이중 지출도 발행자가 확인합니다.
안나가 일반 결제 앱에서 보는 잔액은 대개 운영자가 관리하는 계좌의 기록입니다. 반면 eCash에서는 가치를 나타내는 디지털 증표를 직접 보유할 수 있습니다. 여기서는 이를 코인이나 토큰이라고 부릅니다. 증표에는 데이터와 프로그램이 발행자의 비밀 데이터로 계산한 인증 정보가 담겨 있습니다. 금속 동전도 아니고, 반드시 새로운 암호화폐인 것도 아닙니다. 목표는 현금에 가까운 결제입니다. 소액을 쓸 때마다 지불한 사람과 쉽게 연결되는 기록을 남길 필요가 없도록 하는 것입니다. David Chaum은 Bitcoin이 등장하기 훨씬 전부터 이 아이디어를 발전시켰고, 자신이 세운 DigiCash에서 실제 서비스로 구현하려 했습니다. [1] [3]
발행자는 흔히 mint, 즉 조폐소라고 불립니다. 여기서는 금속을 찍어 내는 기계가 아니라 서비스를 뜻합니다. 예를 들어 안나가 자금을 보내면 지갑은 그 대가로 디지털 코인을 받습니다. Bitcoin 관련 시스템에서는 금액을 sats로 표시할 수 있습니다. sats는 Bitcoin의 최소 단위인 satoshi를 줄인 표현입니다. 핵심 질문은 코인 발행의 바탕이 된 실제 자금을 누가 보유하느냐입니다. mint가 보유한다면 안나는 발행자에 대한 상환 청구권을 가진 것이지, 자신의 키만으로 관리하는 bitcoin을 가진 것은 아닙니다. 이 키는 Bitcoin 송금에 서명하는 데 쓰이는 비밀 데이터입니다. 같은 sats 잔액이라도 보관 방식은 전혀 다를 수 있습니다. [8] [6] [7]
지갑은 새 코인에 쓸 무작위 비밀 데이터를 만들고, 서명을 받기 전에 수학적으로 가립니다. 발행자는 요청한 액면가를 보고 발행 권한이 있는지 확인하지만 가려진 원본 데이터는 보지 못합니다. 서명을 받은 지갑은 인증의 유효성을 유지하면서 가림을 제거합니다. 이것이 blind signature, 블라인드 서명입니다. 불투명한 봉투 속 종이에 검증 가능한 도장을 찍는다고 생각하면 이해하기 쉽습니다. 실제로는 수학이 그 역할을 합니다. 올바르게 수행된 서명만으로는, 나중에 제시된 코인이 과거 어느 인출에서 나왔는지 발행자가 알아낼 수 없습니다. 구체적인 서명과 검증 방식은 시스템마다 다릅니다. [1] [3] [8]
안나가 페터에게 메시지로 토큰을 보냈다고 해 봅시다. 페터는 필요한 데이터를 받았지만, 안나도 같은 데이터의 복사본을 남겼을 수 있습니다. 그래서 Cashu에서는 수취인의 지갑이 mint에 요청해 받은 코인을 수취인이 준비한 새 코인으로 교환합니다. mint는 기존 코인을 무효화하고 새 코인을 발행합니다. 교환이 성공적으로 끝나야 송금자가 남겨 둔 기존 코인의 복사본을 쓸 수 없게 됩니다. 이 과정은 새 코인과 반납한 코인의 연결을 끊는 데도 도움이 됩니다. QR 코드 이미지나 메시지 전달 완료 표시만으로는 수취인이 해당 가치를 안전하게 확보했다고 볼 수 없습니다. [8] [9]
Double spend는 같은 가치를 반복해서 쓰려는 시도입니다. 온라인 mint는 이미 사용된 코인의 데이터를 기록하고 재사용을 거부합니다. 이로써 사용자가 돈을 단순히 복사하는 것을 막습니다. 그러나 이 데이터베이스만으로 발행자가 충분한 준비금을 보유한다거나, 담보 없이 추가 코인을 발행하지 않는다는 사실까지 증명할 수는 없습니다. 부정한 사용자에 대한 방어와 운영자에 대한 신뢰를 구분해야 합니다. 유효한 암호학적 인증도 준비금 잔액 증명서는 아닙니다. 발행자가 협조를 중단하면 유효한 토큰을 가지고도 자금을 돌려받지 못할 수 있습니다. [2] [6] [8]
인터넷에 연결하지 않고 두 휴대전화 사이에 데이터를 전달하는 것과, 누군가 다른 곳에서 그 데이터를 쓰지 않았는지 안전하게 확인하는 것은 다릅니다. 일부 방식은 오프라인에서도 서명의 출처를 검증할 수 있습니다. 하지만 그것만으로 코인의 현재 사용 여부까지 알 수는 없습니다. Chaum, Amos Fiat, Moni Naor의 초기 연구에는 반복 사용 시 나중에 부정 사용자가 드러날 수 있는 오프라인 현금 방식도 등장합니다. 그렇다고 오늘날 모든 지갑이 이 방식을 쓰는 것은 아닙니다. 오프라인 결제라는 설명을 볼 때는 데이터 전달, 진위 확인, 이중 지출 방지를 나눠 생각해야 합니다. [2] [10]
지갑이 가능한 모든 금액에 맞는 코인을 하나씩 가지고 있을 필요는 없습니다. 여러 액면의 코인을 조합하고 필요하면 교환할 수 있습니다. 잔액이 500 sats이고 300 sats를 보내려 한다고 합시다. 수수료를 제외하면 안나는 합계 300 sats의 코인을 준비해 보내고 200 sats를 남기려는 것입니다. 알맞은 조합이 없다면 Cashu에서 mint에 교환을 요청해 기존 코인을 새 코인으로 바꿀 수 있습니다. 환율을 바꾸는 거래도, 잔돈으로 나눠 이익을 얻는 과정도 아닙니다. 실제 수수료와 지원하는 액면은 해당 시스템의 규칙에 달려 있습니다. [8] [9]
블라인드 서명은 코인의 발행과 지출을 연결하기 어렵게 만듭니다. 그러나 판매자에게 준 배송 주소, 앱 로그인, 네트워크 흔적, 눈에 띄는 시간과 금액의 조합까지 지우지는 않습니다. 별도의 잠금 조건이 없는 일반 토큰은 비밀 데이터를 얻은 사람이 쓸 수 있습니다. 따라서 토큰을 공개하는 것은 입금 주소를 공개하는 것과 다릅니다. 지갑 백업이 모든 문제를 해결한다고 생각해서도 안 됩니다. 예를 들어 Cashu 복구에는 백업 단어뿐 아니라 mint의 협조가 필요할 수 있습니다. 이미 다른 사람이 쓴 가치를 백업으로 되찾거나, 발행자에게 없는 준비금을 채울 수는 없습니다. [3] [11] [12]
GNU Taler는 블라인드 서명으로 고객을 보호하면서도 판매자의 수입을 감사할 수 있도록 설계합니다. 모든 참여자의 모든 활동을 서로에게 숨기는 것이 목적은 아닙니다. Cashu는 mint를 이용하는 Bitcoin 기반 전자 현금 프로토콜을 제공합니다. Fedimint는 여러 관리자로 구성된 연합에 운영을 나눠 맡겨 한 사람이 자금을 통제하지 못하게 합니다. 그래도 충분한 수의 관리자가 공모하면 보관 자금을 위험에 빠뜨리거나 담보 없는 코인을 발행할 수 있습니다. 연합은 신뢰를 분산할 뿐 없애지 않습니다. 비슷한 암호학적 아이디어를 쓴다는 이유만으로 이 프로젝트들을 같은 것으로 볼 수는 없습니다. [4] [5] [6] [13]
Bitcoin은 중앙 발행자 없이 네트워크의 공통 규칙으로 송금을 검증하지만 거래 이력은 공개됩니다. eCash는 일부 결제를 발행자가 제공하는, 사생활을 더 보호하는 환경으로 옮길 수 있습니다. 빠른 결제를 위한 결제 채널 네트워크인 Lightning Network 등을 통해 Bitcoin과 연결할 수도 있습니다. 채널 참여자는 미리 예치한 bitcoin의 배분을 갱신하며, 개별 결제를 매번 Bitcoin의 공개 이력에 기록하지 않아도 됩니다. 그러나 Lightning으로 입출금한다고 mint의 토큰이 자동으로 직접 보관하는 bitcoin으로 바뀌지는 않습니다. 처음에는 세 가지를 물으면 됩니다. 바탕이 되는 자금은 누가 보유하는가, 누가 상환을 거부할 수 있는가, 누가 어떤 결제 정보를 보는가? 답을 함께 살펴봐야 각 eCash가 실제로 제공하는 것을 이해할 수 있습니다. [6] [7] [13] [14]
더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 David Chaum, Blind Signature, DigiCash, Cashu, Fedimint, 이중 지불. 다음 항목에서도 이 글을 참조합니다 DigiCash, Reusable Proofs of Work, The Crypto Anarchist Manifesto, Blind Signature.