#7. 패브릭 채널

ㅁ패브릭이 프라이빗 블록체인으로서 가장  특징 : 채널. 특정 노드들 간의 소통.

 

ㅁ채널.

 ㅇ네트워크 멤버들  서브넷(하위 네트워크).

  -특정멤버들(피어, 유져, org) 끼리만 블록체인(렛져) 스마트컨트랙트(체인코드) 공유 가능.

  A, B 만의 채널 형성 가능.

  -다른 채널 데이터에 접근 불가.

  A피어가 ‘사과’, ‘포도채널에   가입돼 있으면,   접근 가능.

  ㆍ채널링(채널설정) 때에  과들을 관리하는 부장(피어) 멀티채널 가입하도록 가능.

 

 MSP, identity 의해 식별가능.

 

 ㅇ채널  블록체인 따로 존재.

  -채널 1개에 레져 1개임. 그래서 레져가 2개라면 채널도 2개임.(스마트컨트랙트는 설치를 해야 소유)

  -채널 제작 , genesis block 채널정보가 있는 트랜잭션으로 시작함. (채널의 생성과 시작은 genesis block)

  ㆍ각 피어들이 블락정보를 가지고 채널에 join하는 방식.

 

  -채널에 피어들이 블록 공유시.

  ㆍ리더피어 : 오더러와 연결해서 블록을 가져오는 기능( 피어들보다 최우선, 가장 먼저 수령)

    · 채널마다 리더 피어가 있으며 이들이 채널  피어들에게 블록배분,   각자 validating 하는 구조.

  ㆍ앵커링피어 : 네트워크 관련 정보를 공유.

    · 서로 다른 채널에 있는 앵커링 피어들은 비즈니스 로직과는 무관하게 네트워크에 있는 피어를 찾아줌.

 ㅇ동일채널의 체인코드들은 체인코드의 정보(이름, 번호) 알고 있을 경우, 상호작용 가능. /쓰기 호출가능.

 

 L1-S1 L2-S1 서로 읽을 수는 있지만 쓰기 못하고, 값을 변화 시킬  없음.

  - 피어는 모든 체인코드를 들고 있기에 읽을수 있지만, P2 L2 S1이나 S2 읽기 불가.

  - L2-S1 L1 내용을 불러 와서 작성불가.

 

ㅁ오더링 서비스와 피어를 통한 블록의 이동

 ㅇ색으로 채널의 구분하며 피어들이 가진 블록들이 쌓이는 과정.

 ㅇ피어가 레져를 들고 있고, 레져는 채널 별로 관리됨.

 ㅇ다른 채널의 체인코드는 호출불가. 가입되어 있으면 읽기만 가능.

<Hyperledger Fabric : Block Structure>

#5. 패브릭 아이덴티티(1)

ㅁ아이덴티티(Identity)

 

PKI 인증서 기반의 시스템

-패브릭 구성요소인 오더러 피어 유져는 각각의 공개키, 개인키, 인증서가 있기 때문에

-유져는 개인키로 서명.

-피어를 엔도스 해서 트랜잭션을 검증한 후 개인키로 서명.

-오더러 또한 피어에게 배포할 블록을 생성한 후 개인키로 서명.

 

PKI

-공개키 암호화

ㆍ개인키+공개키. 둘 중 하나의 키로 암호화한 데이터는 나머지 키로 복호화 가능.

ㆍ개인키는 만든 이 소유. 절대 비밀 개인키는 데이터 서명에 사용.

ㆍ공개키는 타인에게 알려주는 용도.

 

ㅇ전자서명(Signiture)

-데이터가 위/변조 되지 않았음을 PKI 시스템에서 알려주기 위한 시스템.

(1) 원본의 digest(원본해쉬)를 만듬.

(2) 개인키로 digest를 서명 후 원본에 붙임.

(3) 공개키로 해당 digest를 복호화 함.

(4) 원본을 통해서 만든 digest와 비교하여 검증.

ㆍ피어와 오더러, 블록 안에 각자의 전자서명이 들어있음.

msg digest (메시지 다이제스트 , 원본의 해쉬값) -> 개인키로 암호화 -> 암호화된 digest

 

ㅇ인증서(X.509)

-PKI에서 사용하는 인증서 포맷이 X.509. 공개키를 기본적으로 포함하는 것이 특징.

-인증서에는 발행자, ‘’, 도메인, root ca에 대한 정보(root ca로 부터 받은 게 아닌 경우).

 

-Fabric 인증서

ㆍ인증서 위치 : OrdererOganization 의 하위 폴더에 걸맞는 인증정보들이 들어가 있음.

