채굴은 거래 선택과 Proof of Work를 만족하는 헤더 탐색을 결합합니다. 채굴자가 블록을 제안하면 다른 노드가 유효성과 최대 누적 작업량 분기 소속을 독립적으로 확인합니다.
하나의 중앙 거래 대기열은 없습니다. 채굴 노드는 자신의 mempool을 가지며 getblocktemplate이 거래, 의존성, 매개변수를 제공합니다. 미확인 출력을 쓰는 자식 거래에는 같은 블록에서 먼저 등장하는 부모가 필요합니다. 블록 무게와 서명 검사 비용이 선택을 제한합니다. [Bitcoin Core v29.0: block assembler]
첫 거래는 허용 보조금과 포함된 거래 수수료 합계까지만 배분할 수 있습니다. 수수료는 입력과 출력의 차이이며 새 bitcoin이 아닙니다. 과도한 보상은 Proof of Work가 충분해도 블록을 무효화합니다. coinbase 출력은 가장 빨라도 높이가 100 증가한 블록에서 쓸 수 있습니다. [Bitcoin Core v29.0: block validation]
하드웨어는 80바이트 헤더 변형에 이중 SHA-256을 반복합니다. 4바이트 nonce를 소진하면 coinbase extra nonce를 바꿔 Merkle Root와 탐색 공간을 바꿀 수 있습니다. 과거 실패가 다음 시도의 성공을 보장하지 않으며 10분은 네트워크 목표 평균이지 기계의 마감 시간이 아닙니다. [Bitcoin Developer Guide: Mining]
풀은 작업을 할당하고 더 쉬운 share 목표로 기여도를 추정할 수 있습니다. 일부 share만 네트워크 목표도 충족합니다. 지급은 합의된 정산 방식과 풀 수수료에 따르며 Bitcoin 합의가 직접 정하지 않습니다. 발견 블록 점유율은 연결 기계의 소유권을 증명하지 않습니다. [Bitcoin Developer Guide: Mining]
노드는 전파된 블록을 받아 검증합니다. 경쟁자의 유효 블록 동시 발견은 임시 분기를 만들 수 있으며 버려진 분기의 보상은 활성 이력에 남지 않습니다. 전파 속도와 새 끝점 이후 작업 갱신도 해시 발견과 함께 결과에 영향을 줍니다. [Bitcoin whitepaper]
hashrate 비율과 네트워크 속도는 예상 성공 빈도만 줍니다. 이익은 전기료, 효율, 냉각, 중단, 구매비와 풀 조건에도 달려 있습니다. TH/s는 와트가 아니며 한 번의 성공은 장기 수익성을 증명하지 않습니다. [Bitcoin Developer Guide: Mining]
getblocktemplate을 실제 발견 블록의 헤더, coinbase, 거래와 비교하세요. submitblock은 노드 검증을 요청하며 로컬 수락이 네트워크의 영구 포함을 보장하지 않습니다. 제출 share, 수락 블록, 실제 지급액을 구분하세요. [BIP 22: getblocktemplate]
더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 Proof of Work, 난이도 조정, 블록 보상의 신규 발행분, 트랜잭션 수수료, Mempool. 다음 항목에서도 이 글을 참조합니다 Proof of Work, 난이도 조정, 블록 보상의 신규 발행분, Halving.
01Bitcoin 채굴자는 실제로 무엇을 계산하나요?+
후보 블록의 80바이트 헤더에 대한 이중 SHA-256 해시를 반복 계산합니다. nonce와 헤더에 영향을 주는 다른 데이터를 바꿔 숫자 값이 유효한 네트워크 target보다 작거나 같은 해시를 찾습니다.
02채굴자가 사용자를 대신해 Bitcoin 규칙을 검증하나요?+
블록을 준비할 때 트랜잭션을 검증하지만 이 작업이 사용자 자신의 검증을 대신하지는 않습니다. 각 Full Node는 완성된 블록을 독립적으로 검사하며 합의 규칙에 위배되면 해당 Proof of Work와 관계없이 거부합니다.