비트코인 개발 철학: 업그레이드

이 기사는 기계로 번역되었습니다
원문 표시

저자: 칼레 로젠바움 & 린네아 로젠바움

출처: https://bitcoindevphilosophy.com/#upgrading

이전 기사는 여기에서 확인하세요.

업그레이드 배너

비트코인을 안전하게 업그레이드하는 것은 매우 어렵습니다. 이러한 변경 사항(내용이 확정된 경우에도)을 적용하는 데는 수년이 걸릴 수 있습니다. 이 장에서는 비트코인 ​​업그레이드와 관련된 일반적인 용어들을 살펴보고, 과거의 업그레이드 사례들과 그로부터 얻을 수 있는 교훈들을 알아보겠습니다. 마지막으로 "블록체인 분할"과 그에 따른 비용 및 리스크 에 대해 논의할 것입니다.

이 장을 더 잘 이해하려면 데이비드 하딩의 " 조화와 부조화 "에 대한 글부터 읽어보는 것이 좋습니다.

비트코인 전문가들은 종종 "합의(consensus)"라는 단어를 사용하는데, 이는 추상적이고 몇 마디로 설명하기 어렵습니다. 그러나 "합의"의 어원은 "조화롭게 노래하다"라는 뜻의 라틴어 "concentus"입니다.[1] 따라서 "비트코인의 합의" 대신 "비트코인의 조화"라고 논의할 수 있습니다.

조화가 바로 비트코인이 작동하는 핵심입니다. 수천 개의 풀 노드가 독립적으로 작동하며, 수신하는 거래의 유효성을 검증하여 비트코인 ​​원장의 상태에 대한 조화로운 합의를 도출합니다. 이 과정에서 어느 노드 운영자도 다른 노드를 신뢰하지 않습니다. 마치 합창단의 모든 구성원이 같은 노래를 동시에 부르는 것과 같습니다. 각자 따로 노래할 때보다 훨씬 더 아름다운 선율을 만들어냅니다.

비트코인의 조화로운 결과는 도둑으로부터 안전할 뿐만 아니라(개인 키를 안전하게 보관하는 한), 끝없는 인플레이션, 대규모의 표적 몰수로부터도 안전하며, 기존 금융 시스템의 관료주의적 수렁에서 벗어난 안전한 시스템이라는 점입니다.

— 데이비드 하딩, 조화와 부조화

이 장에서는 비트코인을 불화 없이 업그레이드하는 방법에 대해 논의합니다. 조화, 즉 합의를 유지하는 것은 실제로 비트코인 ​​개발에서 가장 큰 과제 중 하나입니다. 업그레이드 메커니즘에는 많은 세부 사항이 있으며, 이는 과거 업그레이드 사례를 연구함으로써 가장 잘 이해할 수 있습니다. 따라서 이 장에서는 역사적 사례에 상당한 분량을 할애합니다. 이를 위해 먼저 몇 가지 유용한 용어를 살펴보겠습니다.

5.1 단어

위키피디아에 따르면 " 하위 호환성"이란 이전 소프트웨어가 최신 소프트웨어에서 생성된 데이터를 처리하고 최신 소프트웨어가 이해할 수 없는 부분을 무시할 수 있는 기능을 의미합니다.

이전 버전을 사용하여 컴파일된 제품이 동일 표준의 이후 버전을 위해 설계된 입력을 이해할 수 없는 부분을 무시하고 "원활하게" 처리할 수 있다면, 해당 표준이 "전방 호환성"을 지원한다고 말합니다.

— 하위 호환성, 위키백과

반대로, " 하위 호환성 "이란 이전 소프트웨어의 데이터도 최신 소프트웨어에서 사용할 수 있음을 의미합니다. 변경 사항이 상위 호환성과 하위 호환성을 모두 만족하는 경우, 해당 변경 사항을 "완전 호환"이라고 합니다.

비트코인 합의 규칙 변경이 이전 버전과 완벽하게 호환되는 경우, 이를 " 소프트 포크 "라고 합니다. 이는 비트코인을 업그레이드하는 가장 일반적인 방법이며, 이 장의 뒷부분에서 그 이유에 대해 자세히 살펴보겠습니다. 반대로 비트코인 ​​합의 규칙 변경이 이전 버전과는 호환되지만 이후 버전과는 호환되지 않는 경우, 이를 " 하드 포크 "라고 합니다.

