소프트 포크와 하드 포크란? | 블록체인 용어 소개

08/05/2022글쓴이: W, Lynn

중앙화된 시스템에서는 버전 업그레이드가 매우 쉬워 공식 회사는 앱을 최적화해 사용자에게 다운로드를 제공하지만, 탈중앙화된 시스템에서는 작업증명 메커니즘을 채택하기 때문에 블록체인 업그레이드가  간단하지 않고 포크(fork)로 이어질 수 있습니다. 오늘은 포크 유형 중에 소프트 포크(Soft Fork)와 하드 포크(Hard fork)를 소개합니다.

 

 

포크(Fork)란?

블록체인 포크는 단순히 블록체인 네트워크 프로토콜에 대한 변경입니다. 즉, 블록체인 내에서 발생하는 포크(fork)란 새로운 규칙, 신규 기능, 시스템 업데이트 등이 필요할 때 업데이트하는 것을 의미합니다. 블록체인 포크가 발생하면 두 개의 개별 블록체인이 있는 두 개의 개별 네트워크로 분할됩니다.

포크는 계획된 프로토콜 업데이트의 일부로 될 수 있으며 커뮤니티 주도 이니셔티브를 통해 새로운 기능을 추가하거나 기존 기능을 향상시킵니다.또한 네트워크 공격으로 인해 발생할 수도 있습니다. 탈중앙화로 설계된 모든 것은 포크의 위험을 속에서 수행되며 많은 암호화폐는 현재 여러 번 더 작은 부분으로 분할되었습니다.

블록체인 포크는 왜 발생합니까?

비트코인 소프트웨어의 경우 사용자가 변경하지 않으면 포크가 발생하지 않습니다. 사용자가 소프트웨어를 변경하면 소프트웨어의 한 글자만 변경해도 포크로 간주됩니다.왜냐하면 이 소프트웨어의 새로운 버전이 이전 버전과 호환되지 않기 때문입니다.

대부분의 포크는 계획된 업그레이드를 위해 수행돼서 모든 사람이 프로토콜의 최신 보안 및 기능을 얻을 수 있습니다.그러나 어떤 경우에는 누군가 소프트웨어에서 버그나 오류를 발견하면 뜻하지 않은 분기로 이어질 수 있습니다. 이러한 경우, 일반적으로 소수의 개발자들이 오류를 빠르게 수정하고 새로운 버전의 소프트웨어를 출시합니다.

 

소프트 포크(Soft Fork)란?

소프트 포크는 기존의 규칙에서 큰 틀은 바꾸지 않고 부분적인 업데이트만 이루어집니다. 그래서 포크가 이루어지기 전과 후의 블록에 호환이 가능하고 이를 바탕으로 한 암호화폐도 동일합니다. 즉, 기존 블록에도 새로운 블록의 거래내역이 저장될 수 있음을 의미합니다. 소프트 포크로 인해 발생하는 업데이트는 참여자의 선택 사항입니다. 따라서 블록 생성에 필요한 노드만 업데이트를 하면 되며 참여 노드의 합의가 불필요한 것이 특징입니다.

간단한 시스템 업그레이드 만으로 새로운 시스템으로 이전할 수 있으며, 기존 유저들은 소프트 포크를 진행하지 않아도 됩니다. 그리고 소프트 포크 블록체인의 모든 블록은 새로운 합의 규칙 뿐 아니라 이전의 합의 규칙을 따릅니다.

이러한 소프트 포크의 대표적 예로 비트코인의 세그웟(SegWit)을 들 수 있습니다. 세그웟은 Separated Witness의 약자로 비트코인의 블록에서 디지털 서명 부분만 분리하여 블록의 용량을 증가시키는 업데이트의 이름입니다.비트코인의 블록 용량은 원래 1MB에서 8MB로 증가되어 더 많은 거래를 하나의 블록에 기록할 수 있게 되었습니다.

 

비트코인 캐시에서 발생하는 채굴, 거래내역 등은 소프 트포크와 달리 더 이상 기존의 비트코인 블록체인에 기록되지 않습니다. 하드 포크를 통하여 하드포크 이후로 기존 비트코인 블록체인과 분리된 전혀 다른 블록체인이 됐기 때문입니다.

 

