쉽게 설명하는 블록체인, 블록체인의 허점 [51% 공격이란?]
블록체인은 민주적인 탈중앙화된 합의방식 네트워크를 이용한다. 하나의 기관이 아닌 여러 참가자가 과반수의 동의를 얻으면 그 기록은 블록에 포함된다. 과반수가 합의를 하는 기록 작성 방식일지라도 과연 블록체인의 허점은 과연 무엇일까?
지난 포스팅에 51%이상의 연산능력을 가진 노드가 합의하는 방식으로 네트워크가 나아간다고 했는데, 다시말해 기록된 내용이 참인지 거짓인지는 과반수의 해시파워를 가진 채굴노드가 결정한다고 해도 과언이 아니라는 이야기가 된다. (채굴 노드란 노드중에서 실제로 블록 해시연산에 참여하며 보상을 받는 특별한 노드들이다.)
비트코인이, 암호화 화폐가 지금에서야 블록체인과 함께 나올 수밖에 없었던 이유는 이중지불(double spending)문제를 해결했다고 하기 때문인데,
이중지불이란 1비트코인을 가지고 있는 A가 B와 C에게 1코인씩 동시에 전송할때 A에서는 1코인이 소비되나 B와 C에게 동시에 지불한 거래가 발생할때 생기는 문제이다. 가지고 있는 1비트코인을 B에게 전송하면 블록에 그 거래가 포함된다. 그와 동시에 C에게도 보낸다면 가지고 있지 않은 1 비트코인을 전송하게 되는 것인데 그래서 새로운 거래가 포함된, B와의 거래를 대체하는 블록체인 분기점을 생성한다.
C와의 거래를 포함하는 블록은 B와의 거래를 포함하는 블록과는 전혀 다른 내용이므로 서로 다른 작업증명을 거쳐야 한다. 여기서 과반수의 연산력을 가진 체인이 결국 살아남고 둘중하나는 없던 거래가 되는 것이기 때문에 여기서 과반수는 옳은 방향으로 장부작성 합의를 해줄 것이라 생각하기 때문에 이중지불 문제를 해결한다고 하는 것.
하지만 여기서 51%의 해시파워(연산능력)를 가진 노드가 조작된 거래를 옹호하는 장부를 작성하게 된다면 정당한 거래를 했던 블록은 사라지게 된다. 장부에 기록이 남지 않으므로 그 거래는 없던 거래가 된다.
다시 쉽게말해, 거래 당시에는 블록이 위 그림과 같이 분기점을 형성해 어떤 거래가 참인지를 알지 못하지만 5-6 블록을 거쳐 더 강한 연산력을 가진 노드가 합의하는 더 긴 블록체인이(파란 블록) 참인 블록체인이 되고 빨간색 블록은 없는 거래가 된다. 결국 파란색 블록을 가진 체인으로 통합된다.
그런데 이 경우 한가지 위험한 예를 들면, 거래당시에 즉시 사용가능한 상품을 거래했고 블록에 거래내용이 포함된것을 확인하고 판매자가 상품을 전송했을때 구매자가 상품을 사용했지만 나중에 거래에 포함되지 않게 된다면 판매자는 돈을 받지 못하게 되는 것. 결국, 이 블록체인 사기장부가 되는 것이다. 이것이 51% 공격이다.
그렇다면 이 51% 공격을 막을 수 있는 방법은 무엇일까?
이 51% 공격을 막는 방법도 역시 경제적 유인이라고 할 수 있다. 천문학적인 액수가 들어가는 51%의 연산능력을 가진 컴퓨터를 사용하는데 옳지 않는 방식으로 장부가 기록된다면 해당 네트워크 노드끼리 불과 몇 초 안되는 사이에 정보가 전파 되므로 그 블록체인의 가치는 떨어질 수밖에 없다. 그렇게 되면 더이상 컴퓨터들이 수학문제를 풀어 블록을 쌓아나갈 필요도 없어지게 되기 때문에 옳은 방식으로 블록을 쌓도록 합의를 하는 것이 그 블록체인 생태계에서는 더 큰 이득이라고 할 수 있다.
최대한 쉽게 설명하려고 하지만 모르시는 분들을 위해 언제든지 댓글로 질문을 받습니다.
질문의 내용이 길 경우는 jsralphh@gmail.com으로 보내주시면 감사하겠습니다.
great post
Thanks :) you read Korean!
안녕하세요 쉽게 설명하는 블록체인 게시자 jsralph입니다.
계정 비밀번호 분실로 인하여 새로 포스팅을 하게 되었습니다ㅜㅜ
http://steemit.com/@easyblockchain 에서 더 많고 다양한 자료 포스팅하고 있으니 많이 찾아주세요~