본문 바로가기
투자/코인

블록체인 - 합의 알고리즘

by 큰공 2021. 10. 28.
728x90
반응형

 

들어가며

 IT 최신 기술의 화두인, 블록체인을 단순히 투자상품이 아닌 기술로써 공부해보고자 블록체인 관련 카테고리를 하나 생성해 보았습니다. 

 

 오늘은 "블록체인 합의 알고리즘" 에 대해서 알아보도록 하겠습니다.

 

 지난번 블록체인 네트워크, 노드에 대한 포스팅도 해당 내용을 이해하기에 도움이되니, 참고하시면 좋을 거 같습니다.

 

2021.10.21 - [IT/BlockChain] - 블록체인 - 블록체인 네트워크 , 노드 란?

 

블록체인 - 블록체인 네트워크 , 노드 란?

들어가며  IT 최신 기술의 화두인, 블록체인을 단순히 투자상품이 아닌 기술로써 공부해보고자 블록체인 관련 카테고리를 하나 생성해 보았습니다.  오늘은 "블록체인 네트워크", "노드" 에 대

coinpipe.tistory.com

 

 

비잔틴 장군의 딜레마

 블록체인 기술, 특히 합의 알고리즘을 말할 때, '비잔틴 장군의 딜레마'를 많이 이야기합니다.

 옛날 전쟁을 해서 성을 함락해야 하는 시절에, 여러가지 부족들이 모여서 하나의 성을 동시에 공격하려고 했습니다.
 성을 둘러싼 장군들의 군대는 서로 떨어져 있고, 중앙 관리자가 없습니다. 장군들은 동시에 성을 공격해야 하므로 합심해야 하지만, 거리가 멀어 각 장군끼리 1:1로밖에 협의하지 못합니다.

 

 애초에 각 부족들이 모인거라, 각 장군들은 타 부족을 쉽게 믿지 못합니다. 동시에 공격을 해야 성을 함락할 수 있는데, 공격시간이라던지, 변절자가 생기면 쉽게 성을 함락하지 못하기 때문입니다.

 다른 부족들은 다 공격하는데, 나만 뒤에서 뒷짐 지고 있다가 손실 병력없이 같이 성을 함락하면 이익은 같이 배분 받게 되니까 다들 배신을 할려고 생각하죠.

 

 

 서로 서로 장군들이 공격 시간에 대한 정보를 전달받지만, 변절자가 있어 잘못된 정보가 전달되면 성의 함락은 물건너 가게 됩니다. 


 이 경우에 변절자를 가려내려면 어떻게 해야할까요?

 

 

 이 문제를 해결하기 위해서 탄생한 것이 바로 "합의 알고리즘" 입니다.

 

 

합의 알고리즘

 합의 알고리즘 (consensus algorithm)이란 다수의 참여자들이 통일된 의사결정을 하기 위해 사용하는 
알고리즘을 말한다. 합의 모델, 합의 방식, 합의 메커니즘 또는 합의 프로토콜 이라고도 한다. 블록체인 시스템의 경우 네트워크에 참여하는 모든 참여자들이 동일한 데이터를 복사하여 분산 저장하기 때문에 원본과 사본의 구별이 없으며, 통일된 의사결정을 내릴 수 있는 권위 있는 중앙(center)이 존재하지 않는다. 이런 상황에서 합리적이고 효율적인 의사결정을 내릴 수 있는 다양한 알고리즘이 개발되었다.

  해시넷 위키에서 합의 알고리즘의 정의에 대해서 발췌하였습니다. 무슨 말인지 확 와닿지 않습니다. 

 

  비잔틴 장군의 딜레마 문제에서 봤을 때, 누군가는 8시에 공격하는게 맞는 정보이다. 누군가는 9시에 공격하는게 맞는 정보이다. 라는 서로 다른 정보들을 받았을때, 어떤 정보가 진짜 정보인지 확인하기 위해서 "합의" 하여 그 정보의 "신뢰성" 을 주는 알고리즘입니다.

 

 즉, 하나의 서버에서 관리된다면, 중앙 서버에 있는 정보가 진짜 정보라고 믿겠지만, 다수의 많은 사람들이 참여하고 있는 블록체인 네트워크 상에서 어떠한 정보가 진짜 정보인지 알 수 있기 위해서 모든 이들이 "합의" 한 정보 만이 진짜 정보이고, 이를 블록체인상에 기록하게 됩니다.

 

 

