블록체인 합의 알고리즘의 발전
상태바
블록체인 합의 알고리즘의 발전
  • 김종성 이사
  • 승인 2018.11.28 04:49
  • 조회수 7230
  • 댓글 0
이 콘텐츠를 공유합니다

 

 다수의 참여자가 데이터를 공유하는 방식으로 분산 원장이 주목받고 있다. 분산 원장은 참여자(노드)가 각각 자신의 장부를 소유하고 이를 다른 참여자와 동일하게 유지함으로써 거래의 무결성을 확보하는 방식이다.


블록체인은 비트코인을 작동하기 위해 고안된 분산 원장이다. 블록체인에 참여하는 노드들은 자율적으로 블록을 생성한다. 생성된 블록의 정당성은 참여하는 노드들의 합의 과정을 통해 검증된다. 합의 과정을 통해서 만들어진 새로운 블록은 이미 생성된 블록에 연결될 수 있다. 모든 노드가 같은 상태로 블록체인 데이터를 유지하기 위해 필요한 것이 ‘합의 알고리즘’이다.


블록체인과 같은 분산 원장 체계에서는 참여자 간 블록이 생성되고 공유되는 과정에서 정보 도달의 시간 차이가 발생할 수 있고, 중복된 정보가 포함되는 등의 문제가 발생 할 수 있다. 따라서 생성된 블록에 대한 정당성을 검증하고 그 블록을 전체 체인에 반영함으로써 참여자 간 동일한 장부를 서로 공유하기 위한 합의 알고리즘이 반드시 필요하다.


대표적인 합의 알고리즘으로 작업증명(Proof of Work, PoW) 알고리즘과 이를 보완한 지분증명(Proof of Stake, PoS) 알고리즘이 사용되어 왔으며 최근에는 더욱 진화된 위임된 지분증명 알고리즘, 권한증명 알고리즘, PBFT 알고리즘, 텐더민트 알고리즘 등이 사용되고 있다.

 


작업증명 알고리즘(Proof of Work, PoW)

작업증명(PoW)의 기본 개념은 1993년 Cynthia Dwork 와 Moni Naor에 의해 처음 제시되었으며, 2008년 나카모토 사토시가 비트코인에 적용하며 널리 알려지게 되었다.


이 방식은 블록을 생성하고자 하는 노드들이 특정 해시(Hash)함수의 결과값이 미리 정해진 값보다 작아지도록 만드는 입력 값을 찾는 연산을 수행하여 목표 값을 찾으면 블록이 생성되는 방식이다. 비트코인, 이더리움 등 주요 퍼블릭 블록체인에 사용되고 있다.


PoW의 장점은 보안성에 있는데, 합의 방식이 컴퓨팅 파워를 이용한 연산을 수행하는 구조이기 때문에 악의적인 공격자가 블록체인 시스템을 공격하려면 네트워크 참여자 51% 이상의 컴퓨팅 파워를 확보해야 하기 때문이다.


그러나 목표 값을 찾는 반복적인 연산을 위해 필요한 컴퓨터 비용, 속도 문제에 대한 비효율성이 계속해서 지적되었으며 최근에는 거대한 컴퓨팅 파워를 보유한 공격자들에 의해 거래내역이 왜곡(51% 공격) 되어 수백만 달러가 해킹되는 사고도 있었다.

 


지분증명 알고리즘(Proof of Stake, PoS)


PoS는 비트코인 합의방식의 높은 에너지 소비 문제를 해결하기 위해 2012년 Sunny King과 Scoot Nadal에 의해 제시된 알고리즘이다. 이 방식은 Sunny King이 만든 피어코인(Peercoin)이라는 암호화폐에 처음 적용 되었으며, 최근에는 이더리움에도 도입될 예정이다.


지분증명(PoS)은 말 그대로 블록을 생성할 수 있는 확률을 노드가 보유한 코인(혹은 토큰)의 지분에 비례하도록 하는 방식으로, 블록체인 내에서 개별 노드의 지속적인 연산의 필요성을 줄이고 지분을 많이 보유한 노드에 블록 검증 및 기록에 대한 권한을 더 많이 부여함으로써 합의에 필요한 리소스가 PoW에 비해 현저히 줄어드는 장점이 있다.


하지만 PoS방식은 지분을 많이 보유한 노드가 새로운 블록을 생성할 가능성이 높고, 시간이 지날수록 지분을 많이 가진 소수의 노드로 권한이 집중되는 문제점이 있다.


