합의 알고리즘이란 무엇인가?
합의 알고리즘이란?
BlockChain은 새로운 데이터를 Block에 담아 Chain으로 연결되는 기술입니다. 새로운 정보가 들어온다면 이 정보가 맞는 정보인지 틀린 정보인지 확인을 하여야 올바른 정보만 Block에 담겨 모든 사람에게 공유가 됩니다. BlockChain 시스템의 경우 네트워크에 참여하는 모든 참여자들이 동일한 데이터를 복사하여 분산 저장하기 때문에 원본과 사본의 구별이 없습니다. 따라서 데이터가 올바른 정보인지 검증하지 않고 데이터를 추가한다면 잘못된 정보를 Block에 담아서 공유가 되어 BlockChain기술을 믿을 수 없을 것입니다. 또한 P2P네트워크에서는 클라이언트 서버 구조와 달리 정보의 지연과 미 도달 사태를 피할 수 없으므로 데이터를 변조할 의도가 없다 해도 이중 송신에 따른 처리 중복이나 잘못된 정보에 의한 오작동 등의 위험이 있어 정확한 정보를 공유하는데 어려움이 있습니다. 따라서 Block을 생성할 때 올바른 정보인지 검증하는 알고리즘을 합의 알고리즘이라고 합니다. 합의 알고리즘의 종류는 상당히 다양하지만 대표적으로는 작업증명 PoW(Proof of Work), 지분증명 PoS(Proof of Stake)이 있으며 이 외에도 두뇌증명 PoB(Proof of Brain), 위임지분증명 DPos(Delegated Prrof of Stake), 지분작업증명 PoSW(Proof of Stake and Work)등 다양한 합의 알고리즘이 있습니다. 이 중에서 대표적인 PoW와 PoS방식에 대하여 알아보도록 하겠습니다.
작업증명 PoW란?
처음에 작업증명이란 방식은 네트워크 상에서 스팸과 같은 어뷰징을 막기 위해 시작되었습니다. 하지만 비트코인에서 합의 알고리즘으로 사용하는 혁신적인 방법을 도입합니다. PoW를 이해하기 전에 블록에 담기는 내용을 간단히 말씀드리자면 저장할 데이터, 이전 Block의 hash값, Block을 생성하기 위한 조건에 만족하는 값이 블록에 저장됩니다. 이 값들을 합쳐서 hash함수를 돌립니다.
3가지 값을 hash함수에 넣으면 어떠한 hash값이 나오게 되는데 여기서 말하는 Block을 생성하기 위한 조건에 만족하는 값을 Nonce라고 하며 채굴을 하는 사람들은 이 Nonce를 알아내기 위하여 그래픽 카드를 이용하여 계산을 합니다. Nonce의 조건은 Block의 생성 속도에 따라 달라지게 되는데 예를 들어 이전 Block의 hash값, nonce, 저장할 데이터를 hash함수를 통하여 나온 hash값이 a94b0ff9cd162aa0처럼 16자리가 나오게 되는데 이때 앞의 6자리가 0으로 나와야 Block을 생성할 수 있는 자격을 줍니다. 예시로 든다면 0000008ff3d163bd 같은 hash가 나오는 nonce값을 찾는다면 Block을 생성할 수 있는 것입니다. 문제가 너무 빨리 풀려서 Block이 빠르게 생성된다면 0의 개수를 늘리고 Block이 너무 느리게 생성된다면 0의 개수를 줄이는 방식으로 Block생성 난이도를 조절하게 됩니다. 이렇게 Block을 만들기 위하여 nonce를 찾는 작업으로 Block을 생성하게 되는 방식을 작업증명 PoW라고 합니다. 장점으로는 누구나 Block생성을 하기 위해 도전할 수 있다는 공정함이 있으며 보안적으로 제일 안전하다고 말할 수 있습니다. 단점으로는 채굴을 하기 위하여 상당한 전기를 사용하게 되므로 환경적인 문제가 있습니다.
지분증명 PoS란?
PoS란 자신의 토큰을 담보로 맡기고 Block을 생성할 기회를 얻는다고 비교할 수 있습니다. PoW의 방식의 경우 Block을 생성하기 위해선 빠르게 문제를 풀어서 Block생성 기회를 얻고 PoS는 맡겨둔 토큰의 양이 많을수록 Block생성 기회를 얻을 확률이 높습니다. 지분이 많다는 것은 BlockChain 시스템에 많은 금액을 담아 둔 상황이므로 BlockChain 시스템이 망가진다면 손해를 크게 보게 되므로 올바른 판단을 내릴 수 있다고 판단하여 지분이 많은 사람이 Block 생성 기회를 얻을 확률이 높게 설정되어 있습니다. 마치 대 주주가 기업에 좋은 방향으로 판단을 내리려는 것과 비슷합니다. 또한 Block을 생성하면 보상을 받게 되므로 은행에 돈을 맡기고 이자를 받는 상황과 비슷한 느낌을 줍니다. 장점으로는 PoW와 달리 어려운 문제를 해결하여 nonce값을 찾아내는 하드웨어가 필요한 것도 아니기에 전기료도 많이 들지 않는다는 장점이 있습니다. 단점으로는 사람들이 토큰을 주고받는 유통이 줄어들게 되고 Block을 생성하는 자격을 얻기 위하여 전부 저장만 하는 상황이 발생할 수 있으며 지분이 많은 사람이 기회를 얻기 쉬움으로 지분이 많은 사람이 꾸준히 부를 축적하기 쉬운 구조가 되어 시간이 충분히 지나게 되면 특정인원이 전체의 51%를 차지하게 될 가능성이 높습니다.
마치며
BlockChain 시스템이 시작되면 PoS를 바로 시행하게 되면 특정 인원이 지분을 많이 가지기 쉽기에 초반에는 PoW를 통하여 Block생성 기회를 작업을 통한 방식으로 시작하고 어느 정도 지분이 고르게 퍼지며 이용자가 늘어나면 PoS방식으로 전환하기도 합니다. 두 가지 외에도 상당히 많은 합의 알고리즘 방법이 있습니다. 위임 지분 증명 DPoS(Delegated Proof of Stake), 작업증명과 지분증명의 혼합 방식인 활동증명 PoA(Proof of Activity)등 다양한 방법이 있습니다. 아직 BlockChain이 완전한 자리를 잡지 못하였기에 다양한 방법으로 시도를 하고 있으므로 계속하여 발전하고 있습니다. 어떠한 합의 알고리즘이 더 우수한지 판단하기는 어려우나 앞으로 발전하여 더 발전된 합의 알고리즘을 찾을 수 있을 것이라고 판단됩니다.