avatar
Published on

Bitcoin) 비트코인과 빨간풍선

Author
  • avatar
    Name
    yceffort

비트코인과 빨간풍선

출처

2009년 국방부는 미국 전역에 흩어진 10개의 빨간 풍선을 10개를 먼저 찾으면, 4만달러를 준다는 이벤트를 한 적이 있다. 이는 방위고등연구계획국(이하 DARPA)에서 인터넷의 정보 확산의 속도와 정확도를 측정하기에 한 실험이었다. 참고로 이곳은 인터넷을 만든 곳이기도 하다.

최초에 DARPA는 모든 풍선을 다 찾는데 9일 정도를 예상했지만, MIT의 팀은 겨우 9시간만에 모든 풍선의 위치를 찾는데 성공하였다. 그들이 이용한 방법은 아래와 같다.

http://deliveryimages.acm.org/10.1145/1930000/1924441/figs/f2.jpg

풍선을 찾은 사람에게는 2000달러를, 풍선을 찾은 사실을 전한 다음 사람에게는 1000달러를, 그 사실을 전달하는 다음 사람에게는 500달러를 형식으로, 풍선에 대한 정보가 한단계 씩 넘어 갈 때 마다 2000에서 절반의 보을 준 것이다. 이 방법을 활용할 경우, 최초 보상 n의 두배를 넘지 않는다. 이 전략은 유효했고, MIT팀은 승리할 수 있었다.

비트코인으로 돌아가보자.

비트코인은 P2P네트워크를 사용하므로, 모든 거래내역을 노드가 인지하기 위해서 네트워크로 해당 거래 내역을 전파해야 한다. 그러나 현재 비트코인 구조에서는, 거래내역을 전파한다고 해서 특별한 인센티브가 부여되지 않는다. 오로지 block을 만드는 Miner에게만 인센티브가 제공되는 것이다. 만약 MIT의 빨간 풍선처럼, 해당 정보를 전파한 사람들에게도 인센티브가 부여된다면 보다 효과적으로 블록체인 네트워크가 동작할 수 있지 않을까? 이 논문에서는 이러한 전략을 Sybil-proofness라고 한다. 이 논문에서는 아주작은 payment overhead만 있다면, 반복적으로 우월전략을 제거함으로서 이러한 전략을 달성할 수 있다고 주장한다.

다시 빨간풍선 찾기로 돌아와보자. 만약 빨간풍선이 나타났다라고 속이는 사용자가 있고, 그 속인 사실을 전파하는 사용자가 반복해서 발생한다면 이 전략은 유용하지 않게 된다. 비트코인도 마찬가지이기 때문에 정보를 올바르게 전파하는 노드에게는 인센티브를, 그리고 이러한 경쟁에서 발생하는 인센티브를 상쇄해야 한다.

비트코인은 P2P 네트워크에 의존하여 모든 거래를 확인하고 승인한다. 앨리스가 호텔에 30 비트코인을 지불한다고 가정해보자. 그녀는 암호로 30비트코인을 주는 거래에 사인한다. 네트워크의 노드들은 이 거래 내역을 다른 노드에게 알린다. 트랜잭션을 수신한 노드는 해당 거래가 정말 앨리스가 사인했는지 확인할 것인하고, 실제로 해당 거래에서 그 금액이 그녀의 소유인지 확인한다. 그리고 노드는 그 거래를 승인하기 위하여 컴퓨터 퍼즐을 풀 것이다. (hash function 으로 암호화 되어 있으므로) 만약 이 노드가 성공적으로 거래를 승인했다면 (hash의 원래값을 찾았다면) 다른 모든 노드에 전파할 것이다. 결국 네트워크 상의 모든 노드들은 해당 거래 내역에 대해 동의할 것이다.

이런 거래 승인 과정을 장려하기 위해, 거래를 성공적으로 승인한 노드에게는 미리 주어진 양의 비트코인이 보상으로 주어진다. 그리고 이는 비트코인의 공급으로 작용한다. 그러나 비트코인 프로토콜은 총 비트코인의 양에 제한을 두기위해 화폐 창출속도가 기하급수적으로 감소 하도록 설계하였다. 노드에서 이런 지불이 서서히 작아지기 때문에, 비트코인 소유자들은 이러한 거래를 승인하기 위해서 승인 노드에 수수료를 지불해야 한다.

바로 이 지점이 문제다.

노드는 가장 먼저 이 거래내역을 알아내고 승인함으로써 거래 수수료를 취할 수 있기 때문에, 네트워크에서 전파되는 정보를 알 수 있는 동기가 부여되는 것이다. 그런데 만약, 단하나의 노드가 트랜잭션을 인지하고 있다면, 이 거래를 전파하지 않음으로서 경쟁자들을 제거하는 효과를 가져올 수 있다. 경쟁이 없다면, 해당 노드는 결국 수수료를 챙기는데 성공하게 될 것이다. 그리고 이는 결과적으로 승인에 오랜기간이 소요되게 할 것이다.

이를 해결하기 위해서

  • 첫번째로, 정보를 전파하는 것과 중복이 없는 것에 인센티브를 부여한다. 이렇게 한다면, 노드가 스스로 정보를 복제하지 않고 거래내역을 전파하는 것에 인센티브를 갖게 될 것이고, 또한 거래가 승인이 될때까지 복제하지 않을 동기도 갖게 될 것이다.
  • 두번째로, 거래내역이 전파되는 마지막 단계에서 대부분의 노드가 해당 트랜잭션을 알수 있도록 한다.
  • 마지막으로, 이를 구현하고 initial distribution 단계에서 부담을 줄이기 위해, 작은 양의 reward만을 사용한다.