
편집자 주: 이 기사의 출처는편집자 주: 이 기사의 출처는이더리움 애호가(ID: ethfans) vitalik, 저자 Vitalik Buterin은 Odaily의 허가를 받아 재인쇄했습니다.
보조 제목
하드 포크, 소프트 포크, 기본 및 필수
다음 그림은 포크 유형을 설명할 수 있습니다.
이미지 설명
그림의 왼쪽은 양방향 하드 포크이고 오른쪽은 큰 것부터 작은 것까지입니다: 엄격한 확장 하드 포크, 원래 합의, 소프트 포크
다음은 일반적으로 인용되는 소프트 포크와 하드 포크의 장점 중 일부입니다.
하드포크는 새로운 규칙을 보장하기 위해 주의를 기울일 필요가 없기 때문에 개발자가 프로토콜을 업그레이드할 때 더 많은 유연성을 제공합니다.
소프트 포크는 사용자가 블록체인을 유지하기 위해 업그레이드할 필요가 없기 때문에 사용자에게 더 편리합니다.
소프트 포크는 블록체인 분할로 이어질 가능성이 적습니다.
소프트 포크는 채굴자/검증인의 동의만 필요합니다(사용자가 여전히 이전 규칙을 사용하더라도 노드가 새 규칙을 사용하는 경우 새 규칙에 따라 유효한 것만 체인에 입력됨). 동의하다.
그 외에도 하드 포크에 대한 주요 비판 중 하나는 하드 포크가 "강제"된다는 것입니다. 여기서 말하는 강압은 물리적인 힘이 아니라 네트워크 효과를 통한 강압이다. 즉, 네트워크가 A에서 B로 규칙을 변경하면 개인적으로 A를 좋아하더라도 대부분의 다른 사용자가 B를 좋아하고 B로 전환하면 그럼에도 불구하고 다른 사람과 동일한 네트워크를 사용하려면 B로 전환해야 합니다. 개인이 변경 사항에 동의하지 않습니다.
1.
하드포크 지지자들은 종종 네트워크의 "악의적인 인수"를 달성하고 사용자가 네트워크에 가입하도록 "강제"하려 한다고 조롱합니다. 또한 블록체인 분할의 위험으로 인해 "안전하지 않음"이라는 레이블이 붙은 하드포크 체계가 만들어집니다.
내 개인적인 의견은 이러한 비판이 잘못 배치되었으며 많은 경우 말보다 수레를 두는 것입니다. 이 점은 이더리움, 비트코인 또는 다른 블록체인에만 국한되지 않으며, 이러한 시스템의 만연한 특성에서 비롯되며 모든 시스템에 적용됩니다. 또한 아래의 주장은 논쟁의 여지가 있는 프로토콜 변경에만 적용됩니다. 포크가 어떤 방식으로 구현되든 안전하게 수행되어야 합니다.
먼저 강제집행 문제부터 살펴보자. 하드 포크와 소프트 포크 모두 일부 사용자가 좋아하지 않을 수 있는 방식으로 프로토콜을 변경할 수 있습니다. 게다가 어떤 경우에도 프로토콜 변경에 반대하는 일부 사람들이 네트워크 효과에 더 중점을 두고 대다수의 구성원과 일치하기를 원하기 때문에 선호하는 프로토콜 규칙을 포기하는 것은 거의 불가피합니다. 따라서 두 가지 유형의 포크는 네트워크 효과 측면에서 필수입니다.
그러나 하드 포크와 소프트 포크 사이에는 본질적인 차이가 있습니다. 하드 포크는 사용자에게 선택할 기회를 제공하지만 소프트 포크는 사용자가 "선택"할 수 없도록 합니다. 하드 포크 체인에 참여하려는 사용자는 포크 규칙을 구현하는 소프트웨어 패키지를 직접 설치해야 하며 네트워크 효과보다 규칙 변경에 동의하지 않는 사용자 기반은 이론적으로 단순히 이전 체인에 머물 수 있습니다. 이렇게 이벤트가 발생했습니다.
위의 설명은 엄격하게 확장된 하드 포크와 양방향 하드 포크에 동일하게 적용됩니다. 그러나 소프트 포크 중에 포크가 성공적으로 포크되면 포크 이전의 블록체인은 더 이상 존재하지 않습니다. 따라서 소프트 포크는 분명히 제도적으로 해제보다는 강제 수용에 편향되어 있으며 하드 포크는 이와 반대입니다. 다른 사람들은 동의하지 않을 수도 있지만 내 자신의 도덕적 견해로 인해 강압보다 분리를 선호하게 되었습니다(가장 일반적인 주장은 네트워크 효과가 실제로 중요하고 "동전 하나"의 존재가 중요하다는 것입니다. 더 온화한 버전도 존재합니다).
위의 논의와는 별개로 소프트 포크가 종종 하드 포크보다 "덜 의무적인" 것으로 간주되는 이유를 추측해야 한다면 하드 포크가 사용자에게 소프트웨어 업데이트를 설치하도록 "강제"하는 것처럼 느껴지기 때문이라고 말하고 싶습니다. 사용자는 "반드시" 아무 것도 하지 않습니다. 그러나 이 직관은 오해의 소지가 있습니다. 중요한 것은 개별 사용자가 "다운로드" 버튼을 클릭하는 단순한 관료적 단계를 거쳐야 하는지 여부가 아니라 사용자가 수락하지 않으려는 프로토콜 규칙 변경 사항을 강제로 수락해야 하는지 여부입니다. 이 표준으로 측정하면 소프트 및 하드 포크는 궁극적으로 필수이며 하드 포크는 사용자 자유를 유지하는 데 약간 더 좋습니다.
이제 논란이 많은 포크, 특히 채굴자/검증인 선호도가 사용자 선호도와 충돌하는 포크를 살펴보겠습니다. 여기에는 (i) 양방향 하드 포크, (ii) 엄격하게 확장되는 하드 포크, (iii) 소위 "사용자 활성화 소프트 포크"(UASF)의 세 가지 시나리오가 있습니다. 네 번째 범주는 채굴자가 사용자 동의 없이 소프트 포크를 활성화하는 경우로, 이에 대해서는 나중에 논의하겠습니다.
먼저 양방향 하드포크입니다. 최상의 경우 상황은 간단합니다. 두 코인은 시장에서 거래되며 거래자는 두 코인의 상대적 가치를 결정합니다. ETC/ETH 사례에서 우리는 채굴자들이 그들의 이념과 상관없이 이익을 극대화하기 위해 단순히 코인 가격 비율에 따라 컴퓨팅 파워를 분배할 가능성이 가장 높다는 충분한 증거를 가지고 있습니다.
일부 광부의 이데올로기가 어느 한쪽으로 치우치더라도 가격과 해시레이트 사이의 불일치를 조정하여 두 가지를 일직선으로 만들려는 다른 광부들이 충분히 있을 것입니다. 일부 마이너가 특정 체인에서 마이닝하지 않기 위해 그룹을 형성하려고 한다고 가정하면 차익 거래 공간은 사람들이 그렇게 하지 않도록 인센티브를 생성할 것입니다.
여기에는 두 가지 엣지 케이스가 있습니다. 첫 번째 가능성은 가격 하락으로 인해 채굴 가치가 떨어졌지만, 비효율적인 난이도 조정 알고리즘으로 인해 난이도가 매칭 수준으로 낮아지지 않은 경우입니다. 돈을 잃으려면 난이도가 균형을 이룰 때까지 전체 체인을 계속 밀어 넣으십시오. Ethereum의 경우는 아니지만 Bitcoin의 경우 일 수 있습니다. 따라서 소수 체인은 시작되지 않을 가능성이 높습니다. 이 상황이 좋은지 나쁜지는 강압과 탈퇴에 대해 어떻게 생각하느냐에 따라 달라지는데, 위에서 쓴 것을 보면 소수 체인에 적대적인 이런 종류의 난이도 조정 알고리즘이 나쁘다고 개인적으로 생각한다는 것을 유추할 수 있습니다.
두 번째 시나리오는 차이가 매우 크면 더 큰 체인이 더 작은 체인을 51% 공격할 수 있다는 것입니다. 10:1 ETH/ETC 분할에도 그런 일은 발생하지 않았으므로 확실히 일어날 필요가 없었습니다. 그러나 대규모 체인의 채굴자가 이탈보다 무력을 선호하고 원하는 대로 행동한다면 51% 공격 시나리오는 항상 가능합니다.다음으로 하드 포크를 엄격하게 확장하는 방법을 살펴보겠습니다. SEHF(Strictly Extended Hard Fork의 약자)는 포크 이후의 규칙에 따라 프리 포크 체인이 여전히 유효하다는 속성을 가지고 있으므로 포크 체인이 비 포크 체인보다 저렴하면 포크 체인보다 낮은 가격을 갖게 됩니다. non-fork chain. non-fork chain은 계산 능력이 낮기 때문에 non-fork 체인은 원래 체인의 클라이언트 규칙과 fork된 클라이언트 규칙에 의해 최종적으로 가장 긴 체인으로 받아들여지지만, fork된 체인은 "”。
지워질 것이다
그러한 포크는 내재된 단점이 있습니다. 왜냐하면 포크된 체인이 소멸될 가능성이 가격에 반영되어 가격을 낮추고 체인이 소멸될 가능성이 더 높아지기 때문입니다... 제 생각에는 이 주장이 매우 강력합니다. 논란의 여지가 있는 포크는 엄격한 확장이 아닌 양방향 하드 포크여야 합니다.Bitcoin Unlimited 개발자는 포크 후 채택을 제안합니다.양방향 수동 하드포크
그러나 더 나은 옵션은 내장된 양방향성을 통하는 것입니다. 체인은 그때부터 영원히 유효하지 않은 것으로 간주됩니다. Ethereum의 경우 상태 계산이 작동하는 방식에 대한 다양한 세부 정보로 인해 거의 모든 하드 포크가 자동으로 양방향입니다. 다른 블록체인은 구조적 차이로 인해 다른 속성을 가질 수 있습니다.
위에서 언급한 마지막 유형의 포크는 사용자 활성화 소프트 포크입니다. UASF(User Activated Soft Fork의 약자)에서 사용자는 채굴자의 합의 없이 소프트 포크 규칙으로 전환합니다. 많은 사용자가 UASF를 구현하지 않으면 코인이 분할되어 엄격하게 확장되는 하드 포크와 동일한 상황이 발생합니다. 하드 포크 확장 포크 체인의 "소멸 위험"은 여기에서 UASF의 포크 체인에 강하게 편향되어 있습니다. UASF가 옵션을 제공하더라도 포크의 성공 가능성을 높이기 위해 경제적 비대칭성을 이용합니다(이 성향이 절대적인 것은 아니지만 UASF가 인기가 없다고 결정하면 성공하지 못하고 블록체인 분할이 발생합니다).
그러나 UASF는 위험합니다. 예를 들어, 프로젝트의 개발자가 모든 트랜잭션을 허용하는 이전에 사용되지 않은 opcode를 정치적 또는 기술적으로 논쟁의 여지가 있거나 채굴자가 좋아하지 않더라도 일부 새로운 규칙을 준수하는 트랜잭션만 허용하는 opcode로 변환하는 UASF 패치를 생성하려고 한다고 가정합니다. . 광부는 반격할 수 있는 영리하고 교활한 방법이 있습니다. 그들은 광부가 활성화한 소프트 포크를 일방적으로 구현하여 소프트 포크에 의해 생성된 기능을 사용하는 모든 트랜잭션을 실패하게 만들 수 있습니다.
세 가지 규칙 세트가 있다고 가정합니다.
opcode X가 항상 유효한 원래 규칙.
트랜잭션의 나머지 부분이 새 규칙을 준수하는 경우에만 opcode X가 유효한 규칙
Opcode X는 항상 유효하지 않은 규칙입니다.
(2)는 (1)의 소프트 포크에 대한 것이고 (3)은 (2)의 소프트 포크에 대한 것입니다. 가설적으로 (3)에 유리한 경제적 압력이 강하고 소프트 포크는 목표를 달성할 수 없습니다.