Ch1 에서는 주요 개념과 용어를 설명하고 필요한 소프트웨어를 파악하면서 간단한 거래에서 비트코인을 사용하는 방법을 소개한다.



비트코인 이전의 디지털 통화들


디지털 머니를 받는 사람들은 기본적으로 두가지 질문을 떠올릴 수 있다.


1. 이 디지털머니가 위조가 아닌지 신뢰할 수 있는가?

2. 이 돈을 내가 아닌 자신의 소유라고 주장하는 사람이 나올 가능성이 있는가?(Double Spending문제로 알려져있다.)


실제 화폐는 정교하게 제작된 용지와 인쇄 기법을 이용해서 위조 지폐 문제와 끊임없이 싸우고 있다. 또한 동일한 지폐가 동시에 다른 두 장소에서 사용될 수 없기 때문에 종이 화폐는 이중지불 문제를 쉽게 해결한다.


기존 화폐도 디지털상으로 보관되고 송금된다. 이 경우는 통화에 대해 영향력을 가지고 있는 중앙기관을 통해 모든 전자 거래를 승인함으로써 위조 지폐문제와 이중지불 문제를 처리한다.


디지털 머니의 가치에대한 정당성을 인정하는데에는 암호 기법이 그 근간을 마련해준다. 특히 암호화된 전자 서명은 사용자들로 하여금 디지털 자산 혹은 해당 자산에 대한 소유권을 제공하는 거래 시 서명을 가능하게 해준다. 적절한 아키텍처가 존대한다면 디지털 서명 역시 이중지불 문제를 해결하는데 사용될 수 있다.


비트코인은 암호 기법과 분산 시스템에 대한 수십 년간 연구의 정점을 찍는 결과물로, 독창적이고 강력한 특성을 통해 다음 네 가지 측면에서 혁신적인 화폐라 할 수 있다. 


비트코인의 구성 요소는 다음과 같다.


- 분산화된 P2P 네트워크(비트코인 프로토콜)

- 공개 거래장부(블록체인)

- 분산회된 수학적 결정론적 통화 발행(분산 채굴)

- 분산회된 거래 검증 시스템(거래 스크립트)



비트코인의 역사


비트코인은 2008년 사토시 나카모토라는 필명으로 "Bitcoin: A Peer-to-Peer Electronic Cash System"이라는 제목의 보고서가 발간되면서 세상에 등장했다. 


b-money 와 HashCash 등 이전에 발멸됐던 화폐들을 조합해서 완전히 분산화된 전자화폐 시스템을 창조했다.


비트코인 시스템은 통화 발행이나 거래에 대한 지불 및 검증을 위해 중앙 통제에 의존하지 않는다.


주요혁신 사항으로는 전 셰계적으로 매 10분마다 '투표'를 수행하기 위해, 분산 연산 시스템(즉 작업 증명 알고리즘)을 사용함으로써 분산 네트워크가 각 거래 상태에 대해 합의(Consensus)에 이를 수 있도록 했다는 점이다. 이러한 과정 덕분에 단일 통화 단위가 두번 결제되어 발생하는 이중지불 문제를 손쉽게 해결한다.


비트코인 시스템은 완전히 투명한 수학 원리에 의해 운영되기 때뮨에 사토시 나카모토를 비롯한 그 누구도 이 시스템을 통제할 수 없다. 




분산 컴퓨팅 문제에 대한 해결책


사토시 나카모토가 비트코인을 발행하면서 '비잔티움 장군 문제(Byzantine General's Problem)'로 알려져 있는, 분산 컴퓨팅 분야에서 예전부터 풀지 못했던 문제에 대한 실용적인 해결책이 마련되었다.


간단하게 설명하면 비잔티움 장군 문제는 신뢰성이 없고 임시로 구성된 네트워크상에서 정보를 교환함으로써 행동방침에 대해 동의를 구하고자 하는 과정에서 발생한다. 


사토시 나카모토의 해결책은 신뢰성이 있는 중앙 기관의 존재가 없는 상태에서 네트워크의 동의를 얻기 위해서 작업 증명 개념을 이용한다. 





비트코인의 사용과 사용자들, 그들의 이야기


Skip(실제 사용되는 사례를 예로들고 구체적인 내용은 뒤에 설명한다고 쓰여있어서 이부분은 생략)



비트코인 시작하기


비트코인 네트워크에 가입해서 비트코인을 쓰려는 사용자라면 어플리케이션을 다운로드 하거나 웹 어플리케이션을 사용해야 한다. 비트코인은 표준이기 때문에 비트코인 클라이언트 소프트웨어에 대한 여러가지 구현 버전과 참조 구현이 있다.


참조구현의 경우 사토시 클라이언트(Satoshi client)로 알려져 있으며, 사토시 나카모토가 만든 기본 구현을 근간으로 개발팀이 오픈 소스 프로젝트로 운영하고 있다.


비트코인 클라이언트의 유형으로 크게 세 가지가 있다.



풀 클라이언트(Full Client)


풀 클라이언트 혹은 '풀 노드(full node)'는 비트코인 거래 정보를 전부(모든 사용자가 현재까지 진행한 거래내역 전부) 저장하고 비트코인 사용자들의 지갑을 관리하며 비트코인 네트워크상으로 직접 거래를 만들어 낼 수 있다. 이러한 특징은 어떤 서버나 제 3자의 서비스와 관계없이 프로토콜의 모든 측면을 처리하는 독립형 이메일 서버와 유사하다.


- 사용자들을 위해 최고수준의 통제와 독립성을 제공하지만 그에 따라 사용자들은 백업과 보안에 대한 부담을 지게된다.

- 적적한 백업 없이 풀 클라이언트를 이용하게 되는 경우 컴퓨터에 문제가 생기게 되면 자금을 잃을 수 있다.



라이트웨이트 클라이언트(Lightweight client)


라이트웨이트 클라이언트는 사용자의 지갑을 저장하긴 하지만 비트코인 거래나 네트워크에 접근하기 위해서는 제 3자가 소유한 서버에 의존한다. 라이늩웨이트 클라이언트의 경우 거래내역 전부에 대한 복제본을 저장하지 않기 때문에 거래 검증을 위해서는 제 3자 서버에 의존해야 한다. 이는 네트워크와 소통하기 위해 제 3자에게 의존하고 메일함 사용을 위해 메일 서버에 접속하는 독립형 이메일 클라이언트와 유사하다.



웹 클라이언트(Web Client)


웹 클라이언트는 웹 브라우저를 통해 접속하며 제 3자가 소유한 서버상에서 사용자의 지갑을 저장한다. 이는 전적으로 제 3자가 서버에 의존하는 웹 메일과 유사하다.


설치와 사용이 가장 쉽지만 보안과 통제에 대한 문제를 사용자와 웹 서비스 소유주가 공유해야 하는 위험이 있다. 많은 사례를 통해서도 알 수 있듯이 웹 지갑 서비스가 공격을 받는 경우 사용자들은 자금 전부를 잃게 될 수도 있다.




다음 부분은 비트코인 클라이언트인 멀티비트에 대한 튜토리얼과 이 어플리케이션을 사용해서 비트코인 장만 및 송수신 방법등의 순서를 소개한다.
























+ Recent posts