포크 기술적인 개요 포크 *Grokking Bitcoin*의 11장을 참조하십시오. 이 장에서는 용어를 설명하고 업그레이드 메커니즘을 자세히 다룹니다. 필수 사항은 아니지만, 읽기 전에 이 장을 훑어보는 것을 권장합니다.

5.2 과거 업그레이드

오늘날의 비트코인(프로토콜)은 첫 번째 블록이 생성되었을 때와는 다릅니다. 수년에 걸쳐 수많은 업그레이드가 이루어졌습니다. 2017년, 에릭 롬브로조는 브레이킹 비트코인 ​​컨퍼런스 에서 비트코인의 다양한 업그레이드 메커니즘을 설명하면서, 이러한 메커니즘 자체도 여러 차례 변화를 겪었다고 지적했습니다. 그는 심지어 사토시 나카모토 하드 포크 통해 비트코인을 업그레이드했던 과정까지 설명했습니다.

사실 사토시 나카모토 하드 포크 이용해 비트코인을 업그레이드한 적이 있는데, 이는 매우 위험한 접근 방식이기 때문에 다시는 그런 방식을 사용하지 않을 것입니다. [ 757f076 ] Git 커밋 설명을 보면, 이 커밋은 makefile.unix wx-config를 0.3.6 버전으로 롤백하는 것이라고만 적혀 있습니다. 그게 전부입니다. 그는 이것이 파괴적인 변경이라는 사실을 전혀 언급하지 않았습니다. 사실상 이 사실을 숨긴 것입니다. 그는 또한 비트코인 ​​토크 포럼에 글을 올려 모든 사용자에게 가능한 한 빨리 0.3.6 버전으로 업그레이드할 것을 촉구했습니다. 즉시 업그레이드할 수 없다면 비트코인 ​​노드를 먼저 종료하는 것이 좋다고 했습니다. 위 정보를 바탕으로 판단했을 때, 그가 왜 이런 방식을 택했는지 이해할 수 없습니다. 그는 동시에 같은 코드에 최적화, 버그 수정 및 기타 개선 사항을 추가하기로 결정했습니다.

— 에릭 롬브로조, "비트코인을 파괴하지 않고 합의 규칙을 변경하는 방법", 브레이킹 비트코인 ​​컨퍼런스(2017)

롬브로조는 의도적이든 아니든 이 하드 포크 스크립트 오퍼코드 OP_NOP1 ~ OP_NOP10 을 도입함으로써 향후 소프트 포크 의 가능성을 열었다고 지적합니다. 이 코드 변경에 대해서는 9.2.1절 에서 자세히 살펴보겠습니다. 현재까지 이 오퍼코드는 BIP65 (OP_CHECKLOCKTIMEVERIFY)와 BIP113 (OP_SEQUENCEVERIFY)이라는 두 개의 소프트 포크 에서 사용되었습니다. (역자 주: 이 두 오퍼코드는 각각 스크립트에서 절대 및 상대 시간 잠금을 검증하는 데 사용됩니다.)

롬브로조는 또한 (2017년까지) 수년에 걸쳐 업그레이드 메커니즘이 어떻게 변화해 왔는지 간략하게 설명합니다. 그 이후로는 "Taproot"라는 단 하나의 주요 업그레이드만 배포되었습니다(자세한 내용은 5.2.3절 참조). 이 길고 다소 복잡한 활성화 과정을 통해 우리는 비트코인 ​​업그레이드 메커니즘에 대해 더 깊이 이해할 수 있었습니다.

5.2.1 "격리 감시" 업그레이드

세그윗 업그레이드 이전의 모든 업그레이드는 어느 정도 순조롭게 진행되었지만, 이번 업그레이드는 달랐습니다. 세그윗 활성화 코드가 공개되었을 때(2016년 10월), 대다수의 비트코인 ​​사용자가 이를 지지하는 것처럼 보였지만, 어떤 이유에서인지 채굴자들은 업그레이드에 대한 지지를 표명하지 않았고, 이로 인해 활성화가 지연되었으며 해결책이 보이지 않았습니다.

