용어집 / 프로토콜과 업그레이드
하드 포크
- 하드 포크란 무엇입니까?
- 하드 포크는 비트코인의 규칙을 완화하거나 변경하여 기존 소프트웨어가 거부하는 블록을 유효하게 만드는 것이며, 따라서 모든 노드는 업그레이드하거나 다른 체인에 남겨져야 합니다.
하위 호환성은 한 방향으로만 성립하며, 하드 포크는 그 반대 방향을 가리킵니다. 구형 소프트웨어는 새 블록을 불법으로 취급하고 자체 체인을 계속 쌓아 나가므로, 채택이 거의 만장일치에 가깝지 않다면 결과는 하나였던 코인이 둘이 되는 것입니다. Bitcoin Cash는 2017년 8월 1일의 블록 478,558에서 이렇게 생겨났습니다.
작동 방식
하드 포크는 노드가 받아들이는 블록의 집합을 넓히며, 넓히는 방향은 숨길 수 없는 방향입니다.
8메가바이트 블록을 허용하는 변경을 생각해 보십시오. 업그레이드된 노드는 작은 블록과 큰 블록을 모두 받아들입니다. 업그레이드되지 않은 노드는 작은 블록만 받아들입니다. 누구도 큰 블록을 채굴하지 않는 한 두 집단은 구별되지 않으며, 분열은 문서상으로만 존재합니다. 채굴업자가 큰 블록 하나를 공개하는 순간 두 집단은 서로 다른 체인 끝을 갖게 되고, 프로토콜 안의 어떤 것도 이들을 다시 합치지 못합니다. 어느 쪽도 자신이 완벽히 유효하다고 여기는 블록을 되돌리려 하지 않기 때문입니다.
그래서 하드 포크는 소프트 포크와 달리 조율이 필요합니다. 변경은 블록 높이나 달력상의 날짜로 예정되고, 훨씬 앞서 공지되며, 모든 사람이 그 전에 업그레이드했으리라고 기대됩니다. 기한을 놓치면 노드는 단순히 구형 소프트웨어를 실행하는 것이 아니라, 거래 상대방이 이미 버린 체인을 따라가고 있는 것입니다.
지속적인 두 번째 체인을 만들기 위한 하드 포크에는 재전송 보호도 필요합니다. 이것이 없으면 서명된 트랜잭션은 두 체인 모두에서 유효하므로, 한쪽에서 쓴 내역을 다른 쪽에서 다시 브로드캐스트해 그쪽의 해당 코인도 쓸 수 있습니다. Bitcoin Cash는 새로운 서명 해시 유형인 SIGHASH_FORKID를 요구해 이를 해결했으며, 이 유형은 Bitcoin Cash의 트랜잭션을 비트코인에서 구조적으로 무효로 만들고 비트코인의 트랜잭션을 Bitcoin Cash에서 무효로 만듭니다. 이 단계를 건너뛴 분열은 사용자가 우발적인 재전송으로 코인을 잃게 만들었습니다.
비트코인 자체가 이런 방식으로 규칙을 바꾼 것은 압박 속에서 초창기에만 있었습니다. 2010년 8월 15일의 값 오버플로 사건은 산술 버그로 1,840억개의 코인을 만들어낸 블록을 낳았고, 이를 고치려면 패치된 클라이언트와 그 블록 이전으로 되돌리는 의도적인 재구성이 필요했습니다. 2013년 3월의 체인 분열은 BIP-50에 문서화된 예정된 전환으로 해결되었습니다. 그 이후로는 이에 근접한 일이 없었고, 이를 강제할 메커니즘도 없습니다. 비트코인의 하드 포크는 전체 경제가 따르기로 선택할 때만 성공하는 제안입니다.
비트코인을 구매할 때 이것이 중요한 이유
하드 포크가 공지될 때마다 두 가지 실질적인 질문이 생기며, 그중 하나만 보유 코인에 관한 것입니다.
첫째는 수탁입니다. 키를 직접 보유한 지갑의 코인은 어떤 분열에서든 양쪽에 자동으로 존재합니다. 두 체인 모두 포크 블록까지 같은 원장을 이어받기 때문입니다. 사용자가 이를 청구하거나 등록하거나 웹사이트에 무언가를 연결하지는 않습니다. 두 번째 자산에 접근하려면 같은 시드 문구를 두 번째 체인을 따르는 소프트웨어로 가져오며, 그 소프트웨어는 신뢰할 이유가 없는 사람들이 작성한 것이므로 다른 것을 담지 않은 기기에서 합니다.
둘째는 이용 중인 거래소입니다. 플랫폼에 보관된 코인은 사용자가 아니라 플랫폼의 결정입니다. 2017년에 이 사이트에서 리뷰한 거래소 중 일부는 고객 잔액에 Bitcoin Cash를 입금해 주었고, 일부는 몇 주 뒤에 거래를 열었으며, 일부는 아예 상장하지 않았습니다. 그 모두가 입금과 출금이 중단된 상태에서 이루어졌습니다. 그 어느 것도 어디에도 계약으로 정해져 있지 않습니다. 분열이 중요하다면 코인은 그전에 플랫폼 밖에 있어야 합니다.
사기 층위는 프로토콜 위험보다 더 나쁩니다. 가짜 포크 에어드롭은 이 사이트의 사기 안내에서 가장 오래된 유형 중 하나입니다. 새 체인을 공지하는 사이트, 청구 양식, 그리고 복구 단어를 적는 칸입니다. 어떤 분열도 이를 요구한 적이 없습니다. 포크된 코인을 풀어 주겠다며 시드 문구를 요구하는 것은 원래 코인을 훔치는 것입니다.
Bitcoin Cash, 실제로 일어난 하드 포크
Bitcoin Cash는 명확한 사례 연구입니다. 한 일이 모두 사전에 공개되었고, 필요했던 것이 모두 다른 곳에서 먼저 잘못되었기 때문입니다.
명세는 2017년 8월 1일에 활성화 시점을 정하고 그 이후의 첫 블록이 1메가바이트를 넘어야 한다는 규칙을 두어, 분열을 우연에 맡기지 않고 보장했습니다. 블록 478,558이 그 블록이었습니다. 새 규칙은 기본 한도를 8메가바이트로 올리고, SegWit을 거부하고, 두 체인이 서로의 트랜잭션을 재전송할 수 없도록 SIGHASH_FORKID를 추가했습니다.
오래 남는 교훈은 그다음에 일어난 일입니다. 한 집단이 원장의 사본을 가지고 떠날 수 있음이 입증된 뒤, Bitcoin Cash는 그 방향에 동의하지 않는 파벌에 의해 다시 하드 포크되었고, 후속 체인들은 그 이후로도 계속 분열해 왔습니다. 하드 포크는 프로젝트 생애의 일회성 사건이 아니라, 다음 번 이견이 원용할 수 있는 선례입니다.
하드 포크 vs 알트코인
하드 포크는 원장을 이어받고, 알트코인은 빈 원장에서 시작합니다. Litecoin은 잔액이 전혀 없는 자체 체인으로 출시되어 아무도 아침에 무언가를 소유한 채 깨어나지 않았습니다. Bitcoin Cash는 블록 478,558 시점의 모든 비트코인 잔액이 이미 체인에 입금된 상태로 출시되었고, 그래서 보유자들은 갑자기 무언가를 소유하게 되었다는 말을 들었습니다. 분열 이후에는 둘 다 별도의 규칙과 별도의 가격을 가진 별개의 자산이므로 기술적으로는 그 구분이 중요하지 않게 되지만, 코인이 어떻게 분배되었는지에 대해서는 전적으로 중요합니다.
하드 포크 vs 소프트 포크
차이는 방향이며, 방향이 누가 행동해야 하는지를 결정합니다. 하드 포크는 이전에 무효였던 블록을 유효하게 만들므로, 모든 노드는 업그레이드하거나 나머지 경제가 있는 체인에서 이탈해야 합니다. 소프트 포크는 이전에 유효했던 블록을 무효로 만들므로, 업그레이드되지 않은 노드는 아무것도 바뀐 것을 알아차리지 못한 채 같은 체인을 계속 따릅니다. 하나는 기한 안에 모든 사람의 행동을 요구하고, 다른 하나는 채굴하지 않는 누구에게도 아무것도 요구하지 않습니다.