하드포크를 실패하는 경우가 있나요?
실패한다면 어떤 경우가 있나요?
혹시라도 실패하면 별 일 없이 지나가는건가요
아니면 기존 블록체인에 문제가 생기는건가요?
일반적으로 하드포크의 경우 특정 블록 높이를 기준으로 '새로운 블록'을 생성하며 이루어집니다. 이처럼 하드포크 시점을 미리 예고하고 변경된 내용으로 새로운 블록을 생성할 수 있도록 클라이언트 소프트웨어를 업데이트 함으로써 변경된 내용이 포함된 새로운 블록이 만들어지게 되고 업그레이드 사양이 메인넷에 적용되거나 두 체인으로 분리가 되는 것입니다.
질문의 내용과 관련하여 이더리움의 하드포크를 예로 들어보면 2018년에 콘스탄티노플 하드포크를 메인넷에서 단행하기 전에 테스트넷에서 먼저 하드포크를 진행한 적이 있는데 이때 마이닝 노드들이 클라이언트 소프트웨어를 업그레이드하지 않음으로써 예정된 블록에서 합의에 도달하지 못하여 블록의 생성이 지연되었고 결국 테스트넷 상에서의 하드포크가 실패로 돌아가 한 차례 하드포크가 미뤄졌던 사례가 있습니다.
또한 그 이후로도 2019년 1월에 또다시 보안 취약점이 발견되어 하드포크가 실패로 돌아가 또 한 차례 더 연기된 바가 있고 2019년 2월에야 하드포크가 성공적으로 이루어진 바가 있습니다.
따라서 이더리움 콘스탄티노플 하드포크의 경우는 테스트넷에서 하드포크를 성공하지 못한 것, 보안 취약점의 발견으로 인해 예정되어 있었던 하드포크가 제대로 이루어지지 못한 것을 '실패'라고 부른다고 볼 수 있습니다.
다만 이러한 '실패'는 부정적인 것이 아닌 것이, 테스트넷 단계에서 하드포크의 테스트나 하드포크 전 보안 취약점 발견 문제는 하드포크 전에 당연히 발견하고 수정해야 하는 것으로 저 개인적으로는 실패했다고 평가하기 보다는 오히려 잘 했다고 칭찬해야 하는 것이 맞다고 생각합니다.
끝으로 앞서 살펴본 이더리움 블록체인의 예에서와 같이 하드포크 전에 테스트넷을 통해 하드포크를 미리 테스트 한 후에 메인넷 하드포크를 실행하게 되므로 실패할 확률이 거의 희박하다고 생각하시면 좋을 듯합니다.
하지만 만약에 희박한 확률로 하드포크가 실패하여 문제가 발생한다면, 해당 문제를 수정하기 위한 긴급 소프트포크를 추가적으로 적용하거나, 롤백을 통해 실패하기 이전으로 거래 내역을 되돌린 후 다시 문제점을 수정하여 하드포크를 하는 것이 불가능하지는 않으므로 해결책이 전혀 없는 것은 아니라고 할 수 있겠습니다.
답변이 도움이 되길 바랍니다.
하드포크는 브랜치들을 버리거나 정리를 하여 대폭 감소를 시키고 메인체인을 바꾸는 역할을 하기 때문에 실패하면 경우에 따라서는 그 블록체인 자체를 못쓸 수도 있습니다. (기존 데이터 검증과 하드포크후 검증이 달라지기 때문)
하지만 하드포크는 다양한 형태로 이루어지고 충분히 테스트넷에서 검증을 마친 후에 하기 때문에 검증시 대부분의 문제가 발겨 되었습니다. ETH의 Int 정수 공격으로 무한 증식이 가능했던 시대로 이미 하드포크에서 대부분 잡혔으니까요..
새로운 듣보잡 알고리즘으로 "혁신"적인 블록체인이 나온다면
한 번 이런 버그가 있는지는 유심히 보셔야 겠지요.. 이런게 발견되면 블록체인의 사망을 막기 위해 빠른 패치와 하드포크를 하게 되고 그게 오히려 심각한 버그를 만들어 더 빠른 사망을 일으킬 수 있으니까요..
마지막 질문에 대한 답변은,
하드포크의 개념은 새로운 검증 알고리즘이나 모체를 끊어내는 등의 용도로 하드포크를 하기 때문에
기존 데이터를 기반으로 새로운 블록체인이 생기는 것과 같습니다.
때문에 기존과는 전혀 상관없는 길을 가게 되므로 기존 블록체인은 문제가 없습니다.
하드포크 사례 :
ETC -> ETH
BTC -> BCH
BTC -> BTG
하드포크를 했지만 기존 블록체인인 ETC나 BTC는 전혀 문제 없이 아직도 살아있죠?
그리고 BTC가 하드포크 해서 다시 BTC가 된 Segwit 2.0에서도 새로운 알고리즘이 채택된 BTC가 현재 사용중인 BTC인데 전혀 문제 없지요?