이더리움의 고스트프로토콜은 어떻게 다른가요?
이더리움은 고스트 프로토콜을 약간 수정해서 다른 코인들보다 빠른 블록 생성 속도를 가지면서 보안성도 높이는 결과를 얻었다고 들었습니다
무엇을 어떻게 바꿨길래 저런 결과를 얻었는지 알 수 있을까요?
블록 사이즈와 블록생성속도가 커지면 transaction 처리율이 올라가고 fork되는 블록의 수가 늘어나며, 이로인해 블록체인 네트워크의 보안성이 떨어지게 됩니다. fork가 여러개가 되는것은 unstable 이기 때문이죠.
Bitcoin의 경우 블록생성속도는 매우 느립니다.(약 10분) 이로인해 transaction 처리 성능은 낮아지고 대신 fork되는 블록의 수는 작아지게 되는데요. fork의 수가 작아지므로 stale 블록이 발생하는 빈도가 줄어서 자연스럽게 보안성이 높아집니다. 하지만 블록생성속도가 매우 느리다는 단점이 있습니다. Ethereum에서는 이것을 개선하여 블록생성속도를 약 12초 정도로 매우 빠르게 유지합니다. 하지만 그렇게 블록생성속도를 올리면 상관관계에 의해 fork의 수가 많이 늘어나게 됩니다. 이렇게 되면 네트워크의 보안성이 많이 낮아 지게되며 이를 해결하기 위해 이더리움은 수정된 GHOST Protocol을 사용하게 됩니다. stale 블록에 대해 보상을 주고 가장 긴 것이 아닌 가장 무거운 것을 선택하여 네트워크의 보안성을 올리고 transaction 처리율을 유지하면서 블록생성속도도 빠르게 할 수 있게 됩니다.
아래 사진은 Bitcoin에 Longest Chain Rule과 GHOST Protocol(원래 버전)을 각각 적용했을 때의 성능 비교를 시뮬레이션 한 그래프입니다.
그래프를 보면 블록 생성 속도가 빨라지면 트랜잭션 처리율이 증가하는데, GHOST 프로토콜과 Longest Chain Rule 이 거의 비슷하게 증가하는 것을 알 수 있습니다. 하지만 보안성은 매우 큰 차이를 보이게 됩니다. 이를 약간 수정하여 블록 생성 속도가 빠른 Ethereum에 도입하여 보안성을 많이 지킬 수 있게 되는것입니다.
내용이 조금 어려울 수 있으니, 다른 질문 있을시 부족한 부분을 답변하도록 하겠습니다. 감사합니다.
고스트 프로토콜(Greedy Heaviest Observed Subtree)이란 블록체인에서 분기(Fork)가 발생할 경우 나뉜 갈래 중에서 어느 것을 메인 체인으로 볼 것인지를 결정하는데 필요한, 약속된 규약이라고 할 수 있습니다.
일반적으로 포크(Fork) 상태에서 블록이 생성되고 이어져 가장 길이가 길어진 체인을 메인 체인으로 삼지만, 이더리움의 고스트 프로토콜에 따르면 메인체인에 포함되지 못한 엉클 블록에게도 보상을 지급하며, 단순히 블록의 길이가 가장 긴 체인이 메인체인이 되는 것이 아니라 분기된 경로 상에 있는 엉클 블록(최대 2개)까지 다 합쳤을 때 가장 많은 블록을 포함하고 있어 가장 무거운(Heaviest) 체인을 메인 체인으로 삼게 됩니다.
이렇게 되면 엉클 블록들이 발생되더라도 메인체인을 일관되게 이어나갈 수 있고 엉클 블록을 생성한 사람에게도 보상을 줄 수 있으며 단순히 길이가 긴 체인을 선택하는 것에 비해 더 많은 블록을 포함한 무거운 체인을 빠르게 선택하므로 메인체인을 선택하는 시간을 줄여 블록체인을 보다 빠르고 안정적으로 이어나갈 수 있게 됩니다.
또한 가장 긴 체인을 메인체인으로 정하는 경우 해킹을 시도할 때 메인 체인의 거래 내역만을 위, 변조하면 되지만 고스트 프로토콜이 적용된 경우 블록의 거래 내역을 위, 변조 하기 위해서 가장 무거운 체인(메인 체인) 외에도 엉클 블록의 거래 내역까지 모두 수정해야 하므로 보안성이 높아집니다.
끝으로 이더리움이 현재 POW 합의 알고리즘에 따라 막대한 해시 파워를 소모하며 채굴을 진행하고 있다고 할 때 엉클 블록의 생성으로 투입된 자원이 낭비되는 것을 막을 수 있으므로 가장 긴 체인을 메인체인으로 택하는 블록체인보다 채굴의 효율성이 높아지는 효과도 얻을 수 있겠습니다.
답변이 도움이 되길 바랍니다.