소프트 포크, 하드 포크, 기본성과 강제성

비탈릭 부테린
2022-08-16 12:15:31
수집

저자: Vitalik Buterin

원제목: 《Hard Forks, Soft Forks, Defaults and Coercion

발표 시간: 2017년 3월 14일

블록체인 관련 주제 논의에서 매우 중요한 논의 중 하나는 프로토콜 업그레이드 메커니즘에서 소프트 포크가 좋은지 하드 포크가 좋은지에 대한 것입니다. 소프트 포크와 하드 포크의 기본적인 차이점은 소프트 포크가 유효한 거래 수를 엄격하게 줄여 프로토콜 규칙을 변경하는 반면, 하드 포크는 이전에 무효였던 거래와 블록을 유효하게 만들어 사용자가 클라이언트를 업그레이드해야만 하드 포크 이후의 새로운 체인에 남을 수 있다는 것입니다. 하드 포크에는 두 가지 하위 유형이 있습니다: 1. 완전 확장 하드 포크(Strictly Expanding Hard Forks)는 유효한 거래 집합을 완전히 확장하여 이전 규칙이 새로운 규칙과 효과적으로 호환될 수 있도록 하고, 2. 양방향 하드 포크(Bilateral Hard Forks)로, 이 경우 두 규칙 집합이 모두 호환되지 않습니다.

여기서 분기의 유형을 설명하기 위해 벤 다이어그램을 사용합니다:

image

일반적으로 인용되는 두 가지 장점은 다음과 같습니다:

  1. 하드 포크는 개발자가 프로토콜 업그레이드를 수행할 때 더 유연하게 만들 수 있습니다. 왜냐하면 그들은 새로운 규칙이 이전 규칙에 적합한지 추가로 고려할 필요가 없기 때문입니다.
  2. 소프트 포크는 사용자에게 더 편리합니다. 왜냐하면 사용자는 추가 업그레이드 없이도 새로운 체인에 계속 남아 있을 수 있기 때문입니다.
  3. 소프트 포크는 체인 분할을 초래할 가능성이 적습니다.
  4. 소프트 포크는 실제로 광부/검증자의 동의만 필요합니다(즉, 사용자가 이전 규칙을 사용하더라도, 노드가 이 체인을 새로운 규칙으로 사용하면 새로운 규칙 하에서만 유효한 거래가 체인에 들어올 수 있습니다. 이는 어떤 경우에도 해당됩니다). 반면 하드 포크는 사용자가 동의하도록 선택해야 합니다.

그 외에도 하드 포크의 주요 비판점은 하드 포크가 "강제적"이라는 것입니다. 여기서 말하는 강제성은 물리적인 힘을 의미하는 것이 아니라, 네트워크 효과의 일종의 강제성을 의미합니다. 즉, 네트워크가 규칙을 A에서 B로 변경하면, 개인이 A를 선호하더라도 대다수 사용자가 B를 선호하고 B로 전환하면, 개인이 B를 싫어하고 B로 전환하는 것에 동의하지 않더라도, 다른 사람들과 동기화하여 동일한 네트워크에 남기 위해서는 B로 전환해야 한다는 것입니다.

하드 포크의 지지자들은 종종 네트워크에 "악의적인 인수"의 영향을 미치려 하고 사용자들에게 "강제"한다고 조롱받습니다. 또한 체인 분할의 위험은 하드 포크가 안전하지 않다는 것입니다.

저의 개인적인 견해는 이러한 비판이 잘못되었다는 것입니다. 그리고 많은 상황에서 이러한 경우는 종종 반대의 경우가 많습니다. 이 견해는 이더리움이나 비트코인 또는 다른 블록체인에 특정한 것이 아니라, 이러한 시스템의 일반적인 특성에서 비롯되며, 그들 중 어떤 것에도 적용됩니다. 또한 아래의 주장은 논란이 있는 변경에만 해당되며, 그 중 적어도 하나의 선거구(광부/검증자와 사용자)가 대다수의 반대를 가지고 있을 경우에 해당합니다. 만약 변경이 매우 논란이 되지 않는다면, 어떤 형태의 포크든지 매우 안전하게 수행될 수 있습니다.