비트코인 매거진 웹사이트에 게재된 아론 반 위르둠의 기사 " 분리된 증인으로 가는 긴 여정 "에서 그는 파란만장했던 이 여정을 자세히 설명합니다. 먼저 분리된 증인 업그레이드가 무엇이며, 비트코인 ​​블록 크기 제한 변경 논쟁에 어떻게 휘말리게 되었는지 설명합니다. 그런 다음 반 위르둠은 궁극적으로 분리된 증인이 활성화되도록 이끈 주요 사건들을 개괄적으로 설명합니다. 핵심 요소는 사용자 "Schaolinfry"가 제안한 " 사용자 활성화 소프트 포크 (UASF)"라는 업그레이드 메커니즘입니다.

샤올린프라이는 대안으로 사용자 주도 소프트 포크(UASF)를 제안했습니다. 해시 해시레이트 따라 결정되는 방식 대신, 사용자들이 미리 정해진 미래 시점부터 활성화 신호를 보내는 "활성화 신호일"을 설정하는 것입니다. 이러한 UASF가 대다수 경제 주체에 의해 시행된다면, 대부분의 채굴자들이 소프트 포크 따르거나 활성화하도록 설득할 수 있을 것입니다.

— 아론 반 위르둠, "고립된 증언을 향한 긴 여정", 비트코인 ​​매거진(2017)

또한, 반 위르둠은 샤올린프라이가 비트코인 ​​개발자 메일링 리스트에 올린 이메일을 인용했습니다. 샤올린프라이는 해당 이메일에서 채굴자에 의한 소프트 포크 에 반대 의사를 표명하고 이 활성화 방식의 여러 문제점을 나열했습니다.

첫째, 활성화 후 해시 해시레이트 정직하게 검증할 수 있도록 신뢰해야 합니다. 그러나 BIP66 소프트 포크 에서는 해시 해시레이트 의 95%가 준비되었다고 표시했지만 실제로는 절반 정도가 업그레이드된 규칙을 검증하지 않고 잘못된 블록을 채굴했습니다[1].

둘째로, 채굴자 신호에는 자연스러운 거부 메커니즘이 있습니다. 소량의 해시 해시레이트 만으로도 노드의 업그레이드 활성화 의도를 거부하여 누구도 업그레이드할 수 없게 만들 수 있습니다. 지금까지 소프트 포크 소수의 채굴 풀만이 유효한 블록을 생성하는 비교적 중앙 집중화된 채굴 생태계를 활용해 왔습니다. 보다 탈중앙화 채굴 생태계로 나아갈수록, 대다수의 업그레이드를 거부할 수 있는 "업그레이드 관성"에 점점 더 어려움을 겪을 수 있습니다.

—— Shaolinfry, Bitcoin-dev 메일링 리스트 (2017)

샤올린프라이는 또한 채굴자 신호에 대한 흔한 오해를 지적합니다. 채굴자 신호가 프로토콜 업그레이드 여부를 결정하는 도구로 여겨지는 경우가 많은데, 실제로는 업그레이드를 조율하는 데 도움이 되는 행동이라는 것입니다. 이러한 오해 때문에 채굴자들은 소프트 포크 에 대한 자신의 의견을 공개적으로 표명해야 한다는 의무감을 느끼기도 하는데, 이는 마치 그렇게 함으로써 자신의 제안에 신뢰성을 더하는 것처럼 생각하기 때문입니다.

UASF의 제안은 간단히 말해 노드들이 특정 새 규칙을 적용하기 시작하는 "신호일"을 설정하는 것입니다. 이렇게 하면 채굴자들은 업그레이드를 위해 집단적인 조치를 취할 필요 없이, 충분한 블록이 업그레이드 준비 상태를 나타냈다면 신호일 이전에 업그레이드를 활성화 할 수 있습니다 .

제 생각에는 두 가지 방식의 장점을 결합하는 것이 좋을 것 같습니다. 사용자 활성화 소프트 포크 활성화 전에 비교적 긴 준비 기간이 필요하므로, BIP9를 활용하여 해시레이트 기반 활성화(더 빠름) 옵션과 신호일 활성화(더 느림) 옵션을 함께 제공할 수 있습니다. 두 경우 모두 BIP9의 경고 시스템을 활용할 수 있습니다. 이 변경 사항은 비교적 간단합니다. "활성화 시간" 매개변수를 추가하여 BIP9 배포 시간 초과일 이전에 소프트 포크 의 BIP9 상태를 "LOCKED_IN"으로 변경하면 됩니다.

—— Shaolinfry, Bitcoin-dev 메일링 리스트 (2017)

