코인 프로젝트를 판별할 때 제가 평가하는 기준 'Hyperledger Fabic' (이와 비교하는 eos)

By @yellowboy101012/7/2017kr

샹크스.jpg

안녕하세요. @yellowboy1010 입니다.

추운 겨울입니다. 그래도 코인 계좌는 따뜻 하시죠 ?ㅎㅎ

제가 어제 동료들과 블록체인 관련 얘길 하다 (제 주변에는 코인 투자자도 많지만 코인 투자 안하는 블록체인 빠돌이들이 많습니다. 업계를 다니는 장점 중 하나는 블록체인 관련 얘기를 하루 종일 할 수 있다는 것. ) 오늘 글은 Private Blockchain과 Public Blockchain에 대한 얘길 해야겠다고 생각했습니다.

사실, 몇 번의 포스팅에선 Private Blockchain이 Public Blockchain과 지향점이 다르다고 했었는데요. 그 이유는 각각 이용 주체가 다르기 때문입니다. 그런데, 곰곰이 생각해보니 오해가 있을 수 있겠더라고요. 저는 Private Blockchain이 블록체인이 아닐 수 있다라는 논리를 그 이용 주체가 기업이기 때문이라는 것을 전제로 했습니다. 하지만 기술적으로 다르다고 보지는 않습니다.

저는 Private Blockchain 프로젝트를 많이 해봤는데요. 참 지금 생각해보면 말 같지도 않은 프로젝트를 하기도 했습니다. (읭? 프로젝트는 말과 다르긴 하지...) Corda, Fabric, 종필 형님의 쿼럼... 이걸 써보면서 각각 플랫폼의 장단점을 느껴보기도 했습니다.

제가 오늘 말씀드릴 것은 Hyperledger의 Fabric입니다. Linux Foundation이 주도하는 Hyperledger의 여러 프로젝트 중 하나죠. 근데 저는 Private Blockchain에서 가장 선호하는 플랫폼이 무엇이냐는 질문에 Fabric을 종종 얘기 합니다. 확실히 Fabric을 주도하는 IBM이라는 기업이 괜히 글로벌 기업이 아니구나란 생각을 합니다. IoT와 물류 산업에 적용될 수 있도록 범용성과 확장성을 추구하는 것이 Fabric입니다. 그래서 각 산업의 서비스 로직을 적용할 수 있도록 만들었습니다.

저는 Fabric을 Public 화하면 어떨까 동료들과 얘길 합니다. 그리고 기존 Public Blockchain을 Fabric과 비교하여, 그게 이거랑 뭐가 달라? 이런 얘기도 많이 하는데요. 오늘은 Fabric의 특성과 저희가 프로젝트를 판별할 때 어떠한 이야기를 하는 지 말씀드리려고 합니다. 최근엔 EOS가 주제였기 때문에 그 얘기도 잠깐?? 언급하기도 할게요 .

(1)Fabric의 참여 주체 - Client, Endorser, Orderer

Fabric도 Smart Contract가 지원됩니다. 단, 토큰 기능은 따로 존재하지 않습니다. Fabric에서도 각 참여 주체가 Smart Contract를 Deploy하고, 추후에 이를 Invoke하여 State DB를 업데이트 하는 구조를 갖는데요. 이더리움과 비슷합니다. 물론 데이터를 저장하는 방식은 다르지만요. 기업들이 Fabric 위에서 사업을 펼칠 수 있습니다. Fabric은 합의 구조가 독특한데요. (여기서 제가 말씀드리는 것은 1.0 버전 기준입니다.)

우리가 Node라고 표현하는 주체는 Fabric에선 Peer라고 합니다. 일반적으로 블록체인에서는 개인이 Client가 되잖아요? 비트코인으로 보면 Client가 Transaction을 던지면 Full client Node가 이를 검증하고 주변으로 전파합니다. Mining Node가 이를 수집하여 블록을 형성하게 되죠. PoS 방식은 Mining 과정과는 다르지만 어찌됐든 하나의 블록으로 합의를 보는 구조를 갖습니다. 블록 하나를 선택하여 이를 주변에 Broad Casting 하고요. 각 Node들이 독립적으로 검증하여 이를 취하는 방식이죠.

Fabric은 Channel 구조가 있습니다. 여기서 좀 복잡해지는 데요. 예를 들어 A 블록체인 네트워크(IoT)가 있고, B 블록체인 네트워크(물류 유통)가 있습니다. 각각은 독립적인 블록체인 네트워크죠. 하지만 홍길동 씨는 그 두 네트워크 모두 가입되어 있습니다. 홍길동 씨는 바로 물류 추적 사업을 하는 사람이기 때문입니다. A 네트워크에서 IoT 데이터를 교환하고 B 블록체인에서는 물류 유통 정보를 공유합니다.

이 홍길동 씨는 A 네트워크와 B 네트워크의 중간 지점에 있어야 하는 역할을 맡고 있는데요. A 블록체인과 B 블록체인 네트워크가 독립된 상황이라면 다른 참여 주체가 홍길동 씨를 신뢰할 수밖에 없습니다. 그렇다면 A 블록체인과 B 블록체인 네트워크를 묶을 수는 없을까요?