합의 알고리즘은 어떤 방식을 적용하는가에 따라 블록체인의 성능, 확장성, 보안성 등에 영향을 주게 되는데, 최근의 블록체인들은 그동안 많이 사용되어온 PoW 및 PoS 합의 방식의 문제점들을 해결하기 위하여 다양한 특성을 가진 합의 알고리즘을 도입하고 있다.

 

위임된 지분증명 알고리즘(Delegated Proof of Stake, DPoS)


위임된 지분증명(DPoS)은 지분증명(PoS) 방식의 대안으로 EOS의 창시자 Dan Larimer 에 의해 제안된 합의 알고리즘으로, PoS와의 차이점은 블록 생성 및 검증 권한을 소수의 대표자에게 위임한다는 것이다.


PoS가 직접 민주주의 방식이라고 한다면 DPoS는 간접 민주주의 방식이라고 할 수 있는데, 지분 보유자들은 지분에 비례한 투표권을 행사하여 블록생성과 검증, 네트워크 유지, 합의에 대한 권한을 소수에게 위임함으로써 퍼블릭 블록체인의 문제점인 속도와 비용의 문제를 해결하는 방안을 제시하고 있다.
 

투이톡_블록체인_1.jpg
[그림1] 위임된 지분증명 방식(DPoS)


DPoS 방식을 적용하면 상위 노드수가 적어지기 때문에 합의 시간과 비용을 줄여 효율적인 시스템을 구축할 수 있다.


하지만 소수에 의해 관리되는 네트워크가 과연 탈중앙화가 맞는지에 대한 의견이 있고, 위임된 대표자 노드에 대한 정보 공개로 인한 익명성 문제와 소수의 노드로 집중된 합의 방식으로 인한 공격 범위가 좁혀지는 문제가 있다.


권한증명 알고리즘(Proof-of-Authority)


권한증명(PoA)방식은 이더리움의 공동창업자 Gavin Wood에 의해 만들어진 알고리즘으로 주로 프라이빗 블록체인에 적용되어, 확실한 신원에 기반한 합의를 통해 즉각적인 거래를 제공하는 방식이다.


불특정 다수가 아닌 확실한 신원이 보장된 조직들이 참여하며, 승인된 계정(권한이 부여된 계정)이 블록에 대한 유효성 검사 및 전송 등 블록체인이 정상적으로 유지되도록 관리한다.


권한증명 방식은 프라이빗 블록체인에 많이 적용하는 방식이며, 일반적으로 네트워크의 효율성과 관리 가능한 보안을 보장하기 위해 참가자를 소규모(25이하)로 유지하려는 특징이 있다.
 

투이톡_블록체인_2.jpg
[그림2] 권한증명(PoA) 방식


그러나 노드수를 줄여 유효성 검사에 필요한 시간을 줄여 블록 생성 주기를 짧게 함으로써 빠른 트랜잭션 처리가 가능한 장점이 있지만 탈중앙화 측면의 이견과 익명성 문제가 여전히 남아 있다.


PBFT 알고리즘(Practical Byzantine Fault Tolerance)


PBFT 방식은 어떤 분산시스템이 약속된 행동을 하지 않는 노드가 존재할 수 있는 비동기 시스템일 때 시스템에 참여한 모든 노드가 성공적으로 합의를 이룰 수 있도록 개발된 알고리즘이다.


이 방식의 특징은 일부 노드의 결과가 달라도 어느정도 이상의 결과가 동일하면 합의가 이루어진 것으로 본다. 바로 다수결의 원칙을 따르는 합의 알고리즘으로 볼 수 있다.


PBFT 알고리즘은 1999년에 Castro 와 Liskov에 의해 제안되었으며, 리더 노드와 참여 노드의 메시지 송/수신 과정을 통해 합의에 이르게 되는데 기본적인 과정을 간단히 설명하면 아래와 같다.


먼저 리더가 되는 노드(노드0)가 클라이언트의 요청을 받아 다른 노드(노드 1 ~ 노드 3)에 전파한다.


리더의 메시지를 받은 노드들은 메시지를 확인하고 다른 노드들에 다시 메시지를 전파한다. 모든 노드는 다른 노드에서 가장 많이 받은 메시지(승인 메시지)가 무엇인지를 확인하고 다른 노드들에 전파한다.


각 노드들은 각자 승인한 메시지를 모두 수신하고 정족수(혹은 과반수) 이상이 승인한 메시지가 무엇인지 확인함으로써 합의를 이룬 동일한 메시지를 보유하게 된다.
 

투이톡_블록체인_3.jpg
[그림3] PBFT 합의 알고리즘


