포크(fork)란 무엇인가?

초급5분 소요2021-12-14

포크의 정의

포크의 스펠링은 fork로 음식을 먹을 때 사용하는 바로 그 포크와 같습니다. 하지만 어학사전을 찾아보면 포크(fork)의 다른 의미로 ‘갈라지다, 나뉘다’가 있는데, 블록체인에서 사용하는 의미는 바로 이 의미입니다. 즉, 블록체인 내에서 발생하는 포크(fork)란 새로운 규칙, 신규 기능, 시스템 업데이트 등이 필요할 때 업데이트하는 것을 의미하며 하드 포크(hard fork)와 소프트 포크(soft fork)가 있습니다. 두 포크의 가장 큰 차이점은 포크 시 이전 블록체인과의 호환 여부입니다.



소프트 포크란?

소프트 포크란 기존의 블록체인 시스템에서 부분적인 수정이 이루어지는 것을 의미합니다. 포크 이전의 블록과 호환이 가능합니다. 즉, 기존 블록에도 새로운 블록의 거래내역이 저장될 수 있음을 의미합니다. 소프트 포크로 인해 발생하는 업데이트는 참여자의 선택 사항입니다. 따라서 블록 생성에 필요한 노드만 업데이트하면 되며 참여 노드의 합의가 불필요한 것이 특징입니다.


비트코인에서도 과거 소프트 포크가 진행됐습니다. 비트코인 블록의 크기가 1MB로 작다 보니 초당 7건 정도의 느린 처리 속도가 문제가 됐습니다. 이를 해결하고자 디지털서명 부분을 분리하여 별도의 공간에 저장하는 세그윗(SegWit, Segregated Witness)이라는 업데이트(소프트 포크)를 진행하면서 블록당 저장 용량을 늘렸습니다.


하지만 이 세그윗 업데이트에 반대하는 참여자들도 있었습니다. 세그윗이 진행될 경우 일부 채굴 방식이 불가능했기 때문입니다. 이에 따라 비트코인캐시라는 이름으로 하드포크를 진행하며 블록의 크기를 1MB에서 8MB로 늘렸습니다. 비트코인캐시에서 발생하는 채굴, 거래내역 등은 소프트 포크와 달리 더 이상 기존의 비트코인 블록체인에 기록되지 않습니다. 하드 포크를 통하여 하드포크 이후로 기존 비트코인 블록체인과 분리된 전혀 다른 블록체인이 됐기 때문입니다.

하드 포크란?

하드 포크란 기존 블록체인과 호환이 되지 않는 것으로 체인 분리의 성격을 가지고 있습니다. 하드 포크는 보통 새로운 기능이 추가될 때 진행됩니다. 일반적으로 기존의 기능을 수정할 경우 소프트 포크로 가능하지만, 새로운 기능의 추가는 하드 포크로만 가능하기 때문입니다. 그 외에 기존 블록체인의 규칙이나 기능 자체를 수정해 이전에 발생한 문제들을 해결하거나 해킹으로 기존의 블록 내용에 문제가 있을 때 블록 내용을 수정하거나 원래대로 돌릴 경우에도 하드포크가 진행됩니다. 비트코인의 하드 포크로 생겨난 디지털 자산은 비트코인캐시 외에도 비트코인골드, 비트코인플래티넘 등이 있습니다. 

이더리움도 마찬가지로 하드포크가 진행됐습니다. 과거 2016년 6월 이더리움 네트워크를 이용한 더 다오(The DAO) 프로젝트에서 해킹으로 인해 DAO에 모여있던 이더리움이 DAO의 의도와 다르게 다른 곳으로 이전되는 사건이 발생했습니다. 당시 다행히도 사전에 설정해 놓은 이전의 유예기간으로 인하여 실제 이더리움의 인출로 이어지지는 않았습니다. 하지만 이 사건으로 인해 이더리움 재단은 다오 프로젝트가 공격당한 일부분만을 수정하는 하드포크를 진행했습니다. 그것이 현재의 이더리움이며, 이 하드포크에 동의하지 않는 사람들은 기존의 이더리움 블록체인을 그대로 유지하는 이더리움 클래식을 만들어 활동하고 있습니다.