합의 알고리즘 개념(Concept)

 

 

알고리즘이랑 어떤 주어진 상황에서 문제를 해결하기 위한 방법을 말한다. 하나의 수학문제가 주어졌을 때, 이를 푸는 방법은 사람들마다 다를 것이다. 그 대표적인 방법들을 알고리즘이라고 하는 것이다. 따라서 합의 알고리즘도 어떤 주어진 상황에서 문제를 해결하기 위한 방법 중 하나이며, 그 상황이 합의를 봐야하는 상황이고 이를 해결하는 방법이 알고리즘이라는 것이다. 참고로, 이러한 상황을 가진 문제 일반적으로 의사결정문제로 구분된다.

 

 

Real World(실제 세계)

실제 세계에서 정의

여러 사람들이 한가지 결정을 위해 합의를 보기 위한 방법이다.

 

실제 세계에서 예시(example)

10명의 수학 동아리 방의 학생들이 5+5=? 문제를 풀려고 한다. 학생들마다 답이 조금씩 달랐지만, 진짜 답 한가지를 합의를 보기 위한 가장 쉬운 방법은 과반수 동의이다. 그래서 반이상의 답이 10이었기 때문에 모두 10을 진짜 답이라고 하고 넘어갔다. 만약 반이상이 11이라고 답을 했다면, 모두가 11을 진짜 답으로 했을 것이다.

 

Digital World(컴퓨터 세계)

컴퓨터 세계에서 정의

P2P(Peer to Peer) 네트워크 시스템 위에 있는 서로 모르는 노드(PC)들끼리 한가지 결정을 위해 합의를 보기 위한 알고리즘이다.

 

컴퓨터 세계에서 예시(example)

토렌트(Torrent)에서 캡틴 마블(Captain Marvel)영화를 다운받으려고 한다. 검색을 해보니 1000명이 이 영화를 자기 PC에 가지고 있다고 나온다. 모두 동일한 영화를 가지고 있다고 하지만, 영화 크기가 조금씩 다르다. 하지만 진짜 영화라는 합의를 보기 위해 토렌트에서 채택한 설계방법은 51%이상이 동일한 영화 크기를 가지고 있는 영화를 진짜로 보는 것이다. 그래서 나는 토렌트가 진짜라고 추천해준 영화를 다운 받았다. 만약 1000명중 51%이상이 진짜를 들고 있었다면, 내가 다운받은 영화는 진짜였겠지만, 아니었다면, 내가 다운받은 영화는 바이러스가 걸린거나 다른 영화였을 수도 있다.

※ 예시일 뿐, 토렌트는 이러한 합의 알고리즘을 사용하지 않는다.

 

Block Chain World(블록체인 세계)

블록체인 세계에서 정의

블록체인 네트워크 시스템 위에 있는 서로 모르는 노드(PC)들끼리 사람들의 거래(Transaction)내역을 모두 기록해서 그 기록이 진짜라는 것이라는 합의를 보기 위한 알고리즘이다.

 

블록체인 세계에서의 예시(example)         

내 비트코인(BTS)계좌에는 현재 100 BTS가 있고, 이 중에 친구계좌로 10 BTS를 송금을 하려한다. 블록체인에 참여중인 2000개의 모든 노드들이 가지고 있는 블록 내용은 모두 동일해야하지만, PC관리를 잘 못했기 때문에 데이터가 일부분 깨져서 조금씩 다를 수는 있다. 하지만 비트코인 블록체인 시스템의 합의 알고리즘은 51%이상의 노드가 가진 데이터가 동일하기만 하다면 진짜라고 보고 있기 때문에, 대부분 노드의 블록에는 내 계좌에 100 BTS가 있다고 기록되어있을 것이다. 그래서 내가 친구에게 송금을 하고나면 내 계좌에서는 90 BTS가 남아있을 것이다. 하지만, 내가 해커를 고용해서 51%의 노드에 기록된 내 계좌의 기존 금액을 100 BTS에서 1000 BTS로 수정한다면 990 BTS가 남아있을 것이다.

※ 예시일 뿐, 비트코인은 이러한 합의 알고리즘을 사용하지 않는다. 자세한 내용은 비트코인 합의 알고리즘인 PoW(Proof of Work)를 통해 알 수 있다.