채굴이라는 것은 컴퓨터의 자원을 활용해서 이체를 진행하고 네트워크의 보안을 강화하며 비트코인 시스템을 동기화를 시키는 작업입니다. 이런 과정을 통해 채굴에 참여한 채굴자들은 신규 비트코인 지급이라는 보상을 받게 됩니다.
채굴 프로그램을 통해서 비트코인 이체내역들을 확인하고 승인하는 작업들을 진행합니다. 이체내역들이 승인을 받기 위해서는 작업증명(proof-of-work)을 통해 블록에 포함되어야합니다. 이러한 작업증명은 초당 십억개의 계산을 해야하기 때문에 수행하기가 어렵습니다. 그러므로 이에 대한 보상으로 코인이 지급되는 것입니다. 이러한 작업증명은 이미 생성된 블록체인들의 순서에 맞춰서 생성되도록 설계되어 있어서 기존의 이체를 취소하고 다시 이체내역을 넣는 것을 굉장히 어렵게 만드는 방법을 통해 기존의 이체내역들이 변조되는 것을 방지합니다.
기술적으로 보자면, 채굴행위는 한 묶음의 이체기록과 [[nonce|논스])를 포함한 해시를 계산하는 행위입니다. 목표값(해시 난이도와 반비례 관계)보다 적은 해시값이 발견된다면 새로운 블록이 생성되고, 채굴자는 신규생성코인(현재 블록 당 25BTC)을 발급받습니다. 반면에 해시 목표 값보다 낮지 않다면, 다시 새로운 논스(nonce)가 시도되고 새로운 해시가 계산됩니다. 이런 동일한 작업이 각 채굴기들에 의해 매 초 수백만 번씩 반복 작업되고 있습니다.
만일 동시에 두 개의 블록이 생성되는 경우에는 두 개의 블록에서 순차적으로 길이가 더 길어지는 블록을 인정하도록 설계되어 있습니다. 블록의 길이가 더 길다는 채굴자들의 컴퓨팅 파워가(다른 말로 해시) 더 많은 쪽에서 생성했다는 것을 의미하며 해시가 더 높은 쪽의 데이터를 인정하도록 설계되어있습니다.
간략하게 설명하면, 전세계 비트코인의 컴퓨팅 능력의 50% 이상을 차지하고 동시에 변조해야만 비트코인을 무력화시킬 수 있다는 의미입니다.
비트코인 채굴이 왜 비트코인의 안정성에 기여하나요?
채굴은 블록을 생성하는 과정이고 이 블록안에 10분간의 이체 내역이 들어갑니다. 그런데 시스템적으로 어느 누구도 연속하여 블록체인을 생성하기 어렵게 설계되어있습니다. 이것은 두번째 블록을 생성하면서 이전에 만든 블록을 수정하는 것을 방지하기 위한 것입니다.
많은 채굴자들이 채굴을 진행하기 때문에 연속적인 블록생성을 막고 새로운 블록이 생성될 때 기존 블록의 변조를 막으면서 이전 거래내역의 변조를 막습니다. 기존 블록 변조의 난이도는 기하급수적으로 늘어나기 때문에 바로 이전블록의 변조가 어려우면 그 이전의 블록 변조는 굉장히 더 어려우므로 기존의 거래내역들은 보존됩니다.
비트코인 채굴은 어떻게 하나요?
비트코인 초기에는 누구나 쉽게 PC 혹은 노트북을 이용해서 블록을 찾고 이에 대한 보상으로 비트코인을 찾을 수 있었습니다. 하지만 지금은 점점 더 많은 사람들이 채굴에 참여하면서 전문화된 하드웨어(ASIC)를 사용하여 채굴을 하기 때문에 일반적인 채굴은 굉장히 어려워졌습니다.
ASIC가 뭔가요?
주문형 반도체(Application Specific Integrated Circuit, ASIC)이며, 특정 용도를 위한 집적 회로의 총칭입니다. 비트코인 쪽에서는 채굴에 특화된 반도체로 만든 장치(예 : 개미)를 ASIC라고 합니다.
예컨데, CPU, GPU는 명령어를 넣고 칩이 그걸 해석하면서 계산을 처리해나갑니다. 명령어를 해석하고, 그 명령어에 맞는 일을 하는 식입니다. 명령어의 수만큼 다양한 일을 처리할 수 있습니다. 하지만 ASIC으로 채굴을 한다는 것은 해당 채굴 알고리즘에만 맞추어 프로그래밍된 전용 반도체를 가지고 채굴하는 것입니다. 명령어를 해석하고 실행하고 이런 복잡한 과정 없이 바로 해시함수를 돌리기 때문에 성능이 엄청납니다.
다른 작업은 배제하고 채굴만을 하기 위한 전용 기계입니다. 현재 비트코인과 기타의 코인 중 scrypt 계열 코인에만 전용기계가 있습니다. 코인만을 위한 전용기기이기에 성능이 매우 뛰어납니다. 이 기계들의 등장 이후로는, 비트코인과 scrypt 코인은 일반 컴퓨터로는 채굴이 거의 불가능한 수준이 되었습니다.
채굴이 단순 비트코인 생태계 말고 다른 프로젝트 등에도 기여하나요?
아닙니다. 채굴행위는 오직 비트코인과만 연관이 있는 작업이며, 이 작업으로 비트코인 전체 네트워크의 보안성을 강화하게 됩니다.
솔직히 채굴은 에너지자원(전기) 낭비 아닌가요?
그렇다고 보기는 어렵습니다. 채굴은 화폐 시스템을 만들고 유지시키고 보안적으로 강화하는 데에 필수적인 행위입니다. 투입보다 효용이 많다면 그것은 낭비라 보기 어려울 것입니다. 이러한 자원의 투입은 전세계적인 화폐금융 시스템을 위해 반드시 필요합니다. 사실 은행이나 신용카드 회사 등의 경우도 별반 다르지 않습니다. 아니, 오히려 훨씬 많은 자원을 사용할 것입니다. 생각해보세요. 지금 당신은 전세계 유일의 24시간, 국경초월, 제로에 가까운 수수료, 전무후무한 전송속도의 차세대 금융시스템을 이용하고 계신 것입니다.
채굴을 할 때, 컴퓨터가 단순히 채굴 뿐만 아니라, 다른 목적의 일도 동시에 수행하면 효율적이지 않을까요?
비트코인 네트워크 보안 강화를 위해 채굴행위를 위해서는, 대단히 특정화된 특수한 기능이 필요합니다. 물론 이러한 기능은 일반 컴퓨터로도 얼마든지 가능합니다. 그러한 컴퓨터로 채굴도 하면서 이메일도 보내고 게임도하고 인터넷도 하고 문서작업도 충분히 할 수 있지요. 그러나, 그렇게 해서는 ‘효율성’을 얻을 수 없습니다. 2대의 컴퓨터가 있다고 가정해봅시다.
컴퓨터가 가진 성능은 정해져 있는데, 그러한 성능을 여러 기능에 맞추어 복합적으로 사용하는 경우가 있고, 또는 한 분야에 특화 시켜 모든 컴퓨팅 능력은 한 곳에 집중하는 경우가 있습니다. 둘 중 어느 경우가 채굴에 더욱 효율적이겠습니까? 그래서 나온 것이 ASIC기기(채굴전용장비) 입니다. 이러한 ASIC은 비트코인이나 여타의 코인 채굴에 특화된 그야말로 한정된 자원에서 최대한의 효율을 내기 위해 제작된 제품입니다. ASIC은 모니터가 없습니다. 스피커가 없습니다. 키보드가 없습니다. 게임도 못합니다. 그저 채굴만 합니다.
오직 달리는 것에 특화된 자동차가 있다고 가정해봅시다. 오직 하나의 목적은 빠르게 달리는 것입니다. -그러기 위해서 제동장치도 걷어내고, 라디오, 에어컨, 창문, 와이퍼, 심지어 차내 의자도 싹 뜯어내고 오로지 빠르게만 달릴 수 있도록 ‘최적화’ 시켜줍니다. 이러한 달리기만 위해 설계된 자동차를, 일반 가정용 자동차가 추월하는 것이 가능할까요? 그것이 바로 현대의 비트코인 채굴기들입니다. 그러니 사실 일반 가정용 컴퓨터로 채굴할 때에 상대적으로 경쟁에서 밀려, 아무런 성과가 없는 것은 너무도 당연하지요.
다른 목적의 일도 동시에 수행할 수 있습니다. 다만, 효율성/효과성 달성을 위해 그렇게 하지 않을 뿐입니다.
작업증명(Proof of Work)이라는 것이 어떻게 작동하는 건가요?
비트코인은 작업증명을 하기 위해 ‘해시캐시’라는 방법을 사용합니다. 간단히 살펴보자면 아래와 같은 설정을 사용합니다.
payload = (비트코인 네트워크상에서 일어나는 이체 및 그 처리와 관련 된 데이터)
nonce = 1
hash = SHA2(SHA2( payload + nonce ) )
채굴기들은 정해진 일정한 값 이하의 값을 얻을 때까지 논스(nonce) 수를 끊임없이 증가시킵니다. 정해진 일정한 값 이하를 찾는 순간 블록생성 및 블록 보상을 받을 수 있게 되는 것입니다. 이러한 값을 찾는 것은 마치 주머니에 1부터 100까지의 숫자가 쓰여진 100개의 구슬들을 가득 담아두고, 하나씩 꺼내어 11보다 적은 숫자가 나올 때까지 계속 반복하는 것과 같습니다. 어차피 손으로 느껴지는 구슬의 감각은 모두 같기 때문에, 계속해서 11보다 적은 숫자가 나올 때까지 주머니의 구슬을 꺼내보는 수밖에는 없습니다.
위의 간단한 설정 예를 보아도 알 수 있듯이, 작업증명 방식은 무언가 특별하게 어려운 수학문제를 푸는 것이 아닙니다. 특정 값을 찾기 위한 단순한 행위의 반복에 불과합니다.
100개의 구슬 중 11이라는 값보다 적은 숫자를 가진 구슬은 1부터 10까지는 10개의 구슬이 전부이므로, 이것을 꺼낼 확률은 ‘1/10’입니다. 확률이 같을 때, 더욱 자주 목표 값을 찾는 방법은, 결국 더 빠르게 같은 동작을 반복하는 것 뿐입니다. 1/10확률로 당신이 1시간에 1개의 목표 값 구슬을 찾을 수 있다고 할 때, 속도를 두 배로 빠르게 한다면, 이론상 2개를 찾을 수 있게 됩니다. 그러나 비트코인 프로토콜은 우리가 언제나 정해진 수의 구슬만을 찾을 수 있게 조정하고 있습니다. 어떻게 그렇게 할까요? 간단하게 11보다 적은 값을 지닌 구슬을 찾는 것을, 6보다 적은 값의 구슬을 찾는 것으로 확률을 반감시켜 버리는 것입니다. 이제 좀 전에 1/10의 확률이었던 것이, 이제는 1/20의 확률이 되었습니다. 당신이 속도를 더욱 높여 같은 시간 안에 특정 값의 구슬을 찾아내는 수를 늘리려 해도, 그 만큼 찾을 확률이 줄어들기 때문에, 결국 찾을 수 있는 구슬의 수는 언제나 일정하게 유지됩니다. 이것이 바로 비트코인의 난이도 조정방식입니다.
이러한 방식의 장점은, 자료를 검증하기가 매우 단순하다는 것입니다. 서로 연결되어 있는 한 쌍의 payload와 nonce에 담겨 있는 데이터는 언제나 동일합니다. 또한 이러한 데이터를 확인하기 위해 해야 하는 행위도 언제나 같습니다. 전부 일일이 확인해 보는 것입니다.
payload가 거래(장부)데이터를 담고 있는 기록서라면, nonce는 그 기록서 앞면에 쓰여져 있는 제목과도 같습니다. 일정한 거래기록인 payload를 확인하기 위해서는, 그것과 꼭 알 맞는 nonce를 찾아야만 합니다.
만일 어떠한 공격자가, 각 nonce에 담긴 payload를 조작하고자 한다면, 다른 이들보다 먼저 이를 찾아내고 재빠르게 기록을 바꿔 치기 해야 하는데, 사실상 현재의 네트워크 전체 해시량보다 더 적은 해시량으로는 이것이 거의 불가능합니다.
비트코인 채굴 방법
1. 하드웨어
채굴자들은 다양한 하드웨어를 이용하여 채굴을 할 수 있습니다. 각 하드웨어의 세부스펙이나 효율을 확인하려면Mining Hardware Comparison 페이지의 내용을 참조하세요.
2. CPU(Central Processing Unit; 중앙처리장치) 채굴
초기 비트코인 클라이언트는 기본채굴설정(디폴트)으로 CPU채굴을 지원했습니다. 그러나 GPU로 채굴하는 더욱 효율적인 방법이 등장하였고, 이내 CPU를 통한 채굴은 수익보다 높은 비용을 감당하지 못하고 거의 쓰이지 않게 되었습니다. 따라서 현재의 비트코인 클라이언트는 CPU채굴을 기본설정(디폴트)으로 제공하지 않습니다.
3. GPU(Graphic Processing Unit; 그래픽 카드) 채굴
초기 GPU를 통한 채굴은 CPU를 통한 채굴보다 압도적으로 높은 효율을 보여주었습니다. 또한 mining rigs에서 여러가지 채굴 장비 사항을 확인해 보실 수 잇습니다.
하지만, 현재 비트코인을 제외한 다른 알트코인들의 경우, 아직도 GPU를 통한 채굴이 많이 이용되고 있습니다.
4. FPGA(Field Programmable Gate Array; 현장 프로그래머블 게이트 어레이) 채굴
FPGA를 통한 채굴 또한 매우 높은 효율을 보여줍니다. GPU보다 높으며, CPU와는 비교조차 하지 못할 효율을 자랑합니다. 낮은 전기세에 전용 프로그래밍 기능을 통한 전문화 된 효율을 보여주는 FPGA가 등장한 이후로는 GPU를 통한 채굴마저 역사의 뒤안길로 사라지게 됩니다.
사실 이 방식은 다른 알트코인들에서는 아직 많이 시도되고 있는 방식은 아닙니다. 향후 기대해 볼 수 있겠지만, 현재로썬 알트코인이 주는 수익성이, FPGA를 개발하고 양산하는 데에 드는 비용을 상쇄하고 있지 못합니다.
5. ASIC(Application Specific Integrated Circuit; 주문형반도체) 채굴
ASIC을 통한 채굴방식은, 현재 절대 다수의 해시를 구성하고 있는 방식입니다. ASIC은 주문형 반도체로 보통 하나의 기능만을 위해 전용으로 만들어지는 마이크로 칩의 총칭입니다. 비트코인 채굴 커뮤니티에서는 ASIC이라는 용어를, 보통 채굴만을 목적으로 전문화되어 만들어진 마이크로 칩을 가리킬 때 사용합니다.
ASIC 채굴방식이 등장 후, 비트코인에 투입되는 전체 해시량이 기하급수적으로 늘어나기 시작합니다. 또한 이전의 모든 방식을 철저히 비효율적으로 만들며, 오직 ‘ASIC만을 통한 채굴’의 시대를 열게 됩니다.
6. Cloud(클라우드) 채굴
채굴이 너무나 전문화 되자 일반인들은 현실적으로 비싼 장비를 들여 채굴을 하기가 어려워졌습니다. 실제로 본인의 장비를 가지고 하는 것이 아닌, 다른 사람들이 가진 ‘해시’를 대여하여 채굴을 하는 방식이 등장했습니다. 사용자는 본인이 장비를 구입할 필요도 그것을 관리-유지할 필요도 없어서 좋았으며, 대여자는 이미 사둔 채굴 장비를 다른이들이 이용할 수 있게 하면서 계속 대여료를 받을 수 있으니 서로 좋았습니다. 시간 단위로 해시를 대여할 수 있습니다. CEX.IO에서 해당 서비스를 체험하실 수 있습니다.
7. 채굴 서비스
위의 클라우드 채굴과 같이 ‘해시대여’를 하는 방식이지만, 이 채굴 서비스는 ‘대규모의 해시’를 ‘일정 기간’ 동안, ‘계약서 작성’을 통해 계약을 하여 대여하여 사용하는 방식입니다. 다만 이 경우, 한 명에게 많은 사람들이 금액을 지불하며 해시를 빌리거나 장비를 제공하고 운용을 맡긴다면, 한 명에게 너무나 많은 해시가 몰려 비트코인의 분산화 시스템이 불안정해질 수 있다는 단점이 있습니다.
8. 마이닝 풀(Pool Service)
점점 더 많은 수의 마이너들이 더욱 더 높은 해시의 장비들을 가지고 서로 먼저 블록을 생성하려고 경쟁하게 됩니다. 그러나 언제나 블록을 가장 먼저 찾는 사람은 ‘한 주체’가 됩니다. 나머지는 아무것도 얻지 못하는 것이 되지요. 게다가 해시 구조와 채굴 작업의 특성상, 가장 높은 해시를 가진 주체가 상당 부분의 블록을 생성하게 됩니다.
만일 A가 70%의 해시를 점유하고 있고, B가 나머지인 30%의 해시를 점유하고 있다면, 통상적으로 10개의 블록 중 3개는 B가 생성하여 보상을 받아야 합니다. 그러나 채굴은 단순한 확률이 아닌, 철저한 경쟁방식이므로 ‘먼저’ 찾는 사람이 모든 것을 수령하며, 따라서 더 낮은 해시를 지닌 B는 10개의 블록 중 단 하나의 블록도 생성할 기회를 얻지 못하는 경우가 빈번하게 일어납니다.
따라서 이러한 불공평과 불필요한 낭비를 없애기 위해, 채굴자들은 집단으로 모여 ‘마이닝 풀’을 구성하게 됩니다. 객개인의 해시파워를 한 곳에 모아서 하나의 주체가 되어 블록을 생성하게 됩니다. 그리고 블록 생성으로 받은 보상을 각각의 기여도에 맞추어 나누어 배분합니다. 이전의 가장 빠르거나 운이 좋은 한 명만 모든 비트코인을 수령하는 방식이 아니라, 모두가 안정적으로 수익을 얻는 것이 가능해졌습니다.
이러한 미이닝 풀은 누구든 해시만 가지고 있다면 CPU든, GPU든, 아니면 ASIC이든 상관없이 참여가 가능합니다. 따라서 아무리 작은 해시를 가진 채굴자라도, ‘최소한의 비트코인’ 또는 ‘본인이 투입한 해시에 비례하는 만큼의 비트코인’을 수령하는 것이 가능해졌습니다.