[Blockchan A-Z] 합의 프로토콜: 공격자에 대한 방어

bolee·2022년 7월 23일
0

Blockchan A-Z

목록 보기
8/33

MODULE 1 - BLOCKCHAIN INTUITION
08. CONSENSUS PROTOCOL: DEFENSE AGAINST ATTACKERS
09. CONSENSUS PROTOCOL: PROOF-OF-WORK (POW)

합의 프로토콜 (Consensus Protocol)

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

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

합의 프로토콜이 해결해야 하는 문제

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

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

네트워크는 악의적인 블록이 추가된 것을 어떻게 알까?

블록이 추가되기 전, 네트워크로 전파되기 전에 각 단일 노드에서 일련의 확인을 하는데 매우 엄격하게 확인한다.
만약, 모두 통과하지 않으면 블록을 기각하며, 악의적인 블록이 체인에 추가되지 않도록 한다.
그렇기 때문에 규칙에 따랐을 때 금전적인 보상을 하는 것이다.

그래서 블록이 추가되면모든 것을 확인한 후 수용 또는 기각만 할 수 있다.
네트워크가 블록을 기각하기 시작하고 모든 노드가 블록을 기각하기 시작하면 블록체인도 기각하게 된다.
그리고 해당 블록은 유효하지 않게 되고 채굴자는 페널티를 받는다.

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

대형 블록체인의 경우 전 세계적으로 분산되어 있어 멀리 떨어진 노드 사이에 지연이 발생할 수 있다. 그리고 서로 멀리 떨어진 두 노드가 동시에 채굴에 성공할 수도 있다.
내부에 다른 트랜잭션이 있을 수 있기 때문에 어떤 블록을 계속 증가시켜야 하는지 합의가 필요하다.
이러한 문제가 해결되지 않는다면 체인이 서로 충돌해 분할되어 수많은 블록체인이 생겨버린다.

만약 2명의 채굴자가 거의 동시에 한 블록을 채굴하면 동시에 채굴했다고 한다면 갑자기 체인에서 충돌이 일어난다.
각각 채굴한 블록을 다른 노드들에게 전파하는 과정에서 충돌이 발생하는데, 여기서 합의 프로토콜이 필요하다.

합의 프로토콜은 다른 블록이 추가될 때까지 기다린다. 그리고 블록이 추가되면 어떤 체인이 더 긴지 알 수 있다.
어느 쪽이든 먼저 블록을 추가하면 그 체인이 이기는 것이다.

여기서 핵심은 가장 높은 해싱 파워를 가진 네트워크에서 가장 긴 체인을 생성한다는 것이다.

해싱 파워
초당 컴퓨터에서 얼마나 많은 해시를 확인할 수 있는지를 나타낸 것

해싱 파워가 높으면 높을 수록 암호화 퍼즐을 풀 확률이 높아진다.
그래서 통계와 확률적으로 블록을 찾게 되고 그 블록이 네트워크 전반으로 전파되게 된다.

이러한 원리로 인해 충돌은 해결되고 주류 블록체인에 있지 않은 블록은 고아 블록(Orphaned Block)으로 명명된다.

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

합의 프로토콜 결론

결론적으로 합의 프로토콜은 네트워크를 보호하면서 51%의 해싱 파워를 가졌거나 50% 이상의 해싱 파워를 가진 체인이 이긴다는 것이다.

확률과 해싱 파워로 인해 50% 이상의 해싱 파워가 동의해 합의에 도달하는 한 블록체인도 합의에 도달한다.
그래서 비잔틴 장군 문제는 70% 이상이 필요하지만 블록체인에서는 합의에 도달하려면 50% 이상이 필요하기 때문에 합의 프로토콜과 프로토콜은 비잔틴 장군 문제에서의 합의 프로토콜보다 강력하다.

이는 아주 중요한 특징으로 블록체인에서 매우 중요하고 강력하다.

참고할만한 자료
Satoshi Nakamoto, (2008). Re: Bitcoin P2P e-cash paper
Amy Castor, (2017). A (Short) Guide to Blockchain Consensus Protocols

0개의 댓글