MSTR Cat

블록체인/레벨 II · 작동 원리/2.3 블록과 체인/수업 4

작업증명과 목표값

사는 데는 에너지가 들고, 검증하는 데는 해시 한 번이면 되는 복권

준비물블록 탐색기 인터페이스SHA-256을 지원하는 16진수 계산기 또는 프로그래밍 환경비트코인 개발자 레퍼런스(Bitcoin Developer Reference) 문서

호기심

  1. 수치적 목표값이 낮을수록 유효한 해시를 찾기가 왜 더 어려워질까요?
  2. 4바이트 값이 어떻게 2^256가지 경우의 수를 제약할 만큼 큰 수를 인코딩할 수 있을까요?
  3. 해시 파워가 두 배로 늘었는데 목표값이 그대로라면 예상 블록 생성 시간은 어떻게 될까요?

탐구

  1. 블록은 연산 퍼즐을 풀었을 때만 승인됩니다. 채굴자는 이중 SHA-256 해시가 ‘목표값(target)’이라는 특정 임계값보다 수치상 작거나 같은 80바이트 헤더를 찾아내야 합니다. 이 제약 때문에 블록 생성 과정은 2^256개의 가능한 해시로 이루어진 거대한 공간에서 희귀한 수를 찾는 탐색이 됩니다. 후보 블록의 유효성은 전적으로 이 하나의 수학적 부등식에 달려 있습니다.
  2. 목표값을 32바이트 전체 형태로 저장하면 헤더 공간을 지나치게 차지하므로, 목표값은 그대로 저장되지 않습니다. 대신 가수-지수(mantissa-exponent) 인코딩 방식으로 ‘nBits’라는 4바이트 값으로 압축됩니다. 이 형식은 3바이트 가수만 유지하는 손실 방식이라 목표값이 약간 반올림되지만, 실제로는 아무런 손해가 없습니다. 이 4바이트를 디코딩하면 허용 가능한 해시 값의 상한을 정하는 거대한 256비트 수가 복원됩니다.
  3. 유효한 해시를 찾기 위해 채굴자들은 헤더 필드를 바꿔 가며 반복 시도합니다. 주된 변수는 32비트 논스로, 한 번의 시도 주기마다 약 43억 개의 서로 다른 값을 제공합니다. 하드웨어 속도가 빨라 이 조합을 순식간에 모두 소진하면, 채굴자들은 코인베이스 트랜잭션 안의 엑스트라 논스를 바꾸거나 타임스탬프를 조정해 새로운 머클 루트와 헤더 구성을 만들어냅니다. 변경할 때마다 완전히 다른 해시 출력이 나오므로, 사실상 새 복권을 한 장 뽑는 셈입니다.
  4. 예상되는 작업량은 난이도에 정비례하여 증가하는 반면, 목표값은 그 반대 방향으로 변합니다. 해시 파워가 증가한 후 네트워크가 목표값을 재조정하면 목표값이 낮아지고, 유효한 솔루션을 얻기 위해서는 이진 표현에서 더 많은 선두 0이 필요해집니다. 하나의 블록을 찾는 데 필요한 예상 해시 횟수는 난이도에 2^32를 곱한 값과 유사합니다. 이러한 스케일링 덕분에 노트북에서 채굴을 하든 산업용 채굴장에서 채굴을 하든, 블록 간의 평균 간격은 약 10분으로 안정적으로 유지됩니다.
  5. 검증과 생성은 비대칭적입니다. 유효한 해시를 찾는 데는 수십억 번의 시도가 필요할 수 있지만, 이를 확인하는 데는 헤더에 대한 이중 SHA-256 한 번과 목표값과의 비교 한 번이면 충분합니다. 따라서 작업증명 확인은 즉시 끝나지만, 블록을 완전히 검증하려면 여전히 그 안의 모든 트랜잭션을 확인해야 합니다. 보안 모델은 바로 이 격차에 기반합니다. 작업을 만들어내는 데는 비용이 많이 들지만, 그 작업을 신뢰하는 데는 비용이 적게 듭니다.
  6. 제네시스 블록은 규칙상 허용되는 가장 쉬운 난이도인 1에서 채굴되었습니다. 그때도 유효한 해시를 얻으려면 선행 0 비트가 약 32개 필요했는데, 이는 약 43억 번 시도에 한 번 성공하는 수준입니다. 전 세계 해시 파워가 여러 자릿수 규모로 늘어났기 때문에 최근 블록에는 훨씬 더 많은 선행 0이 필요합니다. 1번 블록 해시의 16진수 표현을 현재 블록의 해시와 비교해 보면, 열린 들판에서 극도로 좁아진 탐색 공간으로의 극적인 변화를 확인할 수 있습니다.

핵심 사실

  • 유효한 비트코인 블록 헤더 해시는 그 난이도 목표값보다 숫자상으로 작거나 같아야 합니다.
  • 목표값은 가수-지수 인코딩을 사용해 ‘nBits’라는 4바이트 값으로 압축 저장됩니다.
  • 채굴자들은 새로운 해시 후보를 만들기 위해 32비트 논스, 코인베이스 엑스트라 논스, 타임스탬프를 바꿉니다.
  • 난이도는 가능한 최대 목표값을 현재 목표값으로 나눈 값으로 정의됩니다.
  • 블록의 작업증명을 검증하는 데는 헤더에 대한 이중 SHA-256 한 번과 비교 한 번이면 됩니다.
  • 제네시스 블록은 난이도 1에서 채굴되었습니다.

연습 아홉, 여섯, 셋, 하나

9모으기비트코인 블록 헤더의 작업증명 계산에 관여하는 서로 다른 구성 요소나 변수 9가지를 나열하세요.
6묶기이 9가지 항목을 고정값, 시도마다 바뀌는 값, 주기마다 바뀌는 값, 압축 인코딩된 값, 트랜잭션에서 파생된 값, 검증에 쓰이는 값의 6개 범주로 분류하세요.
3추리기6개 그룹을, 네트워크 해시 파워에 따라 난이도가 어떻게 변하는지를 결정하는 3가지 핵심 원칙으로 줄이세요.
1결정화작업증명이 왜 만들기는 어렵지만 검증하기는 쉬운지 설명하는 문장을 하나 쓰세요.

팩트 체크

날짜, 수치 및 주장은 아래에 명시된 출처들을 통해 확인되었습니다.

인터랙티브 아카데미에서 열기 →

EN PT ES ZH JA RU DE FR MS