2023-02-23
930
하드포크 / 소프트포크는 무엇인가요?
기본적으로 둘 다 소프트웨어 업데이트를 말합니다. 차이는 다음과 같습니다.
- 소프트포크: SegWit, Taproot, Schnorr, Lightning Network 등의 기존의 프로토콜과 호환되는 업데이트. 블록을 검증하는 룰을 더 강화하는 것이기 때문에, 이 업데이트를 적용한 최신 노드들 뿐만 아니라 더 ‘느슨하게’ 검증하는 기존의 노드들에도 호환되므로 체인이 분리되지 않음.
- 하드포크: 블록 크기 변경, 블록 생성 주기 변경, 총 발행량 변경 등 기존의 프로토콜과 호환되지 않는 코드 변경이 들어간 업데이트. 기존보다 룰을 더 느슨하게 만드는 업데이트이므로, 이 ‘느슨한’ 룰이 적용된 노드들에서는 유효한 블록들이 기존의 노드들에서는 받아들여지지 않음. 따라서 체인이 분리됨.
이처럼 소프트포크의 경우 업데이트된 노드들과 업데이트하지 않은 기존 노드들이 네트워크에 공존할 수 있습니다. 업데이트를 하고 싶은 사람만 업데이트를 하면 됩니다.
그러나 하드포크의 경우는 업데이트된 버전이 기존 버전과 호환되지 않아 같은 네트워크에 공존할 수 없습니다. (업데이트를 한 풀노드들끼리 새로운 체인을 형성함.)
토렌트를 비유로 예로 들어 조금 더 쉽게 설명해보겠습니다.
- 소프트포크: 기존의 토렌트 프로그램을 사용하던 사람들은 새로운 버전의 토렌트 프로그램을 사용하더라도 기존에 다운받던 파일을 계속 다운받을 수 있습니다.(기존 받던 파일에 이어서 다운로드됨.)
- 하드포크: 기존의 토렌트 프로그램을 사용하던 사람들은 새로운 버전의 토렌트 프로그램을 사용해야만 새로운 토렌트 파일을 다운받을 수 있습니다.(기존에 받던 파일은 호환되지 않아 새로 다운로드해야함.)
이처럼 하드포크는 기존의 소프트웨어와 호환되지 않는 과격한 변화를 강행하는 업데이트이며, 소프트포크는 기존의 소프트웨어와 호환되는 업데이트입니다.
만약 비트코인이 이더리움처럼 프로토콜에 변경을 가하는 하드포크를(ETC, MERGE, SHANGHAI...) 수시로 진행해왔다면 결코 이렇게 빠른 속도로 성장하지 못했을 것입니다.
어떤 체인이 하드포크를 진행한다며 '호재다!'라고 하는 말을 들으신 적이 있나요?
그렇다면 해당 체인은 그처럼 소수의 결정으로 쉽게 하드포크를 진행할 수 있는, 언제든 프로토콜(규칙)이 밥먹든 바뀔 수 있는 중앙화된 체인이라고 이해하시면 됩니다.
2