[Blockchan A-Z] 비트(Bits)에서 대상(Target)으로의 변환

bolee·2022년 8월 26일
0

Blockchan A-Z

목록 보기
19/33

MODULE 2 (A) - CRYPTOCURRENCY INTUITION
13. EXTARA: BITS TO TAGET CONVERSION

채굴 시 사용하는 대상은 많은 선행 제로와 제대로 된 숫자가 아닌 상태로 되어 있으며, 6 또는 4자리만 있다.

이에 대해 알아볼 것이다.

대상(Target)을 저장하는 곳

먼저 현재 대상(Current Target)은 어디에 저장될까?

위 블록의 예시를 살펴보면 Bits라고 부르는 필드를 확인할 수 있다.
이것이 블록에 저장된 정보의 일부이며, 대상(Target)이라는 필드는 없다.
하지만 Bits 필드가 있다.

Bits field

Bits 필드는 현재 대상에 대한 정보를 가지고 있는 필드로 위에 나타난 예시는 다음과 같다.

Bits: 386526600

이제 이 코드를 읽는 방법과 코드에서 대상를 얻는 방법을 알아볼 것이다.

  1. Bits 값을 16진수로 변환
    • 첫 번째 단계는 Bits의 값을 16진수로 바꿔야 한다.
      Bits in Hex: 1709ed88
    • 변환된 16진수에서 앞에 2자리 17은 대상의 자리수를 의미하고, 그 이후 값은 바로 컴포넌트이다.
  2. 대상의 자리 수 구하기
    • 변환된 16진수에서 앞에 2자리는 대상의 자리수를 의미하는데, 10진수로 변환해야 한다.
    0x17 = 16 + 7 = 23
    • 변환된 10진수 23은 대상이 차지하는 바이트(byte) 수를 의미한다. 즉, 23 바이트(byte)를 차지하고, 184 비트(bit)를 차지한다는 것이다.
    • 대상은 16진수로 16진수 하나당 4 비트(bit)를 차지하기 때문에, 결과적으로 대상은 46개의 자리수를 가진다는 것이다.
    0000000000000000000000000000000000000000000000
  3. 컴포넌트 채우기
    • 대상의 자리수를 알았으니 자리 수의 맨 앞부분에 컴포넌트(여기에서는 09ed88)을 채워넣는다.
    09ed880000000000000000000000000000000000000000
  4. 선행 제로를 추가
    • SHA256은 총 64자리인데 우리가 가지고 있는 대상은 46자리이다. 즉, 나머지 부분은 선행제로의 개수로 여기에서는 64-46로 18자리의 선행제로를 가진다.
    00000000000000000009ed880000000000000000000000000000000000000000

이렇게 현재 대상을 얻을 수 있다.

0개의 댓글