앞으로 지갑은 어떻게 발전할까?
사례로 알아보는 7가지 요구사항
지갑은 비트코인 출시 이후로 다양한 형태로 발전해왔다. 본 글에서는 이러한 다양한 지갑에서 구현된 기능과 앞으로 필요한 기능에 어떤 것들이 있을지를 고민하며 관련 사례들을 알아보고 필요한 요구사항을 작성하였다.
Intro
블록체인은 탈중앙화 이슈를 가지기 때문에, 기존 시스템과 같은 효과를 가지더라도 새롭게 고민해야 하는 이슈가 많다. 확장성이나 스마트 컨트랙트 환경, 프라이버시, 오라클과 같은 이슈에 대한 기술이 지난 5년간 매우 빠르게 발전해 나가는 것을 업계 종사자라면 모두가 느끼고 있을 것이다.
반면, 지갑은 탈중앙화 이슈를 해결해서 개발을 해야하는 상황과 마주치지는 않는다. 플랫폼이나 네트워크에서 통용되는 트랜잭션을 생성하고 키를 관리하는 것이 지갑의 주된 역할이기 때문이다. 하지만, 사용자가 De-Fi나 NFT와 같은 새로운 서비스를 접하기 위한 진입점이라는 점에서 지갑의 역할은 앞으로 점점 더 커질 것이다.
지갑은 비트코인이 출시한 이래, PC용 지갑, 웹 지갑, 거래소 지갑, 모바일 앱 지갑, 하드웨어 지갑, 스마트 컨트랙트 지갑 등 다양한 형태의 지갑이 출시되었다. 이들 간에는 공통된 기능도 있는 반면에 각기 존재하는 특성으로 인해 사용자에게 줄 수 있는 편의성 및 보안성이 다르다. 어떠한 형태의 지갑이 가장 좋다고 말할 수는 없으나, 여러가지 방향에서 고민하고 경쟁하다보면 사용자에게 가장 좋은 지갑이 탄생하지 않을까한다.
지갑의 의미와 기능
잠시 실물 지갑의 역할을 생각해보자. 일반적으로 지갑에는 현금과 다수의 카드, 신분증 혹은 운전면허증, 각종 쿠폰과 영수증 등이 보관되어있다. 이것을 역할적으로 분류해보면 (1) 지급 결제 수단, (2) 자격 및 멤버쉽 증명, (3) 활동 내역으로 구분할 수 있다.
블록체인 지갑과 대비해보면 (1)은 트랜잭션 생성 기능, (2)는 암호 화폐보다는 DID를 위한 디지털 지갑, (3)의 경우는 블록체인 원장에 기록되는 정보들을 사용자에게 보여주기 위한 기능으로 표현될 수 있다.
각 기능을 위한 고민도 다르다. 지급 결제 수단은 자산과 관련된 내역이기 때문에 보안이 필수적이다. 자격 증명은 지갑 자체의 기능도 필요하지만, 사회적 인프라의 제공을 고려한 환경이 갖추어져야 한다. 활동 내역은 대부분이 전자적으로 전환되었기 때문에, 새로운 서비스 증가에 따라 사용자가 얼마나 편리하게 확인이 가능한지에 대한 부분의 고민이 있을 수 있다.
각기 다른 세 가지 기능에 대해서 고민된 사례와 요구사항(requirement)에 대해서 알아보도록 하자. 여기서 요구사항은 반드시 하나의 지갑에 구현되는 것을 의미하지는 않는다. (스마트 폰에 하나의 앱만 있는 것이 아니듯)
어떻게 안전함을 제공할 것인가?
실물 지갑과 디지털 자산을 관리하는 지갑의 차이 중 하나는 자산의 규모이다. 특히, 자산의 보관을 은행과 같은 대행 업체에 맡겨두고 관리하던 것에 비해, 아직까지 블록체인에서는 사용자에게 권한과 관리 및 책임이 집중되어 있기 때문에 사용자에겐 큰 부담이 아닐 수 없다. 이러한 방식은 ‘개인 키(Private key)’를 어떻게 안전하게 관리할 것인지에 대한 고민으로 이어진다.
REQ 1. 서명된 트랜잭션 생성(Signed Transaction Generation)
지갑은 자금을 이체하거나, 블록체인 상에서 특정한 액션을 취할 때 필요한 모든 행위는 서명된 트랜잭션에서 시작된다. 서명된 트랜잭션이 유효한지에 따라 네트워크는 트랜잭션의 권한을 확인하고 자금의 이체나 함수의 실행과 같은 상태를 변경한다. 서명은 자산의 소유권을 확인할 수 있는 수단으로, 개인키는 소유권을 보장하는 역할을 한다.
REQ 2. 개인 키 보관 (Key store)
또한 개인키는 자산의 저장소로 해석할 수 있다. 개인 키를 잃어버리는 것은 자산을 잃어버리는 것과 동일하며, 잃어버리지 않더라도 다른 계정으로 이체되면 다시 찾을 수 없기 때문에, 권한을 가진 개인 키의 보관은 사용자에게 가장 중요한 이슈이다.
개인 키의 보관은 지갑의 형태에 따라서 다양하지만, 일반적으로 마스터 계정을 생성한 후 암호화된 결과를 가지고 별도로 보관하여 사용하게도록 유도하는 것이 기본적이다. 여기에 더해 보안을 강화하기 위한 요구사항을 바탕으로 지갑의 형태가 확장되었다.
REQ 2+. Cold Storage
개인 키 보관을 더 안전하게 하기 위한 확장으로 Cold storage 개념을 적용한 하드웨어 지갑이 나왔다. 블록체인 네트워크와의 연결은 곧 인터넷으로의 연결을 의미하기 때문에 해킹으로 인한 개인 키 탈취, 악성코드를 통한 트랜잭션의 주소 변경 등 온라인을 통해 들어오는 공격에 노출이 되기 쉽다. 이를 가장 효과적으로 방어하는 방법은 타깃이 되는 개인키를 오프라인 상태로 보관하는 것이다. PC에서 작동하도록 USB 방식으로 구현된 Ledger나 모바일 환경에서 블루투스를 기반으로 작동하는 D’CENT는 개인 키를 오프라인에 보관하여 보안성을 확보한다.
하드웨어 지갑은 오프라인으로 관리되기 때문에 온라인으로부터 유입되는 위협에는 안전하지만, 사용자로부터 오프라인 상의 관리를 요구한다. 예를 들어, 공격자가 사용자가 거래하는 것을 슬쩍 훔쳐보고 하드웨어의 PIN번호를 알아낸 후, 사용자의 PC나 모바일 환경에서 공격을 시도한다면 속수무책이다. 이러한 문제를 단일 지점 장애(Single Point of Failure)라고 하며, 개인 키 가 오프라인이지만 하나의 단말기에서 관리됨으로 인한 한계를 나타낸다.
REQ 2++. 분산 키 관리 (Distributed Key Management)
단일 지점 장애를 회피하기 위해 Multi-Party를 이용한 분산 키 생성(Distributed Key Management)과 TSS(Threshold Signature Scheme)으로 해결 하고자 하는 시도가 있다. 분산 키 생성은 ECDSA와 같은 서명 체계의 검증은 유지하면서, 개인 키를 생성 단계에서부터 Multi-Party가 참여하여 서로의 비밀 값(개인 키의 일부)은 드러내지 않은 채 부분적인 서명을 생성한다. 아래 그림과 같이 2-of-3 의 서명의 경우, 3 party 중 2 참여자가 각자 서명을 제출하면 대응되는 공개키로 검증이 가능하다. 사용자가 거래할 때 개인 키 생성 단계부터 서명 검증까지 완전한 개인 키가 노출되는 경우가 거래 전 과정에서 나타나지 않기 때문에 단일 지점 장애를 해결할 수 있다. Zengo나 unbound 등에서 TSS가 적용된 지갑을 상용화 하기 시작하였고, 국내에서는 아톰릭스랩이 출시하였다.
REQ 3. 키 복구 (Key recovery)
지갑에서는 해킹에 대한 위협 뿐만 아니라 분실에 대한 대비도 필요하다. 이를 위한 니모닉 문구(Mnemonic Phrase)는 지갑에서 가장 많이 활용되는 방법이다. 니모닉 문구는 아래와 같이 개인키를 사람이 해석할 수 있는 12–24개의 단어로 인코딩한 것으로, 단어의 조합을 통해 키 생성 단계에서 백업해두면, 추 후 장비의 분실 등에 대비해서 계정을 복구해낼 수 있다. 서로 다른 지갑 서비스에서의 호환성이 완벽히 보장되지는 않지만, 키 복구에 대한 경험은 니모닉 문구로 통일되어 가고 있는 중이다.
vote dance type subject valley fall usage silk
essay lunch endorse lunar obvious race ribbon key
already arrow enable drama keen survey lesson cruel
그렇다면 니모닉 문구는 어떻게 보관해야 할까? 사실 이것이 많은 문제가 되었기 때문에 개선의 필요성이 대두되었다. 니모닉 문구를 처음 접하는 사용자들은 관리해야 하는 사실을 모르는 경우도 존재하며, 종이에 적어서 보관하는 경우 잃어버릴 가능성을 배제할 수 없다. 개인키에 대한 관리 부담이 니모닉 문구에 대한 관리 부담으로 변경되었을 뿐, 여전히 사용자에게 부담을 주는 방법이라는 점을 한계로 들 수 있다.
REQ 3+. 사회적 복구 (Social recovery)
니모닉 문구가 주는 사용자의 부담을 줄이기 위한 방법 중 사회적 복구가 있다. 사회적 복구는 기억에 의한 비밀 유지를 관계를 통해 유지하는 것으로 변경한다. 가령, 자신의 가족이나 친구에게 비밀의 일부를 위탁하여 키를 복원하는 방식으로 구현될 수 있다.
특히 사회적 복구는 일반적인 지갑보다 스마트 컨트랙트 지갑에서 구현될 때 더 효과를 극대화할 수 있다. 일반 지갑은 REQ 1과 2에서 설명한 것처럼 개인 키로부터 자산의 소유권과 저장소를 같이 관리한다. 반면, 스마트 컨트랙트 지갑은 자산을 개인키가 아닌 스마트 컨트랙트에 보관한다. 자산이 스마트 컨트랙트에 저장되어 있으며, 사용자의 개인키는 단지 스마트 컨트랙트에 소유권을 증명하는 수단으로 활용될 뿐이다. 따라서 개인키를 잃어버리더라도 자산은 스마트 컨트랙트에 남아 있기 때문에 되찾을 수 있는 방법을 마련할 수 있다. (마치 주민등록증을 잃어버린 사람이 가족을 데리고 주민센터에서 가서 새로운 주민등록증을 발급받는 시스템이랄까)
Argent나 Loopring에서 제공하는 스마트 컨트랙트 지갑은 사회적 복구 기능을 지원한다. 위 그림은 Argent에서 제공하는 스마트 컨트랙트 지갑을 나타낸 것으로, 사용자의 소유권으로 활용될 수 있는 공개키(Signing pubkey)가 등록되어 있어, 컨트랙트 내의 자금을 이체하거나 설정 값을 변경하는데 활용된다. 분실에 대비해서 가디언(Guardians)을 등록할 수 있는 기능을 제공하여 복구에 활용한다.
예를 들어, 사용자가 개인키를 잃어버렸을 때, 가디언들의 수가 일정 수 이상 동의하면 (5명 중 3명이 동의) 새로운 공개키를 등록하여 소유권을 변경할 수 있다. 사용자는 니모닉 문구를 관리하는 대신 앱에서 지원하는 기능을 통해 가족이나 친구 등 주변 지인을 가디언으로 지정하기만 하면 된다. 니모닉 문구 기억에 대한 부담없이, SNS등을 통한 경험을 기반으로 키 복구에 활용한 것이다.
이외에도 가디언을 이용하여 키 복구외의 자금 락킹과 같은 기능 제공도 스마트 컨트랙트 지갑의 장점 중 하나이다. 다만, 스마트 컨트랙트가 해킹에 안전하다는 가정이 필수적인데, 이를 얼마나 신뢰할 수 있을지는 사용자의 몫이다. (비탈릭도 올 해 초 사회적 복구 기능에 대한 글을 올렸으니 관심이 있는 분들은 참고하면 좋을 듯하다.)
증명 수단으로서의 지갑 기능
대통령 선거와 같은 투표를 하러가는 장면을 생각해보자. 우리는 투표소를 진입할 때 지갑에서 신분증을 꺼내 검사를 받는다. 그리고 기표소에 들어가서 투표를 진행한 후 투표함에 제출한다.
신분증 검사에서는 투표에 참여한 ‘나’라는 사람의 정보는 데이터베이스에 저장이 되어서 재투표를 방지하는 역할을 한다. 신분증이 1인 1투표 원칙을 지키도록 하여 시빌 공격(Sybil Attack)을 방지하고, 이 후에 기표소에 갈 수 있는 권한을 부여받는 것이다.
기표소에서 작성한 이후에는 내가 누구에게 투표권을 행사하였는지는 누구도 알 수 없도록 비밀로 유지되고 투표함에 제출되어 집계되기까지 정보가 노출되지 않도록 프라이버시 보호 환경을 제공한다.
REQ 4. 시빌 저항성 (Sybil Resistance)
암호 화폐 생태계에서 키를 생성하고 관리하는 것은 사용자의 몫이다. 하나의 키로 이용하든 1만개의 키를 생성하여 사용하든 사용자의 선택이고, 익명성이 보장되는 블록체인 네트워크에서는 이를 제지할 방법이 없다. 한 명이 여러개의 계정을 생성하여 다수의 활동을 하여 공격하는 시빌 공격에 대한 대응이 딱히 구현되기 어려운 환경이다. 현재 시빌 공격을 대응하기 위한 방법은 예치/처벌 구조를 도입하여 가진 자산 만큼의 영향력만을 행사하도록 제한하는 것으로 구현되어 있을 뿐이다.
시빌 저항성을 가진 자격을 지갑을 앞의 투표 사례처럼 구현하기 위해서는 두 가지가 필요하다. 첫 번째는 (1) 고유식별번호에 기반한 ID 생성이고, 두 번째는 (1)과는 별도로 분리된 활동을 위한 ID 이다. (1)은 시빌 저항성을 위해서, (2)는 시빌 저항성을 만족하면서 생길 수 있는 프라이버시를 보호하기 위함이다. 미국의 SSN(Social Security Number)나 한국의 주민등록번호와 같이 개인에게 부여된 고유한(unique) 값은 시빌 저항성을 가진 계정을 생성할 수 있다. 다만 이러한 식별번호의 경우에는 범위가 국가에 한정되는 점을 고려하여야 한다.
REQ 5. 책임성 (Accountability)
중앙화된 거래소의 KYC(Know Your Customer)/AML(Anti-Money Laundering) 정책은 의무가 되었다. 고객 정보의 수집과 불법 자금에 대한 정부의 요구사항은 갈수록 증가할 것이다. 하지만, 기존의 금융시스템처럼 정부가 모든 것을 통제하기에 블록체인 네트워크는 태생적으로 글로벌리티를 갖추고 있어 쉽지 않을 것이다.
탈중앙화 대출 서비스인 Aave나, Polkastarter와 같은 IDO 플랫폼에서는 화이트리스트에 기반한 KYC 정책을 도입한 바 있다. 화이트리스트를 관리함으로써, 통제된 환경의 참여자들만이 블록체인 상에서 적법한 활동을 할 수 있도록 한 정책이다.
좀 더 적극적으로 정부에서 불법 자금 활동을 막기 위해서는 블랙리스트 기반의 사용자 관리가 필요할 수 있다. 공개키 인프라에서 인증서 폐기 목록을 관리하는 것과 유사하게, 범죄자에 대한 신원을 확보하고 이와 연관된 계정을 블랙리스트에 반영하는 것이다. 이를 위해선 먼저 REQ 5에서 언급한 고유식별정보를 기반으로 계정을 생성하는 것이 우선이다.
REQ 4~5+. 오라클과 기존 시스템 통합성
REQ 4~5를 지원하는 인프라를 구성하기 위해서는 오라클 문제가 함께 고민되어야 한다. 오라클은 유니스왑의 가격 오라클처럼 특정 값을 결정 짓기 위해 활용되기도 하지만, 광의의 의미로 ‘기존 시스템과의 통합’을 어떻게 다룰 것인지에 대한 이슈이다.
여기서 기존 시스템이란 TLS/https 등과 같이 웹 상에서 정보를 제공하는 모든 서버를 의미하며, 서버에서 제공되는 데이터를 어떻게 블록체인에서 신뢰할 수 있도록 결합시킬 수 있을 것인가 대한 해결책이 오라클이다. 고유식별번호 시스템이나 자격증을 발행하는 서버를 활용할 경우, 오라클 문제가 같이 고민되어야 한다.
개인적으로 DID가 자리잡기 위해서는 오라클 이슈의 해결이 필요하다고 생각하며, REQ 4~5의 내용은 해당 논문을 바탕으로 작성되었으니 관심 있는 분은 참고하면 좋을 듯하다.
사용자를 위한 대시보드(Dashboard)
중앙화된 거래소를 이용하면 모든 것이 쉽다. 내가 투자한 자산과 포트폴리오, 평가 손익 등을 쉽게 확인할 수 있다. 이것은 블록체인의 정보가 아니라 거래소가 가지고 있는 데이터베이스의 정보이기 때문이다. 거래소에 등록된 자산을 거래하는 것은 어렵지 않지만, 이미 공개된 서비스를 거래소가 등록하지 않을 경우 이용할 수 없으며, 탈중앙화 서비스가 성장하는 속도에 비해 거래소의 성장은 매우 더딘 편에 속한다.
반면에 블록체인은 공개원장으로 누구나 접근이 가능하지만, 기술적으로 모르는 대부분의 사용자는 직접적으로 확인하기 쉽지 않다. 단지 지갑이 제공해주는 정보만 확인할 뿐이다. 이러한 점에서 사용자들이 탈중앙화 서비스를 쉽게 접근하고 자산을 관리할 수 있는 요구사항은 점차 증가하고 있다.
REQ 6. 자산 관리 (Asset Management)
2020년 하반기 De-Fi의 열풍이 불면서, 서비스를 이용한 사용자와 활성 지갑 수가 급증했다. 당시에는 이더리움 정도였지만, 지금은 BSC, Polygon, Fantom, HECO 등 네트워크가 확장되었고 향후에는 더 많은 네트워크에서 서비스가 구축될 것이다.
블록체인에서 ERC-20과 같은 토큰 표준이외에 DeFi를 위한 별다른 표준이 없는 상태이기 때문에 하나의 지갑에서 다수의 네트워크, 다수의 서비스를 관리할 수 있도록 보여주는 것을 구현하기는 꽤 까다로운 편이다. 이러한 문제를 해결하기 위해서 Debank나 Zapper와 같은 대시보드 서비스들이 점차 증가하고 있으며, 사용자의 편의성을 위해 지갑에 필요한 기능이다. (현재 하나의 금융권 앱에서 모든 은행 계좌의 잔액을 볼 수 있는 서비스도 같은 맥락이다)
REQ 7. 보상(Reward)
지갑을 이용하는 사용자가 생태계에 기여할 수 있는 범위를 생각해보자. 굳이 블록체인이 아니더라도, 페이스북, 인스타와 같은 플랫폼에서 알 수 있듯이 사용자는 곧 생산자가 될 수 있다.
비트코인이 새로웠던 이유는 보안(Security)문제를 해결하기 위해서 Miner를 도입한 것이었다. De-Fi의 열풍에 앞서 가장 큰 장애였던 유동성(Liquidity) 문제는 사용자들이 토큰 holder가 되도록 유도함으로써 해결하였다. 블록체인이 보다 다양한 유즈케이스로 발전하기 위해서는 다양한 데이터와의 결합이 필요하지만 블록체인에서 데이터의 진위성(Authenticity)을 증명하는 것은 해결하기 쉽지 않은 문제이다.
아직 초기에 해당하지만, 플레어 네트워크의 FTSO(Flare Time Series Oracle)는 사용자에게 데이터 제공(혹은 투표)에 대한 보상을 지급한다. 이처럼, 사용자는 데이터를 제공하고, 보상을 받는 시스템은 블록체인과 기존 데이터가 결합하여 진위성을 증명하는 모델이 보상 구현의 하나로 자리잡을 수 있다.
마치며
지갑 서비스는 과거에는 개발하기 쉬운 서비스였을 수 있다. 하지만 점점 지갑 서비스의 기능이 고도화 되어 가면서, 사용자들로부터 채택받기 위한 지갑의 진입 장벽이 점점 높아지고 있다. 사용자들도 한번 좋았던 경험이 축적되면, 다시 불편한 지갑을 사용하지 않을 것이다.
지갑은 아이폰/갤럭시와 같은 사용자의 도구, 블록체인 네트워크는 구글이나 페이스북과 같은 이용 가능한 서비스라는 생각을 한다. 인터넷을 PC로 이용하다가 모바일로 변화되는 환경의 변화가 있었듯이, 블록체인에서 지갑을 통해 사용자에게 새로운 블록체인 환경을 제공할 수 있도록 계속된 고민의 결과가 시장에 출시될 것으로 예상한다.