먼저 강제성 문제에 대해 논의해 보겠습니다. 소프트 포크든 하드 포크든, 어느 정도는 프로토콜의 방식을 변경하여 일부 사용자가 싫어하게 만듭니다. 특히 이 프로토콜이 100% 지지를 받지 못할 때, 이 프로토콜을 변경하는 것은 일부 사용자에게 불만을 초래합니다. 또한 거의 피할 수 없는 것은, 어떤 경우에도 반대자들은 대다수와 동기화된 네트워크 효과를 더 중요시하며, 이는 그들이 프로토콜에 대한 자신의 선호보다 우선합니다. 따라서 네트워크 효과의 의미에서 두 가지 포크 모두 강제적입니다.

그러나 소프트 포크와 하드 포크 사이에는 본질적인 차이가 있습니다: 하드 포크는 선택적으로 참여하는 것이고, 소프트 포크는 사용자가 선택의 여지가 없습니다. 사용자가 하드 포크 체인에 참여하기 위해서는 직접 소프트웨어 패키지를 설치하여 포크 규칙을 구현해야 하며, 규칙 변경에 동의하지 않는 사용자 집단의 반응은 그들이 중시하는 네트워크 효과보다 더 강렬합니다. 이론적으로 그들은 이전 체인에 남아 있을 수 있습니다. 그리고 실제로, 이런 일이 발생했습니다

이것은 완전 확장 하드 포크와 양방향 하드 포크 모두에 적용됩니다. 그러나 소프트 포크의 경우, 포크가 성공하면 포크가 없는 체인은 존재하지 않게 됩니다. 따라서 소프트 포크는 체제적으로 강제적이며 분리보다는 강제적입니다. 하드 포크는 반대의 경향을 가지고 있습니다. 저의 개인적인 도덕적 신념은 강제보다는 분리를 더 지지하게 만듭니다. 비록 다른 사람들은 그렇게 생각하지 않을 수 있습니다(가장 일반적인 주장은 네트워크 효과가 정말로 매우 중요하며, "하나의 코인 규칙"이 필수적이라는 것입니다. 비록 더 온건한 버전도 존재하지만요).

제가 이유를 추측해야 한다면, 비록 제가 방금 이러한 근거를 제시했지만, 소프트 포크가 하드 포크에 비해 "덜 강제적"인 선택으로 여겨지는 이유는 하드 포크가 사용자에게 소프트웨어 업데이트를 "강제"하는 느낌을 주기 때문일 것입니다. 반면 소프트 포크의 경우 사용자는 아무것도 할 필요가 없습니다. 그러나 저는 이 직관이 잘못되었다고 말해야 합니다. 중요한 것은 개별 사용자가 "다운로드" 버튼을 클릭하는 간단한 관료적 단계를 수행해야 하는지가 아니라, 사용자가 자신이 원하지 않는 프로토콜 변경을 수용하도록 강제되는지 여부입니다. 그리고 이 지표를 통해 위에서 언급한 두 가지 유형의 포크는 결국 모두 강제적이며, 하드 포크는 사용자에게 자유를 제공하는 측면에서 소프트 포크보다 약간 더 나은 것입니다.

이제 광부/검증자의 선호와 사용자 선호가 충돌하는 매우 논란이 있는 포크를 살펴보겠습니다. 여기에는 세 가지 경우가 있습니다: (i) 양방향 하드 포크 (ii) 완전 확장 하드 포크, (iii) 이른바 "사용자 활성화 소프트 포크"(UASF), 네 번째 유형은 사용자 동의 없이 광부가 소프트 포크를 활성화하는 것입니다. 나중에 우리는 이 점을 더 논의할 것입니다.

먼저 양방향 하드 포크에 대해 이야기하겠습니다. 가장 이상적인 경우, 이 시나리오는 매우 간단합니다. 두 개의 코인이 시장에서 거래되고, 거래자는 두 코인의 상대 가치를 결정합니다. ETH/ETC 사례에서 우리는 광부들이 가격 비율에 따라 자신의 해시 파워를 배분하여 이익을 극대화하려는 경향이 있다는 것을 보여주는 압도적인 증거를 가지고 있으며, 그들의 역사적 형태 관점을 고려하지 않습니다.

