지갑 주소는 왜 여러 종류일까?

0Xkong
DOKDO DAO
6 min readApr 14, 2022

--

1. 지갑 주소란?

거래 시에 네트워크를 골라야한다

우리가 현실에서 다른 계좌로 ‘돈​’을 송금할 때, ‘은행’과 ‘계좌 번호’를 입력하고 보낼 금액을 입력합니다. 마찬가지로 우리가 다른 사람에게 흔히 ‘코인’이라 부르는 가상 자산을 송금하기 위해서는 ‘코인의 종류’와 ‘네트워크’, ‘지갑 주소’를 입력하고 보낼 수량을 입력합니다.

​은행의 계좌 번호는 은행이 가지고 있는 데이터 상에 존재하는 수많은 고객들의 보유 금액 정보 중, 어떤 것이 돈을 받을 고객의 정보인지 나타냅니다. 그렇기에 특정 계좌 번호로 돈을 송금할 경우, 은행이 가진 ‘데이터베이스’에서 돈을 받을 사람의 계좌 정보를 찾은 후, 그 데이터에 돈을 추가합니다.

마찬가지로 코인의 지갑 주소는 현실의 계좌 번호와 같이, 각 개인이 보유하고 있는 코인이 저장되는 곳을 나타냅니다. 그렇기에 특정 지갑 주소로 코인을 송금할 경우, 코인의 변동을 기록하는 블록체인에서 코인을 받을 사람의 지갑 정보를 찾은 후, 그 데이터에 돈을 추가합니다.

이처럼 지갑 주소는 현실의 계좌 번호와 비슷한 역할을 합니다. 하지만, 돈의 경우 은행과 계좌번호, 두 가지 정보가 필요하지만 코인의 경우 코인의 종류, 네트워크, 지갑 주소, 세 가지가 필요하다는 것을 알 수 있습니다. 은행=거래소, 한화=코인의 종류, 계좌 번호=지갑 주소라고 생각하고 봤을 때, ‘네트워크’는 현실에서 대응하는 개념도 없고, BEP2, BEP20, ERC20, TRC20과 같이 알 수 없는 용어를 사용하기에 더욱 더 이해하기 어렵습니다. 하지만 네트워크마다 지갑 주소가 따로 있고, 네트워크를 잘못 선택하면 송금이 안되는 일도 있기에 이에 대해 이해할 필요가 있습니다. 그렇기에 이 글에서는 이와 같이 코인에서의 네트워크에 따라 지갑 주소가 따로 있는 이유에 대해 설명하고자 합니다.

2. 네트워크마다 지갑 주소가 있는 이유

‘메인넷과 노드’

▲네트워크에 대해 잘 모르겠다면, 위 글을 참조해주세요

기본 금융과 블록체인 기반의 금융의 차이점

BEP20, BEP2, ERC20, TRC20과 같이 다양한 네트워크가 존재하는 이유를 이해하려면, 먼저 기본 금융과 블록체인 기반의 금융의 차이점을 이해해야합니다. 기본 금융 시스템은 결국 현실에 존재하며 손으로 만질 수 있는 ‘현금’을 데이터화하여 관리하는 과정입니다. 그렇기에 기본 금융 시스템에서 ‘현금’을 표시하기 위한 액수에 해당하는 ‘숫자’만이 중요하게 됩니다. 즉, 데이터에 존재하는 ‘숫자’는 결국 현실의 ‘현금’과 1:1로 대응하기 때문에 ‘’을 표현하기 위해 많은 데이터가 필요 없습니다.

반면, 블록체인 기반의 금융 시스템은 현실에 존재하지 않고, 오직 블록체인 상에 데이터로만 존재하는 ‘코인’을 관리하게 됩니다. 그렇기에 기본 금융 시스템과 다르게, 현실에서 ‘코인’과 1:1로 대응하는 요소가 없기에 데이터만으로 ‘코인’을 표현하게 됩니다. 즉, 실제로 존재하는 것이 아니기에 코인의 이름, 통화기호, 소유권 표시 방식 등의 현금이 갖고 있는 정보에 대응되는 정보를 데이터로 정의해줘야합니다.

