중앙화 시스템을 사용하는 경우 사용자가 같은 서버에서 서비스를 받기 때문에 시스템을 업데이트하거나, 오류를 수정하더라도 사용자에게 똑같이 적용된다. 하지만 중앙 서버가 없는 블록체인 경우 사용자마다 다운로드 받은 클라이언트 프로그램을 사용해 접속하기 때문에 서로 다른 버전을 사용하는 경우가 생긴다. 강제로 모든 노드를 업그레이드할 수 없기 때문에 새로 생긴 규칙과 이전에 생겼던 규칙 사이에 충돌이 생길 수 있다. 이런 충돌은 소프트포크와 하드포크로 나눌 수 있다.
포크(Fork)란?
여기에서 포크란 '갈라지다, 나뉜다'라는 의미로 사용된다. 즉, 블록체인에서 발생하는 포크는 새로운 규칙이나 신규 기능 등이 추가되거나 빠지는 등의 이유로 시스템이 업데이트되는 것을 말한다. 포크 후 이전 블록체인과의 호환 여부로 하드포크와 소프트포크로 나뉘게 된다.
소프트포크(Soft Fork)란?
소프트포크는 과거에는 유효했던 규칙을 무효화 하는 경우를 말한다. 기존의 블록체인 시스템에서 부분적으로 수정이 이뤄지며, 포크 전의 블록과 호환 가능하다. 즉 블록 생성에 필요한 노드만 업데이트하면 되고, 참여 노드 합의가 불필요하다.
소프트포크 사례
- 이오스 메인넷 : 메인체인 블록 생성에 실패하는 문제를 메인체인 버전 업그레이드로 해결했다. 이때 소프트포크를 사용해 블록 생성을 재가동시켰다.
- 세그윗(SegWit) : 비트코인 블록에서 디지털 서명 부분을 분리해 블록당 저장 용량을 늘리는 소프트웨어 업그레이드를 뜻한다.
- 에이다 : 소프트포크를 지원하는 대표적인 암호화폐로 카르다노라는 블록체인 플랫폼을 기반으로 하고 있다. 암호화폐 소유자 간에 자산 이전이 쉽도록 소프트포크를 사용해 운영한다.
하드포크(Hard Fork)란?
하드포크는 과거에 무효하던 규칙을 유효화하는 경우 발생한다. 기존 블록체인과 호환되지 않고 체인이 분리되는 성질이 있어 하드포크가 진행되기 전 블록체인과 진행된 후 블록체인은 전혀 다른 프로토콜을 가지게 된다. 따라서 하드포크 이후에 채굴 노드는 새로운 버전으로 강제 업그레이드 해야 한다. 새로운 규칙이 추가되는 경우나 블록체인의 규칙이나 기능 자체를 수정하거나 원래대로 돌려야 될 때 하드포크를 진행한다.
하드포크 사례
- 비트코인 골드 : 비트코인 골드는 비트코인 블록체인의 중앙화된 채굴 방식을 벗어나기 위해 하드포크를 사용해 만들어졌다. SHA-256해시 알고리즘을 Equihash-BTG로 변경했다.
- 비트코인 캐시 : 블록 크기를 기존 1MB에서 8MB로 늘리기 위해 비트코인에서 하드포크를 사용해 비트코인 캐시를 만들었다.
- 이더리움 클래식 : 2016년 6월에 이더리움의 10%가 DAO 취약점을 이용해 해킹당했다. 취약점 해결을 위해 1920000번째 블록에서 하드포크를 진행해 새로운 블록체인으로 바뀌었다. 이전 블록체인을 이더리움 클래식이라고 부른다.