기타/개념정리

[블록체인 / 포크] 하드포크와 소프트 포크 설명

코드아키택트 2022. 2. 2. 15:28
반응형

https://academy.binance.com/en/articles/hard-forks-and-soft-forks

 

Hards Forks and Soft Forks Explained | Binance Academy

Hard forks and soft forks are the mechanisms used to upgrade blockchains in a decentralized environment. Learn all you need to know at Binance Academy.

academy.binance.com

 위 링크로 가면 아주 간단하게 영상으로 설명도 되어있다. 직접 쓰면서 이해해보기 위해서 요약을 해본다


TL; DR

하드포크 / 소프트 포크 == 은행 앱 업데이트와 같음
하지만 중앙 기관이 없기 때문에 앱 업데이트와는 방식이 다름
블록체인 의사결정자 이해 -> 하드포크 / 소프트 포크 이해 -> 어느것이 더 좋은지 논의 순서
블록체인 의사결정자 : Full node
블록체인 참여시 역할 : 개발자, 마이너, Full node, Light node
Full node? "블록체인의 중추" / 블록 확인, 보내기, 받기 수행 + 장부의 복사본을 유지
개발자 : 프로그램 개벌, 마이너 : 블록 검증, Light node : 지갑 또는 중앙화 서비스로 사용하는 참여자(우리)
포크? 같은 줄기에서 나온 양갈래길

하드포크? 이전 버전과 호환되지 않느는 소프트웨어 업데이트 -> 업데이트 한 노드와 기존 노드 소통 불가
예) 기존 규칙을 새로운 것으로 바꿈. 1mb 블록사이즈 -> 2mb 블록사이즈

소프트포크? 이전버전과 호환되는 소프트웨어 업데이트 -> 업데이트 하지 않은 노드와 소통 가능
예) 기존 규칙과 충돌하지 않는 새로운 규칙 추가. 블록 최소사이즈 규칙 추가.
Segregated Witness (SegWit) fork

소개

  • 핸드폰 은행 앱 업데이트. 아무 의심없이 업데이트함
  • 업데이트를 하지 않는다면, 서비스를 이용하지 못할 위험을 감수하는 것

 

  • 블록체인의 경우 이야기가 다름. 중앙 기관도 없고 위계가 없음 -> 업데이트를 따를지 말지 선택권
  • 하드포크와 소프트포크를 통해 어떻게 업데이트 되는지 이해

블록체인 네트워크에서 의사결정은 누가 내리나?

  • 업데이트 과정을 이해하기 위해 의사결정에 포함된 참여자를 이해하는 것이 중요

 

  • 비트코인에선 3가지 주체 참여 - 개발자, 마이너(검증자,Miner), 풀노드
  • 네트워크 측면에서 라이트 노드(핸드폰, 노트북에 포함된 우리의 지갑)는 참여자가 아님

 

개발자

  • 개발자는 코드를 만들고 업데이트 책임
  • 누구나 코드를 만들고 업데이트 가능

 

마이너(Miner)

  • 네트워크를 확보(유지)하는 주체임
  • 코드를 실행하고, 새 블록을 추가하기 위해 자원을 제공함(전기, 컴퓨팅 파워 등)
  • 비트코인에선 PoW를 통해 위의 작업 실행

 

Full node users

  • 암호화폐 네트워크의 중추
  • 블록을 검증, 보내기, 받기 수행
  • 장부의 복사본을 유지하거나 전송하는 역할 수행

 

  • 카테고리는 겹치기도 함
    • 개발자이면서 Full node, 마이너 일 수 도 있음. 아니면 셋다해당
  • 대부분 암호화폐 유저는 위 중 어느것도 해당되지 않음
    • light node를 사용하거나 중앙화된 서비스 사용

 

  • 위의 내용만 보만 개발자와 마이너(검증자)가 가장 중요하다 생각할 수도 있음
    • 개발자 : 코드를 개발 -> 사용가능한 소프트웨어 개발
    • 네트워크를 건강하게 유지
  • 하지만 Full node에 실제 권력이 몰려있음 -> 즉, 유저가 사용할 프로그램을 고를 수 있다는 뜻
  • 개발자가 특정 프로그램을 강요할 수 없으며, 마이너가 본인만의 방식을 고수해도 사용자는 떠나면 그만임
  • 개발자와 마이너는 서비스 제공자임
    • 사용자가 네트워크 사용안함 -> 코인 가치하락 -> 마이너에게 영향(리워드 감소)
    • 개발자는 사용자가 무시할 수 도 있음

 

  • 소프트웨어가 독점적이지 않음
    • 어떠한 변경사항도 만들수 있고, 내 변경사항을 다른사람들이 사용하는 과정에서 커뮤니케이션
    • 위의 과정을 소프트웨어를 포크했고, 그 과정에서 새로운 네트워크를 만든 것

 

