본문 바로가기
블록체인

[블록체인] 합의 알고리즘 이란?

by hayz 2023. 2. 12.

블록체인에서 혹은 비트코인 관련 글을 읽으며 PoW 혹은 PoS  등으로 불리는 약어들을 보신적 있으실 겁니다. 이번 글에서는 PoW, PoS 라고 불리우는 합의 알고리즘에 대해서 먼저 살펴보도록 하겠습니다. 

 


합의 알고리즘이란? 

비트코인은 분산장부 입니다. 즉, 수개의 노드들에 장부의 데이터가 분산되어 저장되어 있습니다. 여기서 주의할 점은, 각 노드에 부분적으로 분산되어있는 예를들어 DB 의 샤딩 , 파티셔닝 처럼 나누어서 저장되어 있는 것이 아니라 실제로 모든 데이터를 모든 노드에 가지고 있는 형태입니다. 이러한 데이터들은 변화가 있을 때마다 각 노드마다 형상을 일치시켜줘야 합니다. 그렇지 않으면, 장부의 불일치가 생기기 때문입니다. 

 

기존의 분산된 DB 도 데이터의 일관성을 유지 시켜주는 것이 주요한 해결 과제였습니다. 하지만, 기존 DB 에서는 일치시켜주는 주 대표자, primary 라고도 하는 메인 컴포넌트를 두고 그 메인에 의해 데이터가 전파되는 형태였습니다. 

 

분산장부인, 그리고 중앙시스템이 없는 블록체인에서는 이러한 데이터 불일치 문제는 중요한 쉽지 않습니다. 블록체인에서 이러한 장부의 불일치를 해소하는 방법을 고안한 것을 "합의 알고리즘" 이라고 합니다. 

 

작업 증명

기존의 주요한 시스템 들에서는 데이터의 정합성을 확인하고 각 노드간의 데이터를 일치시키기 위해 여러 노드를 사용하고, 각 노드에서 최소 과반수 이상의 데이터가 일치하면 해당 데이터를 옳은 (악의적이지 않은) 값이라고 판단했습니다. 즉, 노드를 여러개 사용할 수록, 악의적인 노드가 하나 껴있어도, 정직한 노드의 갯수를 넘지 않는 이상 데이터가 깨지지 않는 다는 설정이었죠. 

 

하지만, 이와 같은 방식을 사용했을때 생길수 있는 점이 모든 노드가 정합성을 확인해야 하는 것이고, 그리고 그 모든 노드들의 결과를 취합하며 서로 통신을 주고 받아야 한다는 점입니다. 이렇게 되면, 노드의 수가 늘어날 수록 통신량은 그 배 이상으로 늘어날 것이므로, 대규모 분산 시스템에서는 비효율적인 방법이었습니다. 

모든 노드간 통신 예시 (출처: https://d5ngs.tistory.com/30)

 

그렇기에, 비트코인에서는 합의 알고리즘으로 작업 증명 방식인 PoW 를 선택하였습니다. 

 

PoW 란 Proof of Work 의 약자로, 즉 작업 증명이라는 뜻으로 해석될 수 있습니다. 이는 각 노드에서 가장 많은 작업을 투입하여 가장 먼저 일을 끝낸 노드가 대표자가 되어 다른 노드들은 이 대표자가 만든 블록을 전파 받는 방식으로 이어가게 됩니다. 

비트코인의 기준으로 말씀 드리면, 비트코인은 10분마다 블록이 생성되고 생성된 블록을 체인에 연결하게 되는데 이때 블록을 생성하는 주체가 특정 노드에 권한을 주는 것이 아닌, 모든 노드가 대표 블록을 생성할 수 있습니다. 이 대표 블록을 생성하는 방법은 주어진 연산을 하게 되는 것인데 가장 빨리 이 연산을 끝마친 노드가 해당 블록의 대표자가 되어 각 노드에 전파를 시키게 됩니다. 

 

pow 이미지 (출처: https://upbitcare.com/academy/education/blockchain/206)

 

여기서 한가지 알아두면 좋을 것은 이 연산이란 랜덤의 확률로 요구하는 값을 찾는 과정입니다. 예를 들어, 친구가 1 부터 100사이의 특정 숫자를 마음속으로 생각하고 있고 내가 그 숫자를 맞춰야 하는 사람이라면 그 숫자를 맞추는 방법은 1부터 100까지 순서대로 얘기하면서 맞추는 방법이 있을 겁니다. (기회가 무한정이라는 가정 하에..)   그렇다면 내가 1 부터 넣었을 때 친구가 만약 5를 생각하고 있다면 나는 다섯번 만에 정답을 맞추는 것이고 친구가 99를 생각하고 있었다면 나는 99번 만에 답을 찾는 것입니다. 

 

비트코인에서의 PoW 는 위 처럼 랜덤의 성향을 띈 연산이므로 "대표 블록은 가장 많은 연산을 수행한 노드의 블록이다" 라고 할 수 없지만, 평균적으로 많은 연산 작업을 한 노드가 대표자로 선정이 될 뿐입니다. 

 

 

 

 

 

 

댓글