본문 바로가기

N미래연구소/디지털화폐

비트코인 작업증명

비트코인 작업증명


작업 증명은 비트코인에서 위조와 중복 사용을 방지하기 위해 거래를 승인해가는 중심적인 구조다. 이는 앞에서 말한 논스값을 계산하는 것을 뜻한다. 구체적으로 작업 증명은 ‘앞 블록의 해시값+거리 데이터 +논스 값’으로 신규 블록에 사용할 해시값을 구한뒤 그 해시값의 선두에 일정 수 이상의 0이 연속적으로 나타나도록 하는 논스값을 구하는 것을 가리킨다. 해시 함수는 일방향성의 함수이므로 출력값에서 입력값을 역 으로 계산할 수 없다. 따라서 작업 증명을 하기 위해서는 논스값에 가능한 수치를 일일이 넣어가면 블록 전체의 해시값을 구해보는 방법으로 계산해야 한다. 이 연산 방법으로는 가능성 있는 조합을 닥치는 대로 시도해볼 수밖에 없기 때문에 매우 막대한 계산량이 필요해진다.
만약 악의적인 공격자가 비트코인을 위조하려고 한다면 어떻게 될까. 비트코인 위조란 비트코인의 거래 데이터를 조작하는 것이므로 그것을 바탕으로 한 해시값도 바뀌고 논스값도 다시 계산해 한다. 그리고 기존 데이터를 정당한 것으로 만들기 위해서는 다음 블록의 작업 증명도 다시 계산해야 할 뿐 아니라 다음 블록의 논스값도 다시 계산해야 하며 이런 식으로 최신 블록까지 일일이 조작해야 한다. 그러기 위해서는 막대한 작업량이 필요하면 전세계 계산자의 계산 능력을 모두 합한 것보다 높은 계산능력을 지녀야 한다. 이처럼 작업 증명은 비트코인에서 보안의 근간을 이루는 시스템이다. 비트코인의 보안시스템 자체라고 말해도 좋을 정도다. 암호 기술, 블록체인 기술, 작업 증명 등의 기술이 조합되어 비트코인의 안전한 거래가 가능하다. 이렇게 복잡한 구조가 필요해지는 이유는 비트코인이 서로 얼굴도 모르고 이름도 모르는 상호 신뢰할 수 없는 관계의 참가자끼리 사용하는 것을 전제로 하기 때문이다.
논스값이란 Number used once 약자로 단 한 번만 사용하고 버리는 숫자를 뜻한다. 사실 이 논스값 자체는 특별한 의미가 없다. 다만 논스값에 따라 다음 블록에 사용하는 ‘앞 블록의 해시값’이 바뀐다는 점이 핵심이다. 블록 전체 데이터는 ‘앞 블록의 해시값+거리 데이터+논스 값’으로 구성된다. 이중에서 ‘앞 블록의 해시값+거리 데이터’는 이미 정해져 있어서 다음 블록에 사용하는 해시값을 조정하기 위해 바꿀 수 있는 것은 논스 값 밖에 없다. 비트코인에는 다음의 신규 블록을 추가하려면 그 블록의 해시값이 일정한 조건을 충족해야 한다는 규칙이 있다. 일정한 조건이라 구체적으로 해시값이 선두에 일정 수 이상의 0이 이어지는 것을 의미한다. 이 때문에 신규 블록을 추가하기 위해서는 이 조건을 충족하는 해시값을 만들어내는 적절한 논스값을 찾아낼 필요가 있다.

'N미래연구소 > 디지털화폐' 카테고리의 다른 글

비트코인이 화폐가 될 것인가  (0) 2021.02.15
비트코인 채굴시스템  (0) 2021.02.15
비트코인 메커니즘  (0) 2021.02.14
가상 화폐 P2P 네트워크  (0) 2021.02.13
블록체인 기술  (0) 2021.02.13