하이퍼레저 패브릭/이론

3. Hyperledger Fabric Model

아메숑 2019. 3. 31. 10:05

3. Hyperledger Fabric Model

이 장에서는 포괄적이지만 customizing 가능한 enterprise blockchain solution 임무를 다하는Hyperledger Fabric에 포함된 주요 디자인 기능에 대해 간략히 설명한다.

l  자산(Assets) – 자산의 정의는 식품부터 골동품 자동차에 이르기까지 거의 모든 금전적 가치를 네트워크를 통해 교환할 수 있도록 한다.

l  체인 코드 - 체인 코드의 실행은 트랜잭션 순서 지정과 노드 유형에 따라 필요한 신뢰 수준 및 검증 수준을 제한하고 네트워크 확장성과 성능을 최적화한다.

l  원장 특징 - 변경이 불가능한 공유 원장은 각 채널의 전체 거래 내역을 인코딩하며 효율적인 감사 및 분쟁 해결을 위해 SQL과 같은 쿼리 기능을 포함한다.

l  프라이버시 - 채널 및 개인 데이터 수집은 경쟁관계의 기업들 또는 같은 네트워크 상에서 자산을 거래하는 산업을 규제하기 위해 필요한 private and confidential multi-lateral transactions 가능하게 한다.

l  보안 및 회원 서비스 - Permissioned membership 규제 기관 및 감사인이 모든 거래를 탐지하고 추적할 수 있고 그러므로 신뢰할 수 있는 블록 체인 네트워크를 제공한다.

l  합의(Consensus) - 합의에 대한 독창적인 접근은 기업에 필요한 유연성과 확장성을 제공한다.

자산(Assets)

 

자산은 유형(부동산 및 하드웨어)에서 무형(계약 및 지적 재산)까지 다양하다. Hyperledger Fabric은 체인 코드 트랜잭션을 사용하여 자산을 변경하는 기능을 제공한다.

자산은 Hyperledger Fabric에서 채널의 원장에 트랜잭션으로 기록된 상태 변화와 key - value 쌍으로 표시된다. 자산은 binary 또는 JSON 형식으로 나타낼 수 있다.

Hyperledger Composer 도구를 사용하여 Hyperledger Fabric 응용 프로그램에서 자산을 쉽게 정의하고 사용할 수 있다.

체인코드

 

체인 코드는 자산을 정의하고 변경하기 위해 트랙잭션을 지시하는 소프트웨어이다. 다시 말해 비즈니스 논리이다. 체인 코드는 key - value 쌍 또는 다른 상태 데이터베이스의 정보를 읽거나 변경하기위해 정해진 규칙을 따른다. 체인 코드 기능은 원장의 현재 상태 데이터베이스에 대해 실행되며 거래 제안을 통해 시작된다. 체인 코드를 실행하면 key-value 쌍을 생성하고, 네트워크로 전송되어 모든 peer의 원장에도 적용된다.

원장 특징

 

원장(ledger) fabric의 모든 상태 변경에 대한 일련의 위조를 방지하기 위한 기록이다. 참가자가 제출한 체인코드를 호출(트랜잭션)하면 상태가 변경된다. 각 트랜잭션은 원장에 생성 또는 업데이트 또는 삭제되는 key-value쌍을 생성한다.

원장은 변경할 수 없는 일련의 기록들을 블록의 형태로 저장하는 블록체인과 현재 fabric의 상태를 관리하는 상태 데이터베이스로 구성된다. 각 피어는 소속되어 있는 채널의 원장의 사본을 보관한다.

Fabric 원장의 일부 기능 :

l  키 기반 조회, 범위 쿼리 및 복합 키 쿼리를 사용하여 원장 쿼리 및 업데이트

l  풍부한 쿼리 언어를 사용하는 읽기 전용 쿼리 (CouchDB를 상태 데이터베이스로 사용하는 경우)

l  읽기 전용 기록 쿼리 - 키에 대한 원장 기록을 쿼리하여 데이터 출처 시나리오 사용 가능

l  트랜잭션은 chaincode (읽기 세트)로 읽은 키 / 값 및 chaincode (쓰기 세트)로 작성된 키 / 값의 버전으로 구성됩니다.

l  거래는 모든 보증하는 피어의 서명을 포함하며 ordering service에 제출된다.

l  트랜잭션은 블록으로 정렬되고 ordering service에서 채널의 피어에게 "전달"된다.

l  피어는 보증 정책에 대한 트랜잭션을 확인하고 정책을 집행한다.

l  블록을 추가하기 전에 체인 코드 실행 시간 이후에 조회된 자산의 상태가 변경되지 않았는지 확인하기 위해 버전 검사가 수행된다

l  거래가 확인된 후 commit되면 변경할 수 없다.

l  채널의 원장에는 정책, 액세스 제어 목록 및 기타 관련 정보를 정의하는 구성 블록이 있다

l  채널에는 다른 인증 기관에서 가져온 암호 자료를 허용하는 Membership Service Provider(MSP) 인스턴스가 포함된다.

