41 / 691FORK↓

Soft Fork

소프트 포크

소프트 포크는 비트코인의 합의 규칙을 강화합니다. 새로운 규칙에 따라 유효한 모든 블록은 이전 소프트웨어에 대해 유효하지만 이전 소프트웨어에서 허용했던 일부 블록은 업데이트된 노드에 의해 거부됩니다. 따라서 호환성은 비대칭이며 기존 노드가 모든 것을 검증한다는 의미는 아닙니다.

소프트 포크는 유효성 집합 V(기존)에서 하위 집합 V(새)로의 조정된 전환입니다. 활성화는 업데이트된 전체 노드가 제약 조건을 적용하는 블록을 결정합니다. 채굴자 신호는 준비 상태를 조정할 수 있지만 유효성은 노드에서 실행되는 규칙에 의해 결정됩니다. 설계, 구현, 배포, 활성화 및 채택은 동일한 것이 아닙니다.

업그레이드 전 규칙에 의해 허용된 모든 블록을 V(old)로 표시해 보겠습니다. 변경 사항은 V(new)가 V(old) 내에 있는 경우에만 소프트 포크입니다. 새 노드는 다음 블록 클래스를 거부하지만 새 규칙을 준수하는 블록은 이전 검사도 통과합니다. 이름은 변경의 크기, 안전성 또는 사회적 호환성이 아니라 유효성 규칙의 호환성을 나타냅니다. 이전 노드에 표시되는 한도를 늘리거나 이전에 유효하지 않은 지출을 허용하면 풀이 확장되며 일반적으로 하드 포크가 필요합니다. [비트코인 개발자 가이드 - 합의 규칙 변경] [비트코인 옵테크 - 소프트 포크 활성화]

업데이트된 채굴자가 정기적으로 인식하는 블록을 생성하기 때문에 오래된 전체 노드는 계속해서 체인을 따를 수 있습니다. 단, 추가된 조건은 확인하지 않습니다. 작업이 더 많은 분기가 새 규칙을 위반하면 이전 노드는 이를 수락할 수 있지만 업데이트된 분기는 이를 거부합니다. 새로운 보증이 필요한 사람은 자체 검증 소프트웨어를 업데이트해야 합니다. 결제를 허용하는 지갑의 능력, 형식 호환성 및 완전한 합의 검증은 서로 다릅니다. [비트코인 개발자 가이드 - 합의 규칙 변경] [BIP 341 - 탭루트 배포]

비트코인은 여러 기술을 사용하여 하위 집합을 만들었습니다. BIP66은 이전 규칙이 허용했던 엄격하지 않은 DER 서명을 금지했습니다. BIP65 및 BIP112는 기존 인터프리터가 아무것도 하지 않는 것으로 간주하는 조건을 NOP opcode에 추가했습니다. SegWit과 Taproot는 이전 노드에서 누구나 사용할 수 있는 것으로 간주하는 감시 프로그램의 예약된 버전에 의미를 부여했습니다. 동시에, 설계는 새로운 통제의 우회를 방지해야 합니다. 따라서 SegWit은 코인베이스를 통해 증인 데이터를 커밋하고 이전 기본 차단 규칙을 보존했습니다. [BIP 66 - 엄격한 DER 서명] [BIP 65 - CHECKLOCKTIMEVERIFY] [BIP 112 - CHECKSEQUENCEVERIFY] [BIP 141 - 분리된 감시] [BIP 341 - 탭루트 배포]

코드에는 메인넷에 적용되기 훨씬 전에 비활성 규칙이 포함될 수 있습니다. BIP 및 확인된 구현은 배포가 아니며, 배포 매개변수는 잠금이 아니며, 잠금은 향후 시행을 계획하며, ACTIVE 상태만 지정된 블록을 확인하는 것을 의미합니다. 각 노드는 자체 분기의 조상으로부터 상태를 계산합니다. 경계에서의 재구성은 이를 다시 계산할 수 있으며, 다른 매개변수를 가진 소프트웨어는 호환되지 않는 규칙을 시행하기 시작할 수 있습니다. [BIP 9 - 시간 초과 및 지연이 있는 버전 비트] [비트코인 코어 - versionbits.cpp]

