경제학적 관점에서 본 블록체인의 안정성

정승원의 '울룩불룩 블록체인' #3

등록 : 2018년 10월 11일 14:13 | 수정 : 2018년 10월 11일 14:57

지난 글에서 예고한 대로 이번 글에선 (퍼블릭) 블록체인의 안정성을 경제학적 관점에서 다룰 것이다. 작업증명 방식의 비트코인을 주 예제로 사용하겠지만 다른 합의메커니즘에도 비슷한 논리가 적용될 수 있다.

시작하기에 앞서 “블록체인이 안전하다, 해킹이 불가능하다”라는 말을 할 때 그 안정성을 어떤 관점에서 말하는지를 명확히 해야한다는 점을 강조하고 싶다. 블록체인의 안정성을 기술적 관점만이 아닌 실사용적 측면까지 생각한다면 대략 다음과 같은 분류가 가능하다.

  1. 암호화폐 주소에 대한 개인키 관리/전자지갑 소프트웨어의 안정성
  2. 거래소의 안정성
  3. 블록체인 네트워크에 대한 일반적인 네트워크/물리적 공격에 대한 안정성
  4. 해당 블록체인에 사용된 알고리듬 (ex 암호화) 자체의 안정성
  5. 알고리듬이 버그 없이 구현되었는지 여부
  6. (기술적 관점에서의 안정성) 정상적으로 구현되고 동작 중인 환경에서 현존 기술 수준으로 공격이 가능한지 여부
  7. (경제학적 관점에서의 안정성) 정상적으로 구현되고 동작 중인 환경에서 현존 기술 수준으로 공격이 가능하더라도 공격할 경제학적 인센티브(incentive)가 있는지의 여부

이런 여러가지 관점 중 “블록체인의 경제학적 관점에서의 안정성”은 최종단계에서의 안정성을 말한다. 즉 모든 알고리듬과 그 구현이 완벽하고, 해당 블록체인 네트워크가 정상적으로 가동되고 있는 상황에서, 현존하는 기술 수준으로 가능한 공격이 이루어진다는 전제 하에서의 안정성인 것이다. 즉 이미 공격이 가능하다는 것을 전제로 한다.

놀라는 독자도 더러 있을지 모른다.

“아니 블록체인은 해킹 불가라며?”

반대로 뉴스에 시도 때도 없이 해킹 소식들리는데 무슨 소리냐는 독자도 있을 수 있겠다. 이래서 바로 블록체인의 해킹이나 안정성 여부를 논할 때 그 범주가 중요하다는 것이다.

뉴스거리가 되곤 하는 해킹은 대개의 경우 1-2번에 해당하며 간혹 3-5번이 일어나기도 한다. 1-5항목에 대한 자세한 설명은 생략하겠지만, 이들은 사실 블록체인 자체의 안정성과는 조금 거리가 있는 편이다. 사용 부주의 또는 운영의 문제이거나 블록체인이 아닌 기술 어디에나 존재하는 문제이기 때문이다.

보통 블록체인 그 자체, 즉 블록체인 기술자체에 대한 안정성은 6번 항목에 해당된다. 결론부터 말하자면 현존하는 블록체인 중 기술적인 안정성을 만족하는 것은 사실상 없다. 즉 수많은 컴퓨팅 자원을 투입하면 공격이 성공하는 것 자체는 가능하다. 하지만 그럴 경제학적 인센티브가 없다는 것이다. 쉽게 말해 얻는 것보다 잃는 게 더 많다, 즉 비용이 더 든다는 이야기다. 먼저 블록체인의 기술적 관점에서의 안정성(6번 항목)에 대해서 좀 더 살펴보자.

기술적 관점에서의 안정성 – 정상적으로 구현되고 동작 중인 환경에서 현존 기술 수준으로 공격이 가능한지 여부

