반응형

이번 챕터에서는 앞에서 나온 기술들이 블록체인에서 어떻게 유기적으로 결합돼 운영되는지 살펴보겠습니다. 위 그림은 블록체인 데이터를 전통적 거래 원장에 비유하고 있는데, 거래 원장의 특정 페이지는 블록에 비유되고, 거래원장 페이지가 모여 전체 거래 원장책이되고, 이렇게 모인 전체 거래원장책은 블록체인 데이터로 비유할 수 있습니다.

블록체인이 하는 일은 아주 단순한데, 이체 내역을 기록하는 것이 하는 일의 전부입니다. 결국 블록체인의 작동 원리를 이해한다는 것은 익명의 노드로만 구성된 네트워크에서 누가 기록할 것인 것, 어떻게 저장할 것인지의 규칙에 관한 이해라고 할 수 있습니다.

 

4.1 누가 기록할 것인가?

익명의 참여자로 구성된 블록체인의 경우 신뢰할 수 있는 서버란 존재하지 않습니다. 따라서 새로운 방법이 필요합니다.

 

4.1.1 브로드캐스팅을 통한 전달

블록체인에서는 중앙 서버가 없으므로 전체 데이터를 모든 노드에게 전달하는 브로드캐스팅 방식을 사용합니다.

비트코인 블록체인에서 생성되는 데이터는 모두 거래내역(트랜잭션)입니다. 이 거래 내역은 지갑을 통해 네트워크에 제출된 데이터인데, 지갑을 사용하면 누구든 비트코인 거래 내역서를 작성한 후 네트워크에 제출할 수 있습니다. 이렇게 제출된 거래 내역은 피어를 통해 모든 노드에게 전달됩니다. 전달된 트랜잭션은 각 노드의 대기실에 쌓인 채 처리되기만을 기다리는데 각 노드를 자세히 살펴보면, 대기실에 쌓인 트랜잭션의 구성이나 순서가 조금씩 다른 것을 알 수 있습니다. 이는 서로 다른 네트워크 전송 속도와 컴퓨터 사양을 가진 각 노드가 어떤 트랜잭션을 먼저 전달받게 될 것인지 알 수 없기 때문입니다. 따라서 절대 시각 기준으로 네트워크에 트랜잭션을 먼저 제출했다고 해서 모든 노드에 반드시 먼저 도달한다는 보장이 없음을 의미합니다. 통상 각 노드는 수수료율이 더 높은 트랜잭션을 먼저 처리하므로 모든 트랜잭션은 도착 순서와 무관하게 대개 수수료율이 높은 순서대로 임의로 뒤바뀌어 처리되며, 제출된 순서대로 처리되지 않습니다.

대기실에 쌓여 순서가 정해진 트랜잭션은 ‘블록’이라는 논리적 단위로 묶인 후 동시에 처리됩니다. 다음은 누가 기록할것인지 결정하는 절차를 알아보겠습니다.

 

 

4.1.2 리더 선출 – 누가 기록할 것인가?

블록체인에서 모든 노드가 동일한 기록을 저장할 수 있는 비결은 간단한데, 수많은 노드 가운데 어느 순간 실제로 기록할 수 있는 권리는 오직 단 하나의 노드에게만 주어지기 때문입니다. 단 하나의 노드만 기록할 수 있으므로 단 하나의 기록만이 존재하게됩니다.

이 책에서는 누가 기록을 담당할 것인지 정하는 과정을 리더 선출에 비유하고 있습니다.

비트코인에서 리더를 선출하는 방법은 바로 해시 퍼즐인데 특정 순간에 해시 퍼즐을 가장 먼저 해결한 단 하나의 노드에게만 기록할 수 있는 권리가 주어집니다. 선출된 리더는 자신의 대기역에 쌓여 있던 거래 내역을 블록에 기록하는 역할을 합니다. 블록에 거래 내역이 기록되는 순간, 거래는 완료된 준비를 마칩니다. 이 해시 퍼즐을 푸는 과정을 흔히 채굴에 비유하는데, 그만큼 해시 퍼즐을 푸는 것이 힘들다는 것을 상징적으로 비유한 것이기도 합니다.

 

