[Blockchain] 이중 지불 문제(Double Spending Problem)와 블록체인의 원리

장성호·2022년 6월 29일
1

[Blockchain]

목록 보기
3/7

이중 지불 문제란?

누군가 장부를 조작해서, 없던 거래가 생겨나는 것이다. 예를 들어보자.

A는 현재 1,000원을 가지고 있다고 하자. 그리고 A는 B에게 1,000원을 주었다.
A는 돈이 없어서 더이상 B에게 돈을 줄 수 없다.
하지만 장부를 조작해서, A가 B에게 1,000원을 주었다는 거래가 하나 더 생겼다.
결과적으로 A는 1,000원만을 가지고 B에게 2,000원을 주었다.

이렇게 장부를 조작해서 없던 거래가 생겨나면, 말도 안되는 일이 일어난다. 하지만 생각해보면 복제한다는 것은 사실 쉬운 것이 아니다. 아파트를 복제한다던가, 물건을 복제하는 등 이런 일들은 현실에서 일어나기 어렵다. 하지만 디지털 세상에서는 복사&붙여넣기를 하면 무엇이든지 금방 복제할 수 있다. (거래 기록들이 단순히 그렇게 복제되지는 않겠지만...) 아무튼 위의 상황을 표로 정리해보자.

초록색이 정상 거래 기록이고, 빨간색이 비정상 거래 기록이다. 이렇게 디지털 세상에서는 거래 기록을 복제하여, 장부에 저장할 수 있다. 이러한 문제는 어느 곳에서든지 치명적이겠지만, 직접적으로 돈과 관련된 은행 관련 업무에서 이러한 일이 발생한다면 크나큰 문제가 생길 것이다.

언제 이중 지불 문제가 발생할까?

소유권과 소유자가 분리되면서, 중개인이 장부를 관리할 때 이중 지불 문제가 발생할 수 있다. 이렇게만 들으면 무슨 소리인지 하나도 모르겠다. 위의 예시로 다시 설명해보자.

P2P(Peer-to-Peer) transfer

위 예시에서 A가 B에게 1,000원을 줄 때, 사실 둘 사이에 중개인은 없었다. 단 둘이서만 진행하는 거래여서, 1,000원에 대한 소유권과 소유자가 B로 동시에 이동되었다. 이러한 경우에는 이중 지불 문제가 발생할 이유가 없다.

Tracked in a simple ledger

이번에는 둘 사이의 거래에 은행이 끼어있다고 해보자. 위의 표를 조금 바꿔보자.

은행 내부의 누군가가 A와 B에게 유리하도록, 거래 기록을 복제하고 장부를 수정하였다. 결과적으로 은행은 1,000원의 손실을 입었다. 이렇게 은행이라는 중개인이 생기면서 1,000원에 대한 소유권은 A가 가지고, 소유자는 은행이 되면서 이중 지불 문제가 발생했다.

그럼 P2P가 해답일까?

간단한 예시를 통해 P2P에서는 중개인이 없으므로, 이중 지불 문제가 발생하지 않는다는 것을 알 수 있었다. 그렇다고 은행을 이용하지 않는다는 것은 금융 서비스를 포기하는 것이나 다름없다. 요즘 시대에 카드 없이 현금으로만 살아간다고 생각해보면 벌써부터 숨이 막힌다.

한편 장부는 굉장히 중요한 위치에 있다. 당장 개인의 소득 및 세금부터 시작해서 기업의 투자, 회계, 감사 등 장부와 관련된 요소들이 너무나 많다. P2P에서는 보편적으로 이러한 장부가 없으므로, 자신의 거래 내역을 증명하기가 굉장히 어렵다. 이렇게 P2P를 도입하자니 굉장히 중요한 위치에 있는 장부가 없다는 매우 큰 단점이 생겼다.

블록체인은 그런 걱정이 없다.

블록체인은 그 자체가 장부이다. 블록체인을 활용하는 거래는 모두 블록이 되고, 이것들이 계속 연결된다. 비트코인 같은 경우 최초의 블록인 제네시스 블록부터 현재까지 진행된 모든 거래를 블록을 통해 확인할 수 있다. 분산 시스템이기 때문에 중개인이 장부를 조작할 위험 또한 없다. (해킹은 다른 문제이다.)

살펴보기 전에 Hash에 대해서 알아야 하므로, 먼저 공부를 하고 오자.

블록체인을 간단하게 살펴보자. 각 블록은 많은 거래 기록을 모두 Hash하여 저장하고, 새로운 블록이 채굴되면 서로 연결된다. 새로운 블록은 이전 블록의 정보를 담고 있다. 만약 위 그림에서 보라색 블록의 정보를 바꾸고 싶다면, 초록색 블록의 정보도 바꿔야 한다. 마찬가지로 초록색 블록의 정보를 바꾸고 싶다면, 파란색 블록의 정보도 바꿔야 한다. 이렇게 따라 올라가다보면 제일 첫번째 블록부터 수정해야하는 것이다. 순서를 정리해보자.

  1. 파란색 블록이 생긴다.
  2. 새로운 거래들이 일어난다.
  3. 파란색 블록은 새로운 거래들을 모두 Hash하여 저장한다.
  4. 초록색 블록이 새로 채굴됐다.
  5. 초록색 블록은 파란색 블록의 정보를 담고, 서로 연결된다.
  6. 이러한 일을 반복하며 블록체인은 성장한다.

이러한 과정은 etherscan.io에서 실제로 확인할 수 있다. 해당 사이트에 접속한 다음, 아무 블록 번호를 눌러서 글의 내용이 실제로 어떻게 구현되어 있는지 확인해보자.

블록체인과 분산 시스템

가만 생각해보면 시간이 굉장히 오래 걸릴지 모르더라도, 잘 하면 첫번째 블록은 수정할 수도 있다. 여기서 블록체인의 분산 시스템과 이에 속한 노드들이 힘을 발휘한다.

네트워크에 참여하고 있는 모든 노드에는 동일한 정보의 복사본이 있다. 한 시스템만 침임하는 것이 아니라 전 시스템을 침입해야 한다. 게다가 침임한 시스템에 있는 모든 블록과 모든 복사본에도 침입해서 정보를 변경해야한다. 동시에 모든 분산 시스템을 접근해서 이러한 행위를 하는 것은 불가능에 가깝다. 더불어 블록체인은 성장성이 있기 때문에, 네트워크 참여 노드도 늘어날 것이다. 그렇기에 블록체인은 더욱 안전해진다.

51% 공격

블록체인은 성장할수록 더욱 안전해지는 것을 반대로 말하자면, 네트워크가 충분히 성장하기 전까지는 공격에 취약할 수도 있다는 뜻이다. 이러한 헛점을 노린 공격이 바로 51% 공격이다. '부정한 거래의 정당화'와 '정당한 거래의 거부'가 가능해져, 블록체인 네트워크를 마음대로 조정할 수 있는 공격이다. 더 궁금하다면 해당 링크를 참고해보자.

마치며

이중 지불 문제를 통해 블록체인의 기본적인 원리를 알아보았다. 51% 공격에 대해서 안지 몇 년 안 된 것 같은데, 오프라인으로 이루어지는 이 공격에 대해서 우리나라 기업이 온라인증명이라는 방식으로 극복해낸 것이 정말 인상 깊었다. 블록체인은 나날이 발전하는 것처럼 나도 어서 발맞춰야 겠다.

profile
일벌리기 좋아하는 사람

2개의 댓글

comment-user-thumbnail
2022년 7월 7일

해쉬가 먼가요 해쉬브라운인가여

1개의 답글