안녕하세요 여러분. 참새입니다.
이번 시간에는 비트코인 네트워크가 블록 타임(block time)을 쉽게 줄이지 못하는 이유에 대해서 간단하게 알아보겠습니다!
비트코인을 주고 받아보신 분들은 아시다시피 비트코인 네트워크의 처리 속도가 무.지.하.게. 느린 것을 체감하셨을 겁니다. 간단하게 생각해보면, 비트코인의 블록 타임이 줄어들면 더 많은 블록들이 더 짧은 시간 동안에 생성될 수 있기 때문에 비트코인 네트워크가 기능적으로 향상될 수 있을 것 같습니다 (상식적으로는 그렇지 않나요? ㅎㅎ).
하지만, 스테일 블록 (stale block)이라는 존재 때문에 비트코인의 블록 타임이 10분보다 훨씬 더 낮은 시간으로 줄어든다면 비트코인 네트워크가 큰 혼란에 쌓일 수 있습니다.
그렇다면 스테일 블록은 무엇인가요?
스테일 블록은 채굴자에 의해 올바른 형식으로 채굴된 블록이지만 현재의 블록 체인에 업데이트되지 못한 블록을 뜻합니다. (네????)
비트코인 블록이 추가되는 순서를 보면서 예를 들어보겠습니다.
(1). 인증되지 않은 거래(transactions)들이 있습니다.
(2). 채굴자들이 자신들이 속한 pool에 있는 거래들을 보고 어떤 거래들을 다음 블록에 추가할 건지 고릅니다.
(3). 채굴자들이 다음 블록을 채굴하기 위해 경쟁합니다.
(4). 가장 먼저 proof-of-work 컴퓨터 퍼즐을 푼 채굴자는 자신이 고른 거래들 정보와 블록들을 블록 체인에 추가할 수 있습니다.
자, 여기까지는 모든 분들이 아시는 기본적인 거래 처리 순서입니다. 그렇다면, 만약에 채굴자들이 다음 블록을 채굴하기위해 경쟁할 때, 미국에 살고 있는 ‘참새’와 독일에 살고 있는 ‘비둘기’가 블록을 동시에 같은 시간에 채굴하게 되면 어떤 일이 생길까요?
참새와 비둘기가 블록을 불법적으로 채굴하는 것이 아니기 때문에 참새가 채굴한 블록과 비둘기가 채굴한 블록은 동시에 비트코인 네트워크에 전파되게 됩니다. 네트워크 내에서도 전파되는 위치와 주변에 있는 노드(node)들이 다르기 때문에, 미국 근처에 있는 노드들은 참새의 블록의 정보를, 독일에 있는 노드들은 비둘기의 블록의 정보를 먼저 알게 되겠죠.
그렇다면, 미국에 노드가 더 많다면 다수결로 더 많은 노드들이 블록 정보를 갖고 있는 참새의 블록이 블록 체인에 추가가 되는 걸까요? 아닙니다!
어떤 블록이 추가가 될 지는, 다음 채굴자가 참새나 비둘기 중 누구의 블록 위에 새로운 블록들을 추가하는지에 따라서 결정됩니다.
비트코인 네트워크에서는 다양한 버전의 블록 체인이 존재하게 될 때 가장 긴 블록 체인을 고르고 짧은 블록 체인을 버리게 되는데요, 참새와 비둘기 예의 경우를 볼 때 참새와 비둘기 다음으로 비트코인을 채굴한 채굴자가 블록을 참새의 블록 위에 추가한다면 참새의 블록이 블록체인에 추가가 되고, 반대로 비둘기의 블록 위에 추가한다면 비둘기의 블록이 블록체인에 추가가 됩니다 (블록 체인 길이가 더 긴 것이 승리하니까요^^).
이런 경우에 블록체인에 추가되지 못하고 버려진 블록을 ‘스테일 블록’이라고 합니다. 스테일 블록이 네트워크에서 거래들을 처리하는 과정에서 도움이 되는 것은 아니란 느낌은 모두들 받으셨나요? 스테일 블록들이 많아질 수록 거래 처리 과정은 더 복잡해지고 혼란스러워질 것 입니다!
모든 것들을 정리해보자면, 비트코인 네트워크의 블록 타임이 줄어든다면 더 많은 블록들이 더 짧은 시간 내에 생성될 테고, 더 많고 새로운 블록들이 생성되는 정보들이 네트워크 내에서 전파되어야 함으로 스테일 블록들이 결과적으로 더 많이 생성되게 됩니다. (블록 타임이 10분일 때 스테일 블록이 5개 생겼었다면, 블록 타임이 5분일 때는 더 많은 정보들이 네트워크 내에서 노드들한테 전파되어야 하기 때문에 5개보다 많은 스테일 블록들이 생성되게 되겠죠!)
이러한 점 때문에 비트코인 네트워크 내에서 처리되는 정보들이 모든 노드들에게 충분한 시간을 갖고 전달될 수 있는 블록 타임이 필요하게 됩니다. 결론적으로 블록 타임을 줄인다고 비트코인 네트워크의 기능성 향상이 이루어지는 것은 아니라고 볼 수 있겠네요 ^^