제퍼넷 로고

하드 포크, 소프트 포크, 기본값 및 강제

시간

블록체인 공간에서 중요한 논쟁 중 하나는 하드 포크 또는 소프트 포크가 선호되는 프로토콜 업그레이드 메커니즘인지 여부입니다. 둘 사이의 기본적인 차이점은 소프트 포크가 프로토콜의 규칙을 다음과 같이 변경한다는 것입니다. 엄격하게 감소 유효한 트랜잭션 집합이므로 이전 규칙을 따르는 노드는 여전히 새 체인에 도달하게 됩니다(대부분의 채굴자/검증인이 포크를 구현하는 경우). 반면 하드 포크는 이전에 유효하지 않았던 트랜잭션과 블록이 유효해지도록 허용하므로 클라이언트는 하드포크된 체인을 유지하려면 클라이언트를 업그레이드해야 합니다. 하드포크에는 두 가지 하위 유형도 있습니다. 엄격하게 확장 유효한 거래 집합을 엄격하게 확장하는 하드 포크로 인해 기존 규칙은 새로운 규칙에 대한 소프트 포크가 됩니다. 양자 두 규칙 세트가 양방향으로 호환되지 않는 하드 포크.

다음은 포크 유형을 설명하는 벤 다이어그램입니다.

일반적으로 두 가지에 대해 언급되는 이점은 다음과 같습니다.
  • 하드 포크를 사용하면 개발자가 프로토콜을 업그레이드하는 데 훨씬 더 많은 유연성을 얻을 수 있습니다. 개발자는 새 규칙이 이전 규칙에 "적합"한지 확인하기 위해 주의를 기울일 필요가 없기 때문입니다.
  • 소프트 포크는 사용자가 체인을 유지하기 위해 업그레이드할 필요가 없기 때문에 사용자에게 더 편리합니다.
  • 소프트 포크는 체인 분할로 이어질 가능성이 적습니다.
  • 소프트 포크는 실제로 채굴자/검증인의 동의만 필요합니다(사용자가 여전히 기존 규칙을 사용하더라도 체인을 만드는 노드가 새 규칙을 사용하면 어떤 경우에도 새 규칙에 따라 유효한 것만 체인에 들어갈 수 있기 때문입니다). 하드포크가 필요하다 옵트 사용자의 동의

이 외에도 하드 포크에 대해 자주 제기되는 주요 비판 중 하나는 하드 포크가 "강압적"이라는 것입니다. 여기에 암시된 강제는 물리적 강제가 아닙니다. 오히려 그렇지요 네트워크 효과를 통한 강제. 즉, 네트워크 규칙이 A에서 B로 변경되면 개인적으로 A를 좋아하더라도 대부분의 다른 사용자가 B를 좋아하고 B로 전환하면 변경에 대한 개인적인 반대에도 불구하고 B로 전환해야 활성화됩니다. 다른 사람들과 동일한 네트워크.

하드포크를 지지하는 사람들은 네트워크를 "적대적으로 장악"하고 사용자들이 자신들과 함께 하도록 "강제"하려 한다는 이유로 종종 비웃음을 받습니다. 또한, 체인 분할의 위험은 종종 하드 포크를 "안전하지 않음"으로 청구하는 데 사용됩니다.


이러한 비판은 틀렸고, 더 나아가 많은 경우에 완전히 반대되는 것이 내 개인적인 견해입니다. 이러한 관점은 이더리움이나 비트코인, 기타 블록체인에만 국한된 것이 아닙니다. 이는 이러한 시스템의 일반적인 속성에서 발생하며 모든 시스템에 적용 가능합니다. 게다가 아래 주장은 논란의 여지가 있는 변경 사항에만 적용되며, 적어도 하나의 지지자(채굴자/검증인 및 사용자)의 상당 부분이 이를 승인하지 않습니다. 변경 사항이 논쟁의 여지가 없다면 일반적으로 포크 형식에 관계없이 안전하게 수행할 수 있습니다.