포크란?

  • 포크는 소프트웨어가 복사되고 변경될떄 발생함
  • 원본 프로젝트는 그대로 살아있는 상태에서 새로운 방향의 하나가 생김
  • 만약 기존 암호화폐 정책이 마음에 안든다면?
    • 기존 프로젝트 내용 복사 -> 새로운 도메인 -> 다른 내용 업로드

 

  • 같은 줄기로 부터 나온 양갈래 길과 같음

 

  • 포크는 비트코인 이더리움 이전에도 있던 개념이며, 오픈소스에서 많이 일어나는 일임
  • 하지만 블록체인에서 다른 것은 소프트 포크와 하드포크임

 

하드포크 vs 소프트포크

  • 이름도 비슷하고 목적도 같지만, 둘은 매우 다름

 

하드포크

  • 하드포크이전버전과 호환되지 않는 소프트웨어 업데이트
  • 보통 기존 규칙과 새 규칙이 충돌할때 사용
  • 결과로 이전규칙을 따르는 네트워크와 새 규칙을 따르는 네트워크로 분기

노드가 업데이트 될 때 파란색으로 바뀜. 오래된 노란색 노드는 이를 거부

 

  • 평행으로 진행하는 두개의 네트워크가 생김
  • 포크가 발생하기까지 내용은 같지만 그 이후 블록과 거래내역은 달라짐

  • 예) 600,000번 블록 이전에 5 BTC 소유
    • 기존(오래된) 체인의 600,001번에서 5BTC 사용 가능. 하지만 새롭게 분기된 체인에서는 5BTC가 사용안됨 처리 -> 포크된 체인에서 5BTC 여전히 소유
  • 2017년 하드포크 예시  비트코인 vs 비트코인 캐시
    • 비트코인 : 블록 크기 유지
    • 비트코인 캐시 : 블록 크기 증량 

 

  •  기존 네트워크는 1mb이하 블록만 취급
    • 2mb가 되면, 블록 내용이 유효해도 체인에 추가 불가
  • 1mb 초과를 허용한 노드만이 2mb짜리 받을 수 있음
    • 이전 버전과 호환 불가 -> 1mb초과에 대한 업데이트한 노드들 끼리만 소통 가능

 

소프트 포크란?

  • 이전버전과 호환되는 업그레이드
    • 업그레이드하지 않은 노드와 소통 가능
    • 이전 규칙과 충돌하지 않는 새로운 규칙 추가할때 쓰임

 

  • 블록 크기를 줄일때 사용 가능
    • 블록의 최소 크기 정의 추가와 같은 방법

 

  • 위의 방법을 통해 업데이트 하지 않은 노드와 여전히 소통가능. 
  • 룰에 맞지 않는 정보를 단순히 필터링 할 수 있음

 

  • 좋은 예시는 Segregated Witness (SegWit) fork 임.
    • 비트코인 / 비트코인 캐시 분기 이후 생김
    • 블록과 거래의 포맷을 변경한 포크임
    • 업데이트하지 않은 노드들도 여전히 블록검증 가능. 내용은 이해 못함
    • 몇몇 필드는 새로운 노드만 이해 가능
    • 업데이트 2년이 지났지만, 모든 노드가 업데이트 한 것은 아님

 

하드포크와 소프트 포크, 어느것이 더 조은가?

  • 근본적으로 둘은 다른 목적을 가짐
  • 논쟁적인 하드포크는 커뮤니티를 분열 시킬 수 있음
    • 계획된 하드포크는 모두의 동의하에 변경 가능

 

  • 소프트포크는 좀더 신사적인 방식임
    • 기존의 규칙과 부딪히지는 않음
    • 호환 가능한 방식으로 이뤄진다면, 네트워크 분열을 걱정하지 않아도 됨

 

정리후

 하드포크 소프트포크 이야기는 얼핏 들어왔다. 작년에 이더리움이 하드포크를 실행한다면서 가격이 올랐던 적이 있는데 그런 일이 떠올랐다. 이 내용을 한마디로 정리한다면 하드포크는 기존 규칙을 갈아 엎어야 할때 하는 업데이트로, 업데이트 하지 않은 노드와 새롭게 업데이트 한 노드 사이에 서로 소통이 불가능하다는 것이다. 소프트포크의 경우 기존 규칙과 충돌하지 않는 새로운 규칙을 추가하는 행위이다. 업데이트한 노드와 그렇지 않은 노드가 소통할 수 있는 이유는 업데이트한 노드 관점에선 새롭게 만든 규칙에 맞지 않는 데이터를 필터링 할 수 있기 때문에 가능하다.

 둘의 차이를 좀더 자세히 알고싶다면 비트코인과 비트코인 캐시에 대한 내용과 위에 언급된 SegWit부분을 좀더 깊게 공부하면 알 수 있을것 같다. 

 그리고 위에 예시로 나온 그림들은 예쁘긴 한데 개념을 이해하는데는 오히려 방해가 되지 않나 라는 개인적인 생각이 든다.

끝.

반응형