비트코인 지갑의 종류와 특징

비트코인 지갑의 종류와 특징

비트코인 지갑은 비트코인을 보관할 수 있는 소프트웨어를 뜻하며 Key 관리, 잔고 관리, 거래 생성, 거래 인증 , 거래 내역 관리 등의 기능을 수행한다.

이는 물리적으로 소유하는 것이 아니기에 비트코인 지갑은 비트코인에 대한 소유권을 인증하고

비트코인을 주고 받을 수 있게 해주는 주소, 암호학적 공개키와 개인키를 사용하기 편하게 제공한다.

일반 사용자 측면의 지갑

Full 노드에서의 지갑은 블록체인 데이터를 모두 관리하고 있으므로 위의 기능을 모두 쉽고 안전하게 수행할 수 있으며 보안 위험에 대한 안정성 측면에서는 가장 바람직한 형태의 지갑이다. 그러나 블록체인 데이터를 유지/관리하는 비용이 크다고 할 수 있다.

Lightweight (SPV) 지갑은 블록체인 데이터가 없으므로 주변 Full 노드에 의존해야 한다. 이 지갑은 블록 헤더만 가지고 주변 Full 노드의 도움을 받아 잔고를 직접 관리해야 하고, 거래 생성 후 거래 인증도 직접 관리해야 한다. 블록체인 데이터를 직접 관리하지 않아도 된다는 이득에 대한 대가로 약간의 보안 위험에 노출될 수 있으며, 블록 헤더만으로 인증해야 하기 때문에 구현이 복잡해진다 (Bloom Filter, Merkle branch 인증 등).

아래의 지갑 App. (Bread wallet, Android wallet)들은 주로 Lightweight (SPV) 형태이며, 일부 App 들은 간단히 사용하기 위해 3rd-party API 기능을 사용하는 것들도 있다.

 

3rd-party API를 이용한 App. 들은 보안에 취약할 수밖에 없으므로 가장 바람직하지 못한 형태의 지갑이다.

개발자, 전문가 측면의 지갑

비트코인 지갑은 개인키 (혹은 비밀키 : Private key), 공개키 (Public Key), 지갑 주소 (Address)로 구성되어 있다 (Key의 집합체).

비트코인의 잔액은 지갑에 보관되는 것이 아니라 네트워크 상의 블록체인에 기록되어 있다.

거래 내역에 누구로부터 얼마를 받았고, 이 중 얼마를 사용하지 않았다는 기록 (UTXO : Unspent transaction output)이 해당 지갑의 잔고 (Balance) 이다.

개인키는 블록체인에 기록된 내 잔고를 사용할 때 본인 인증 (전자 서명 : Digital signature)용으로 사용되고,

공개키는 내가 서명했다는 사실을 다른 사람들이 확인할 때 사용한다 (서명 확인).

개인키는 내가 보관하고, 공개키는 블록체인 데이터 상에 공개되어 있다.

지갑 주소는 비트코인을 주고 받을 때 사용하고, 한 지갑에서 개인키, 공개키, 지갑 주소는 안정성을 위해 보통 여러 개를 사용한다.

1. 개인키

: 거래 (Transaction) 생성시 본인 증명 (전자 서명 생성) 에 사용된다. Random을 생성한다.

(혹은, 비밀 문장이나, 단어 목록들을 seed로 생성) 개인키는 공개키를 만드는데 반대방향으로는 안된다.

 

또 개인키만 알고 있으면 공개키와 지갑주소는 언제든지 생성할 수 있다.

만약 개인키를 잃어버리면 블록체인에 기록된 잔고를 사용할 수 없고 해당 지갑으로 송금된 비트코인은 영원히 아무도 사용할 수 없다.

2. 공개키 : 다른 사람이 거래를 생성한 사람을 확인할 때 (전자 서명 확인)에 사용된다.

공개키는 지갑주소를 만드는데 반대방향으로는 안된다.

3. 지갑주소 : 다른 사람들과 비트코인을 주고 받을 때 사용한다. 공개키로 생성된다 (공개키 -> 공개키 해시 ->주소)

바이낸스 수수료 20% 할인 가입 링크

Leave a Comment

%d 블로거가 이것을 좋아합니다: