LFT – loopchain consensus algorithm

저번 포스팅에서는 블록체인을 위한 합의 알고리즘 중, 기존의 상태 머신 복제 프로토콜에서 활용하던 BFT(Byzantine Fault Tolerance)계열 합의 알고리즘에 대해 설명하였습니다. BFT 계열 합의 알고리즘은 머신의 개수나, 지분을 통하여 투표를 하여 합의하는 방식으로 에너지 낭비가 없고 즉각적인 합의가 가능하다는 장점이 있습니다.

블록체인 기술 연재 시리즈

블록체인 기술 개요
스마트 컨트랙트(Smart Contract) 개요 -1
스마트 컨트랙트(Smart Contract) 개요 -2
loopchain SCORE(Smart Contract On Reliable Environment
합의 알고리즘 개요
작업증명(PoW, Proof-of-work)과 지분증명(PoS, Proof-of-stake)
BFT 기반 합의 알고리즘

이번 포스팅에서는 loopchain에서 사용하는 합의 알고리즘인 LFT에 대해서 공개하겠습니다.  LFT는 Tendermint나 PBFT(Practical Byzantine Fault Tolerance)와 마찬가지로 BFT 계열 합의 알고리즘입니다. 기존의 상태 머신 복제 프로토콜중 하나인 Raft를 비잔틴 노드의 공격을 극복할 수 있도록 개선한 알고리즘 입니다.

LFT

LFT는 현재 loopchain에서 사용하는 합의 알고리즘입니다. 그러나 loopchain은 Pulgin형태로 합의 알고리즘이 구현되어있기 때문에 필요에 따라 PBFT와 같은 다른 합의 알고리즘을 사용할 수 있습니다. 추후에 loopchain은 github를 통해 오픈소스 프로젝트로 공개될 것이기 때문에 직접 다운로드 받고 실행 시킬 수 있습니다.

LFT는 기존 PBFT를 사용하는 합의 알고리즘에서 발생하는 통신 오버헤드를 Piggybacking을 이용하여(네트워크에서 메시지를 통합하여 통신 오버헤드를 감소시키는 방법) 줄였으며 Spinning (리더를 매번 교체하는 기법)기법을 이용하여 악의적인 노드가 네트워크의 합의를 해치지 않는 범위에서 네트워크에 문제를 일으킬수 있는 특정 노드의 트랜잭션 거부 문제,  리더에 의한 네트워크 지연과 같은 문제를 해결하였습니다. 또한  기존 알고리즘들이 가지고 있던 지나치게 복잡한 리더 선정 알고리즘을 단순화 하였습니다.

LFT Normal Process

위 그림은 LFT 알고리즘의 합의 과정에 대한 그림입니다. 네트워크가 시작되면 검증 노드(검증을 통해 합의에 참여하는 노드)들은 사전에 결정되어 있는 리더 노드에게 처리를 원하는 트랜잭션을 전송합니다. 리더 노드는 수집한 트랜잭션을 이용하여 블록을 생성하고 자신의 서명과 함께 다른 모든 검증 노드에게 전송합니다.

각 검증 노드들은 블록을 받으면 1) 현 리더가 블록을 생성했는지 확인하고, 2) 블록의 높이와 이전 블록 해시가 올바른지 확인 3) 블록의 데이터가 올바른지 확인합니다. 검증 노드는 1~3번이 옳다면 Vote 데이터를 생성하여 네트워크의 모든 노드들에게 전파합니다. Vote 데이터를 전체 노드에게 전파하는 것은 매우 중요한데 이는 리더 노드가 비잔틴일 경우 정족 수 이상의 노드들에게만 블록을 전파하여 특정 노드들을 네트워크로 부터 분리하도록 시도할 수 있기 때문입니다. 이러한 문제를 방지하기 위해 모든 피어에게 Vote 데이터를 전파하며 이는 기존 Raft 알고리즘과의 다른 점입니다. 이 과정에서 블록을 못받은 노드는 블록이 생성되었는지에 대한 정보를 알 수 있고 다른 노드에게 블록을 요청할 수 있습니다.

본 포스팅에서는 LFT의 동작 방식에 대해 간략하게 설명하였습니다. 기존 알고리즘과의 비교 및 장애 상황 극복 시나리오 등의 자세한 내용은 LFT 백서를 통해 확인할 수 있습니다.

 

loopchain SCORE(Smart Contract On Reliable Environment)

이전 포스팅에서는 스마트 컨트랙트(Smart Contract) 기술이 블록체인 위에서 어떻게 동작하는지에 대해 알아보았습니다.