Fabric의 문제의식은 여기에 있습니다. 그래서 합의 구조를 다르게 가져갑니다.

바로, Endorser (검증)과 Orderer(블록 배열)을 분리 시키는 것입니다. 최초에 홍길동 씨는 IoT 사업에 대한 Smart Contract와 물류유통 사업에 대한 Smart Contract를 각각 Deploy 시킵니다. A 네트워크에는 '우리 산업 '홍길동씨' '그들 산업'이 존재하고요. B 네트워크에는 '오늘 산업' '홍길동씨' '내일 산업'이 존재합니다. 홍길동씨를 제외하고는 각 네트워크 참여자들은 서로 다른 네트워크에 있는 블록을 공유할 수는 없습니다.

어떤 Client A 네트워크에 있는 '우리 산업'에 Transaction을 던졌습니다. 이 때 우리 산업 DB 내에 있는 Smart Contract를 돌려서 결과를 확인한 후 Transaction 결과를 Client에 던집니다. Client는 결과를 받고 A 네트워크에 던지게 되는데요. A네트워크 참여자들은 각각 검증을한 후 Client에 결과를 던집니다.

여기서 잠깐 !!!

지금 이 과정에서 블록이 완전히 생성된 것은 아닙니다. 여기서 Mining 이나 지분 증명 이런 걸 하지 않았잖아요?

그럼 어떻게 되느냐...

A네트워크에 있는 참여자들 B 네트워크에 있는 참여자들은 각각의 Transaction을 갖고 블록을 생성합니다. 그리고 일정 시간이 지나면 (다른 조건을 걸 수 있습니다.) Orderer 그룹한테 다 던집니다. Orderer는 각각의 블록에 순서를 맞추어 각 네트워크 참여자들에게 던지게 됩니다. A 네트워크 참여자들, B 네트워크 참여자들은 이 블록의 순서대로 저장을 합니다.

A 네트워크 참여자들, B 네트워크 참여자들이 던진 블록이 총 5개라고 해봅시다.

1번(A) 2번 (B) 3번(B) 4번(A) 5번(B)

이렇게 됐을 때 A 네트워크에는 1,4 블록이 저장되고 B 네트워크에는 2,3,5 번이 저장됩니다. 홍길동씨는 1,2,3,4,5 를 모두 저장하게 되는 것이죠. 여기서 각 블록을 저장하는 기준은 뭐냐인데 각 Channel에는 '인증서' 즉 개인키가 존재합니다. 자기 개인키에 맞는 블록들을 저장하게 되는 것이죠. 이렇게 하여 서로 다른 네트워크에 프라이버시를 가지면서 동시에 확장성을 갖게 됩니다. 이러한 상황이라면 금융, 물류, IoT가 서로의 정보를 공개하지 않고도 연결될 수 있는 것이죠.

Fabric이 합의 구조를 다르게 가져가는 또 다른 이유는 속도입니다. DPOS 방식도 속도의 문제 때문에 중앙화된 합의구조를 갖잖아요 ? Fabric도 모든 블록을 싱크맞추는 데 시간이 오래 걸린다는 문제 때문에 각 네트워크 별로 블록을 생성하되 총 합의는 Orderer에서 이루어지도록 했습니다. Orderer는 검증 자체를 하지는 않구요. 말 그대로 서로 다른 블록들이 형성되어있을텐데 이 때 싱크를 맞춰주는 역할만 합니다. 실질적으로 Endorser가 검증하면 서비스하는 데에는 문제가 없는 것이죠.

(2)근데 이거랑 Public Blockchain이란 뭔 상관 ?

자자, 잘 생각해보세요. (가만히 있는데 혼자 쇼한다고요? ㅎㅎ 죄송합니다.) 제가 굳이 EOS랑 연관시켰던 이유도, 누군가가 EOS를 보면서 '어? 이거 Fabric 이잖아' 라고 했기 때문입니다. EOS는 소비자가 수수료를 내지 않죠? Fabric도 마찬가지입니다. 소비자는 전혀 수수료를 내지 않고요. 각 Client가 소비자로 부터 돈을 벌 수 있는 구조를 만들어야 하는 것입니다.

근데 EOS는 토큰 기능이 있는데, Fabric은 없다고요?

네. 근데 이런 방법이 있습니다. 최초에 Fabric에 Token Contract를 Deploy 시키면 됩니다. Token 기능은 그다지 어려운 기능이 아니거든요.

다른 플랫폼과 호환 되냐고요 ?

네. 가장 하위 영역에 Fabric 네트워크가 있으면 Middleware에 EVM이든 JVM이든 이 것을 올릴 수도 있고요. 이더리움이든 비트코인의 자산 정보를 Fabric에 기록하는 것도 가능합니다. 물론 Fabric 프로젝트 내에서 Token을 발급하는 것도 가능하고요.

지분에 따른 네트워크 파워 조절 가능하냐고요 ?

