블록체인

[블록체인] 하이퍼레저 패브릭 - 블록체인

박은성/ 2022. 3. 22. 20:22
반응형

 

블록체인 기술에 대한 짧은 요약을 하자면, 

블록체인 기술은 P2P 네트워크에서 발생하는 모든 거래 정보를 담고 있는 원장과 노드라고 불리는 모든 컴퓨터가 분산 저장 및 업데이트하고 무결성을 유지하도록 하는 기술이다.

 

블록체인 구조와 동작

- 하나의 블록에는 이전 블록의 거래정보(해시값)와 현재의 거래정보(해시값)가 포함돼 있다.

- 이처럼 블록들이 서로 연결돼 있고, 해시 함수의 특성을 활용하고 있으므로 무결성을 보장한다. 또한 거래 정보가 투명하게 공개돼 있다.

- 만약 누군가 해시값을 조작하려 할지라도 블록체인의 합의 과정에 의해 조작된 블록은 자연스럽게 제거된다.

 

 

분산형 원장 구조

네트워크의 참가자들이 모두 원장을 소유한다. 

 


 

네트워크 구성 요소

- 노드 : 트랜잭션 내역 보관, 트랜잭션 승인, 합의

- 클라이언트 : 트랜잭션 생성, 거래 내역 확인

- 작업 증명 :

 1) 블록이 생성되는 과정에서 가장 많은 작업을 한 노드가 어떤 기록이 진짜인지 결정할 수 있는 권한을 가짐

 2) 새로운 블록 추가 시, 블록의 해시값을 계산해야 하는데, 이때 블록 헤더 정보 중 하나인 논스(Nonce) 값을 구해야 한다. 이 논스 값을 구하는 것이 작업 증명이다.

 

블록의 구성

블록은 블록해시, 블록헤더와 거래정보 두 가지로 구성돼 있다.

 

- 블록해시 : 블록의 식별자 역할을 한다. 블록 헤더를 해싱한 값이다.

- 블록헤더 : 이전 블록 해시

- 거래 정보 : 1) 보낸 사람 2) 받는 사람 그리고 금액

 

 


하이퍼레저 패브릭 아키텍처

아키텍처는 크게 4 가지 컴포넌트로 분류돼 있다.

- 신원 확인
- 분산 원장
- 트랜잭션
- 체인 코드

신원 확인

사용자는 네트워크에 접속하려면 신원확인부터 해야 한다.

신원 확인은 MSP에 의해 이루어진다.

 

원장

원장은 블록에 거래 정보가 저장되는 공간이다.

하이퍼레저 패브릭은 월드 스테이트 라는 저장소에 원장을 저장한다.

한 채널이 한 원장을 가지고, 한 채널 안의 노드들은 동일한 원장의 복사본을 가진다. 

이 때 체인코드는 원장에 새로운 내용을 업데이트 하거나 기존의 내용을 읽어 오기 위해 필요한 코드를 말한다. 

각 execution - ordering - validation 의 과정을 거쳐 원장에 기록되고 사용자에게 결과를 반환한다.

 

트랜잭션

코드의 실행을 의미한다.

- 엔도싱(Endorsing) 피어 노드

  - 보증 검증

  - 트랜잭션 배치 처리

- 오더링 서비스 노드 : 블록체인 내 모든 피어 노드들에 분기함

 

체인코드

체인코드란 하이퍼레저 패브릭의 스마트 컨트랙트이다.

스마트 컨트랙트란, 일정한 조건을 만족하는 경우 거래가 자동으로 발생할 수 있도록 프로그래밍된 자동화 계약 시스템

 


네트워크 구성요소

 

- 채널 : 네트워크에서 트랜잭션의 그룹 권한을 그룹별로 설정하고 관리하는 기술 요소

- 조직 : 네트워크 조직 별 피어노드 권한 관리 및 접근 권한 관리

- 피어 노드 : 트랜잭션을 처리하고 원장과 체인코드를 관리하고 저장한다.

 1) 엔도싱 피어 노드 : 보증 정책에 따라 요청된 트랜잭션을 먼저 수행해 검토하고 보증 사인을 첨부(execution)

 2) 커미팅 피어 노드 : 엔도싱이 실행한 트랜잭션 결과에 검증 문제가 없다면 트랜잭션을 확정하고 내용을 블록체인에 업데이트 함.(validation)

 3) 앵커 피어 노드 : 채널 내에서 대표 역할을 수행하며 다른 조직과의 통신을 위한 역할

 4) 리더 피어 노드 : 조직에서 대표 역할을 수행. 오더러(orderer)와 연결돼 최신 블록을 전달 받아 조직 내 다른 피어 노드들에게 전송하는 역할 수행.

 

오더링 서비스 노드

노드란 블록체인 네트워크를 구성하는 서버를 뜻한다.

