계좌번호와 은행원의 예시로 보는
블록체인을 처음 접하는 사용자들이 혼란스러워하는 개념 중 하나가 Wallet과 Address의 차이점이다. 일반적으로 Wallet은 가상자산을 보관하는 곳으로 오해되지만, 정확히는 Wallet은 가상자산을 관리하고 이용할 수 있는 소프트웨어나 앱이다. 반면에 Address는 이더리움이나 다른 가상자산을 보내고 받는 데 사용되는 고유한 식별자이다.
블록체인이 익숙하지 않은 사람들의 경우 ‘메타마스크’에 이더리움을 전송했다고 착각하기도 한다. 하지만 정확히 표현하면 메타마스크(Wallet)에서 생성한 지갑 주소(Address)로 이더리움을 전송한 것이다. 이런 혼란을 줄이기 위해서는 Wallet과 Address의 개념을 구분할 수 있어야 한다. (Address를 Wallet Address로 표현하기도 한다.)
사람들 혼동하는 이유는 ‘Wallet’과 ‘Address’라는 단어를 실생활에서도 흔하게 사용하기 때문이다. 실생활에서 Wallet은 현금이나 카드, 신분증 등을 보관하는 물리적인 도구를 의미하기 때문에 가상자산 거래 시 Wallet에 가상자산을 받았다고 착각한다.
하지만 가상자산(코인, 토큰, NFT 등)을 전송받고 보관할 수 있는 건 ‘Address’ 뿐이다. ‘블록체인에서 Wallet’은 ‘Address’을 편리하게 관리하고 사용할 수 있도록 기능을 제공하는 소프트웨어 서비스다. 사람들은 Wallet을 이용해 보다 편리하게 Address를 이용할 수 있을 뿐이다.
Address는 은행에서 만들어주는 계좌번호와 유사하다.
예를 들어, 은행에 방문해 은행원에게 계좌를 만들고 싶다고 하면 은행원은 계좌를 만들어 준다. 여기서 계좌 번호가 Address에 해당한다. 계좌 번호를 '123-456-789012'라고 가정해 보자.
계좌 번호만으로는 금융 서비스를 이용할 수 없다. 계좌 번호로 금융 서비스를 이용하기 위해서는 은행원의 도움이 필요하다. (물론 ATM과 앱을 이용해 처리할 수 있지만) 은행원을 통해서 송금을 하거나 환전 서비스를 이용할 수 있다.
그 은행원은 방문자의 신분증을 이용해 본인임을 확인하고 금융 서비스를 처리해 준다. Wallet도 은행원과 마찬가지다. Wallet은 디바이스에 저장된 개인키를 이용해 본인임을 확인하고 트랜잭션 처리나 특정 기능들을 처리해 주기 때문이다.
따라서 계좌번호가 address 역할을, 은행원은 Wallet 역할을 해준다. 돈을 은행원에게 전달하는 것처럼 보이지만 그 돈을 은행원이 보관하는 건 아니다. 은행원은 그 돈이 계좌에 잘 들어갈 수 있도록 서비스를 제공해 줄 뿐이다. Wallet과 Address의 관계도 유사하다.
Address에 관리를 잘할 수 있도록 우리는 Wallet 서비스를 이용하기 때문이다. 아래 Wallet 기능들을 보면 대부분 은행에서 은행원들이 처리해 주는 업무들과 유사하다.
>> Wallet 기능
- 지갑 주소 생성
- 트랜잭션 처리
- 가상자산 조회
- QR 코드 생성(지갑 주소)
- dApp 서비스와 연결
- 토큰 교환
- 메인넷 변경(연결할 블록체인 네트워크 변경)
- 개인키 & 니모닉 추출 및 확인
>> Address 기능
- 자산을 송금하거나 수신할 때 사용되는 고유한 식별자
- 블록체인 서비스를 이용할 수 있는 계정의 역할
개인키 -> 공개키 -> 지갑 주소
좀 더 블록체인의 Wallet을 알아보자면 Wallet은 난수를 생성해 특정한 개인키를 생성한다. 이 개인키는 Wallet을 설치한 디바이스에만 저장한다. 이 개인키를 기반으로 공개키를 추출할 수 있다. 대부분의 블록체인에서는 타원 곡선 디지털 서명 알고리즘(ECDSA)을 사용하여 공개키를 생성한다. 이 공개키의 해시값을 이용하면 지갑 주소를 만들 수 있다.
가상자산을 올바르게 관리하고 익숙한 의미가 주는 혼동을 막기 위해서 지갑과 주소의 역할과 차이점을 알아봤다. Wallet이라는 워딩이 어디서 나온 걸까? 재밌는 점은 Wallet이라는 단어 선택을 블록체인의 개념을 만든 사토시는 비트코인 백서에 등장하지 않았지만 이더리움 백서에는 Wallet이라는 단어가 등장한다는 점이다.
비트코인이 공개된 뒤 커뮤니티에서 자연스럽게 Wallet이라는 용어가 사용되었고 이더리움 백서에서 자연스럽게 Wallet이라는 명칭을 사용했을 것으로 추측한다. 개인적으로는 Wallet이라는 단어보다는 Window라는 용어가 좀 더 적합하지 않나 생각한다. 은행원을 만나는 곳이 은행창구인 것처럼 블록체인 서비스를 이용하기 위한 창구, 윈도우나 카운터라는 의미가 적합하지 않나 생각한다.