ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 채굴 실습
    블록체인/비트코인 2024. 3. 27. 20:55

    https://andersbrownworth.com/blockchain/hash

     

    Blockchain Demo

     

    andersbrownworth.com

     

     

     

    해시값은 Data 에 대한 '지문'으로서의 역할을 하고 있다. 입력값에 대한 고유한 출력 값이다. 즉, 하나의 특별한 출력값으로서의 데이터가 Hash 인 것이다. 입력값이 동일하면 동일한 출력값으로써의 Hash 가 나온다. 여기까지가 Hash 의 개념이다.

     

     

     

    ... 

     

     

     

    Block 은 데이터를 기록하는 하나의 장부이다. 

     

     

    블록에는 여러 거래 데이터들이 쌓여있다. 그럼에도 배경이 빨간색으로 나와 있는 것은 정상적인 블록이 아니다라는 것이다. 논스 값이 틀린 것이다. 논스 값을 맞춰야만 서명된 해시값이 나온다. 

     

     

     

    논스 값은 4268 이였던 것이다. 이것을 채굴자들이 연산 작업을 하여 풀어야 한다. 논스 값을 찾아 서명된 해시값이 나오면 0이 네개로 표시되어 있다. 현재는 난이도가 높아져서 0 이 17~18자리까지 표시되어져 있다. 

     

     

    즉 논스값을 통해 서명된 해시값을 찾는 것이다. 해당 블록을 '유효한 블록' 혹은 '서명된 블록' 이라고 표현할 수 있다.

     

     

     

    ...

     

     

     

     

    1번 블록 해시는 2번 블록의 이전 블록 해시 값 (1번 블록의 해시 값) 을 가지고 있게 된다. 1번 블록 데이터가 변경되는 순간 1번 블록 해시 값이 변경될 것이고 2번 블록 이전 해시 값이 변경되어 2번 블록의 해시값 또한 바뀌게 될 것이다. 그리고 연결된 모든 체인들이 이와 같이 변경되어 모두 틀어져 유효하지 않은 블록체인으로 형성된다. 

     

     

     

    만약 3번 블록부터 데이터가 변경되었으면 3번 이후 모든 블록을 다시 채굴해야 된다.

     

     

     

    현재 비트코인 블록은 약 82만 5천여개 정도가 채굴이 되었다. 82만 5천여개의 블록들은 위와 같은 해시값으로 연결이 되어 있다. 그 블록에 저장된 데이터들 또한 첫번째 블록부터 단 한번도 바뀐 것이 없다는 방증이 되는 것이다. 

     

     

     

    ...

     

     

     

    분산된 장부

     

     

    나 뿐만 아니라 B, C 채굴자가 있다고 가정해보자. 

     

     

     

    위는 분산 장부이다. 세 채굴자 모두 5번 블록의 해시 값이 0000e4b 로 시작하는 것을 알 수 있다. 

     

     

    나의 노드에서 5번 블록에 데이터를 변경하고 마이닝을 해보면 해시 값이 다른 것으로 변한다.

     

     

    반면 B, C 채굴자의 해시값은 여전히 0000e4b 로 시작하는 것을 알 수있다. 여기서 무엇이 유효한 블록인지 알 수 없게 된다. 이 때는 다수가 공유하는 장부가 유효한 것으로 간주 된다. 

     

     

    여러 컴퓨터들에 복사된 장부들이 현재 어떻게 동기화 되는지를 다 알 수가 있게 되는데 다수 이상이 공유하고 있는 장부가 유효한 것으로 간주된다. 이것이 51% 룰이다. 

     

     

    거래 내역 모두 다 검증하는 것이 아니라 맨 마지막 나온 해시값 즉, 마지막 블록의 해시 값을 통해 과거의 것까지도 동일한 데이터들이 다 들어가 있구나 하고 알 수 있게 되는 것이다. 

     

     

     

     

    채굴은 논스 값을 찾고 유효한 해시 값을 구한 다음 그것을 블록체인으로 연결하는 과정인 것이다. 

     

     

     

     

    coinbase

    - 모든 블록의 가장 첫 번째 거래로서 블록 보상이 coinbase 라는 이름으로 주어진다. 이게 바로 현재 6.25개의 비트코인이 가는 채굴자한테 가는 보상인 것이다. 이것이 채굴자들이 받는 보상이라는 것을 알 수 있게된다. 

     

     

     

     

    정리

     

    1) 각 블록은 입력에 대한 고유한 Hash 값을 출력하고 있다.

     

    2) '서명된' Hash 값을 찾아야 하는데, 이는 Nonce 값을 무작위로 돌려야지만 알 수 있다. 이것이 채굴의 개념이다. 

     

    3) 서명된 해시값의 특징은 0000 으로 시작한다는 것이다. 0이 많을수록 채굴 난이도가 높다는 것이다. 현재는 0의 값이 17자리 정도 된다.

     

    4) 각 블록은 이전 블록 해시값을 입력 데이터로 가지고 있다. 이전 블록 내에 해시값이 변하게 되면 이 후 모든 블록 해시값이 영향을 받는다.

     

    5) 현재 약 82만개의 블록이 있는데 이것이 잘 유지되고 있다는 것은 첫번째 블록부터 위조된 것이 하나도 없음을 의미하는 것이다. 

     

    6) 여러 노드들은 서로 장부를 동기화하고 있다. 특정 노드가 가지고 있는 블록의 해시값이 다를 경우엔 다수 이상이 공유하고 있는 장부를 유효한 장부로 간주한다. (51% 룰)

     

    7) 이때 모든 블록을 다 검증하는 것이 아닌 맨 마지막 블록의 해시값으로 검증한다. 마지막 블록의 해시값이 결국 모든 거래를 다 담고 있기 때문이다. 

     

    8) 채굴은 블록 내에 논스 값을 찾아 유효한 해시 값을 구해내고 이를 체인으로 연결하는 과정이다.

     

     

Designed by Tistory.