Inicio / fabcar 예제

fabcar 예제

응용 프로그램은 API를 사용하여 스마트 계약을 호출합니다. 이러한 스마트 계약은 네트워크에서 호스팅되며 이름과 버전으로 식별됩니다. 예를 들어, 우리의 체인 코드 컨테이너 제목 -dev-peer0.org1.example.com-fabcar-1.0 -이름 fabcar, 버전은 1.0, 그리고 그것에 대해 실행 되는 피어는 dev-peer0.org1.example.com. 스마트 계약은 피어 관리자에 의해 설치된 다음 기본적으로 채널 관리자로 구성된 체인 코드의 인스턴스화 정책을 충족하는 ID로 채널에 인스턴스화됩니다. 스마트 계약의 인스턴스화는 보증, 주문, 유효성 검사, 커밋 등 일반 호출과 동일한 트랜잭션 흐름을 따르며 체인코드 컨테이너와 상호 작용하는 전제 조건입니다. 간소화된 Fabcar 테스트 네트워크를 시작한 스크립트는 설치 및 인스턴스화를 담당했습니다. 응용 프로그램은 쿼리를 사용하여 원장의 데이터를 읽습니다. 가장 일반적인 쿼리에는 원장의 현재 데이터 값인 월드 상태가 포함됩니다. 세계 상태는 키-값 쌍의 집합으로 표시되며 응용 프로그램은 단일 키 또는 여러 키에 대한 데이터를 쿼리할 수 있습니다. 또한 원장 월드 상태는 키-값이 JSON 데이터로 모델링될 때 복잡한 쿼리를 지원하는 CouchDB와 같은 데이터베이스를 사용하도록 구성할 수 있습니다.

이는 특정 값과 일치하는 모든 자산을 찾는 데 매우 유용할 수 있습니다. 예를 들어 특정 소유자가 있는 모든 자동차. 이러한 작업은 일반적으로 조직 또는 동료 관리자가 수행합니다. 스크립트는 CLI를 사용하여 이러한 명령을 실행하지만 SDK에서도 지원이 있습니다. 하이퍼레저 패브릭 노드 SDK 리포지토리를 참조하여 예를 들어 스크립트를 참조합니다. 공식 문서는 두 부분모두에 대해 매우 자세하게 설명하지만, 이 문서 세트는 이 예제에 대한 몇 가지 설명과 설명을 제공할 계획입니다. 먼저 응용 프로그램 자체를 전체 그림으로 묘사한 다음 이 전체 그림의 각 부분에 하나씩 자세히 설명합니다. 그리고 이것에서 나는 독자들이 일반적인 비즈니스 블록 체인 응용 프로그램이 어떻게 구축 될 지에 대한 전반적인 그림을 가지고 있기를 바랍니다. Fabcar는 “기본 네트워크” 샘플을 제한된 개발 네트워크로 사용합니다.

CouchDB를 상태 데이터베이스로 사용하도록 구성된 단일 피어 노드, 단일 “솔로” 주문 노드, 인증서 기관(CA) 및 명령을 실행하기 위한 CLI 컨테이너로 구성됩니다. 다음 두 섹션에는 인증 기관과의 통신이 포함됩니다. 새 터미널 셸을 열고 docker 로그 -f ca.example.com 실행하여 예정된 프로그램을 실행할 때 CA 로그를 스트리밍하는 것이 유용할 수 있습니다. 기본 네트워크의 네 개의 컨테이너 옆에는 CLI 1개와 개발 peer0.org1.example.com fabcar-1.0이라는 두 개의 컨테이너가 추가되었습니다. 이는 체인 코드가 인스턴스화된 후에 나타납니다. Fabcar는 응용 프로그램을 실행하는 데 필요한 구성 요소만 제거된 네트워크를 활용하도록 설계되었습니다. 또한 이러한 수준의 단순화에도 불구하고 ./startFabric.sh 스크립트는 네트워크 자체에 베이크되지 않은 설치 및 구성을 처리합니다. 이 예제에서 피어는 모든 트랜잭션의 해시 체인을 보유하고 상태 데이터베이스를 사용하여 체인 코드 상태를 유지 관리하며, 이 경우 CouchDB 컨테이너입니다. CouchDB는 JSON으로 모델링되는 체인 코드 데이터(키/val 쌍)에 따라 풍부한 쿼리의 추가 기능을 제공합니다. 스마트 계약에서 GetState API를 호출하면 CouchDB 상태 데이터베이스에서 자동차와 관련된 JSON 값을 검색합니다.

IBM 블록 체인 플랫폼에서 하이퍼 레저 패브릭 샘플 Fabcar 그러나 커버 에서 일어나는 재미있는 것들에 대해 알고 싶은 사람들을 위해, 응용 프로그램이 네트워크에 연결하는 방법과 더 세분화 된 수준에서 쿼리 및 업데이트를 제안하는 방법을 살펴보겠습니다. 뿐만 아니라 Fabcar와 같은 소규모 테스트 네트워크와 앱이 일반적으로 실제 환경에서 작동하는 방법의 차이점을 지적합니다.