PBFT는 Hyperledger, R3 Corda, Ripple, EOS에 이르기까지 Public과 Private을 가리지 않고 다양한 블록체인에서 사용되고 있다.


텐더민트 알고리즘(Tendermint, DPoS PBFT)


텐더민트 알고리즘은 2014년 한국계 Jae Kwon, Ethan Buchman이 주도한 오픈소스 프로젝트 결과로 개발되었다. PoW의 속도, 확장성 및 환경 문제를 해결하기 위해 제안되었으며 DPoS와 PBFT 알고리즘의 장점을 결합하여 퍼블릭 및 프라이빗 블록체인에서 사용할 수 있도록 개량한 방식이다.


앞서 설명한 DPoS와 PBFT 방식을 개선하여 이중 지불에 대한 문제와 비잔틴 오류 허용 문제를 해결하기 위한 방안으로, 네트워크상의 1/3(33%)의 공격에도 안전한 합의 방식을 제공하는 것이 특징이다.


기존의 PBFT 방식이 개별 노드당 투표권을 행사하는 방식으로 투표를 진행하여 가장 많이 표를 받은 블록을 승인하는 방식이라면 텐더민트 방식은 여기에 DPoS가 포함되어 지분 기반으로 투표를 진행하는 방식으로 구현된다.


이러한 방식은 노드의 수보다 지분이 많은 노드의 신뢰도가 높아지는 방식으로 투표 시에는 지분이 동결되어 다른 블록에 중복으로 투표할 수 없도록 만들어서 이중 지불 문제를 해결한다.


또한 이중 투표 시도와 같은 블록체인을 공격하려는 악의적인 행위를 하면 지분을 빼앗는 방법으로 기존의 블록체인이 네트워크 공격 노드에 아무런 처벌을 하지 않던 문제(Nothing of Stake) 문제를 해결하였다.


텐더민트는 제안(Propose), 사전투표(Prevote), 사전승인(Precommit), 승인(Commit) 과정을 거쳐 블록을 생성하는데 각 라운드마다 블록을 제안하고, 제안에 대해 검증 투표를 거쳐 합의된 블록을 생성한다.
 

투이톡_블록체인_4.jpg
[그림 4] 텐더민트 합의방식


합의 알고리즘의 발전전망


블록체인의 합의 알고리즘은 비트코인을 시작으로 이더리움, 이오스, 하이퍼제러, R3 Corda 등 다양한 퍼블릭, 프라이빗 블록체인 플랫폼들이 등장하고 성장하면서 기존의 합의 방식이 가진 단점을 보완하고 장점을 융합하면서 발전해 오고 있다.


이는 구축하고자 하는 블록체인의 목적, 거래처리 성능, 확장성, 보안 등과 밀접한 연관이 있는데, 블록체인 시스템이 어느 가치에 중점을 두는가에 따라 합의 알고리즘의 적용 방식이 달라 질 수 있기 때문이다.


최근 이더리움은 캐스퍼라는 개발 프로젝트를 통해 기존의 PoW 합의 알고리즘에 PoS 방식을 적용하기로 하였다. 이는 PoW와 PoS의 하이브리드 합의 방식으로 중앙화된 방식과 탈중앙화된 합의 방식의 결합을 통해 블록체인 시스템의 속도와 효율성을 동시에 확보하려는 노력이다.


카카오 블록체인 자회사 그라운드X는 블록체인 플랫폼 클레이튼을 통해 점진적인 탈중앙화를 추진하는 방안을 제시하였다. 클레이튼 플랫폼의 합의 구조는 사전에 정해진 노드(컨센서스 노드)들만 합의 과정에 참여할 수 있다는 점에서 퍼블릭 보다는 프라이빗에 가깝다. 대신 컨센서스 노드가 제대로 하는지를 감사(Audit)하는 역할을 하는 레인저 노드는 퍼블릭 네트워크 방식으로 운영된다.


향후 블록체인 시스템의 활성화 및 대중적인 사용을 위해 중앙화 및 탈중앙화 방식이 결합되는 형태의 합의 방식이 다양한 서비스 분야에서 시도 될 것으로 보인다.


-끝-


<참고자료>
전자통신 동향분석: https://ettrends.etri.re.kr/ettrends/169/0905169005/
블록체인 용어: https://developer.ibm.com/tutorials/cl-blockchain-basics-glossary-bluemix-trs/
The Loop블로그: https://blog.theloop.co.kr/
케블리 Steemit: https://steemit.com/consensus/@kblock/48-pbft-consensus-algorithm
체인토크: http://www.chaintalk.io/archive/study
텐더민트: https://tendermint.com/intro/consensus-overview

댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.