[가상자산 제대로 알기] 5. 전자지갑의 이해와 사용 실례

이문규 munch@itdonga.com

[IT동아]

[편집자주: 본 연재는 ‘가상자산’ 또는 ‘디지털자산’에 관한 올바른 인식 정립과 정확한 이해를 돕고자 기획됐습니다. 가상자산은 미래의 시장 경제에서 중추적 역할을 하리라 전망되지만, 투자, 수익 등 단편적 기능에만 매몰되어 가상자산의 진정한 가치가 왜곡되고 있습니다. 이에 본 연재를 통해 가상자산의 의미와 가치, 시장성 등 근본적 개념과 정보를 전달하려 합니다. 본문 내 의견과 내용은 본지의 편집방향과 다를 수 있습니다.]

이번 연재는 가상자산을 이용하는데 필요한 전자지갑에 대해 알아본다. 지금은 주로 암호화폐 대상이지만, NFT(대체 불가 토근, non-fungible token)를 비롯해 DID(탈중앙화 신원 증명, Decentralized Identity/Distributed Identity) 등으로 확대되리라 예상된다. 여기서는 가상자산(암호화폐)을 위한 전자지갑에 대해서 다룬다.

전자지갑의 이해

먼저 우리가 가지고 다니는 일반 지갑과 실물 화폐에 관해 생각해 보자. 일반 지갑은 실물 화폐를 담아 보관하는 개인 소품이다. 지갑 속에는 화폐(동전포함), 카드, 신분증 등이 들어있다. 특정한 것을 담아 동전지갑, 카드지갑 등으로 사용하기도 한다. 이와 비슷하게, 전자화된 화폐를 저장할 수 있도록 만든 가상의 지갑(소프트웨어 혹은 하드웨어)을 전자지갑이라고 한다.

실제 지갑처럼, 무엇을 담느냐에 따라, 무엇을 하느냐에 따라 전자지갑도 여러 분류로 나뉜다. 지갑마다 담을 수 있는 전자화폐나 가상자산이 다르기 때문이다. 실제 앱 스토어 등에서 검색하면 다양한 종류의 전자지갑(wallet)이 나온다. 여기서는 가상자산을 대상으로 하니, '가상자산 지갑'이라 부르는 것이 맞을 것 같다.

출처=엔바토 엘리먼츠
출처=엔바토 엘리먼츠

그럼 이 가상자산 지갑에 가상자산(비트코인, 이더리움, 클레이 등)이 진짜 담겨져 있는 걸까? 그렇지 않다. 전자지갑은 가상자산에 접근할 자격만 담겨 있을 뿐, 실제 가상자산은 각자의 '메인넷'이라는 블록체인에 기록돼 있다. 이에 사용자(가상자산 보유자)는 개인 키를 가지고 해당 블록체인 프로토콜로 접근하여 개인의 자산을 확인하고 이용할 수 있다.

따라서, 여러 메인넷 상에 가상자산을 가지고 있다면, 각각의 개인 키로 접근 자격을 검증해야 하는데 이때 이를 지원하는 전자지갑이 필요한 것이다. 즉 전자지갑은 개인 키/공개 키를 보관, 관리하는 곳이라 이해하면 좋다. 개인 키가 있어야 디앱(탈중앙화 애플리케이션)에서 언제든 쉽고 편하게 가상자산을 사용할 수 있고, 항상 인터넷에 개인 키가 연결될 수 있는 상황이 된다.

콜드 월렛과 핫 월렛(앱, 웹, 브라우저 플러그인)

그럼, 개인 키를 담고 있는 전자지갑에 대하여 알아보자. 위에서 언급한 대로, 전자지갑이 인터넷에 연결되어 있어야 개인 키를 가지고 보유 가상자산을 사용할 수 있다. 항상 인터넷에 연결되어 있어 언제라도 간편하게 사용할 수 있는 전자지갑을 '핫 월렛(Hot wallet)'이라고 하고, 앱이나 웹, 브라우저 플러그인 방식을 지원한다. 이들 모두 PC나 스마트폰 기반에 여러 회사가 개발한 소프트웨어(앱, 웹, 플러그인)에 개인 키가 저장되어 있다. 당연히 접근 암호나 핀코드, 생체인증 등 사용자가 설정한 보안 절차를 거쳐야 접근할 수 있지만, 항상 인터넷에 연결되어 있다는 점이 보안의 위험 요소가 되기도 한다.

