Solo Mining에서는 자신의 연산 능력으로 찾아 체인에 받아들여진 블록에 대해 보상을 받습니다. 블록은 비트코인의 공개 기록인 블록체인에 추가되는 거래 묶음입니다. “블록을 찾는다”는 것은 이 묶음을 네트워크의 다른 참여자에게 제안할 수 있는 계산 결과를 찾는다는 뜻입니다. 다른 참여자는 그 블록이 모든 규칙을 지켰는지 다시 검증합니다. 다른 채굴자의 발견이 정기 수입을 만들어 주지는 않습니다. 자체 인프라나 수수료를 받는 외부 솔로 서버를 이용할 수 있습니다. 따라서 “솔로”는 주로 보상을 나누는 방식을 설명합니다.
얀은 채굴 계산에 특화된 장치인 ASIC을 구입합니다. 화면에는 작동 중이라고 나오는데 지갑에는 아무것도 들어오지 않습니다. Solo Mining에서는 이것만으로 고장이라고 볼 수 없습니다. 연산 능력은 블록을 찾을 기회를 줄 뿐, 시간당 임금을 주지 않기 때문입니다. 일반적인 Mining Pool은 정해진 규칙에 따라 참여자에게 보상을 나누지만, 얀은 자신의 발견을 기다립니다. 채굴자 통신 프로토콜인 Stratum으로 서버를 이용한다고 해서 자동으로 공동 지급 방식에 참여하는 것도 아닙니다. [1] [6]
이해하기 쉽게 전체 네트워크 연산 능력의 1%를 계속 보유한다고 가정해 보겠습니다. 이는 설명을 위한 큰 비중이지 가정용 장비에 대한 가정이 아닙니다. 다음 100개의 네트워크 블록 중 직접 찾는 개수의 기댓값은 하나입니다. 하지만 적어도 하나를 찾을 확률은 1 − 0.99^100, 약 63.4%에 불과합니다. 이 식은 해당 블록을 모두 다른 채굴자가 찾을 확률을 먼저 구한 다음 전체 확률에서 뺍니다. 남는 값이 얀이 적어도 하나를 찾을 확률입니다. 여러 개일 수도, 하나도 없을 수도 있습니다. 오래 기다렸다고 다음 시도가 유리해지지 않습니다. 채굴은 과거의 실패를 기억하지 않기 때문입니다. 난이도, 상대적 연산 능력, 가동 중단도 모델의 전제를 바꿉니다. [1]
얀은 결과와 상관없이 전기요금을 내고 장비, 냉각, 유지보수에도 비용을 씁니다. 따라서 평균 기대 수입은 매달 청구서를 내는 데 확실히 쓸 수 있는 돈이 아닙니다. 풀에서 수익을 나누면 변동이 줄어들지만, 같은 장비의 Hashrate, 즉 초당 계산 횟수가 늘지는 않습니다. 풀마다 수수료와 지급 규칙도 다릅니다. 집에서 실험한다면 블록을 전혀 못 찾아도 감당할 수 있는 비용 한도를 정할 수 있습니다. 다른 사람의 성공담이 자신의 수익 예측치는 아닙니다. [1]
Solo CKPool은 채굴 작업, 네트워크 연결, 통계를 제공하는 서비스의 한 예입니다. 얀이 찾은 블록의 보상은 일반 풀처럼 다른 참여자에게 나뉘지 않지만 서비스 수수료가 차감될 수 있습니다. 지급 주소, 이용 조건, 장애 시 절차를 알아야 합니다. 반대로 Bitcoin 규칙을 검증하는 노드인 Full Node만으로는 ASIC의 연산 능력을 대신할 수 없습니다. 인프라 선택과 보상 배분은 서로 다른 결정입니다. 서비스의 발견 목록은 성공한 사례를 보여 줄 뿐 각 장비의 확률을 알려 주지는 않습니다. [6]
장비는 제안된 블록 헤더의 숫자 지문인 hash를 반복 계산합니다. 헤더는 블록에 관한 짧은 데이터 묶음으로, 제안된 블록을 이전 블록 및 포함된 거래와 연결합니다. Bitcoin Core는 그 값이 nBits 필드에 인코딩된 네트워크 목표 target보다 작거나 같은지 확인합니다. 서버는 더 쉬운 목표를 만족하는 결과도 받을 수 있으며 이를 shares라고 합니다. 솔로 서비스에서 share는 장비의 작업 상태를 파악하는 데 쓰이며, 그 자체가 발견한 블록이나 소액 지급을 받을 권리는 아닙니다. shares 난이도를 낮추면 보고가 늘어날 뿐, 각 계산이 네트워크 목표를 만족할 확률은 높아지지 않습니다. 지금까지 최고의 share도 유효한 블록의 증거는 아닙니다. [2] [6]
탐색 전에 소프트웨어가 블록 초안인 템플릿을 만듭니다. BIP 22는 getblocktemplate 인터페이스를 설명합니다. 여기에는 이전 블록을 가리키는 previousblockhash, 거래, 보상에 쓸 수 있는 최대 금액인 coinbasevalue 등이 제공됩니다. 소프트웨어는 보상을 지급하는 특별한 첫 거래인 coinbase와 헤더를 구성하고, ASIC은 계산 변형을 시도합니다. 네트워크가 앞으로 나아가면 새 작업이 필요합니다. 아무리 빠른 장비라도 수취인이 잘못됐거나 템플릿이 오래됐다면 제대로 설정된 채굴이 아닙니다. [3]
충분히 낮은 hash만으로는 부족합니다. 다른 노드는 거래, coinbase, 체인과의 연결도 검증합니다. 두 채굴자가 경쟁하는 블록을 찾은 뒤 네트워크가 다른 가지를 이어 갈 수 있습니다. 활성 체인 밖에 남은 블록을 stale이라고 하며 그 보상은 해당 체인에서 쓸 수 없습니다. 따라서 신속한 전파와 최신 작업이 중요합니다. 얀은 서버 화면의 초록색 share 수락 메시지만 보지 않고, 블록 전체가 받아들여졌는지와 후속 확인을 살펴봅니다. [3] [4]
보상에는 새로 생성되는 bitcoin인 블록 보조금과 블록 내 거래 수수료가 포함될 수 있습니다. 블록 높이는 체인에서 블록이 놓인 순서를 나타냅니다. 메인넷의 높이 840000부터 1050000 직전 블록까지 보조금은 3.125 BTC입니다. 수수료는 달라지며 서비스가 자신의 몫을 차감할 수도 있습니다. Coinbase는 보조금과 해당 수수료의 합보다 많이 지급할 수 없습니다. COINBASE_MATURITY도 적용됩니다. 보상을 쓰는 거래는 최소 100만큼 높은 블록부터 포함될 수 있습니다. 이는 블록 수이지 100분이 아닙니다. 발견, 확인된 보상, 바로 쓸 수 있는 돈은 서로 다른 단계입니다. [4] [5] [7]
더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 채굴, Mining Pool, getblocktemplate, Hashrate, Pay Per Share, Pay Per Last N Shares. 다음 항목에서도 이 글을 참조합니다 Mining Pool, Pay Per Share.