Application-side Programming Model

트랜잭션 실행 결과 :

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

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

원장 쿼리 :

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

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

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

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

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

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

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



출처 : http://hyperledger-fabric.readthedocs.io/en/release-1.1/

+ Recent posts