티스토리 뷰
[Hyperledger Fabric v1.0] 5. ARCHITECTURE(아키텍트): Hyperledger Fabric SDKs(하이퍼레저패브릭 SDK)
miiingo 2018. 1. 19. 16:47해당 글은 Hyperledger Fabric 페이지의 게시글을 번역 및 정리한 자료입니다.
원본 사이트 : http://hyperledger-fabric.readthedocs.io/en/release/fabric-sdks.html
Hyperledger Fabric SDK for Node.js : https://fabric-sdk-node.github.io/
Hyperledger Fabric SDKs(하이퍼레저패브릭 SDK)
Hyperledger Fabric은 다양한 프로그래밍 언어에 대해 다양한 SDK를 제공 할 예정입니다. 처음 두 가지는 Node.js와 Java SDK입니다. 1.0.0 릴리스 이후 곧 Python 및 Go SDK를 제공하기를 바랍니다.
Hyperledger Fabric SDK for Node.js(Node.js 용 하이퍼레저패브릭 SDK)
Node.js 용 Hyperledger Fabric SDK는 Hyperledger Fabric v1.0 블록 체인과 상호 작용할 수있는 강력한 API를 제공합니다. SDK는 Node.js JavaScript 런타임에서 사용하도록 설계되었습니다.
Overview(개요)
Hyperledger Fabric은 엔터프라이즈 수준의 권한이 부여 된 블록 체인 네트워크의 운영 체제입니다. 패브릭에 대한 개요를 보려면 http://hyperledger-fabric.readthedocs.io/en/latest/를 방문하십시오.
응용 프로그램을 개발하여 사용자를 대신하여 블록 체인 네트워크와 상호 작용할 수 있습니다. API는 다음과 같은 용도로 사용할 수 있습니다.
- create channels(채널 만들기)
- ask peer nodes to join the channel(피어 노드에게 채널에 참여하도록 요청)
- install chaincodes in peers(피어에 체인 코드 설치)
- instantiate chaincodes in a channel(채널에서 체인 코드를 인스턴스화)
- invoke transactions by calling the chaincode(체인 코드를 호출하여 트랜잭션을 호출)
- query the ledger for transactions or blocks(트랜잭션 또는 블록에 대해 장부에 쿼리)
How Different Components of the Fabric Work Together(패브릭의 서로 다른 구성 요소가 함께 작동하는 방식)
거래 흐름 문서는 거래를 처리하고 블록을 생성하기 위해 협력하는 응용 프로그램 / SDK, 동료 및 주문자에 대한 훌륭한 설명을 제공합니다.
패브릭의 보안은 디지털 서명으로 시행됩니다. 패브릭에 대한 모든 요청에는 적절한 등록 인증서가있는 사용자가 서명해야합니다. 사용자 등록 인증서가 패브릭에서 유효한 것으로 간주되도록하려면 신뢰할 수있는 인증 기관 (CA)이 서명해야합니다. Fabric은 모든 표준 CA를 지원합니다. 또한 Fabric은 CA 서버를 제공합니다. 이 개요를 참조하십시오.
Features of the SDK for Node.js(Node.js 용 SDK의 기능)
Node.js 용 Hyperledger Fabric SDK는 객체 지향 프로그래밍 스타일로 설계되었습니다. 모듈 식 구성으로 인해 응용 프로그램 개발자는 암호 스위트, 상태 보존 저장소 및 로깅 유틸리티와 같은 주요 기능의 대체 구현을 연결할 수 있습니다.
SDK의 기능 목록은 다음과 같습니다.
- fabric-client(패브릭 클라이언트)
- create a new channel(새 채널 만들기)
- send channel information to a peer to join(참여할 피어에게 채널 정보 전송)
- install chaincode on a peer(피어에 체인 코드 설치)
- instantiate chaincode in a channel, which involves two steps: propose and transact(채널에 체인 코드를 인스턴스화, 두단계: 제안 및 처리)
- submitting a transaction, which also involves two steps: propose and transact(거래 제출, 두 단계 포함 : 제안 및 거래)
- query a chaincode for the latest application state(최신 응용 프로그램 상태에 대한 체인 코드 쿼리)
- various query capabilities:(다양한 쿼리 기능)
- channel height(채널 높이)
- block-by-number, block-by-hash(블록 별 번호, 블록 별 해시)
- all channels that a peer is part of(피어가 속한 모든 채널)
- all installed chaincodes in a peer(피어에 설치된 모든 체인 코드)
- all instantiated chaincodes in a channel(한 채널의 모든 인스턴스화 된 체인 코드)
- transaction-by-id(id 별 거래)
- channel configuration data(채널 구성 데이터)
- monitoring events:(이벤트 모니터링 :)
- connect to a peer's event stream(피어의 이벤트 스트림에 연결)
- listen on block events(블록 이벤트에서 수신)
- listen on transactions events and find out if the transaction was successfully committed to the ledger or marked invalid (거래 이벤트를 수신하고, 트랜잭션이 성공적으로 원장에 최선을 다하고 또는 유효하지 않은 것으로 표시하고 있는지 확인)
- listen on custom events produced by chaincodes(체인 코드로 생성 된 커스텀 이벤트 수신)
- serializable User object with signing capabilities(서명 기능이있는 직렬화 가능 사용자 객체)
- hierarchical configuration settings with multiple layers of overrides: files, environment variable, program arguments, in-memory settings (파일, 환경 변수, 프로그램 인수, 메모리 내 설정 등 여러 계층의 재정의 계층 구조 구성 설정)
- logging utility with a built-in logger (winston) and can be overriden with a number of popular loggers including log4js and bunyan (내장 로거(winston)가 있는 로깅 유틸리티이며, log4js 및 bunyan을 포함한 많은 인기 로거로 대체 될 수 있음)
- pluggable CryptoSuite interface describe the cryptographic operations required for successful interactions with the Fabric. Two implementations are provided out of box: (플러그 가능한 CryptoSuite 인터페이스는 Fabric과의 성공적인 상호 작용에 필요한 암호화 작업을 설명. 두 가지 구현이 즉시 제공.)
- Software-based ECDSA
- PKCS#11-compliant ECDSA
- pluggable State Store interface for persisting state caches such as users(사용자와 같은 상태 캐시 유지를위한 플러그 가능 상태 저장소 인터페이스)
- File-based store(파일 기반 저장소)
- CouchDB-base store which works with both CouchDB database and IBM Cloudant (CouchDB 데이터베이스와 IBM Cloudant와 함께 작동하는 CouchDB 기반 저장소)
- customizable Crypto Key Store for any software-based cryptographic suite implementation (모든 소프트웨어 기반 암호화 제품군 구현을위한 사용자 정의 가능한 Crypto Key Store)
- supports both TLS (grpcs://) or non-TLS (grpc://) connections to peers and orderers, see Remote which is the superclass for peers and orderers (피어와 발주자에 대한 TLS (grpcs : //) 또는 비 -TLS (grpc : //) 연결을 모두 지원합니다. 피어와 발주자의 수퍼 클래스 인 Remote를 참조)
- fabric-ca-client:(패브릭 서버)
- register a new user(새 사용자 등록)
- enroll a user to obtain the enrollment certificate signed by the Fabric CA(사용자를 등록하여 Fabric CA가 서명 한 등록 인증서를 얻음)
- revoke an existing user by enrollment ID or revoke a specific certificate(등록 ID로 기존 사용자 취소 또는 특정 인증서 취소)
- customizable persistence store(사용자 정의 가능한 지속성 저장소)
API Reference(API 참조)
SDK는 탐색 메뉴 인 모듈을 통해 액세스 할 수있는 3 개의 최상위 모듈로 구성됩니다.:
- api: 응용 프로그램 개발자가 SDK에서 사용하는 주요 인터페이스의 대체 구현을 제공 할 수있는 플러그 가능 API 각 인터페이스마다 내장 된 기본 구현이 있습니다.
- fabric-client: 이 모듈은 Hypreledger Fabric 기반 블록 체인 네트워크의 핵심 구성 요소, 즉 동료, 주문자 및 이벤트 스트림과 상호 작용할 수있는 API를 제공합니다.
- fabric-ca-client: 이 모듈은 회원 관리를위한 서비스를 포함하고있는 선택적 구성 요소 인 fabric-ca와 상호 작용할 수있는 API를 제공합니다.
Hyperledger 패브릭 1.0 용 Java SDK
Hyperledger 프로젝트 용 Java SDK에 오신 것을 환영합니다. SDK는 Java 응용 프로그램이 Hyperledger 채널 및 사용자 체인 코드의 수명주기를 관리 할 수 있도록 도와줍니다. 또한 SDK는 채널에서 사용자 체인 코드, 쿼리 블록 및 트랜잭션을 실행하고 채널에서 이벤트를 모니터링하는 수단을 제공합니다.
SDK는 SDK User
인터페이스의 구현을 통해 포함 응용 프로그램에서 정의 된 특정 사용자의 동작에 따라 작동합니다.
SDK는 클라이언트에서 응용 프로그램 정의 채널 및 사용자 아티팩트에 대한 지속성을 제공하지 않습니다. 임베디드 응용 프로그램을 최상으로 관리하려면 이 작업이 필요합니다.
SDK는 Hyperledger의 인증 기관에 대한 클라이언트도 제공합니다. 그러나 SDK는이 인증 기관 구현에 의존하지 않습니다. 다른 인증 기관은 SDK의 Enrollment
인터페이스를 구현하여 사용할 수 있습니다.
여기서는 Java SDK를 작성하고 사용하는 데 필요한 단계를 요약하여 설명합니다. API 설명서 또는 SDK 용 자습서가 아니므로이 도메인에서 처음 사용하는 경우 SDK 시작에 익숙한 데 도움이됩니다.
1.0 SDK는 현재 개발 중이며 API는 여전히 변경 될 수 있습니다 *. 이 1.0 버전 preview
에 따라 모든 코드가 SDK의 후속 업데이트로 업데이트해야 할 수 있습니다.
Known limitations and restrictions(한정사항 및 제한사항)
- TCerts는 지원되지 않습니다 : JIRA FAB-1401
- HSM는 지원되지 않습니다 : JIRA FAB-3137
- Single Crypto strength 256 JIRA FAB-2564
- 네트워크 구성 업데이트가 지원되지 않습니다. JIRA FAB-3103
- 아직 Maven에 대한 릴리즈 / 미리보기가 없습니다. JIRA FAB-648
v1.0.0-beta
SDK의 v1.0.0-beta [dec17727ddb6b269f8fb30930e10d89bc185225f] 릴리스에는 git 태그가 있으며 아래에 설명 된 Fabric 및 Fabric-ca를 빌드 할 필요가 없습니다. 통합 테스트를 위해 제공되는 docker-compose.yaml은 Docker 허브에서 베타 이미지를 가져와야합니다.
최신 버전의 SDK는 v1.0.0-beta에서 작동하지 않을 수 있습니다.
SDK는 Maven에 게시되므로 애플리케이션의 pom.xml에서 직접 사용할 수 있습니다.
Maven Repository Hyperledger Fabric Java SDK
응용 프로그램에서 사용중인 SDK 레벨과 일치하는 Fabric 레벨에서 docker 이미지를 사용하고 있는지 확인하십시오.
*************************************************
Valid builds of Fabric and Fabric-ca(유효한 Fabric 및 Fabric-ca 빌드)
Hyperledger Fabric v1.0은 현재 개발 중이며 최신 Hyperledger Fabric 빌드는이 SDK에서 작동하지 않을 수 있습니다. Hyperledger 프로젝트의 다음 커밋 수준을 사용해야합니다.
Project | Commit level | Date |
---|---|---|
fabric | 66655f733435685f47cb3f16674c79f00ee0b123 | Jun 14 04:26:47 2017 +0000 |
fabric-ca | 7555a9b9bc1fded60b74ceee9bc64d3af2d080fb | Jun 9 16:42:57 2017 +0000 |
Hyperledger 저장소로 이동하여 이러한 프로젝트를 복제 할 수 있습니다.
SDK 개발이 계속되면이 파일은 호환되는 Hyperledger 패브릭 및 Fabric-CA 커밋 수준으로 업데이트됩니다.
일단 fabric
과 fabric-ca
를 복제했다면 git reset --hard commitlevel
을 사용하여 리포지토리를 올바른 커밋으로 설정하십시오.
Working with the Fabric Vagrant environment(Fabric Vagrant 환경에서 작업하기)
운영 체제가 Docker 지원과 사용자 환경에서 직접 빌드하는 데 필요한 모든 요구 사항을 가지고있는 경우에는 Vargant가 필요하지 않습니다. Vargant 환경이 아닌 경우, 이 단계는 아래의 경우와 같이 Vargant가 포함 된 부분을 뺀 것입니다. Vagrant에서 Fabric 구성 요소 (피어, 발주자, fabric-ca)를 실행하려면 다음을 수행하십시오.
git clone https://github.com/hyperledger/fabric.git
git clone https://github.com/hyperledger/fabric-ca.git
cd fabric-ca
git reset --hard fabric-ca_commitlevel from above
cd ../fabric
git reset --hard fabric_commitlevel from above
cd devenv
change the Vagrant file as suggested below:
vagrant up
vagrant ssh
make docker
cd ../fabric-ca
make docker
cd ../fabric/sdkintegration
docker-compose down; rm -rf /var/hyperledger/*; docker-compose up --force-recreate
-
Vagrantfile
파일을 열고 다음config.vm.network
문이 설정되어 있는지 확인하십시오. 그렇지 않다면 추가하십시오.
config.vm.network :forwarded_port, guest: 7050, host: 7050 # fabric orderer service
config.vm.network :forwarded_port, guest: 7051, host: 7051 # fabric peer vp0 service
config.vm.network :forwarded_port, guest: 7053, host: 7053 # fabric peer event service
config.vm.network :forwarded_port, guest: 7054, host: 7054 # fabric-ca service
config.vm.network :forwarded_port, guest: 5984, host: 15984 # CouchDB service
### Below are probably missing.....
config.vm.network :forwarded_port, guest: 7056, host: 7056
config.vm.network :forwarded_port, guest: 7058, host: 7058
config.vm.network :forwarded_port, guest: 8051, host: 8051
config.vm.network :forwarded_port, guest: 8053, host: 8053
config.vm.network :forwarded_port, guest: 8054, host: 8054
config.vm.network :forwarded_port, guest: 8056, host: 8056
config.vm.network :forwarded_port, guest: 8058, host: 8058
Vagrant 파일에 아래 줄 사이의 sdkintegration 폴더를 참조하는 폴더를 추가하십시오.
config.vm.synced_folder "..", "/opt/gopath/src/github.com/hyperledger/fabric"
config.vm.synced_folder "/home/<<user>>/fabric-sdk-java/src/test/fixture/sdkintegration", "/opt/gopath/src/github.com/hyperledger/fabric/sdkintegration
config.vm.synced_folder ENV.fetch('LOCALDEVDIR', ".."), "#{LOCALDEV}"
SDK dependencies(SDK 의존성)
SDK depends on few third party libraries that must be included in your classpath when using the JAR file. To get a list of dependencies, refer to pom.xml file or run mvn dependency:tree
or mvn dependency:list
.
SDK는 JAR 파일을 사용할 때 클래스 경로에 포함되어야하는 타사 라이브러리에 의존합니다. 의존성 목록을 얻으려면 pom.xml 파일을 참조하거나 mvn dependency:tree
또는 mvn dependency:list
를 실행하십시오.
또는 mvn dependency : analyze-report는 모든 종속성을보다 읽기 쉬운 형식으로 나열한 대상 디렉토리에서 HTML 형식의 보고서를 생성합니다.
Using the SDK(SDK 사용하기)
SDK의 테스트 케이스는 SDK의 소스 트리에서 /src/test/fixture
의 chaincode를 사용합니다.
SDK의 JAR 파일은 target/fabric-sdk-java-1.0.0-SNAPSHOT.jar
에 있으며 위에 나열된 추가 종속성이 필요합니다. SDK가 Maven
에 게시되면 애플리케이션의 pom.xml
에 SDK를 간단히 포함시킬 수 있습니다.
pom.xml
에 아래 코드를 추가하여 fabric-sdk-java-1.0.0-SNAPSHOT을 다운로드하십시오.
<repositories>
<repository>
<id>nexus-snapshot</id>
<url>https://nexus.hyperledger.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.hyperledger.fabric-sdk-java</groupId>
<artifactId>fabric-sdk-java</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>
Compiling(컴파일)
이 프로젝트를 빌드하려면 다음 종속성을 충족시켜야합니다.
- JDK 1.8 이상
- Apache Maven
JAVA_HOME이 JDK 1.8 (또는 그 이상) 설치를 가리키고 JAVA_HOME / bin과 Apache maven이 PATH에 있으면 다음 명령을 실행하여 jar 파일을 빌드하십시오. mvn install
또는 mvn install -DskipTests
단위 테스트를 실행하다.
Running the unit tests(단위 테스트 실행하기)
유닛 테스트를 실행하려면 유닛 테스트를 실행하고 jar 파일을 빌드 할 mvn test 또는 mvn install을 사용하십시오. 단위 테스트를 실행할 수 있으려면 로컬 피어 W 순서 지정자를 실행 중이어야합니다.
Running the integration tests(통합 테스트 실행)
통합 테스트를 실행하려면 Fabric-ca, Fabric 피어 및 Fabric 주문자의 로컬 인스턴스를 실행해야합니다. 방랑자에서 이러한 서비스를 실행하는 방법은 위의 내용을 참조하십시오. 이 maven
명령을 사용하여 통합 테스트를 실행하십시오.
- mvn failsafe:integration-test -DskipITs=false
End to end test scenario(테스트 시나리오를 끝으로 종료)
src / test / java / org / hyperledger / fabric / sdkintegration / End2endIT.java 통합 테스트는 체인 코드를 설치, 인스턴스화, 호출 및 쿼리하는 예제입니다. Hyperledger 채널을 구성하고 GO
체인 코드를 배치하고 체인 코드를 호출하여 전송량 연산을 수행하고 결과 블록 체인 세계 상태를 쿼리합니다.
이 테스트는 Fabric e2e_cli 예제의 수정 된 버전으로 SDK의 기능을 보여줍니다. 블록 체인과 패브릭 개념을 더 잘 이해하려면 e2e_cli 예제를 설치하고 실행하는 것이 좋습니다.
End to end test environment(테스트 환경을 종료)
이 테스트에서는 Fabric orderer을 하나, 두 조직 (peerOrg1, peerOrg2)을 정의합니다. 각 조직에는 2 개의 피어 (하나의 fabric-ca 서비스)가 있습니다.
Certificates and other cryptography artifacts(인증서 및 기타 암호화 아티팩트)
Fabric은 각 조직이 클라이언트, 동료 및 주문자와주고받는 메시지에 서명하고 확인하는 데 사용할 개인 키와 인증서를 요구합니다. 각 조직은 MSP (회원 서비스 공급자)의 해당 아티팩트를 고유 한 MSPID와 함께 그룹화합니다.
또한 각 조직은 이러한 아티팩트를 독립적으로 생성한다고 가정합니다. fabric-ca 프로젝트는 이러한 인증서 생성 서비스의 예입니다. 또한 Fabric은 종단 간 테스트에 필요한 모든 암호화 아티팩트를 자동으로 생성하는cryptogen
도구를 제공합니다. src / test / fixture / sdkintegration / e2e-2Orgs / channel 디렉토리에 있습니다.
end2end crypto-config 아티팩트를 생성하는 데 사용되는 명령은 다음과 같습니다.
build/bin/cryptogen generate --config crypto-config.yaml --output=crypto-config
포트 할당을 용이하게하고 아티팩트를 실제 파일에 매핑하기 위해 모든 피어, 주문자 및 fabric-ca는 도커 작성 구성 파일을 통해 제어되는 Docker 컨테이너로 실행됩니다.
끝에서 끝까지 사용되는 파일은 다음과 같습니다.
- src/test/fixture/sdkintegration/e2e-2Orgs/channel (everything needed to bootstrap the orderer and create the channels)
- src/test/fixture/sdkintegration/e2e-2Orgs/crypto-config (as-is. Used by
configtxgen
anddocker-compose
to map the MSP directories) - src/test/fixture/sdkintegration/docker-compose.yaml
엔드 투 엔드 테스트 케이스 아티팩트는 src / test / fixture / sdkintegration / e2e-2Org / channel 디렉토리에 저장됩니다.
TLS connection to Orderer and Peers(주문 및 피어와의 TLS 연결)
TLS 연결을 위해 발주자와 피어 각각에 대해 인증서와 키가 필요합니다. 다음과 같이 openssl 명령을 사용하여 인증서 및 키 파일을 생성 할 수 있습니다.
- 인증서 발급을위한 자체 인증 기관 (CA) 설정
- 각 주문자 및 피어들 :
- 개인 키 생성 :
openssl genrsa 512 > key.pem
. - 인증서 요청 생성 (csr):
openssl req -new -days 365 -key key.pem -out csr.pem
는 CN이 컨테이너 별칭 (예 : peer0, peer1 등)이어야하는 정보에 대한 입력을 요청하고, 다른 모든 것은 비워 둘 수 있습니다. - CA 개인 키로 csr에 서명하여 인증서를 생성합니다:
openssl ca -days 365 -in csr.pem -keyfile {CA's privatekey} -notext -out cert.pem
- 결과 docker 컨테이너가 액세스 할 수있는 디렉토리에 결과 cert.pem과 key.pem을 CA 인증서 (cacert.pem 이름)와 함게 넣으십시오.
- 개인 키 생성 :
위의 마지막 openssl 명령에서 -notext 옵션이 중요합니다. 옵션이 없으면 일부 Java 구현 (예 : IBM JDK)에서 결과 cert.pemmay가 작동하지 않습니다. 종단 간 테스트 케이스의 인증서와 키는 src / test / fixture / sdkintegration / e2e-2Org / tls / 디렉토리에 저장됩니다.
현재 pom.xml은 Orderer 및 Peers에 대한 TLS 연결에 netty-tcnative-boringssl을 사용하도록 설정되어 있지만 ALPN을 통해 대체 TLS 연결을 사용하도록 pom.xml (몇 줄의 주석 처리를 제거)을 변경할 수 있습니다.
Chaincode endorsement policies(체인 코드 보증 정책)
정책은 Fabric Endorsement Policies 문서에 설명되어 있습니다. 패브릭 도구를 사용하여 정책을 생성하고 (예제는 JIRA 문제 FAB-2376에 나와 있습니다) SDK에 파일 또는 바이트 배열로 제공하십시오. SDK는 체인 코드 인스턴스화 요청을 생성 할 때 정책을 사용합니다.
SDK에 정책을 입력하려면 ChaincodeEndorsementPolicy 클래스를 사용하십시오.
테스트 목적으로 src / test / resources 디렉토리에 2 개의 정책 파일이 있습니다.
- policyBitsAdmin ( which has policy AND(DEFAULT.admin) meaning 1 signature from the DEFAULT MSP admin' is required )
- policyBitsMember ( which has policy AND(DEFAULT.member) meaning 1 signature from a member of the DEFAULT MSP is required )
end / end 테스트 시나리오에서 사용하기 위해 src / test / fixture / sdkintegration / e2e-2Orgs / channel 디렉토리에있는 하나의 파일이 있습니다.
- members_from_org1_or_2.policy ( which has policy OR(peerOrg1.member, peerOrg2.member) meaning 1 signature from a member of either organizations peerOrg1, PeerOrg2 is required)
그렇지 않으면, 당신은 또한 그것을에 정의 된 정책을 가지고 YAML 파일을 제공하여 ChaincodeEndorsementPolicy 클래스를 사용할 수 있습니다. src / test / fixture / sdkintegration / chaincodeendorsementpolicy.yaml을 사용하는 End2endIT 테스트 사례에서이 예제를 참조하십시오. 파일 chaincodeendorsementpolicy.yaml에는 이러한 정책을 만드는 방법을 이해하는 데 도움이되는 설명이 들어 있습니다. 첫 번째 섹션에는 정책에서 사용할 수있는 모든 서명 ID가 나열됩니다. 현재 ROLE 유형 만 지원됩니다. 정책 섹션은 n-of 및 서명 된 요소로 구성됩니다. 그러면 n-of (1-of
2-of
)는 해당 섹션의 다수 (n
)가 참이어야합니다. signed-by
는 ID 섹션에서 ID를 참조합니다.
Channel creation artifacts(채널 생성물)
새 채널을 만들 때 채널 구성 파일과 주문자 부트 스트랩 파일 (src / test / fixture / sdkintegration / e2e-2Orgs / channel 디렉토리 참조)이 필요합니다. 이것은 Hyperledger Fabric configtxgen
도구로 생성됩니다.
End2endIT.java의 경우 명령은 다음과 같습니다.
- build/bin/configtxgen -outputCreateChannelTx foo.tx -profile TwoOrgsChannel -channelID foo
- build/bin/configtxgen -outputCreateChannelTx bar.tx -profile TwoOrgsChannel -channelID bar
- build/bin/configtxgen -outputBlock orderer.block -profile TwoOrgsOrdererGenesis
with the configtxgen config file src/test/fixture/sdkintegration/e2e-2Orgs/channel/configtx.yaml
build/bin/configtxgen
도구가 없다면 make configtxgen
을 실행하십시오.
end-to-end 테스트 케이스를 실행하기 전에 :
-
configtx.yaml
을 수정하여 모든 호스트 이름 및 포트 정의가 서버 호스트 이름 및 포트와 일치하도록 변경해야 할 수 있습니다. - MSPDir이 crypto-config 디렉토리에 대한 올바른 경로를 가리 키도록
configtx.yaml
을 수정해야합니다. -
configtx.yaml
은 현재 패브릭, fabric-ca 및 fabric-sdk-java 프로젝트가 /opt/gopath/src/github.com/hyperledger 디렉토리 아래에있는 Vagrant 환경에서 실행 중이라고 가정합니다.
GO Lang chaincode(고언어 체인코드)
Go lang chaincode 종속성은 공급 업체 폴더에 포함되어야합니다. 이에 대한 설명은 Vender 폴더 설명을 참조하십시오.
#Basic 문제 해결 ID 또는 토큰이 일치하지 않습니다.
enrollmentSecret은 일회용 암호이므로 멤버 자격 서비스 서버로 등록 프로세스를 한 번만 수행 할 수 있습니다. 회원 서비스에 대한 FSUser 등록 / 등록을 수행 한 후 클라이언트 측에 저장된 암호 토큰을 삭제 한 경우 다음에 등록을 시도 할 때 다음과 유사한 오류가 표시됩니다.
Error: identity or token do not match
Error: FSUser is already registered
이 문제를 해결하려면 일반적으로 / var / hyperledger / production 디렉토리 삭제 및 멤버쉽 서비스 재시작과 관련된 지침에 따라 CA 서버에서 저장된 암호 자료를 제거하십시오. 또한 KeyValStore를 삭제하여 클라이언트 측에 저장된 암호화 토큰을 제거해야합니다. 해당 KeyValStore는 구성 가능하며 단위 테스트 내에서 $ {FSUser.home} / test.properties로 설정됩니다.
단위 테스트를 실행할 때 항상 구성원 서비스 데이터베이스를 지우고 KeyValStore 파일을 삭제해야합니다. 그렇지 않으면 단위 테스트가 실패합니다.
java.security.InvalidKeyException: Illegal key size
이 에러가 발생하면 , JDK는 무제한의 강도 암호화 알고리즘을 처리 할 수 없다는 것을 의미합니다. 이 문제를 해결하려면 사용중인 JDK 버전의 JCE 라이브러리를 다운로드해야합니다. 사용중인 JDK 버전의 JCE를 다운로드하여 설치하려면 여기의 지침을 따르십시오.
# 개발자 및 동료 사용자와의 커뮤니케이션. Hyperledger 프로젝트의 Rocket 채팅에 로그인하십시오. Linux Foundation ID가 필요합니다
#Reporting Issues Fabric 개발 환경 구축에 문제가 있다면 rocket.chat의 # fabric-dev-env 채널에서이 문제를 논의하십시오.
문제를보고하려면 Hyperledger의 JIRA를 사용하십시오. 로그인하려면 리눅스 파운데이션 ID (LFID)가 필요합니다. 리눅스 파운데이션 ID가 없으면 리눅스 파운데이션 ID (LFID)를 받아야합니다.
JIRA 필드는 다음과 같아야합니다 :
- Type
- Bug or New Feature
- Component
- fabric-sdk-java
- Fix Versions
- v1.0.0
겪고있는 문제에 대해 가능한 한 많은 정보를 제공하십시오. 스택 추적 로그. 환경 변수를 설정하여 SDK 로깅을 활성화 할 수 있습니다.
ORG_HYPERLEDGER_FABRIC_SDK_LOGLEVEL=TRACE
ORG_HYPERLEDGER_FABRIC_CA_SDK_LOGLEVEL=TRACE
패브릭 디버그는 SDK docker-compose.yml 파일에서 기본적으로 사용 설정됩니다.
On Orderer:
ORDERER_GENERAL_LOGLEVEL=debug
On peers: CORE_LOGGING_LEVEL=DEBUG
명령을 시작하여 Fabric CA에는 -d 매개 변수가 있습니다.
가능한 경우 문제가 발생한 곳뿐만 아니라 JIRA에 전체 로그를 업로드하십시오.
'Blockchain > Hyperledger Fabric' 카테고리의 다른 글
- Total
- Today
- Yesterday
- 하이퍼레저 페브릭
- 알고리즘
- DOCs
- 기초 of 기초 데이터 개념
- codility
- Hyperledger Fabric
- 하이퍼레저 인디
- 하이퍼레저 패브릭
- 코딜리티
- 코딩테스트
- 직딩잇템
- 문제풀이
- Private Data
- 빅데이터 기초
- Hyperledger Fabric v1.2
- docker
- ubuntu
- ambrosus
- Hyperledger Indy
- 빅데이터 강의
- 빅데이터
- 어서와 데이터는 처음이지
- 암브로셔스
- 블록체인
- Blockchain
- Hyperledger Fabric v1.1
- 블록 체인
- javascript
- 빅데이터 교육
- 코테
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |