07 / 736HASH

채굴

Mining

대기 중인 결제가 확정된 블록에 들어가는 과정, 채굴자가 보상을 받는 이유, 그리고 다른 참여자의 검증이 필요한 이유를 설명합니다.

채굴은 Bitcoin 기록에 다음 블록을 추가하기 위한 경쟁입니다. 채굴자는 트랜잭션을 블록으로 묶고, 다른 사람이 쉽게 검증할 수 있는 결과를 계산으로 찾습니다. 블록이 받아들여지면 새로 발행된 비트코인과 포함된 결제의 수수료를 받을 수 있습니다. 그렇다고 채굴자가 규칙을 정하는 것은 아닙니다. 네트워크의 다른 컴퓨터가 제안을 독립적으로 검사하고 무효한 블록을 거부합니다.

Mining: 운영 결과 모델입력한 해시레이트, 소비전력, 풀 수수료로 예상 블록 보조금 몫과 전기요금을 비교합니다.

채굴은 컴퓨터 안에 숨은 동전을 파내는 일이 아닙니다. 기존 기록에 이어지는 트랜잭션 묶음, 즉 다음 유효한 블록을 제안하는 경쟁입니다. 채굴자는 자신의 제안에 대해 얻기 어려운 계산 결과를 찾습니다. 성공하면 블록을 다른 참여자에게 보냅니다. 이들은 계산과 트랜잭션을 모두 검사하고 같은 규칙에 따라 받아들일 수 있는지 판단합니다. 새 비트코인은 이 작업의 보상에 포함되지만, 발행만이 채굴의 목적은 아닙니다. 결제하는 사람에게 중요한 것은 대기하던 거래가 검증 가능한 기록에 담기는 것입니다. [1] [2]

결제를 보내면 먼저 노드 사이로 전파됩니다. 노드는 Bitcoin 네트워크에 참여하는 컴퓨터이고, mempool은 그 컴퓨터가 보관하는 미확정 트랜잭션 모음입니다. 누군가 모두를 위해 관리하는 단일 대기열은 없습니다. 채굴자는 가능한 트랜잭션 중에서 수수료와 제한된 공간을 고려해 후보 블록을 만듭니다. 한 트랜잭션이 다른 미확정 트랜잭션의 출력을 사용한다면, 그 선행 트랜잭션이 같은 블록에 먼저 나와야 합니다. getblocktemplate 명령은 이러한 의존관계를 포함해 블록 작성에 필요한 자료를 제공합니다. 블록 무게와 서명 검사 비용의 한도도 선택을 제한합니다. [1]

블록의 첫 트랜잭션은 Coinbase Transaction입니다. 같은 이름의 거래소 계정과는 관련이 없습니다. 채굴자가 허용된 보상을 자신에게 배정하는 특별한 트랜잭션입니다. 보상은 새로 만들어지는 비트코인인 블록 보조금과 블록 내 다른 트랜잭션의 수수료로 구성됩니다. 수수료는 입력 금액 합계와 출력 금액 합계의 차이이므로 기존 비트코인을 옮길 뿐입니다. 채굴자가 너무 많이 가져가면 노드는 블록 전체를 거부합니다. 올바른 보상도 즉시 쓸 수는 없습니다. Coinbase Transaction의 출력은 원래 블록보다 높이가 100 큰 블록부터 사용할 수 있습니다. [2]

아무도 당첨 결과를 미리 모르지만 발표된 뒤에는 누구나 빨리 확인할 수 있는 추첨을 생각해 보세요. 채굴자는 데이터의 디지털 지문인 해시를 계산합니다. 해시는 큰 숫자로도 읽을 수 있습니다. Bitcoin 블록에서는 이 숫자가 target이라는 경계 이하여야 하며, 이것이 Proof of Work의 요건입니다. 구체적으로 블록의 주요 요약 정보가 담긴 80바이트 헤더에 SHA-256 해시 함수를 두 번 적용합니다. 개별 결제의 답을 풀어내는 작업이 아닙니다. 계산에 넣는 데이터를 바꾸고 새 결과가 조건에 맞는지 시험합니다. [3]

ASIC은 특정 계산 작업을 위해 설계한 칩입니다. Bitcoin 채굴용 ASIC은 80바이트 헤더의 여러 변형에 이중 SHA-256을 반복합니다. 바꿀 수 있는 항목 중 하나가 헤더 안의 4바이트 숫자 nonce입니다. 다만 가능한 값의 범위는 유한합니다. 이를 모두 시험한 뒤에는 Coinbase Transaction 안의 추가 데이터인 extra nonce를 바꿀 수 있습니다. 그러면 트랜잭션을 요약한 지문인 Merkle Root와 헤더가 달라져 새 후보를 시험할 수 있습니다. 실패를 거듭한다고 확실한 성공에 가까워지지는 않습니다. 10분도 개별 채굴자에게 약속한 시간이 아니라 전체 네트워크의 목표 평균입니다. [3]