프라이버시

 

Hyperledger Fabric은 채널마다 변경할 수 없는 원장이 존재하고 자산의 현재 상태를 조작(, key-value update)하기 위해 체인코드를 사용한다. 원장은 채널 범위에 존재하며 모든 구성원이 하나의 공통 채널에 소속되어 있다면 원장은 전체 네트워크에서 공유될 수 있다. 또는 채널의 특정 하위 집합만 포함하도록 사유화될 수도 있다.

후자의 시나리오에서, 이 참여자는 별도의 채널을 생성하여 트랜잭션 및 원장을 분리한다. 투명성과 프라이버시를 동시에 지키기 위해 체인 코드는 자산 상태에 액세스하여 읽기 및 쓰기를 수행해야하는 피어에만 설치할 수 있다 (, 체인 코드가 피어에 설치되지 않은 경우, 원장과 올바르게 통신할 수 없다).

해당 채널에 있는 조직의 하위 집합이 거래 데이터를 기밀로 유지해야하는 경우 private data collection을 사용하여 채널의 권한이 부여된 하위그룹에서만 액세스할 수 있고 채널 원장으로부터 분리된 비공개 데이터베이스에 이 데이터를 저장한다.

따라서 채널은 트랜잭션을 넓은 네트워크에서 비공개로 유지하는 반면 컬렉션은 채널의 조직 하위 집합간에 데이터를 비공개로 유지한다.

데이터를 더 난독 처리하기 위해 ordering service에 트랜잭션을 보내고 원장에 블록을 추가하기 전에 체인 코드 내의 값을 AES와 같은 대칭키 암호화 알고리즘을 사용하여 (부분적으로 또는 전체적으로) 암호화할 수 있다. 암호화된 데이터가 원장에 기록되면 암호문을 생성하는데 사용된 해당 키를 소유한 사용자만 암호를 해독할 수 있다.

보안 및 멤버십 서비스

 

Hyperledger Fabric은 모든 참가자가 신원을 알고 있는 트랜잭션 네트워크를 지원한다. 공개키 인프라는 조직, 네트워크 구성 요소 및 최종 사용자 또는 클라이언트 어플리케이션과 관련된 암호화 인증서를 생성하는데 사용된다. 결과적으로 데이터에 대한 접근은 광범위한 네트워크 및 채널 레벨에서 조작되고 관리될 수 있다. 하이퍼레저 패브릭의 permissioned 개념은 채널의 존재와 기능과 함께 프라이버시 및 기밀성이 중요시되는 문제를 해결하는데 도움을 준다.

합의

 

합의는 단순히 트랜잭션 순서에 동의하는 것 이상으로 포함하며 제안 및 보증, 정렬, 검증에 이르기까지 전체 트랜잭션 과정에서의 기본적인 역할을 하므로 Hyperledger Fabric에서 강조된다. 요컨대, 합의는 블록을 구성하는 일련의 트랜잭션의 정확성에 대한 완전한 검증이라고 정의된다.

합의는 블록 트랜잭션의 순서와 결과가 명시된 정책 기준을 충족할 때 이루어진다. 이러한 견제와 균형은 트랜잭션의 라이프사이클동안 발생하며, 어떤 특정 구성원이 특정 트랜잭션 클래스를 승인해야 하는지 명시하는 승인 정책의 사용법을 포함하고 또한 이러한 정책이 시행되고 유지되도록 보증하는 시스템 체인코드를 명시하는 보증 정책의 사용법을 포함한다. commit하기 전에 피어 노드는 이러한 시스템 체인코드를 사용하여 충분히 보증되었는지 그리고 해당 조직의 소속인지를 확인한다. 또한 블록이 원장에 추가되기 전에 원장의 현재 상태가 승인되는 동안 버전 검사 작업이 수행될 것이다. 이 최종 확인은 이중 작업 및 데이터 무결성을 손상시킬 수 있는 다른 위협들을 막는다.

수많은 승인, 유효성 검사 및 버전 검사가 수행되는 것 외에도 트랜잭션의 모든 과정에서 신원 확인이 진행된다. 액세스 제어 목록은 네트워크 계층에서 구현되며 트랜잭션 제안서가 다른 아키텍처 구성 요소를 통과할 때 페이로드는 반복적으로 서명, 확인 및 인증된다. 결론적으로, 합의는 일련의 트랜잭션의 순서에 동의하는 것에만 국한되지 않고, 제안부터 commit에 이르기까지의 모든 트랜잭션 과정에서 진행되는 검증작업으로 합의가 성사된다.

 

출처 - https://hyperledger-fabric.readthedocs.io/en/latest/whatsnew.html

 

What’s new in v1.4 — hyperledger-fabricdocs master documentation

Docs » What’s new in v1.4 Edit on GitHub What’s new in v1.4 Hyperledger Fabric’s First long term support release Hyperledger Fabric has matured since the initial v1.0 release, and so has the community of Fabric operators. The Fabric developers have been wo

hyperledger-fabric.readthedocs.io