Unborn 8.0 Yellow Pointer
본문 바로가기
프로그래밍/블록체인

[블록체인] 블록체인 A-Z : 블록체인의 이해 3 - 비잔틴 장애 허용 및 합의 프로토콜

by 에삐니 2022. 8. 9.
728x90

비잔틴 장애 허용(BFT; Byzantine Fault Tolerance)

비잔틴 장애 허용에 대해 알아볼 것입니다. 이는 블록체인뿐만 아니라 모든 형태의 탈중앙화 시스템에서도 아주 중요한 특징입니다.

비잔틴 장애 허용 문제 이해하기

비잔틴 장애 허용을 알기 위해서는 두 장군의 문제와 여기서 파생된 비잔티움 장군의 문제를 먼저 알아야 합니다.

비잔티움 제국이 공격하여 점령하고자 했던 성이 있었다고 가정합니다.

네 명의 장군이 있고 과반수의 동의가 있어야 행동을 개시하고 전투에서 이길 수 있습니다. 하지만, 합의점을 찾지 못해 혼란을 겪게 되면 적에게 당할 것 입니다. 전달된 정보에 대한 다수결의 알고리즘으로 장군들은 전달된 정보에 기반해 의사결정을 내립니다. 이 알고리즘을 비잔틴 장애 허용이라고 합니다. 모든 장군이 합의에 도달한다면 아무런 문제가 없습니다.

여기서 적과 내통하는 부대가 존재해 잘못된 정보와 원래 정보가 같이 퍼진다면, 이 성을 점령할 수 있을 것인지에 대한 것이 비잔티움 장군 문제입니다.

 

블록체인과 비잔틴 장애 허용

이러한 비잔틴 장군의 문제를 블록체인에 적용해 본다면, 각 장군은 하나의 노드가 되며, 노드들은 현 시스템 상태에 합의를 달성할 수 있는 방법을 찾아야 합니다. 분산화된 네트워크의 대다수의 참가자들은 완전한 실패를 막기 위해 동일한 행동을 하기로 결정하고 이를 실천해야 하는 것 입니다.

그러므로, 분산화된 시스템에서 이러한 합의를 달성할 수 있는 유일한 방법은 최소 3분의 2 혹은 그 이상의 신뢰할 수 있는 정직한 네트워크 노드를 확보하는 것입니다.

이는 네트워크 참여자 대다수가 악의적으로 행동하기로 결정할 경우, 시스템이 실패하거나 공격당할 수 있음을 의미합니다. 간단히 말해, 비잔티움 장애 허용은 비잔티움 장군 문제의 딜레마에서 파생되는 실패들을 막기 위한 시스템입니다.

그리고 이 개념은 블록체인뿐만 아니라 다양한 분야에서 사용됩니다. 예를 들어서 모든 시스템이 서로 활발히 대화하는 비행기, 핵발전소, 로켓 등에 적용됩니다.

비록 비잔틴 제국의 장군에 대한 간단하고 비현실적인 이야기처럼 보일 수 있지만 아주 거대한 개념인 것입니다. 특히, 구성 요소가 많은 탈중앙화된 시스템에서는 더욱 중대한 개념이며 블록체인은 그들 중 하나에 속합니다.

 

합의 프로토콜 : 공격자에 대한 방어와 작업증명(PoW)

합의 프로토콜(Consensus Protocol) 이란?

비잔틴 문제 즉, 장군이 어떤 명령을 들어야 하는지 공격해야 하는지, 후퇴해야 하는지 이해하는 문제를 해결하기 위해 블록체인은 합의 프로토콜을 생각했습니다.

합의 프로토콜은 분산 네트워크 참가자 간의 합의를 달성하는데 사용되는 프로세스로 이러한 블록체인을 위한 합의 프로토콜은 2가지 문제를 해결해야 합니다.

 

문제와 해결방법

1. 공격자로부터 네트워크 보호

