반응형
https://academy.binance.com/en/articles/hard-forks-and-soft-forks
위 링크로 가면 아주 간단하게 영상으로 설명도 되어있다. 직접 쓰면서 이해해보기 위해서 요약을 해본다
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부분을 좀더 깊게 공부하면 알 수 있을것 같다.
그리고 위에 예시로 나온 그림들은 예쁘긴 한데 개념을 이해하는데는 오히려 방해가 되지 않나 라는 개인적인 생각이 든다.
끝.
반응형
'기타 > 개념정리' 카테고리의 다른 글
[블록체인 / 암호화폐] 암호화폐 대출이란 무엇이며 어떻게 작동하는가? (0) | 2022.02.04 |
---|---|
[블록체인 / 영지식 증명] zk-SNARKs와 zk-STARKs 설명 (0) | 2022.02.03 |
[블록체인 / 원장] 간량한 원장의 역사 (0) | 2022.01.30 |
[블록체인 / NFT] NFT 스테이킹은 무엇이고 어떻게 작동하는가? (0) | 2022.01.29 |
[블록체인 / 합의 알고리즘] DPOS 설명 (0) | 2022.01.28 |