Fabric 합의 구조는 변형할 수가 있습니다. 각 합의 과정을 설정할 수가 있는 것이 특징인데요. 예를 들어 Peer의 역할을 나눠보죠. 하나는 잔고 증명 Peer가 있고, Transaction 검증 역할을 하는 Peer를 구분하여 둬봅시다. 그렇게 된다면 Transaction을 던지는 Peer는 자신의 지분을 검증받아야 합니다. 그래야 결과를 Broadcasting 할 수 있습니다. Fabric Token 1%를 보유하고 있는 Peer는 자신이 기록할 수 있는 양은 전체의 1%를 유지하여야 합니다.

단일 쓰레드가 아니라 병렬 쓰레드는 가능하느냐 ?

지금 현재 존재하고 있는 블록체인 프로젝트는 서로가 서로를 모티브로 하고 있다는 것을 알고 있을 것입니다. 남이 하는 거면 자기들도 할 수 있습니다. 블록체인은 단일한 기술이 아니라 융합 기술이거든요. 어디든 끼워 넣을 수 있는 것이죠.

(3)다시 돌아오는 Public Blockchain과 Private Blockchain의 차이.

돌고도는 질문 Public Blockchain과 Private Blockchain의 차이는 무엇인가요?

저는 고객의 차이라고 봅니다. 기술의 차이가 아니라 고객이 누구냐의 차이이죠. Public Blockchain의 고객은 대중입니다. Private Blockchain의 고객은 기업입니다.

Private Blockchain에서 가장 두드러지는 특징은 Membership Node와 Auditor Node 입니다. 위에 예를 들었던, '우리 산업' '홍길동 씨' '오늘 산업' 등 이런 산업들을 구별하기 위하여 Membership을 부여해야 합니다. Private Blockchain은 기업형을 목적으로 하기 때문에 이 기업을 구별할 수 있는 인증 시스템을 갖춰야 하는 것이죠.

하지만 이를 없앨 수 없는 것은 아닙니다. Membership Node기능을 죽이고 퍼블릭으로 오픈하게 되면 됩니다. 그럼 누구나 Endorser가 되고 Orderer가 될 수 있는 것이죠. 인센티브요? 똑같이 Fabric 기반으로 만들면 되긴 됩니다. 아까 말씀드린 Token Contract를 배포하여 각 프로젝트에 맞는 Token을 만들면 되죠. 그럼 ERC 20 Token처럼 Fabric Token들도 서로 돌고 돌 수 있을 겁니다. 여기도 Bitcoin 처럼 UTXO 모델을 만들 수 있고요.

Private Fabric Blockchain, Public Fabric Blockchain 구조나 Public Fabric Blockchain Public Fabric Blockchain처럼 플라즈마, 라이덴 모드도 만들 수 있습니다. 이더리움도 Private Network있잖아요? 다 비슷비슷합니다.

(4)그럼 Fabric에서 하면 되지 왜 Fabric에서 안 하나?

왜냐하면 Fabric의 이해관계 때문인 것이죠. 기업들이 주도해서 만든 기술이기 때문에, 각 기업은 B2B 네트워크를 형성하기 위해 노력할 것입니다. 굳이 Public으로 만들어 대중들과 이익을 공유할 필요가 없는 것이죠. 오히려 B2B 네트워크를 공고히 하여 P2P 네트워크를 죽이는 것이 이들에겐 더 이익일 수도 있습니다.

(5)근데 넌 왜 이 글을 쓰냐 ?

심심해서요...ㅎㅎ 도 맞지만 블록체인 프로젝트 기준을 잡을 때 저는 이걸 기준으로 삼습니다. 여러 프로젝트들이 많은데, 각 프로젝트의 정체성, 철학, 비전 이런 것들을 보기 위해선 몇 가지 기준을 설정해야 하잖아요? 근데 저는 Fabric이 이러한 기준점을 제공해준다고 생각을 합니다.

그래서 매일 묻는 것이 'Fabric 쓰지 왜 저렇게 고생해서 새로 만드나?' 이런 얘기들입니다.

물론 Fabric의 기술적 문제가 전혀 없는 것은 아닙니다. Fabric tps가 상당히 낮게 나오는데 이 것도 문제고 Hyperledger 커뮤니티에서 언제 이걸 유료로 할 지 모르는 위험성도 있습니다. 저작권 문제요. 그리고 개발 자체도 커뮤니티에 들어가야 하는데, 돈을 내야 하는 것이죠.

여러 가지 문제가 있지만, 어찌됐든 사람마다 프로젝트를 판단할 때나름의 기준들이 있을텐데, 그 것이 없다면 Fabric을 써보는 것도 하나의 방법이라고 생각합니다. 오픈 소스이니 다운로드 받고 써볼 수도 있습니다. IBM에서 정말 쉽고 재밌게 잘 만들었더라고요. (저 IBM 직원 아닙니다. 어떠한 계약관계도 없음)

우리가 편견만 버리면 세상에는 학습할 거리들이 정말 많고요. 편견만 버리면 세상만사가 참 비슷하고 돌고도는 구나라는 것을 느낄 수가 있습니다.

코인 투자 말고 블록체인에 관심가지시는 분들은 Fabric 한 번 공부해보시길 권해드립니다.

오늘도 좋은 하루 되세요 ^^

46

comments