하드 포크(Hard fork)란?

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

하드 포크는 소프트 포크와 달리 아예 두 개의 새로운 블록체인으로 나뉘게 되어 하나는 기존의 규칙을 따르고, 다른 하나는 새로운 규칙을 따릅니다. 기존 블록체인 네트워크와 호환이 되지 않고 포크 이후 생성되서 연결되는 네트워크 역시 기존 블록체인 네트워크와 완전히 독립된 별개의 다른 네트워크라고 할 수 있습니다.

비트코인 캐시, 이더리움 클래식 등이 하드 포크로 발생한 코인입니다.

 

하드 포크시 유의사항

하드 포크의 특성 상 포킹(Forking)할 때 코인을 송금한다면 포킹된 새로운 코인도 송금되는 현상이 발생합니다.

비트코인(BTC)과 비트코인 캐시(BCH)로 예를 들면, 블록이 포킹되지 않은 상태에서 1BTC를 송금을 했는데 아직 거래가 처리되지 않고 포킹 후에 거래가 기록이 된다면 기존의 코인과 새로운 코인 모두 소금이 됩니다.

즉 가치가 전혀 다른 1BCH까지 같이 송금이 되는 현상인데 이를 ‘리플레이 어택(Replay Attack)’이라고 합니다.

리플레이 어택(Replay Attack)을 발생시키지 않기 위해서는 포크(Fork)가 일어나기 직전에 절대로 송금하지 않고 가지고만 있어야 합니다.

 

소프 트포크 vs 하드 포크

소프트 포크는 시스템을 보다 안전하고 효율적으로 업그레이드 하는 것이지만, 아직 갱신되지 않은 오래된 시스템이라고 할 수 있습니다.이전 소프트웨어 버전에서 생성된 모든 블록이 새 소프트웨어에서 계속 인식되기 때문에 “소프트”라고 합니다.사용자 입장에서 보면 아무런 차이가 없기 때문에 채굴자와 사용자는 곧 업데이트(보통 며칠 이내)를 채택합니다.소프트 포크는 대부분의 채굴자들이 소프트웨어를 업그레이드하기만 하면 됩니다.

하드 포크는 프로토콜의 변경 사항입니다. 이전 버전과 새 버전이 호환되지 않습니다.하드포크의 목표는 업그레이드를 하는 것이지만 변경 사항은 이전 버전과 호환되지 않습니다. 이러한 유형의 업그레이드가 작동하려면 모든 사람이 동시에 새 버전으로 전환해야 합니다.이전 버전을 계속 사용할 경우 두 가지 다른 유형의 코인이 있을 수 있습니다. 이로 인해 서로 다른 버전의 사용자들 간의 거래 문제가 발생할 수 있습니다.

채굴자에게만 업데이트가 필요한 소프트 포크와 달리 하드 포크는 네트워크의 모든 참가자가 클라이언트를 업그레이드해야 합니다. 그렇지 않으면 계속해서 암호화폐 생태계의 일부가 될 수 없습니다. 이러한 유형의 포크에는 많은 계획이 필요하며 올바르게 구현되지 않으면 암호화폐의 보안이 취약해질 수도 있습니다.

소프트 포크는 블록체인 업그레이드의 가장 일반적인 유형입니다. 역호환이 가능하고 대다수의 채굴자가 소프트웨어를 업그레이드해야 하기 때문입니다. 그러나 때때로 분할이 있는 경우 사람들이 비트코인 캐시( The BCH 하드포크는 이전 버전과 호환되지 않으며 하나의 통화가 두 개의 통화가 되지 않도록 모든 사람이 유사한 클라이언트를 사용해야 하지만 참가자 간의 거의 만장일치의 합의가 필요합니다.

 

결론

현재도 포크는 일어나고 있고 개발자와 채굴자간 서로에게 유리한 방향으로 블록체인을 업데이트하기 위해 정치적인 투쟁을 하고 있습니다.

 

관련페이지:

비트코인(BTC)이란 무엇입니까? – BTCC

이더리움(Ethereum)은 무엇입니까? ㅣ코인 소개 – BTCC

이더리움 클래식이란? ETH2.0 전환이 ETC에 어떤 영향? |코인소개 – BTCC