본문 바로가기

개발 노트/Blockchain

[블록체인] Hyperledger Projects

반응형

Hyperledger 는 리눅스 재단 (Linux Foundation) 이 주관하는 오픈소스 기반의 Private 블록체인 프로젝트이다.

사용자가 각자 원하는 Private 블록체인 네트워크를 구성하기 위한 블록체인 인프라 솔루션들을 제공하며 오픈소스로 공개되어 있다는 장점이 있다. 단점은 시장 인지도나 유지하던 개발자들의 상황(?) 등에 따라 운영 중이던 솔루션이 EOS 되는 경우가 있다.

Hyperledger 프로젝트들

여기서 주로 많이 사용되는 인기있는 프로젝트 몇가지를 소개하려 한다.

 

Hyperledger Besu

Hyperledger Besu는 공용 및 사설 허가 네트워크 사용 사례 모두에 대해 엔터프라이즈 친화적이도록 설계된 이더리움 클라이언트이다. Rinkeby, Ropsten 및 Görli와 같은 테스트 네트워크에서도 실행할 수 있고 PoW 및 PoA(IBFT, IBFT 2.0, Etherhash 및 Clique)를 포함한 여러 합의 알고리즘이 포함되어 있다.

 

Besu 는 Java 로 구현되어 있고 현재 우리가 알고 있는 Public Ethereum 네트워크의 PoW 방식이 아닌 서로 인증된 Validator 들 사이에서 블록 생성을 합의하여 블록을 채굴하는 방식인 PoA 를 사용할 수 있다. 이는 PoW 방식에서 동시에 Mining 되어 메인체인을 선택하는데 시간이 필요한 점 등이 없을 수 있다.

 예를들어 IBFT 2.0 합의 알고리즘을 선택하여 네트워크를 구성하는 경우 genesis 설정에 지정한 blockperiodseconds 의 단위시간(초)에 따라 네트워크에 참여한 Validator 들이 합의한 1개의 블럭이 체인에 연결되기 때문에 Uncle block 이 생기지 않는다.

 Clique 알고리즘은 가장 많이 사용되는 Ethereum 클라이언트인 geth 에도 포함되어 있는 PoA 알고리즘인데 IBFT 2.0 과는 차이가 있고 내용은 아래 표와 같다.

Property Clique IBFT 2.0
Finality Forks / Reorgs possible Immediate Finality
Validators Required 1 4
Liveness  ½ validators live >= ⅔ validators live
Relative Speed Faster than IBFT 2.0 Slower than Clique

Besu 에서도 PoA 를 사용할 때 IBFT 2.0 알고리즘을 추천한다.

 

합의 알고리즘을 제외한 나머지 기능들 (EVM, Ethereum Protocol 등) 은 Public Ethereum 과 동일하기 때문에 Block Explorer 도 기존 솔루션들을 사용할 수 있고 가장 기능이 많고 유명한 오픈소스 솔루션은 Blockscout 이다.

 

Hyperledger Fabric

 Hyperledger Fabric은 모듈식 아키텍처로 애플리케이션 또는 솔루션을 개발하기 위한 기반으로 고안되었다. Hyperledger Fabric을 사용하면 합의 및 멤버십 서비스와 같은 구성 요소를 플러그 앤 플레이로 사용할 수 있다. 모듈식의 다양한 디자인은 광범위한 산업 사용 사례를 충족하고 개인 정보를 보호하면서 대규모 성능을 가능하게 하는 합의에 대한 고유한 접근 방식을 제공한다.

 위 설명은 공식 홈페이지에서 가져온 내용인데 사실 설명하는 글로 Fabric 을 이해하기는 너무 어렵다.