블록체인 기술 연재 시리즈
블록체인 기술 개요
스마트 컨트랙트(Smart Contract) 개요 -1
스마트 컨트랙트(Smart Contract) 개요 -2

이번 포스트에서는 loopchain의 스마트 컨트랙트인 SCORE(Smart Contract On Reliable Environment) 가 어떤 특징을 가지고 있는지에 대해 알아보도록 하겠습니다.

SCORE(Smart Contract On Reliable Environment)의 특징

loopchain SCORE의 가장 큰 특징은 개발 친화적 언어를 통해 자유롭게 개발환경을 구성할 수 있다는 점입니다. 대표적인 블록체인 기반 스마트 컨트랙트 플랫폼인 이더리움의 경우 특수한 가상머신 EVM(Ethereum Virtual Machine)에서 사용 가능한 언어로만 스마트 컨트랙트를 작성할 수 있습니다. 즉 Solidty, Serpent, LLL을 통해서 스마트 컨트랙트를 개발을 해야하고 데이터 접근 및 저장 또한 EVM 내부 변수를 통해서만 저장할 수 있습니다.

loopchain_archi
SCORE와 합의엔진(Blockchain)이 구조상 분리되어있는  loopchain 모듈 구조

loopchain SCORE는 합의엔진과 의존성을 최대한 떨어뜨린 별도의 모듈로 개발되었습니다. 합의 엔진과 SCORE는 내부 GRPC로 구현된 인터페이스를 통하여 통신을 하기 때문에 인터페이스만 맞으면 어떠한 언어로도 구현이 가능하나 현재는 파이썬 구현체만 허용하고 있습니다. 데이터 베이스 또한 자유롭게 사용할 수 있죠. 다만 이더리움 처럼 변수의 모든 데이터가 저장되지는 않고 데이터베이스에 직접 읽고 쓰고 한 결과만 저장됩니다.

 

SCORE 데모

아직 정확한 일정이 확정되지 않았지만 올해 하반기에 loopchain는 오픈소스로 공개될 예정이며 이때 SCORE 서비스 부분도 함께 공개될 것입니다.

공개 전에 SCORE를 이해하는데 도움이 되도록 SCORE기반 채팅 샘플에 대해 동작 방식과 함께 설명하겠습니다.

채팅서비스는 중계자가 필요한 대표적인 서비스입니다. 채팅 참여자는 각자가 직접 연결되지 않고 채팅서버와 연결한 후 채팅서버에서 보내주는 다른 참여자의 말을 믿고 대화를 진행합니다. 즉, 대화 당사자가 아닌 채팅서버라는 별도의 TTP(Trusted Third Party)가 대화라는 거래를 중계해주는 방식이라고 할 수 있습니다.

이를 스마트 컨트랙트로 간략히 구성한다면 아래와 같습니다.

  • 스마트 컨트랙트로 공유하는 내용
    • 채팅 참여자간 대화록
  • 스마트 컨트랙트 갱신 조건
    • 채팅 참여자가 보내온 대화의 서명이 해당 채팅 참여자의 서명이 맞으면 대화록에 추가함

즉, 채팅 참여자가 각각 블록체인 노드를 구성하고 대화 내용을 포함하고 서명을 하여 거래를 발생시키면 해당 거래가 동기화되고 거래 내역이 정당하면(채팅 참여자의 서명이 맞으면) 거래에 포함된 대화 내용을 전체 대화록에 추가하는 식입니다.

SCORE 기반 채팅 서비스 데모

이전 포스팅에서 설명하였듯이 스마트 컨트랙트는 Transaction과 Query라는 두가지 형태의 인터페이스를 가지고 있습니다. 위 동영상의 ‘보내기’는 Transaction으로써 다른 사람에게 메세지를 보내는 역활을 하며 ‘조회’는 Query로써 채팅방에 올려진 메세지를 확인할 수 있습니다. Query는 본인이 가지고 있는 스마트 컨트랙트의 내용을 확인하는 것이죠.

동영상 시나리오와 같이 한 사용자가 오프라인 상태가 되더라도 다른 사용자에게는 영향이 없으며 다시 온라인 상태가 되면 블록 동기화 과정을 통해 이전에 있던 모든 메세지를 받을 수 있습니다.