흔히 블록체인 기술이 해킹으로부터 안전하다고 말하는 이유는 지난 편에서 이미 설명한 대로 매 블록에 이전 블록에 대한 해시값이 들어가고 블록들이 체인으로 연결되어 있어 한 블록을 위조하기 위해서는 뒤의 모든 블록을 위조해야하므로 이것이 “사실상 불가능”에 가깝다는 점이다. 하지만 사실상 불가능하다고 했듯이 이는 확률적인 안정성일 뿐이다.

흔히 언급되는 “51% 공격”이란 것이 바로 이 영역인데, 비트코인의 안정성은 채굴자의 과반수 이상이 악의적이지 않다는 데에 기반한다. (여기서 과반수, 51%의 표현은 다소 비유적인 표현이다. 실제로는 다양한 방법으로 더 적은 숫자의 컴퓨팅 파워로도 공격이 가능하다.)

이 말은 바꿔 말하면 과반수가 악의적인 경우 해킹, 즉 이중지불(double spending)이 가능하다는 이야기이다. A가 B에게 송금을 한 거래내역을 전파하고 이것이 확정(비트코인의 경우 거래 확정을 위해서는 6 confirmation, 즉 6개의 블록이 추가로 생성되는 것을 보통 요구하는데 1 confirmation당 평균 10분이 걸리므로 최종적으로 평균 한 시간 정도가 걸린다)되기 전에 다시 A가 자신의 또다른 계좌인 C로 송금을 하고 해당 거래내역이 포함된 블록과 그 이후 블록을 재빠르게 만들어 나가면 A가 B로 송금한 거래내역이 담긴 체인의 길이를 앞지를 수가 있다. 이 경우 B로 보내진 기록, 즉 해당코인은 무효가 된다. 예를 들어 B가 이를 거래소 등에서 현금화했다면 해당 거래소가 피해를 보는 것이고, B가 A에게 비트코인을 받고 직접 현금 등을 지급했다면 A가 그만큼 손해를 보게 된다. 이 모든 것이 기술적으로 가능은 하다.

 

2018년 10월

2018년 6월

 

Bitcoin Hashrate Distribution (출처: www.blockchain.info)

도넛의 크기가 해시파워, 즉 컴퓨팅 파워를 나타낸다.

 

실제 Bitcoin의 경우 현재 상위 3개 채굴풀의 연산능력의 합이 거의 과반수에 이른다. 과거엔 이보다 더 심했던 경우도 있었는데 탈중앙화를 위해 자발적으로 분산하려는 노력을 기울여 완화된 경우도 있다. 하지만 상위 채굴풀 몇 곳이 담합하면 얼마든지 이중지불을 할 수 있는 상황인 것이다.

그렇다면 이렇게 쉬워 보이는 공격이 왜 일어나지 않는 것인가?

 

경제학적 관점에서의 안정성 – 정상적으로 구현되고 동작 중인 환경에서 현존 기술 수준으로 공격이 가능하더라도 공격할 경제학적 인센티브(incentive)있는지의 여부

왜 블록체인이 실제로는 해킹(이중지불)이 가능함에도 안전하다고 하고 왜 적어도 비트코인에 있어서는 비트코인 블록체인 자체가 해킹되었다는 소식이 들리지 않는 것일까?

사실 이 부분이 암호경제학/토큰 이코노미가 답해야 할 부분인데 아쉽게도 이 부분의 논리는 탄탄한 이론에 기반한 것이 아니다.

경제학적 관점에서의 안정성은 대략 이렇다. 상위권 채굴자들이 담합하면 공격을 할 수 있지만 이들은 컴퓨팅 파워가 좋기 때문에 이미 채굴해서 보유한 비트코인이 많고 앞으로도 정상적으로 채굴해서 얻을 수 있는 비트코인이 많다. 그럼에도 굳이 이들이 공격을 가해 실제 성공한다고 해도 비트코인에 대한 신뢰도가 추락하여 가격이 급락하게 된다는 논리이다. 즉 왠만한 규모의 이중지불을 일으키지 않는 이상 이미 보유하고 있고 또 앞으로 얻을 수 있는 비트코인의 가치를 생각한다면 오히려 손해라는 것이다.

