용어집 / 프로토콜과 업그레이드
소프트 포크
- 소프트 포크란 무엇입니까?
- 소프트 포크는 비트코인의 규칙을 더 엄격하게 만들어, 새 소프트웨어에서 유효한 블록이 기존 소프트웨어에서도 여전히 유효하도록 하므로, 누구도 체인에서 밀려나지 않은 채 네트워크가 업그레이드될 수 있습니다.
비트코인이 실제로 배포한 모든 업그레이드는 이렇게 작동합니다. 규칙을 더 엄격하게 만든다는 것은 구형 노드가 새 블록을 여전히 받아들인다는 뜻입니다. 새 블록은 구형 노드가 아는 규칙을 하나도 위반하지 않기 때문입니다. 2012년 4월과 2021년 11월 사이의 소프트 포크는 비트코인 스크립트 해시 주소, 타임락, SegWit, Taproot를 비트코인에 제공했고, 그중 어느 것도 지갑을 고립시키지 않았습니다.
작동 방식
소프트 포크는 유효한 블록의 집합을 좁힙니다. 따라서 업그레이드된 네트워크가 생산하는 모든 블록은 이전 규칙집에서 이미 합법적이었습니다.
이를 가능하게 하는 비결은 비트코인의 스크립트 언어가 의도적으로 문을 열어 두었다는 점입니다. 10개의 오피코드가 아무것도 하지 않고 성공하는 널 오퍼레이션(no-op)으로 정의되었고, 아직 아무도 정의하지 않은 유형의 출력은 그것을 충족할 수 있는 누구나 사용할 수 있는 것으로 취급되었습니다. 소프트 포크는 그 문 중 하나로 들어갑니다. 구형 노드가 그냥 통과시키는 무언가를 가져다 거기에 실제 요구 사항을 붙입니다. OP_NOP2는 2015년 12월에 OP_CHECKLOCKTIMEVERIFY가 되었고 OP_NOP3은 2016년 7월에 OP_CHECKSEQUENCEVERIFY가 되었으며, 2014년의 노드에게는 여전히 통과하는 스크립트 안에서 둘 다 널 오퍼레이션입니다.
그 결과 누가 무엇을 하는지가 나뉩니다. 업그레이드하지 않은 노드는 자기가 아는 모든 규칙을 계속 검증하며 다른 모든 노드와 같은 체인에 머뭅니다. 업그레이드된 노드는 더 많이 검증합니다. 실제로 움직여야 하는 집단은 채굴업자입니다. 업그레이드하지 않은 채굴업자는 업그레이드된 노드가 거부하는 블록을 만들 수 있고, 보상을 잃고, 자기를 따르는 누구든 실패로 끝날 갈래로 끌고 갈 수 있기 때문입니다.
그래서 어려운 부분은 코드가 아니라 활성화입니다. 해시 파워의 대다수가 새 규칙을 강제하면 그 규칙을 위반하는 블록은 고아가 되고 강화는 유지됩니다. 그렇지 않으면 네트워크는 소프트 포크가 피하도록 설계된 단층선을 따라 갈라집니다. 비트코인은 그 다수를 확립하는 여러 방식을 시도했습니다. 블록 버전의 압도적 다수 집계, BIP-9의 버전 비트 방식, BIP-8의 타임아웃 옵션, 그리고 Taproot에 사용된 3개월 Speedy Trial 기간입니다.
소프트 포크는 하드 포크가 할 수 없는 방식으로 되돌릴 수도 있습니다. 새 규칙은 구형 소프트웨어가 전혀 요구하지 않았던 제한이므로, 이를 포기하면 모든 버전이 여전히 유효하다고 보는 체인으로 모두가 돌아갑니다.
비트코인을 구매할 때 이것이 중요한 이유
정직하게 말하면, 소프트 포크는 비트코인의 업그레이드가 일반 보유자에게 비용을 전혀 들이지 않았던 이유입니다.
이전도 없고, 기한도 없고, 놓칠 수 있는 공지도 없습니다. 2013년에 만들어진 P2PKH 주소에 있는 코인은 오늘도 같은 키와 같은 소프트웨어로 사용할 수 있으며, 이후의 모든 소프트 포크는 이를 그대로 유지하는 데 신경을 썼습니다. 사용하는 다른 어떤 금융 플랫폼과 비교해도, 이것은 이 시스템에서 가장 과소평가된 속성입니다.
실제로 눈에 띄는 것은 지연이며, 그것은 주변부에서 나타납니다. 프로토콜은 새 출력 유형을 활성화하지만, 지갑이 그것을 기본값으로 만드는 데 1년이 걸리고, 거래소가 그 유형으로 출금을 허용하는 데는 더 오래 걸리며, 어떤 곳은 결코 허용하지 않습니다. 이 사이트가 리뷰하는 거래소 중에서 bech32 주소로 보내는 지원은 이제 일상적이지만 bech32m Taproot 대상에 대한 지원은 여전히 고르지 않으며, 이는 첫날부터 합의 법이었던 변경에 대한 4년의 지연입니다. 프로토콜이 아니라 이 격차가 새 기능을 실제로 사용할 수 있는지를 결정합니다.
따라서 따라야 할 실용적인 규칙은 간단합니다. 따라잡지 못한 플랫폼을 위해 더 오래된 유형의 주소 하나를 준비해 두고, 어떤 형식이 작동한다고 가정하기 전에 출금 화면을 확인하십시오. 거부된 출금 주소는 성가신 일이지만, 수락된 뒤 실패한 주소에 대한 지원 요청은 더 나쁩니다.
Pay to script hash, 멀티시그를 쓸 수 있게 만든 소프트 포크
P2SH는 축소판으로 그 패턴을 보여 주기 때문에 공부할 가치가 있는 가장 이른 소프트 포크입니다.
2012년 4월 이전에는 멀티시그 구성으로 지불한다는 것은 지불자가 자신이 자금을 대는 출력에 스크립트 전체를 넣어야 한다는 뜻이었습니다. 이는 발신자를 다른 사람의 보안 정책에 대한 책임자로 만들었고, 거대한 출력을 만들어 냈으며, 인쇄하거나 말로 전할 수 있는 주소를 불가능하게 했습니다. BIP-16은 이 모든 것을 스크립트의 20바이트 해시로 대체했고, 숫자 3으로 시작하는 주소로 감쌌습니다.
구형 규칙을 실행하는 노드에게 잠금 스크립트는 지출하는 쪽이 일치하는 데이터를 밀어 넣을 때 성공하는 해시 비교입니다. 새 규칙을 실행하는 노드에게는 그 밀어 넣은 데이터가 그다음 스크립트로 실행되며 그 자체가 충족되어야 합니다. 새 규칙은 엄격하게 더 강하므로 구형 노드는 유효한 모든 새 지출을 받아들이며, 이것이 소프트 포크의 정의입니다.
활성화는 그 이후로 되풀이된 방식으로 혼란스러웠습니다. 경쟁 제안인 BIP-17은 개발자 의견을 갈랐고, 기한은 2월 1일에서 2012년 4월 1일로 미뤄졌으며, 채굴업자들은 채굴한 블록에 "/P2SH/" 문자열을 써 넣어 지지를 표시했습니다. 거래소가 입금용으로 내주는 주소를 포함해 현존하는 3으로 시작하는 거의 모든 주소가 그 논쟁에서 비롯되었습니다.
소프트 포크 vs BIP
BIP는 문서이고, 소프트 포크는 노드가 강제하는 규칙입니다. BIP-341은 누구나 쓸 수 있었던 GitHub 저장소의 텍스트 파일인 반면, Taproot는 2021년 11월 14일의 블록 709,632에서 합의 법이 된 것입니다. 이 구분이 중요한 이유는 대부분의 BIP가 결코 활성화되지 않기 때문이며, 그중에는 BIP-17과 코버넌트 제안들이 있습니다. 또한 하나의 소프트 포크가 종종 한꺼번에 여러 문서에 걸쳐 있기 때문이며, SegWit이 BIP-141, BIP-143, BIP-144, BIP-147에 걸쳐 그랬습니다. 활성화된 규칙을 뜻하면서 BIP 번호를 말하는 것은 대화에서는 무해하지만, 자신의 노드가 실제로 무엇을 강제하는지 파악하려 할 때는 오해를 부릅니다.