포크(Fork)
포크는 나뉘어 갈라지는 것이다. 소프트웨어 개발 포크, 프로젝트 포크라고도 한다. 개발자가 오픈소스 소프트웨어의 소스 코드를 통째로 복사해서 이를 바탕으로 새로운 소프트웨어를 만드는 행위를 이른다. 오픈소스 소프트웨어는 소스 코드가 공개되어 있고, 통째로 복사하여 활용하는 것이 허용된다. 따라서 원저작자의 허락 없이도 포크를 통해 새로운 소프트웨어를 개발할 수 있다. 블록체인에서는 특정 시점을 기준으로 나뉘어 갈라진다는 의미로 쓰인다. 소프트 포크(Soft Fork)와 하드 포크(Hard Fork)가 있다.
소프트 포크(Soft Fork) Ver 1.0 → Ver 1.1
소프트 포크는 단순한 오류를 수정하는 수준의 업그레이드다. 기존의 블록체인에 큰 영향을 미치지 않고, 이전 버전의 블록체인과도 호환된다. 사용자는 구 버전, 신 버전 모두 사용 가능하다. 하지만 채굴자는 블록을 채굴하는 방식에 변화가 생기기 때문에 반드시 새로운 버전으로 업그레이드를 해야 한다.
하드 포크(Hard Fork) Windows 8 → Windows 10
하드 포크는 기존의 방식을 뜯어고치는 수준의 대규모 업그레이드다. 구조적 오류 수정, 기능 개선/추가, 합의 방식 변경 등이 이루어진다. 이전의 버전과 호환이 되지 않고, 채굴자와 사용자 모두 새로운 버전으로 업그레이드해야 한다. 이전 버전에 비해 변화가 크게 일어나기 때문에 기존 사용자들의 동의가 필요하다. 참여자 중 과반수가 지지하면 하드 포크가 일어나지만, 중간에 좌절되는 경우가 많다.
하드 포크 과정에서 이해당사자 간 갈등이 커지면 기존의 블록체인에서 완전히 분리되어 나오기도 한다. 비트코인과 비트코인 캐시, 이더리움과 이더리움 클래식처럼 두 개의 코인으로 나뉘게 되는 것이다. 이때 하드 포크는 이전의 방식을 바탕으로 진행하기 때문에 기존에 권한을 갖고 있던 사람의 정보도 그대로 복사되어 이전된다. 기준 시간을 정하고, 분리 시점에 스냅샷을 찍어 각 코인에 정보를 복사하는 식이다. 따라서 기존의 코인을 갖고 있던 만큼 새로운 코인도 함께 받게 된다. 비트코인의 경우, 비트코인을 갖고 있던 만큼 비트코인 캐시도 새로 받았다.
- 홍승진 변호사
세그윗(SegWit: Segregated Witness)
세그윗은 증인을 분리하는 것이다. 블록체인 내 거래 효율성을 높이기 위한 방안으로 제시되었다. 비트코인의 경우, 10만 명 정도가 사용하기에 적절한 수준의 네트워크로 만들어졌다. 하지만 현재는 훨씬 많은 사용자가 이용하고 있어 거래 속도가 느려지는 문제가 발생하고 있다. 이에 서명과 거래 데이터를 분리하자는 제안이 나오게 되었다. 암호화폐를 거래할 때 보내는 사람이 생성하는 서명 내역과 거래 데이터를 분리하여 거래 데이터만 블록체인 위에 올린다면 효율성을 높일 수 있다는 점에서다.
비트코인의 경우, 디지털 서명은 전자 서명과 소유자 공개키로 구성되어 있다. 이때 거래 데이터 안에 있는 서명을 분리해서 관리하게 되면 블록에 들어가는 정보의 양이 줄어들어 한 블록 안에 더 많은 거래 내역을 담을 수 있게 된다. 서명만 모아서 거래 데이터를 별도로 관리하게 되면 이론적으로 물리적 변화 없이 효율성을 4배 높일 수 있다고 한다.
세그윗은 소프트 포크의 범주에 들어간다. 세그윗을 하더라도 거래 서명은 그대로 보존되기 때문에 기존의 방식과 새로운 방식을 호환해서 사용할 수 있어 효율적인 방법으로 여겨진다. 하지만 이마저도 변화를 초래하는 것이어서 그런지 커뮤니티 합의 과정이 순탄치는 않다.
'블록체인 기초' 카테고리의 다른 글
비트코인 작업증명 (POW: Proof-of-Work) (0) | 2018.05.22 |
---|---|
블록체인 합의 알고리즘(Consensus) (0) | 2018.05.21 |
블록체인 노드(node), 풀노드, 라이트노드 (0) | 2018.05.19 |
비트코인 제네시스 블록(Genesis block) (1) | 2018.05.18 |
암호화폐, 암호화폐 거래소, 탈중앙화 거래소(DEX) (0) | 2018.05.17 |