4.2 어떻게 저장할 것인가?

이렇게 해서 선출된 리더는 신뢰를 알 수 없는 노드이기 때문에 리더가 작성한 기록의 무결성을 검증할 수 있는 방법이 필요합니다.

 

4.2.1 신뢰의 부재 – 모든 노드의 검증

하나의 블록만 따로 놓고 보면 리더로 선정된 노드는 중앙 서버의 역할을 수행하는 중앙화 시스템과 매우 유사하지만, 신뢰의 부재라는 큰 차이점이 존재합니다.

따라서 검증이라는 절차가 필요한데 이는 선출된 리더가 정직하게 기록했는지 확인하는 과정입니다. 그렇다면 누가 검증할 것인가하는 의문이 생기는데 비트코인과 이더리움에서 사용한 해법은 희망하는 모두가 검증에 참여하도록 했습니다.

위 그림은 각 노드가 브로드캐스팅된 블록을 전달받은 상황인데, 각 노드는 블록이 도달하는 즉시 블록의 무결성을 검증합니다. 무결성 검증은 크게 두가지인데 하나는 해시 퍼즐의 정답을 찾은 것이 맞는지 확인하는 것이고, 다른 하나는 블록에 기록된 트랜잭션이 조작되지 않고 원래 네트워크에 제출됐던 그대로인지 확인하는 것입니다. 이 두 검증 과정은 해시함수와 전자서명, 비대칭 암호화 기버을 활용해 순식간에 이뤄집니다. 검증을 통해 블록에 이상이 없다는 것이 확인되면 이 블록은 정당한 블록으로 인정받고, 각 노드는 자신의 로컬에 저장돼 있던 기존의 블록체인 데이터에 이 블록을 추가하면서 전체 블록체인 데이터의 길이는 하나 더 자라게 됩니다.

 

 

4.3 비동기화 시스템에서의 탈중앙화 합의

블록체인은 완전한 비동기화 시스템인데 신호를 줄 수 있는 중앙 서버가 없기 때문입니다. 각 노드는 전체 네트워크에 현재 몇 개의 노드가 있는지, 어디에 있는지, 어떤 성질을 갖고 있는지 전혀 알 수 없습니다.

위 그림의 사이클을 보면 마치 전체 노드들이 공통된 시게에 동기화돼 10분을 주기로 리더 선출을 질서 정연하게 수행하고 있는 것처럼 보이지만 이는 설명의 편의를 위한 것일 뿐 실제와는 많이 다른데 블록체인 세상에서는 그림과 같은 과정이 절대 동기화돼 일어날 수 없습니다. 시계 역할을 해줄 수 있는 노드나 서버가 있을리 없기 때문입니다.

4.3.1 서로 다른 진실의 충돌

블록체인의 비동기적 특성으로 인해 항상 다음과 같은 상황이 발생할 수 있습니다.

 

위 그림은 노드 A와 F가 동시에 해시 퍼즐 해결에 성공한 후 브로드캐스팅 하고 있는 모습을 보여줍니다. 노드 A와 F는 서로의 존재를 모르므로 서로가 동시에 블록 생성에 성공했다는 사실을 알 방법이 없습니다. 이러한 사정은 다른 노드도 마찬가지여서 B와 C는 A가 블록 만들기에 성공했다는 사실만 인지할 뿐 노드 F에 대해서는 그 존재 사실도 모릅니다. 이는 노드 D와 E도 마찬가지입니다. 이런 경우 블록체인 네트워크에는 순간적으로 하나 이상의 서로 다른 진실이 존재합니다.

 

결국 위 그림과 같은 상황이 벌어지는데 동일한 네트워크 안에서 서로 다른 블록체인이 자라고 있는 모습을 보여줍니다. ABC그룹은 A가 생성한 블록인 a1을 자신의 로컬 컴퓨터에 추가한 상태이고, DEF그룹은 F가 생성한 블록인 f1을 자신의 블록체인에 추가한 상태입니다. 즉 특성 순간에 동일한 시스템에서 서로 다른 블록체인 데이터가 자라고 있는 셈입니다.

 

