블록체인과 비트코인, 정말로 불변한 존재들인가?
이 기사를 통해 블록체인에 정의에 대해 자세히 알아보고, 블록체인이란 개념이 비트코인에 어떻게 적용되는지, 그리고 블록체인과 비트코인의 불변성에 대해 알아보고자 한다. 공유하기
블록체하면 불변성 이론이 빠질 수 없는데, 이에 대해서는 의견이 분분하다. 블록체인과 비트코인에 관심이 있는 사람이라면 늘 다음 의문을 가슴에 품고 있을 것이다. ‘블록체인과 비트코인은 불변 한가?’ 답은 ‘아니다’이다. 블록체인과 비트코인을 바뀔 수가 없다. 하지만 여기서 당신이 알아야 할 것은 ‘아니다’라는 답보다는, 답 뒤에 숨은 이유이다.
우선, 블록체인에 대한 기본적인 이해가 필요하다. 그렇다고 블록체인에 적용되는 핵심 기술에 대해서 논하지는 않을 것이다. 이 자체만 이야기해도 날을 샐지 모르기 때문이다. 그렇다면 과연 블록체인이란 무엇일까? 많은 사람들이 블록체인과 비트코인을 동의어로 사용하지만, 사실 이 둘은 서로 다른 것이다. 블록체인이 하나의 개념이라고 본다면, 비트코인은 이 개념을 구현한 것이다. 비트코인 외에 블록체인이라는 개념을 적용한 다른 구현이 가능하기 때문에, 이 둘을 같은 것으로 간주하기는 힘들다. 사실, 블록체인 개념을 응용하여 발전해온 분야인 스마트 계약서, 은행 간 결제 등은 어떤 면에서는 비트코인보다 흥미롭다 볼 수 있다.
본질적으로, 블록체인은 공개된 전자거래장부이다. 중앙 통제 장치가 있는 다른 금융 시스템과 달리, 블록체인은 이러한 중앙 세력이 없는 네트워크를 제공한다. 블록체인 시스템 내에서는 그 어떤 누구도 전체를 통제하거나 관리할 수 없기 때문에 관련자들이 알아서 이 네트워크를 구축하고 신뢰 관계를 쌓아간다. 이 비중앙집권화(非中央執權化) 특징이 블록체인을 그토록 매력적이고, 강력한 기술로 만드는 것이다.
비트코인은 블록체인에 기반을 둔, 누구에게도 규제되지 않는 가상통화(crypto-currency)이다. 거래는 즉각적으로 이루어지며 거래에는 아주 소액의 수수료가 드는데, 이러한 특징들이 비트코인의 전 세계적인 인기의 이유일 것이다. 하지만 비트코인은 금이나 현금처럼 본질적인 가치를 지닌 통화는 아니다. 비트코인의 가치는 얼마나 많은 사람이 이에 대해 지불할 의사가 있느냐와 사람들이 이 시스템에 보이는 신뢰와 직접적인 관련이 있다. 그래서 블록체인에 대한 좋고 나쁜 뉴스가 나올 때마다 비트코인의 가격이 오르락내리락하는 것이다. (비트코인에 대한 보다 자세한 설명은 여기서 확인하자)
그렇다면, 불변성은 무엇이며, 우리는 왜 이 특성을 주목해서 봐야 하는 것일까? 일반적으로 불변성이란 변하지 않는 성질을 의미한다. 프로그래밍 종사자들은 불변적인 개체가 얼마나 중요한지 이미 알고 있다. 블록체인에 있어 불변성이란 변하지 않는 성질이란 엇비슷한 의미를 가지지만, 이 특성이 가지는 중요성은 훨씬 더 크다. 왜 그토록 중요시하는지 알아보기 위해 먼저 비트코인을 예로 불변성의 구체적 의미를 살펴보도록 하자.
세계 여기저기서 발생하고 있는 비트코인 거래는 인터넷에 떠돌아다니는 다양한 정보들의 복사본을 두고 네트워크를 통해 분산 방식으로 저장된다. 말 그대로 서로에 블록처럼 연결(Block of Chain)되어 있는 것이다. 만약 이 블록들이 변할 수 있다면 즉, 불변적인 개체가 아니라면 해커들은 거래 내용을 바꾸고 기록을 변경해 엄청난 돈을 벌 수 있을 것이다. 이것이 바로 블록들이 지닌 불변성이 중요시 여겨지는 이유이다. 이에 대해 보다 구체적으로 살펴볼까?
새로운 거래를 시작하기 위해서 당신은 거래 정보를 담은 메시지를 띄워야 한다. 예를 들어, 당신이 “제임스에게 9비트코인 지불”이라는 메시지를 띄웠다고 하자. 하지만 이 메시지를 띄운 사람이 당신이라는 것을 어떻게 확신할 수 있을까? 당신이 메시지를 보냈다는 것을 확인하기 위해 당신의 비트코인 소프트웨어/지갑은 당신 또는 당신의 시스템만이 알고 있는 개인키로부터 디지털 서명을 생성할 것이다. 그리고 이 디지털 서명은 거래마다 달라진다. 다른 사람들은 당신이 사용한 개인키에 부합하는 공개키를 사용해 전송받은 메시지를 해독한다. 이 절차는 아래 표를 통해 보다 쉽게 이해할 수 있다
하지만 컴퓨터와 인터넷 네트워크를 통해 성사되는 비트코인 거래를 완전히 신뢰하기는 사실 어려운 일이다. 그렇다면 우리는 어떻게 이 메시지들이 타인에 의해 조작되지 않을 것이라 확신할 수 있을까? 이는 디지털 서명이 작동하는 방식을 통해 해결할 수 있다. 만약 전송된 메시지가 변경되면, 디지털 서명은 전체 서명을 무효화하기 때문에 모든 거래 참여자가 조작이 일어났음을 알게 된다. 다음으로, 당신의 거래는 미확인 거래 풀로 이동된다. 해당 비트코인 네트워크 참여자들은 미확인 거래 풀에서 마음에 드는 몇몇 거래를 선택하고 이를 기존 풀에 추가하려 할 것이다. 하지만 블록 추가를 위해서는 수학 문제(이 수학 문제의 정확한 명칭은 SHA256 Hash이다)를 풀어야만 한다. 이 수학 문제를 푸는 데는 시간이 걸리는데, 이는 비트코인 구조에서 있어 매우 중요한 기능이다. 이제 다양한 사람들은 이 수학 문제를 풀려고 할 것이다. 제일 먼저 문제를 푸는 사람은 해당 블록을 추가할 수 있으며, 그 보상으로 특정 비율의 비트코인을 얻게 된다. 아래는 이 과정을 일목요연하게 설명한 표이다. 이 표를 통해 뒤에 일어난 거래는 그전의 거래와 연결되면서 블록을 형성하는 것을 확인할 수 있다.
비트코인 구조의 특징상, 서로 상충하는 정보를 가진 블록체인들이 나타날 수 있다. 이때 어떤 블록체인을 선택해야 할까? 규칙은 이렇다. 항상 ‘가장 긴’ 체인을 가진 블록을 선택해야 하며, 이보다 짧은 나머지 체인들은 미확인 거래 풀로 돌려보낸다. 이것이 바로 거래 이후에는 어느 정도의 냉각 기간이 있고, 초기에는 일반적으로 위험성이 높은 이유이다. 일부 지갑은 해당 거래를 빨간색으로 표시하여 위험성을 나타내기도 한다.
여기서 우리는 다시 한 번 질문을 던진다. 블록체인은 정말로 불변하는가? 정말로 해커들이 블록을 자신들 마음대로 변경할 수 없는가? 이에 대한 답은 블록은 100% 불변성을 띠는 것은 아니지만, 앞서 소개했던 수학 문제들로 인해 블록을 변경하기란 거의 불가능하며, 이로써 거의 완벽한 불변성을 가지게 된다는 것이다. 해커들이 블록을 변경하기 위해선 이미 존재하는 블록보다 긴 체인의 블록을 생성해야 한다. 하지만 이 과정에 드는 시간과 분산 방식 등을 고려해볼 때 이는 해커들에게 거의 실행 불가능한 일이라 말할 수 있다.
그렇다면 이미 결제된 블록은 어떠한가? 이들을 변경하기는 쉽지 않을까? 이론적으로는 그렇다. 하지만 노드들이 이미 여기저기에 흩어져 있기 때문에, 해커들은 해당 네트워크에 속한 상당한 수의 컴퓨터를 좌지우지할 수 있어야 한다. 확률상으로 공격자들은 해당 네트워크에 속한 51%의 컴퓨터를 완전히 장악해야 한다는 것인데, 이가 가능하다면 차라리 비트코인을 직접 채굴하는 것이 시스템 자체를 변경하는 것보다 낫다.
결론을 말하자면, 블록체인은 속해있는 참여자의 숫자가 상당하다면 거의 불변한 존재라 말할 수 있다. 하지만 이 불변성에 대해서는 늘 의심하는 이들이 있기 때문에, 블록체인의 불변성을 뒷받침하는 근거를 정확히 이해하는 것이 무엇보다 중요하다.
이 글을 개선할 수 있는 방법에 대해 의견을 남겨 주세요. 여러분의 피드백이 중요합니다!