이 아이디어는 상당한 관심을 끌었지만, 만장일치의 지지를 얻지는 못했으며, 블록체인 네트워크 분열을 초래할 수 있다는 우려를 낳았습니다. 아론 반 위르둠의 기사는 이러한 논란들이 제임스 힐리어드가 제안한 비트코인 ​​업그레이드 제안(BIP)인 BIP91을 통해 어떻게 최종적으로 해결되었는지 설명합니다.

힐리어드는 모든 것을 호환 가능하게 만드는 더 복잡하지만 더 영리한 해결책을 제안했습니다. 그것은 Bitcoin Core 개발팀이 제안한 분리된 증인(Segregated Witness) 업그레이드, 사용자가 활성화할 수 있는 소프트 포크 인 BIP148, 그리고 "뉴욕 합의" 활성화 메커니즘입니다. 그의 BIP91은 적어도 분리된 증인이 활성화되는 동안에는 비트코인이 분열되는 것을 막을 수 있습니다.

— 아론 반 위르둠, "고립된 증언을 향한 긴 여정", 비트코인 ​​매거진(2017)

여기에는 소위 "뉴욕 합의"와 같은 몇 가지 복잡한 요소가 포함되어 있으며, BIP는 이러한 요소 또한 고려해야 합니다. 독자 여러분께서는 이 이야기의 흥미로운 세부 사항들을 이해하기 위해 반 위르둠의 기사를 전체적으로 읽어보시기를 권합니다.

5.2.2 분리된 증인 업그레이드 후 논의

Segregated Witness 업그레이드가 활성화된 후, 활성화 메커니즘에 대한 논의가 계속되고 있습니다. Eric Lombrozo가 Breaking Bitcoin 발표에서 지적 했고 Shaolinfry도 언급했듯이(위 5.2.1절 참조), 채굴자가 활성화하는 소프트 포크 이상적인 업그레이드 메커니즘이 아닙니다.

때때로 우리는 비트코인 ​​프로토콜에 더 많은 기능을 추가하고 싶어합니다. 이는 우리가 스스로에게 던져야 할 중요한 철학적 질문입니다. 다음 업그레이드에 UASF를 사용해야 할까요? 아니면 하이브리드 방식을 사용해야 할까요? 마이너 자체 활성화(이 방식)는 시대에 뒤떨어졌습니다. 우리는 더 이상 BIP9를 사용하지 않을 것입니다.

— 에릭 롬브로조, "비트코인을 파괴하지 않고 합의 규칙을 변경하는 방법", 브레이킹 비트코인 ​​컨퍼런스(2017)

2020년 1월, 맷 코랄로는 비트코인 ​​개발자 메일링 리스트에 이메일을 보내 향후 소프트 포크 배포 메커니즘에 대한 논의를 시작했습니다. 그는 업그레이드에 중요하다고 생각하는 다섯 가지 목표를 제시했습니다. 데이비드 하딩은 비트코인 ​​옵테크 주간 보고서 에서 이 목표들을 다음과 같이 요약했습니다.

  1. 합의 규칙 변경안이 심각한 반대에 부딪힐 경우, 회사는 업그레이드를 포기할 수 있는 권한을 가지고 있습니다.
  2. 업그레이드된 소프트웨어가 출시되기 전까지 충분한 협의 시간이 확보되어 대다수의 경제 거점들이 이러한 규칙을 시행할 수 있도록 업그레이드할 수 있습니다.
  3. 네트워크의 해시레이트는 변경 전후(및 전환 과정 중)에 거의 동일하게 유지될 것으로 예상됩니다.
  4. 가능한 한 새로운 규칙에 위배되는 블록 생성을 방지하십시오. 이러한 무효 블록은 업그레이드를 하지 않는 노드와 SPV 클라이언트의 블록 확인 통계에 오류를 발생시킬 수 있습니다.
  5. 문제 발생 시 해결 메커니즘이 악용되거나, 알려진 문제 없이 예상되는 사태 악화를 지연시키는 데 사용되지 않도록 해야 합니다.

——데이비드 하딩, 비트코인 ​​옵테크 뉴스레터 80호(2020)

Corallo는 채굴자가 활성화하는 소프트 포크 와 사용자가 활성화하는 소프트 포크 결합하는 메커니즘을 제안했습니다.

따라서 보다 구체적으로 말씀드리자면, 위의 목표들을 적절히 균형 있게 충족시키면서 올바른 선례가 될 수 있는 활성화 방법은 다음과 같다고 생각합니다.

