본문 바로가기

경제_제태크

작업증명(POW)이 뭔가요

안녕하세요 날씨가 많이 추워졌습니다, 환절기 감기 조심하시기 바랍니다.

 

오늘은 작업증명대해서 알아보기로 할게요.

블록체인을 공부하는데 가장 기본이 되는 개념이라 코인을 공부하시려면 필수적으로 알아야 하는 개념입니다.

 

먼저 합의 알고리즘에 대해서 잠시 간략하게 알아봐야 하는데, 합의 알고리즘은 작업 증명과 지분 증명을 총칭하는 말이라 할 수 있습니다.

다시 말해서 합의 알고리즘 안에 지분 증명과 작업 증명 2가지의 증명방법이 있는 것이죠,

 

합의 알고리즘은 중앙의 기관에서 어떠한 결정을 내리고 그 중앙에 연결되어 있는 주변의 개체들에 명령을 내려 어떤 결괏값을 넣어주는 것이 아니라 , 어떠한 결과 값은 중앙이 없는 상태에서 주변의 것들이 각각 주체가 되어  그 주변의 모두가 만족하는 합의가 나왔을 때 결과 값을 확정할 수 있는 것이 합의 알고리즘입니다.

이것이 바로 탈중앙화 알고리즘이죠

 

 

▶ 작업 증명

 

위 그림에서 보시면 2개의 블록이 있습니다.

좌측 블록은 밑에 어떤 숫자 값이 정해져 있는데 저가 봐로 32진수로 표현되는 해쉬 값이라고 합니다.

해쉬 값이라는 것은 그 불록의 주소라고 보시면 이해가 편하실 겁니다

우측 블록은 아직 해쉬값이 정해 지질 않았습니다, 바로 저 해쉬값을 얻어내어 그 블록에 주소를 할당하는 것을 바로 작업 증명이라 합니다.

블록체인에서 새로 생성된 블록에 거래내역이 입력된 후 해쉬 함수를 통해 해쉬값이 구해지면 그때서야 완성된 블록으로서 구실을 하게 되면서  좌측 블록과 체인으로 연결이 되어  블록체인이 되는 것이죠.

 

위 그림에서 보시면 우측 블록에 해쉬값이 구해지면서 좌측 블록과 체인으로 연결되면서 블록 하나가 더 추가된 블록체인이 되는 것입니다.

 

저렇게 새로 생성된 블록에 거래내역이 입력된 후 해쉬 함수를 이용해 해쉬값을 블록에 할당하는 작업이 바로 작업 증명이죠.

 

그럼 작업 증명이 어떤 식으로 이루어지는지 좀 더 구체적으로 알아보겠습니다.

 

작업 증명을 상세하 알기 위해서는 우선 블록의 구조가 어떻게 되어있는지 블록의 구조에 대해서 알아야 하는데 블록의 구조에 대해서 간략히 알아봅니다.

 

           블록해더      소프트웨어 버전    바로 앞 블록의 해쉬값       머클트리 해쉬                          
      블록 생성 시간           채굴 난이도          Nonce
          거래 리스트                               철수가 영희에서 20btc
                              숙자가 광수에게 0.5btc
                                            .
                                            .        
                                            .    
                             창수가 영희에게 12btc                                  

블록은 위의 그림처럼 블록 해더와 거래 리스트로 구성이 되어 있는데, 위 그림중 블록해더 부분의 "머클 트리 해쉬"에는 밑에 거래 리스트의 각 거래는 하나의 상수값으로 전환이 되어져서 임의로 정해져 놓은 게산식에 의해 게산이 되어져  머클트리 해쉬에 자동으로 상수값이 입력됩니다.

다시 말해 각 거래 리스트는 하나의 상수값으로 치환되어 "머클 트리 해쉬"라는 해더의 변수에 자동으로 입력되는 것이죠

위 그림에서 보시면 블록 해더에는 소프트웨어 버전, 바로 앞 블록의 해쉬값, 머클 트리 해쉬, 블록 생성시간, 채굴 난이도,

Nonce 이렇게 6개의 해더가 있는데 이 6개의 해더는 모두 변수이고 이변수에는 Nonce만 빼놓고 나머지는 특정한 상수값이 자동으로 게산 되어서 입력이 됩니다.

 

                                " SHA256 "

 

이게 그 유명한 비트코인 블록의 해쉬 함수는 구하는  " SHA256 " 함수입니다

 " SHA256 " 함수 안에는 소프트웨어 버전, 바로 앞 블록의 해쉬값, 머클 트리 해쉬, 블록 생성시간, 채굴 난이도,

Nonce라는 해쉬 함숫값을 구한다는 것은 결국   SHA256 = 특정값 이러한 형식인데, 여기서 특정값도 블록체인 코딩에 의해서 자동으로 주어지게 되고 결국 SHA256 함수 내에 있는 Nonce변수에 채굴자가 0부터 시작해서 무한으로 숫자를 1씩 증가시키면서 상수값을 입력해 우측의 특정값보다 작은 값이 나올 때 그때의 SHA256 함숫값이 해쉬값이 되며 새로운 블록에 해쉬값이 할당되고 작업 증명이 끝나게 되는 겁니다.

 

구체적으로 작업 증명이란 것은 SHA256 해쉬 함수 내부에 있는 Nonce값에 상수값을 1씩 증가시키면서 대입하는 막일 작업입니다

해쉬값이 구해지면 그 보상으로 비트코인을 받게 되는 거고요.

 

위에 보시는 저 장비들이 ASIC이라는 장비들인데 비트코인 채굴에 쓰이는 장비입니다.

복잡한 일을 한다기보다는 SHA256 함수 안에 있는 Nonce변수에 엄청나게 빠른 속도로 상수값을 입력하는 단순 막일 장치입니다.

요즘 채굴자들은 다 저런 장비를 사용하고 있고요 전력 소비량이 엄청나서 여러 사회문제를 야기시켰죠 ㅋㅋㅋ

 

이상으로 작업 증명에 대해서 알아보았음니다, 저도 사실 기술적인 부분은 프로그래머가 아닌지라 자세히는 모르지만 그나마 제가 알고 있는 기술적 부분으로 좀더 작업증명에 대해 쉽게 이해할 수 있게끔 나름 노력했는데 좀 허접하다는 생각도 드네요

 

이해를 돕기 위해서 너무 간략화하고 도식화하느라 실제 이론과 좀 어긋난 부분도 있을 수 있으니 틀린 부분을 댓글로 직적질좀 해주세요

 

읽어 주셔서 감사합니다