암호화폐 지갑을 공부해보자

in #kr6 years ago (edited)

cryptocurrency-3409725.jpg

 암호화폐 지갑 : 공개키와 개인키 쌍을 갖고 있는 전자서명 방식으로 운용되며, 코인 송금 및 저장을 가능하게 합니다. 실질적으로 우리의 암호화폐는 지갑에 보관되는 것이 아니라 ‘개인키’ 내에 보관됩니다.


 일반적으로 코인 지갑을 생성하게 되면, Public key와 Private 키를 지급받습니다. 회사에 따라 복구 솔루션을 제공하는 곳도 있습니다. 렛저 나노 같은 하드웨어 지갑의 경우, 사용자 지갑의 복구 서비스를 제공하기 위하여 회사에서 개인키를 저장합니다. 또한 시드키라는 것을 제공하는 곳도 있습니다. (Bitcoin candy 안드로이드 지갑) 시드키는 랜덤한 단어를 무작위로 배열하여 파일로 저장한 키를 말합니다. 순서만 기억(저장)하고 있다면 지갑의 복구가 가능합니다. (앱 삭제 시)


image-3046639.png


 종류는 거래소 지갑, 소프트웨어 지갑(Full, Light), 하드웨어 지갑으로 나눌 수 있습니다. 거래소 지갑은 말 그대로 거래소가 사용자들의 키를 보관하는 방식입니다. 소프트웨어 지갑은 크롬 확장 프로그램을 다운 받거나, 컴퓨터에 블록체인 동기화에 필요한 특정 프로그램을 다운 받아 사용할 수 있는 지갑입니다. 하드웨어 지갑은 물리적인 방식으로, usb처럼 생긴 지갑을 잃어버리지 않는 이상 코인을 절대 잃어버릴 일이 없는 지갑입니다.



bitcoin.png

Bitcoin : 비트코인의 경우 Full-node를 유지하려면 막대한 컴퓨팅 파워가 소모되므로 일반적으로 Light한 성격을 띤 지갑을 사용합니다. 비트코인의 경우 주소와 Private key가 발급됩니다. 현재 모든 암호화폐 지갑에서는 BTC의 보관 및 거래를 지원하고 있습니다. Bitcoin core에서는 지갑에서 지갑으로의 Private key 이동을 지원합니다. 하이퍼 렛저 패브릭에서도 사용하는 언어인 Chain code를 이용하여 소프트웨어 지갑의 활용성을 높이는 작업중. Bicoin.com wallet의 경우 QR코드 스캔, 송금 기능과 USD와 환율 연동 기능 존재. Bitcoin core에서는 하드웨어 지갑과 소프트웨어 지갑과의 연동을 개발 중이며(부분 서명 거래), 모든 지갑의 공통 기준을 만드는 데 주력하는 중.

지갑 생성 시 : Light wallet의 경우 비트코인 주소와 Seed key 를 제공받음.


ethereum.png


Ethereum : 보통 Myetherwallet, Metamask를 이용함. Myetherwallet은 JSON/Keystore 파일, Metamask와의 연동, 렛저 나노 연동 등을 지원. Metamask는 지갑 생성 및 연동 지원. MEW와 Metamask는 Private key와 Erc-20 토큰 관리가 용이함. Metamask에서는 지갑 연동 시 Private key 필요, Ethereum과 Erc-20 토큰 송금 및 관리만 가능. Full-node, 채굴자, Light-node로 노드가 나뉨.

지갑 생성시 : 지갑 주소 부여 -> keystore 파일 지급 -> Private key 지급


eos.png


EOS : 소프트웨어 지갑, 안드로이드 지갑. 대부분의 EOS 지갑 연동 서비스는 EOS의 BP들이 만들었습니다. (예:simpleos) 자신들이 서비스하니 투표해달라는 명목으로 말이죠. Erc-20 토큰일 때는, Metamask를 사용하여 거래하였습니다만 이더리움 체인에서 떨어져 메인넷이 출범한 뒤로는 BP들이나 지갑 제공 회사들에 의한 지갑을 사용하고 있습니다. (하드웨어, 거래소 지갑 제외) EOS는 12자리 짜리의 계정 이름을 필요로 합니다. (메인넷 출범 전에는 계정 이름 걸고 경매까지 했음) 오너키와 개인키를 생성하게 되며 생성 완료 시 블록체인 네트워크에 기록됩니다.
또 EOS의 소프트웨어 지갑(Light wallet)을 사용하기 위해서는 EOS BP들의 서버(중앙 서버) 유지가 중요합니다. 간혹 블록체인 네트워크 서버가 끊긴 상태일 경우가 있는데 그때마다 서버 유지를 해주는 BP들의 서버로 수정하여 접속해야 하는 번거로움이 있습니다. DPoS의 한계점이자 장점이기도 합니다. 서버를 유지해주는 BP들이 없는 합의 알고리즘 방식을 채택한 암호화폐 시스템은 블록체인 네트워크에 대한 동기화와 서버 유지를 지속적으로 해야 하기 때문에 컴퓨터 용량도 잡아먹고 전기세도 나갑니다. 비트코인은, Full-node client 파일을 다운받는 데에만 200GB에 달하는 용량을 차지합니다. 이는 네트워크가 커지면 커질수록 늘어날 겁니다.

