[BlockChain] hyperledger이 무엇인가요?

kysung95·2021년 4월 29일
1

BlockChain

목록 보기
5/5
post-thumbnail

안녕하세요. 김용성입니다.
오늘은 hyperledger가 무엇인지 간단하게 설명드린 후, 그 중에서도 가장 hot 한 fabric에 대해 포스팅하겠습니다.

Hyperledger란

Hyperledger을 그대로 해석을 해보면 ‘아주 뛰어난 장부’ 입니다. 기존의 blockchain 또한 이러한 장부의 특성을 가지고 있는데 hyperledger은 과연 어떤 부분에서 뛰어난 점을 가지고 있는지에 대해 알아볼까요?

탄생 배경

Hyperledger은 리눅스 기반의 blockchain 오픈소스 프로젝트입니다. 허가 받은 사람만이 접근할 수 있는 접근성이 고려되었고 이는 hyperledger가 허가형 private blockchain이라는 점을 알 수 있습니다. 이러한 특성을 기반으로 기존 blockchain의 확장성에 불만을 가진 이들이 특정 회사에 종속되지 않고 표준적인 blockchain 플랫폼을 키워보자는 마음으로 만든 프로젝트입니다.

Hyperledger이 주목받는 이유

hyperledger 이외의 다른 private blockchain(ex: ripple)도 존재하지만, hyperledger blockchain이 특별하다고 언급되는 이유는 private blockchain으로서 여타 btc이나 ethereum처럼 암호화폐 중심 프로젝트가 아닌 블록체인이 필요한 물류, 제조, 기술 산업 등 여러 산업에 범용적으로 도입 가능한 기술 표준을 제시하는 것을 목표로 두고 있고 이에 대한 비즈니스, 어플리케이션을 만드는 데에 집중하고 있다는 점 때문입니다. 이러한 hyperledger에는 웹에서 django같은 프레임워크를 연상하게 할 정도로 여러가지 하위 프로젝트들이 존재합니다. 이중에는 대표적으로 iroha, burrow, Fabric 등이 있고, 특히 후술할 Fabric의 경우에는 기존 ethereum에서 굉장히 좋은 평가를 이끌어 냈던 ‘smart contract’를 ‘chaincode’ 라는 이름으로 쓸 수 있도록 하며 가장 많은 관심을 받고 있습니다.

Fabric이란?

Hyperledger fabric은 hyperledger 내의 하위 프로젝트 중 하나로 smart contract를 사용하며 각각의 노드들이 거래를 관리하는 시스템입니다. 여러 hyperledger 하위 프로젝트 중에 github star라던지 contributor들도 많이 보유하고 있는 프로젝트이고, 당연하게도 permissioned private blockchain의 형태를 가지고 있습니다. 그렇기에 누구나 자유롭게 참여가 가능한 public blockchain과는 반대로, 인증 관리 시스템에 의해 인증을 받고 허가된 사용자만이 blockchain 네트워크에 참여할 수 있으며 Fabric에서 추구하는 모델의 두드러지는 특징은 다음과 같이 정리할 수 있습니다.

Fabric이 가진 주요 특성

  • 접근 권한을 부여받은 주체들만이 blockchain 네트워크에서 활동할 수 있습니다.
  • 네트워크 내의 특정 구성원들에게만 거래 기록을 공유할 수 있습니다.
  • 거래를 검증하는 구성원에게 경제적 인센티브(수수료)를 제공해야 하는 public blockchain과 달리 네트워크 내에서 거래를 검증할 주체를 지정하는 방식이기 떄문에 암호화폐라는 경제적 보상이 필요치 않습니다.
  • chaincode’라는 것을 통해 ethereum의 ‘smart contract’를 구현할 수 있기에 네트워크 내에서의 비즈니스 프로세스를 자동화 할 수 있습니다.
  • ethereum과는 달리 보다 더 인지도 있는 일반적인 프로그래밍 언어를 사용하였기에 접근 장벽이 낮아지고 오픈소스의 장점을 잘 살릴 수 있습니다. (ethereum의 경우 앞선 포스팅에서 봤듯이 solidity를 사용하죠?)

Fabric의 peers 종류

  • Committing peers: ordering이 되어서 전달된 트랜잭션 블럭을 검증하고, 검증이 완료되면 자기가 갖고 있는 ledger에 해당 블록을 추가하고 관리합니다. 기본적으로 모든 peer은 committing peer에 해당됩니다.
  • Endorsing peers: smart contract에 수행 될 트랜잭션을 시뮬레이션 해보고 그 결과를 클라이언트 어플리케이션에 리턴해주는 peer입니다. 트랜잭션 검증의 역할을 합니다.
  • Anchor peers: 채널 내의 대표 피어로 채널에 다른 조직이 가입할 경우 가장 먼저 발견하는 피어입니다.
  • Leading peers: 여러 피어를 지고 있는 조직의 경우, 모든 피어를 대표하여 네트워크와 커뮤니케이션 하는 피어입니다.

