November 24, 2022
비트코인의 혁명은 서로를 모르는 다양한 주체들이 비트코인 블록체인의 상태에 대한 합의를 이룰 수 있다는 것입니다. 이는 경제적 인센티브와 기본적인 크립토그래픽 도구들을 활용함으로써 달성됩니다.
경제적 인센티브는 채굴자들이 네트워크를 지지하는 데 사용됩니다. 채굴자들은 그들의 하드웨어와 전기를 자발적으로 사용할 용의를 갖게 됩니다. 왜냐하면 그들이 새로운 블록을 생성해내면 그들은 비트코인으로 보상을 받기 때문입니다.
경제적 비용 혹은 패널티는 비트코인의 보안 모델로 기능합니다. 비트코인의 블록체인을 공격하는 가장 확실한 방법은 네트워크가 갖는 해싱 파워(hasing power)의 절반 이상을 통제하는 것입니다. 그래야 공격자가 거래를 검열하고, 블록체인의 과거 상태를 조작할 수 있기 때문입니다.
그러나 해싱 파워에 대한 통제를 갖는 것은 하드웨어와 전기 상의 비용을 수반합니다. 비트코인의 프로토콜(protocol)은 의도적으로 채굴을 어렵게 만들고, 이는 네트워크의 과반수에 대한 통제권을 얻는 것은 극도로 비싸고 어려워진다는 것을 의미합니다.
이처럼 신중하게 설계된 경제적 인센티브인 보상과 패널티가 없다면, 비트코인은 작동하지 않을 것입니다. 만약 채굴이 큰 비용을 수반하지 않는다면, 51%의 공격을 세팅하는 것이 용이해집니다. 만약 채굴 리워드가 존재하지 않는다면, 네트워크에 기여하기 위해 하드웨어를 구매하고 전기에 대한 비용을 지불하는 사람들도 없을 것입니다.
흔히 비트코인 채굴은 새로운 비트코인을 보급하는 역할로 많이 알고 있습니다. 이전에는 pc방, 혹은 전기세가 싼 일반 가정에서 컴퓨터를 계속 돌려 채굴을 하고 이를 통해 돈을 버는 것을 심심찮게 볼 수 있었죠. 그러나 이외에도 비트코인 채굴이 갖는 더 중요한 의미가 있습니다. 바로 ‘블록체인을 사기꾼으로부터 철저하게 보안을 유지하는 역할’입니다.
비트코인은 기본적으로 모든 거래 기록을 공유하고 있고, 모두가 다 다른 거래 장부를 갖고 있다면 어느 것이 진짜인지 알기 힘들어집니다. 이때, 해커가 자신의 거래 장부를 속일 가능성도 있습니다.만약 블록을 쉽게 찾을 수 있다면 누구든 장부의 조작이 가능해지기 때문에, 해를 찾기가 어렵게 만들어 블록을 쉽게 공식화하지 못함으로써 해킹을 방지하는 것입니다. 만약 마음을 먹고 해킹을 하려 하더라도, 해커는 선의의 채굴 노드들이 가진 CPU 파워보다 훨씬 큰 파워를 가져야 한다는 데에서 어려움이 존재합니다.따라서 선의의 채굴 노드들에게 ‘비트코인'으로 보상하는 방식을 통해 그들에게 블록을 찾는 것에 대한 인센티브를 줍니다. 이를 통해 채굴노드의 CPU 파워를 크게 유지하면서 거래 기록의 보안을 계속 유지할 수 있게 됩니다.
새로운 블록이 생겼을 때는 규칙에 따라 채굴 노드들이 처리를 하게 됩니다.그러면, 가장 먼저 처리를 끝낸 채굴 노드가 ‘원본에 대한 증거'를 이웃한 채굴 노드에게 알리고 주변 채굴자들은 이를 확인하고 받아들이는 과정을 거칩니다. 이렇게 받아들여진 블록은 블록체인에서 새로운 블록으로 추가되면서 거래 장부가 공식화되는 과정을 만들어냅니다.
비트코인은 어떤 방식으로 채굴이 이루어지는 것일까요?비트코인 채굴은 구체적으로 블록의 요약본인 해시(hash)의 값이 주어진 숫자보다 작거나 같게 만드는 임의의 숫자인 논스(nonce)를 찾는 것입니다. 조건을 만족하는 논스를 찾는 것은 쉽게 찾을 수 없고 모든 경우의 수를 대입하는 복잡한 방식으로 이뤄집니다.따라서 조건을 만족하는 X를 찾는 힘든 과정을 거쳐 X를 찾고 다른 채굴자들 또한 이를 옳은 것으로 받아들인다면 블록을 찾았다고 합니다.
비트코인 시스템이 꾸준히 작동하기 위해서는 CPU파워가 필요하고, 중앙 기관이 부재하기 때문에 개개인이 자발적으로 참여를 해야 합니다. 따라서 이러한 논스를 구하고, 블록을 공식화하는 데 기여하는 채굴 노드들에게 새로운 비트코인을 주는 인센티브를 제공합니다. 따라서 작업증명을 통해 해를 구한 채굴자가 새로운 비트코인을 얻기 때문에 ‘채굴'이라는 용어가 되었습니다.
출처: 윤지영 교수, 오가닉 미디어랩, https://organicmedialab.com/2018/02/04/coin-or-network/