BIP9는 배포에 이름, 비트 버전, 시작 시간 및 시간 제한을 할당합니다. 원래 메인넷 변형은 2,016개 블록 이후의 기간을 평가합니다. 최소 1,916개의 신호 블록(즉, 95%) 이후에는 STARTED에서 LOCKED_IN으로 이동하고 한 기간 동안 기다린 후 ACTIVE가 됩니다. 그렇지 않으면 FAILED로 끝날 수 있습니다. 전체 순서는 DEFINED, STARTED, LOCKED_IN, ACTIVE 및 FAILED입니다. 블록의 상태는 자체 nVersion이 아닌 조상에 따라 달라지며 잠금 이후의 신호는 더 이상 결과를 변경하지 않습니다. [BIP 9 - 시간 초과 및 지연이 있는 버전 비트]

버전 비트는 채굴 준비 상태를 나타내고 전환을 조정합니다. 그들은 채굴자에게 합의에 대한 영구적인 소유권을 부여하지 않습니다. BIP8은 높이를 사용하며 lockinontimeout을 사용하면 마지막 창에서 신호를 강제로 보낼 수 있습니다. 반면에 BIP148은 참여 노드에게 SegWit이 아닌 신호 블록을 거부하도록 명령했습니다. BIP91은 이러한 압력에 맞춰 채굴 임계값을 낮췄습니다. 필수 활성화는 노드, 해시 비율 및 경제적 채택이 다를 경우 체인을 분할할 수 있으므로 활성화 방법조차도 보안을 손상시킵니다. [BIP 8 - 높이에 따른 잠금 기능이 있는 버전 비트] [BIP 148 - SegWit의 필수 활성화] [BIP 91 - 임계값 감소 SegWit MASF] [Bitcoin Optech - 소프트 포크 활성화]

BIP16 하의 P2SH는 코인베이스 신호 및 시간 제한에 의해 2012년에 활성화되었습니다. BIP34는 코인베이스의 필수 높이에 대해 블록 버전과 임계값을 사용했습니다. 동일한 정수 프로시저가 BIP66에서는 엄격한 DER을, BIP65에서는 CHECKLOCKTIMEVERIFY를 실행했지만 버전 값을 소비하고 동시 배포를 수행할 수 없었습니다. 따라서 BIP9는 독립적인 비트를 도입했습니다. BIP68, BIP112 및 BIP113은 2016년 높이 419,328에서 상대 잠금 시간 및 CSV로 함께 활성화되었습니다. [BIP 16 — 스크립트 해시에 지불] [BIP 34 — 블록 v2, 코인베이스 높이] [BIP 65 — CHECKLOCKTIMEVERIFY] [BIP 66 — 엄격한 DER 서명] [BIP 112 — 순서 확인]

SegWit은 2017년 8월 481,824에서 활성화되었습니다. 이전 노드는 증인 데이터 없이 거래를 보고 증인 v0을 누구나 지출할 수 있는 것으로 간주합니다. 업데이트된 검증 증인, 새로운 서명 다이제스트 및 가단성 방지 규칙. 코인베이스 출력의 데이터를 목격하려는 Merkle의 약속은 채굴자가 탐지 없이 데이터를 변경하거나 생략하는 것을 방지합니다. 가중치 청구는 기존 제한인 1MB를 초과하여 기존 노드에 표시되는 기본 블록 없이 유효 용량을 늘렸습니다. [BIP 141 - 분리된 증인]

