본문 바로가기

Hyperledger Fabric/Document

[HYPERLEDGER FABRIC v1.1]Hyperledger Fabric FAQ

Endorsement

 보증

지지 아키텍쳐:

Q. 얼마나 많은 네트워크 내부의 피어가 트랜잭션을 동의해야하나요?

A. 동의 해야하는 피어의 수는 Chaincode 실행 시간에 명시된 동의 정책에 의해서 결정됩니다.

Q. 어플리케이션 클라이언트는 모든 피어와 연결되어 있어야만 하나요?

A. 클라이언트는 오직 Chaincode에서 요구한 동의 정책에서 필요한 피어 수만큼만 연결될 필요가 있습니다.

Security & Access Control

 보안 & 접근 통제

데이터 프라이버시와 접근 통제

Q. 데이터 프라이버시를 어떻게 보장하나요?

A. 데이터 프라이버시에는 다양한 측면이 있습니다. 우선, 당신의 네트워크를 Chaincode의 데이터를 볼 수 있고 채널에서 실행할 수 있도록 허가 받은 각각의 참여자의 집합으로 대표되는 채널 단위로 분리합니다.

둘째로, 가시성 세팅을 사용해서 동의자의 집합만을 위한 Chaincode의 인풋 데이터를 제한받게 됩니다. 가시성 설정은 아웃풋 데이터와 비교하여 인풋 및 아웃풋 체인 코드 데이터가 제출 된 트랜잭션에 포함되는지 여부를 결정합니다. 셋째로, Chaincode를 호출하기 이전에 데이터를 해시하거나 암호화 할 수 있습니다. 데이터를 해시하면 원본 데이터를 공유 할 수있는 방법을 제공해야합니다. 데이터를 암호화하는 경우 해독 키를 공유 할 수있는 방법을 제공해야합니다. 넷째, 조직의 특정 역할에 대한 데이터 액세스를 제한 할 수 있습니다. 체인 코드 로직에 액세스 제어를 구축합니다. 다섯째, 나머지 원장 데이터는 피어에서 파일 시스템 암호화를 통해 암호화 할 수 있으며 전송 중 데이터는 TLS를 통해 암호화됩니다.

Q. 주문자가 트랜잭션 데이터를 볼 수 있습니까?

A. 아닙니다. 주문자는 거래 만 주문하며 거래를하지 않습니다. 데이터가 순서 지정자를 거치지 않고 인풋 데이터에 대해서만 염려하는 경우 가시성 설정을 사용할 수 있습니다. 가시성 설정은 아웃풋 데이터와 비교하여 인풋 및 아웃풋 체인 코드 데이터가 제출 된 트랜잭션에 포함되는지 여부를 결정합니다. 따라서 인풋 데이터는 동의자 전용으로 사용할 수 있습니다. 주문자가 chaincode 아웃풋을 보지 못하도록하려면 chaincode를 호출하기 전에 데이터를 해시하거나 암호화 할 수 있습니다. 데이터를 해시하는 경우 원본 데이터를 공유하는 의미를 제공해야합니다. 데이터를 암호화하는 경우 해독 키를 공유 할 수있는 방법을 제공해야합니다.

Application-side Programming Model

트랜잭션 실행 결과 :

Q. 애플리케이션 클라이언트는 트랜잭션의 결과를 어떻게 알 수 있습니까?

A. 거래 시뮬레이션 결과는 제안서 응답에서 보증인이 고객에게 반환합니다. 여러 명의 동의원이 있는 경우 클라이언트는 응답이 모두 같은지 확인하고 주문 및 약정에 대한 결과 및 보증을 제출할 수 있습니다. 궁극적으로 커밋하는 동료는 트랜잭션을 확인하거나 무효화하고 클라이언트는 SDK를 통해 응용 프로그램 클라이언트가 사용할 수있게 하는 이벤트를 통해 결과를 알게됩니다.

원장 쿼리 :

Q. 원장 데이터는 어떻게 조회합니까?

A. chaincode 내에서 키를 기반으로 쿼리 할 수 ​​있습니다. 키는 범위별로 쿼리 할 수 ​​있으며 복합 키는 여러 매개 변수에 대해 등가 쿼리를 사용할 수 있도록 모델링 할 수 있습니다. 예를 들어, (owner, asset_id)의 복합 키를 사용하여 특정 엔티티가 소유 한 모든 자산을 조회 할 수 있습니다. 이러한 키 기반 쿼리는 원장에 대한 읽기 전용 쿼리 및 원장을 업데이트하는 트랜잭션에 사용할 수 있습니다.