오더링 서비스 노드(오더러)는 네트워크 내의 채널에 대한 정보를 소유하고, 이를 기반으로 관리자 역할을 맡는다.

오더링 서비스 노드는 트랜잭션을 피어 노드에 전달하고 모든 피어 노드의 분기 및 정렬 역할을 한다. 엔도싱 피어 노드들이 시뮬레이션을 통해 적절하다고 판단한 트랜잭션들을 모아서 정렬한 후 실제 블록을 생성하는 노드이다. 트랜잭션을 정렬하는 방식에 따라 2가지로 구분된다.(오더링 서비스 알고리즘)

 

오더링 서비스 알고리즘

1. Solo 오더링 서비스

- 가장 기본적, 하나의 중앙 오더링 서비스가 모든 트랜잭션의 순서를 결정

- 싱글 프로세스로 구성돼 테스트 용도로 적합하다

2.카프카 기반 오더링 서비스

- 피어 노드가 멈췄을 때, 다른 분산 오더링 서비스 제공 가능

3. RAFT 오더링 서비스

- 새로 추가된 CFT 알고리즘 기반 오더링 서비스이다.

-리더 및 팔로워 모델 기반 : 채널의 리더 노드가 모든 트랜잭션을 처리하고 결과가 나머지 노드에게 복제된다.

 

멤버십 서비스 제공

- MSP : 블록체인 네트워크에 인증 서비스를 제공

  - 네트워크에 참여하는 피어 노드, 오더링 서비스 노드 등 각 노드의 신원 및 권한을 관리하고 조직 구조를 설계함.

  - 네트워크에 접속하는 클라이언트의 신원을 확인하고 접근 권한을 제공한다.

- CA : MSP에서 암호화 인증을 위해 필요한 인증기관

  - 공개 키 인증서 및 개인키 발급

 


하이퍼레저 패브릭 시스템 플로우

 

패브릭에서는 체인코드를 요청하는 트랜잭션부터 원장에 기록되는 과정을 통틀어 합의 라고 한다.

 

MSP로부터 접근 승인을 받은 클라이언트 애플리케이션은 하이퍼레저 패브릭 네트워크에 트랜잭션을 발생시킬 수 있다.

 

1. Transaction Proposal

애플리케이션은 먼저 트랜잭션 제안을 엔도싱 피어 노드에게 보낸다.

이 제안에는 클라이언트의 ID, 클라이언트의 서명 등이 포함됨

 

2. Execute Chaincode

제안을 받은 엔도싱 피어 노드는 보증 정책에 따라 트랜잭션 제안서가 잘 구성돼있는지 확인하고 서명이 유효한지 체크한 뒤 체인코드를 실행한다.

 

3. Proposal Response

이후 RW(Read & Write data sets) 세트를 포함하는 트랜잭션 결과를 생성해 반환한다.

- Read set : 트랜잭션이 읽는 고유 키, 커밋된 버전의 목록

- Write set : 고유 키 목록, 트랜잭션에 작성하는 새 value 목록

 

4. Submit Transaction

결과 값들이 동일함을 확인해 해당 트랜잭션의 신뢰성을 확보하면, 애플리케이션은 트랜잭션 + RW Set + 엔도싱 피어 노드들의 서명, 채널 ID를 오더링 서비스 노드에 전송한다.

 

5. Order Transaction

오더링 서비스 노드는 트랜잭션이 들어오는 순서만 정리한다. 이미 검증이 완료됐기 때문임.

트랜잭션 블록을 엔도싱 피어 노드와 커미팅 피어 노드에게 전달한다.

 

6. Validation Transaction

각 피어 노드는 보증 정책이 충족됐는지 확인한 후에 원장 상태가 변경됐는지 확인한다.

- RW 세트가 현재 원드 스테이트 상태와 일치한지 확인(트랜잭션 유효성 검사)

만일 검사가 실패한다면 피어 노드는 RW 세트가 월드 스테이트 상태와 일치하지 않는다는 것을 알림으로써 트랜잭션을 무효 처리하고, 월드 스테이트는 업데이트 되지 않는다.

 

7. Ledger Commit

유효성이 검증된 트랜잭션은 모든 피어 노드의 데이터베이스에 기록된다. 이후 트랜잭션 성공 여부를 애플리케이션에게 알린다.

 


하이퍼레저 패브릭 시스템 체인코드

트랜잭션은 체인코드의 실행이며, 체인코드는 개발자가 특정 기능을 구현해 채널 안의 피어 노드에 설치된다.

여기서 개발자가 건드리는 체인코드는 사용자 체인코드이며 사용자 체인 코드가 작동하도록 하는 체인코드인 시스템 체인 코드는 패브릭에서 관리한다. 

 

 

-끝-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형