비트코인 골드 51% 공격에 대해서

비트코인 골드(BTG)가 이중 지불 공격을 당했다. 단일 세력이 비트코인 골드의 해시레이트의 51% 이상을 확보면서 컨펌된 거래를 무효화 시키는 새로운 체인을 만드는 방식으로 진행되었다.이번 공격으로 인해 거래소에서 받은 피해는 1860만 달러 이상이 될 것으로 보인다.

이번 이중지불 공격은 아래와 같은 방식으로 이루어졌다.

1. 공격자가 보유한 비트코인 골드를 거래소 계좌로 보내는 트랜젝션을 실행한다.

2. 공격자가 비트코인 골드를 거래소로 보낸 트랜젝션이 포함된 블록보다 한 블록 앞선 블록에 비공개로 채굴을 실행한다. 이 때 거래소로 보내는 트랜젝션을 무효화하기 위해서 자신이 가지고 있는 다른 계좌로 비트코인 골드를 보내는 트랜젝션을 블록에 포함시킨다.

3. 비트코인 골드의 컨펌에 필요한 22블록이 생성되는 것을 기다리며 비공개 채굴을 지속한다.

4. 컴펌이 완료되면 거래소에 해당 비트코인 골드를 팔아서 다른 코인을 구매하고 본인의 지갑으로 보낸다.

5. 비공개로 채굴한 블록을 공개한다. 이미 해시레이트의 51% 이상을 보유하고 있기 때문에 메인 체인보다 더 긴 블록체인이 공개되고, 메인체인이 바뀌게 된다. 이로 인해 공격자가 거래소로 보낸 비트코인 골드 트랜젝션은 무효화되며 공격자는 비트코인 골드와 비트코인 골드를 통해 구매한 코인까지 합하여 자산을 두 배로 불리게 된다.

위와 같은 51% 공격은 어떠한 블록체인에서도 가능한 것으로 알려져 있었다. 하지만 이런 상황이 잘 발생하지는 않았다. 그 이유는 두 가지로 볼 수 있다.

첫번째로 51% 해시레이트를 가지는데에 필요한 비용이 막대하다. 비트코인의 해시레이트는 5/23 기준으로 29.9126Eh/s(E는 10¹⁸을 표현한다.) 이다. 이 중 절반을 차지하기위해서 15E hash/s를 소유하기 위해서는 비트메인의 Antminer S9을 기준으로 대당14Th/s가 나오니 대략적으로 1,071,428 개의 S9이 필요하다. 개당 가격이 974달러 이므로 비용은 10억 4천만 달러로 한화로 일조가 넘어가는 비용이다. 하지만 기존의 채굴자가 채굴을 그만두지 않을 것이기 때문에 실제로는 지금 비트코인의 해시레이트보다 조금 더 큰 해시레이트를 가져야 하고 이는 4조 이상의 비용이 필요하다. 물론 이정도의 채굴기를 준비한다면 기존 채굴자들도 그 움직임을 간파하고 대응을 할 것이다. 하지만 4조의 비용을 들여서 해시레이트를 준비한다고 해도 두번째 이유 때문에 그렇게 되지 않을 것이다.

두번째 이유는 경제적인 요인이다. 4조를 이용해서 비트코인의 해시레이트를 손에 넣고, 비트코인 블록체인을 마음대로 좌지우지 한다면, 비트코인의 가치는 떨어질 것이고 4조의 S9은 고철 덩어리가 될 것이다. S9은 ASIC채굴기여서 다른 암호화폐 채굴이 불가능하고. 또한 절반의 해시레이트를 가지게 된다면 평균적으로 전체 비트코인 채굴의 절반이 돌아온다. 현재 기준으로 약 20분에 한번씩 25비트코인이 나에게 돌아오는 것이다. 이렇게 비트코인이 나에게 오는데 비트코인의 가격이 떨어지게 할 만한 요인을 만들 수 있을까? 4조를 투입했는데 그렇게는 하고싶지 않을 것 같다.

