작업증명(PoW, Proof-of-work)을 설명드리기 전에 비잔틴 장군의 문제를 다시 한 번 살펴보겠습니다.
비잔틴 장군들이 적군의 성을 공격하기 위해 합의하는 문제로 가정된 상황은 아래와 같습니다.

1. 각 장군들이 일정 비율 이상 합동 출병해야 적에게 승리할 수 있음
2. 각 장군들은 전령을 통해 한 번에 일제히 공격 가능한 시간을 연락할 수 있지만 기타 사고 등으로 인해
   전령의 연락이 불가능할 수 있음
3. 각 장군들은 가장 근처의 장군에게 연락 가능함
4. 각 장군들 중 배신자가 존재하며 배신자는 실제 메시지와 다른 공격 시간으로 위조가 가능


어떻게 하면 배신자와 각종 사고의 위험으로부터 적에게 승리를 할 수 있을까요?
작업증명(PoW, Proof-of-work)을 위의 문제에 빗대어 설명해보겠습니다.

3명의 장군이 있고 전령의 메시지는 암호화를 통해 전달되며 암호화 하는데 걸리는 시간은 10분이며

암호화 시 10분이 걸렸다는 증표와 함께 메시지를 전달한다고 가정합시다.


▶ 1번 장군은 새벽 1시에 공격을 하자라는 메시지를 암호화하여 2번 장군에게 전달합니다.
▶ 2번 장군은 1번 장군의 메시지를 확인 후 1번 장군의 메시지와 자신의 메시지를 암호화 하여 

   새벽 1시에 공격을 하자고 3번 장군에게 전달합니다.
▶ 3번 장군도 2번 장군의 메시지를 정상적으로 확인하는 경우 공격에 성공하게 됩니다.

하지만 배신자가 존재한다면 얘기는 달라집니다.


만약 2번 장군이 3번 장군에게 새벽 1시가 아닌 오후 1시로 전달하게 된다면 공격이 실패하게 됩니다.

여기서 가장 중요한 키포인트는 !!

10분의 시간을 들였다는 증거를 포함하고 있다는 것과 이전 메시지 내역들을 연결해서

데이터를 전송해야 한다는 점입니다.


2번 장군이 배신자라면 10분 동안 암호화 하며 동시에 이전 메시지들을 모두 바꿔 보내야 하는데 

이것은 사실 불가능하다고 보고 있기 때문입니다.

사실 비잔틴 장군 3명의 한정된 예시로만 설명하기에는 적절하지 않습니다.
블록체인 네트워크 상에서 암호화 하여 다음 PC에 메시지를 전달하며 신뢰성을 유지하는 과정은 

다수의 네트워킹 PC들이 경쟁을 통해 다른 메시지를 보내게 되기 때문인데요~


메시지 간의 데이터가 유효한지 검증은 다수의 연결되어있는 네트워킹 PC에서 과반 이상(51%)의 메시지가

맞다고 할 때에만 다음 메시지로의 연결이 가능합니다.

 

이전에 연결되어 있는 메시지들을 바꿔 연결하려면 나머지 과반 이상(51%)의 메시지를 변조해야 하는데

메시지를 변조하는 시간보다 이미 다른 네트워킹 PC에서 변조하지 않은 데이터와 함께 암호화해서

보내는 것이 훨씬 빠르므로 사실 상 데이터의 위변조가 불가능하게 됩니다.

 

기존 위변조된 블록들은 다음 검증에서 별도로 분리되며 분리된 블록들은 다수의 검증이 이루어지지 않고

정상적인 메시지만 하나의 메시지 블록(Block)형태로 연결(Chaining)되어 신뢰를 가진 데이터가 존재할 수

있게 됩니다.

이 때 네트워킹PC들에게 적절한 보상이 없이는 유지되기 힘들 것입니다.

따라서 암호화 및 검증을 하는 PC에게 보상의 의미로 비트코인 등을 지급하게 되는 것입니다.

실제로 어떻게 동작하는지에 대한 상세한 내용이 더 궁금하시다면 아래의 동영상을 참고해주세요.

 

 

읽어주셔서 감사합니다.

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기