제17장 – 사용자 활성화 소프트포크
한글
책 The Blocksize War의 제17장을 아래에 싣습니다. 책 전체는 Amazon에서 구할 수 있습니다. 안내 말씀으로, 종이책 판매에서 나오는 모든 이익의 50%는 분쟁, 전염병, 재난 또는 의료 서비스에서의 배제로 영향을 받는 사람들에게 의료 지원을 제공하는 자선 단체인 Médecins Sans Frontières에 기부됩니다.*
* 참고: i. 저자의 사망과 ii. 2031년 1월 중 더 이른 시점까지의 판매에 적용됩니다
비트코인에서 현재의 교착 상태를 해소하고 세그윗을 활성화하는 UASF라는 생각 역시 2017년 2월 25일에 비트코인 메일링리스트에 보낸 이메일에서 가명의 개발자 Shaolinfry로부터 나온 것으로 보입니다:
해시 파워의 초대다수 신호 표시가 가진 문제는 채굴자들에게 불필요한 관심을 끌어 그것이 불필요하게 정치적으로 될 수 있다는 점입니다. 이미 투표로 오해받고 있어 채굴자들은 공동체를 대신해 “결정을 내려야 한다”는 압박을 느낄 수 있습니다: 누가 신호를 보내고 누가 보내지 않는지가 거대한 대중의 초점이 되어 채굴자들이 감당할 준비가 되지 않은 압박을 가할 수 있습니다. 일부 채굴자는 업그레이드할 수 있는 처지가 아니거나, 소프트포크에 참여하지 않기를 선호할 수 있으며 이는 그들의 권리입니다. 그러나 그런 채굴자는 이제 모두를 위한 활성화를 거부하는 단 하나의 이유가 될 수 있으며, 이때 소프트포크는 자발적으로 선택하는 기능입니다! 이러한 상황은 모든 수준에서의 참여가 자발적이고 균형 잡힌 유인으로 정직하게 유지되는 비트코인 시스템의 자발적 성격에 어긋나는 것으로 보입니다.
...
여기서 논의하는 대안은 미래에 미리 정한 시점에 노드들이 집행을 시작하는 “플래그 데이 활성화”입니다. 이 방식은 해시 파워 기반 활성화 조건보다 더 긴 준비 기간이 필요하지만, 여러 장점을 제공하며 아마 더 나은 절충을 제공합니다.
2017년 3월 12일에 Shaolinfry는 자신의 제안을 정식으로 정리했고 그것은 BIP 148로 알려지게 되었습니다. 그 생각은 합의 규칙으로 채굴자들이 세그윗에 대한 지지를 표시하도록 강제해 그로써 세그윗을 활성화하는 것이었습니다. 어떤 면에서 그것은 또 다른 소프트포크를 활성화하기 위한 소프트포크였습니다. 강제된 채굴자 표시 작업은 약 네 달 반 뒤인 2017년 8월 1일에 시작하도록 예정되었습니다. 그러면 활성화 기간이 끝나기 전에 원래의 세그윗 소프트포크를 활성화할 수 있었습니다.
동기
세그윗은 블록 크기를 늘리고, 거래 가단성을 고치며, 스크립트를 더 쉽게 업그레이드할 수 있게 하고 그 밖에 많은 이점을 가져옵니다.
채굴자들이 이 BIP가 효력을 갖기 전에 세그윗을 조기에 활성화함으로써 이 BIP에 응답하기를 바랍니다. 그렇지 않으면 이 BIP는 2017년 11월 15일 자정 종료 전에 기존 세그윗 배포의 의무적 활성화를 일으킬 것입니다.
명세
모든 시간은 미디언 과거 시간에 따라 명시됩니다.
기존 세그윗 배포가 epoch time 1501545600 이전에 locked-in되거나 활성화되지 않으면, 이 BIP는 2017년 8월 1일 자정(epoch time 1501545600)과 2017년 11월 15일 자정(epoch time 1510704000) 사이에 활성화됩니다. 세그윗이 locked-in되면 이 BIP는 활성 상태를 중단합니다.
이 BIP가 활성화된 동안 모든 블록은 nVersion 헤더 상위 3비트를 001로 설정해야 하며 비트 필드 (1<<1)도 함께 설정해야 합니다(기존 세그윗 배포에 따름). 요구대로 신호를 보내지 않는 블록은 거부됩니다.
그 생각은 극도로 논란이 많았고 작은 블록 지지자들의 관점에서 매우 위험한 수였습니다. 첫째, 이 시점까지 작은 블록 지지자들의 이야기는 대부분 인내하며 합의 규칙을 차분하고 안전한 방식으로만 바꾸자는 것이었습니다. 이것은 위험한 업그레이드였습니다: 채굴자들에게 지지 표시를 요구했고, 그들이 그렇게 하지 않으면 체인 분할로 이어질 수 있었습니다. 둘째, 매우 위험했는데, 가능성이 매우 높아 보였던 대로 BIP 148 UASF가 실패하면 주도권을 큰 블록 지지자들에게 넘겨줄 수 있었기 때문입니다. 전쟁의 이 시점에 큰 블록 지지자들은 여러 파벌로 갈라져 있었습니다: 예를 들어 Craig Wright가 Satoshi라고 믿는 사람들과 그가 사기꾼이라고 생각하는 사람들 사이, Bitcoin Unlimited가 견고한 생각이라고 여기는 사람들과 그것에 결함이 있다고 여기는 사람들 사이, 그리고 새로운 초기 코인 공개를 시작하려고 떠난 사람들과 비트코인에 계속 집중하며 남은 사람들 사이였습니다. 그러나 공정하게 평가하면, 이 시점까지 작은 블록 지지자들은 대체로 단합해 있었습니다. 이것은 작은 블록 지지자 진영의 핵심 강점이었고 전쟁에서 큰 동력을 얻는 데 도움이 되었습니다. 작은 블록 진영의 이 논란 많은 수는 그들을 둘로 가를 위험이 있었고, 이는 그들의 대의에 치명적일 수 있었습니다.
예를 들어 작은 블록 지지자 진영에서 가장 영향력 있는 사상가 중 한 사람인 Gregory Maxwell은 UASF를 반대했고 2017년 4월 14일의 이메일에서 이 견해를 분명히 밝혔습니다:
저는 세그윗을 지지하는 바로 그 이유 중 일부 때문에 BIP148 UASF를 지지하지 않습니다: 비트코인은 높은 보안과 안정성을 가지고 있기에 부분적으로 가치가 있으며, 세그윗은 사람들이 지금과 미래에 의지할 수 있는 그 공학적 온전함을 뒷받침하고 증폭하도록 신중히 설계되었습니다.
BIP148에서 제안된 (sic) 방식이 세그윗 자체가 세운 기준이나 이 공동체의 프로토콜 개발에서 기존의 가장 좋은 관행에 정말로 미친다고 느끼지 않습니다.
BIP148의 주된 결함은 기존 (non-UASF segwit) 노드들의 활성화를 강제함으로써 거의 확실히 사소한 수준의 혼란을 보장한다는 점입니다.
세그윗은 세그윗이 활성화된 뒤에도 오래되고 수정되지 않은 채굴자들이 _완전히_ 중단 없이 계속 작동할 수 있도록 신중히 설계되었습니다.
오래된 노드들은 세그윗 지출을 포함하지 않을 것이며, 그래서 세그윗을 지원하지 않더라도 그들의 블록은 무효가 되지 않습니다. 그들은 자신의 일정에 따라 업그레이드할 수 있습니다. 세그윗 활성화 뒤에 참여하지 않는 채굴자들이 지는 유일한 위험은 다른 누군가가 무효 블록을 채굴하면 그것을 이어갈 수 있다는 것이며, 이는 많은 채굴자들이 이미 spy-mining으로 자주 감수하는 위험입니다.
그것이 끔찍한 제안이라고 생각하지는 않습니다: 많은 알트코인들이 하는 많은 것들보다 더 잘 설계되었지만, 다만 우리의 통상적인 기준에는 미치지 못합니다. 저는 BIP 148 저자들의 동기를 존중합니다. 여러분의 목표가 가능한 가장 빠른 세그윗 활성화라면 이미 원래 버전의 세그윗을 지원하는 기존 노드의 >80%를 활용하는 것은 매우 유용합니다.
그러나 가장 빠른 지원이 공동체로서 우리의 목표가 되어서는 안 됩니다– 우리보다 더 빠르게 무언가를 지원할 수 있는 무모한 알트코인이나 중앙화된 시스템은 항상 있습니다– 그것에 맞추려는 시도는 잘 설계되고 안정적이라는 점에서 우리의 구별되는 가치를 갉아먹을 뿐입니다.
“먼저 해를 끼치지 마라.” 우리는 이용할 수 있는 가장 혼란이 적은 방식을 사용해야 하며, BIP148 제안은 그 검증을 통과하지 못합니다. 어떤 사람들의 말을 들어보면– reddit 등의 비개발자들– 몇몇은 148의 강제 고아화를 미덕으로 보며, 그것은 잘못 행동하는 채굴자들에 대한 처벌이라고 합니다. 저는 그 관점에 (sic) 더 강하게 반대할 수 없습니다.
물론 저는 UASF라는 일반적인 개념에 반대하지 않지만 _일반적으로_ (어떤 종류든) 소프트포크는 세그윗의 활성화가 그렇듯이 채굴의 혼란을 감수할 필요가 없습니다. UASF는 원래 종류의 소프트포크이며 Satoshi가 실행한 유일한 종류의 포크였습니다. P2SH는 날짜를 기준으로 활성화되었고 그 이전의 모든 포크는 시간이나 높이를 기준으로 했습니다. 우리는 생태계가 모두 조화를 이루는 일반적인 경우에 비트코인을 더 안정적으로 만드는 과정의 일부로 채굴자 기반 활성화를 도입했습니다. UASF가 새로운 것처럼 그려지는 것을 보는 것은 다소 이상합니다.
우리가 피할 수 있는 범위에서 사용자들이 생태계의 어느 한 부분에 휘둘리지 않는 것이 중요합니다– 개발자든, 거래소든, 대화 포럼이든, 채굴 하드웨어 제조업체든 말입니다. 궁극적으로 비트코인의 규칙이 작동하는 이유는 사용자들에 의해 집단적으로 집행되기 때문입니다– 그것이 비트코인을 비트코인답게 만드는 것이며, 그것이 사람들이 의지할 수 있는 것이 되게 합니다: 규칙은 쉽게 바꿀 수 없습니다.
강제된 혼란을 피하는 다른 UASF 제안들이 있었습니다– 단순히 새로운 위트니스 비트를 정의하고 uasf로 업그레이드하지 않은 채굴자와 노드가 업그레이드하지 않은 채로 계속되도록 허용함으로써, 저는 그것들이 훨씬 우수하다고 생각합니다. 그것들은 배포가 더 느리겠지만, 그것이 결함이라고 생각하지 않습니다.
우리는 인내해야 합니다. 비트코인은 모든 시대에 지속되고 인류에게 오랫동안 힘을 주어야 하는 시스템입니다– 지금부터 10년 뒤에는 몇 년의 분쟁이 아무것도 아닌 것처럼 보일 것입니다. 그러나 안정성과 온전함으로, 사람들이 의지할 수 있는 화폐 시스템이라는 점으로 우리가 얻는 평판은 모든 것을 의미할 것입니다.
이러한 논의가 나온다면, 사람들은 비트코인이 변덕으로 쉽게 바뀌지 않는다는 점, 그 변덕이 분명히 좋을 때조차 그렇다는 점, 그리고 그것이 세계가 예전에 사용하던 모든 경쟁 화폐 시스템처럼 관리되는 것으로부터 어떻게 보호하는지를 일깨우는 형태로 나올 것입니다. 🙂
그러니 인내하고, 지름길을 택하지 마십시오. 세그윗은 좋은 개선이며 우리는 그것이 기다릴 만큼 충분히 좋다는 것을 알고, 그것이 활성화되는 방식이 우리가 아는 가장 좋은 방식으로 이루어지도록 함으로써 그것을 존중해야 합니다.
UASF를 지지한 최초의 잘 알려진 비트코인 개발자 중 한 사람은 애초에 세그윗을 소프트포크로 만드는 것이 어떻게 가능한지를 발견한 개발자인 Luke Dashjr였습니다. Luke는 거의 아무도 그렇게 하지 않을 때 대안적인 합의 규칙을 지지하며 정말로 목을 내밀었습니다. 그러나 그의 성격을 고려하면 이것이 그를 괴롭힐 가능성은 낮았고, 괴로워 보이지도 않았습니다. 세그윗 소프트포크의 코드 상당 부분을 작성한, 작은 블록 진영에서 가장 존경받는 개발자 중 한 사람인 Pieter Wuille도 BIP 148을 반대했습니다. 2017년 5월에 Luke와의 인터넷 릴레이 채팅에서 Pieter는 다음과 같이 말했습니다:
제 예상은 해시레이트가 그것을 채택하지 못한 지 몇 시간 뒤에 경제적으로 중요한 모든 풀 노드가 bip148 코드에서 되돌아설 것이라는 점입니다
…
luke-jr: 당신은 제정신이 아니라고 생각합니다
Pieter가 “제정신이 아니다”는 발언에 대해 빠르게 사과했다는 점을 밝혀 둡니다. Pieter와 Gregory 같은 개발자들의 견해를 고려하면 이제 Bitcoin Core가 BIP 148을 구현한 클라이언트를 내놓을 가능성은 극도로 낮아 보였습니다. UASF 계획이 성공하려면, 아이러니하게도 작은 블록 지지자들은 큰 블록 지지자들이 Bitcoin XT, Bitcoin Classic과 Bitcoin Unlimited로 했던 것처럼 다른 합의 규칙을 가진 대안 클라이언트를 실행해야 했습니다.
정확히 그런 일이 일어났습니다: Luke는 결국 BIP 148을 구현한 클라이언트를 내놓았고, 사용자 에이전트 태그는 “/Satoshi:0.14.2/UASF-Segwit:0.3(BIP148)/”였습니다. 사용자들은 또한 Bitcoin Core를 계속 실행하면서 BIP 148에 대한 지지를 보여주기 위해 사용자 에이전트 ID를 바꾸도록 권장받았으며, 이는 당시에도 인기 있는 관행으로 보였습니다. 일부는 클라이언트가 실제로 BIP148 규칙을 구현하지 않으므로 이것은 나쁜 관행이라고 주장했지만, 다른 이들은 이것은 의도의 문제이며 사용자들이 8월 1일 이전에 업그레이드할 것임을 나타낸다고 답했습니다. 일부는 이것이 다소 위선적이라고 지적했는데, 이는 작은 블록 지지자들이 큰 블록 지지자들을 조롱하고 비판했던 바로 그 종류의 행동이었기 때문입니다.
2017년 5월 초에 저는 홍콩에서 UASF의 가장 중요한 배후 지지자 중 한 사람과 만나 대화를 나누었습니다. 제가 대화한 개발자는 UASF 클라이언트용 코드를 작성했고 UASF 찬성 운동 웹사이트 여러 개를 관리하고 있었습니다. 저는 그에게 UASF는 위험하며 비트코인 합의 규칙에 인내하는 것이 중요하다고 설명했습니다. 그는 길고 힘 있는 답변을 내놓았습니다. 그는 “평상시라면 당신의 말이 맞습니다”라고 단언했고, “그러나 지금은 평상시가 아니며, 우리는 전쟁 중입니다”라고 말했습니다. 그는 이어 말했습니다: “비트코인은 위기 상황이며, Bitmain은 ASICBoost 취약점을 악의적으로 이용하고 있고, 세그윗은 이 취약점을 고치며 우리는 이것을 긴급히 고쳐야 합니다. 비상 상황이며 따라서 통상적이고 인내하는 방식에 쓸 시간이 없습니다.” 그는 전쟁에서는 항상 적절한 시기를 고를 여유가 있는 것이 아니라고 계속 설명했습니다. 그는 UASF 활성화까지 불과 몇 달밖에 남지 않았다는 점을 알고 있었지만, 작은 블록 지지자들이 현재 전쟁에서 우위에 있으며 이것이 지속되리라는 보장은 없다고 설명했습니다. 그는 “지금이 큰 무기를 꺼낼 때입니다”라고 선언했고, “우리가 강할 때입니다”라고 말했습니다. 그는 계속 말했습니다: “우리에게 다른 선택은 없습니다, 비트코인의 미래를 위해 지금 행동하고, 핵 옵션을 써서 이 전쟁에서 결정적으로 이겨야 합니다. 그렇게 하지 않으면 패배를 감수해야 하며 비트코인은 죽을 것입니다.” 이 개발자는 모든 시나리오를 검토해 본 것으로 보였고 BIP 148이 작동할 것이라고 확신했습니다. 그의 생각에 BIP 148이 소프트포크이며 현재 합의 규칙의 부분집합이라는 사실은 중요한 이점이었고 채굴자들이 BIP 148 체인으로 바꾸도록 강제하는 데 도움이 될 것이었습니다. 그의 견해는 BIP 148이 위협이며 채굴자들이 일찍 압박에 굴복해 세그윗을 활성화할 것이고, 그래서 2017년 8월의 소프트포크는 실제로는 결코 일어나지 않으리라는 것이었습니다. 그는 “BIP 148은 세그윗이 이미 활성화되어 있으면 적용되지 않도록 하는 코드를 담고 있습니다”라고 설명했습니다.
처음에는 그 생각이 작은 블록 진영 안에서 논란이 되었지만, 2017년 5월까지는 상당한 지지를 얻었습니다. Dragons’ Den은 이제 BIP 148과 UASF를 지지하며 전면적인 운동 방식에 들어갔습니다. Samson Mow는 앞면에 UASF 글자를 수놓은 모자를 기획하고 판매하며 배포하기까지 했습니다. 이 모자는 보통 군용 색상이었고 작은 블록 지지자들이 이 풀뿌리 운동에 대한 지지를 나타내기 위해 비트코인 콘퍼런스와 행사에서 썼습니다. 이 시점에 UASF 논의는 작은 블록 공동체 안에서만 퍼져 있었고, 큰 블록 지지자들과 더 넓은 암호화폐 산업은 대부분 그것을 무시했습니다. 그 생각이 작은 블록 진영 밖에서 더 널리 탐구된 것은 2017년 5월 말이 되어서였습니다.
전술적 관점에서 보면, 큰 블록 지지자들은 대응이 너무 느렸고 UASF를 이해하는 것도 너무 느렸습니다. 큰 블록 지지자들은 작은 블록 진영 내부의 분열 가능성을 간파하고, 작은 블록 지지자들이 큰 블록 지지자 진영의 분열 가능성을 부각하고 이용했던 것처럼 그 틈을 부각하고 이용하려 했어야 했습니다. 그러나 그들은 대부분 UASF를 무시했습니다. 5월 말이 되어갈 무렵, 저는 가장 저명한 큰 블록 지지자 중 한 명과 UASF에 대해 논의했습니다. 그는 저에게 그레고리 맥스웰이 실제로 UASF를 반대한다고 믿지 않는다고 설명했으며, 그것은 그저 그의 “평소의 거짓말과 술수”일 뿐이라고 설명했습니다. 이 시점에는 불신의 수준이 너무 높아졌고, 비트코인이 어떻게 작동하는지에 대한 이해도 매우 달랐기 때문에, 큰 블록 지지자들은 작은 블록 지지자들이 무엇을 꾸미는지 거의 분간할 수 없는 상태로 보였습니다. 저에게는 작은 블록 지지자들이 마침내 움직였고 빈틈을 남긴 것으로 보였습니다. 이 전쟁이 계속되려면 큰 블록 지지자들이 대응하여 그 빈틈을 이용해야 했지만, 그들은 무엇을 해야 할지 이해하지 못하는 듯했습니다.
큰 블록 지지자들은 UASF를 진심으로 우려하는 듯도 했습니다. 전쟁 초기에는 작은 블록 진영의 규모와 영향력을 크게 과소평가하고 전쟁에서 쉬운 승리를 예상했습니다. 큰 블록 지지자들은 작은 블록 지지자들을 하찮고 순진하다고 자주 조롱했습니다. 그러나 세 차례의 하드포크 시도가 실패한 이 시점에는, 그 패배들이 그들에게는 예상 밖이었기에, 대부분의 큰 블록 지지자들은 이제 작은 블록 지지자들의 힘과 영향력을 과대평가하는 듯했습니다. 현실에서는 작은 블록 지지자들이 그들이 생각한 것보다 훨씬 덜 강력했습니다. 이 시점까지 큰 블록 지지자들을 물리치는 데 성공한 주된 이유는 비트코인에 대한 더 뛰어난 이해, 큰 블록 지지자들 자신의 전술적 실수, 그리고 논란이 되는 프로토콜 규칙 변경에 대한 비트코인 고유의 회복력이었습니다. 불완전한 이해로 인해, 큰 블록 지지자들은 적어도 어느 정도는 패배의 원인을 교활하고 강력한 작은 블록 지지자들의 영리한 책략 탓으로 돌렸습니다. 그래서 큰 블록 지지자들은 작은 블록 지지자들을 떠받드는 듯했고, 그들 중 많은 이가 작은 블록 지지자들의 다음 큰 행보로 본 UASF를 두려워했습니다. 그들은 그 UASF가 자신들에게 준 전술적 기회를 보지 못했습니다. 그래서 그 기회를 이용하지 못한 것입니다.
이 시점에 UASF는 암호화폐 거래소들로부터 거의 지지를 받지 못했습니다. 당시 제가 대화한 대부분의 거래소 대표들은 UASF가 실패할 것으로 예상하거나, 그것이 무엇인지조차 몰랐습니다. 작은 블록 진영 바깥에서 UASF에 대한 경제적 지지는 미미했습니다. 이는 작은 블록 지지자들의 위험한 행보였고, 저에게는 그들이 비트코인으로 간주되지 않는 더 낮은 작업 증명 기반 전체장부에 남게 될 가능성이 커 보였습니다. 큰 블록 지지자들이 고려했어야 했던 것은 BIP 148 표시가 담긴 블록들을 금지하는 “맞대응 소프트포크”를 내놓는 것이었습니다. 이 체인이 경제적 다수와 해시레이트 다수를 차지했을 가능성이 큽니다. 이 맞대응 UASF는 또한 분할을 깔끔하게 만들어, UASF를 따르지 않는 체인이 더는 소멸 위험에 취약하지 않도록 했을 것입니다. 그러나 큰 블록 지지자들은 이런 식으로 생각하지 않았습니다. 그들은 하드포크를 통한 블록 크기 증가를 원했고, 맞대응 소프트포크를 구현할 전문성이나 의지가 없었습니다.
지한 우는 UASF 운동에 극도로 분노한 듯했습니다. 그에게 UASF는 채굴자들이 프로토콜 규칙에 상당한 영향력을 갖는다는 자신이 구축한 이야기를 무너뜨렸습니다. 2017년 5월 28일, 지한 우는 #UASF라는 태그와 함께 존스타운 학살 사건의 살해 희생자들의 사진을 곁들여 트윗했습니다. 그가 UASF에 품은 분노와 두려움은 강해 보였습니다.
6월 중순, 지한 우와 연관된 거래소 ViaBTC가 플랫폼에 BIP 148 선물을 상장했습니다. 이는 몇 달 전 Bitfinex와 그들의 Bitcoin Unlimited 토큰에서 가져온 아이디어임이 분명했습니다. Bitfinex 선물이 Bitcoin Unlimited를 약화시켰던 것처럼 BIP 148을 약화시키려는 시도였습니다. 그러나 계약 조건이 꽤 이상했고 다소 편향되어 있었습니다. BIP 148 토큰에 투자하면 BIP 148 토큰 체인과 기존 규칙 체인, 즉 BIP 148을 따르지 않는 체인이 모두 계속 존재해야만 수익금을 받을 수 있었습니다. 이는 BIP 148 지지자들이 원한 바가 분명히 아니었습니다. 그들은 기존 규칙 체인이 사라질 것이라고 믿었는데, 특히 기존 규칙 체인이 BIP 148 체인에 의한 소멸에 취약했기 때문입니다. 그래서 BIP 148을 따르지 않는 체인의 계속된 존재에 의존하는 토큰에 투자하는 것은 BIP 148 지지자들에게는 거의 의미가 없었습니다. 이 계약은 유의미한 거래량을 만들어내지 못했고 BIP 148 진영을 약화시키는 듯하지 않았습니다.
2017년 6월 14일, Bitmain은 UASF에 대응한 비상 계획을 설명하는 블로그를 게시했습니다:
BIP148은 거래소와 다른 사업자들에게 매우 위험합니다. BIP148 뒤에는 유의미한 경제적 지지가 있다는 징후가 없으며, 그것이 전체장부로 살아 있을 때 그 경제적 지지는 대부분 투기에 기반할 가능성이 큽니다. UASF 체인 뒤의 채굴 활동은 예고 없이 중단될 수 있으며, BIP148 선전을 믿고 매수하는 투자자들은 투자금 전부를 잃을 수 있습니다. 분기점 이후 UASF 토큰을 지원하기로 결정하는 모든 거래소는 그에 따르는 정체 위험을 고려해야 합니다.
…
UASF 체인은 기존 체인이 소멸될 위험을 안고 있습니다. 비상 계획이 없으면 UASF 분기점 이후 기존 체인에서 일어나는 모든 경제 활동은 소멸될 위험에 직면할 것입니다. 이는 전체 비트코인 생태계에 재앙 같은 결과를 가져옵니다. UASF는 블록 크기 증가 없이 지금 당장 세그윗을 활성화하는 데 동의하지 않는 사용자와 기업들에 대한 공격이며, 이는 2016년 2월에 전 세계 비트코인 공동체가 만든 홍콩 합의의 매우 중요한 조항입니다.
…
이 계획은 사용자 활성화 하드포크, 즉 UAHF를 위한 것입니다
…
Bitmain은 BIP148 분기점 이후 최소 72시간 동안 자체 채굴 사업에서 공급하는 일정 비율의 해시레이트로 그 체인을 채굴할 것입니다. Bitmain은 상황이 요구하지 않는 한 채굴한 블록들을 공개 네트워크에 즉시 공개하지 않을 가능성이 크며, 이는 Bitmain이 그 체인을 먼저 비공개로 채굴할 것임을 뜻합니다. 저희는 다음과 같은 상황에서 채굴한 블록들을 공개할 예정입니다(전부가 아닌 예시 목록):
BIP148 체인이 활성화되고 이후 채굴 업계로부터 유의미한 지지를 얻는 경우, 즉 BIP148이 이미 체인을 성공적으로 분할한 이후인 경우;
큰 블록 하드포크에 대한 시장 심리가 강하고 경제적 논리가 저희를 그 채굴로 이끄는 경우, 예를 들어 환율이 큰 블록 비트코인에 유리한 경우;
이미 상당수의 다른 채굴자들이 큰 블록 체인을 공개적으로 채굴하고 있고 저희가 그 체인 위에서 채굴하는 것이 합리적이라고 판단하는 경우. 그런 경우 저희는 그 체인에 합류하고 저희가 비공개로 채굴한 체인을 포기하는 것도 고려할 것이며, 그리하여 공개 UAHF 체인이 재구성될 위험 아래 놓이지 않도록 할 것입니다.
Bitmain이 공개적으로 UAHF 체인을 채굴하기 시작하면, 저희는 그것을 꾸준히 채굴하고 단기적인 경제적 유인을 무시할 것입니다. 저희는 블록 크기를 조정할 선택지를 포함한 로드맵이 사용자들에게 더 잘 봉사할 것이라고 믿으며, 그래서 장기적으로 더 높은 시장 가격을 끌어들일 것으로 기대합니다.
Bitmain 계획은 UASF가 활성화될 예정인 시점과 거의 같은 시기에 블록 크기 제한을 높이는 하드포크를 활성화하는 것이었습니다. 그 하드포크 계획에는 블록 크기 제한 증가 일정까지 포함되어 있었습니다. 블록 크기 제한은 2017년 8월에 2 MB에서 시작해, 이후 미리 정해진 추가 단계들을 거쳐 점진적으로 증가하여 2019년 8월까지 16.8 MB에 이르게 되어 있었습니다. 이 계획은 UASF 지지자들을 겨냥한 일종의 위협으로 보였습니다. 큰 블록 지지자들은 새로운 하드포크 체인을 얻게 될 것이며, 이는 작은 블록 지지자들이 필사적으로 막기를 바란다고 그들이 여긴 것이었습니다.
지한 우는 깨닫지 못한 듯했지만, 이 계획은 실제로 UASF 진영에 엄청나게 유리했습니다. Bitmain이 대안 하드포크 체인으로 옮겨갈 계획임을 밝혔기에, UASF 체인이 기존 규칙 체인보다 작업 증명 우위를 차지할 가능성이 더 커졌기 때문입니다. 여기에 더해 Bitmain은 72시간 동안 새로운 하드포크 체인을 비밀리에 채굴할 계획이었습니다. 하드포크된 체인이 어떤 지지를 얻기를 바랐다면 이는 매우 나쁜 행보였습니다. 아무도 그 체인을 볼 수 없고, 그것을 지원하는 클라이언트를 실행할 수 없으며, 거래소들도 그 토큰을 지원할 수 없었을 것이기 때문입니다. 무엇이 이 블로그 게시를 이끌었는지는 분명하지 않습니다. 지한 우가 극도로 화가 나서 상대방을 좌절시키기 위해 서둘러 계획을 세웠지만, 전혀 깊이 생각하지 않은 듯합니다. 물론 지한 우가 발표했어야 했던 것은, UASF가 일어날 경우 기존 규칙 체인을 계속 채굴하면서 맞대응 UASF를 준비하겠다는 것이었습니다. 그러나 그렇게 하면 1 MB 블록에 갇히게 되므로, 선택지가 별로 없다고 느꼈을지도 모릅니다.
드래건스 덴 안에서는 작은 블록 지지자들이 Bitmain 블로그 게시를 기쁨으로 축하했으며, 그것이 자신들의 완전한 승리를 거의 확정한 것으로 보았기 때문입니다. 그러나 일부는 더 신중한 어조를 취했습니다. “지한 우가 어리석은 일을 하겠다고 말한다고 해서, 그가 그렇게 하리라 단정하지 마십시오”. 저에게는 이 더 신중한 입장이 올바른 접근으로 보였습니다. 8월 1일이 가까워질수록 지한 우는 자신의 계획이 말이 되지 않는다는 것을 깨닫고 더 효과적인 다른 방안으로 방향을 틀 가능성이 매우 컸습니다.
UASF 기한이 다가오자, 큰 블록 지지자들은 효과적으로 대응하는 방법을 몰라 수세에 몰렸습니다. 그들에게는 남은 실행 가능한 선택지가 거의 없는 듯했습니다. 큰 블록 지지자들은 마침내 굴욕적인 패배로 향하는 듯했고, 그들도 그것을 알고 있었습니다. 그들에게는 체면을 살리는 어떤 조치가 필요했습니다.
영문 — Chapter 17 – User-Activated Softfork
Chapter 17 of the book The Blocksize War is published below. The full book is available on Amazon. As a reminder, 50% of any profits from physical book sales will be donated to Médecins Sans Frontières, a charity that provides medical assistance to people affected by conflict, epidemics, disasters, or exclusion from healthcare.*
* Note: Applies to sales up until the earlier of i. the death of the author and ii. January 2031
The idea of a UASF in Bitcoin resolving the current stalemate and activating SegWit appears to also have originated from the pseudonymous developer Shaolinfry, in an email sent to the Bitcoin mailing list on February 25, 2017:
The problem with supermajority hash power signaling is it draws unnecessary attention to miners which can become unnecessarily political. Already misunderstood as a vote, miners may feel pressure to “make a decision” on behalf of the community: who is and isn’t signalling becomes a huge public focus and may put pressures onto miners they are unprepared for. Some miners may not be in a position to upgrade, or may prefer not to participate in the soft fork which is their right. However, that miner may now become a lone reason that vetoes activation for everyone, where the soft fork is an opt-in feature! This situation seems to be against the voluntary nature of the Bitcoin system where participation at all levels is voluntary and kept honest by well balanced incentives.
...
The alternative discussed here is “flag day activation” where nodes begin enforcement at a predetermined time in the future. This method needs a longer lead time than a hash power based activation trigger, but offers a number of advantages and perhaps provides a better tradeoff.
On March 12, 2017, Shaolinfry formalised his proposal and it became known as BIP 148. The idea was to force miners to flag support for SegWit by a consensus rule, thereby activating it. In a way, it was a softfork to activate another softfork. The forced miner flagging was scheduled to start on August 1, 2017, around four and a half months away. This could then activate the original SegWit softfork, before the activation window expired.
Motivation
Segwit increases the blocksize, fixes transaction malleability, and makes scripting easier to upgrade as well as bringing many other benefits.
It is hoped that miners will respond to this BIP by activating segwit early, before this BIP takes effect. Otherwise this BIP will cause the mandatory activation of the existing segwit deployment before the end of midnight November 15th 2017.
Specification
All times are specified according to median past time.
This BIP will be active between midnight August 1st 2017 (epoch time 1501545600) and midnight November 15th 2017 (epoch time 1510704000) if the existing segwit deployment is not locked-in or activated before epoch time 1501545600. This BIP will cease to be active when segwit is locked-in.
While this BIP is active, all blocks must set the nVersion header top 3 bits to 001 together with bit field (1<<1) (according to the existing segwit deployment). Blocks that do not signal as required will be rejected.
The idea was extremely controversial and a very risky move, from the small blockers point of view. Firstly, most of the small blocker narrative up until this point was about patience and only changing the consensus rules in a calm and safe manner. This was a dangerous upgrade: it required miners to flag support and, if they did not, it could result in a chain-split. Secondly, it was very risky because, if the BIP 148 UASF failed, which seemed very possible, it could hand the initiative to the larger blockers. At this point in the war, the large blockers had split into several factions: for example, between those that believed Craig Wright was Satoshi and those that thought he was a conman; between those that thought Bitcoin Unlimited was a robust idea and those that thought it was flawed; and between those that had left to launch new initial coin offerings and those who remained focused on Bitcoin. However, to their credit, up until this point the small blockers had been mostly united. This was a key strength for the small blocker side and helped them gain a lot of traction in the war. This controversial play from the small block camp risked splitting them in two, which could have been devastating for their cause.
For instance, Gregory Maxwell, one of the most influential thinkers on the small blocker side, opposed the UASF and clearly articulated this view in an email on April 14, 2017:
I do not support the BIP148 UASF for some of the same reasons that I do support segwit: Bitcoin is valuable in part because it has high security and stability, segwit was carefully designed to support and amplify that engineering integrity that people can count on now and into the future.
I do not feel the (sic) approach proposed in BIP148 really measures up to the standard set by segwit itself, or the existing best practices in protocol development in this community.
The primary flaw in BIP148 is that by forcing the activation of the existing (non-UASF segwit) nodes it almost guarantees at a minor level of disruption.
Segwit was carefully engineered so that older unmodified miners could continue operating _completely_ without interruption after segwit activates.
Older nodes will not include segwit spends, and so their blocks will not be invalid even if they do not have segwit support. They can upgrade to it on their own schedule. The only risk non-participating miners take after segwit activation is that if someone else mines an invalid block they would extend it, a risk many miners already frequently take with spy-mining.
I do not think it is a horrible proposal: it is better engineered than many things that many altcoins do, but just not up to our normal standards. I respect the motivations of the authors of BIP 148. If your goal is the fastest possible segwit activation then it is very useful to exploit the >80% of existing nodes that already support the original version of segwit.
But the fastest support should not be our goal, as a community– there is always some reckless altcoin or centralized system that can support something faster than we can– trying to match that would only erode our distinguishing value in being well engineered and stable.
“First do no harm.” We should use the least disruptive mechanisms available, and the BIP148 proposal does not meet that test. To hear some people– non-developers on reddit and such– a few even see the forced orphaning of 148 as a virtue, that it’s punitive for misbehaving miners. I could not (sic) disagree with that perspective any more strongly.
Of course, I do not oppose the general concept of a UASF but _generally_ a soft-fork (of any kind) does not need to risk disruption of mining, just as segwit’s activation does not. UASF are the original kind of soft-fork and were the only kind of fork practiced by Satoshi. P2SH was activated based on a date, and all prior ones were based on times or heights. We introduced miner based activation as part of a process of making Bitcoin more stable in the common case where the ecosystem is all in harmony. It’s kind of weird to see UASF portrayed as something new.
It’s important the users not be at the mercy of any one part of the ecosystem to the extent that we can avoid it– be it developers, exchanges, chat forums, or mining hardware makers. Ultimately the rules of Bitcoin work because they’re enforced by the users collectively– that is what makes Bitcoin Bitcoin, it’s what makes it something people can count on: the rules aren’t easy to just change.
There have been some other UASF proposals that avoid the forced disruption– by just defining a new witness bit and allowing non-upgraded-to-uasf miners and nodes to continue as non-upgraded, I think they are vastly superior. They would be slower to deploy, but I do not think that is a flaw.
We should have patience. Bitcoin is a system that should last for all ages and power mankind for a long time– ten years from now a couple years of dispute will seem like nothing. But the reputation we earn for stability and integrity, for being a system of money people can count on will mean everything.
If these discussions come up, they’ll come up in the form of reminding people that Bitcoin isn’t easily changed at a whim, even when the whims are obviously good, and how that protects it from being managed like all the competing systems of money that the world used to use were managed. 🙂
So have patience, don’t take short cuts. Segwit is a good improvement and we should respect it by knowing that it’s good enough to wait for, and for however its activated to be done the best way we know how.
One of the first well-known Bitcoin developers to support the UASF was Luke Dashjr, the developer who discovered how it was possible to make SegWit a softfork in the first place. Luke had really stuck his neck out here, supporting the alternative consensus rules when almost nobody else did. However, given his personality, this wasn’t likely to bother him, and didn’t seem to. One of the most respected developers in the small block camp, Pieter Wuille, who had written much of the code for the SegWit softfork, also opposed BIP 148. In May 2017, in an internet relay chat with Luke, Pieter made the following comments:
my expectation is that every economically relevant full node will revert away from bip148 code hours after the hashrate fails to adopts it
…
luke-jr: i think you’re insane
It should be noted that Pieter quickly apologised for the “insane” comment. Given the views of developers such as Pieter and Gregory, it now seemed extremely unlikely that Bitcoin Core would release a client which implemented BIP 148. If the UASF plan was to succeed, small blockers would, ironically, have to run an alternative client with different consensus rules, just as the large blockers had done with Bitcoin XT, Bitcoin Classic and Bitcoin Unlimited.
This is exactly what happened: Luke eventually released a client implementing BIP 148, with the user agent tag “/Satoshi:0.14.2/UASF-Segwit:0.3(BIP148)/”. Users were also encouraged to keep running Bitcoin Core and change the user agent ID to show support for BIP 148, which also appeared to be a popular practice at the time. Some argued that this was a bad practice since the client did not actually implement BIP148 rules, however others responded that this was about intentions and it indicated the users would upgrade prior to August 1. Some pointed out that this was a bit hypocritical, as this was exactly the kind of behaviour which small blockers had ridiculed and criticised the large blockers for.
In early May 2017, I sat down in Hong Kong for a chat with one of the most significant behind-the-scenes proponents of the UASF. The developer I spoke to had written code for the UASF client and maintained several of the pro-UASF campaign websites. I explained to him that the UASF was risky and that it was important to be patient with the Bitcoin consensus rules. He gave a long and robust response. “In normal times, you are correct”, he asserted, “however, these are not normal times, we are in war.” He continued: “Bitcoin is in a crisis situation, Bitmain is maliciously exploiting the ASICBoost vulnerability, SegWit fixes this vulnerability and we need to urgently fix this. It is an emergency situation and therefore we do not have time for the normal, patient approach.” He went on to explain that, in a war, you do not always have the luxury of choosing the right time. He appreciated that the UASF activation was only a few months away, but he explained that the small blockers were currently in a dominant position in the war and there was no guarantee this would last. “Now is the time to get the big weapons out,” he proclaimed, “when we are strong.” He continued: “We have no other choice, we need to act now, go nuclear and decisively win this war, for the future of Bitcoin. If we do not, we risk defeat and Bitcoin will be dead.” This developer appeared to have thought through all the scenarios and was convinced BIP 148 would work. In his mind, the fact that BIP 148 was a softfork, a subset of the current consensus rules, was a significant advantage and would help force miners to switch to the BIP 148 chain. His view was that BIP 148 was a threat and miners would cave from the pressure early, activating SegWit, such that the softfork in August 2017 would never actually occur. “BIP 148 contains code such that it doesn’t apply if SegWit is already activated,” he explained.
While, initially, the idea was controversial within the small block camp, by May 2017 it had gained significant traction. The Dragons’ Den was now in full campaign mode, supporting BIP 148 and the UASF. Samson Mow had even organised, sold and distributed a hat with the letters UASF embroidered on the front. This hat was typically in military colours and worn by small blockers at Bitcoin conferences and events to indicate their support for this grassroots campaign. At this point, UASF discussion was only prevalent inside the small block community, while the large blockers and the wider cryptocurrency industry mostly ignored it. It was only towards the end of May 2017 when the idea became more widely explored outside of the small block camp.
From a tactical point of view, the large blockers were too slow to react and too slow to understand the UASF. Large blockers should have seen the potential split in the small block camp and attempted to highlight and exploit it, just as the small blockers had done with potential splits in the large blocker camp. Instead, they mostly ignored the UASF. Towards the end of May, I spoke to one of the most prominent large blockers to discuss the UASF. He explained to me that he did not believe Gregory Maxwell really opposed the UASF; it was just his “normal lies and games”, he explained. It seemed that, by this point, the level of mistrust was so high that, combined with a very different understanding of how Bitcoin works, the large blockers were almost unable to tell what the small blockers were up to. It seemed to me that the small blockers had finally made their move and left an opening. If this war was to continue, the large blockers needed to react and exploit the opening, but they did not appear to understand what to do.
The large blockers also seemed genuinely concerned by the UASF. At the start of the war, they had greatly underestimated the size and influence of the small blocker camp, expecting an easy victory in the war. The large blockers often derided the small blockers as insignificant and naive. At this point, however, after three failed hardfork attempts – defeats which took them by surprise – most large blockers now appeared to overestimate the power and influence of the small blockers. In reality, the smaller blockers were far less powerful than they thought; the main reason for their success in defeating the large blockers up until this point was their superior understanding of Bitcoin, tactical blunders from the large blockers themselves and Bitcoin’s inherent resilience against contentious protocol rule changes. Due to an incomplete understanding, at least to some extent, the large blockers instead blamed their defeats on shrewd manoeuvring from the cunning and powerful small blockers. Therefore, the large blockers seemed to revere the small blockers and many of them feared the UASF, which they saw as the next big play by the small blockers. They were blind to the tactical opportunity it gave them. An opportunity they therefore failed to exploit.
At this point, the UASF had almost no support from the cryptocurrency exchanges. Most exchange CEOs I spoke to at the time either expected the UASF to fail, or they did not even know what it was. The level of economic support for the UASF outside of the small block camp was tiny. This was a risky move from the small blockers, and it seemed likely to me they may be left behind on a lower proof-of-work blockchain not regarded as Bitcoin. What the large blockers should have considered was the release of a “counter-softfork”, which banned the BIP 148 flags in the blocks. This chain would likely have the economic majority and the majority hashrate. This counter UASF would have also ensured it was a clean split, with the non-UASF chain no longer vulnerable to wipeout. However, this is simply not how the large blockers thought. They wanted a hardfork blocksize increase; they didn’t have the expertise or desire to implement a counter-softfork.
Jihan Wu appeared extremely angered by the UASF campaign. To him, a UASF undermined the narrative he had built that miners had significant influence over the protocol rules. On May 28, 2017, Jihan Tweeted with the tag #UASF alongside a picture of the murder victims of the Jonestown massacre. The anger and fear he had for the UASF appeared to be strong.
In mid-June, the exchange ViaBTC, which was linked to Jihan Wu, listed BIP 148 futures on the platform. This was clearly an idea taken from Bitfinex a few months earlier and their Bitcoin Unlimited token. It was an attempt to undermine BIP 148, just like the Bitfinex futures had undermined Bitcoin Unlimited. However, the contract terms were quite odd and somewhat rigged. If one invested in the BIP 148 token, you could only get a payout if both the BIP 148 token chain and the original rules chain (the non-BIP 148 chain) continued to exist. This is clearly not what BIP 148 backers wanted. They believed the original rules chain would cease to exist, in particular because the original rules chain was vulnerable to wipeout from the BIP 148 chain. Therefore, investing in a token dependent on the continued existence of the non-BIP 148 chain made little sense for BIP 148 supporters. The contract failed to achieve any significant trading volume and it did not appear to undermine the BIP 148 cause.
On June 14, 2017, Bitmain published a blog which outlined a contingency plan in response to the UASF:
BIP148 is very dangerous for exchanges and other business. There is no sign of significant economic support behind BIP148 and when it is alive as a blockchain, the economic support would most likely be based on speculation. The mining activity behind a UASF chain may stop without notice, and investors who buy in the BIP148 propaganda may lose all their investment. Any exchanges that decide to support a UASF token after the forking point need to consider the stagnation risk attached to it.
…
The UASF chain presents a risk of the original chain being wiped out. If there is no contingency plan, all economic activity that occurs on the original chain after the UASF forking point will face the risk of being wiped out. This has disastrous consequences for the entire Bitcoin ecosystem. UASF is an attack against users and enterprises who disagree with activating SegWit right now without a block size increase, which is a very important clause in the Hong Kong agreement made by the global Bitcoin community in February, 2016.
…
This plan is for a User Activated Hard Fork, or UAHF
…
Bitmain will mine the chain for a minimum of 72 hours after the BIP148 forking point with a certain percentage of hash rate supplied by our own mining operations. Bitmain will likely not release immediately the mined blocks to the public network unless circumstances call for it, which means that Bitmain will mine such chain privately first. We intend in the following situations to release the mined blocks to the public (non-exhaustive list):
The BIP148 chain is activated and subsequently gains significant support from the mining industry, i.e. after BIP148 has already successfully split the chain;
Market sentiment for a big block hard fork is strong, and economic rationale drives us to mine it, for example, the exchange rate is in favor of big-block Bitcoin;
If there is already a significant amount of other miners mining a big-block chain publicly and we decide that it is rational for us to mine on top of that chain. In such a case, we will also consider joining that chain and give up our privately mined chain so that the public UAHF chain will not be under the risk of being reorganized.
Once Bitmain starts to mine a UAHF chain publicly, we will mine it persistently and ignore short-term economic incentives. We believe a roadmap including the option to adjust block size will serve users better so we expect it to attract a higher market price in the long term.
The Bitmain plan was to activate a hardfork at around the same time as the UASF was due to activate, which would increase the blocksize limit. The hardfork plan even included a blocksize limit increase schedule. The blocksize limit would start at 2 MB in August 2017, then gradually increase in additional, pre-determined steps to 16.8 MB by August 2019. This plan appeared to be some kind of threat, aimed at the UASF proponents. The large blockers would get their new hardfork chain, something they perceived the small blockers were desperately hoping to prevent them from achieving.
Although Jihan did not appear to realise it, this plan was actually incredibly favourable to the UASF cause, because it meant that the UASF chain was more likely to obtain the proof-of-work lead over the original rules chain, since Bitmain indicated it had planned to move away to an alternative hardfork chain. In addition to this, Bitmain planned to mine the new hardfork chain in secret, for a 72-hour period. This was a very bad move, if the plan was for the hardforked chain to gain any traction, since nobody would be able to see the chain, or run a client supporting it, and exchanges would not be able to support the token. It is unclear what had motivated this blogpost. It appears as if Jihan was extremely angry and quickly developed a plan designed to frustrate his opponents, but had not thought it through at all. What Jihan should have announced, of course, is that, in the event of the UASF, he would keep mining the original rules chain and meanwhile arranged a counter UASF. However, this would have left him stuck with 1 MB blocks, so maybe he felt he did not have much of an option.
Within the Dragons’ Den, the small blockers celebrated the Bitmain blogpost with delight, as it almost assured them of complete victory. However, some took a more cautious tone, “just because Jihan says that he will do something stupid, don’t assume he will”. It seemed to me that this more cautious stance was the correct approach. As August 1 got closer, Jihan would very likely realise that his plan made no sense and pivot to something else more effective.
As the UASF deadline approached, the large blockers were on the back foot as they did not know how to effectively respond. It was almost as if they had no viable options left. It looked like the large blockers were finally heading for a humiliating defeat, and they knew it. They needed some kind of face-saving exercise.