목푯값과 논스
비트코인 채굴에서는 두 가지가 필요합니다. 누구나 똑같이 판정할 수 있는 당첨 조건과, 그 조건을 만족할 때까지 계속 시도할 수 있는 손잡이입니다. 앞의 것이 목푯값이고 뒤의 것이 대표적인 탐색용 필드인 논스입니다.
목푯값은 당첨 조건입니다
목푯값은 채굴 경쟁의 기준이 되는 숫자입니다. 채굴자는 80바이트 블록 헤더에 SHA-256을 두 번 적용하고, 그 결과를 숫자로 해석해 목푯값과 비교합니다. 결과가 목푯값 이하이면 조건을 만족합니다(Bitcoin Developer Guide).
목푯값은 미리 정해진 공통 기준입니다. 기준이 없다면 서로 자신의 결과가 당첨이라고 주장할 수 있지만, 같은 기준이 있으면 누구나 비교로 결과를 확인할 수 있습니다.
목푯값을 낮추면 조건을 만족하는 결과가 나올 수 있는 범위가 좁아져 문제가 어려워집니다. 반대로 목푯값을 높이면 조건을 만족하기 쉬워집니다. 이 경쟁의 세기를 네트워크가 규칙에 따라 주기적으로 다시 계산하므로, 특정 사람이 임의로 정하는 값은 아닙니다.
논스는 시도를 위한 숫자입니다
논스는 조건을 만족하는 결과가 나올 때까지 채굴자가 바꿔 넣는 대표적인 숫자입니다. 복권에 비유하면 목푯값은 미리 공개된 당첨 조건이고, 논스는 매번 바꿔 적는 응모 번호입니다.
채굴자는 새 블록의 머리 부분, 즉 블록 헤더를 준비합니다. 그 안에 있는 32비트 논스라는 칸에 숫자를 넣고 해시를 계산한 뒤, 결과를 목푯값과 비교합니다.
- 결과가 목푯값 이하이면 조건을 만족합니다.
- 결과가 목푯값보다 크면 논스를 바꾸고 다시 계산합니다.
거래 내용은 그대로 두고 논스만 바꾸더라도 해시 결과 전체가 달라집니다. 해시에는 어떤 논스가 조건을 만족하는 결과를 만들지 미리 알아낼 수 있는 지름길이 없기 때문에, 바꿔 넣고 계산해 보는 과정을 반복해야 합니다.
논스의 가능한 값을 모두 시도해도 조건을 만족하지 않을 수 있습니다. 이때 채굴자는 채굴 보상을 지급하는 코인베이스 거래의 extraNonce처럼 블록의 다른 허용된 입력을 바꾸고, 그에 따라 머클 루트와 블록 헤더를 새로 만들어 추가로 탐색할 수 있습니다. 따라서 논스는 유일한 손잡이라기보다 대표적인 탐색용 필드입니다.
왜 두 가지가 함께 필요할까요
목푯값만 있고 바꿀 수 있는 입력이 없다면 반복해서 시도하기 어렵습니다. 논스만 있고 목푯값이 없다면 어느 결과를 당첨으로 볼지 정할 수 없습니다. 두 요소가 함께 있어야 누구나 같은 규칙으로 계속 경쟁할 수 있습니다.
전체장부에는 책임자가 없으므로, 새 페이지를 쓸 사람을 뽑아 줄 심판도 없습니다. 비트코인은 이 자리를 경쟁으로 정합니다. 채굴자는 조건을 만족하는 해시를 찾기 위해 수없이 시도하고, 먼저 유효한 블록을 제안한 채굴자가 새 블록을 전파합니다.
찾는 과정은 어렵지만 확인은 간단합니다. 다른 참가자들은 제안된 80바이트 블록 헤더에 해시를 계산해 목푯값 이하인지 확인하고, 거래와 블록의 다른 규칙도 검사합니다. 누가 당첨 결과를 찾기까지 몇 번 시도했는지는 확인할 필요가 없습니다. 찾을 때는 수많은 시도가 필요하지만, 검사할 때는 해당 헤더의 이중 SHA-256 해시를 계산해 목푯값과 비교하면 작업증명 조건을 확인할 수 있습니다.
어려운 수학 문제를 푸는 일일까요
채굴자가 어려운 수학 문제를 푼다고 표현하면 머리를 써서 정답을 알아낸다는 인상을 줄 수 있습니다. 실제 작업은 논스와 다른 허용된 입력을 바꿔 가며 해시를 계산하고, 조건에 맞는 결과를 찾는 반복에 가깝습니다.
천재적인 수학자라도 어떤 입력이 당첨 결과를 만들지 미리 알아내거나 순서를 요령으로 앞당길 수는 없습니다. 누구나 같은 규칙을 적용받고, 들인 계산만큼 기회를 얻도록 설계된 구조입니다. 이 단순함은 채굴 경쟁에서 특정한 지식이나 지위가 지름길이 되지 않게 하는 바탕입니다.
정리
- 목푯값은 작업증명 결과가 그 이하인지 판정하는 기준 숫자입니다.
- 논스는 조건을 만족하는 결과를 찾기 위해 바꿔 넣는 대표적인 탐색용 숫자입니다.
- 채굴자는 80바이트 블록 헤더에 SHA-256을 두 번 적용하고, 결과가 목푯값 이하인지 확인합니다.
- 논스 범위를 소진하면 코인베이스의 extraNonce 등 다른 허용된 입력을 바꾸어 새 헤더를 탐색할 수 있습니다.
- 찾을 때는 수많은 시도가 필요하지만, 찾은 결과의 작업증명은 해당 헤더의 이중 SHA-256 해시를 계산해 목푯값과 비교하면 확인할 수 있습니다.
목푯값과 논스는 비트코인이 책임자 없이도 같은 규칙으로 경쟁하고 결과를 확인하게 하는 두 가지 핵심 요소입니다.