Bitcoin의 첫 소프트웨어인 v0.1이 소스포지를 통해 공개되었습니다. RAR 압축파일 형태로 등록되었으며 C++로 제작된 소스 코드와 윈도우(Windows)용 실행파일인 BITCOIN.EXE가 포함되어 있습니다.
다음은 사토시 나카모토가 등록 시 작성한 글 전문의 번역입니다.
비트코인 첫 버전을 공개합니다. 비트코인은 P2P방식으로 이중 사용을 방지한 새로운 전자 화폐 시스템입니다. 또한 이 시스템은 서버나 중앙 집권적인 관리를 필요로하지 않습니다.
bitcoin.org의 스크린샷을 참고하시기 바랍니다.
다운로드 주소 : http://downloads.sourceforge.net/bitcoin/bitcoin-0.1.0.rar
현재는 윈도우 버전만 제공하며 C++ 오픈 소스 코드가 함께 제공됩니다.
압축을 해제하고 BITCOIN.EXE 파일을 실행하면 자동으로 다른 노드들과 연결됩니다.지속적으로 연결 요청을 처리할 수 있도록 노드를 유지해주시면 네트워크에 큰 도움이 됩니다. 8333번 포트(port)가 열려 있어야 들어오는 요청을 받을 수 있습니다.
아직은 실험적인 알파(alpha) 버전의 소프트웨어입니다. 여러 상황을 고려하여 제작된 버전이지만 완벽한 작동을 보장하지는 않습니다.
코인을 보유하려면 누군가로부터 코인을 전송받거나 옵션(Options)의 코인 생성(Generate Coins) 항목을 활성화하여 블록을 생성하면 됩니다. 작업 대한 증명(proof-of-work)의 방식으로 난이도(difficulty)가 결정되기 때문에 초기에는 일반 컴퓨터로도 몇 시간이면 코인을 생성할 수 있습니다. 하지만 경쟁자가 많아질수록 난이도가 자동으로 올라가기 코인을 얻기가 점차 어려워집니다. 생성된 코인은 120 블록(약 20시간)이 지난 뒤에 사용할 수 있습니다.
코인을 전송하는 방식은 두 가지가 있습니다. 만약 수신자가 온라인 상태일 경우 받을 사람의 IP 주소를 입력하면 공개 키(Public key)를 받아와서 간단한 문구와 함께 코인을 전송할 수 있습니다. 수신자가 오프라인 상태라면 비트코인 주소로 발송하는 것도 가능합니다. 이 경우 수신자가 나중에 접속하여 해당 거래가 포함된 블록을 내려받을 때 코인이 수신됩니다. 이 방법은 개인정보의 은닉이 상대적으로 힘들다는 단점이 있습니다. 하지만 송, 수신자가 동시에 온라인인 경우가 드물고 연결이 원활하게 이루어지지 못할 때도 있기 때문에 비트코인 주소를 사용하는 것도 유용한 방식일 수 있습니다.
비트코인의 총 발행량은 21,000,000 코인입니다. 이 코인들은 네트워크에 접속하여 블록을 생성한 노드에게 제공되며 보상 코인의 개수는 약 4년마다 반으로 줄어듭니다.
처음 4년간: 10,500,000 코인
다음 4년간: 5,250,000 코인
다음 4년간: 2,625,000 코인
다음 4년간: 1,312,500 코인
등등...모든 코인이 분배되면 전송 요금(Transaction fees)을 통해 시스템은 운영됩니다. 블록을 생성하는 노드는 코인을 보상으로 받으므로 전체 거래 시스템이 무료로 운영되는 것이 가능합니다.
사토시 나카모토
비트코인은 총 21,000,000 코인이 발행되도록 정해져 있는데 이를 누구에게 제공할까요? 앞서 암호화를 통해 블록을 확정하는 참여자가 있다고 설명했는데 이들 중 블록을 정리한 이에게 보상 코인과 그 블록에 포함된 거래의 전송 요금을 합하여 보상으로 제공합니다. 이는 비트코인 장부 정리에 컴퓨터 연산을 제공하는 것에 대한 대가인 셈입니다. 그리고 이러한 블록 생성 과정이 금을 캐는 과정과 비슷하다하여 이를 채굴 작업(Mining)이라고 합니다.
그렇다면 채굴 작업(다른 말로 장부 기입 작업)에 난이도가 필요한 이유는 무엇일까요? 비트코인 네트워크에 채굴자가 많이 참여할수록 블록을 확정하는 시간은 짧아지게 되고 발행되는 코인이 예상보다 빨리 소진되는 문제가 발생합니다. 이를 방지하기 위해 참여자가 늘어나 블록의 생성 속도가 빨라지면 작업의 난이도를 자동으로 증가시켜 블록의 생성을 어렵게 만들어 생성 시간을 늦춥니다. 난이도를 통해 블록 생성 시간이 약 10분 정도가 되도록 자동으로 유지되도록 하는 것입니다.
전송에 사용되는 공개 키를 설명하기 위해서는 비밀 키(Private key)를 함께 이해할 필요가 있습니다. 이 시스템 하에서 공개 키는 누구나 알 수 있는 것이어야, 하고 비밀키는 소유자만 알고 있어야 합니다.
집집마다 있는 우편함을 예로 들면. 우편함의 위치(집 주소)를 공개 키라고 한다면 우편함 잠금장치의 열쇠가 비밀 키라고 할 수 있습니다. 집 주소는 누구에게나 공개되어 우편 배달부는 주소에 맞게 우편물을 전달할 수 있고, 우편함 자물쇠를 여는 열쇠는 소유자만 가지고 있기 때문에 안전하게 문제 없이 가능합니다. 비트코인은 이런 공개 키 암호 방식을 통해 송금이 이루어집니다. 비트코인 지갑의 주소는 공개 키여서 알려져도 보안상 아무 문제가 없습니다. 출금 시 필요한 개인 키만 분실하지 않는다면 다른 이가 절대 사용할 수 없기 때문입니다.
한가지 재밌는 사실은, 초기의 비트코인 클라이언트에서는 IP 주소를 통한 비트코인을 송금이 가능했다는 것입니다. 하지만 이 기능은 보안의 문제가 야기될 수도 있고 활용도도 낮아 지금은 지원하지 않고 있습니다.
첫 블록이 생성된지 약 열흘 만에 처음으로 비트코인 송금이 실행되었습니다. 170번째 블록에 이 송금 기록이 저장되어 있습니다. 이 거래는 사토시 나카모토가 Hal Finney에게 테스트 용도로 보낸 것으로 10 BTC가 전송되었습니다.
Hal Finney는 암호 전문가로 초기 비트코인에 많은 도움을 준 인물입니다. 이중 사용의 다양한 공격 방식 중 하나를 규명(그의 이름을 따서 Finney attack이라고 부릅니다) 하기도 하는 등 비트코인의 안정화에 큰 역할을 했습니다.
BTC는 비트코인을 세는 단위입니다. 비트코인은 소수점 8자리까지 분할이 가능한데, 이 외에도 통용되는 추가적인 단위들이 있습니다.
New Liberty Standard가 비트코인과 달러와의 교환가치를 제공하기 시작했습니다. 미화(USD) $1 : 1,309.03 BTC가 처음으로 공표된 교환가치 입니다. 하지만 한달만인 11월 5일에 $1에 765 BTC 까지 가파르게 상승하고 다시 한달 뒤 $1에 1600 BTC 까지 급락하는 불안정한 모습을 보입니다.
freenode IRC(Internet Relay Chat)에 bitcoin-dev 채널이 등록되었습니다. 이 채널은 개발자들 사이의 원활한 커뮤니케이션을 목적으로 합니다.
v0.2의 주요 특징은 다음과 같습니다.
사토시 나카모토는 비트코인 포럼에 GPU 채굴에 대한 자신의 견해를 밝혔습니다.
비트코인 네트워크에서 하루에 만들어지는 코인의 양은 어차피 동일합니다. 빠른 기계를 사용한다고 해서 코인을 가져가는 절대적인 양이 많아지는 것이 아니라 상대적인 비율이 많아질 뿐입니다. 만약 모두가 빠른 기계를 쓰게 된다면 더 이상 이전처럼 많은 비율을 가져가지도 못합니다.
비트코인 네트워크에 도움이 되기 위해서는 GPU를 채굴에 도입하는 것을 최대한 늦추는 신사협정이 필요합니다. 이를 통해 신규 유저의 진입 장벽을 낮출 수 있습니다. 누구라도 CPU를 통해서 공정하게 경쟁하는 지금이 훨씬 매력적인 시스템입니다.
첫 블록에서 1이었던 난이도가 12월 30일에 증가했으며, 증가율은 18% 입니다.
난이도는 채굴 이익에 반비례하는 변수이므로 채굴자들은 이를 관심있게 볼 수 밖에 없습니다. 한 개의 블록을 생성하는데 걸리는 시간은 아래의 수식으로 예측할 수 있습니다.
블록 생성에 소요되는 시간 = 난이도 * 2 ^ 32 / 채굴기의 속도 H/s
위 수식을 토대로 하면, 난이도가 2배 증가하면 블록 생성 속도는 2배 증가합니다. 반면, 채굴기의 속도가 2배 빨라지면 블럭 생성 속도는 반으로 줄어드는 것을 알 수 있습니다.