지갑 생성 시 : 아이디 발급(12자리) -> Owner key, Private key 발급


icon.png


ICON : 웹, 안드로이드 지갑. Metamask와 동일한 크롬 확장 방식. 여러 개의 지갑을 만들 수 있으며 각각의 지갑에 따른 비밀번호를 만들 수 있습니다. 지갑들을 뭉쳐서 하나의 파일로 만들 수 있습니다.
(렛저 나노 지갑 연동 가능.)
지갑 생성 시 : 비밀번호 생성 -> Private key 지급 -> keystore 파일 지급

웹 및 안드로이드 지갑과 블록체인 네트워크와의 연동.



vessel.png


Steem : EOS와 마찬가지로, 노드가 21개의 증인(BP)으로 구성되어 있는 Steem은 안드로이드 지갑이 따로 없습니다. Steem 재단에서는 자유로운 생태계 형성을 위해 DApp이나 서드 파티에 개입하지 않는 것을 고수합니다. 자체 개발한 지갑은 없고(steemit.com의 웹 지갑 존재) 대신 EOS와 같은 증인이 개발한 지갑이 있습니다. (Vessel) 송금, 승인 키 관리 등이 가능하며 때에 따라 EOS의 지갑처럼 일정 비용을 대주면 계정 생성을 대신해주는 기능도 있습니다. (HF 20으로 인해 업데이트)
Sub witness가 만든 Steempayco가 있습니다. Stemmpayco는 가맹점에서의 스팀, 스팀 달러 결제를 편리하게 합니다. QR코드 인식 -> 전날 종가 USD로 계산하여 결제 -> 가맹점주가 등록한 주소로 암호화폐 입금

계정 생성 시 : Owner key, Active key, Private key 등을 지급 받으며 key의 종류에 따라 승인되는 활동들이 다릅니다.


waves1.png


Waves : 계정 활동 내역을 개발자들과 공유해야 합니다. 자체 소프트웨어 지갑이 존재하며 클라이언트 내에 DEX가 있습니다. 리스 기능이 있어 자신의 지분을 (Full-node에게) 양도할 수 있습니다. Fiat gateway를 이용하여 wUSD, wEUR와 같은 토큰으로 교환해주는 시스템이 존재합니다. 웹에서 지원하는 온라인 클라이언트도 존재합니다. 이는 소프트웨어 클라이언트의 기능과 동일하지만 해킹의 위험과 속도의 문제가 있습니다.
Waves, Bitcoin, Ethereum, US Dollar, Euro, Litecoin, Bitcoin Cash, Zcash, TRY, DASH, Monero의 지갑을 제공합니다.

지갑 생성 시 : 클라이언트 다운로드 -> 지갑 주소 받음 -> Seed key 받음


ada.png


ADA : 스테이킹을 통한 채굴풀 보상을 지급받을 수 있는 Daedalus 소프트웨어 지갑이 존재합니다. 소프트웨어에 접속하게 되면 블록체인과의 동기화가 필요합니다. (오래 걸림) 소프트웨어 지갑에서는 윈도우 64비트, 맥, 리눅스를 지원합니다. Ethereum과 Ethereum classic 지원.

지갑 생성 시 : 지갑 이름 입력 -> Seed key 발급 (지갑 주소 생성)

  • 지갑 비밀번호 설정 가능
  • 지갑 삭제 가능



bitcoincandy.png

Bitcoin candy : Full-node wallet, Light-node wallet(안드로이드) 존재합니다. Bitcoin cash에서 Hard-fork 된 체인이며 PoW 방식으로의 채굴을 지향합니다.

지갑 생성 시 : Light wallet의 경우, 안드로이드 OS에서 운용되고 Public key, Seed key를 지급받습니다.

  • 컴퓨터에서 채굴하기 쉬운 코인으로 알려져 있습니다.



litecoin.png


