CS_Developer
[Blockchain] #2 비트코인이란 ? 본문
앞선 포스팅에서 우리는 블록체인과 비트코인에 대해 간단하게 알아보았다.
이번 포스팅에서는 비트코인을 조금 더 파고들어 보겠다.
비트코인의 구성요소
- Bitcoin Protocol: 분산 형태의 P2P 네트워크
- Blockchain: 공공의 tx 장부
- Consensus Rules: 비트코인이 어떤 식으로 운영되는지에 대한 규칙
- Proof-of-Work(PoW): 거래내역과 여러가지 기록들이 맞는지 합의하는 과정
위에 나열된 구성요소들을 조금 더 알아보면, 앞선 포스팅에서 말했듯, 비트코인은 분산화된 형태이다. 즉, 서버가 없다는 뜻이다. 또한 블록체인을 활용하여, 누구나 볼 수 있지만 수정은 할 수 없는 공공의 tx 장부가 존재한다. 이것은 쉽게 말하자면 데이터베이스 같은 것이다. 또한 일련의 규칙이 존재하며, 규칙을 활용하여 정말 이 거래가 맞는 거래인지 확인하는 과정을 거치게 된다.
가상화폐가 되기 위해서는 3가지 확인을 거쳐야 한다.
- 가짜나 위조가 아닌 진짜인가?
- 중복으로 사용되지 않았는가?
- 정말 소유자가 맞는가?
위의 세 가지 확인과정을 거치면 보통 우리는 가상화폐를 사용할 수 있다. 기존에는 1980년대 이후, 암호학을 이용한 가상화폐가 존재했다. 우리가 흔히 아는 은행처럼 중앙에서 발행하고 청산하는 중앙집중형 방식을 사용했다. 하지만 이 방식이 공격자의 주요 타깃이 되고, Single Point of Failure(SPoF) 문제를 발생시키게 되며, 어려움을 겪었다. SPoF는 하나의 서버가 공격을 받아 전체 시스템이 마비가 되거나, 터져버리는 것을 의미한다.
2008년, 비트코인은 기존의 HashCash와 같은 기술을 활용하고, PoW 기반 합의 알고리즘을 개발했다. 그 후 2009년 비트코인 네트워크가 시작되었다.
Bitcoin Wallet은 사용자와 비트코인 시스템을 연결시켜주는 일련의 인터페이스 역할을 담당한다. 현재 매우 다양한 wallet들이 존재한다.
- Desktop Wallet
- Mobile Wallet
- Web Wallet
- Hardware Wallet
- Paper Wallt
등이 존재한다.
Client는 역할과 동작방식에 따라 분류할 수 있다.
- Full-node client: 모든 tx를 저장하고 검증하는 역할을 한다.
- Lightweight client: tx정보를 얻기 위해서는 full-node에 연결해야 한다. 또한 지갑 사용자에 관련된 tx처리만을 담당한다.
- Third-party API client: 직접적인 연결이 아닌 써드파티 시스템을 이용하여 비트코인에 연결한다.
위에서 분류한 클라이언트는 추후에 예를 들면서 설명하도록 하겠다.
비트코인의 획득방법은 아래와 같다.
- 기존의 사용자로 부터 직접 구매
- 물건, 서비스 판매를 통한 획득
- ATM기기를 이용한 구매
- 비트코인 거래소를 통한 구매
또한 비트코인의 가격은 시장이 결정하기 때문에 때마다 달라진다. 이전 포스팅에서 언급한 것처럼 가격이 천차만별이다.
간단히 예시를 만들어 보면, 철수가 비트코인을 처음 사용하기 위해 mobile wallet을 설치한다.
wallet이 private key와 연관된 address를 생성하는데, 이 address는 공개키를 바탕으로 한다.
address는 다른 사람들과 공유하게 된다.
철수가 영희로부터 비트코인을 받기 위해서는 address를 알려줘야 한다.
신규 address는 관련된 tx가 수행되어야 비로소 비트코인 시스템에 등록된다. 즉 거래를 해야 등록이 된다는 것이다.
철수는 하나의 address가 아닌 여러 개의 address를 생성하여 사용할 수 있다. 이것이 보안적인 측면에서 더 좋을 것이다.
wallet안에는 여러 address들과 연관된 key들이 저장/관리된다.
철수는 영희에게 $10어치 비트코인을 구매하려 한다.
철수: 영희에게 자신의 address를 전달한다.
영희: 자신의 wallet에게 0.1 BTC 전달을 요청한다.
Wallet: tx생성 후 서명을 한다.
비트코인 네트워크에 tx가 전파된다. ( < 1 sec )
철수: 몇초 후, 자신의 wallet에 0.1 BTC가 입금되었음을 확인한다.
위에서 설명한 tx는 초기에 'unconfirmed'된 상태이다. 이 tx는 비트코인 네트워크에 전파되어있는 상태지만, 아직 블록체인에 기록이 되지 않았음을 의미한다.
10분마다 수행되는 mining을 통하여 이 tx가 블록체인에 추가되면, 'confirmed'상태로 변경된다. 이것을 기존 금융 시스템에서는 청산이라고 한다.
이제 철수는 0.1 BTC의 정상적인 소유자가 된 것이다.
다음 포스팅에서는 비트코인의 tx과정에 대해 알아보도록 하겠다.
여기까지 읽은 여러분은 비트코인의 예시와 블록체인의 관계에 대해 조금 더 알게 되었다.
'Computer Science > Blockchain Flatform' 카테고리의 다른 글
[Blockchain] #3 비트코인 생성과 절차 (0) | 2020.09.13 |
---|---|
[Blockchain] #1 블록체인이란 ? (0) | 2020.09.12 |