채굴자는 유효한 블록을 만들 이유가 있습니다. 거절된 제안으로는 사용할 수 있는 보상을 얻지 못하기 때문입니다. 하지만 채굴자의 검사가 다른 참여자의 검증을 대신하지는 않습니다. Full Node는 트랜잭션, 보상, Proof of Work를 포함한 Bitcoin 규칙을 스스로 검사하는 컴퓨터입니다. 예를 들어 규칙보다 많은 비트코인을 만드는 블록은 채굴자가 상당한 계산 능력을 투입했어도 거부합니다. 자신의 노드를 운영하면 블록이 올바르다는 채굴자의 주장만 믿을 필요가 없습니다. [2] [4]

혼자 채굴하면 성공까지 아주 오래 기다릴 수 있습니다. Mining Pool에서는 여러 참여자가 작업과 수입을 나눌 수 있습니다. 운영자는 각 장비의 기여를 추정하기 위해 더 쉬운 내부 조건을 만족하는 결과도 받습니다. 이런 결과를 share라고 합니다. 대부분의 share는 Bitcoin 네트워크에는 부족하고, 일부만 더 엄격한 네트워크 조건까지 만족합니다. 참여자에게 지급하는 금액은 선택한 정산 방식, 합의한 조건, 풀 수수료에 따릅니다. 풀 참여가 Bitcoin 규칙을 바꿀 권리를 주지는 않습니다. 운영자가 연결된 장비를 소유한다고 단정할 수도 없으며, 발견 블록의 비율만으로 장비 소유권을 입증할 수 없습니다. [3]

계산에 성공한 뒤에도 블록 전체가 다른 노드에 도착해야 합니다. 두 채굴자가 같은 선행 블록에 이어지는 서로 다른 유효 블록을 거의 동시에 찾을 수 있습니다. 잠시 네트워크 일부는 한 갈래를, 다른 일부는 다른 갈래를 아는 상태가 됩니다. 노드는 각 블록에 부여되는 작업량의 합, 즉 누적 작업량이 가장 큰 유효한 갈래를 따릅니다. 다음 블록이 한쪽 선택에 무게를 실어 줄 수 있습니다. 버려진 갈래의 블록도 그 자체로는 유효할 수 있지만 보상은 현재 기록에 포함되지 않습니다. 따라서 결과를 빨리 전파하고, 새 체인 끝을 받은 뒤 낡은 제안으로 계속 계산하지 않는 것도 중요합니다. [4]

Hashrate는 초당 해시 계산 시도 횟수입니다. 전체 네트워크 계산 능력에서 채굴자가 차지하는 비중은 성공 빈도를 추정하는 데 도움이 되지만 정기 수입을 보장하지 않습니다. 수입과 이익도 다릅니다. 전기, 냉각, 장비, 유지보수, 풀 수수료를 빼야 하고, 가동 중단은 결과를 더 나쁘게 할 수 있습니다. 단위도 주의하세요. TH/s는 계산 성능을, 와트는 소비하는 전력을 측정합니다. 성능이 좋은 장비라도 전기료가 높으면 손실을 낼 수 있으며, 한 번의 운 좋은 발견만으로 장기 수익성을 판단할 수 없습니다. [3]

자신의 노드에서는 getblocktemplate의 제안을 실제로 발견된 블록의 헤더, Coinbase Transaction, 일반 트랜잭션과 비교할 수 있습니다. getblocktemplate 같은 명령은 노드의 기술 인터페이스이며 돈을 맡겨야 하는 서비스가 아닙니다. submitblock은 완성된 블록을 노드에 넘겨 검사하게 합니다. 다만 로컬에서 받아들였다고 네트워크 전체 기록에 영구히 남는 것은 아닙니다. 풀에서는 제출한 share, 받아들여진 Bitcoin 블록, 실제 지급액을 구분하세요. 운영 비용까지 함께 봐야 채굴의 경제적 결과를 알 수 있습니다. [5]

더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 Proof of Work, Difficulty Adjustment, Block Subsidy, Transaction Fees, Mempool. 다음 항목에서도 이 글을 참조합니다 Proof of Work, Difficulty Adjustment, Block Subsidy, Halving.

DOC · 001Bitcoin Core v29.0: block assembler1차 출처 DOC · 002Bitcoin Core v29.0: block validation1차 출처 DOC · 003Bitcoin Developer Guide: Mining1차 출처 DOC · 004Bitcoin whitepaper1차 출처 DOC · 005BIP 22: getblocktemplate1차 출처
개정일: 1차 출처 우선 · 투자 조언이 아닙니다