공격자가 체인의 중간 어딘가를 공격하는 것이 아니라 체인의 끝에 블록을 놓고 고의적으로 새로운 블록을 추가하려고 할 때의 네트워크 보호문제를 해결해야 합니다.

네트워크는 악의적인 블록이 추가되기 전에 각 단일 노드에서 일련의 확인을 매우 엄격하게 확인합니다.
이전 블록이 메인 블록의 이전 해시 필드와 일치하는지 확인하고 타임 스탬프를 확인하고 트랜잭션이 비어있지 않은지 등을 확인합니다. 그 외에도 많은 내용이 있으며 모두 통과하지 않으면 블록을 기각합니다.

결국에는 악의적인 블록이 체인에 추가되지 않도록 합니다. 그래서 규칙에 따랐을 때 금전적인 보상을 하는 것입니다.

2. 블록체인의 경쟁 체인 문제

블록체인의 경쟁 체인 문제를 해결해야 합니다. 대형 블록체인의 경우 전 세계적으로 분산되어 있어서 특히 서로 멀리 떨어진 노드 사이에 지연이 발생할 수 있습니다. 또한 멀리 떨어진 두 노드가 동시에 채굴에 성공할 수도 있습니다.

공격자가 있거나 고의적인 것이 아니었더라도 블록을 채굴하면 정보가 도달하기까지 시간이 걸리기 때문입니다. 계속 증가하는 방법에 관한 합의가 필요하기 때문에 문제가 되는 것 입니다.

위 그림과 같이 노란색과 보라색 블록 중 어떤 블록을 계속 증가시켜야 하는지 합의가 필요합니다. 이러한 블록은 내부에 다른 트랜잭션이 있을 수 있기 때문에 두 블록을 수용하고 두 노드 사이에서 필드를 분할할 수 없습니다.

합의에 도달하지 않고 합의 프로토콜이 없으면 두 체인이 서로 충돌해 2개로 분할됩니다. 결국에는 완전히 분할된 수 많은 블록체인이 생기게 되는 문제가 발생합니다.

이는 각각 채굴한 블록을 다른 노드들에게 전파하는 과정에서 합의 프로토콜로 다른 블록이 추가될 때까지 기다리면 됩니다. 블록이 추가되면 어떤 체인이 더 긴지 알수 있고 가장 높은 해싱 파워를 가진 네트워크에서 가장 긴 체인을 생성합니다.

해싱 파워가 높으면 높을 수록 암호화 퍼즐을 풀 확률이 높아지고 통계와 확률적으로 블록을 찾게 되고 그 블록이 네트워크 전반으로 전파되게 됩니다. 이러한 원리로 인해 충돌은 해결되고 주류 블록체인에 있지 않은 블록은 고아 블록(Orphaned Block)으로 명명됩니다.

고아 블록은 채굴자들이 채굴했지만, 주류 블록체인에 포함되어 있지 않아 블록의 트랜잭션과 보상이 더이상 유효하지 않게 됩니다.

 

합의 프로토콜 결론

블록체인에서 합의 프로토콜의 의미는 51%의 해싱 파워를 가졌거나 50% 이상의 해싱 파워를 가진 체인이 이긴다는 것입니다. 블록체인에서는 우리가 다뤘던 비잔틴 장군 문제와는 달리 30% 이상의 악의적인 참여자나 배신자가 있으면 합의에 도달하지 못합니다.

블록체인에서는 확률과 해싱 파워로 한쪽에 50% 이상의 해싱 파워를 가지고 50% 이상의 해싱 파워가 동의해 합의에 도달하는 한 블록체인도 합의에 도달합니다. 그래서 합의 프로토콜과 프로토콜은 비잔틴 장군 문제에서의 합의 프로토콜보다 강력합니다.

즉, 비잔틴 장군 문제는 70% 이상이 필요하지만 블록체인에서는 합의에 도달하려면 50% 이상이 필요합니다. 이는 아주 중요한 특징으로 블록체인에서 매우 중요하고 강력합니다.

728x90
반응형

댓글