1) 표준 BIP 9 배포 프로세스는 활성화를 위한 1년의 기간을 두고 있으며, 이를 위해서는 채굴기의 95%가 준비되어야 합니다.

2) 1년 이내에 활성화가 실패할 경우, 6개월간의 유예 기간이 설정되며, 이 기간 동안 커뮤니티는 활성화 실패 사유를 분석하고 논의할 수 있습니다.

3) 합리적인 경우, 초기 배포 소프트웨어 릴리스에서 사용자가 24개월의 기간 내에 BIP 8 배포 프로세스를 선택하여 시그널 데이 활성화를 용이하게 할 수 있도록 간단한 명령줄 명령/구성 매개변수를 제공합니다(동시에 새로운 Bitcoin Core 이 태그가 자동으로 활성화됩니다).

이는 보다 표준화된 활성화 방법을 위한 매우 긴 시간적 여유를 제공합니다. 그러나 목표 3을 달성하면서 목표 5 또한 만족시키려면 훨씬 더 긴 시간적 여유가 필요합니다. 비트코인 ​​개발은 경주가 아닙니다. 필요하다면 42개월을 기다리는 것은 나중에 후회할 부정적인 선례를 만들지 않도록 보장해 줍니다.

— 맷 코랄로, "현대적인 소프트 포크 활성화 접근 방식", 비트코인 ​​개발자 메일링 리스트(2020)

중국어 번역

5.2.3 "Taproot" 업그레이드 및 "빠른 체험판"

Taproot이 2020년 10월 배포 준비를 마쳤을 때, 즉 합의 규칙과 관련된 모든 기술적 세부 사항이 구현되고 커뮤니티 내에서 널리 수용되었을 때, 배포 방법에 대한 논의가 본격적으로 시작되었습니다. 그 이전에는 이러한 논의가 비교적 조용하게 진행되었습니다.

활성화 메커니즘에 관한 대량 제안들이 등장하기 시작했고, 데이비드 하딩은 비트코인 ​​위키에서 이러한 제안들을 요약했습니다 . 그의 글에서 그는 당시 유연성을 높이기 위해 변경되었던 BIP8의 몇 가지 특징을 설명했습니다.

이 문서가 작성될 당시 BIP8은 2017년의 경험을 바탕으로 만들어졌습니다. BIP 9+148 이후 주요 변경 사항 중 하나는 강제 활성화 시간 측정 기준이 중간 시간 경과가 아닌 블록 높이로 변경된 것입니다. 두 번째 주요 변경 사항은 강제 활성화가 초기 배포 시 소프트 포크 활성화 매개변수를 설정할 때 선택할 수 있는 부울 매개변수가 되었으며, 이후 배포에서도 업데이트할 수 있게 된 것입니다.

필수 활성화 기능이 없는 BIP8은 타임아웃 및 지연 시간이 있는 버전 비트 메커니즘을 사용하는 BIP9 와 매우 유사합니다. 주요 차이점은 BIP8은 블록 높이를 사용하는 반면 BIP9는 과거 시간의 중앙값을 사용한다는 것입니다. 이 설정으로 인해 업그레이드 시도가 실패할 수 있지만 다시 시도할 수 있습니다.

의무 활성화 기능을 갖춘 BIP8은 궁극적으로 모든 블록이 해당 규칙을 준수해야 하는 의무 신호 기간을 갖게 될 것입니다. 즉, 모든 블록은 소프트 포크 활성화할 준비가 되었음을 나타내야 합니다. 이를 통해 의무 활성화 기능이 없는 이전 배포 버전에서도 동일한 소프트 포크 활성화될 수 있습니다. 다시 말해, 이미 출시된 소프트웨어 버전 x에 의무 활성화 메커니즘이 없지만, 이후에 출시된 버전 y에 의무 활성화 메커니즘이 있고, 동일한 기간 내에 채굴자들이 준비 상태를 표시하도록 성공적으로 강제하는 경우, 두 버전의 소프트웨어는 동시에 새로운 합의 규칙을 적용하게 됩니다.

수정된 BIP8 제안은 BIP8과 유사해 보이는 다른 아이디어들을 표현할 수 있을 만큼 유연합니다. 이는 다양한 제안들을 구별하는 공통 요소를 제공합니다.

— 데이비드 하딩, 탭루트 활성화 제안, 비트코인 ​​위키(2020)