작업 증명 ( POW - Proof of Work)

 작업 증명 방식은 블록체인 정보를 기록할 때, 모든 이가 합의를 해야 하는 방식입니다. 

작업증명 (PoW, Proof of Work)이란 목표값 이하의 해시를 찾는 과정을 무수히 반복함으로써 해당 작업에 참여했음을 증명하는 방식의 알고리즘이다. 채굴을 통해 작업증명을 한다. 
비트코인, 이더리움, 라이트코인, 비트코인캐시, 비트코인골드, 모네로, 지캐시, 시아코인, 불웍, 에이치닥 등의 암호화폐에서 작업증명 방식을 사용하고 있다.

 역시나 정의가 딱 와닿지 않습니다. 해시함수이니, Nonce, 난이도 등의 개념은 뒤로한체, 쉽게 설명을 해보고자 합니다.

 

 블록체인 그 이름에서 볼 수 있듯이 블록과 블록은 체인으로 연결되어 있다고 보면 됩니다. 앞에 블록과 지금 만든 블록을 체인으로 연결을 해야 하는데, 바로 작업 증명 방식은 이 "체인을 올바르게 만드는 일" 이라고 설명드리고 싶습니다.

 

 

 체인이 연결이 되어서야 올바른 블록으로 기록되어, 해당 정보가 진짜 정보인지 신뢰를 받게 됩니다. 이 체인을 한땀 한땀 만들어서 모든이에게 이 체인의 연결이 올바르다고 "합의" 에 이르면 이 체인은 비로소 연결되게 됩니다.

 

 저는 이 체인을 "한땀 한땀" 만드는 것을 WORK - "일" 이라고 표현하고, 이것이 바로 "채굴" 이며, 한땀 한땀 체인을 만드는데 들었던 노력에 대한 "보상" 으로 암호화폐를 받을 수 있는 것입니다.

 

 이제 살짝 더 깊게 들어가면, 체인을 "한땀 한땀" 만드는 일이, "해쉬 값" 이라는 녀석을 찾는 일 입니다. 해쉬 값을 찾아야 올바른 체인을 만들 수 가 있기 때문이죠. 해쉬 값을 찾기 위해서는 일종의 일 (노동)을 해야 합니다. 

 

 예를 들어 보겠습니다. 하나의 자물쇠가 있고, 우리에게는 100개의 열쇠가 있다고 합시다. 어떤 열쇠가 맞는지는 자물쇠에 직접 넣어봐야겠죠. 자물쇠가 탁 하고 풀리면 올바른 열쇠(키) 를 찾은 것이고, 그것이 바로 우리가 찾는 "해쉬 값" 이며 이 "해쉬 값" 을 통해서 올바른 체인을 만들고 새로운 블록을 연결 할 수 있는 것 입니다.

 

 이 열쇠를 자물쇠에 일일히 하나씩 넣어서 올바른 열쇠인지 찾아가는 과정 ( 일 ) 이 바로, 작업증명방식 (POW) 의 핵심입니다.

 

 