하지만 비트코인 골드의 해시레이트는 비트코인에 비교할만하지 않다. 5/23 기준으로 25.913Mh/s의 해시레이트를 비트코인골드를 가지고 있다. 비트코인 골드는 ASIC으로 중앙화된 비트코인의 채굴 방식을 개선한다는 목적을 가지고 시작되어 작업증명에는 GPU방식인 Equihash[1]가 사용된다. 가장 효율이 좋은 GPU 중 하나인 RX480 1개는 Equihash 기준으로 290h/s의 성능을 보인다. 이번 사건에서 19Mh/s를 소유하면 51% 공격이 가능했고[2] 이는 RX480 65,517개가 필요하다. RX480이 개당 약 400달러 이므로 필요한 비용은 약 2천 6백만 달러 한화로 300억 정도 규모이다. 비트코인에 대비하면 매우 작은 수준의 비용이 필요하고, 또한 ASIC 채굴기에 비해서 GPU는 다양한 용도로 사용이 가능하기 때문에 위험 부담이 훨씬 줄어든다.

이번 공격 사실을 알리며 비트코인 골드 개발진은 컨펌을 현재 22블록에서 50블록으로 늘일 것을 권장했다. 컨펌에 필요한 블록이 늘어날수록 공격자가 지불해야하는 대가가 더욱 커지기 때문이다. 비트코인 골드의 블록생성 시간은 비트코인과 동일하게 평균 10분이다. 22블록에서 50블록으로 컨펌에 필요한 블록을 늘이게 되면 220분에서 500분으로 공격자에게 필요한 시간 또한 늘어나게 된다. 하지만 일반 사용자도 트랜젝션이 완전히 이뤄지기까지 500분을 기다려야하기 때문에 비트코인 골드의 효용성이 떨어질 가능성이 있다.

이번 사건으로 인해서 작업증명의 큰 문제점 중 하나인 완결성(finality) 문제가 대두 되었다. 51% 이상의 해시레이트를 획득하면 이미 완료된 결제도 되돌릴 수 있다. 51% 이상의 해시레이트를 획득한 후 , 브로드캐스트하지 않고 채굴을 하다가 원하는 시점에 브로드캐스트하면 가장 긴 체인이 되어서 이 체인이 메인 체인이 된다.

이더리움은 이런 문제 해결과 동시에 지분증명 방식인 캐스퍼의 연착륙을 위해 캐스퍼 FFG(Casper Friendly Finality Gadget)이란 작업증명과 지분증명이 혼재된(하이브리드) 방식을 진행하려 한다. 쉽게 설명하자면 블록발행은 작업증명으로 하지만 지분증명으로 인해 완결성(Finality)를 블록체인에 부여하는 것이다. 어떤 블록이 완결된다면 블록체인에서 그 이전의 블록들의 거래 정보는 변경이 불가능하다. 캐스퍼 FFG는 시작점을 지정하고 매 50번째 블록을 체크포인트라 부르며 체크포인트에 지분증명에 참석하는 검증인들이 투표를 진행한다. 해당 체크포인트가 투표가 완료되서 완결이 되는 것이 아니라, 투표가 완료되고 그 다음 체크포인트의 투표가 완료되면 앞선 체크포인트가 완결이 된다. 캐스퍼 FFG는 이런 완결성과 함께 POS로의 연착륙을 노리고 있다.

PoW는 굉장히 아름다운 구조이다. 비트코인을 세상에 내놓을 수 있었던 가장 큰 공신이라고도 할 수 있다. 하지만 비트코인이 세상에 나온지 10년이 지났다. 강산이 바뀔 정도의 시간이다. 많은 문제점이 도출되고 있다. 물론 비트코인은 매우 안전해 보인다. 비트코인을 따라하는 다른 암호화폐들이 이런 문제에 처하는 것으로 보인다. 이더리움도 해시파워가 매우 강력하기 때문에 이런 문제에서 상대적으로 자유로워 보인다. 하지만 문제에 대비하는 모습을 보여주고 있다. 물론 캐스퍼는 확장성 문제도 해결해 줄 것으로 기대를 받고 있다. 과연 앞으로 암호화폐는 어떻게 다가오는 문제들을 해결할지 궁금해진다.

[1]Equihash는 Bitcoin Gold의 작업 증명 알고리즘이다. Equihash를 사용하는 다른 암호화폐는 Zcash(ZEC), Komodo(KMD), ZenCash(ZEN) 등이 있다.

[2] 사건이 일어난 5/17의 경우 37.11Mh/s가 비트코인 골드의 해시레이트 였다.