image

일부 광부가 이념적 선호를 한쪽으로 기울이더라도, 가격 비율과 해시 파워 간의 불일치에서 차익 거래를 하려는 충분한 광부가 있을 가능성이 높습니다. 만약 일련의 광부가 이 체인에서 채굴을 하지 않으려 한다면, 이 유인은 과도한 결함 문제를 초래할 것입니다.

여기 두 가지 극단적인 상황이 있습니다. 첫 번째 가능성은: 비효율적인 난이도 조정 알고리즘으로 인해 코인의 가치가 하락하면서 채굴의 가치가 하락하지만, 채굴의 난이도는 하락하지 않는 경우입니다. 이는 채굴이 매우 수익성이 없고 비효율적이게 만듭니다. 어떤 광부도 손실을 보면서 체인을 계속 진행시키지 않을 것이며, 난이도가 균형을 회복할 때까지 기다릴 것입니다. 이것은 이더리움의 경우가 아니지만, 비트코인의 경우일 수 있습니다. 따라서 소수의 해시 파워 체인은 영원히 땅에 남아 있지 않을 가능성이 높으며, 결국 죽게 될 것입니다. 이것이 좋은 일인지 아닌지는 강제와 분리에 대한 당신의 관점에 따라 다릅니다. 제가 위에서 쓴 개인적인 관점에 따르면, 이러한 소수의 해시 파워 체인은 적대적인 난이도 조정 알고리즘으로 인해 좋지 않은 일입니다.

두 번째 극단적인 상황은 차이가 매우 클 경우, 대규모 해시 파워 체인이 소규모 해시 파워 체인에 대해 51% 공격을 감행할 수 있다는 것입니다. 그러나 ETH/ETC 분기 비율이 10:1인 경우에도 이러한 공격은 발생하지 않았습니다. 따라서 이것은 확실한 답이 아닙니다. 그러나 만약 광부들이 주도하는 체인에서 강제성을 선호하고 분리로의 편차를 허용한다면, 이러한 광부들은 항상 방법을 찾을 것입니다.

다음으로 완전 확장 하드 포크(SEHF)를 살펴보겠습니다. SEHF에서는 비포크 체인이 포크 규칙 하에서 유효한 속성을 가지므로, 포크 체인이 비포크 체인보다 낮은 가격을 가지면 포크 체인의 해시 파워 값은 비포크 체인의 해시 파워 값보다 낮아지게 됩니다. 따라서 비포크 체인은 결국 원래 클라이언트와 포크 클라이언트에 의해 가장 긴 체인으로 수용됩니다. 그러므로 점차적으로 포크 체인은 "잠식"될 것입니다.

어떤 주장은 이러한 포크가 성공하는 것이 강한 고정관념에 의해 영향을 받는다고 주장합니다. 왜냐하면 포크 체인이 가격에서 잠식되어 코인의 가격이 더 낮아지게 되어 포크 체인이 잠식될 가능성이 더 커지기 때문입니다. 이 주장은 저에게 매우 타당하게 들리므로, 이는 단순히 확장하는 것보다 양방향 하드 포크를 수행하는 좋은 이유입니다.

비트코인의 많은 개발자들은 하드 포크가 발생한 후 수동으로 양방향 하드 포크를 수행하여 이 문제를 해결할 것을 제안합니다. 그러나 더 나은 선택은 내장된 양방향 하드 포크를 사용하는 것입니다. 예를 들어 비트코인의 경우, 사용되지 않는 연산 코드를 금지하는 규칙을 추가할 수 있으며, 그러면 포크가 없는 체인에서 이 연산 코드를 포함한 거래를 수행할 수 있습니다. 따라서 포크 규칙 하에서 포크가 없는 체인은 이 시점에서 영원히 무효가 됩니다. 이더리움의 경우, 계산 상태가 어떻게 작동하는지에 대한 다양한 세부 사항을 고려할 때, 거의 모든 양방향 하드 포크는 자동입니다. 다른 인프라에 따라 다른 체인도 다양한 속성을 가질 수 있습니다.