그리고 현재까지 이 논리가 비트코인에서는 잘 동작하고 있다.

아쉽게도 이것이 실제 비트코인이 경제학적 관점에서 안전하다는 논리이다. 즉 실제로는 메커니즘 디자인 관점에서 보았을 때 비트코인 블록체인 메커니즘은 사실 incentive compatible하지 않은 것이다. Incentive compatibility라는 것은 나중에 메커니즘 디자인/마켓디자인을 설명하는 글에서 자세히 다룰 예정이지만 쉽게 말하자면 거짓말을 하지 않는 것이 자기한테도 이득이 되는 것이다. 예를 들어 이중지불 시도를 하지 않는 것이 자신에게도 더 좋아야 하는 것이다.

하지만 엄밀히 말하면 그렇지 못하다. 왜일까? 비트코인 네트워크가 incentive compatible하다는 말을 하기 위해서는 앞서 예시된 이중지불 케이스만 놓고 봐도 매우 큰 가정들이 존재한다. 즉 공격자가 이미 보유한 또는 보유할 코인이 많으며 가격이 내리면 손해를 본다는 가정들이다.

과연 그럴까?

암호화폐가 약세를 띠면서 많은 사람들이 하락에도 돈을 벌 수 있는 공매도에 눈을 돌리고 있다. (공매도는 매수 포지션보다 훨씬 더 위험하다. 강제청산이란 게 있지만 사람의 욕심이란 게 증거금을 더 넣게 되고 이 경우 이론적으로 손실이 무한대가 될 수 있다.) 그러다 보니 마진거래 시장 규모가 더 큰 경우도 발생한다. 즉 공매도 포지션을 대량으로 취하고 일부러 해킹을 해 가격을 떨어뜨려서 돈을 벌고, 패닉셀이 일어나면 다시 저렴한 가격에 사서 가격을 올려 다시 돈을 버는 시나리오가 얼마든지 가능하다.

또한 상대적으로 역사가 오래된 비트코인의 경우에는 어느정도 사실이지만 규모가 작은 다른 코인들의 경우 공격이 가능한 컴퓨팅 파워를 보유한 집단이 해당 코인을 꼭 많이 가지고 있으리란 법도 없다. 평소에는 비트코인을 채굴하든지 아니면 아예 다른 일을 하고 있다가 갑자기 규모가 작은 코인을 공격할 수 있는 것이다. 실제 지난 여름 3달 동안 3번이나 공격 당한 코인도 있고, 어느정도 인지도 있는 Bitcoin Gold 와 ZenCash 역시 공격을 받았다.

이에 대한 해결책은 현재로서는 해당 거래내역을 최종으로 받아들이기까지 좀 더 많은 블록이 뒤에 생기길 요구하는 것, 즉 좀 더 오래 기다리는 방법 밖에 없다. 실제 블록체인들이 이런 공격 발생시 그렇게 처리하고 있다. 또한 정말 뜬금없이 강력한 컴퓨팅 파워로 아주 오래 전부터의 기록을 다 무효로 만드는 공격을 방지하기 위해 일정 블록(checkpoint)까지는 해당 체인이 올바르다고 강제적으로 입력을 하기도 한다.

이 글은 블록체인이 해킹에 취약하다는 취지의 글이 아니다. 물론 규모도 작고 잘 쓰이지 않아 채굴 난이도가 상대적으로 낮은 코인들은 분명 위험에 노출되어 있는 것만은 사실이다. 하지만 적절한 노드 구성과 채굴파워 배분이 이루어진다면 실제 매우 안전한 것이 블록체인이다. 단지 그 안정성에는 블록체인 노드들의 탈중앙화가 전제되어야 함을 강조하며 글을 마친다.