반면 '콜드 월렛(Cold wallet)'은 하드웨어 기반의 지갑으로, 개인 키를 인터넷 연결에서 분리해 USB 메모리 같은 보안 기능의 하드웨어 장치에 저장하는 방식이다. 다소 번거롭긴 해도 사용할 때만 개인 키를 사용하니 핫 월렛보다는 안전하게 개인 키를 지킬 수 있다.

크롬(웹브라우저) 플러그인 기반의 가상자산 지갑(카이카스(좌), 메타마스크(우))
크롬(웹브라우저) 플러그인 기반의 가상자산 지갑(카이카스(좌), 메타마스크(우))

전자지갑 주소는 사용자 자신만 알고 있는 개인 키로 만든 공개 주소다. 개인 키가 없으면 공개 키에 접근할 수 없다. 다시 말해, 공개 키는 개인 키를 가진 사용자의 것이다. 전자지갑 주소를 생성 과정을 보면, (1)개인 키 생성 (2)개인 키 복원을 위한 니모닉(Mnemonic) 생성 (3)공개 키 생성 (4)공개 키 기반으로 전자지갑 주소 생성이다. 여기서 생성은 사용자가 아닌 생성 프로그램이 알아서 처리한다. 참고로, 공개 주소로 개인 키를 알아내기는 불가능하다.

여기서 '​니모닉'은 개인 키 복구를 위해 사용되는데, 12개의 단어로 이뤄진 이 니모닉은 누구에게도 알려줘서도, 클라우드 저장 서비스 같은 인터넷 공간에 보관해서도 안된다. 니모닉을 누군가 훔쳐가면 이 키와 연결된 전자지갑 주소의 가상자산은 모두 남이 것이 된다. 이에 전자지갑 서비스 제공사는 안전한 개인 키 보관과 복구 기능을 제공하려 노력하고 있다.

그리고 공개 주소는 사람이 읽을 수 있는 40개의 문자로 만들어지는데(블록체인 네트워크마다 주소 체계가 달라 문자 수도 다르다), 가상자산 거래를 위해 주소를 공유하는데 있어 이를 외우거나 적어두기가 쉽지 않아, 주소 전체를 복사하거나 QR코드 형태로 제공하는 것이 일반적이다. 이 일련의 전자지갑(주소) 생성과 복구 기능이 가상자산 지갑의 일반적인 기능이다.

한편, 전자지갑을 만들고 서비스를 이용하는 주체에 따라, 중앙화 지갑과 탈중앙화 지갑으로 나눌 수 있다. 중앙화 지갑은 서비스 주체가 있는 전자지갑으로, 발급과 복원 등을 서비스 주체가 책임지지만, 고객이 누구인지 알아야 하므로 익명성은 보장하지 않는다. 현재의 고객과 은행 계좌의 구조와 매우 유사하다. 즉 해당 전자지갑에 대하여 서비스 주체인 중앙기관(은행 등)에 의존해야 한다.

탈중앙화 지갑은 전자지갑(주소) 발급을 개인이 하는 방식으로, 어떤 가상자산을 사용할지 결정해 해당 블록체인 네트워크를 지원하는 전자지갑으로 진행하게 된다. 이 과정에서 생성된 니모닉도 개인이 관리하고, 개인 키도 전자지갑에 저장된다. 지갑을 발급한 사용자가 누구인지 알 수 없는 익명성을 보장하지만, 그럼 만큼 모든 관리 책임을 스스로 져야 한다.

이제 전자지갑이 제공해야 하는 필수 기능 위주로 알아보자.

전자지갑 생성: 니모닉을 기반으로 개인 키를 생성하고, 생성된 개인 키로 공개 키를 만들며 이 공개 키로 전자지갑(주소)을 생성한다. 사용자는 화면에 따라 터치(클릭)만 하면 된다.

케이민트 앱으로 3번 터치로 전자지갑을 생성할 수 있다
케이민트 앱으로 3번 터치로 전자지갑을 생성할 수 있다

