논스와 채굴의 관계 및 채굴 방법에 대해 알아봅니다.
18D5A1AEDCBF543BC630130BEF99CFAD55D1B7413EF05B9AF927432FDE808C68
위는 SHA256해시 값입니다. 총 64자의 16진수 숫자로 이루어져 있어 256비트가 됩니다.
11232962686236154915841062771303455665105266333445130312258268457057784990824
해시는 위와 같이 10진수로 바꿔서 표현할 수도 있습니다. 16진수에서는 16개의 숫자를 사용하기 때문에 더 높은 값으로 인코딩할 수 있습니다.
해시는 숫자이기 때문에 연속적인 순서를 알 수 있고 직접 나타낼 수 있습니다. 해시풀을 그려 아래에는 최솟값을 위에는 취댓값을 놓고 해시값으로 가능한 모든 값을 써 볼 것입니다.
즉, 가장 작은 값인 0000부터 최댓값인 자릿수가 FFFF인 수까지 나타낼 수 있습니다.
해시풀에서 각각의 해시를 표현하면 다음과 같습니다.
위를 이용해 채굴이 무엇인지에 대해 알아볼 수 있는 좋은 설정입니다.
채굴 방법은 기본적으로 블록체인 시스템이나 알고리즘이 대상을 설정하는 것입니다. 즉, 채굴자들이 특정한 해시를 달성하도록 설정한 대상이 있는 것입니다.
그림 처럼 대상보다 값이 큰 해시는 고려 대상이 아닙니다. 블록에 대해 찾은 해시가 대상보다 더 클 때에는 해당 블록체인에 대해 충분하지 않다고 보는 것입니다.
즉, 블록체인에 포함될 수 있으려면 해시값이 대상보다 작아야 합니다.
또한 채굴은 자발적인 작업입니다. 경재적이거나 논리적 혹은 계산적, 수학적 이유가 있는 것이 아니라 단지 채굴자들이 해결해야 할 도전 과제를 생성하기 위해 수행하는 작업일 뿐입니다.
해당하는 해시값 이내일 때 해시를 발견하게 된다면 해당 인원은 채굴자가 되는 것입니다.
예를 들어 아래와 같dl 논스 값과 데이터, 이전 해시가 들어있는 블록이 있다고 했을 때 대부분의 필드를 수정할 수 없습니다.
Block : #e
Nonce: 23
Data:
...
Prev.Hash : ~
Hash: ~
즉, 이 블록 전체에 대해 바꿀 수 있는 값은 논스 하나뿐입니다. 그리고 이 논스만으로 현재 블록의 해시를 변화시킬 수 있습니다.
따라서 계속해서 다른 값의 논스를 변경해서 target에 포함될 수 있는 해시값을 찾는 것입니다.
이런 target 아래에 포함할 수 있는 해시를 생성할 수 있는 논스를 채굴자들 사이에서는 흔히 골든 논스라고 부릅니다.
대상에 대한 해시를 생성하여 찾았다면 이제 블록체인에 블록을 추가할 수 있게 되고 보상을 받을 것입니다. 하지만 중요한 것은 해시가 대상 아래에 있을 때만 이 시점에서 블록체인이 해당 블록을 수용한다는 것입니다.