Fabric 구성 요소 및 용어

  • World State: 특정 시점에서의 ledger status, ledger database이라고 생각할 수 있으며 거래에 대한 모든 것들을 관리하고 있습니다.
  • transaction log: 현재 status의 현재 값이 된 모든 trasaction을 기록합니다.
  • Orderers: endorsing peers들의 시뮬레이터로부터 통과된 transaction을 받고 정상적으로 통과되었는지에 대한 확인을 한 후 ordering의 작업을 취하고 그에 따라 committing peers에게 전달합니다.
  • Channel: Hyperledger의 두드러지는 특징 중 하나로 전체 시스템을 다수의 채널로 구분 짓고 채널별로 별도의 독립적인 블록체인을 유지 가능하게 합니다. 참여자는 다수의 채널에 가입 가능하고 특정 채널에 가입함으로써 블록체인을 선택적 공유할 수 있습니다.
  • Membership Service Provider: 시스템에 참여하는 멤버들의 신원을 확인하고 접근 권한을 관리합니다. 일종의 인증 시스템이라고 생각할 수 있습니다.
  • Ledger: Ledger은 말그대로 장부입니다. Asset들을 통한 거래가 성사되었을 때, 즉 Asset들이 움직이거나, 어디에 있다. 이런 state 값들을 기록해 둔 것을 Ledger이라고 합니다.
  • Chaincode(⭐️x5): Public blockchin인 이더리움에는 smart contract라는 것이 있습니다. blockchain 네트워크 외부의 클라이언트 응용프로그램에 의해 호출되는 코드이며 이는 계약을 코드로 구현하고 특정 조건이 충족되었을 때 이행되게끔 하는 일종의 script입니다. 이러한 smart contract는 계약을 맺는 두 당사자가 서로를 모르거나 신뢰하지 않더라도 계약을 체결할 수 있게한다는 장점을 가지고 있습니다. 이러한 smart contract와 같은 것이 fabric에도 존재하고 fabric에서는 이를 chaincode라고 정의합니다. Chaincode는 피어 노드에 설치되고 여러 채널로 인스턴스화 합니다.
  • Channel: Hyperledger fabric에서 핵심기능을 뽑는다면 channel을 말할 수 있습니다. 전체의 시스템을 다수의 channel로 구분함으로써 channel 별로 별도의 독립적인 blockchain을 유지할 수 있도록 멀티 blockchain을 지원합니다. 참여자는 특정 채널에 가입함으로써 공유할 blockchain을 선택할 수 있고, 다수의 채널에 가입 가능합니다.
  • Organization(member): 노드들을 특정 목적에 따라 구분한 논리 집합인 것에서 채널과 유사합니다. Membership Service Provider을 통해 조직을 네트워크에 가입시키며 이는 blockchain 네트워크 서비스를 제공하는 기업 등에서 수행합니다. 조직의 크기는 제 각각이며 이러한 조직들이 모여서 컨소시엄을 구성합니다. (단, 모든 조직이 컨소시엄에 포함되는 것은 아닙니다.)
  • Consortium: organization의 집합으로 네트워크당 여러 개 존재 가능하지만 보통 한 개가 존재합니다. 컨소시엄의 조직들은 각각 peer를 가지고 채널을 형성하거나 채널에 참여합니다. 컨소시엄을 구성하면 그 조직들은 트랜잭션 내역을 공유할 수 있게 됩니다. 채널을 새로 만들 때에는 채널에 추가 된 모든 조직은 컨소시엄의 일부이어야 합니다.

Fabric에서의 Transaction 처리 구조

기존 blockchain 시스템은 transaction을 합의 알고리즘을 통해 ordering시킨 후 peer들에게 전달한 후 blockchain을 유지하는 peer들에 의해 독립적으로 처리 되었습니다. 또한 순서가 매겨진 대로 순차적으로 실행되었다면, hyperledger의 transaction 처리 구조는 execute를 먼저 진행한 후 endorser에게 거래를 의뢰합니다. 이 과정에서 평행적 처리 과정이 일어나고 이는 성능이 높아지는 직접적인 원인이 됩니다. 그 후에 orderer에서 순서를 지정한 후 blockchain을 유지하는 모든 peer들에게 결과 전송 후에 검증을 합니다 그 후에 이상이 없으면 Ledger에 저장하는 과정을 통해 transaction을 진행합니다. 이에 대해서는 뒤에서 더 자세한 설명을 하겠습니다.

Fabric Architecture model

이 그림을 토대로 hyperledger fabric의 기본 동작 방식에 대해서 간략히 설명할 수 있습니다.

참여 집합

  • P1(Peer) : user가 제기한 transaction에 대해 chaincode를 통해 simulating을 수행하는 역할(endorsing)
  • O1(Orderer): peer들의 simulating을 통화한 transaction들에 대해 유저들에게 전달 받고 peer(endorsing)에게 제대로 검증 받았는지에 대한 확인을 한 후 순차적으로 peer(commiting)들에게 넘겨주는 역할
  • A(hyperledger Fabric 유저들)

처리과정

1 유저가 거래(transaction) event 생성.

2 peer(endorsing)들이 그 거래를 받음.(block에 바로 들어가는 게 아님)

3 proposal들을 받은 peer(endorsing)들은 그 것을 simulating을 함. 그리고 그에 대해 어떤 기준에 대해 승인 판단이 서면 허가를 내려 줌.(consensus 방식)

4 허가를 받은 유저는 orderer들에게 보냄.

5 peer들의 허락을 받았는지에 대해 검증을 하고, smart contract 내부 내용에 대해서는 확인하지 않음.

6 orderer은 transaction들을 검증한 후 블록을 생성하여 peer에게 나눠줌.

7 peer은 자신의 world state를 업데이트함.

위 그림에 조금 더 직관적인 프로세스가 나와있습니다.

마무리

최근 카카오 페이에서도 기존 사용하던 비트코인 기반 인증을 탈피하고 Hyperledger fabric 인증을 채택한 것을 보았습니다. 그만큼 private, permissioned 에 기반한 블록체인이 각광받기 시작하는 것이라고 생각해요. Fabric 뿐만 아니라 Aroha, 그리고 신원인증에 유용한 Indy 등 여러 Hyperledger 기반 하위 프로젝트에 대해 어느정도 지식을 쌓아놓아야 유행이 될 새로운 서비스에 대해 잘 준비할 수 있다고 저는 생각합니다. 🤗

포스팅 글 읽어주셔서 감사합니다.

profile
김용성입니다.

0개의 댓글