합의 알고리즘

김태주·2021년 3월 16일

세션

목록 보기
1/1

합의 알고리즘이란?

악의적인 사람이 존재할 때 다수가 합의해 같은 결정을 내리는 알고리즘.

합의 알고리즘의 특성

  1. safety: 어떤 노드가 합의를 했다면 그 합의된 결과는 모든 노드가 봐도 동일하다.
  2. liveness: 합의 대상이 정당하다면 그 합의는 무조건 성립한다.

합의 알고리즘의 목표

모든 노드가 동일한 원장을 가지는 것이다.

합의 알고리즘 종류

1. PoW (Proof of Working)

목표값 이하의 해시값을 찾는 것을 무수히 반복함으로써, 해당 작업에 참여했음을 증명하는 방식

비잔티 장군의 문제

A -> B -> C -> D -> E 순서로 메시지가 이동할 때, 어떻게 하면 악의적인 사람이 메시지를 위조하지 못하고 모두가 동일한 메시지를 가질 수 있을까?

이 문제는 PoW로 해결할 수 있다. 한 사람이 다른 사람에게 메시지를 보낼 때 10분 동안 특정 작업을 하고 작업 결과를 메시지와 함께 보내야 한다는 규칙이 있다고 가정해보자. 그러면 A가 9:00부터 작업을 시작하면 B는 9:10에 메시지를 받을 수 있다. 똑같이 B가 C에게 메시지를 보내면 C는 A,B가 작업한 것이랑 메시지를 받게 된다. C가 D에게 메시지를 위조해서 보내려고 한다면 10분 안에 A,B가 작업한 것을 위조해야 하는데 사실상 불가능하다. 따라서 악의적인 사람이 메시지를 위조할 수 없다.

PoW의 장점
  1. 높은 보안성: 해킹을 하기 위해선 51% 이상의 연산 능력이 필요한데 사실상 불가능하다.
  2. 비가역성: 그 전으로 되돌릴 수 없다.
PoW의 단점
  1. 낮은 거래 속도
  2. 채굴 독점화 발생
  3. 채굴에 많은 에너지 사용

이러한 단점을 극복하기 위해 나온 것이 PoS이다.

2. PoS (Proof of Staking)

해당 코인을 많이 가지고 있는 만큼 블록에 대한 유효성을 검증할 확률이 높아지는 알고리즘.

만약 같은 위치에 대한 서로 다른 블록이 발생했을 때 자신의 재산 증명을 블록에 추가해서 더 많은 재산 증명이 있는 블록이 진실된 블록이 되는 것이다.

예를 들어, a블록 다음으로 b 또는 c 블록이 올 수 있다고 가정해보자. 그러면 사람들은 자신의 재산 증명을 b 또는 c 블록에 이어서 붙일 것이다. 만약 b 블록에 추가된 재산이 c블록에 추가된 재산보다 많다면 c블록은 무시되고 b 블록을 체인에 연결될 것이다. 그리고 c블록에 재산 증명을 추가했던 사람은 보상을 받게 된다.

이러한 원리가 성립되는 이유는 네트워크 상에 사용자가 많아지면 코인의 가치가 올라가기 때문이다. 코인이 많은 사람은 코인의 가치가 올라가는 것을 원하는데 코인의 가치를 올리는 방법은 네트워크를 진실되게 만들어 사용자를 많이 오게 하는 것이다.

PoS의 장점
  1. PoW보다 CPU소모가 훨씬 적다: 문제를 푸는 것이 아닌 재산 크기만 계산하면 된다
  2. 보안성이 뛰어나다.
PoS의 단점
  1. Nothing at Stake: 거짓된 블록에 재산 증명을 해도 손해는 없기 때문에 진실 여부와 상관없이 모든 블록에 재산 증명을 추가할 수도 있다. 따라서 이러한 문제를 해결하기 위해 보증금과 벌금 제도를 운영하고 있다.

0개의 댓글