사실 채팅서비스는 블록체인이 유용한 어플리케이션이라고 하기는 어렵습니다. Socket.io 등을 이용하면 더 편리하고 실시간성으로 만들 수 있죠. 본 예제는 loopchain SCORE가 어떻게 돌아가는지 보여주기 위해 만든 샘플 정도로 보시면 됩니다. 그러나 예전에 야후 메신저가 내용 위변조가 안되고 모든 내용을 저장하는 특성 때문에 일부 도메인에서 사업 계약에 이용되었던 것을 생각하면 대화내용에 대한 무결성을 보장하는 블록체인 기반 채팅서비스도 상용화될 수 있습니다.

본 포스팅에서는 loopchain의 스마트 컨트랙트인 SCORE에 대해서 알아보았습니다. 다음 포스팅 부터는 블록체인의 또다른 주요 요소인 합의 알고리즘에 대해 알아보도록 하겠습니다.

theloop loopchain

저번 포스팅에서는 금융권 블록체인 요구사항과 Hyperledger Fabric과 R3 Corda가 금융권 요구사항을 만족시키기 위해 어떠한 방식으로 프라이빗 블록체인을 구현하였는지 알아보았습니다.

이전 포스팅 바로가기 

이번 포스팅에서는 드디어! 더루프가 어떤 회사이고 더루프에서 개발하고 있는 블록체인인 loopchain에 대해 소개하도록 하겠습니다.

더루프(theloop)

더루프는 2016년 탄생한 프라이빗 블록체인 전문 기업입니다. 블록체인 기술을 이용해서 공유와 신뢰에 필요한 사회적 비용을 감소시키고 서로 신뢰할  수 있는 디지털 세계를 만들기 위해 여의도 IFC에서 밤낮으로 노력하고 있습니다. 루프라는 이름은 외부에 폐쇄되고 내부가 모두 연결된 또한 중지 없이 운영되는 블록체인 네트워크 환경을 상징하고 있습니다.

[참고] 더루프 블로그를 시작하며

더루프는 블록체인 엔진인 loopchain을 독자개발하였으며 현재 금융투자업권 컨소시엄에 기술 파트너로 참여하고 있습니다. 이외에 대학 내 디지털 화폐 프로젝트인 서강코인 PoC를 마쳤고 프라이빗 블록체인 기반 디지털 화폐 서비스를 구현하는 등 블록체인을 활용할 수 있는 모든 분야에 대해 고민하고 있습니다.

더루프를 소개하는데 금융투자업권 컨소시움을 빼놓을 수 없을 것 같습니다. 금융투자업권 컨소시움은 금융투자협회내 26개 증권사와 IT기술회사 5개가 모여 금융권을 혁신할 블록체인 기술에 대해 연구 개발 및 실제 서비스를 하기 위해 만든 국내 최초의 블록체인 컨소시움입니다. 더루프는 금융투자업권 컨소시움에서 블록체인 엔진 및 솔루션을 지원하고 있습니다. 올해는 블록체인 기반 사설인증서 시범 서비스를 통해 실제 서비스에 적용할 계획을 가지고 있습니다. 사설인증서 서비스를 시작으로 향후 금융권을 혁신할 다양한 블록체인 기반  서비스를 제공할 것입니다.

loopchain

loopchain은 더루프가 독자개발한 프라이빗 블록체인 엔진입니다. 우선적으로 금융거래를 지원하는 것을 목적으로 개발되고 있으며 추후 IoT 환경 등 블록체인이 적용 가능한 다양한 서비스를 구성하기 위한 엔진 개발을 목표로 하고 있습니다.

loopchain은 이전 포스팅에서 포스팅한 Hyperledger Fabric이나 R3 Corda에 비해 블록체인의 기본에 더욱 충실한 구조를 가지고 있습니다. Hyperledger Fabric처럼 중앙에 트랜잭션 순서를 정해주는 무엇인가가 있고 체인은 이 내용을 검증해주는 구조랑 달리 기본 비트코인 블록체인 처럼 블록이 연결된 구조를 모두가 합의 하는 방식으로 순서를 정해주고 있습니다.  R3처럼 Instant Network를 추구하는 것이 아닌 이해관계가 있는 노드들이 반 영구적으로 네트워크를 구성하는 블록체인입니다.

loopchain_archi
loopchain 모듈 방식

더루프는 금융권 요구사항을 만족하면서 새로운 요구사항에 맞게 시스템을 변화하기 위하여 loopchain을 유연한 구조로 만들기 위해 노력했습니다. loopchain 모듈에서 Admin Layer는 주로 블록체인 네트워크 관리를 위해 노드의 장애 상황을 감독하고, 스마트 컨트렉트(SCORE : Smart Contract on Reliable Environment)의 버전을 관리하고, 각 노드의 권한을 감독합니다.  Engine Layer는 블록체인 노드의 주 역활인 분산합의, 원장 저장, 스마트 계약 실행을 담당 합니다. 특히 분산합의를 위한 엔진 모듈인 Blockchain과 실제 블록체인에 올라가는 서비스와 실행환경인 SCORE가 분리되어 있습니다. 마지막으로 Interface Layer는 다른 비지니스 어플리케이션이 블록체인 네트워크에 접속할 수 있는 환경을 만들어줍니다.