위에서 언급한 마지막 유형의 포크는 사용자 활성화 소프트 포크(UASF)입니다. UASF에서 사용자는 광부들의 합의 여부와 관계없이 소프트 포크 규칙을 직접 활성화할 수 있습니다. 광부들은 경제적 이익에서 배제될 수 있습니다. 만약 많은 사용자가 이 UASF를 따르지 않는다면, 이 코인은 분할될 것이며, 이는 완전 확장 하드 포크 시나리오와 동일한 상황을 초래할 것입니다. 비록 UASF가 선택적이지만, 경제적 비대칭성을 사용하여 성공 가능성을 높입니다(비록 이 편향이 절대적이지는 않으며, 이 UASF가 불인기라고 여겨지면 성공하지 못할 것이고, 이는 블록체인 분할로 이어질 것입니다).

그러나 사용자 활성화 소프트 포크는 위험한 게임입니다. 예를 들어, 프로젝트의 개발자가 모든 거래를 수용하던 이전의 사용되지 않는 연산 코드를 새로운 기능의 규칙에 부합하는 거래 연산 코드만 수용하도록 변환하는 UASF 패치를 만들고자 한다고 가정해 보겠습니다. 이는 정치적이거나 기술적으로 논란이 될 것이며, 광부들은 이 기능을 좋아하지 않을 것입니다. 광부들은 이러한 상황에 대처하기 위해 영리하고 교활한 방법을 사용할 수 있습니다: 그들은 광부 활성화 소프트 포크(miner-activated soft fork)를 일방적으로 시행하여 소프트 포크로 생성된 기능이 항상 실패하도록 할 수 있습니다.

이제 우리는 세 가지 규칙이 있습니다:

  1. 연산 코드 X는 항상 유효한 원래 규칙입니다.
  2. 연산 코드 X는 다른 거래가 새로운 규칙을 준수할 때만 유효합니다.
  3. 연산 코드 X는 항상 무효인 규칙입니다.

주의할 점은, 두 번째 점은 첫 번째 점에 대한 소프트 포크이고, 세 번째 점은 두 번째 점에 대한 소프트 포크라는 것입니다. 이제 세 번째 점에서는 강한 경제적 압력이 존재하므로, 소프트 포크는 그 목표를 달성할 수 없습니다.

따라서 저의 결론은 다음과 같습니다: 소프트 포크는 위험한 게임이며, 특히 논란이 있는 경우에는 광부들이 반격을 시작하게 되어 이 게임은 점점 더 위험해질 것입니다. 완전 확장 하드 포크 또한 위험한 게임입니다. 광부 활성화 소프트 포크는 강제적이며, 사용자 활성화 소프트 포크는 그렇게 강제적이지 않지만, 경제적 압력의 형성으로 인해 사용자가 소프트 포크를 활성화하기로 선택하는 것은 어느 정도 강제적이며, 이는 일정한 위험성을 내포하고 있습니다. 만약 당신이 정말로 논란이 있는 변경을 원하고, 자신이 그렇게 하는 사회적 대가가 가치 있다고 주장한다면, 깨끗하고 순수한 양방향 하드 포크를 수행하고, 재생 공격 방지를 추가하는 데 시간을 투자한 다음, 시장이라는 보이지 않는 손이 당신을 정리하도록 하십시오.

체인캐처(ChainCatcher)는 독자들에게 블록체인을 이성적으로 바라보고, 리스크 인식을 실제로 향상시키며, 다양한 가상 토큰 발행 및 조작에 경계해야 함을 상기시킵니다. 사이트 내 모든 콘텐츠는 시장 정보나 관련 당사자의 의견일 뿐이며 어떠한 형태의 투자 조언도 제공하지 않습니다. 만약 사이트 내에서 민감한 정보를 발견하면 “신고하기”를 클릭하여 신속하게 처리할 것입니다.
banner
체인캐처 혁신가들과 함께하는 Web3 세상 구축