비트코인 분리 사태: 숨은 의도는?(1/2)
2017년 7월 26일  |  By:   |  과학  |  No Comment

최근 비트코인을 둘러싸고 벌어지는 혈투 때문에 세그윗2x, UASF, 비트코인 ABC, BIP141 등에 관한 편향된 의견들이 많이 보입니다. 그중에는 오해나 혼동에 의한 것들이 다수 있었습니다.

이번 글은 다음 몇 달 동안 비트코인 커뮤니티를 시끄럽게 만들 몇 가지 주요 사건들을 설명하기 위한 것입니다. 이 글은 두 부분으로 나뉩니다. 1부는 지금 어떤 일이 일어나고 있는지를, 2부는 왜 그런 일이 일어나는지를 설명합니다. 만약 현재 일어나고 있는 상황을 잘 이해하고 있다면, 각 진영의 인센티브를 게임이론으로 설명한 2부로 바로 넘어가면 됩니다. 이 글은 당신이 현명한 결정을 내리 수 있도록 상황을 명확히 설명하려는 목적이며, 비트코인의 투자에 대해서는 어떤 입장도 취하고 있지 않습니다.

bitcoin-2008262_1920

1부: 어떤 일이 벌어지고 있는가

확장성(Scalability)

먼저 세그윗(서명 분리, Segregated Witness), 또는 블록 사이즈를 왜 키워야 하는지에 대한 긴 논쟁을 설명하려 합니다. 지금의 비트코인은 초당 2~3건의 거래를 처리할 수 있으며, 이는 비자(Visa)의 초당 2,000건에는 턱없이 못 미치는 값입니다. 이는 언젠가는 해결해야 할 문제입니다.

언젠가 비트코인이 오늘날의 결제 시스템을 대체할 수 있으려면 이 확장성 문제를 해결해야 한다는 것은 누구나 알고 있습니다. 이를 해결하기 위해 처음 제안된 것은 블록의 크기를 키우거나 블록 시간을 줄이는 것입니다.

그러나 블록 크기를 늘리거나 시간을 줄임으로써 확장성을 확보하는 것이 블록이 전파되는 시간을 길게 만들고 낭비되는 작업을 늘림으로써 네트워크의 보안성을 낮춘다는 것이 수학적으로 곧 증명되었습니다. 이 문제에 대해서는 이더리움이 이의 변형된 프로토콜을 사용하는 GHOST 프로토콜 문서에 자세히 설명되어 있으므로 깊게 들어가지는 않겠습니다. 간단히 말해, 블록 크기를 늘리거나 블록 시간을 줄이는 것은 채굴자들이 메인 블록이 되지 않을 체인에 자신들의 채굴 능력을 낭비하게 만듭니다. 이는 또한 블록을 얼마나 키울 것인지, 그리고 블록 시간을 얼마나 줄일 것인지에 따라 네트워크 전체 채굴 능력의 51%보다도 더 작은 값으로도 시빌(Sybil) 공격이 가능하게 만듭니다.

더 큰 블록을 사용하기 위한 하드 포크는 또한 완전 노드(full node)를 운영하거나 채굴에 필요한 요구사항을 높임으로써, 겨우 비트코인 노드를 돌릴 수 있었던 이들을 떨어져 나가게 만들어 결과적으로 채굴자의 집중화를 유도합니다.

 

BIP141: 세그윗

세그윗, 곧 서명 분리는 블록 크기를 늘리는 것 외에도 거래가변성(transaction malleability)과 같은 여러 문제를 해결하는 것을 목표로 에릭 롬브로조, 존슨 라우, 피터 윌라에 의해 BIP141로 소개되었습니다. 세그윗은 서명을 거래 머클트리에서 분리함으로써 거래 데이터와 서명 데이터를 분리해서 다룰 수 있는 매우 흥미로운 제안입니다. 특히 블록 비중(Block Weight)이라는 개념을 도입함으로써, 우리는 기존의 노드들도 볼 수 있는 연동 가능한 형태를 유지하면서도 더 많은 거래를 한 블록에 포함할 수 있습니다. 기존의 노드들은 1MB보다 더 큰 볼록을 처리할 수 없습니다. 세그윗을 도입할 경우 우리는 대략 2MB 블록에 들어가는 양에 해당하는 거래 데이터를 처리할 수 있습니다.