먼저 강제집행 문제에 대해 살펴보겠습니다. 하드 포크와 소프트 포크는 모두 일부 사용자가 좋아하지 않는 방식으로 프로토콜을 변경합니다. 어떤 프로토콜 변경은 정확히 100% 지원 미만인 경우 이를 수행합니다. 게다가, 적어도 그것은 거의 불가피하다. 일부 어떤 시나리오에서든 반대자들은 프로토콜 규칙에 대한 자신의 선호도보다 더 큰 그룹을 고수하는 네트워크 효과를 더 중요하게 생각합니다. 따라서 두 포크 유형 모두 네트워크 효과라는 단어의 의미에서 강제적입니다.

그러나 하드포크와 소프트포크에는 근본적인 차이점이 있습니다. 하드 포크는 옵트인(opt-in)되는 반면, 소프트 포크는 사용자가 전혀 "선택"할 수 없도록 허용합니다.. 사용자가 하드 포크된 체인에 참여하려면 포크 규칙을 구현하는 소프트웨어 패키지를 개인적으로 설치해야 하며, 네트워크 효과를 중요하게 생각하는 것보다 규칙 변경에 훨씬 더 강하게 동의하지 않는 사용자 집합은 이론적으로 단순히 체인에 머물 수 있습니다. 오래된 체인 – 그리고 실질적으로 말하면 그러한 이벤트 이미 일어난 일이야.