전자지갑 복원: 개인 키를 분실한 때나, 다른 지갑에서 자신의 개인 키를 불러와 전자지갑(주소)을 사용하고 싶을 때 개인 키를 복사해 사용하거나, 전자지갑 생성 시 저장했던 니모닉으로 개인 키를 복원하는 기능이다. 이를 통해 자신의 가상자산을 다양한 전자지갑(앱, 웹, 플러그인)에서 동일하게 접근, 사용할 수 있다. 즉 하나의 전자지갑 주소를 여러 전자지갑 서비스를 통해 동시에 사용할 수 있다.

토큰 추가: 각각의 블록체인 세상인 메인넷에 연결, 해당 메인넷에서 유통되는 토큰을 추가함으로써 그 메인넷의 자기 자산을 확인하고 구매, 스왑(교환)할 수 있다. 아래 이미지는 'GHUB'라는 토큰을 추가했지만 자산은 없는 상황이다. 이후에 스왑(토큰 교환)을 통해 자산을 만들면 된다.

케이민트에서 메인넷의 다른 토큰 추가 과정
케이민트에서 메인넷의 다른 토큰 추가 과정

계정 추가: 같은 메인넷에 또 하나의 전자지갑을 생성하려면 계정이 달라야 한다. 자신의 지갑이지만 계정을 추가하여 새로운 계좌를 만들 듯 전자지갑 주소를 생성할 수 있다.

보내기(송금, NFT): '송금'이라고 말하지 않는 이유는 암호화폐(가상자산) 뿐만 아니라 NFT 등의 다른 자산을 전자지갑에 보관하다가 보내줄 수 있기 때문이다. 전자지갑은 코인과 토큰 같은 가상자산만을 다루는 건 아니다. 가상자산을 보내기 위해서는 상대방의 전자지갑 주소를 알아야 하고, 보내기 작업을 수행하려면 수수료(가스비)가 필요하다.

케이민트의 송금 과정
케이민트의 송금 과정

스왑: 스왑은 두 가상자산의 교환의 개념으로, 중앙화거래소에서의 매수/매도가 아닌 탈중앙화 환경에서 제공하는 서비스로 개인간 거래를 말한다. 대표적인 교환 목적은 해당 자산 서비스를 이용하기 위해서 또는 다른 자산이 가치가 있을 듯해 이용하기 위함이다. 스왑은 하나의 글 주제가 될 정로도 내용이 많은데, 여기서는 지갑이 제공는 기능으로만 소개한다.\

케이민트의 스왑 과정(보유 자산을 다른 자산으로 교환)
케이민트의 스왑 과정(보유 자산을 다른 자산으로 교환)

전자지갑 주소 보내기(공유): 은행 계좌번호를 알려주듯, 누군가 나에게 가상자산을 보내려 한다면 내 전자지갑 주소를 공유해야 한다. 주소 길이는 40자로 길기 때문에, 복사해 공유하거나 QR코드를 생성해 전달하면 편하다.

다양한 가상자산 지갑 / 출처=해시넷
다양한 가상자산 지갑 / 출처=해시넷

지금까지 설명한 대로, 전자지갑은 강력한 보안과 안전한 키 관리 및 복원 서비스를 기반으로, 이후로도 계속 등장할 다양한 가상자산(코인, 토큰, NFT, 탈중앙화 신원인증(신분, 자격 등))을 좀더 쉽고 편하게 사용하도록 발전할 것이고, 머지 않아 은행 통장 사용하듯 누구나 하나쯤은 사용할 것으로 예상한다.

글 / 동국대학교 국제정보보호대학원 곽노건 겸임교수

현재 블록체인/가상자산 지갑서비스 및 컨설팅 전문회사인 비피엠지(BPMG)에서 사업개발을 맡고 있으며, IT 개발 및 컨설팅 경험을 가지고 프로그래밍 분야 비롯해 다양한 IT 과목을 강의하고 있다.

참조 / 케이민트, 카이카스, 메타마스크 지갑, 위키피디아, 나무위키, 해시넷

정리 / IT동아 이문규 (munch@itdonga.com)

IT동아의 모든 콘텐츠(기사)는 Creative commons 저작자표시-비영리-변경금지 라이선스에 따라 이용할 수 있습니다.
의견은 IT동아(게임동아) 페이스북에서 덧글 또는 메신저로 남겨주세요.