본문으로 건너뛰기

최장 체인 규칙

장부가 두 갈래로 갈라질 때

전 세계의 채굴자들이 각자 만든 후보 블록으로 같은 작업증명 조건에 도전하다 보면 아주 가끔 두 채굴자가 거의 동시에 답을 찾을 수 있습니다. 그러면 다음 장부 페이지가 두 개가 되고, 네트워크는 잠시 서로 다른 장부를 들게 됩니다.

새 페이지 소식이 전 세계에 도착하는 데는 시간이 걸립니다. 한 지역에서 만들어진 페이지가 지구 반대편에 전달되는 몇 초 사이에 다른 곳에서 또 다른 페이지가 나올 수 있습니다. 중앙 본점이나 심판이 없다면 어느 페이지를 기준으로 다음 기록을 이어 갈지 정하는 규칙이 필요합니다.

비트코인은 이런 갈림이 생겼을 때 유효한 체인 가운데 누적 작업량이 가장 큰 체인을 기준으로 삼습니다. 이를 흔히 최장 체인 규칙이라고 부릅니다. 여기서 ‘최장’은 단순히 블록 수가 가장 많은 체인을 뜻하지 않습니다.

두 갈래 벽돌길

벽돌을 한 장씩 이어 붙여 길을 놓는다고 생각해 보겠습니다. 여기서는 모든 벽돌이 같은 난도로 만들어졌다고 가정합니다. 마을 사람들은 가장 멀리까지 이어진 길을 진짜 길로 사용합니다.

어느 날 길 끝이 두 방향으로 나뉘어 왼쪽에도 벽돌 한 장, 오른쪽에도 벽돌 한 장이 놓입니다. 일꾼들은 각자 먼저 전달받은 쪽을 이어서 작업할 수 있습니다. 얼마 지나지 않아 한쪽에는 벽돌이 두 장, 다른 쪽에는 한 장만 놓일 수 있습니다.

그러면 일꾼들은 더 멀리 뻗은 쪽으로 옮겨 갑니다. 한 장에서 멈춘 쪽에 놓였던 벽돌은 주된 길에서 빠집니다. 이 과정에는 별도의 회의나 투표가 필요하지 않습니다. 모두가 같은 잣대를 사용하기 때문에 갈림이 정리됩니다.

가장 긴 체인은 누적 작업량이 큰 체인입니다

‘가장 긴 체인’이라는 말은 블록 수만 세는 방식이 아닙니다. 블록마다 채굴 난도가 다를 수 있으므로, 체인에 쌓인 누적 작업량을 기준으로 합니다.

누적 작업량은 채굴자가 실제로 시도한 해시 횟수를 직접 세는 값이 아닙니다. 블록의 목푯값과 난이도에서 계산되는 각 블록의 기대 작업량을 합산한 값입니다. 같은 수의 블록이 쌓였더라도 더 어려운 문제를 풀어 만든 블록들이 포함된 체인이 더 큰 누적 작업량을 담을 수 있습니다. 따라서 비트코인에서 기준으로 삼을 체인을 고를 때는 단순한 페이지 장수가 아니라 누적 작업량을 봅니다. 비트코인 개발자 문서도 체인 선택을 누적 작업량과 유효성에 따라 설명합니다.

이 규칙은 유효한 체인들 사이에서만 적용됩니다. 없는 비트코인을 만들어 넣거나 서명이 틀린 거래를 담은 블록은 다른 참가자들이 받아들이지 않습니다. 규칙을 어긴 체인은 작업량을 비교하기 전에 탈락합니다.

갈림은 어떻게 정리될까요?

두 채굴자가 거의 동시에 블록을 찾으면, 다른 채굴자들은 각자 먼저 전달받은 유효한 블록 위에 다음 블록을 만들기 시작할 수 있습니다. 다음 블록이 한쪽 체인 위에 먼저 쌓이면 그쪽의 누적 작업량이 커집니다.

네트워크의 참가자들은 더 많은 작업이 쌓인 유효한 체인을 기준으로 삼고, 다른 쪽에서 작업하던 채굴자들도 그 체인으로 옮겨 갑니다. 이처럼 잠시 생긴 갈림은 관리자가 직접 정리하지 않아도 시간이 지나면서 하나의 주된 체인으로 수렴합니다.

승부에서 밀려난 체인에 포함된 거래가 모두 사라지는 것은 아닙니다. 그 체인에 실려 있던 거래 중 유효한 거래는 대기 중인 거래로 돌아가 다음 블록에 다시 포함될 수 있습니다. 달라지는 것은 그 블록이 채택된 체인에 속하는지 여부이며, 그에 따라 거래의 확인 상태도 바뀝니다.

확인이 쌓일수록 확실해지는 이유

갓 블록에 들어간 거래는 아직 완전히 굳은 상태가 아닙니다. 다른 갈림이 생기면 그 블록이 주된 체인에서 밀려날 가능성이 남아 있기 때문입니다.

그 위에 다음 블록이 쌓이면 거래를 되돌리려는 쪽은 그 이후의 작업까지 다시 따라잡아야 합니다. 블록이 더 많이 쌓일수록 필요한 작업량과 비용이 커집니다. 그래서 거래소 등에서는 거래가 여러 차례 확인될 때까지 기다리기도 하며, 흔히 여섯 번의 확인을 기다리는 관행이 알려져 있습니다.

다만 이 구조에서 완전한 확정이 어느 한 순간에 발생하는 것은 아닙니다. 백서의 분석에서는 정직한 측이 공격자보다 계산 능력에서 우위에 있다는 조건에서, 확인이 쌓일수록 공격자가 따라잡을 가능성이 낮아집니다.

사람 수를 세는 투표가 아닙니다

최장 체인 규칙은 참가자 수를 세는 다수결이 아닙니다. 사람 수를 기준으로 하면 계정을 많이 만드는 방식으로 결과를 왜곡할 수 있습니다.

여기서 비교하는 것은 블록별 기대 작업량을 합산한 누적 작업량입니다. 따라서 체인을 뒤집으려는 쪽은 실제 채굴 장비와 전기를 사용해 더 큰 누적 작업량을 가진 유효한 체인을 만들어야 합니다. 이것이 작업증명과 최장 체인 규칙이 연결되는 지점입니다.

정리

최장 체인 규칙은 다음과 같이 정리할 수 있습니다.

  • 네트워크 지연으로 장부가 잠시 여러 갈래로 나뉠 수 있습니다.
  • 참가자들은 규칙에 맞는 유효한 체인만 비교합니다.
  • ‘최장’은 단순한 블록 수가 아니라 블록별 기대 작업량을 합산한 누적 작업량이 가장 큰 체인을 뜻합니다.
  • 더 많은 작업이 쌓인 체인을 기준으로 삼으면 잠시 생긴 갈림이 하나로 정리됩니다.
  • 밀려난 체인의 유효한 거래는 대기 상태로 돌아가 다시 포함될 수 있습니다.
  • 시간이 지나 블록이 더 쌓일수록 거래를 뒤집는 비용이 커집니다.

관련 개념은 작업증명, 고아 블록, 이중 지불에서 함께 확인할 수 있습니다.

링크 복사하기X에 공유페이스북에 공유쓰레드에 공유