작업 증명 ( POW - Proof of Work) 단점

 이 작업 증명 방식 ( POW )은 매우 높은 신뢰성을 가진다는 장점을 가지고 있지만, 치명적인 단점이 있습니다. 바로 "효율성과 속도" 입니다.

 

 위의 예시에서 열쇠를 찾는 과정을 나만 수행하는 것이 아니라, 모든 이들이 수행하게 됩니다. 먼저 열쇠를 찾는 놈이 임자 인것이죠. (코인 보상을 받게 됩니다.) 

 

 누군가는 열쇠를 자물쇠에 넣는 속도가 빠를것이고, 누군가는 한번에 열쇠 여러개를 자물쇠에 팍팍팍 꽂을 수 도 있을 것입니다. 이래서 너무 많은 사람들이 이 "해쉬 값" 을 찾으려고 노력을 하니, 쉽게 자물쇠가 열리지 않도록, 열쇠를 100개, 500개, 1000개로 만들어 버리게 됩니다.

 

 이것이 바로 채굴에서 말하는 "난이도" 입니다.

 

 그 열쇠를 찾는 노력이 결국에는 전부다 전기세이고, 난이도가 올라가면서 블록체인을 연결하는데 시간이 소요되고, 결국 효율성과 시간이 과하게 들게 됩니다.

 

 "모든" 이들에게 신뢰성을 얻고, 효율성과 시간을 감수한 것입니다.

 

지분 증명 ( POS - Proof of Stake )

 이런 작업 증명 방식의 단점을 개선하고자 탄생한 것이 바로 "지분 증명 ( POS - Proof of Stake )" 입니다.

 

 맛있게 먹는 스테이크 Steak 가 아니라, 말뚝, 지분을 뜻하는 "Stake" 입니다. 자기 땅임을 증명하려고 새운 "말뚝" 에서 사용하다가 "지분" 이라는 뜻으로도 사용되고 있습니다.

 

 어떻게 하면 속도와 효율성을 높일 수 있는가? 에 대한 질문을 하게 되고, 이에 대한 해답으로 많은 이들이 참여해서 속도와 효율성이 떨어지므로 우린 "적은 사람" 이 참여를 하면 더 빨라지고, 효율적이지 않을까? 에서 지분 증명 방식 합의 알고리즘이 출발합니다.

 

 

 그럼 해쉬 값을 찾고 보상을 얻을려는 많은 이들 중에서 특정 사람만 블록의 체인을 연결할 권리를 준다면, 누구에게 그 권리를 줘야 할까요?

지분 증명 ( POS - Proof of Stake ) 방식

 

블록의 지분이 많은 사람에게 그 권리를 더 주자!

 

입니다.

 

 지분이라고 하니, 주식이 떠오르실 텐데요. 주식과 비교하면 좀 더 이해하기가 쉽습니다. 주식에서 주식 지분을 많이 가지고 있는 사람이 회사가 나아가야할 방향을 책임을지고, 올바른 의사 결정을 할 가능성이 큽니다.

 주식 가치를 많이 가지고 있는 사람은 그 시스템이 좋은 방향으로 발전, 무결성을 유지할려고 투표할 확률이 높고, 더  많은 기여를 할 수 있기 때문이죠.

 즉, 블록의 지분이 많은 사람이 올바른 체인을 연결할 가능성이 커지고, 이 정보를 신뢰 할 수 있게 됩니다.

 

 이에, 모든 이들에게 리소스를 맡기지 않으니, 합의에 이르느는 효율성과 속도가 올라가게 됩니다.

더 새로운 알고리즘?

 POW / POS 마저도 생태계가 발전하면서 느리다. 라는 평을 많이 들 받고 있습니다. 암호화폐가 실생활에 적용되어서 거래가 슝슝슝 빨리 이뤄질려면 더 나은 합의 알고리즘 방식이 필요하다는 요구가 발생하고 있습니다.

 

  더 나은 합의 알고리즘 중에 하나인 DPoS(Delegated Proof-of-Stake) 가 있으며, POS 방식을 좀 더 개선하여, Delegated (위임된) POS 방식입니다. 즉, 지분을 많이 가지고 있는 특정 몇몇 사람들만 합의를 하여, 속도와 효율성을 더욱더 증대시키는 방식입니다.

 

 어떤 합의 알고리즘이 가장 효과적인지에 대해서는 아직 많은 논란이 있지만, 합의 알고리즘에 대한 개념을 이해하고, 나아가 좀 더 효율적인 합의 알고리즘 이 탄생하면서 블록체인 시장이 발전하리라 생각됩니다.

 

 

 

 

728x90
반응형

댓글24