본문으로 건너뛰기

비잔틴 장군 문제

서로 믿을 수 없는 참가자의 합의

전 세계의 수많은 컴퓨터가 하나의 장부를 함께 기록하려면, 정직한 참가자들이 같은 기록과 같은 결론에 도달해야 합니다. 그러나 참가자들은 서로 얼굴도 이름도 모르며, 그중에는 장부를 조작하려는 공격자나 고장 난 컴퓨터가 섞여 있을 수 있습니다.

은행 장부라면 은행이 심판이 됩니다. 의견이 충돌하면 은행이 관리하는 기록을 기준으로 정리할 수 있습니다. 비트코인의 전체장부에는 그런 중앙 심판이나 관리자, 가입 심사 기관이 없습니다. 누구나 참여할 수 있는 환경에서 서로 믿을 수 없는 참가자들이 하나의 장부를 맞춰 가야 합니다.

이처럼 배신자가 섞인 참가자들이 중앙 심판 없이 정직한 참가자 사이에서 하나의 결정에 합의해야 하는 난제를 비잔틴 장군 문제라고 합니다.

장군과 전령의 비유

여러 부대가 적의 도시를 포위하고 있다고 생각해 보겠습니다. 성벽이 단단해서 모든 부대가 같은 시각에 공격해야만 도시를 함락할 수 있습니다. 절반만 공격하면 그 부대가 몰살당할 수 있으므로, 정직한 장군들이 공격하거나 후퇴하는 등 같은 결정을 내려야 합니다.

하지만 장군들은 서로 멀리 떨어져 있어 한자리에 모일 수 없습니다. 전령이 나르는 쪽지로만 의견을 주고받아야 합니다. 시간도 넉넉하지 않습니다. 결정을 미루는 동안 성벽이 보수되고 적의 지원군이 가까워질 수 있습니다.

더 어려운 점은 장군 중에 배신자가 섞여 있다는 것입니다. 배신자는 공격에 찬성하는 장군에게는 찬성한다고 전하고, 후퇴를 주장하는 장군에게도 찬성한다고 말할 수 있습니다. 그러면 정직한 장군들이 서로 다른 결정을 내릴 수 있고 작전 전체가 무너집니다.

핵심은 배신자가 서로 다른 장군에게 모순된 내용을 전할 수 있다는 점입니다. 쪽지를 잘 받았다는 확인만으로는 서로 일치하지 않는 명령을 해결할 수 없습니다. 정직한 장군들이 같은 결정에 도달할 수 있는 절차가 필요합니다. 램포트·쇼스탁·피즈의 원 논문

비잔틴 장애 허용

비잔틴 장애 허용은 배신자나 고장 난 참가자가 섞여 있어도 정직한 참가자들이 같은 결론에 도달하고, 그 결론을 지켜 내는 성질을 말합니다. 여기서 ‘허용’은 배신자를 봐준다는 뜻이 아니라, 배신자가 있어도 정직한 참가자 사이의 합의가 무너지지 않는다는 뜻입니다.

비잔틴 장애 허용은 배신자를 찾아내 쫓아내는 기능과 같지 않습니다. 비트코인은 모든 공격자를 끝까지 알아내는 방식에 의존하지 않습니다. 정직한 해시레이트가 우세하고 참가자들이 규칙에 따라 블록을 검증한다는 조건 아래, 누가 거짓말을 하는지 모두 식별하지 않아도 정직한 노드들이 같은 장부로 수렴하도록 설계됩니다.

비트코인은 말에 비용을 붙입니다

비트코인은 이 문제에 작업증명을 사용합니다. 다음 장부 페이지를 제안하려면 막대한 계산을 먼저 수행해야 합니다. 장비를 마련하고 전기를 사용해야 하므로, 블록을 제안하는 행위에 실제 비용이 듭니다.

우화 속 배신자는 쪽지를 공짜로 여러 장 보낼 수 있었습니다. 비트코인에서는 장부를 추가하려는 시도에 계산 비용이 붙습니다. 네트워크 참가자들은 규칙을 지키는 유효한 체인 가운데 누적 작업량이 가장 큰 기록을 따릅니다. 규칙에 어긋난 기록은 작업량이 많더라도 받아들여지지 않습니다.

합의를 뒤집으려는 공격자가 전체 해시레이트의 과반을 확보하면 지속적인 작업증명 경쟁에서 우위를 갖게 됩니다. 흔히 51% 공격이라고 부르는 상황이 이 조건과 관련됩니다. 다만 과반 미만이라고 해서 공격 성공 가능성이 0이 되는 것은 아닙니다. 정직한 해시레이트가 우세하고 확인이 쌓일수록 공격자가 뒤쫓아갈 확률이 낮아집니다. 비트코인 백서는 공격자의 해시레이트 비율과 확인 수에 따른 성공 확률을 설명합니다.

핵심은 사람 수가 아니라 작업에 투입된 계산 능력입니다. 거짓말에 비용을 붙여 규칙을 지키는 행동이 더 지속 가능한 선택이 되도록 만든 구조입니다.

다만 이 설명은 정직한 참가자의 해시레이트가 우세하고, 노드가 규칙에 따라 블록을 검증하며, 네트워크가 합의에 필요한 통신 조건을 갖춘다는 전제를 바탕으로 합니다. 비잔틴 장애 허용은 모든 노드가 항상 즉시 같은 장부를 갖거나 모든 상황에서 자동으로 올바른 결과를 보장한다는 뜻이 아닙니다. 블록이 동시에 전파되거나 네트워크가 지연되면 잠시 견해가 갈릴 수 있고, 시간이 지나 작업증명 경쟁을 거치며 수렴합니다.

신뢰할 사람을 고르지 않아도 되는 구조

네트워크의 컴퓨터는 인터넷 저편에 있는 상대가 정직한지 직접 확인하기 어렵습니다. 장군의 쪽지는 거래 기록이 되고, 배신자는 장부를 조작하려는 공격자가 됩니다.

그럼에도 작업증명과 합의 규칙이 작동하면 상대방의 신원을 확인하거나 믿을 사람만 선별하지 않고도 정직한 노드들이 같은 장부를 사용할 수 있습니다. 믿을 수 있는 사람만 심사해 참여시키는 방식도 가능하지만, 그 순간 누구나 참여할 수 있는 성질을 잃게 됩니다.

비잔틴 장군 문제와 비잔틴 장애 허용은 다음처럼 구분할 수 있습니다.

  • 비잔틴 장군 문제: 배신자가 섞인 참가자들이 중앙 심판 없이 정직한 참가자 사이에서 같은 결정에 합의해야 하는 난제입니다.
  • 비잔틴 장애 허용: 배신자나 고장 난 참가자가 있어도 정직한 참가자 사이의 합의를 유지하는 성질입니다.
  • 비트코인의 접근: 작업증명으로 장부를 제안하는 행위에 비용을 붙이고, 규칙을 지킨 유효한 체인 가운데 누적 작업량이 가장 많이 쌓인 기록을 따릅니다.

관련 개념은 작업증명, 최장 체인 규칙, 51% 공격에서 확인할 수 있습니다.

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