블록체인을 꼭 사용해야하나요?
이전 글에서 우리는 블록체인의 탄생과 어떤 산업에서 사용이 되려 하는지 알아보았다. 특히 지난 글에서 다양한 산업별 블록체인 기술 적용을 보면서 모든 분야에서 사용이 될 수 있다고 생각했을 것이다. 이번 글에서는 정말 블록체인이란 기술이 모든 산업에서 적용될 수 있는지, 꼭 사용해야하는지에 대해 이야기 하려한다. 우선 블록체인과 중앙집중형 시스템의 차이를 조금 알아보고 넘어가자.
Public Verifiability는 공개적으로 시스템의 상태(state)의 정확성을 누구나 검증할 수 있어야 한다. 블록체인과 같은 분산 원장을 가지고 있는 시스템들은 검증자(ex: 채굴자)에 의해 상태변화가 확인이 된다. 그러나 프로토콜에 의해 변경이 된 것은 누구나 확인이 가능하다. 반면에 중앙화된 시스템에서는 모든 상태(state)가 정확하게 변경되었는지 확신할 수 없다. 또한, 사람(User)마다 볼 수 있는 상태 변화의 범주가 다를 수 있다.
Public Verifiability를 가진 시스템에서는 데이터와 프로세스의 상태(state) 업데이트가 투명하게 보여진다. 모든 것이 보여지지만 모든 사용자가 모든 상태 업데이트 내용을 보는 것은 아니므로 불필요하게 소모되는 것이 있을 수 있다.
(사람마다 원하는 정보가 달라 쓸데없이 무겁다고 느낄 수 있다.)
Privacy는 어디서나 매우 중요한 요소 중 하나이다. Privacy는 중앙형 시스템에서 더욱 쉽게 달성할 수 있다. 공개형에서는 투명성을 전재로 하기 때문에 Privacy가 없다.
이 외에도 여러가지 요소들이 블록체인의 분산형(혹은 공개형)과 중앙집중형의 장단점으로 나타나고 있다. 그럼에도 불구하고 많은 기업들은 앞선 글에서 보았듯 블록체인 프로젝트를 하기 위해 노력을 하고 있다. 블록체인의 철학적인 측면은 완전한 탈중앙화이다. 이에 비해 기업들은 고객 혹은 자신들의 정보가 공개되지 않으면서도 사용할 수 있는 블록체인을 사용하고 싶어한다. 블록체인 프로젝트를 하기 위해서 고려할 사항이 무엇인지 더 알아보자.
비트코인이나 이더리움과 같은 블록체인은 Permissionless(허가가 필요없는) 즉, 공개형 블록체인이라고 이야기를 한다. 이들은 항상 정보가 공개되어 있고 탈중앙화가 되어있다. 이 네트워크에서는 누구나 참여할 수 있고 떠날 수 있다. 또한, 중앙의 관리자가 없다는 큰 특징을 가지고 있다. 이러한 공개형 블록체인은 모든 것을 보여주는 모습을 보이지만 privacy에 더 특화된 Zerocash(익명성 보장; 누가 보냈는지 알 수 없다.) 등이 있다.
Permissioned 즉 허가형 블록체인은 위에서 언급하는 블록체인 프로젝트처럼 모든 정보를 공개하기 어려운 곳에서 사용하려는 방식이다. 제한되어 있는 주체들이 자신의 신상을 인증받고 네트워크에 참여하게 되는 구조이다. 이들은 블록체인 네트워크 안에서 필요한 정보만을 서로 공개하고 스마트 컨트랙트로 계약을 맺어 이용한다. 허가형 블록체인은 보통 기업에서 많이 사용하고자 하며, 이러한 프로젝트를 만들 수 있게 하이퍼렛져나 R3 Corda가 개발을 하고 있다. (이더리움을 기업형으로 사용하려는 EEA(Ethereum Enterprise Alliance)도 있다.)
앞서 간단하게 이야기한 부분은 첫 글에서 언급한 부분이다. 사용하고자 하는 주체가 어디냐에 따라서 블록체인이 크게 나뉘는 것을 이야기하고자 다시 언급하였다.
블록체인을 사용할 때 중요한 부분이 제3자가 없다는 것이다. 제3자가 있을 때는 두 가지로 나눌 수 있다. 항상 제3자가 존재를 하느냐 혹은 존재하지 않아도 되느냐이다. 만약에 특정 프로젝트에서 제3자의 감시가 계속되어야 한다면 이는 블록체인을 사용할 이유가 전혀 없다. (이미 감시를 계속 잘하는데 쓸 필요가 있나…요???)
여기서 Multiple Writer는 데이터베이스에 기록을 하는 개체(Entity)를 의미한다. 블록체인으로 볼 경우 채굴자(Miner)가 될 것이다. 만약 프로젝트에서 Writer가 다수 필요한 경우 블록체인을 사용해도 된다. Writer가 한 명이 담당해도 상관이 없다면 블록체인을 사용해야 할 이유가 전혀 없다. 오히려 기존의 데이터 베이스인 SQL이나 Oracle을 이용하는 것이 더 빠르고 더 싼 비용이 들 것이다.
(SQL, MongoDB 등 좋은 것들이 많다. 사용해보는게 어떠할까?)
Writer를 알아야하는 경우가 있고, 비트코인이나 이더리움과 같이 알 필요가 없는 경우가 있다. 알아야하는 경우 허가형 블록체인을 사용할 수 있을 것이다. 그러나 아는 것 뿐만 아니라 이 Writer가 믿을 만한 존재여야 허가형 블록체인을 고려할 수 있다. 알지 않아도 된다면 공개형 블록체인을 사용함에 있어서 무리는 없을 것이다.
위의 몇가지를 통해 블록체인을 사용하기 전에 고려해야 할 사항들을 풀어서 설명하였다. 이에 대한 간단한 Flow chart를 보면 다음과 같다. (프로젝트를 고르는 것은 본인의 판단에 맡긴다)
다음의 Flow Chart는 4가지 결과를 얻을 수 있게 만들어 놓은 것이다. 이는 공개형 블록체인을 사용해도 되는지 혹은 허가형 블록체인을 사용해야 하는지 큰 틀로 나누어 놓은 것이다.
위의 Flow Chart를 자세히 보도록 해보자. 우선 본인이 하고자 하는 프로젝트가 데이터베이스에서의 상태(state)를 필요로 하는지 보도록 하자. 다수의 믿지 못하는 서로가 상호작용하여 시스템의 상태(state)를 변경하는게 필요하다면 다음으로 넘어간다.
위 차트에서 writer는 상태 변화를 작성하는 자로 블록체인에서는 합의 프로토콜에 참여하는 자이다. 다음으로 TTP(Trusted Third Party)는 신뢰하는 제 3자의 유무이다. 이들이 항시 온라인인지 오프라인이어도 되는지의 여부에 따라 결정을 한다. 마지막으로 writer를 잘 아는지, 신뢰할 만한 자인지에 따라 결정을 하면 본인의 프로젝트와 성향이 맞는 것이 나온다.위 flow chart를 통해 블록체인을 사용해도 되는지 고민하고 있는 것에 대해 해소가 어느정도 되었다. 해당 논문에 대한 의사결정을 도와주는 사이트에서 다시금 확인할 수 있다.(재미로 해보자)
위 Flow chart를 산업군 중 하나에 예시로 알아보는 것이 더 빠르게 이해가 될 것이다. 이를 산업군에 적용시켜보자.
공급 사슬망(SCM: Supply Chain Management)이란 부품 제공업자로부터 생산자, 배포자, 고객에 이르는 물류의 흐름을 가치사슬의 관점으로 나타낸 것이다. SCM은 필요한 정보가 원활히 흐르도록 지원하며 기업 내에 부문별 최적화나 기업 간의 전체 프로세스를 최적화하는 방법이다.(최적화 말이 쉽지 어렵다) SCM을 블록체인과 접목시켜보자. 위의 Flow Chart를 통해 보면 SCM은 각 기업마다 데이터베이스를 가지고 있어야 하며, 서로 가치교환을 하기 때문에 상태(state) 변화가 많이 일어난다. 또한 서로 다른 기업의 사람들이 서로 상호 소통을 하면서 거래를 하기 때문에 writer가 많다. 이들은 최종 완제품에 대해서 서로 공유를 하고, 자국 내 뿐만 아니라 글로벌 시장을 타겟으로 하기 때문에 항시 감독을 하고 있다. 기업에 따라 이 부분은 다르다. 만약 항시 감독이 불가능한 곳은 Writer가 누구인지 확실하게 알고 있다. 마지막으로 기업 간의 상호 소통을 위해 서로가 누군지 잘 알고 있다.
위 케이스를 통해 SCM 분야의 경우 두 가지 경로가 남게 된다. 허가형(Permissioned) 블록체인 혹은 블록체인을 사용하지 않는 것이다. 여기서 우리는 고민을 해야 한다. 기존 산업의 경우 24시간 이 시스템이 작동이 될 수 있던 이유는 무엇일까이다. 물류센터에서 일을 하고 있는 직원이 정직하게 일을 하고 우리는 그 직원을 믿고 있기 때문이다.
블록체인 혹은 디지털 산업에서 큰 화두는 현실세계와 디지털세계의 차이이다. 블록체인 분야에서는 이러한 현실과 디지털 사이의 문제를 오라클(그 오라클 아니다.) 문제로 이야기한다. 이는 실제로 담합이나 바꿔치기 등 기존 산업에서도 문제가 되던 부분이다. 이를 블록체인으로 바꾼다고 해서 쉽게 해결이 되기는 어렵다.
가령 예를 들어보자. 강원도에서 나는 배추가 블록체인에 기록되어 출하를 시작했다. 이 배추가 출하하는 도중 충청도산 배추로 바뀌었어도 이를 알 수 있는 방법이 없다. 이를 오라클 이슈라고 말한다.
이처럼 블록체인은 아주 이상적이고, 새로운 개념을 가져왔다. 하지만 블록체인을 막상 실제 사용하는 것은 쉽지 않다. 왜 어려울까? 이는 여러가지로 비교를 해 볼 수 있다.
기존의 중앙형 데이터베이스 시스템의 경우 오랜 시간동안 발전을 해왔다. 버그를 찾고 성능개선을 하며 지금까지 성장해왔다. 70년대에 만들어진 시스템은 현재까지 돌아가고 있을 정도이다. 중앙형 데이터베이스의 경우 수정을 할 수 있고, 백업서버를 놓음으로써 보안 이슈 등에 대해 관리를 할 수 있다. 물론 느리고 오래됐지만 시스템이 돌아가는 것을 바꾸는 것을 기업들은 꺼려한다.(교체비용과 위험 부담 등이 있기 때문이다.) 반면에 블록체인의 경우 새로운 버전을 내놓거나 수정을 할 때 중앙형 데이터베이스보다 많은 것을 더 고려해야한다. 단순히 새롭게 re-design을 할 수 있는 것이 아니다.(물론 기존 중앙형 데이터베이스도 많은 리스크가 있다.) 서로 원장을 나눠 갖기 때문에 상태(state) 변화의 합의 등이 필요하다.
새로운 기술을 들이는 것은 매우 힘든 일이다. 시스템을 사용하고 있던 기업들은 교체비용 등을 고려해야 하고, 교체 이후에는 더 좋은 서비스로 소비자에게 나타나야한다. 지금의 블록체인은 그럴 수 있는 수준이 아니다. 흔히 비트코인만 예를 들더라도 아이슬란드의 전기사용량을 뛰어넘어 사용하고 있다고 이야기한다. 그만큼 유지를 하는 유지비용이 어마어마하다는 것이다. 이는 데이터를 처리를 할 때 블록체인의 경우 수천 번씩 체크를 해야하기 때문이다. 같은 이윤을 올리면서 굳이 느리고, 무겁고, 비용이 더 드는 시스템을 사용할 이유가 없다.
블록체인은 기존의 중앙형 데이터베이스보다 확장성을 보여주기는 현재오써는 어렵다. 지금 현재 많은 Scaling 방법들이 나오고 있지만 아직까지 확실한 퍼포먼스를 보여주는 것은 많지 않다. 데이터의 상태(state)를 수천 번씩 확인하고 수많은 원장을 나눠 가져야 하는 블록체인에서 퍼포먼스를 기대하는 것은 아직 쉬운 이야기는 아니다. (이는 나중에 따로 다루도록 하겠다)
우리는 이 글에서 블록체인이 필요한지에 대해서 알아보았다. 기존의 서비스를 중앙형 데이터베이스에서 성공적으로 사용하고 있다면 블록체인을 현재로서는 적용할 이유가 없다는 것을 강조했다. (그래도 필요한 것이 있다면 적용을 고려해보자) 블록체인에서의 확장성이나 지속 가능한 업그레이드에 대해서는 많은 연구가 있고, 실제로 적용을 하여 좋은 환경을 만들기 위해 노력하고 있다. 블록체인이 가진 매력은 기존에 생각하지 못한 것을 가능케 하지 않을까? 라는 생각이 들어있다는 것이다. 마치 여행을 갈 때에는 무조건 호텔에서 지냈다면 최근에는 남의 집을 빌리는 에어비앤비가 성공한 것과 같이 우리가 생각하는 새로운 사고라고 볼 수 있다. 블록체인에 대해 많은 사람들이 오해하는 부분은 분산형 데이터베이스랑 같다고 생각하는 사람들 또는 블록체인이 이 세상의 모든 것을 바꿀 수 있다고 이야기하는 사람들이다. 이는 정확하게 잘못된 생각이다. 블록체인은 사용될 수 있는 분야가 모든 분야는 아니다. 이를 유념하고 기존의 기업이 유지하던 것에서 블록체인이 꼭 필요한지 고려를 한 뒤에 프로젝트를 시작하면 좋겠다. 블록체인은 만능이 아니다. 이를 꼭 고려하여 프로젝트를 진행하라.