자산 데이터를 체인 코드의 JSON으로 모델링하고 CouchDB를 상태 데이터베이스로 사용하는 경우 chaincode 내의 CouchDB JSON 쿼리 언어를 사용하여 체인 코드 데이터 값에 대해 복잡한 리치 쿼리를 수행 할 수도 있습니다. 응용 프로그램 클라이언트는 읽기 전용 조회를 수행 할 수 있지만 일반적으로 이러한 응답은 트랜잭션의 일부로 주문 서비스에 제출되지 않습니다.

Q. 내역 데이터를 쿼리하여 데이터 출처를 이해하려면 어떻게해야합니까?

A. chaincode API의 GetHistoryForKey()는 키의 값 기록을 반환합니다.

Q. 특히 쿼리 된 피어가 복구 중이고 블록 처리를 따라 잡을 때 쿼리 결과가 정확함을 보장하는 방법?

A. 클라이언트는 여러 피어를 쿼리하고, 블록 높이를 비교하고, 쿼리 결과를 비교하고, 높은 블록 높이에서 피어를 선호 할 수 있습니다.

Chaincode(Smart Contracts and Digital Assets)

Q. Hyperledger Fabric은 Smart Contract 로직을 지원합니까?

A. 예. 이 기능을 체인 코드라고 합니다. 추가 기능이있는 스마트 계약 방법 / 알고리즘에 대한 우리의 해석입니다.

체인 코드는 네트워크에서 배포 된 프로그래밍 방식의 코드로, 컨센서스 프로세스 중에 체인 유효성 검사기에서 함께 실행되고 유효성이 검사됩니다. 개발자는 체인 코드를 사용하여 비즈니스 계약, 자산 정의 및 집합 적으로 관리되는 분산 된 응용 프로그램을 개발할 수 있습니다.

Q. 비즈니스 컨트랙트는 어떻게 작성합니까?

A. 일반적으로 비즈니스 계약을 개발하는 두 가지 방법이 있습니다. 첫 번째 방법은 개별 계약을 독립 실행 형 체인 코드 인스턴스로 코딩하는 것입니다. 두 번째 방법, 그리고 아마도 더 효율적인 방법은 하나 또는 여러 유형의 비즈니스 계약의 수명주기를 관리하는 분산 응용 프로그램을 생성하고 최종 사용자가 이러한 응용 프로그램 내에서 컨트랙트 인스턴스를 인스턴스화 할 수 있도록 chaincode를 사용하는 것입니다.

Q. 애셋은 어떻게 만듭니 까?

A. 사용자는 비즈니스 규칙 용 체인 코드와 디지털 토큰 용 멤버십 서비스를 사용하여 자산을 관리하고 관리하는 논리를 설계 할 수 있습니다.

대부분의 블록 체인 솔루션에서 자산을 정의하는 데는 두 가지 방법이 일반적입니다. 즉, 계정 잔액이 과거 트랜잭션 레코드로 인코딩되는 상태 비 저장 UTXO 모델입니다. 계정 잔액은 원장의 상태 저장 공간에 보관됩니다.

각 접근 방식에는 각각 장점과 단점이 있습니다. 이 블록 체인 기술은 다른 블록을 옹호하지 않습니다. 대신 첫 번째 요구 사항 중 하나는 두 가지 접근 방식을 모두 쉽게 구현할 수 있도록하는 것이 었습니다.

Q. 체인 코드 작성을 위해 지원되는 언어는 무엇입니까?

A. 체인 코드는 모든 프로그래밍 언어로 작성되고 컨테이너에서 실행될 수 있습니다. 최초로 완벽하게 지원되는 체인 코드 언어는 Golang입니다.

추가 언어에 대한 지원과 템플릿 언어 개발에 대한 논의가 있었으며 자세한 내용은 가까운 장래에 발표 될 예정입니다.

Hyperledger Composer를 사용하여 Hyperledger Fabric 응용 프로그램을 만들 수도 있습니다 .

Q. Hyperledger 패브릭에 기본 통화가 있습니까?

A. 아닙니다. 그러나 체인 네트워크에 고유 통화가 실제로 필요한 경우 체인 코드로 고유 통화를 개발할 수 있습니다. 기본 통화의 공통 속성 중 하나는 트랜잭션이 체인에서 처리 될 때마다 금액이 트랜잭션되고 (해당 통화를 정의하는 체인 코드가 호출 됨)는 것입니다.

Differences in Most Recent Releases

Q. 릴리즈된 버전별 특징 차이점은 어디서 찾을 수 있나요?

A. 이후의 릴리즈 버전별 차이점은 Release Note 섹션에서 찾으실 수 있습니다.

Q. 위에서 대답받지 못한 기술적 질문들은 어디서 질문할 수 있나요?

A. StackOverflow를 확인하시면 됩니다.