Litecoin : Full-node wallet, Light-node wallet 존재합니다. 데스크탑 지갑은 다운받으려면 약 21GB가 필요하며 Bitcoin과 같이 분산원장을 서로 공유하고 저장해야하기 때문에 시간이 갈수록(네트워크가 커질수록, 체인이 늘어날수록) 그에 따른 용량도 늘어납니다.

Full-node 지갑의 경우 Litecoin core에서 제공.

지갑 생성 시 : Private key, Public key 생성.



ripple.png


XRP : 모바일, 웹, 데스크탑 wallet이 모두 있습니다. 데스크탑 지갑인 Toast wallet, 모바일 지갑인 Abra wallet, 웹 지갑인 Gatehub, 그리고 웹과 모바일을 둘다 지원하는 Rippex wallet이 존재합니다.
리플의 경우 리플사가 분배 및 관리하는 선채굴된 코인이기 때문에 Full-node wallet이 존재하지 않습니다.





그 외 : Metamask, Jaxx, Nano Ledger S, TREZOR 등

  • 지갑을 제공해주는 회사의 서버가 끊기거나 암호화폐 서버가 멈추게 되면 지갑 이용도 불가해짐.
  • Full-node wallet에 비해 Light wallet은 간편하나 해킹에 취약함. 스마트폰에서 사용되는 wallet은 모두 Light wallet임. Light wallet은 블록체인 네트워크 데이터 모두를 저장하지 않고, 자신에게 필요한 거래에 관한 데이터만을 검증, 저장한다. (외부 Full-node 네트워크 자원을 끌어와 확인한다) 즉 중앙 서버에서 Full-node 네트워크 정보를 끌어와 확인하므로 보안이 확실시되지 않지만, 거래가 발생하게 되면 블록체인 네트워크에 기록되어 검증되기 때문에 잘못된 트랜잭션이 발생할 수는 없다. 다만, 해킹 공격이 들어왔을 때 이런 절차로 인하여 거래가 지연될 확률이 높다.
  • 안드로이드 지갑에서의 채굴 방식을 고수하려면 느린 연산속도를 고려한 채산성이 나와야 한다. 네트워크가 커지면 스마트폰에서의 채산성과 데스크탑에서의 채산성 차이가 커지게 될 것이다. 결국 스마트폰에서의 채굴은 암호화폐 생태계 초기에만 유의미하다고 볼 수 있다.
  • Full-node가 가진 정보를 필요할 때마다 공유 받아 사용하는 Light wallet은 거래, 암호화폐 보관 기능만 있음. 또한 Full-node에게 정보를 요청해야만 거래를 진행할 수 있음.
  • 비트코인의 Full-node는 전세계에 9,072개가 존재함. 미국이 1위, 한국은 12위.
  • 대부분의 지갑에서는 Smart-contract를 이용하여 거래하는 방식을 지원하지 않음.
  • 대부분이 Full-node가 아닌 Light-node임.
  • 개인키를 자신들의 서버에 보관하지 않는 웹 지갑이라면 해킹의 위험이 적지만, 자신이 관리를 잘 해야 함.
  • Light-node들은 머클트리를 이용하여 꼭대기 값만을 추출한다. 즉 블록들의 요약본만을 출력하여 갖고 있는데 입력값이 달라지면 출력값이 달라지는 해시의 성질 때문에 쉽게 검증이 가능하다.
  • 지갑을 설계할 때 블록체인 네트워크와 지갑의 연동, 즉 일부는 Full-node 다수는 Light-node 역할을 하게 해야함. Light-node는 해시트리를 이용하여, Full-node들이 제공해주는 해시경로(중간값)를 해시하여 거래내역 검증을 해야 하는 시스템이 필요함.
  • Electrum같이 회사에서 블록체인 장부를 저장하고, 필요한 사용자들은 서버에 저장된 블록체인 네트워크 데이터를 볼 수 있게 만든 지갑이 존재한다. Electrum같은 지갑 소프트웨어는 사용자들이 블록체인 장부를 따로 저장하지 않아도 되며 필요할 때마다 열람할 수 있게 설계되었다.




개인적으로 Waves의 지갑이 제일 마음에 들었습니다. ㅎㅎ 오타 및 지적, 부연 설명 등을 댓글로 남겨주시면 풀보팅으로 보답드립니당. (업무와 병행하여 공부하는 김에 만든 건데 아직도 갈 길이 한참..크헙..)


Coin Marketplace

STEEM 0.27
TRX 0.13
JST 0.032
BTC 62622.67
ETH 2944.91
USDT 1.00
SBD 3.61