어떤 이들은 세그윗의 “2MB” 제안 또한 비자의 초당 2,000건에 비하면 무의미하므로 일시적인 처방일 뿐이라고 주장합니다. 그러나 거래가변성을 제거하는 것은 오프 체인 거래나 아토믹 크로스 체인 거래를 뒷받침할 라이트닝 네트워크를 만들 수 있는 기반이 됩니다. 세그윗은 또한 다중 서명 데이터를 압축해 블록 용량을 높일 수 있는 등의 이점을 지닌 쉬노르 서명(Schnorr Signatures)을 쉽게 적용할 수 있도록 만들어줍니다.

세그윗의 또 다른 장점 하나는 기존 노드들이 인식하는 블록 크기가 여전히 1MB보다 같거나 작기 때문에 소프트 포크만으로도 업데이트될 수 있다는 점입니다. 이는 세그윗이 기존 시스템과 호환되며 따라서 보다 안전한 거래가 가능합니다. BIP141은 전체 노드의 95%가 한 난이도 기간(2016블록으로 약 2주) 동안 “Bit 1”을 전송할 경우 세그윗을 활성화합니다.

이러한 현재의 세그윗 구현에 단점도 존재합니다. 피터 토드는 세그윗이 유효화를 생략한 채굴을 유도할 위험이 있다고 썼지만, 이 문제는 새로운 블록을 만들기 위해서는 이전 블록의 서명이 필요하도록 만드는 소프트 포크로 해결 가능합니다.

비트코인 커뮤니티는 대체로 세그윗에 긍정적이며 또한 비트코인을 장기적으로 성장시키는 데 필요한 방향이라는 사실에 동의합니다. 덩치를 키우기 전에 효율을 높이는 것은 합리적인 일입니다. (블록 크기를 키우기에 앞서 거래 데이터의 크기를 최적화하자는 뜻입니다.) 그러나 우리는 채굴자들의 참여 부족으로 인해 95%라는 지지율에 전혀 이르지 못했습니다. BIP141은 2년의 유효기간을 가졌고 올해 11월 종료되며, 사람들은 이 문제에 조바심을 느끼고 있었습니다. 이런 상황에서 BIP148, 곧 사용자 활성화 소프트 포크(UASF, User Activated Soft Fork)가 등장했습니다.

 

BIP148: 사용자 활성화 소프트 포크(UASF)

2017년 3월, 세그윗을 탐탁지 않게 생각하는 채굴자들이 있는 상황에서 BIP148은 세그윗 강제 활성화를 위해 발표되었습니다. BIP148은 8월 1일부로 bit 1을 전송하지 않는 채굴자들의 블록을 거부합니다. 이는 UASF 노드들이 bit 1을 전송하지 않는 채굴자의 블록을 받아들이지 않도록 만듦으로써 비트코인 체인을 분리시킬 가능성이 있습니다.

만약 체인 분리가 일어난다면, 그리고 세그윗 반대파의 체인이 더 길다면, 블록체인 개편(reorganization)은 실패로 돌아갑니다. 블록체인 개편은 클라이언트들이 실제로 더 긴 블록체인을 발견하고 더 짧은 기존의 블록체인을 버리게 만듦으로써 일어납니다. 따라서 세그윗 체인이 세그윗 반대파의 체인보다 길어진다면, 블록체인 개편이 일어나고 세그윗 반대파가 체인 분리 과정에서 채굴한 보상은 무효로 돌아갑니다.

만약 BIB141이나 BIP91이 발동된다면, 세그윗은 BIP91이나 BIP141을 통해 일어나며 누군가가 하드포크를 계획하지 않는 한(아래 비트코인 ABC를 참고), 모든 체인은 세그윗 체인으로 바뀌며 체인 분리는 일어나지 않습니다.

