https://www.btcc.com/ko-KR/academy/crypto-basics/what-is-a-soft-fork-and-a-hard-fork-introduction-to-blockchain-terminology 이 자료를 바탕으로 글을 작성합니다.
블록체인 플랫폼은 탈중앙화 시스템이다. 중앙화된 서버-클라이언트 시스템은 서버에서 내놓은 버전을 클라이언트가 다운로드 하기만 하면 되는 간편한 구조로 이루어져, 버전 업그레이드가 매우 쉽다.
하지만 탈중앙화된 시스템, 대표적으로 비트코인은 작업증명 매커니즘을 채택하여, 블록체인의 업그레이드가 간단하지 않다. 이를 포크시켜 업그레이드 할 수 밖에 없다.
포크란 무엇일까? 그리고 소프트 포크와 하드 포크에 대해서 비교하는 시간을 가져 보자.
블록체인의 포크는 단순히 블록체인 네트워크 프로토콜이 변경된 것을 의미한다. 우리가 깃허브를 사용해보면서 포크라는 것을 해보았을 것이다. 다른 프로젝트를 내 레포지토리로 가져와서 독자적으로 내 입맛대로 개발방향을 바꿀 수 있는 것 처럼(이 개념이 맞는진 모르겠지만), 비트코인에도 포크가 존재하여 새로운 규칙, 신규 기능, 시스템 업데이트 등이 필요할 때 마다 업데이트 하는 것을 의미한다.
이러한 포크는 계획된 프로토콜 업데이트의 일부가 될 수 있으며, 커뮤니티의 주도 하에 이니셔티브를 통한 새로운 기능을 추가하거나 기존의 기능을 향상시킬 수 있다. 그리고 포크는 네트워크의 공격으로 인해 발생할 수 있다.
탈중앙화로 설계된 모든 것은 포크의 위험 속에서 수행되며, 암호화폐는 현재 자잘한 부분으로 분화되고 있다.

비트코인 소프트웨어는 사용자가 원하지 않거나 변경하지 않으면 포크가 발생하지 않는다. 중앙 서버가 존재하지 않기 때문에 사용자의 클라이언트가 구버전인지 확인할 수 없다.
그러나 사용자가 소프트웨어를 단 1바이트만이라도 변경한다면 소프트웨어는 포크되었다고 간주한다. 왜냐하면 이 소프트웨어의 새로운 버전이 이전 버전과 호환되지 않기 때문이다.
대부분의 포크 과정은 계획된 업그레이드를 위해 수행되어지고, 대부분의 사람들이 프로토콜의 최신 보안 및 기능을 얻는다. 하지만 소프트웨어의 버그와 취약점을 발견하면 뜻하지 않게 분기될 수 있다. 이런 경우 커뮤니티의 구성원이나 일부 개발자들이 나서 오류를 수정하고 새로운 버전의 소프트웨어를 출시하게 된다.
소프트 포크는 기존의 규칙에서 큰 틀은 유지하되 부분적인 업데이트만 이루어지는 경우를 말한다.
그래서 소프트 포크 이후에는 새로운 버전과 이전 버전의 블록에 호환 가능하고, 이를 바탕으로 한 암호화폐도 동일하다. 기존 블록에서도 새로운 블록의 거래내역이 저장될 수 있다.
소프트 포크로 인해 발생하는 업데이트는 사용자의 선택 사항이다. 이 말은 블록 생성에 필요한 노드만 업데이트를 하면 되고, 참여 노드의 합이가 불필요하다는 특징을 나타낸다. 기존의 블록으로 소프트 포크 된 블록을 처리할 수 있기 때문이다.
이 소프트 포크 블록체인의 모든 블록은 새로운 합의 규칙 뿐 아니라 이전의 합의 규칙또한 따른다.
소프트 포크의 대표적인 예로 비트코인의 세그윗(segWit)을 들 수 있다. 세그윗은 Separated Witness의 약자로 비트코인 블록에서 디지털 서명 부분만 분리하여 블록의 공간을 증가시키는 업데이트 이름이다.
이로서 비트코인의 블록 공간은 1MB에서 8MB로 증가하여 더 많은 거래를 하나의 블록에 기록할 수 있게 되었다.
내가 아는 바로는 세그윗은 트랜잭션 전송 과정에서 보안상 취약점이 input의 ScriptSig 쪽에 발생하여 이를 해결하기 위해 SigWit으로 때내는 걸로 알고있고 이를 업데이트 하기 위해 소프트 포크가 일어났다고 배웠다. 확실하지는 않지만 암튼
소프트 포크가 일어나면 두 개는 동일한 암호화폐라고 인식한다.
하드 포크는 기존 블록체인과 호환되지 않는 것으로 체인이 분리된 성격을 가지고 있다.
하드 포크는 새로운 기능이 추가될 때 진행된다고 한다. 일반적으로 기존의 기능을 수정하는 경우에는 소프트 포크로 해결이 가능하지만, 새로운 기능을 추가하는 경우에는 하드 포크로만 가능하다. 그 외에도 기존 블록체인의 규칙이나 기능 자체를 수정하여 이전에 발생한 문제를 해결하거나 해킹 사건이 발생하여 블록 내용에 문제가 있을 경우 블록 내용을 수정하거나 원래대로 돌릴 경우에도 하드 포크가 진행된다. 문제가 있는 블록이 발생하기 이전으로 롤백 시키니까 새로운 분기라고 할 수 있겠다.
하드 포크는 소프트 포크와 달리 아예 두 개의 새로운 블록체인으로 나뉘게 되어 하나는 기존의 규칙을 따르고, 다른 하나는 새로운 규칙을 따르게 된다. 기존 블록체인 네트워크와 호환되지 않고 포크가 진행되어 생성된 네트워크 역시 기존 블록체인 네트워크와 완전히 독립된 네트워크라고 할 수 있다.
비트코인 캐시나, 이더리움 클래식 등이 하드 포크로 발생된 코인이라고 할 수 있다.