또한 코인은 결국 블록체인 네트워크 상에 저장됩니다. 이는 각 은행이 자신만의 서버를 갖고, 그 안에서 은행 내부의 고객 정보를 관리하듯이 코인은 서로 연결된 블록체인 내에서만 데이터의 변동을 관리합니다. 그렇기에 서로 다른 네트워크에 저장된 코인을 주고 받기 위해서는, 서로 다른 네트워크 간의 정보 교환 및 데이터 처리가 이루어져야하지만 이는 기술적인 제약이 있기에 같은 네트워크 내에서만 코인을 주고 받는 것이 일반적입니다.

노란색으로 표시된 내용이 각 코인의 지갑 주소 유형, 네트워크이다

원인 1 : 정의의 문제

결국 코인은 실제로 존재하는 것이 아니기에 코인을 만드는 사람이 코인이 어떤 성질을 갖고 있는지 정의해야합니다. 여기서 문제가 발생하게 됩니다. 현실에서만 해도 같은 거리의 길이를 나타낼 때 야드로 나타낼 수도, 미터로 나타낼 수도 있습니다. 그렇기에 추상적인 개념인 ‘가상’ 화폐를 정의할 때, 만드는 사람에 따라서 각기 다른 방식으로 나타내는 일이 생겼고 정의한 방식에 따라 규격을 만들다보니 다양한 규격이 생기게 됩니다.

BEP20, BEP2, ERC20, TRC20 등은 코인이 저장되어있는 네트워크에서 사용하는 규격에 해당합니다. 규격이 다르면 서로 호환이 안될 수 밖에 없다보니, 네트워크마다 규격에 맞는 지갑주소가 필요하게 됩니다.

원인 2 : 기술적인 문제

코인은 결국 블록체인에 저장된 데이터입니다. 이는 결국, 블록체인을 처리해줄 블록체인 망, 네트워크가 필요하다는 의미입니다. 서로 다른 네트워크는 서로 분리되어 있습니다. 그렇기에 특정 코인이 어느 네트워크에 저장되어있다면, 다른 네트워크에는 해당 코인의 정보가 없을 수 밖에 없습니다. 코인의 송금은 결국 데이터를 수정하는 과정입니다. 수정할 데이터가 네트워크 상에 없다면, 데이터를 수정하는 것은 불가능해집니다. 그렇기에 코인을 송금할 때는 해당 코인이 어느 네트워크에 있는지 알 필요가 있습니다.

같은 네트워크에 있으면, 같은 지갑 주소로 여러 코인을 관리 할 수 있다.

물론, 서로 다른 블록체인 네트워크 간에 코인을 주고 받는 것이 불가능하지는 않습니다. 하지만 그렇게 하기 위해서는 거래가 이루어질 때 서로 다른 네트워크에서 서로의 데이터를 검토하고 데이터 수정 과정을 거쳐야합니다. 이는 네트워크 내부에서 이루어지는 송금과정보다 훨씬 더 많은 연산을 요구하고, 네트워크 간의 규격이 맞지 않을 경우 호환되지 않을 가능성도 있습니다. 그렇기 때문에 규격에 따라서 서로 다른 블록체인에 저장된 코인은 주고 받을 수 없게 됩니다.​

이를 해결하는 가장 쉬운 방법은 네트워크 별로 지갑 주소를 만든 뒤, 사용자가 네트워크와 지갑 주소를 기입하도록 하는 것입니다.

3. Conclusion

핸드폰 충전기 규격이 다양했던 시절

위에서 살펴봤듯이 코인은 결국 데이터 상에 존재합니다. 그렇기에 이러한 데이터를 정의하고, 관리하는 방식을 정하는 것은 코인을 만든 사람의 마음대로입니다. 그 과정에서 수 많은 규격이 생겨났고, 서로 다른 규격을 가진 블록체인 네트워크끼리는 호환이 되지 않는 문제가 생기게 되고, 이를 쉽게 해결하기 위해 각 개인이 지갑 주소를 여러 종류를 보유하게 되었습니다.

다행히 요즘에는 ERC20 — BEP20 — TRC20이 서로 비슷한 규격을 갖게 바뀌어 가는 등, 다양한 규격을 통일 시키려는 움직임이 나타나고 있습니다. c타입 충전기와 아이폰 충전기만이 주로 쓰이는 스마트폰 시장처럼, 한 두 가지의 지갑 주소만으로 다양한 코인을 관리할 수 있는 시대가 오는 것이 허황된 일만은 아닐지도 모릅니다.

--

--