cryptogen을 사용하여 yaml파일을 소모해서 크립토 관련 메테리얼 만들면 crypto-config 폴더에 들어감.

ㆍ패브릭 샘플스 - 베이직 네트워크 - crypto config - OrdererOganization - example.com - ca - ca.example.com-cert.pem 의 전체내용을 복사하여 https://www.sslshopper.com/certificate-decoder.html 에 올리면 certificate 정보를 볼 수 있음.

keystore- 개인키들. signcerts- 인증서들.

 

 

#6. 패브릭 아이덴티티(2)

MSP(Membership Service Provider)

 

ㅇ패브릭에서의 권한

-ex) 일반적인 웹커뮤니티 까페에서의 유저 레벨에 따른 게시판 권한을 설정해 주는 기능.

-패브릭에서 노드/유저/채널 등등 서로간의 인증, 권한 관리를 해주는 기본적 개념(서비스)

-노드(피어, 오더러, 유져)msp 폴더 내 인증서를 가지고 함.

-채널/네트워크는 크립토젠 등과 같은 여러 가지 방법을 통한 멤버쉽 관리.

-' docker-compoese.yaml ’ 파일 내 노드들의 상태, 어떤 폴더를 가지고 가는 지 있음.

-노드들 서로 간의 인증과 권한 등을 제공해 줌.

 

-실제로 노드들은 msp폴더를 직접 가지고 있어야함.

-피어들이 도커로 띄어질 때 프로세스로 띄어질 때 msp 폴더를 들고 (도커 안으로) 들어가야 함.(도커 안으로)

-) (밸런스 트랜스퍼 예제 중) artifacts - docker-compoese.yaml - “volumes: ~ ” 내용이 가리키는 폴더가

-“ : ” 의 우측 주소(도커) 안으로 들어가는 것임. [ volumes: -(msp위치) : (도커위치) ]

- msp 폴더를 peer가 들고 있게 되는 것임.

 

제이슨포맷 보기 좋게 바꿔주는 사이트 : https://jsonformatter.org/

#4. 패브릭 네트워크 세팅 가이드(이론)

ㅁ블록체인 구성.

오더러: 블록체인 전반적 역할을 오더러에서 수행. 배포용 블록생성.

피어: 블록체인 데이터 접근/저장, 스마트 컨트랙트 소유/실행/검증.

유져(A): 피어와 오더러 소통. 거래생성. 검증요청. 생성요청.

Ledger(블록체인)(L): 피어소유. 블록체인.

ChainCode(S): 피어소유.

오가니제이션(organization)( R )

CC, channel configuration

NC, Network Config

Channel( C )

CA & 패브릭CA (CA)

피어가 있는 인스텐스에 도커의 형태로 체인코드가 올라감.

도커 피어 인스턴스있고 도커 체인 인스턴스가 있음.

스마트 컨트랙트 별로 각각의 다른 도커 인스턴스로 실행됨.

 

< CA4는  O4의 설정을 세팅해줌 >

ㅁ패브릭 구성요소 관련 설명

 

ㅇ권한 관련. 인증서 기반(X.509를 이용해서 서로의 권한을 확인).

-각 구성요소들을 해당하는 CA에서 발급해주고 발급, 재발급, 갱신, 폐기 등으로 관리함(Fabric CA 컴포넌트)

-멤버십 서비스 프로바이더(MSP) 기능 등이 제공 가능 해짐.

 

ㅇ채널 관련.

-동일채널 내 피어들은 서로 스마트컨트랙트, 블록체인 데이터 공유가능(해당 채널 내에 있는)

-피어들은 채널 가입 가능.

-P11채널과 2채널에 동시에 가입되어 있더라도 타 채널 내용을 공유 불가능.

 

ㅁ블록체인 네트워크(순서대로 작업)

 

1) 크립토 관련 ( Fabric-ca, cryptogen )

ㅇ크립토 관련 인증서, 프라이빗 키 등을 생성해 주는 실행파일을 패브릭에서 제공하고 있음.

ㅇ그것을 통해 패브릭 네트워크 구성 기반 마련.

 

2) Orderer, Peer 생성

 

3) Kafka, ZooKeeper 생성

ㅇ기능: 서로의 연결, 선과 실선 (블록을 오더러가 피어에게 전달, 오더링 서비스에서 데이터 공유 등)

 

4) 채널 생성 및 피어 조인, App, CA 배치.

ㅇ오더러 셋업, 피어 조인 기능은 크립토 관련 기반하여 가능(CA, X.509)

+ Recent posts