블록이 동시에 생성된다면?
Last updated
Last updated
블록이란 네트워크에서 합의의 결과로 결정된 거래내역의 모음입니다. 블록을 생성하면 코인을 받기 떄문에, 채굴자들은 수익을 위해 블록을 생성하기 위한 일을 합니다. 블록을 생성하기 위한 작업은 네트워크에 보안성을 향상 시키고, 기여에 대한 보상으로 네트워크에서는 코인을 발행하여 지급합니다.
채굴자들은 각자 기존에 있는 블록체인 다음에 자기 자신이 생성한 블록(A라고 하겠습니다.)을 모두의 동의를 얻어야 보상을 가질 수 있습니다. 여기에서 모두의 동의를 얻는 다는 것은 다른 채굴자들이 새로운 작업을 ‘블록 A가 포함된 블록체인’에 대해 하는 것을 의미합니다. 많은 동의를 받는 블록체인은 더 많은 컴퓨팅 파워를 통해 보안성을 가진다는 것을 의미하며, 그 위에 작업을 해야 채굴자들도 보상 받을 확률이 더 높아집니다.
만약 99%의 채굴자가 블록 A가 포함된 블록체인을 대상으로 작업을 할 때, 1%에 해당하는 채굴자는 블록 B(A는 없는)가 포함된 블록체인에 작업을 한다고 하면, 아무리 열심히 해도 블록 A가 포함된 작업을 하는 99%의 채굴자를 컴퓨팅 파워로 이길 수 없기 때문에 무의미한 일이 됩니다. 즉, 채굴자들은 자신들의 이익을 위해서라도 가장 최신 블록이 포함된 가장 긴 체인을 대상으로 작업을 하는 것이 합리적인 선택입니다. 이를 비트코인에서는 Longest Chain Rule
이라고 합니다.
그런데, 만약 두 채굴자(블록 생성자)가 동시에 서로 다른 블록을 만들면 어떻게 될까요? 여러분이 생각하는 ‘정답’으로 여겨지는 체인을 메인 체인(Main Chain)이라고 하는데, 여기에 포함되지 않은 블록을 고아 블록(Orphan)이라고 부릅니다. 위의 예시에서는 블록 A가 생성되어 메인체인에 포함되었고, 블록 B가 버려진 고아 블록에 해당되겠네요. 고아 블록은 올바른 작업으로부터 생성된 블록이지만, 네트워크의 선택을 받지 못하고 버려지는 블록입니다.
그런데 만약 고아 블록이 고아 상태로 남지 않고, 다른 채굴자가 그 위에 또 작업을 하고, 결국에 더 많은 선택을 받게 된다면 어떻게 될까요? 가장 긴 체인의 길이가 역전되고 메인 체인 자체가 바뀌는 결과가 발생할 가능성은 희박하지만, 0%라고 할 수는 없습니다. 만약 메인 체인이 바뀌게 된다면 관련된 거래내역은 사라지게 되는 것이지요. 만약에 여러분이 누군가에게 암호 화폐를 받았는데, 메인 체인이 바뀌어서 내가 받은 거래내역이 사라진다면 받은 암호 화폐도 사라지는 것입니다.
거래내역이 앞으로도 바뀔 가능성이 없는 것이 확실한가? 라는 특성을 나타내는 것을 블록체인의 최종성(Finality)이라고 하며 블록체인의 보안을 평가하기 위한 하나의 지표입니다.
비트코인에서는 블록이 보통 10분 간격으로 생성됩니다. 네트워크에 블록이 전파되면, 그 다음으로 새로 블록이 생성되기까지 대략 10분이 걸립니다. 10분이라는 시간은 블록이 생성되고 전파되기에 충분한 시간이기 때문에, 채굴자들이 고아 블록을 대상으로 작업할 확률이 거의 없습니다. 그렇다면, 10분이 아닌 10초가 되면 어떻게 될까요?
이더리움의 경우, 블록 생성 시간이 대략 12~14초 정도로 측정됩니다. 이 시간은 생성된 블록이 전파되고 작업을 수행하기 까지의 시간이 매우 짧습니다. 따라서 채굴자 입장에서는 고아 블록을 대상으로 작업을 할 가능성이 비트코인 보다 훨씬 높아집니다. 만약 시간이 한참 지난 후 자신이 고아 블록을 대상으로 작업을 했기 때문에 보상을 받지 못하게 된다면 채굴자 입장에서는 일을 했는데 보상은 못받은 상황이 되어 버리고, 네트워크 입장에서도 채굴자의 기여를 보안성으로 돌려 받지 못하기 때문에 서로 손해가 됩니다.
이를 위해서 이더리움은 짧아진 블록 생성 시간에 대한 대응책으로 고스트(Greedy Heaviest Object SubTree) 프로토콜이라는 방식을 채택합니다. 고스트 프로토콜이란, 가장 긴 체인이 아니라 가장 무거운 블록을 가진 블록체인을 선택하자고 약속하는 것을 의미합니다. 예를 들어, 아래 그림에서 보여지는 것처럼 비트코인은 가장 긴 체인을 선택하는 반면 이더리움은 가장 무거운 체인을 선택한다는 것을 의미합니다.
이 방식을 통해 이더리움에서는 고아 블록(이더리움에서는 현재 오메르 블록이라고 부름. 과거에는 삼촌 블록)을 생성하는 것도 보안성 향상에 기여한 것으로 판단하여, 고아 블록 위에 작업을 하게 되더라도 보상이 제공됩니다. (단, 고아블록은 기본 보상의 87.5%만 주어집니다.) 이를 통해 이더리움은 비트코인에 비해 훨씬 짧은 블록 생성 시간을 가지면서도 높은 보안성을 확보할 수 있습니다.