- Ordering service 구동 (Default)
- Network Configuration 설정
- CA 설정
- 그룹 또는 조직(Group or organization)
- 오더링 서비스 노드들 (Ordering service nodes)
- CA(Certificate Authority)
- 컨소시엄(Consortium)
- 채널(Channel)
- 채널 설정(Channel configuration)
- 장부(Ledger)
- 피어(Peer)
- 클라이언트 어플리케이션(Client application)
이 글을 보면서 참고하고 요약 해봤습니다
하이퍼레저 패브릭 네트워크 구조 [Hyperledger Fabric Network Structure]
Writer : Jung Sungdong
medium.com
하이퍼레저 패브릭(Hyperledger Fabric)
은 리눅스 재단이 주도하는
블록체인 기술 개발을 위한 오픈소스 프로젝트 입니다
이걸 사용하는 큰 이유는
비트코인 , 이더리움 같은 퍼블릭 블록체인(Public blockchain) 과 비교했을때
합의 알고리즘 선택적 사용 ,
네트워크 참여 권한 통제 ,
채널 및 멀팅 장부(ledger) 사용 등 ,
추가적인 여러 기능들을 가지고 있죠
그래서 상당히 복잡합니다....
하이퍼레저 패브릭은 이러한 특징을 가지고 있습니다
1. 허가형 블록체인으로서 허가 받은 참여자만 네트워크에 참여할 수 있다.
2. 스마트 컨트랙트에 일반 프로그래밍 언어 사용이 가능하다
3. 스마트 컨트랙트를 일부 노드만 실행하므로 다수의 거래를 병렬적으로 빠르게 처리할 수 있다.
4. 채널을 이용해 허가 받은 사람들에게만 장부(ledger)를 공개할 수 있다.
5. 교체 가능한 합의 프로토콜을 사용할 수 있다.
6. 허가형 블록체인이기 때문에 네트워크 참여자의 신원을 확인 할 수 있고 문제 발생시 책임소재를 분명히 할 수 있다.
하이퍼레저 패브릭 네트워크 만들기
네트워크를 만들기 위해서 가장 먼저 해야할 일은
오더링 서비스(Ordering service)를 구동하는 것입니다.
오더링 서비스는 블록 안의 트랜잭션 순서를 정하고 연결된 노드들에게 전달하는 기능을 합니다
그리고 트랜잭션 순서는 FCFS (first-come first-serve) 방식에 결정됩니다.
프라이빗 블록체인 특성상
어떤 네트워크 참여자가 어떤 권한을 가지는지 관리 하는 것이 매우 중요합니다
그 권한은 관리자에 의해 정해지고
Network Configuration에 저장됩니다.
그리고 이를 위한 참여자의 ID와 권한을 관리할 주체가 필요하기에
참여자들의 CA가 필요합니다.
쉽게 말하면 CA는 디지털 증명서를 발급하는 기관
패브릭 네트워크에 참여하는 그룹들을 모두 개별 CA를 이용하는 것이죠.
설정이 끝났다면 그 다음으로 할 일은
컨소시엄(Consortium) 구성하기
입니다
컨소시엄은 " 함께 협력하기로 동의한 사람 또는 집단 " 이란 의미로
이 컨소시엄을 구성하면 조직들은 트랜잭션 내역을 공유할 수 있습니다.
💡 하나의 네트워크에는 여러 컨소시엄이 존재할 수 있습니다.
컨소시엄이 이용하는 채널 만들기
채널(Channel)은
컨소시엄 내 그룹간 커뮤니케이션 매커니즘 입니다
채널에서는 데이터 분리와 기밀화가 가능하며
채널용 장부(channel-specific ledger)는
채널 사용 허가를 받은 컨소시엄 멤버들만이 접근 가능합니다
채널 특징
1. 네트워크 설정(Network Configuration)과 별개로 채널 설정(Channel configuration)이 존재한다
2. 채널 설정 정보에는 채널에 접근할 수 있는 피어(peer)의 권한 정보등 채널 운영에 필요한 모든 정보를 담고있다.
정보는 블록에 담겨 장부(ledger)에 기록된다.
3. 네트워크 안에 존재하지만 네트워크 설정과 채널 설정 사이 중복되는 설정이 없으므로, 네트워크 설정이 변경되어도 채널 설정에 직접적인 영향은 없다.
4. 한 네트워크 안에는 여러 컨소시엄들이 사용하는 채널들이 존재할 수 있다.
장부(Ledger)
변경 불가능한 상태 데이터 베이스
이 장부를 물리적으로 호스팅 하는 노드들을 피어(Peer)라고 불립니다.
장부의 업데이트는 여러 피어들의 합의(Consensus)를 통해 이루어지므로 일관성이 유지됩니다.
Smart Contract (Chaincode)
스마트 컨트렉트는 ledger에 저장된 상태(state)를 업데이트하는 코드입니다
하이퍼레저 패브릭에선 체인코드(Chaincode)라고도 불립니다.
체인코드를 사용하기위해선
피어 노드에 체인코드가 설치되어야합니다
설치가 되면 해당 피어는 체인코드의 구현 로직을 담게됩니다.
하지만 체인코드를 설치했다고 바로 사용할 수 있는것은 아닙니다
설치된 피어에 다른 피어들에게 알리는 인스턴트화(Instantiated)를 해줘야
클라이언트 어플리케이션(Client application)에 의해서 체인코드를 사용할 수 있습니다.
클라이언트 어플리케이션이란?
네트워크 외부에서 체인코드를 호출하고 결과값을 전송 받을 수 있는 프로그램
이 네트워크를 구성하는 요소를 정리해보면