이 시점부터 논의는 매우 격렬해졌는데, 특히 lockinontimeout true 로 설정해야 하는지(즉, 사용자가 활성화할 수 있는 소프트 포크 허용하는 것, 또는 하딩이 "강제 활성화가 있는 BIP8"이라고 부르는 것) 아니면 false 로 설정해야 하는지(즉, 채굴자가 활성화할 수 있는 소프트 포크 허용하는 것, 또는 하딩이 "강제 활성화가 없는 BIP8"이라고 부르는 것)에 대한 논쟁이 집중되었습니다.

제시된 제안들 중에는 "어떻게 되는지 지켜보자"라는 제안이 있었다. 여러 가지 이유로 이 제안은 몇 달이 지나서야 비로소 주목을 받기 시작했다.

7개월 동안 논의가 계속되었지만, 어떤 배포 메커니즘을 사용할지에 대한 폭넓은 합의에 도달하는 것은 불가능해 보였습니다. 사람들은 크게 두 진영으로 나뉘었는데, 일부는 lockinontimeout=true (UASF 진영)를 선호했고, 다른 일부는 lockinontimeout=true ("일단 시도해보고 실패하면 다른 방법을 찾자" 진영)를 선호했습니다. 어느 쪽도 압도적인 지지를 얻지 못했기 때문에 논쟁은 제자리걸음을 하며 진전을 이루지 못했습니다. 논의의 일부는 온라인 채팅방(IRC)의 "##taproot-activation" 채널에서 이루어졌습니다. 그러나 2021년 3월 5 일, 상황이 바뀌었습니다.

 06:42 < harding> roconnor: 有人提议BIP8(3m, false)(为期3 个月,不设强制激活的BIP8)吗?我之前提过这个问题,但我没看到有人回答。 [...]06:43 < willcl_ark_> 应该有,我自己就在想,与此相比,隔离见证的激活机制是非常直接的:直接是LOT=false ,要是没通过,那就来一次UASF 。06:43 < maybehuman> 有趣。如果我没有记错,在这个频道刚刚创建的时候,“Let's see what happens” (就是false,3m)是一个热门的选择。06:44 < roconnor> harding: 我支持。我不知道这有没有价值。根据我对其他人的顾虑的理解,基本上,我认为这会是一个能够得到广泛接受的选择。06:44 < willcl_ark_> maybehuman: 因为每个人都想要这个升级,甚至矿工们也说自己能在大约两周内升级(至少f2pool 是这么说的)06:44 < roconnor> harding: BIP8(3m,false) 加上一个延长的锁定期。06:45 < harding> roconnor: 哦,不错。从我7 个月前笫一次在wiki 上总结这些选项以来,这是我最喜欢的选项。06:45 <@michaelfolkson> UASF 无法发布(true,3m),但是Core 可以发布(false, 3m)06:45 < willcl_ark_> harding: 对我来说它真的像是一个好方法。*如果* 它失败了,那我们可以先想想这是为什么,就不用浪费太多时间。

—— #taproot-activation IRC 로그

"일단 어떻게 되는지 보자"라는 접근 방식이 결국 사람들의 마음을 사로잡은 것으로 보입니다. 짧은 기간 동안만 진행되는 특성 때문에 "신속 시험"이라고 불리게 된 이 과정은 데이비드 하딩이 비트코인 ​​개발자 메일링 리스트에 올린 이메일을 통해 더 넓은 커뮤니티에 설명되었습니다.

이 제안의 초기 버전은 200일 전에 작성되었으며[3] taproot의 기본 코드는 140일 전에 Bitcoin Core 소프트웨어에 병합되었습니다[4]. 만약 우리가 코드가 병합된 시점과 동일한 시점에서 "빠르게" 시작한다면(이는 비현실적입니다), 우리는 두 달도 안 되어 taproot를 활성화하거나 한 달 전에 다시 활성화하려고 시도했을 것입니다.

그러나 우리는 1년 전에 Segregated Witness 이후 활성화 계획에 대해 논의하기 시작한 이후로 계속 논쟁을 벌여 왔지만, 제가 생각하는 널리 수용 가능한 해결책에 더 가까워진 것 같지는 않습니다[5]. 저는 "빠른 해결책"이 논쟁을 빨리 끝내거나(활성화가 성공한다면 지금까지의 논쟁이 끝날 것입니다) 향후 근본적인 활성화 제안을 뒷받침할 수 있는 실제 데이터를 제공하는 방법이라고 생각합니다.