Fabric transaction flow

 

 Fabric 은 PoA 를 사용하는 Private Blockchain Network 이며 서로 다양한 Organization 에서 블록체인으로 공유되는 Channel (Ledger) 데이터를 chaincode (Smart Contract) 로 실행할 수 있다. 

 이더리움과 비교해보면 Channel 은 Ledger 와 동일한 원장데이터라고 볼 수 있고, Chaincode 는 EVM 에서 실행되는 Smart contract 이다.

 

 Fabric 은 여러 Org 들이 각자 필요한 데이터(Channel) 들을 blockchain 네트워크 상에서 CRUD 하며 공유하기 때문에 서로 다른 Org 들이더라도 신뢰할 수 있는 데이터 공유를 할 수 있다는 장점이 있다. 아래는 3개의 Org 가 2개의 Channel 을 공유하는 모습이다.

 

 내가 사용해보고 느낀 Fabirc 은 기존 알고 있는 이더리움 네트워크와는 블록체인이라는 점만 같고 모든게 달라서 이해하기가 까다로웠다. PoA 방식도 MSP 라는 네트워크의 노드로 참여하기 위해 관리하는 서버를 따로 두고 Transaction 들이 발생했을 때 이를 Block 에 포함시키기 위해 Orderer Node 가 따로 존재하여 먼저 들어온 Transaction 들을 순서를 맞춰 block 생성해주는 노드가 따로 존재하는 점까지 새로운 개념들이 많이 나와 어려웠지만 그만큼 기업에서 사용하기에 자유롭게 필요에 따라 네트워크를 구성하여 사용할 수 있을 것 같다.

 이러한 특성인지 모르겠지만 Hyperledger Fabric 은 Eth 와 같은 Native currency 가 없다.

 

Hyperledger Explorer

 Hyperledger Explorer 는 Hyperledger Fabric 전용 Blockexplorer 이다. Blockchain 네트워크를 구성하고 관리하다보면 과거 발생했던 transaction 이나 현재 channel 의 state 등을 한눈에 볼 수 있는 Block explorer 는 필수이다. 

 따라서 Fabric 의 Blockexplorer 인 hyperledger explorer 프로젝트를 제공한다.

하지만 우리가 상용으로 사용하고 있는 이더리움의 Blockexplorer 인 etherscan 이나 blockscout 만큼 정보를 자세하게 보여주거나 사용자 편의성을 제공하진 않는다. 

Hyperledger Caliper

Hyperledger Caliper 는 Blockchain benchmark 툴이고 Ethereum, Fabric, FISCO BCOS 등 다양한 Blockchain 네트워크의 TPS, RPS 를 측정할 수 있다. Caliper 의 아키텍처는 아래와 같다.

Blockchain 은 single thread state machine 이라고도 불리며 모든 네트워크가 동일한 block 정보를 가지고 네트워크 내부의 Ledger 를 동일한 상태로 유지해야 하기 때문에 TPS 를 높이기가 상당히 어렵다. 이런 TPS 를 각자의 네트워크 환경에 따라 다양한 Client 구성으로 테스트해볼 수 있는 Benchmark 툴을 Hyperledger Caliper 가 제공한다.

 

 예를 들어, Caliepr 는 (1) ERC20 smart contract 를 네트워크에 배포 (2) 특정 address 에 Token minting (3) 다른 address 에 Token 전송 등의 단계를 Testbench 로 작성하고 이 Transaction 의 Send rate 를 변경해가며 부하를 준다던가, 여러 Worker 를 띄워 동시에 서로다른 Smart contract 들을 네트워크에 배포하고 테스트하는 등의 기능이 있고 이렇게 수행된 결과를 Report 해주는 기능도 있다.

 

Hyperledger Bevel

Hyperledger Bevel 은 여러 Blockchain 네트워크를 Production mode 로 배포할 수 있는 툴이다. gitops 를 사용하여 Bevel 에서 제안한 설정 옵션들을 지정하면 Fabric, Besu, Corda 등 다양한 Blockchain 네트워크를 AWS, GCP, Azure 등 다양한 k8s 서비스 플랫폼에서 Production 모드로 배포할 수 있다.

하지만 현재까진 0.x 대 버전으로 정식 1.x release 가 나오지 않아 document 와 community 가 충분하지 않기도 하여 사용을 시도해보았지만 네트워크 구축은 실패하였다.

 

 

Etc.

 이외에도 Hyperledger Aroha, Indy, Firefly 등 Blockchain 네트워크를 구성하기 위한 프로젝트 뿐만아니라 네트워크를 관리하거나 배포, 테스트할 수 있는 툴 등 여러 프로젝트들이 있다. 하지만 아직 0.X 버전의 프로젝트들은 사용하기에 충분한 Document 를 제공하지 않는 것들도 있고 github 의 last commit 이 수년이 지난 프로젝트들도 있다.

 따라서 실제 네트워크를 구성하고 운영하기 위해 프로젝트를 선택한다면 미래에 지속운영가능할지 전망도 충분히 고려하여 선택해야 한다.

 

반응형

'개발 노트 > Blockchain' 카테고리의 다른 글

[블록체인] Ethereum  (0) 2022.03.28
[블록체인]Blockchain 이란?  (0) 2022.03.27