- Published on
Bitcoin) 비트코인 마이닝의 취약점
- Author
- Name
- yceffort
다수로는 부족하다. 비트코인 마이닝의 취약점
비트코인 프로토콜은 대부분의 Miner들이 정직하게 행동하는 것을 필요로 한다. 이는 비트코인 프로토콜에서 요구되는 사항이다. 만약 일련의 Miner들이 다수의 마이닝 파워를 네트워크에서 형성하게 된다면, 통화는 더 이상 탈중앙화를 할수 없게 되고 이런 다수의 지배를 받게 되고 말 것이다. 이렇게 되면, 이 그룹은 특정 혹은 모든 트랜잭션을 통제할 수 있게 된다. 그러므로, miner들 다수가 조직적으로 움직이는 것에 대해서 인센티브가 없게 끔 설게가 되어야 한다.
이러한 실증적인 예로 비트코인 Miner들이 전략적으로 뭉쳐 마이닝 풀을 형성한 것을 들 수 있다. 비트코인 시스템 내에서 보상은 랜덤한 간격으로 드물게 주어지기 때문에, Miner들은 각각의 암호화 퍼즐을 풀기위해 뭉치고, 이로 인해 생성된 보상을 적절하게 나눠갖게 된다. 아직까지, 이러한 마이닝 풀은 프로토콜을 잘 따르며 온건하다.
이러한 전통적인 사실은 비트코인은 인센티브 하에서 경쟁적이라고 이야기 하며, 이성적인 소수의 마이닝 풀은 정직하게 행동하는 것이 최선의 전략이고, 이는 소수의 마이너들이 프로토콜을 어긴다면 이득을 얻을 수 없다는 것다고 말한다. 프로토콜은 마이너들이 그의 채광력의 비례하여 Miner들에게 동일하게 보상을 주는 것으로 믿기 때문에, 큰 마이닝 풀은 작은 마이닝 풀과 같은 비율로 이득을 얻는다고 생각한다. 결과적으로 Miner들을 더 응집시켜 큰 마이닝 풀로 만드는데에 이점이 없다. 따라서 정직하고 합리적인 Miner들의 풀 형성은 시스템에 아무런 위협이 되지 않는다는 결론을 내린다.
그러나 이 논문에서는, 비트코인은 인센티브하에서 경쟁적이지 못하다는 것을 보여준다. 비주류 마이닝 풀이 그들이 가질 수 있는 비율 보다 더 많은 이득을 얻는 것이 가능하며, 이러한 이들은 그들이 가진 컴퓨팅 파워의 이상을 창출해 낼 것이다.
이 전략을 Selfish-mining이라고 한다. Selfish Mining 이란 마이닝 풀이 블록을 발견하면 이를 알리는 것이 아니라 개인적으로 소유하여, 내부 체인에 포킹을 하는 전략을 말한다. 정직한 노드는 퍼블릭 체인에서 계속 채굴할 것이며, 이 동안 Selfish mining에서는 프라이빗 브랜치에서 소유하고 있는다. 그리고 이들은 새로운 프라이빗 블록을 계속해서 채굴하면서 퍼블릭 체인 보다 더 긴 체인을 만든다. 이 과정에서, 퍼블릭 체인이 가짜 체인의 길이와 같아진다면, selfish miner들은 이 블록을 퍼블릭체인에 공개한다.
이 전략은 정직한 비트코인 프로토콜을 따르는 Miner로 하여금 암호화 퍼즐을 푸는데 자원을 낭비하게 함으로써 종국에는 이러한 작업이 아무런 의미가 없게 되어 버린다. 이 논문에서는, 정직하고 selfish한 miner 모두 어느정도 자원을 낭비하지만, selfish 풀의 보상은 네트워크에서 재공할 수 있는 양보다 초과하여 받을 수 있다. 결국 이는 모두 이성적인 Miner들이 모두 selfish mining에 참여하게 되는 유인이 된다.
이는 곧 블록체인 시스템에 치명적인 부분으로 작용할 것이다. Selfish miner들이 일정 한계점에 도달하게 되면, 이성적인 Miner들은 모두 selfish 마이닝 풀에 참여하게 될 것이고, 이들은 곧 비트코인 네트워크에서 주류로 자리잡게 될 것이다. 그리고 이들이 유일한 블록 채굴자들이 되는 순간, 화폐의 탈중앙화 성격은 무너질 것이고 특정 시점에서는 결국 이들이 시스템을 통제하게 될 것이다.
이러한 Selfish miner들이 전체네트워크의 1/3을 차지 하면 이 시스템이 더 이상 안전하지 않게 된다. 그렇기 때문에, 이 논문에서는 비트코인 프로토콜이 전체대비 1/4의 threshold를 달성하도록 수정을 제안한다. 이러한 변경은 소급적용 가능하며 점진적이다. 현재 클라이언트에 큰 변화 없이 적용하며, 부분적으로 threshold를 증가시킬 수도 있다.
문제점
비트코인 프로토콜은 만약 채굴자들이 같은 길이의 여러 브랜치를 인지하게 되면, 마이너들은 전달받은 마인중 가장 첫번째 브랜치에서 채굴하고 전파하도록 정해져 있다. Selfish Mining 전략은 정직한 채굴자들이 블록 X를 발견했다는 사실을 인지하면, 그둘 중 하나는 미리 발견하고 숨겨놓았던 블록 P를 공개한다. 만약 블록 P 가 다른 마이너들에게 블록 X보다 먼저 도달하게 된다면, 다른 채굴자들은 P를 채굴하기 시작할 것이다. 이렇듯 Selfish mining전략은 다른 정직한 노드가 블록 X를 발견한 뒤에만 반응할 수 있기 때문에 비효율적으로 보일 수 있다. 그러나 이러한 공격자들은 비트코인 채굴 네트워크에 제로파워인 수많은 마이너들을 추가하여 정직한 채굴자들에게 sybil-attack을 가할 수 있다. 이런 가상의 채굴자들은 데이터를 네트워크에 전송하는 일만 할 뿐, 채굴은 전혀 실행하지 않는다. 이러한 가상의 채굴자들이 블록 X를 발견했다는 사실을 인지하게 되면, 그것을 무시하고 새롭게 블록 P를 전파하기 시작한다. 비트코인 네트워크는 랜덤한 P2P구조를 가지고 있기 때문에, X의 전파속도는 다수의 가짜 채굴자를 보유한 P의 전파속도보다 느릴 수 밖에 없다. 가상의 노드를 추가함으로써, Selfish miner 들은 이득을 취할 수 있게 된다.
γ (정직한 노드의 비율) threshold 알파는 프로토콜을 따르는 정직한 노드들을 이기는데 필요한 최소 컴퓨팅 파워를 의미한다. 비트코인의 경우 이에 따른 제한이 없으므로, 항상 selfish mining이 우세할 수 있는 구조를 가지고 있다. 물론 현실적으로 이는 가능하지 않겠지만, (모두가 selfish 채굴자가 되는것) selfish-miner 절반이 이득을 보기 위해서는 1/4의 컴퓨팅 파워만 있으면 된다.
해결책
프로토콜단에서 마이너가 데이터를 전파하는 것을 통제함으로써 selfish mining의 능력을 감소시킬 수 있다. 이러한 개선은 다른 채굴자들과의 변화와는 독립적이므로, 별다른 하드포크를 필요로 하지 않는다. 이러한 프로토콜의 변경은 프로토콜에 새로운 취약점을 가져오지 않는다. 현재 길이가 같은 두가지 분기가 있을 경우 miner의 선택은 임의적이며, 이는 네트워크 구조와 레이턴시에 영향을 받는다. 논문에서 제안하는 변화는, 이러한 임의의 선택을 명확하게 무작위화 하므로, 또다른 취약점이 발견 되지 않는다.