ASICBoost는 블록 헤더의 디지털 지문인 해시를 계산할 때 일부 작업을 재사용하는 Bitcoin 채굴 최적화입니다. 시도에 드는 비용 일부를 줄이지만, 성공한 해시가 충족해야 할 조건을 낮추지는 않습니다. 적절한 작업 준비와 이를 활용할 수 있는 칩 설계가 필요합니다.
비슷한 주문을 처리할 때 공통 정보를 한 번에 준비할 수 있지만, 각 주문은 따로 마무리해야 합니다. ASICBoost의 기본 생각도 이렇게 이해할 수 있습니다. Timo Hanke는 2016년에 Sergio Demian Lerner와의 협력을 밝히며 이 방법을 설명했습니다. ASIC은 특정 계산 작업에 맞춰 만든 칩이며, 작업 순서를 바꾸면 불필요한 반복을 줄일 수 있습니다. 해시 함수 SHA-256이나 Bitcoin 규칙은 바뀌지 않습니다. 헤더의 최종 이중 해시는 여전히 목표값 이하여야 하고, 블록 전체도 유효해야 합니다. [1]
바이트는 디지털 데이터의 크기를 나타내는 단위입니다. 헤더는 블록 정보를 요약한 80바이트 데이터입니다. 첫 해시 처리에서는 64바이트를 먼저 계산하고, 남은 16바이트에 정해진 패딩을 붙여 처리합니다. 거래 전체의 지문인 Merkle root는 이 경계에 걸쳐 있으며 마지막 4바이트가 뒤쪽 부분에 들어갑니다. 그 옆에는 시간, 채굴 목표의 압축 표현인 bits, 시도마다 바꾸는 카운터 nonce가 있습니다. 따라서 어떤 필드를 바꾸느냐에 따라 재사용할 수 있는 계산이 달라집니다. [1]
Hanke는 알맞게 묶은 작업을 colliding work items라고 부릅니다. 헤더 앞부분이 달라 계산 중간 상태인 midstate도 서로 다릅니다. 반면 Message라는 부분은 같습니다. 선택한 nonce에 대해 첫 SHA-256의 뒤쪽 부분을 처리하는 보조 값들의 배열인 message schedule을 공유할 수 있습니다. 이후 계산은 서로 다른 중간 상태에서 각각 이어집니다. 최종 해시가 같은 경우를 찾았거나 함수를 깬 것이 아닙니다. 여기서 충돌은 선택한 입력 부분의 일치를 뜻하며, 헤더 앞부분은 다릅니다. [1]
Sergio Demian Lerner는 overt와 covert ASICBoost를 구분합니다. Overt는 헤더 버전 필드 nVersion에서 허용된 비트를 바꾸므로 Merkle root의 부분 일치를 찾을 필요가 없습니다. Covert는 그 일치를 찾습니다. Merkle root의 마지막 4바이트는 같게 두고 앞부분을 바꿉니다. 허용되는 거래 데이터나 거래 순서를 바꿀 수 있지만, 거래의 의존 관계를 지키고, 기록된 지문이 블록 데이터와 계속 일치하도록 해야 합니다. 헤더 버전이 다르다는 사실만으로 특정 전력 절감 효과나 운영자 신원을 확인할 수는 없습니다. [2]
풀은 채굴자들의 작업을 조율합니다. 장비가 통신하는 컴퓨터 서비스인 풀 서버는 합의된 조건에 따라 결과를 받아들입니다. 피터의 장비는 헤더를 마음대로 바꿀 수 없습니다. BIP310이라는 번호의 문서는 mining.configure를 통한 협상을 설명합니다. version-rolling.mask는 변경 가능한 비트를 나타내며, 응답은 채굴자와 서버가 공통으로 허용하는 범위를 선택합니다. 마스크는 허용된 위치를 보여 주는 것이지 속도 향상을 약속하지 않습니다. version_bits & ~last_mask == 0 조건은 제출한 비트가 마지막으로 유효한 마스크 밖으로 나가지 못하게 합니다. mining.set_version_mask 알림은 다음 작업을 기다리지 않고 즉시 적용됩니다. 장비를 제어하는 프로그램인 펌웨어는 이 합의를 따라야 합니다. [3]
BIP320은 범용 nVersion 비트 16개를 제안하고, 이를 대체하려는 BIP323은 24개를 설명합니다. 이번 편집 검토 시점에 두 문서의 상태는 Draft, 즉 초안입니다. 이 표시만으로 구현이 전혀 없거나 모든 풀이 지원한다고 판단할 수는 없습니다. 문서는 필드의 의도된 용도를 설명하지만, 실제 연결은 현재 마스크와 소프트웨어에 따릅니다. 피터는 BIP 번호만 보고 장비가 바꿀 수 있는 범위를 단정하거나 제안을 네트워크 규칙의 자동 변경으로 받아들이지 않습니다. [4] [5]
Hanke의 모델은 절감 비율을 x × (n − 1) / n으로 나타냅니다. x는 공유할 수 있는 계산의 비중이고 n은 적절한 작업의 수입니다. x = 25%, n = 4이면 18.75%가 됩니다. 각 작업에서 공통 준비를 반복하는 대신 함께 수행하기 때문입니다. 이는 계산 모델의 결과이며, 모든 장비의 소비 전력이 같은 비율로 줄어든다는 뜻은 아닙니다. 다른 회로와 운전 조건도 영향을 줍니다. 따라서 측정 없이 이 비율을 성능이나 수입 증가로 옮겨 계산할 수 없습니다. [1]
피터는 먼저 칩과 펌웨어의 지원, 풀과의 연동을 확인합니다. 그다음 풀이 작업을 받아들이는지 살피고, 비교 가능한 조건에서 장비 전체를 측정합니다. J/TH는 테라해시당 줄, 즉 일조 번의 해시 시도에 필요한 에너지를 뜻합니다. 비교할 때는 측정에 포함하는 장비 구성 요소와 기간이 같아야 합니다. ASICBoost라는 이름은 측정을 대신하지 못합니다. 작동 주파수를 높이는 오버클록과 같은 뜻도 아니며, 블록 발견이나 이익을 보장하지도 않습니다. 구성 전체가 지원할 때 일부 작업을 더 효율적으로 수행하는 방법입니다. [1] [3]
더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 ASIC Miner, 채굴, Block Header, Proof of Work, Bitcoin, SHA-256. 다음 항목에서도 이 글을 참조합니다 Mining Firmware.