이번 글에서는 퍼블릭 블록체인의 한계에 대해 좀 더 자세히 설명하려 합니다. 특히 비트코인의 적용 범위를 확장한 사이드 체인과 퍼블릭 블록체인 구현체를 기반으로 한 프라이빗 블록체인에 대해 알아보고 이들의 한계점을 다시 확인해 보겠습니다.

 

사이드 체인

사이드 체인은 기존 비트코인 블록체인을 확장하기 위해서 나온 개념입니다. 기존 비트코인 블록체인은 비트코인만 거래할 수 있을 뿐 다른 용도로 사용하기에는 한계가 있었습니다. 사이드 체인은 블록체인에 저장되는 데이터가 조작 불가능하다는 것에 초점을 맞췄습니다. 비트코인 외의 다양한 거래를 수행하고 그 거래에 대한 증거 데이터를 블록체인에 저장하는 방식으로 거래를 수행하였습니다.

%e1%84%89%e1%85%a1%e1%84%8b%e1%85%b5%e1%84%83%e1%85%b3-%e1%84%8e%e1%85%a6%e1%84%8b%e1%85%b5%e1%86%ab
사이드체인 구조

가장 유명한 사이드체인인 Colored Coin은 트랜잭션에 구분되는 데이터를 집어넣어 다양한 자산을 거래하게 하였습니다. 나스닥에서는 주식거래를 위해 Colored Coin을 이용하려는 시도를 해봤죠. 하지만 시도는 시도로 끝나고 Colored Coin을 개발한 스타트업과 새로운 프라이빗 블록체인을 만드는 것으로 방향을 변경하였습니다. 금융권에서는 다른 사이드 체인에 대한 연구 또한 시들해지고 이제는 프라이빗 블록체인에 대한 연구 위주로 진행되고 있습니다. 이유가 무엇일까요?

비트코인은 인센티브 기반으로 운영되는 블록체인입니다. 컴퓨팅 파워를 이용해 해시 퍼즐을 푼 사람에게 인센티브를 주어지면서 해당 블록이 승인되고 복제됩니다. 현재 비트코인이 잘 운영되는 이유는 비트코인 네트워크를 독점하려면 51% 이상의 컴퓨팅 파워를 가져야 하는데 51%를 점유한다고 해도 크게 경제적인 이득을 보기 어렵습니다. 특정 거래를 블록에 넣고 빼고 정도만 가능하니까요. 또한, 누군가가 51% 이상을 점유했다는 불안감에 비트코인 가격이 내려가면 해당 업체는 마이닝 수익이 줄어듭니다.

그러나 만약 주식이 비트코인 위에서 거래된다면 어떨까요? 주식은 어떤 거래가 이뤄지는지에 따라 시시각각 가격이 변동합니다. 51%이상의 컴퓨터 파워를 독점해 특정 거래를 통과시키지 않고 자신의 거래만 승인하는 방식으로 시장에 영향을 미칠 수 있습니다. 예전에 특정 마이닝 풀이 70%이상의 컴퓨팅 파워를 가졌던 적이 있던 비트코인 네트워크 위에서 다른 금융 상품을 거래한다는 것은 매우 위험할 수 있습니다.

또한 기존 비트코인 블록체인의 운영 주체가 불분명하다는 것 또한 문제가 될 수 있습니다. 내가 보낸 트랜잭션을 블록 안에 넣는 것은 블록 생성 노드의 마음이기 때문에 내 거래가 언제 승인될지는 알 수 없죠, 실제 비트코인 블록체인에서 한 달 넘게 거래가 승인 되지 않는 경우도 있습니다. 그리고 현존 퍼블릭 블록체인 위에서 돌아갈 경우 감사기관 검증을 받기도 힘들고 시스템에 문제가 생길 경우 책임 주체가 불분명 하다는 단점이 있습니다.

 

퍼블릭 블록체인 구현체

최근에는 비트코인 혹은 이더리움(Ethereum)의 구현체를 그대로 활용하려는 시도들도 있습니다. Github에 공개되어 있는 구현체를 다운로드해 IP와 Port 변경을 통해 독자 네트워크를 구성하여 프라이빗 블록체인을 구성하는 것이죠.