4.3.2 서로 다른 진실의 통일 – 탈중앙화 합의

다른 블록체인 데이터가 형성되는 근본적인 원인은 블록체인이 비동기화 네트워크이기 때문입니다. 동일한 네트워크 속에서 서로 다른 두 개의 진실이 존재하도록 내버려둘 수는 없기 때문에 단 하나의 진실로 통일될 수 있는 규칙이 필요합니다.

비트코인에서 서로 다른 두 블록체인 데이터를 하나로 통일하는 규칙은 둘 중 더 긴 블록체인은 선택하는 것입니다. 이 말은 길이가 같다면 서로 통일되지 않는다는 의미이기도 합니다. 두 노드가 서로의 블록체인 데이터가 다르다는 것을 발견하면 우선 상대방이 규칙을 지켰는지 검사한 후 이상이 없다면 서로의 길이를 비교합니다. 이때 길이가 같다면 어느 하나로 합쳐지지 않고, 각자 자신의 블록체인 데이터를 그대로 유지한 채 서로 더 긴 블록체인 데이터를 만들기 위한 경쟁을 계속합니다.

 

위 그림은 어느 순간 한쪽의 길이가 더 길어진 모습을 보여주는데 f1f2f3로 구성된 블록체인이 다른 블록체인보다 길어졌기 때문에 승패가 갈립니다. 패자가 되면 그 즉시 승자와 다른 블록체인 구성요소는 모두 폐기해야 하며, 승자가 갖고 있는 블록을 동일하게 복사 함으로, 시스템 내 모든 노드는 동일한 블록체인 데이터로 통일해 나갑니다. 이 과정을 탈중앙화 합의 규칙이라고 합니다.

 

 

 

4.3.3 거래의 안전성 – 확인

블록을 탑을 쌓듯이 논리적으로 배열하면 높이의 개념이 생깁니다. 제네시스 블록 바로 다음에 생긴 블록의 높이는 1, 그다음은 2, 이런식으로 높이는 계속 증가합니다. 한편 깊이는 블록의 높이와 반대개념인데, 블록의 높이는 절대적인 개념이므로 바뀌지 않지만, 블록의 깊이는 계속 변동되는 상대적인 개념으로, 가장 최근에 만들어진 블록의 깊이가 1이 됩니다.

 

4.4 이중사용

이중사용이란 하나의 비트코인을 여러 번 사용하려는 악의적인 시도입니다. 이중사용이 발생 가능한 이유는 중앙 서버가 없는 비동기식 네트워크이기 때문에 발생하는 문제입니다.

예를 들어 A라는 사람과 D라는 사람이 직거래를 위해 직접 만난 상황을 고려해보면 D는 자신이 갖고 있던 노트북을 판매할 생각이고, A는 40만원에 노트북을 구매하기 위해 서로 만난 상황입니다. 물건을 확인한 후 A는 D에게 물건 값 40만원을 비트코인으로 지급하기로 하고, 시세를 환산해 0.01 BTC를 송금하는 모습을 보여줍니다. A가 송금 신청을 완료하자 D는 안심하고 A와 헤어져 돌아갔습니다. 이 과정에서 A는 송금 신청을 완료했을 뿐, 송금이 완료된 것은 아닙니다. 10분이 경과하지 않았다면 아직 블록이 만들어지지도 않았을 것이기 때문입니다.

 

위 사진은 A가 이중사용을 시도하는 모습을 보여주는데 D와 헤어진 A는 곧 바로 또 하나의 트랜잭션을 작성해 시스템에 제출합니다. 바로 자신이 조금 전 D에게 지급했던 것과 동일한 비트코인을 스스로에게 지급한다는 요청서입니다. 이 경우 정상적인 요청인 1이 먼저 처리될지 2가 먼저 처리될지는 알 수 없습니다. 발생 가능한 상황을 알아보면,