또한, UASF 가 충분한 채굴 능력의 지지를 받지 못한다면, 높은 채굴능력을 가진 마이닝 풀의 리플레이 공격에 취약할 수 있습니다. 난이도 변경을 위해서는 최소한 15%의 채굴 능력이 UASF를 지지해야 합니다.

 

세그윗2x

UASF 제안에 대해 컨센서스2017 에서 DCG(digital currency group)는 뉴욕 합의(New York Agreement)를 발표하며 대응했고, 이는 세그윗2x라고도 불립니다. 세그윗2x는 세르지오 레르너가 제안한 세그윗2mb의 변형된 형태로, 95%가 아닌 80%의 지지 신호만으로도 7월 말에 세그윗 소프트포크를 활성화할 것(BIP91)과 11월에 2MB 하드 포크를 시행한다는 내용을 담고 있습니다. 흥미로운 점은 이들이 세그윗 소프트 포크 시기를 “우연히” BIP148 UASF 바로 전으로 잡은 것입니다. 뉴욕 합의는 전체 네트워크 채굴능력의 83%에 달하는, 주요 비트코인 마이닝 회사들의 동의를 받았습니다. 즉, 세그윗2x는 BIP148, UASF에 대한 마이너들의 반격입니다.

BIP91을 자세히 설명하자면, 노드들은 7월 21일 신호를 보내기 시작하며 336 블록(이틀) 안에 80%에 도달할 경우 BIP91을 통해 세그윗이 일어납니다.

세그윗2x는 세그윗 활성화 과정에서는 체인을 분리하지 않습니다. 하지만 11월 2MB 하드포크 때는 체인 분리가 일어날 가능성이 있습니다. 2MB 하드포크 합의 코드는 비트코인 코어 개발자들에 의해 만들어진 것이 아니며, 제한적으로만 테스트되었습니다. 긍정적인 면이라면, 세그윗2x 내의 세그윗 코드는 기본적으로 BIP141을 복사한 것이며, 충분한 테스트를 거친 것입니다.

세그윗2x를 통해 세그윗이 일어났을 때 노드들이 11월 2MB 하드 포크에 참여하는 것을 강제하는 코드는 존재하지 않습니다. 3개월 뒤의 하드 포크 조건으로 소프트 포크를 하는 것은 불가능하며, 따라서 세그윗2x를 통해 세그윗이 일어나더라도 하드 포크는 일어나지 않을 수 있습니다.

BIP9에서 도입된 신호보내기(Signaling)는 투표나 정치적 목적을 위한 것이 아니었습니다. 이는 채굴자와 사용자 간의 체인 분리를 조정하기 위한 것이었습니다. 채굴자들은 이를 자신들의 채굴 능력을 정치적 권력으로 사용하는 데 이용하고 있습니다.

 

비트코인 ABC (비트메인)

BIP148 UASF가 발표된 직후, 비트메인은 UAHF를 발표했습니다. 이는 뉴욕 합의(세그윗2x)가 실패할 경우 BIP148 UASF와 별도의 자신들의 블록을 채굴하겠다는 것입니다. BIP148을 지지하는 채굴 능력이 강력할 경우, 비트메인은 자신의 블록에 다른 채굴자들이 합류할 수 있도록 이를 공개할 것입니다.

이 하드포크는 블록 사이즈의 상한은 8MB이지만 또한 1MB보다 작은 사이즈의 블록은 거부하는 새로운 규칙을 가지고 있습니다. 비트메인은 BIP148을 통해 기존의 비트코인 체인에서 체인을 분리하고 채굴자와 사용자에게 더 큰 블록 크기의 사용 없이 세그윗을 강제하는 것은 홍콩 합의를 위반하는 것이며 매우 위험한 일이라고 주장합니다.

이들이 주장하는 하드포크는 비트코인에게 일어날 수 있는 최악의 것이며 나는 여기에 강하게 반대합니다. 이들은 실질적으로 세그윗2x 를 강제하는 것으로 보이며, 누구도 이들과 같은 식의 체인 분리를 원하지 않을 것입니다. 이것이 이 제안의 배경입니다.

2부로

(해커눈)

원문 보기