이 경우 큰 개발 비용을 들이지 않고 쉽게 검증된 블록체인을 생성할 수 있겠죠. 그러나 이러한 퍼블릭 블록체인 구현체를 재활용하는 데는 한계가 있습니다. 퍼블릭 블록체인은 구현체의 속도보다는 공개된 장소에서 안정성 있는 블록체인을 만든다는 것에 초점을 두고 개발한 블록체인입니다.

스크린샷 2017-02-06 오후 5.40.14.pngEthereum Open Source

이더리움의 모든 스마트 컨트랙트는 EVM(Ethereum Virtual Machine)위에서 동작합니다. 이더리움에서는 EVM을 통해 스마트 컨트랙트의 상태 종료 보장(튜링 완전성) 및  같은 트랜잭션에 대해 같은 결과를 내는 것을 보장 (각자의 컴퓨터 환경에 의존성 없이) 합니다. 하지만 이러한 EVM은 기본 환경에서 실행 하는 것 보다 엄청나게 느려지는 단점이 있습니다. R3 이더리움 보고서에 따르면 타원 곡선 암호 알고리즘 검증의 경우 파이썬 구현체에서 0.017초 EVM 구현체에서 0.57초 정도의 시간이 걸립니다.  5개의 키로 링 서명을 구현할 경우 경우 python 구현체가 0.119초 EVM위에서 약 3.68초가 걸립니다.

또한 대부분의 퍼블릭 블록체인은 멀티 프로세싱에 최적화되어 있지 않습니다. 퍼블릭 블록체인은 고가용성 보다는 안정적으로 실행되는 것이 목적이고 애초에 정책적으로 7~12TPS정도 밖에 허용하지 않기 때문에 복잡하게 프로세스를 분리할 필요가 없습니다. 대다수의 퍼블릭 블록체인은 싱글 프로세스에 최적화 되어 있고 통신 모듈과 블록 처리 모듈 정도만 분리하고 있습니다. 실제 금융권 어플리케이션에서 요구하는 고 가용성을 확보하려면 구조부터 바꿔야 합니다.

앞선 포스트에서 이야기 하였듯이 퍼블릭 블록체인과 프라이빗 블록체인은 네트워크 현황 및 디지털 화폐 운용 여부 때문에 사용하는 분산합의 알고리즘이 다릅니다. 퍼블릭 블록체인 구현체를 금융권에 맞게 사용하려면 분산합의 알고리즘의 교체가 필요합니다. 대다수의 퍼블릭 블록체인은 블록 처리 모듈과 분산합의 모듈이 의존성이 강하게 구현하였기 때문에 이를 교체하는 것은 만만치 않을뿐더러 향후 업데이트에도 문제가 많습니다. 기본적으로 퍼블릭 블록체인은 한번 퍼블리싱 되면 하드포크가 아니면 소프트웨어 업데이트가 불가능하기 때문에 flexibility를 많이 고려하지 않기 때문입니다. Hyperledger Fabric이나 더루프의 loopchain에서 분산합의 알고리즘을  Plugin 형태로 구현하는 것과는 차이점이 있죠.

loopchain_archi.png
loopchain의 모듈 방식 구조

대다수의 퍼블릭 블록체인 구현체들은 퍼블릭 블록체인 특성상 많은 요소들을 배제하고 개발합니다. 이러한 구현체들은 flexibility 확보가 안되는 것들이 대다수죠. 블록체인 상에서 지원해야하는 새로운 기능들을 추가하기 어렵습니다. 만약 데이터 공개 이슈 때문에 Private Channel를 구성하려면 현재 블록체인 구조를 수정해야 할 것입니다.

또한 스마트 컨트랙트 DB도 level DB(key-value)에 종속된 형태가 많아 스마트 컨트랙트에서는 어쩔 수 없이 level DB를 사용해야 하는 경우도 많습니다. 해당 업무에 SQL DB가 효율적이라고 할지라도요.

이러한 이슈들 때문에 현재 금융권이나 기관에서는 프라이빗 블록체인을 이용하려고 하고 있으며 특히 거래에 따라 다양한 거래 검증 및 외부 연계, 규제 준수 등을 위해 블록체인 전체 스택을 커스터마이징할 수 있는 프라이빗 블록체인 기술이 주목받고 있습니다. 저희도 이러한 요구사항에 맞춰 더 유연하고 더 빠르면서 더 안전한 블록체인을 개발하기 위해 고민하고 점진적으로 개선하고 있습니다.