첫번째로 가장 가능성이 높은경우인 1,2가 모두 폐기돼 처리되지 않는 경우입니다. 두번째 경우는 1이나 2 둘중 하나가 정상적인 트랜잭션으로 선택돼 기록되는 경우입니다. 이 경우에는 1이 먼저 등록되면 2는 폐기되고, 2가 먼저 등록되면 1은 폐기됩니다. 만일 트랜잭션이 둘다 폐기되거나 2가 먼저 처리되는 경우가 발생한다면, D에게 물건값을 지불하지 않게됩니다.

 

4.5 채굴의 독점

최초의 비트코인은 가정용 컴퓨터의 CPU를 이용해서도 채굴할 수 있었으나 채굴 난이도가 점차 높아지면서 CPU를 통한 채굴은 사용 전력에 비해 아주 비효율적인 방법이 됐고 좀 더 강력한 하드웨어를 통한 전문 채굴업자들이 등장하면서 CPU보다 훨씬 효율적인 GPU를 사용하기 시작했습니다. 현재는 CPU를 통한 채굴이 아예 불가능합니다. 현재의 비트코인 해시 퍼즐은 채굴에 투입한 에너지에 정비례해 성공 확률이 올라가도록 설계돼 있으며, 이기면 모든 것을 얻지만 지면 모든 것을 잃는 승자 독식 형태의 작업증면 방식을 사용하고 있습니다. 따라서 비트코인의 이러한 설계 방식은 업체끼리의 끝없는 설비 투자 경쟁에 따른 치킨 게임 과정을 통해 형성하도록 부추기고 있습니다.

 

위 그림을 보시면 2017년 12월에 상위 10개 업체의 블록 채굴 점유율이 90.5%까지 독점율이 치솟은걸 볼 수 있습니다. 한편 빨간색 막대로 표시한 상위 3대 업체의 점유율을 보면 2017년 마지막달에는 무려 52%대로 올라와 절반을 넘어선걸 알 수 있습니다. 전체 블록의 과반을 단 세개 업체가 독점하고 있는 것입니다. 상위 3대 업체는 모두 중국 업체이며 10대 채굴업체에 속한 나머지 기업들도 대부분 중국 업체가 직접 운영하거나 간접적으로 참여하고 있습니다. 사실상 중국이 전 세계 비트코인 채굴을 완전히 장학하고 있다고 볼 수 있습니다.

 

 

 

 

 

 

 

4.6 51% 공격

비트코인 시스템은 리더로 선출된 노드에 의해 지배되므로 리더는 편중됨 없이 최대한 랜덤하고 다양하게 선출돼야 생태계의 안정성을 극대화할 수 있습니다. 그러나 만약 어느 한 집단에서 지속적으로 리더가 선출되는 상황이 발생하면, 시스템의 무결성과 안전성은 심각한 타격을 입을 수 있습니다. 한 집단이 월등한 하드웨어를 모두 합쳐 세력화한 후 블록 만들기 시합에서 높은 확률로 항상 이길 수 있는 해시 파워를 가진 상황을 가정해보면 리더는 이 집단에서 지속적으로 선출될 것이고, 이를 통해 시스템의 대다수 블록은 이 세력이 생산합니다. 이들은 블록 생산력을 악용해 자신들이 원하는 대로 트랜잭션을 임의로 구성함으로써 시스템을 공격할 수 있는데, 이러한 극단적인 상황을 상징적으로 51%공격 이라고 합니다.

하지만 이 51%공격이 일어날 가능성을 그리 높지 않은데 그 이유로

51%의 장악력을 유지하려면 현존하는 가장 성능이 뛰어난 채굴기 안트마이어를 90만개 사서 돌려야하는데 현재 한 개의 가격이 500만원이 넘으니 90만개를 사려면 4조 5천억이 필요합니다. 만일 4조 5천억을 투자해 51%장악했다 하더라도 그 장악력을 유지하려 계속 채굴기를 추가로 구매하여 돌려야하기 때문에 투자금을 회수할때까지 돌리기란 쉽지 않습니다. 또한 나머지 49%가 눈치를 채고 문제가 있는걸 알게되면 하드포크를 진행해 막아버리기 때문에, 51%공격은 사실상 경제적이지 못하므로 발생되지 않을것이라는걸 알수있습니다.

반응형

+ Recent posts