이는 엄격하게 확장되는 하드포크와 양방향 하드포크 모두에 해당됩니다. 그러나 소프트포크의 경우 포크가 성공하면 포크되지 않은 체인은 존재하지 않습니다.. 금후, 소프트 포크는 확실히 제도적으로 탈퇴보다 강압을 선호하는 반면, 하드 포크는 반대 편견을 가지고 있습니다.. 다른 사람들은 다를 수 있지만 나 자신의 도덕적 견해로 인해 강제보다는 탈퇴를 선호하게 되었습니다(가장 일반적으로 제기되는 주장은 네트워크 효과가 정말 중요하며 다음과 같은 것이 필수적이라는 것입니다.동전 하나가 모든 것을 지배한다"하지만 좀 더 온건한 버전도 존재합니다.)

이러한 주장에도 불구하고 소프트 포크가 종종 하드 포크보다 "덜 강압적"이라고 주장하는 이유를 추측해야 한다면, 하드 포크가 사용자에게 소프트웨어 업데이트를 설치하도록 "강요"하는 것처럼 느껴지기 때문이라고 말하고 싶습니다. 소프트 포크를 사용하면 사용자는 아무것도 할 필요가 없습니다. 그러나 이러한 직관은 잘못된 것입니다. 중요한 것은 개별 사용자가 "다운로드" 버튼을 클릭하는 단순한 관료적 단계를 수행해야 하는지 여부가 아니라 사용자가 다운로드를 수행하는지 여부입니다. 프로토콜 규칙의 변경을 수용하도록 강요됨 그들은 오히려 받아들이지 않을 것입니다. 그리고 이 측정 기준에 따르면 위에서 언급한 것처럼 두 종류의 포크 모두 궁극적으로 강제적이며 사용자 자유를 보존하는 데 다소 더 나은 것으로 나오는 것은 하드 포크입니다.

이제 논란이 많은 포크, 특히 채굴자/검증인 선호도와 사용자 선호도가 충돌하는 포크를 살펴보겠습니다. 여기에는 (i) 양방향 하드 포크, (ii) 엄격하게 확장되는 하드 포크, (iii) 소위 "사용자 활성화 소프트 포크"(UASF)의 세 가지 경우가 있습니다. 네 번째 범주는 광부가 소프트 포크를 활성화하는 곳입니다. 사용자 동의 없이; 이에 대해서는 나중에 다루겠습니다.

첫째, 양측 하드포크입니다. 최선의 경우 상황은 간단합니다. 두 코인은 시장에서 거래되며, 거래자는 두 코인의 상대적 가치를 결정합니다. ETC/ETH 사례에서 우리는 채굴자들이 자신의 이념적 견해에 관계없이 이익을 극대화하기 위해 단순히 가격 비율에 따라 해시레이트를 코인에 할당할 가능성이 압도적으로 높다는 압도적인 증거를 가지고 있습니다.

일부 채굴자가 한쪽 또는 다른 쪽을 향한 이념적 선호를 공언하더라도 가격 비율과 해시파워 비율 간의 불일치를 기꺼이 차익거래하고 둘을 일치시킬 의향이 있는 충분한 채굴자가 있을 가능성이 압도적으로 높습니다. 채굴자들의 카르텔이 하나의 체인에서 채굴을 하지 않기 위해 형성하려고 하면, 이탈할 엄청난 인센티브가 있습니다.

여기에는 두 가지 극단적인 경우가 있습니다. 첫 번째는 비효율적인 난이도 조정 알고리즘으로 인해 가격이 떨어지더라도 코인 채굴 가치가 하락하지만 이를 보상하기 위해 난이도가 내려가지 않아 채굴이 매우 수익성이 없게 되고, 채굴하려는 채굴자가 없을 가능성이 있습니다. 어려움이 다시 균형을 이룰 때까지 체인을 앞으로 계속 밀어내는 손실입니다. Ethereum의 경우는 그렇지 않았지만 아마도 그럴 수도 있습니다. 비트코인의 경우가 되다. 따라서 소수 체인은 결코 땅에서 떨어지지 않아 죽을 것입니다. 규범적인 질문에 주목하세요. 이게 좋은 일인지 아닌지 강제와 탈퇴에 대한 귀하의 견해에 따라 다릅니다. 위에 쓴 내용에서 짐작할 수 있듯이 저는 개인적으로 그러한 소수 체인 적대적 난이도 조정 알고리즘이 나쁘다고 믿습니다.

두 번째 엣지 케이스는 차이가 매우 크면 큰 체인이 작은 체인을 51% 공격할 수 있다는 것입니다. 10:1 비율로 ETH/ETC를 분할하는 경우에도 이런 일은 발생하지 않았습니다. 그러므로 그것은 확실히 주어진 것이 아닙니다. 그러나 지배적인 체인의 채굴자가 탈퇴를 허용하는 것보다 강압을 선호하고 이러한 가치에 따라 행동하는 경우는 항상 가능성이 있습니다.

다음으로 엄격하게 확장된 하드포크에 대해 살펴보겠습니다. SEHF에는 포크되지 않은 체인이 포크된 규칙에 따라 유효하다는 속성이 있으므로 포크의 가격이 포크되지 않은 체인보다 낮을 경우 포크되지 않은 체인보다 해시파워가 낮습니다. 그래서 포크되지 않은 체인은 결국 가장 긴 체인으로 받아들여지게 됩니다. 원본 클라이언트 및 분기 클라이언트 규칙 모두에 따라 – 그래서 분기된 체인 “전멸될 것이다".

따라서 포크된 체인이 전멸될 가능성이 가격에 반영되어 가격이 낮아지고 체인이 사라질 가능성이 더욱 커지기 때문에 그러한 포크의 성공에 대해 강한 내재적 편견이 있다는 주장이 있습니다. 전멸되었습니다… 제가 보기에 이 주장은 강력해 보입니다. 어떤 엄격한 확장이 아닌 양측의 논쟁적인 하드 포크.

Bitcoin Unlimited 개발자는 이 문제를 다음과 같이 처리할 것을 제안합니다. 하드포크를 수동으로 양방향으로 만들기 그런 일이 발생한 후에는 양측성을 내장시키는 것이 더 나은 선택이 될 것입니다. 예를 들어, 비트코인의 경우 사용되지 않은 opcode를 금지하는 규칙을 추가한 다음 포크되지 않은 체인에서 해당 opcode를 포함하는 트랜잭션을 만들 수 있습니다. 영원히 유효하지 않은 것으로 간주됩니다. Ethereum의 경우 상태 계산이 작동하는 방식에 대한 다양한 세부 정보로 인해 거의 모든 하드 포크가 거의 자동으로 양방향으로 수행됩니다. 다른 체인은 아키텍처에 따라 다른 속성을 가질 수 있습니다.

위에서 언급한 마지막 포크 유형은 사용자 활성화 소프트 포크입니다. UASF에서 사용자는 채굴자로부터 합의를 얻는 데 방해가 되지 않고 소프트 포크 규칙을 켭니다. 채굴자들은 경제적 이익 때문에 단순히 줄을 서게 될 것으로 예상됩니다. 많은 사용자가 UASF를 따르지 않으면 코인 분할이 발생하고 이는 엄격하게 확장되는 하드 포크와 동일한 시나리오로 이어질 것입니다. 단, 이것은 개념의 정말 영리하고 기만적인 부분입니다. 엄격하게 확장되는 하드 포크에서 포크된 체인을 강력히 선호하지 않는 동일한 "전멸 위험" 압력은 대신 UASF에서 포크된 체인을 강력하게 선호합니다.. UASF가 옵트인되더라도 성공을 향한 편향을 위해 경제적 비대칭성을 사용합니다(편향이 절대적인 것은 아니지만 UASF가 확실히 인기가 없다면 성공하지 못하고 단순히 체인 분할로 이어질 것입니다).

그러나 UASF는 위험한 게임입니다. 예를 들어, 프로젝트 개발자가 이전에 모든 트랜잭션을 허용했던 사용되지 않은 opcode를 일부 멋진 새 기능의 규칙을 준수하는 트랜잭션만 허용하는 opcode로 변환하는 UASF 패치를 만들고 싶다고 가정해 보겠습니다. 정치적으로나 기술적으로 논란이 많고 광부들이 싫어하는 것입니다. 광부들은 반격할 수 있는 영리하고 교묘한 방법을 가지고 있습니다. 그들은 소프트 포크에 의해 생성된 기능을 사용하는 모든 거래가 항상 실패하도록 만드는 채굴자 활성화 소프트 포크를 일방적으로 구현할 수 있습니다..

이제 세 가지 규칙 세트가 있습니다.

  1. Opcode X가 항상 유효한 원래 규칙입니다.
  2. Opcode X가 나머지 트랜잭션이 새로운 규칙을 준수하는 경우에만 유효한 규칙
  3. opcode X가 항상 유효하지 않은 규칙입니다.

(2)는 (1)에 대한 소프트포크이고, (3)은 (2)에 대한 소프트포크입니다. 이제 (3)을 선호하는 강력한 경제적 압력이 존재하므로 소프트포크는 목표를 달성하지 못합니다.

결론은 이것입니다. 소프트 포크는 위험한 게임이며, 논쟁을 벌이고 채굴자들이 반격을 시작하면 더욱 위험해집니다. 하드포크를 엄격하게 확장하는 것도 위험한 게임이다. 채굴자가 활성화한 소프트 포크는 강제적입니다. 사용자 활성화 소프트 포크는 덜 강압적이지만 경제적 압박으로 인해 여전히 강압적이며 위험도 있습니다. 정말로 논쟁의 여지가 있는 변화를 원하고 그렇게 하는 데 드는 높은 사회적 비용이 그만한 가치가 있다고 결정했다면 깨끗한 양방향 하드 포크를 수행하고 적절한 재생 보호 기능을 추가하는 데 시간을 투자한 다음 시장에서 이를 해결하도록 하세요. .

출처: https://vitalik.eth.limo/general/2017/03/14/forks_and_markets.html

spot_img

최신 인텔리전스

spot_img