비트코인과 블록체인 (1) - 비트코인과 채굴 방법
1. What is Bitcoin?
비트코인은 사토시 나카모토가 2008년 논문을 통해 최초로 발표하고, 2009년 개발한 전자화폐입니다.
사토시 나카모토는 가명으로 2016년 5월 2일 호주 사업가 ‘크레이그 라이트’가 자신이 사토시라고 주장하였습니다.
라이트는 자신이 비트코인 개발자라는 것을 입증하기 위해 2009년 비트코인이 개발됐을 때 첫 거래에 쓰였던 암호화 키를 가지고 디지털 방식으로 메시지에 서명하는 모습을 시연했습니다.
또 비트코인 커뮤니티에서 휴면 중인 자신의 온라인 계정에 ‘나카모토 사토시' 계정으로 로그인을 하는 모습을 보여줬습니다.
비트코인은 발행 기관이 존재하지 않으며, 거래는 P2P 기반 분산 데이터베이스에 의해 이루어집니다.
발행처가 없어 사용자가 주어진 문제를 풀어 비트코인을 받을 수 있으며, 이를 채굴이라 합니다.
최대 2,100만 비트코인을 채굴할 수 있으며, 지급 비트코인 및 문제 난이도 변경하여 통화 공급량을 조절한다.
발행 및 관리기관이 없으므로, 거래 증명을 위해 모든 거래 내역을 공개합니다.
거래 내역을 블록체인을 이용하여 기록하고, 공개하지만, 개인정보가 거래에 전혀 사용되지 않아 익명성이 보장됩니다.
2. hashcash 문제 풀이
- 앞자리 몇 개 이상의 0으로 시작하는 SHA-256 해시 값(256비트) 찾기
- 연속된 0의 비트 크기를 통해 난이도 조절
- 현재 256비트 중 처음 72 비트가 0인 값 찾기
- 연속된 0의 비트 크기를 통해 난이도 조절
- 풀이 보상
- 2009년 ~ 2012년 보상 : 50BTC
- 2017년 보상 : 12.5BTC (2017.10.13 17:00 기준 8,300만 원)
비트코인을 지급 받기 위한 hashcash는 앞자리 몇 개 이상의 0으로 시작하는 SHA-256 해시 값을 찾는 문제입니다.
2017년 10월 현재는 앞 자리 72개의 0으로 시작하는 SHA-256 해시 값을 찾아야 합니다.
0의 개수가 하나씩 늘어날 때마다 확률적으로 16배씩 더 많은 nonce 숫자를 대입해 보아야 한다. Nonce는 바뀌는 값에 맞춰 찾아내야 하는 값입니다.
0의 개수가 5개인 해시 값을 찾으려면 약 백만 개의 nonce 숫자를 대입해야 할 것이라 컴퓨터를 사용해도 쉽게 찾기 어렵습니다.
해시 값을 찾는 데 오랜 시간이 걸리는 hashcash 문제는 블록체인 이라는 거래 내역 데이터의 위조를 방지하는 데 중요한 역할을 한다.
또한 이 보상 때문에 많은 사용자가 채굴을 위해 PC를 켜고 비트코인 프로그램을 실행한다는 점도 중요합니다.
이 덕분에 P2P 네트워크가 수많은 분산 노드를 24시간 확보해 P2P 네트워크를 안정적으로 유지할 수 있게 됩니다.
정답을 맞추게 되면 풀이 보상으로 비트코인을 지급해줍니다.
2017년도 기준 정답자에게 12.5BTC을 지급하며, 이는 한화 기준으로 8300만원 입니다.
비트코인은 2,100만 BTC가 채굴되면 고갈되기 때문에 점차 지급되는 비트코인을 줄여 통화 공급량을 조절합니다.
비트코인이 개발된 2009년 부터 2012년까지는 50BTC, 2016년까지는 25BTC이 지급되었습니다.
- 앞자리 몇 개 이상의 0으로 시작하는 SHA-256 해시 값 찾기
-
예시) hello world 문자열에 nonce를 추가하여 SHA-256 계산
-
문자열 | 해시 값 |
hello world 0 | 3cad76d283686392c9c1813baf25239a3f09b9e075d830984a9a93d62b93adb8 |
hello world 1 | 063dbf1d36387944a5f0ace625b4d3ee36b2daefd8bdaee5ede723637efb1cf4 |
hello world 2 | eEd12932f3ef94c0792fbc55263968006e867e522cf9faa88274340a2671d4441 |
hello world 3 | 4ffabbab4e763202462df1f59811944121588f0567f55bce581a0e99ebcf6606 |
hello world 4 | 000e5e410dd915d190cce21d72a40bdbcc9db96d80de87d28896b56766f31b4e |
hello world 5 | F6471bb5cd1837f3ef4891903c40c5300c9f0fd8a902d5c3774628c44dab78ed |
hello world 6 | 6a9b5a89258b50744dfdf62e49ac6d869e8916e04ce57d9d1fc953daed9bfcd8 |
다음은 문제 풀이 예시입니다. Hello world 문자열에 nonce를 추가하여 SHA-256을 계산합니다.
앞자리가 0인 값은 1과 4입니다.
문제가 앞자리 3개가 0으로 시작하는 값을 찾는 것이었다면 4가 정답이 되는 것입니다.
3. 비트코인 지갑 생성
다음은 직접 채굴을 하는 방법입니다. 우선 채굴비트코인 지갑을 생성합니다.
가장 유명한 사이트는 BLOCKCHAIN입니다.
이메일 주소와 사용할 패스워드를 입력하면 이메일로 지갑 ID가 발송됩니다.
발송된 지갑 ID를 통해 내 지갑에 접속한 모습입니다.
현재 지갑에 존재하는 비트코인 잔액과 비트코인 환율 등을 간단하게 확인할 수 있습니다.
4. 채굴 풀을 이용한 비트코인 채굴
다음은 채굴 풀을 이용한 비트코인을 채굴하는 방법입니다.문제 풀이 과정에 나의 PC 성능을 기여하고, 채굴이 완료되면 계산에 기여한 비율 만큼 비트코인을 분배 받습니다.
혼자서 풀다 포기하는 경우에는 보상이 없으므로 대부분 채굴 풀을 이용합니다.
채굴 풀이란 hashcash 문제 풀이를 위해 사람들이 모인 단체를 칭합니다.
채굴 풀은 검색하면 굉장히 다양하게 존재합니다.
제가 소개할 채굴 풀은 BitMinter입니다.
클라이언트가 자바파일로 배포되어 다양한 플랫폼에서 이용 가능합니다.
집에서 일반 PC로 채굴을 수행하면, 전기세도 뽑지 못한다고 합니다.
채굴에는 CPU보다는 GPU가 연산에 유리합니다. 때문에 고성능 그래픽 카드 품귀 현상도 빚어지고 있습니다.
또한 비트코인 채굴 전문 하드웨어도 출시되고 있으며, 비트코인 공장도 등장하였습니다.