BIP341 및 BIP342는 Schnorr 서명 및 Tapscript를 사용한 프로그램 버전 1 키 경로 및 스크립트 경로 지출을 감시합니다. 이전 노드는 예약된 프로그램을 누구나 지출할 수 있는 것으로 다시 처리합니다. 즉, 하위 집합은 보존되고 전체 검증은 유지되지 않습니다. 메인넷은 2,016개 블록 중 1,815개, 즉 90%의 임계값과 709,632의 최소 활성화 높이를 갖춘 수정된 BIP9 Speedy Trial을 사용했습니다. Taproot는 2021년 11월 14일에 활성화되었습니다. Taproot의 규칙과 이를 활성화하는 방법은 두 가지 별도의 감사 질문입니다. [BIP 341 - 탭루트 배포] [BIP 342 - Tapscript] [비트코인 코어 0.21.1 릴리스 노트 - 탭루트 배포]

2015년 7월 BIP66이 활성화되었을 때 일부 채굴자들은 새 버전에 대한 신호를 보냈지만 채굴 중인 상위 블록을 충분히 검증하지 못했습니다. 그들은 유효하지 않은 블록을 확장하고 7월 4일에 6개의 블록으로 구성된 유효하지 않은 분기를 만들었습니다. 다음날 또 다른 짧은 사건이 이어졌습니다. 업데이트된 검증 노드는 두 분기를 모두 거부했습니다. 버전 번호나 비트는 채굴자가 주장하는 것일 뿐, 자신이 템플릿, 상위 항목 및 거래를 확인했다는 증거는 아닙니다. [BIP 66 - 엄격한 DER 서명] [Bitcoin.org - 2015년 7월 BIP66 체인 포크 경고]

ACTIVE 상태에서 업데이트된 노드는 해시 비율 공유에 관계없이 문제가 되는 블록을 거부합니다. 영구적인 분할이 발생하는지 여부는 지점의 업무와 경제적 용도에 따라 다릅니다. 단순히 제한을 제거하면 오늘날의 유효하지 않은 블록이 다시 활성화되므로 하드포크가 됩니다. 매개변수나 코드는 활성화 전에 조정된 릴리스로 대체될 수 있습니다. 운영자는 자체 버전, getdeploymentinfo 또는 getblockchaininfo, 정확한 매개변수, 활성화 높이 및 로그를 확인합니다. 신호 그래프나 탐색기 레이블은 로컬 검증을 대체할 수 없습니다. [비트코인 개발자 가이드 - 합의 규칙 변경] [비트코인 코어 - versionbits.cpp] [비트코인 코어 0.21.1 릴리스 노트 - 탭루트 배포]

더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 합의 규칙, BIP (Bitcoin Improvement Proposal), SegWit, Taproot, Hard Fork, Bitcoin. 다음 항목에서도 이 글을 참조합니다 Hard Fork, BIP (Bitcoin Improvement Proposal), 합의 규칙, Reorg.

DOC · 001Bitcoin Developer Guide — Consensus rule changes문서 ↗DOC · 002BIP 9 — Version bits with timeout and delay명세 ↗DOC · 003BIP 16 — Pay to Script Hash명세 ↗DOC · 004BIP 34 — Block v2, height in coinbase명세 ↗DOC · 005BIP 65 — CHECKLOCKTIMEVERIFY명세 ↗DOC · 006BIP 66 — Strict DER signatures명세 ↗DOC · 007BIP 112 — CHECKSEQUENCEVERIFY명세 ↗DOC · 008BIP 141 — Segregated Witness명세 ↗DOC · 009BIP 148 — Mandatory activation of SegWit명세 ↗DOC · 010BIP 91 — Reduced threshold SegWit MASF명세 ↗DOC · 011BIP 8 — Version bits with lock-in by height명세 ↗DOC · 012BIP 341 — Taproot deployment명세 ↗DOC · 013BIP 342 — Tapscript명세 ↗DOC · 014Bitcoin.org — July 2015 BIP66 chain fork alert1차 출처 ↗DOC · 015Bitcoin Core — versionbits.cpp문서 ↗DOC · 016Bitcoin Core 0.21.1 release notes — Taproot deployment문서 ↗DOC · 017Bitcoin Optech — Soft fork activation문서 ↗
2026년 8월 1일 검토1차 출처 우선 · 투자 조언이 아닙니다