%e1%84%89%e1%85%b3%e1%84%8f%e1%85%b3%e1%84%85%e1%85%b5%e1%86%ab%e1%84%89%e1%85%a3%e1%86%ba-2017-03-03-%e1%84%8b%e1%85%a9%e1%84%8c%e1%85%a5%e1%86%ab-11-30-43
loopchain 특징

블록체인을 통해 다양한 서비스를 제공하기 위해서는 앞선 포스팅에서 설명하였던 기존 블록체인의 한계점을 극복하는 엔진을 개발하고 거래에 따른 커스트마이징이 필요합니다. 특히 loopchain의 1차 목표는 금융권을 위한 블록체인이기 때문에 이해당사자끼리만 데이터를 볼수 있는 Private Channel 기능, 블록체인 네트워크 참여 기관 별로 다른 기능을 가지게 하는 Tried System, 마지막으로 다양한 금융 서비스를 원할하게 지원하기 위한 빠른 속도를 목표로 개발한 블록체인 입니다.

Admin Layer에서는 각 네트워크에 참여하는 노드들을 관리 감독 합니다. Admin Layer에서 각 노드의 권한을 제한하고, 암호화 프로토콜을 통한 메세지 교환 방식, 또 비트코인 라이트닝 네트워크 프로토콜을 이용해 Tried System과 Private Channel을 구현하고 있습니다. 현재 각 특징을 구현하는 두가지 방식이 있는데 추후에 늘어 날 수도 아니면 한가지 방식으로 통합될 수도 있습니다.

loopchain에서는 높은 성능을 보장하기 위해 PBFT방식과는 다른 리더 중심의 분산합의 방식과 리더 장애 극복 알고리즘을 통해 BFT 문제를 해결하고 있습니다. 추후 포스팅에서 분산합의 알고리즘에 대한 개요 및 전체 이야기를 할 때 자세히 소개하도록 하겠습니다. 또한 블록체인 서비스를 동작하는 부분(SCORE)과 합의엔진을 완전히 분리하였고 합의엔진 내에서도 모듈 및 가용성 요구사항에 따라 프로세스를 여러개 분리하는 방식으로 고성능 블록체인이 구현되었습니다.

그 밖의 중요한 특징으로는 Portal이라는  자체 개발한 프로토콜을 이용하여 리더 노드를 통한 블록체인 외부 데이터(외부 블록체인) 접근 및 분산합의 방법(R3 Corda및 일부 블록체인에서 제공하는 Oracle과 유사하다고 생각하시면 됩니다.), SCORE (Smart Contract on Reliability Environment)의 버전 방식과 Migration없이 동작하는 네트워크에서의 업데이트 및 하위 호환성 지원, SCORE Store를 통한 스마트컨트랙트 배포 및 버전관리등의 특징이 있습니다. 또한 더루프는 블록체인 내에서 인증서를 발급하는 독자기술을 개발하여 이번에 금융투자업권 컨소시움의 첫번째 시범 모델로 사용할 예정입니다.

본 포스팅에서는 더루프에 대한 소개와 함께 금융거래 요구사항을 loopchain에서 어떻게 구현하고 있는지 알아봤습니다. 이 포스팅으로 금융권을 위한 블록체인에 관한 내용을 마무리 합니다. 이후 포스팅에서는 블록체인 기술에 대한 조금 더 심도있는 내용으로서 분산합의, 스마트컨트랙트, Oracle, 라이트닝 네트워크 등 기술적인 내용들을 중심적으로 포스팅하도록 하겠습니다.

왜 금융권에서는 블록체인에 주목할까?

핀테크 분야 중 최근에 가장 핫한 분야 중 하나가 블록체인입니다. 증권사들은 이미 컨소시움을 이루어 블록체인을 도입하기로 하였고 금융보안원에서는 블록체인 기술을 집중 투자 육성하겠다고 밝혔습니다 . 또한 액센츄어에서는 블록체인을 이용하면 매년 120억 달러를 감소할 수 있다고 발표하였 습니다. 블록체인이 어떤 기술이길래 블록체인에 이렇게 관심이 많은걸까요?  특히 금융권에서 관심이 많은 이유는 무엇일까요?

