IT/블록체인

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

KimCookieYa 2022. 4. 22. 17:31

블록체인 개념

 - 거래가 담긴 블록이 사슬 모양으로 늘어선 것

 - 각 거래에는 거래 생성자의 서명이 포함된다.

 

* P2P 네트워크에서는 클라이언트 서버 구조와 달리, 정보의 지연과 미도달 사태를 피할 수 없음

* 데이터를 변조할 의도가 없다 해도, 이중송신에 따른 처리 중복(멀티체인 문제)이나 잘못된 정보에 의한 오작동 등의 위험이 있어 정확한 정보를 공유하는데 어려움이 있음

-> 합의 알고리즘이 필요해짐

 

 

합의 알고리즘(Concensus)

 - 데이터 처리를 중앙화하지 않고, 분산화하는데에 있어서 검증하는 절차

 - 데이터 처리를 해줄 노드를 선택하거나, 검증하는데에 사용된다.

 - P2P 네트워크 시스템에서 각 노드간 정보 도달의 시간 차이가 있음

 - 생성된 블록의 정당성을 검토하고 해당 블록을 블록체인에 연결하기 위해 네트워크 참가자들의 합의를 위한 알고리즘이 필요

 - 종류: PoW, PoS, PoET, ...

 

작업증명 PoW

1) 작업증명(Proof of Work, PoW)

 - 블록체인에서 가장 보편적으로 사용 중인 합의 알고리즘으로, 컴퓨팅 파워를 이용하여 특정 난이도의 해시값을 역함수를 해시화하여 Nonce 값을 계산해내고 이를 검증하는 것으로 합의를 도출한다.

 - 해시 함수는 단방향 암호화 기술이므로 결과값으로 입력값을 찾을 수 없음

 - 블록 해쉬값이 특정 숫자보다 작아지게하는 Nonce값을 찾는 것이 마이닝

 - PoS의 마이너: CPU, GPU 같은 장비를 통해 해시 함수의 출력값을 구함. 결과값이 나올 때까지 입력값을 바꿔 지속적으로 실행해야함. Nonce값을 구해서 블록해쉬값을 구하고 이 블록해쉬값을 식별자로 가지는 유효한 블록을 만들어 내야함

 

2) 지분증명(Proof of Stake, PoS)

 - PoW의 컴퓨팅 파워 낭비 문제를 해결하고자 개발된 합의 알고리즘으로, 노드가 보유한 자산을 기준으로 권한을 분배하여 합의를 도출하고 보상을 분배하는 알고리즘이다.

 - PoS의 마이너: (Staking)지분을 동결시켜놓는 사람. 동결시켜놓고 이자를 받아감. 블록을 생성시켜 보상과 수수료를 받기 때문.

 

 

마이닝

 - 블록(B)의 해쉬값은 Hash(B) <= M / D 로 정의

 - D: 난이도(Difficulty)

 - M: 난이도 D의 최대값(2^256 - 1)

 

 

보상

 - Nonce 값을 구하기 위해서는 많은 작업 비용이 들며, 이러한 행위의 보상이 없다면 아무도 채굴하지 않을 것

 - 비트코인에서 보상은 새로 발행되는 비트코인과 해당 블록에 포함된 거래의 거래 수수료의 합

 - 인플레이션을 방지하기 위해, 여태까지 마이닝한 블록의 개수에 대해 보상을 반으로 줄여나가는 반감기가 있음(Bit Coin 1개 -> 0.5개 -> 0.25개 -> 1.25개 -> ...)

 - 수수료가 높아진다는 것은 트랙젝션 처리 비용이 높아진다는 것을 의미한다. 이는 Application을 사용해서 트랙젝션을 전송하는 사람들이 지불한다.

 

 

PoW의 특징

 - 블록 거래 내용 변경을 위해 많은 자원이 필요해, 위/변조가 사실상 어려워 보안성이 좋다고 할 수 있음

 - 채굴 난이도가 높아질수록 연산에 고사양의 장비들이 필요하게됨

 - 반복적인 연산을 통해 불필요한 연산을 하게되면 전기와 CPU와 같은 리소스 낭비가 심함

 - 노드들이 트랜젝션을 검토해야 하기 때문에 모든 블록 정보를 보유해야 하며, 이를 통해 이중 지불 문제를 해결

 

PoW의 문제점

 - 51% 공격: PoW의 경우, 악의적인 참여자가 절반 이상의 해시 파워를 가지게 된다면 블록 내용의 조작이 가능

 - 현재는 전세계의 마이너가 너무 많아 현실적으로 불가능하지만, 이후 2100만개의 블록이 모두 채굴된 이후 마이너가 줄어들게 되면 어떨지 모른다.

 

 * PoW는 뛰어나지만, 성능의 한계는 있다! 그리고 자원 낭비가 심하다!

 

 

지분증명(PoS, Proof of Stake)

 - 블록체인 기술에서 일반적으로 사용되는 합의 프로토콜

 - 지분증명은 암호화폐가 블록을 검증하는데 사용하는 합의 알고리즘

 - 2011년에 처음 제안되었으며, 2012년 Peercoin이 최초

 - 주요 장점은 에너지 효율성과 보안

 - 참여자의 코인 지분을 기준으로 블록을 생성

 - 참여자의 코인 지분이 많을수록 유리해지는 방식

 - 다음 블록의 생성자는 부분적으로 사용자가 보유(동결)하고 있는 암호화폐의 수량 또는 어떤 경우에는 그 특성을 보유하고 있는 기간에 의해 무작위 시스템에 의해 결정

 - 무작위 추출은 중앙 집중화를 예방할 수 있음

 - 시스템의 부유한 개인이 항상 다음 블록을 만들고 지속적으로 부를 창출하면 결과적으로 시스템을 통제하게됨

-> 악용될 수 있다.

 

 

PoS의 특징

 - 해시 파워가 필요하지 않아 경제적이다

 - PoW보다 훨씬 적은 에너지를 사용하여 효율적

 - 알고리즘이 복잡하다 -> 버그의 위험성이 높아진다

 - 중앙집권화가 더 어려워 분산화가 보장됨

 

PoS의 문제점

 - 참여한 노드들이 이자를 받으려고 코인을 묶어두려 할 경우, 시중 코인의 유통량 감소로 이어질 수 있음

 - 코인을 많이 보유한 사람이 너무 강한 권력을 가지게 됨

 

 

BFT algorithm기반 PoS

 - 네트쿼트의 1/3보다 적은 노드가 적대적이라도 합의가 가능

 - chain 기반이 아니므로 합의 및 검증이 매라운드마다 이루어짐

 - BFT Consensus 알고리즘은 일관성있게 가용성을 유지하기 때문에, 비동기 네트워크 모델로 관리할 수 있음

 - 프라이빗 블록체인인 Tendermint, Ripple, Stellar 등이 해당됨

 

 

위임 지분 증명(DPoS, Delegated Proof of Stake)

 - 특정 인원에게만 PoS를 할 수 있도록 권한을 위임하는 알고리즘

 - 네트워크상 노드들의 투표 결과로 선출된 상위 노드에게 권한을 위임하여 일종의 대표자의 역할 수행

 - 위임한 대표자와 수익을 배분