데이비드 하딩, 비트코인 ​​개발자 메일링 리스트

이 활성화 메커니즘은 두 달간의 개선 과정을 거쳐 비트코인 ​​코어 버전 0.21.1 에 포함되었습니다. 채굴자들은 빠르게 업그레이드 준비 상태를 나타내며 배포 상태를 LOCKED_IN 으로 변경했습니다. 이후 잠잠했던 "Taproot" 규칙은 2021년 11월 중순, 블록 높이 709632 부터 활성화되었습니다.

5.2.4 향후 업그레이드 메커니즘

최근 소프트 포크(SegWit 및 Taproot)에서 발생한 문제들을 고려할 때, 향후 업그레이드가 어떻게 배포될지는 불분명합니다. Taproot 배포에는 Speedy Trial이 사용되었지만, 이는 UASF와 MASF 진영 간의 격차를 해소할 수 있었기 때문이지, 우리가 알고 있는 최상의 배포 메커니즘이라서 사용된 것은 아닙니다.

5.3 리스크

포크 포크 포크 든, 사용자 주도 포크든 채굴자 주도 포크든, 모든 포크에는 활성화 기간 동안 블록체인 네트워크가 분열될 리스크 항상 존재합니다. 몇 블록에 걸쳐 지속되는 분열은 비트코인과 그 가격에 대한 정서 에 심각한 악영향을 미칠 수 있습니다. 하지만 무엇보다 중요한 것은 "비트코인은 무엇인가?"라는 질문에 대한 엄청난 혼란을 야기한다는 점입니다. 비트코인은 이 체인에 속하는가, 아니면 저 체인에 속하는가?

소프트 포크 활성화하는 사용자의 리스크 대부분의 해시 해시레이트 새로운 규칙을 지지하지 않더라도 새로운 규칙이 적용될 수 있다는 점입니다. 이는 대다수의 해시 해시레이트 새로운 규칙을 채택할 때까지 장기간의 블록체인 분할로 이어질 수 있습니다. 분할 이후 채굴자들이 이미 기존 규칙을 사용하는 온체인 블록을 채굴했다면, 해당 블록을 새로운 규칙을 사용하는 온체인 으로 이전하는 것이 어려울 수 있습니다. 하지만 주목할 만한 사례가 있습니다( 섹션 9.2.3 참조). 2013년 3월, 비트코인 ​​네트워크는 예상치 못한 하드 포크 로 인해 장기간의 블록체인 분할을 경험했지만, 예상과는 달리 두 주요 채굴 풀은 이미 채굴한 브랜치를 포기하고 합의를 재구축하기로 결정했습니다.

반면, 채굴자들이 소프트 포크 활성화할 때의 리스크 잘못된 신호를 보낼 수 있다는 점입니다. 즉, 실제로 변경을 지지하는 해시 해시레이트 의 점유비율 보이는 것보다 적을 수 있다는 뜻입니다. 만약 변경을 지지하는 해시 해시레이트 과반수를 차지하지 못한다면, 이전 장에서 설명한 것과 유사한 장기적인 체인 분할이 발생할 가능성이 있습니다. 이러한 문제, 또는 적어도 유사한 문제가 BIP66 배포 과정에서 발생했지만( 9.2.4절 참조), 6개 블록 내에 해결되었습니다.

5.3.1 분할 비용

지미 손은 파리에서 열린 브레이킹 비트코인 ​​컨퍼런스에서 하드 포크 와 관련된 비용에 대해 논의했지만, 그가 언급한 비용 중 상당수는 소프트 포크 실패로 인한 체인 분할에도 적용됩니다. 그는 " 부정적 외부 효과 "라는 개념을 언급했는데, 이는 당신의 행동으로 인해 다른 사람들이 지불해야 하는 비용을 의미합니다.

'부정적 외부효과'의 대표적인 예는 공장입니다. 정유 공장처럼 경제에 이로운 재화를 생산하는 생산적인 시설일 수도 있지만, 오염과 같은 부정적 외부효과도 발생시킵니다. 이는 단순히 모두가 비용을 부담해야 하는 문제가 아닙니다. 오염을 정화하거나 감수하는 것 중 하나를 선택해야 합니다. 공장에 더 많은 노동자가 필요해지면서 교통량이 증가하는 등 2차, 3차 파급 효과도 발생합니다. 공장 주변에는 야생 동물도 서식할 수 있습니다. 하지만 때로는 모든 사람이 비용을 부담하는 것은 아닙니다. 주변 도로를 이용했던 사람들이나 공장 주변에 서식하는 야생 동물처럼 일부 사람들만이 피해를 입기도 합니다.