블록체인은 사토시 나가모토(Satoshi Nakamoto)가 비트코인(Bitcoin: A Peer-to-Peer Electronic Cash System)을 통해 처음 제안한 기술로써 비트코인에서 블록체인은 거래 무결성과 거래 내역이 위변조 되지 않음을 보장합니다. 이 것은 블록체인 네트워크의 수 많은 노드들이 거래 내역을 복제하고 올바른지 검증하기 때문입니다. 비트코인 이용자는 은행에서 송금이 완료 됐다고 보장하지 않아도 안전하게 사용할 수 있습니다.

비트코인 블록체인은 정말 공개 네트워크에 최적화 되어있는 기술이기 때문에 처음 공부하면 블록체인을  비트코인 외에 용도로 사용 할 수 있을 것 인가에 대해 고민합니다. 저 또한 그랬습니다. 공개 블록체인이면 이더리움처럼 이라도 사용 할 수있을꺼 같은데 금융권에서는 독자 블록체인을 자기들만 사용한다고 합니다. 금융권에서는 왜 블록체인을 사용하려는 것일까요? 먼저 블록체인에 대해 알아봅시다.

블록체인은 누군가의 보증이 없어도 내용을 신뢰 할 수 있게 해주는 기술입니다. 비트코인은 은행의 거래 보증 없이 디지털 화폐를 송금할 수 있습니다. 수 많은 노드에 거래 내역이 복제되기 때문에 비트코인 사용자는 거래한 내용이 삭제되거나 위변조될 것을 걱정하지 않아도 됩니다. 블록체인이 개인 간 거래 신뢰를 제공하는 것입니다. 그렇다면 금융권 블록체인은 개인이 서로의 신뢰를 위해 블록체인을 이용하는 것처럼 기관 간 거래 및 정보 공유의 신뢰를 위해 블록체인을 이용합니다.

%e1%84%89%e1%85%b3%e1%84%8f%e1%85%b3%e1%84%85%e1%85%b5%e1%86%ab%e1%84%89%e1%85%a3%e1%86%ba-2017-01-26-%e1%84%8b%e1%85%a9%e1%84%8c%e1%85%a5%e1%86%ab-9-43-38
청산 기관을 이용한 거래와 블록체인을 이용한 거래(출처 : santander)

현재 기관 간 신뢰가 필요한 업무는 많은 비용과 시간이 발생합니다. 예를 들자면 금융 기관 간 거래 할때는 청산기관이나 중앙은행을 통해 거래합니다. 이 방법을 통하면 거래 보증을 위한 많은 비용이 발생하고 청산기관이 주기적으로 모아 청산하기 때문에 즉각적인 청산이 불가능합니다. 만약 기관끼리 블록체인을 구축하여 청산 시스템을 구축한다면 신뢰를 위한 수수료가 감소하고 즉각 청산 할 수 있습니다.

금융 기관 간 거래 말고 다른 업무는 어떨까요? 공인인증서의 경우다른 기관에서 발행한 공인인증서를 검증하기 위해선 CA기관을 통해 검증해야 합니다. 다른 기관의 데이터가 자주 필요한 업무면 어떨까요? DB를 서로 오픈해서 공유하기는 힘들고, 만약 데이터를 공유한다고 해도 중간에 데이터가 변조되어 사고가 발생하면 누가 책임문제도 커질 것입니다. 이런 분야에 블록체인을 이용한다면 필요한 데이터 쉽게 공유 검증이 가능합니다.

블록체인을 통해 시스템을 구축한다면 필요한 내용이 기관들 사이에 공유 되고 이해관계에 있는 기관들이 해당 내용을 검증할 것입니다. 그리고 검증 내용이 즉각적으로 공유 됩니다. 이러한 과정을 통해 신뢰보증을 위해 발생하는 많은 비용을 해결할 수 있고 즉각적으로 처리할 수 있습니다. 또한 중앙 공격에 강하고 거래 내역 위변조를 즉각적으로 발견하고 모든 기록이 남아 책임 주체를 확인가능합니다. 필요한 데이터를 복잡한 프로세스 없이 공유할 수 있다는 것도 매력적인 요소입니다.

다음 포스팅에서는 금융권에서 사용하는 프라이빗 블록체인과 비트코인과 같은 퍼블릭 블록체인의 차이점에 대해서 기술할 것입니다. 왜 금융권은 비트코인이나 이더리움을 활용하지 않고 독자적인 블록체인을 구축하는지 이해에 도움되는 글을 작성 하겠습니다.