— 지미 송, "하드 포크 의 사회적 비용", 브레이킹 비트코인 ​​컨퍼런스(2017)

비트코인과 관련하여, 그는 부정적 외부 효과의 예로 Bitcoin Cash (Bcash)를 사용할 것입니다. Bcash는 2017년 브레이킹 비트코인 ​​컨퍼런스 직전에 만들어진 비트코인의 하드 포크 입니다. 송은 또한 하드 포크 의 일회성 비용과 영구적 비용을 구분합니다.

그는 일회성 비용의 여러 사례를 들면서 거래소 로 인해 발생하는 비용도 언급했습니다.

시장에는 수많은 거래소 있으며, 모두 대량 일회성 비용을 부담해야 합니다. 무엇보다도, 상황을 예측할 수 없기 때문에 입출금 서비스를 1~2일 동안 중단해야 하는 경우가 많습니다. 많은 거래소 Bcash에 대한 사용자 수요 증가로 인해 콜드 스토리지를 활용해야 했습니다. 이는 거래소의 수탁자 의무이며, 반드시 이행해야 합니다. 또한 새로운 소프트웨어에 대한 감사 도 필수적입니다. 저희 itbit도 마찬가지였습니다. Bcash를 사용하고 싶었지만, 어떻게 해야 할지 막막했습니다. electron cash 소프트웨어를 다운로드해야 할까요? 악성코드가 있을까요? 따라서 감사 필요했습니다. 실제로 작동하는지 확인하는 데 10일 정도 걸렸습니다. 그 후, 일회성 출금만 허용할지 아니면 해당 통화를 정식으로 상장할지 결정해야 했습니다. 거래소 에서 가맹점들이 새로운 통화를 거래하도록 하는 것은 간단한 일이 아닙니다. 콜드 스토리지, 서명, 입금 및 출금 등 전체 과정을 거쳐야 합니다. 또는 사용자에게 Bcash를 일회성으로 반환하는 방식을 택할 수도 있지만, 이 역시 나름의 어려움이 있습니다. 마지막으로, 사용자가 출금할 수 있도록 하든 새로운 통화를 등록하든, 일회성 출금만 제공하더라도 해당 통화를 운영하기 위한 새로운 인프라가 필요합니다. 출금된 금액을 사용자에게 반환할 방법도 있어야 하고, 임시 알림 기능도 필요하겠죠? 시간이 촉박하고 긴급한 상황입니다.

— 지미 송, "하드 포크 의 사회적 비용", 브레이킹 비트코인 ​​컨퍼런스(2017)

그는 또한 판매자, 결제 처리업체, 지갑 소프트웨어, 채굴자 및 사용자가 부담하는 일회성 비용과 개인 정보 손실 및 체인 재구성 리스크 와 같은 지속적인 비용을 열거했습니다.

실제로 블록체인 분할이 발생할 때, 규칙이 느슨한 체인이 규칙이 엄격한 체인보다 강하면 체인 재구성이 일어납니다. 이는 손상된 브랜치의 모든 거래에 심각한 영향을 미칩니다. 따라서 블록체인 분할을 방지하는 것이 매우 중요합니다.

5.4 결론

비트코인은 시간이 흐르면서 성장하고 진화해 왔습니다. 이 기간 동안 다양한 업그레이드 메커니즘이 도입되었으며, 그 학습 곡선은 가파릅니다. 네트워크의 반응에 대해 더 많이 알게 될수록 더욱 정교하고 견고한 방법들이 끊임없이 개발되고 있습니다.

비트코인 생태계의 조화를 유지하기 위해 소프트 포크 효과적인 방법으로 입증되었습니다. 하지만 여전히 해결되지 않은 중요한 문제가 하나 있습니다. 바로 분열을 일으키지 않고 안전하게 소프트 포크 배포하는 방법입니다.

출처
면책조항: 상기 내용은 작자의 개인적인 의견입니다. 따라서 이는 Followin의 입장과 무관하며 Followin과 관련된 어떠한 투자 제안도 구성하지 않습니다.
라이크
즐겨찾기에 추가
코멘트