peer node


Description

peer node 하위 명령을 사용하여 관리자는 피어 노드를 시작하거나 피어 노드의 State를 확인할 수 있습니다.

Syntax

peer node 하위 명령의 구문은 다음과 같습니다. :

peer node start [flags]
peer node status

peer node start

Start Description

peer node start 명령을 통해 관리자는 피어 노드 프로세스를 시작할 수 있습니다.

피어 노드 프로세스는 구성 파일 core.yaml을 사용하여 구성할 수 있습니다. 구성 파일 core.yaml 은 환경 변수 FABRIC_CFG_PATH에 지정된 디렉토리에 있어야합니다. 도커 배포의 경우 core.yaml 은 피어 컨테이너 FABRIC_CFG_PATH 디렉토리에 미리 구성되어 있습니다. 원시 2진 배포의 경우 core.yaml 이 릴리스 아티팩트 배포에 포함됩니다. core.yaml 에 있는 구성 등록 정보는 환경 변수를 사용하여 겹쳐  수 있습니다. 예를 들어 CORE_PEER_MSPCONFIGPATH 환경 변수를 정의하여 peer.mspConfigPath 구성 등록 정보를 지정할 수 있습니다 . 여기서 ** CORE _ **는 환경 변수의 접두어입니다.

Start Syntax

peer node start 명령 구문은 다음과 같습니다. :

peer node start [flags]

Start Flags

peer node start 명령에는 다음과 같은 명령 특정 플래그가 있습니다. :

  • --peer-chaincodedev 체인 노드 개발 모드에서 피어 노드를 시작합니다. 일반적으로 체인 코드 컨테이너는 피어에 의해 시작되고 유지 관리됩니다. 그러나 devlopment 모드에서 체인 코드는 사용자가 만들고 시작할 수 있습니다. 이 모드는 반복 개발을 위한 체인 코드 개발 단계에서 유용합니다. 체인 코드 자습서에서 개발 모드에 대한 자세한 내용을 확인하십시오 .

전역 peer 명령 플래그는 peer command 주제에서 설명한대로 적용됩니다. :

  • –logging-level

peer node status

Status Description

peer node status 명령을 통해 관리자는 피어 노드 프로세스의 State를 볼 수 있습니다. 피어 구성에서 지정된 peer.address에서 실행 중이거나 CORE_PEER_ADDRESS 환경 변수로 대체된 피어 노드 프로세스의 State를 표시합니다.

Status Syntax

peer node status 명령 구문은 다음과 같습니다. :

peer node status

Status Flags

peer node status 명령은 명령 특정 플래그가 없습니다.



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

peer logging


Description

peer logging 하위 명령을 사용하여 관리자는 피어의 로그 수준을 동적으로 보고 구성 할 수 있습니다.

Syntax

peer logging 하위 명령의 구문은 다음과 같습니다. :

peer logging getlevel
peer logging setlevel
peer logging revertlevels

다른 하위 명령 옵션 (getlevel, setlevel 및 revertlevels)은 피어와 관련된 여러 로깅 작업과 관련이 있습니다.

각 피어 로깅 하위 명령은이 주제의 자체 절에서 옵션과 함께 설명됩니다.

peer logging getlevel

Get Level Description

peer logging getlevel 명령을 통해 관리자는 로깅 모듈의 현재 수준을 가져올 수 있습니다.

Get Level Syntax

peer logging getlevel 명령 구문은 다음과 같습니다. :

peer logging getlevel <module-name>

Get Level Flags

peer logging getlevel 명령은 명령 특정 플래그를 가지고 있지 않습니다.

Get Level Usage

다음은 peer logging getlevel 명령의 예입니다 .

  • peer 모듈에 대한 로그 수준을 얻으려면 :
peer logging getlevel peer

2018-02-22 19:10:08.633 UTC [cli/logging] getLevel -> INFO 001 Current log level for peer module 'peer': DEBUG
2018-02-22 19:10:08.633 UTC [main] main -> INFO 002 Exiting.....

peer logging setlevel

Set Level Description

peer logging setlevel 명령을 사용하여 관리자는 제공된 모듈 이름 정규 표현식과 일치하는 모든 로깅 모듈의 현재 레벨을 설정할 수 있습니다.

Set Level Syntax

peer logging setlevel 명령 구문은 다음과 같습니다. :

peer logging setlevel <module-name-regular-expression> <log-level>

Set Level Flags

peer logging setlevel 명령은 명령 특정 플래그를 가지고 있지 않습니다.

Set Level Usage

다음은 peer logging setlevel 명령의 몇 가지 예입니다 .

  • 정규 표현식 peer와 일치하는 모듈에 대한 로그 수준을 설정하려면 log level을 WARNING로 설정하십시오. :
peer logging setlevel peer warning
2018-02-22 19:14:51.217 UTC [cli/logging] setLevel -> INFO 001 Log level set for peer modules matching regular expression 'peer': WARNING
2018-02-22 19:14:51.217 UTC [main] main -> INFO 002 Exiting.....

^gossip 정규 표현식(즉, 모든 gossip/<submodule>형태의 gossip 로깅 서브 모듈)과 일치하는 모듈에 대한 로그 수준을 설정하려면 log level을 ERROR로 설정하십시오. :

peer logging setlevel ^gossip error

2018-02-22 19:16:46.272 UTC [cli/logging] setLevel -> INFO 001 Log level set for peer modules matching regular expression '^gossip': ERROR
2018-02-22 19:16:46.272 UTC [main] main -> INFO 002 Exiting.....

peer logging revertlevels

Revert Levels Description

관리자는 peer logging revertlevels 명령을 사용하여 피어가 시작 프로세스를 완료 할 때 모든 모듈의 로그 수준을 수준으로 되돌릴 수 있습니다.

Revert Levels Syntax

peer logging revertlevels 명령 구문은 다음과 같습니다. :

peer logging revertlevels

Revert Levels Flags

peer logging revertlevels 명령은 명령 특정 플래그를 가지고 있지 않습니다.

Revert Levels Usage

다음은 peer logging revertlevels 명령의 예입니다. :

peer logging revertlevels

2018-02-22 19:18:38.428 UTC [cli/logging] revertLevels -> INFO 001 Log levels reverted to the levels at the end of peer startup.
2018-02-22 19:18:38.428 UTC [main] main -> INFO 002 Exiting.....

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

peer version

Description

peer version 명령은 피어의 버전 정보를 표시합니다. 버전, Go 버전, OS / 아키텍처, 실험 기능이 켜져 있으면 체인 코드 정보를 표시합니다. 예 :

 peer:
   Version: 1.1.0-beta-snapshot-a6c3447e
   Go version: go1.9.2
   OS/Arch: linux/amd64
   Experimental features: true
   Chaincode:
    Base Image Version: 0.4.5
    Base Docker Namespace: hyperledger
    Base Docker Label: org.hyperledger.fabric
    Docker Namespace: hyperledger

Syntax

peer version 명령 구문은 다음과 같습니다. :

peer version


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

peer channel


Description

관리자는 peer channel 명령을 사용하여 관리자가 채널에 참여하거나 피어가 참여하는 채널을 나열하는 등 피어에서 채널 관련 작업을 수행 할 수 있습니다.

Syntax

peer channel 명령 구문은 다음과 같습니다. :

peer channel create       [flags]
peer channel fetch        [flags]
peer channel getinfo      [flags]
peer channel join         [flags]
peer channel list         [flags]
peer channel signconfigtx [flags]
peer channel update       [flags]

간결함을 위해, 우리는 단순히 명령 (peer), 하위 명령 (channel), 또는 하위 명령 옵션 (fetch)을 명령으로 참조하기도 합니다.

서로 다른 명령 옵션 ( createfetch...)은 피어와 관련된 다양한 채널 작업과 관련이 있습니다. 예를 들어, peer channel join 명령을 사용하여 피어를 채널에 조인하거나 peer channel list 명령을 사용하여 피어가 조인된 채널을 표시하십시오.

각 피어 채널 하위 명령은 이 항목의 자체 섹션에 옵션과 함께 설명됩니다.

Flags

각 peer channel 명령 옵션에는 고유한 플래그 세트가 있으며 관련 하위 명령 옵션으로 설명됩니다.

모든 peer channel 명령 옵션에는 peer channel 명령 옵션에 적용할 수 있는 전역 플래그 집합도 있습니다.

전역 플래그는 다음과 같습니다.

  • --cafile <string> 여기서 <string>은 피어가 통신중인 orderer의 인증 기관의 PEM으로 인코딩된 인증서 체인을 포함하는 파일에 대한 완전한 경로입니다. --tls 플래그와 함께 사용하십시오.
  • --certfile <string> 여기서 <string>은 orderer와의 상호 인증에 사용되는 PEM 인코드 X.509 인증서가 들어있는 파일의 완전한 경로입니다. --clientauth 플래그와 함께 사용하십시오.
  • --clientauth 이 플래그를 사용하여 orderer와의 상호 TLS 통신을 가능하게하십시오. --certfile 및 --keyfile 플래그와 함께 사용하십시오.
  • --keyfile <string> 여기서 <string>은 orderer와 상호 인증을 위해 사용되는 PEM 인코딩 X.509 개인 키를 포함하는 파일에 대한 완전한 경로입니다. --clientauth 플래그와 함께 사용하십시오.
  • -o, --orderer <string> 여기서 <string>은 피어가 통신하고 있는 orderer의 완전한 주소와 포트입니다. 포트가 지정되지 않으면 포트 7050으로 기본 설정됩니다.
  • --ordererTLSHostnameOverride <string> 여기서 <string>은 TLS를 사용하여 --orderer 플래그로 지정된 orderer와 통신할 때 사용할 호스트 이름 대체입니다. 피어와 orderer 간의 통신의 TLS 핸드 셰이크 단계가 후속 메시지 교환 단계와 다른 호스트 이름을 사용하는 경우 이 플래그를 사용할 필요가 있습니다. --tls 플래그와 함께 사용하십시오.
  • --tls 이 플래그를 사용하여 orderer와 TLS 통신을 사용 가능하게하십시오. --cafile에 의해 식별된 인증서는 TLS에서 Orderer를 인증하는 데 사용됩니다.

Usage

다음은 peer channel create 명령에 --orderer 전역 플래그를 사용하는 예제입니다.

  • ./createchannel.txn 파일에 포함된 구성 트랜잭션에 의해 정의된 샘플 채널 mychannel을 만듭니다. orderer는 orderer.example.com:7050에 있습니다.
peer channel create -c mychannel -f ./createchannel.txn --orderer orderer.example.com:7050

2018-02-25 08:23:57.548 UTC [channelCmd] InitCmdFactory -> INFO 003 Endorser and orderer connections initialized
2018-02-25 08:23:57.626 UTC [channelCmd] InitCmdFactory -> INFO 019 Endorser and orderer connections initialized
2018-02-25 08:23:57.834 UTC [channelCmd] readBlock -> DEBU 020 Received block: 0
2018-02-25 08:23:57.835 UTC [main] main -> INFO 021 Exiting.....

채널이 성공적으로 생성되었음을 나타내는 블록 0이 반환됩니다.

peer channel create

Create Description

관리자는 peer channel create 명령을 사용하여 새 채널을 만들 수 있습니다. 이 명령은 peer 명령을 사용하는 경우에도 피어에서 수행되지 않고 이 기능을 수행하기 위해 orderer에 연결합니다.

관리자는 채널을 작성하기 위해 명령을 사용하여 구성 갱신 트랜잭션을 Orderer에게 제출합니다. 이 트랜잭션은 새 채널을 만드는 데 필요한 구성 변경 사항을 설명합니다. 또한, 이 거래는 현재의 Orderer 구성에 따라 요구되는 조직에 의해 서명되어야합니다. 구성 트랜잭션은 configtxgen 명령에 의해 생성되고 peer channel signconfigtx 명령에 의해 서명될 수 있습니다.

Create Syntax

peer channel create 명령 구문은 다음과 같습니다. :

peer channel create [flags]

Create Flags

peer channel create 명령은 다음 명령 특정 플래그가 있습니다 :

  • -c, --channelID <string> required, 여기서 <string>은 생성될 채널의 이름입니다.
  • -f, --file <string> required , 여기서 <string>은 이 채널을 만드는 데 필요한 구성 트랜잭션을 포함하는 파일을 식별합니다. configtxgen 명령으로 생성할 수 있습니다.
  • -t, --timeout <integer> optional , 여기서 <integer>는 채널 생성 시간 초과를 초 단위 로 지정합니다. 지정하지 않으면 기본값은 5 초입니다. 명령이 시간 초과되면 채널이 생성되거나 생성되지 않았을 수 있습니다.

전역 peer 명령 플래그는 다음과 같이 적용됩니다.

  • -o, --orderer 필수
  • --cafile 선택 과목
  • --certfile 선택 과목
  • --clientuth 선택 과목
  • --keyfile 선택 과목
  • --ordererTLSHostnameOverride 선택 과목
  • --tls 선택 과목

Create Usage

다음은 peer channel create 명령 옵션의 예제입니다.

IP 주소에서 orderer.example.com:7050의 orderer를 사용하여 네트워크에 대한 새 채널 mychannel을 만듭니다. 이 채널을 작성하는 데 필요한 구성 업데이트 트랜잭션은 ./createchannel.txn 파일로 정의됩니다. 채널이 생성될 때까지 30 초 동안 기다리십시오.

peer channel create -c mychannel --orderer orderer.example.com:7050 -f ./createchannel.txn -t 30

2018-02-23 06:31:58.568 UTC [channelCmd] InitCmdFactory -> INFO 003 Endorser and orderer connections initialized
2018-02-23 06:31:58.669 UTC [channelCmd] InitCmdFactory -> INFO 019 Endorser and orderer connections initialized
2018-02-23 06:31:58.877 UTC [channelCmd] readBlock -> DEBU 020 Received block: 0
2018-02-23 06:31:58.878 UTC [main] main -> INFO 021 Exiting.....

ls -l

-rw-r--r-- 1 root root 11982 Feb 25 12:24 mychannel.block

출력에 표시된 대로 mychannel 채널이 성공적으로 생성된 것을 볼 수 있습니다. 여기서 블록 0 (제로)이 이 채널의 블록 체인에 추가되고 피어에 반환됩니다. 이 채널은 mychannel.block이라는 로컬 디렉토리에 저장됩니다.

블록 0은 채널의 시작 구성을 제공하기 때문에 기원 블록(genesis block) 이라고도 합니다. 채널에 대한 모든 후속 업데이트는 채널의 블록 체인에 있는 구성 블록으로 캡처됩니다. 각 블록은 이전 구성을 대체합니다.

peer channel fetch

Fetch Description

peer channel fetch 명령은 클라이언트가 orderer로부터 블록을 가져올 수 있게 합니다. 블록에는 구성 트랜잭션 또는 사용자 트랜잭션이 포함될 수 있습니다.

클라이언트는 채널에 대한 읽기 액세스 권한이 있어야합니다. 이 명령은 이 기능을 수행하기 위해 orderer에 연결합니다. peer 클라이언트 명령이 사용 되더라도 peer에서는 수행되지 않습니다.

Fetch Syntax

peer channel fetch 명령 구문은 다음과 같습니다. :

peer channel fetch [newest|oldest|config|(block number)] [<outputFile>] [flags]

where

  • newest 채널의 orderer가 사용할 수 있는 가장 최근 블록을 반환합니다. 이것은 사용자 트랜잭션 블록 또는 구성 블록일 수 있습니다. 이 옵션은 가장 최근 블록의 블록 번호를 반환합니다.
  • oldest 채널의 orderer가 사용할 수 있는 가장 오래된 블록을 반환합니다. 이것은 사용자 트랜잭션 블록 또는 구성 블록일 수 있습니다. 이 옵션은 또한 가장 오래된 블록의 블록 번호를 반환합니다.
  • config 채널의 orderer가 사용할 수있는 가장 최근의 구성 블록을 반환합니다. 이 옵션은 가장 최근의 구성 블록의 블록 번호를 반환합니다.
  • (block number) 채널에 대해 요청된 블록을 반환합니다. 이것은 사용자 트랜잭션 블록 또는 구성 블록일 수 있습니다. 0을 지정하면이 채널의 기원 블록(genesis block)이 반환됩니다 (네트워크 Orderer가 계속 사용할 수있는 경우).
  • <outputFile> 인출된 블록이 기록되는 파일의 이름을 지정합니다. <outputFile>이 지정되지 않으면 블록은 다음과 같은 이름의 파일에서 로컬 디렉토리에 기록됩니다.
    • <channelID>_newest.block
    • <channelID>_oldest.block
    • <channelID>_config.block
    • <channelID>_(block number).block

Fetch Flags

peer channel fetch 명령은 다음 명령 특정 플래그가 있습니다. :

-c, --channelID <string>

required, 여기서 <string>은 블록이 orderer로부터 fetch될 채널의 이름입니다.

전역 peer 명령 플래그도 적용됩니다.

  • -o, --orderer 필수
  • --cafile 선택 과목
  • --certfile 선택 과목
  • --clientuth 선택 과목
  • --keyfile 선택 과목
  • --ordererTLSHostnameOverride 선택 과목
  • --tls 선택 과목

Fetch Usage

다음은 peer channel fetch 명령의 몇 가지 예입니다.

  • newest 옵션을 사용하여 가장 최근의 채널 블록을 검색하고 mychannel.block 파일에 저장하십시오.
peer channel fetch newest mychannel.block -c mychannel --orderer orderer.example.com:7050

2018-02-25 13:10:16.137 UTC [channelCmd] InitCmdFactory -> INFO 003 Endorser and orderer connections initialized
2018-02-25 13:10:16.144 UTC [channelCmd] readBlock -> DEBU 00a Received block: 32
2018-02-25 13:10:16.145 UTC [main] main -> INFO 00b Exiting.....

ls -l

-rw-r--r-- 1 root root 11982 Feb 25 13:10 mychannel.block

검색된 블록이 숫자 32이고 정보가 mychannel.block 파일에 기록되었음을 알 수 있습니다.

  • (block number) 옵션을 사용하여 특정 블록 (이 경우 16 번 블록)을 검색하고 기본 블록 파일에 저장합니다.

검색된 블록이 숫자 16이고 정보가 기본 파일 mychannel_16.block에 기록되었음을 알 수 있습니다.

구성 블록의 경우 configtxlator 명령을 사용하여 블록 파일을 디코딩 할 수 있습니다. 디코드된 출력의 예는 이 명령을 참조하십시오. 사용자 트랜잭션 블록도 디코딩 할 수 있지만 이렇게하려면 사용자 프로그램을 작성해야합니다.

peer channel getinfo

GetInfo Description

peer channel getinfo 명령을 통해 관리자는 특정 채널에 대한 피어의 로컬 블록 체인에 대한 정보를 검색 할 수 있습니다. 여기에는 현재 블록 체인 높이와 현재 블록 및 이전 블록의 해시가 포함됩니다. 피어는 둘 이상의 채널에 조인 될 수 있습니다.

이 정보는 관리자가 특히 동일한 채널의 다른 피어와 비교하여 피어 블록 체인의 현재 State를 이해해야 할 때 유용합니다.

GetInfo Syntax

peer channel getinfo 명령 구문은 다음과 같습니다. :

peer channel getinfo [flags]

GetInfo Flags

다음은 peer channel getinfo 명령의 예입니다. :

  • mychannel 채널에 대한 로컬 피어에 대한 정보를 얻습니다.
peer channel getinfo -c mychannel

2018-02-25 15:15:44.135 UTC [channelCmd] InitCmdFactory -> INFO 003 Endorser and orderer connections initialized
Blockchain info: {"height":5,"currentBlockHash":"JgK9lcaPUNmFb5Mp1qe1SVMsx3o/22Ct4+n5tejcXCw=","previousBlockHash":"f8lZXoAn3gF86zrFq7L1DzW2aKuabH9Ow6SIE5Y04a4="}
2018-02-25 15:15:44.139 UTC [main] main -> INFO 006 Exiting.....

mychannel 채널의 최신 블록이 블록 5임을 알 수 있습니다. 또한 채널 블록 체인의 가장 최근 블록에 대한 암호화 해시를 볼 수 있습니다.

peer channel join

Join Description

관리자는 peer channel join 명령을 사용하여 피어를 기존 채널에 연결할 수 있습니다. 관리자는 이 명령을 사용하여 피어에 채널 생성 블록을 제공함으로써 이를 달성합니다. 그러면 피어는 구성 및 다른 피어의 가용성에 따라 네트워크의 다른 피어 또는 순서대로 채널의 블록을 자동으로 검색합니다.

관리자는 peer channel fetch 명령 옵션을 사용하여 기존 채널에서 블록 0을 검색하여 이 명령에서 사용할 로컬 생성 블록을 만들 수 있습니다. peer channel create 명령은 새로운 채널이 생성 될 때 로컬 생성 블록을 반환합니다.

Join Syntax

peer channel join 명령 구문은 다음과 같습니다. :

peer channel join [flags]

Join Flags

peer channel join 명령은 다음 명령 특정 플래그가 있습니다 :

  • -b, --blockpath <string>

required, 여기서 <string>은 채널 생성 블록을 포함하는 파일을 식별합니다. 이 블록은 peer channel fetch 명령을 사용하여 검색하거나 채널에서 블록 0을 요청 하거나 peer channel create 명령을 사용하여 검색할 수 있습니다.

이 명령은 orderer와 상호 작용하지 않으므로 전역(global) peer 명령 플래그는 적용되지 않습니다.

Join Usage

다음은 peer channel join 명령의 예입니다.

  • ./mychannel.genesis.block 파일로 식별된 기원 블록(genesis block)에 정의된 채널에 피어를 참여시킵니다. 이 예에서 채널 블록은 이전에 peer channel fetch 명령에 의해 검색되었습니다.
peer channel join -b ./mychannel.genesis.block

2018-02-25 12:25:26.511 UTC [channelCmd] InitCmdFactory -> INFO 003 Endorser and orderer connections initialized
2018-02-25 12:25:26.571 UTC [channelCmd] executeJoin -> INFO 006 Successfully submitted proposal to join channel
2018-02-25 12:25:26.571 UTC [main] main -> INFO 007 Exiting.....

피어가 성공적으로 채널에 가입을 요청했음을 알 수 있습니다.

peer channel list

List Description

관리자는 peer channel list 명령을 사용하여 피어가 가입된 채널을 나열 할 수 있습니다.

List Syntax

peer channel list 명령 구문은 다음과 같습니다. :

peer channel list [flags]

List Flags

peer channel list 명령은 특정 플래그가 없습니다.

이 명령은 orderer와 상호 작용하지 않으므로 글로벌(global) peer 명령 플래그는 적용되지 않습니다.

List Usage

다음은 peer channel list 명령의 예입니다.

  • 피어가 가입된 채널을 나열하십시오.
peer channel list

2018-02-25 14:21:20.361 UTC [channelCmd] InitCmdFactory -> INFO 003 Endorser and orderer connections initialized
Channels peers has joined:
mychannel
2018-02-25 14:21:20.372 UTC [main] main -> INFO 006 Exiting.....

피어가 mychannel 채널에 가입되어 있음을 볼 수 있습니다.

peer channel signconfigtx

SignConfigTx Description

peer channel signconfigtx 명령은 관리자가 orderer에게 제출하기 전에 피어의 ID 자격 증명을 사용하여 구성 트랜잭션에 서명하는 데 도움이 됩니다. 일반적인 구성 트랜잭션에는 채널 생성 또는 채널 구성 업데이트가 포함됩니다.

관리자는 구성 트랜잭션을 설명하는 signconfigtx 명령에 입력 파일을 제공합니다. 그런 다음 명령은 피어의 공개 ID를 파일에 추가하고 피어의 개인 키로 전체 페이로드에 서명합니다. 이 명령은 로컬 MSP에 저장된 피어의 공개 및 개인 자격 증명을 사용합니다. 새 파일이 생성되지 않습니다. 입력 파일이 제 위치에서 갱신됩니다.

signconfigtx는 구성 트랜잭션에만 서명합니다. 그것을 생성하지도 않으며 orderer에게 제출하지도 않습니다. 일반적으로 구성 트랜잭션은 이 configtxgen 명령을 사용하여 이미 생성된 후 peer channel update와 같은 적절한 명령에 의해 orderer에게 제출됩니다.

SignConfigTx Syntax

peer channel signconfigtx 명령 구문은 다음과 같습니다. :

peer channel signconfigtx [flags]

SignConfigTx Flags

peer channel signconfigtx 명령은 다음 명령 특정 플래그가 있습니다. :

  • -f, --file <string>

필수, 여기서 <string>은 피어를 대신하여 서명할 채널 구성 트랜잭션을 포함하는 파일을 식별합니다.

이 명령은 순서 지정자와 상호 작용하지 않으므로 글로벌(global) peer 명령 플래그는 적용되지 않습니다.

SignConfigTx Usage

다음은 peer channel signconfigtx 명령의 예입니다.

  • ./updatechannel.txn 파일에 정의된 channel update 트랜잭션에 서명 하십시오. 이 예는 명령 전후의 구성 트랜잭션 파일을 나열합니다.
ls -l

-rw-r--r--  1 anthonyodowd  staff   284 25 Feb 18:16 updatechannel.tx

peer channel signconfigtx -f updatechannel.tx

2018-02-25 18:16:44.456 GMT [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2018-02-25 18:16:44.459 GMT [main] main -> INFO 002 Exiting.....

ls -l

-rw-r--r--  1 anthonyodowd  staff  2180 25 Feb 18:16 updatechannel.tx

updatechannel.tx 파일의 크기가 284 바이트에서 2180 바이트로 증가하여 피어가 구성 트랜잭션에 성공적으로 서명했음을 알 수 있습니다 .

peer channel update

Update Description

관리자는 peer channel update 명령을 사용하여 기존 채널을 업데이트 할 수 있습니다.

채널을 갱신하기 위해 관리자는 명령을 사용하여 필요한 채널 구성 변경 사항을 설명하는 구성 트랜잭션을 Orderer에게 제출합니다. 이 거래는 현재 채널 구성에 정의된 필수 조직에서 서명해야합니다. 구성 트랜잭션은 configtxgen 명령에 의해 생성되고 peer channel signconfigtx 명령에 의해 서명 될 수 있습니다.

갱신 트랜잭션은 명령에 의해 명령 변경자에게 권한이 부여 된 것을 확인한 다음 구성 블록을 채널의 모든 피어에 분배하는 orderer에게 전송됩니다. 이러한 방식으로 채널의 모든 피어는 채널 구성의 일관된 복사본을 유지 관리합니다.

Update Syntax

peer channel update 명령 구문은 다음과 같습니다, :

peer channel update [flags]

Update flags

peer channel update 명령은 다음 명령 특정 플래그가 있습니다. :

  • -c, --channelID <string> required, 여기서 <string>은 업데이트 할 채널의 이름입니다.
  • -f, --file <string> required, 여기서 <string>은 트랜잭션 구성 파일을 식별합니다. 이 파일에는 이 채널에 필요한 구성 변경 사항이 포함되어 있으며 configtxgen 명령을 사용하여 생성 할 수 있습니다.

전역 peer 명령 플래그는 다음과 같이 적용됩니다.

  • -o, --orderer 필수
  • --cafile 선택
  • --certfile 선택
  • --clientuth 선택
  • --keyfile 선택
  • --ordererTLSHostnameOverride 선택
  • --tls 선택

Update Usage

다음은 peer channel update 명령의 예입니다.

  • ./updatechannel.txn 파일에 정의된 구성 트랜잭션을 사용하여 mychannel 채널을 업데이트 하십시오. ip address의 orderer.example.com:7050에 있는 orderer를 사용하여 구성 트랜잭션을 채널의 모든 피어로 전송하여 채널 구성 사본을 갱신하십시오.
peer channel update -c mychannel -f ./updatechannel.txn -o orderer.example.com:7050

2018-02-23 06:32:11.569 UTC [channelCmd] InitCmdFactory -> INFO 003 Endorser and orderer connections initialized
2018-02-23 06:32:11.626 UTC [main] main -> INFO 010 Exiting.....
  • 이 시점에서  mychannel 채널이 성공적으로 업데이트되었습니다.


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

Hyperledger Fabric CA

Hyperledger Fabric은 인증서 및 키 자료를 생성하는 데 사용할 수 있는 선택적 인증 기관 서비스 를 제공 하여 블록 체인 네트워크에서 ID를 구성 및 관리합니다.

그러나 ECDSA 인증서를 생성 할 수있는 모든 CA를 사용할 수 있습니다.

Fabirc CA User's Guide

출처 : https://hyperledger-fabric.readthedocs.io/en/release-1.1/getting_started.html#install-prerequisites

peer chaincode


Description

peer chaincode 하위 명령을 사용하면 관리자가 체인 코드 설치, 인스턴스화, 호출, 패키징, 쿼리 및 업그레이드와 같은 피어에 관련된 체인 코드 관련 작업을 수행 할 수 있습니다.

Syntax

peer chaincode 하위 명령의 구문은 다음과 같습니다.

peer chaincode install      [flags]
peer chaincode instantiate  [flags]
peer chaincode invoke       [flags]
peer chaincode list         [flags]
peer chaincode package      [flags]
peer chaincode query        [flags]
peer chaincode signpackage  [flags]
peer chaincode upgrade      [flags]

서로 다른 하위 명령 옵션 (install, instantiate ...)은 피어와 관련된 다른 chaincode 조작과 관련됩니다. 예를 들어, peer chaincode install 하위 명령 옵션을 사용하여 피어에 체인 코드를 설치하거나 peer chaincode query 하위 명령 옵션을 사용하여 피어의 장부에 있는 현재 값에 대한 체인 코드를 조회하십시오.

각 피어 체인 코드 부속 명령은 이 주제의 자체 절에서 옵션과 함께 설명됩니다.

Flags

각 peer chaincode 하위 명령에는 개별 하위 명령에 고유한 플래그 집합과 모든 peer chaincode 하위 명령과 관련된 전역(global) 플래그 세트가 있습니다. 모든 하위 명령이 이 플래그를 사용하는 것은 아닙니다. 예를 들어, query 부속 명령에는 --orderer 플래그가 필요 없습니다.

개별 플래그는 관련 하위 명령으로 설명됩니다. 전역 플래그는 다음과 같습니다.

  • --cafile <string> ordering 엔드 포인트에 대한 PEM인 코드된 신뢰할 수 있는 인증서를 포함하는 파일 경로
  • --certfile <string> orderer 끝점과의 상호 TLS 통신에 사용할 PEM 인코딩된 X509 공개 키를 포함하는 파일 경로
  • --keyfile <string> orderer 끝점과의 상호 TLS 통신에 사용할 PEM으로 인코딩된 개인 키를 포함하는 파일 경로
  • -o 또는 --orderer <string> ordering 서비스 엔드 포인트는 다음과 같이 지정됩니다. <hostname or IP address>:<port>
  • --ordererTLSHostnameOverride <string> TLS 연결을 orderer에게 확인할 때 사용할 호스트 이름 재정의
  • --tls orderer 엔드 포인트와 통신 할 때 TLS 사용
  • --transient <string> JSON 인코딩의 인수의 임시 맵
  • --logging-level <string> 기본 로깅 수준 및 재정의, 전체 구문은 core.yaml을 참조하십시오.

peer chaincode install

Install Description

peer chaincode install 명령을 통해 관리자는 피어의 파일 시스템에 체인 코드를 설치할 수 있습니다.

Install Syntax

peer chaincode install 명령 구문은 다음과 같습니다 :

peer chaincode install [flags]

참고 : 설치는 peer chaincode package 명령을 통해 패키지된 체인 코드를 사용하여 수행할 수도 있습니다(설치를 위한 체인 코드 패키징에 대한 자세한 내용은 아래 peer chaincode package 섹션 참조). chaincode 패키지를 사용하는 구문은 다음과 같습니다.

peer chaincode install [chaincode-package-file]

여기서 [chaincode-package-file]peer chaincode package 명령의 출력 파일입니다.

Install Flags

peer chaincode install 명령은 다음 명령 특정 플래그가 있습니다 :

  • -c, --ctor <string> JSON 형식의 체인 코드 생성자 메시지 (기본값 "{}")
  • -l, --lang <string> 체인 코드가 쓰여진 언어 (기본 "golang")
  • -n, --name <string> 인스톨되고있는 체인 코드의 이름. 영숫자, 대시 및 밑줄로 구성 될 수 있습니다.
  • -p, --path <string> 인스톨되고있는 체인 코드의 경로. Golang (-l golang) 체인 코드의 경우 GOPATH에 상대적인 경로입니다. Node.js (-l 노드) 체인 코드의 경우 이것은 설치 명령이 수행되는 절대 경로 또는 상대 경로입니다
  • -v, --version <string> 설치중인 체인 코드의 버전. 영숫자, 대시, 밑줄, 마침표 및 더하기 기호로 구성 될 수 있습니다.

Install Usage

다음은 peer chaincode install 명령의 몇 가지 예입니다 .

  • mycc 버전 1.0에서 명명된 chaincode를 설치하려면 다음을 수행하십시오. :
peer chaincode install -n mycc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02

.
.
.
2018-02-22 16:33:52.998 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc
2018-02-22 16:33:52.998 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc
.
.
.
2018-02-22 16:33:53.194 UTC [chaincodeCmd] install -> DEBU 010 Installed remotely response:<status:200 payload:"OK" >
2018-02-22 16:33:53.194 UTC [main] main -> INFO 011 Exiting.....

로그 메시지를 기반으로 설치가 성공적으로 완료되었음을 알 수 있습니다. :

2018-02-22 16:33:53.194 UTC [chaincodeCmd] install -> DEBU 010 Installed remotely response:<status:200 payload:"OK" >
  • To install chaincode package ccpack.out generated with the subcommandpackage의 하위 명령으로 생성된 chaincode 패키지 ccpack.out을 설치하려면 :
peer chaincode install ccpack.out

.
.
.
2018-02-22 18:18:05.584 UTC [chaincodeCmd] install -> DEBU 005 Installed remotely response:<status:200 payload:"OK" >
2018-02-22 18:18:05.584 UTC [main] main -> INFO 006 Exiting.....

로그 메시지를 기반으로 설치가 성공적으로 완료되었음을 알 수 있습니다. :

2018-02-22 18:18:05.584 UTC [chaincodeCmd] install -> DEBU 005 Installed

peer chaincode instantiate

Instantiate Description

peer chaincode instantiate 명령을 통해 관리자는 피어가 구성원인 채널에서 체인 코드를 인스턴스화 할 수 있습니다.

Instantiate Syntax

peer chaincode instantiate 명령 구문은 다음과 같습니다 :

peer chaincode instantiate [flags]

Instantiate Flags

peer chaincode instantiate 명령은 다음 명령 특정 플래그가 있습니다 :

  • -C, --channelID <string> 체인 코드를 인스턴스화해야하는 채널의 이름입니다.
  • -c, --ctor <string> JSON 형식의 체인 코드 생성자 메시지 (기본값 "{}")
  • -E, --escc <string> 이 체인 코드에 사용할 Endorsement System 체인 코드의 이름 (기본값 "escc")
  • -n, --name <string> 인스턴스화되는 체인 코드의 이름입니다.
  • -P, --policy <string> 이 체인 코드와 관련된 Endorsement Policy. 기본적으로 패브릭은 "현재 채널에 있는 조직의 모든 구성원"과 동일한 Endorsement Policy을 생성합니다.
  • -v, --version <string> 인스턴스화되는 체인 코드의 버전
  • -V, --vscc <string> 이 체인 코드에 사용할 확인 시스템 체인 코드 이름 (기본값 : "vscc")

전역 peer 명령 플래그도 적용됩니다.

  • --cafile <string>
  • --certfile <string>
  • --keyfile <string>
  • -o, --orderer <string>
  • --ordererTLSHostnameOverride <string>
  • --tls
  • --transient <string>
`--orderer` 플래그를 지정하지 않으면 명령은 검색을 시도합니다.
채널을 발행하기 전에 피어로부터의 채널에 대한 orderer 정보 명령을 인스턴스화하십시오.

Instantiate Usage

다음은 peer chaincode instantiate 명령의 몇 가지 예입니다. 이 명령은 mychannel 채널에서 버전 1.0mycc라는 체인 코드를 인스턴스화합니다.

  • --tls 및 --cafile 전역(global) 플래그를 사용하여 TLS가 활성화된 네트워크의 체인 코드를 인스턴스화합니다. :
export ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
peer chaincode instantiate -o orderer.example.com:7050 --tls --cafile $ORDERER_CA -C mychannel -n mycc -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "OR ('Org1MSP.peer','Org2MSP.peer')"

2018-02-22 16:33:53.324 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2018-02-22 16:33:53.324 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
2018-02-22 16:34:08.698 UTC [main] main -> INFO 003 Exiting.....
  • 명령별 옵션만 사용하여 TLS가 비활성화된 네트워크의 체인 코드를 인스턴스화합니다. :
peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n mycc -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "OR    ('Org1MSP.peer','Org2MSP.peer')"


2018-02-22 16:34:09.324 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2018-02-22 16:34:09.324 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
2018-02-22 16:34:24.698 UTC [main] main -> INFO 003 Exiting.....

peer chaincode invoke

Invoke Description

peer chaincode invoke 명령을 사용하여 관리자는 제공된 인수를 사용하여 피어에서 체인 코드 기능을 호출 할 수 있습니다. CLI는 거래 제안서를 피어에게 전송하여 chaincode를 호출합니다. 피어는 체인 코드를 실행하고 승인된 제안 응답 (또는 오류)을 CLI에 보냅니다. 승인된 제안 응답을 받으면 CLI는 트랜잭션을 구성하여 orderer에게 보냅니다.

Invoke Syntax

peer chaincode invoke 명령 구문은 다음과 같습니다. :

peer chaincode invoke [flags]

Invoke Flags

peer chaincode invoke 명령은 다음 명령 특정 플래그가 있습니다 :

  • -C, --channelID <string> 호출되고있는 체인 코드의 이름
  • -c, --ctor <string> JSON 형식의 체인 코드 생성자 메시지 (기본값 "{}")
  • -n, --name <string> 호출되고있는 체인 코드의 이름

전역 peer명령 플래그도 적용됩니다.

  • --cafile <string>
  • --certfile <string>
  • --keyfile <string>
  • -o, --orderer <string>
  • --ordererTLSHostnameOverride <string>
  • --tls
  • --transient <string>
`--orderer` 플래그를 지정하지 않으면 명령은 검색을 시도합니다.
채널을 발행하기 전에 피어로부터의 채널에 대한 orderer 정보 명령을 호출하십시오.

Invoke Usage

다음은 채널 mychannel에서 버전 1.0mycc라는 체인코드를 호출하여 변수 a에서 변수 b까지 10 단위 이동을 요청하는 peer chaincode invoke 명령의 예입니다. :

peer chaincode invoke -o orderer.example.com:7050 -C mychannel -n mycc -c '{"Args":["invoke","a","b","10"]}'

2018-02-22 16:34:27.069 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2018-02-22 16:34:27.069 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
.
.
.
2018-02-22 16:34:27.106 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> DEBU 00a ESCC invoke result: version:1 response:<status:200 message:"OK" > payload:"\n \237mM\376? [\214\002 \332\204\035\275q\227\2132A\n\204&\2106\037W|\346#\3413\274\022Y\nE\022\024\n\004lscc\022\014\n\n\n\004mycc\022\002\010\003\022-\n\004mycc\022%\n\007\n\001a\022\002\010\003\n\007\n\001b\022\002\010\003\032\007\n\001a\032\00290\032\010\n\001b\032\003210\032\003\010\310\001\"\013\022\004mycc\032\0031.0" endorsement:<endorser:"\n\007Org1MSP\022\262\006-----BEGIN CERTIFICATE-----\nMIICLjCCAdWgAwIBAgIRAJYomxY2cqHA/fbRnH5a/bwwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMTgwMjIyMTYyODE0WhcNMjgwMjIwMTYyODE0\nWjBwMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzETMBEGA1UECxMKRmFicmljUGVlcjEfMB0GA1UEAxMWcGVl\ncjAub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDEa\nWNNniN3qOCQL89BGWfY39f5V3o1pi//7JFDHATJXtLgJhkK5KosDdHuKLYbCqvge\n46u3AC16MZyJRvKBiw6jTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAA\nMCsGA1UdIwQkMCKAIN7dJR9dimkFtkus0R5pAOlRz5SA3FB5t8Eaxl9A7lkgMAoG\nCCqGSM49BAMCA0cAMEQCIC2DAsO9QZzQmKi8OOKwcCh9Gd01YmWIN3oVmaCRr8C7\nAiAlQffq2JFlbh6OWURGOko6RckizG8oVOldZG/Xj3C8lA==\n-----END CERTIFICATE-----\n" signature:"0D\002 \022_\342\350\344\231G&\237\n\244\375\302J\220l\302\345\210\335D\250y\253P\0214:\221e\332@\002 \000\254\361\224\247\210\214L\277\370\222\213\217\301\r\341v\227\265\277\336\256^\217\336\005y*\321\023\025\367" >
2018-02-22 16:34:27.107 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 00b Chaincode invoke successful. result: status:200
2018-02-22 16:34:27.107 UTC [main] main -> INFO 00c Exiting.....

여기에서 로그 메시지를 기반으로 호출이 성공적으로 제출되었음을 알 수 있습니다. :

2018-02-22 16:34:27.107 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 00b Chaincode invoke successful. result: status:200
성공적인 응답은 거래가 ordering을 위해 제출되었음을 나타냅니다. 트랜잭션은 블록에 추가되고 마지막으로 채널의 각 피어에 의해 유효성이 검사되거나 무효화됩니다.

peer chaincode list

List Description

peer chaincode list 명령을 사용하여 관리자는 피어에 설치된 체인 코드를 나열하거나 피어가 구성원인 채널에서 인스턴스화된 체인 코드를 나열 할 수 있습니다.

List Syntax

peer chaincode list 명령 구문은 다음과 같습니다. :

peer chaincode list [--installed|--instantiated -C <channel-name>]

List Flags

peer chaincode instantiate 명령은 다음 명령 특정 플래그가 있습니다 :

  • -C, --channelID <string> 인스턴스화 된 체인 코드를 나열할 채널 이름
  • --installed 피어에 설치된 체인 코드를 나열하려면 이 플래그를 사용하십시오.
  • --instantiated 피어가 구성원인 채널에서 인스턴스화 된 체인 코드를 나열하려면 이 플래그를 사용하십시오.

List Usage

다음은 peer chaincode list 명령의 몇 가지 예입니다.

  • --installed 플래그를 사용하여 피어에 설치된 체인 코드를 나열합니다.
peer chaincode list --installed

Get installed chaincodes on peer:
Name: mycc, Version: 1.0, Path: github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02, Id: 8cc2730fdafd0b28ef734eac12b29df5fc98ad98bdb1b7e0ef96265c3d893d61
2018-02-22 17:07:13.476 UTC [main] main -> INFO 001 Exiting.....

피어가 버전 1.0mycc라는 체인 코드를 설치했음을 알 수 있습니다.

  • -C (channel ID) 플래그와 함께 --instantiated를 사용하여 채널에 인스턴스화 된 체인 코드를 나열합니다.
peer chaincode list --instantiated -C mychannel

Get instantiated chaincodes on channel mychannel:
Name: mycc, Version: 1.0, Path: github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02, Escc: escc, Vscc: vscc
2018-02-22 17:07:42.969 UTC [main] main -> INFO 001 Exiting.....

버전 1.0mycc 체인 코드가 mychannel 채널에서 인스턴스화 된 것을 확인할 수 있습니다.

peer chaincode package

Package Description

관리자는 peer chaincode package 명령을 사용하여 체인 코드 설치를 수행하는 데 필요한 자료를 패키징 할 수 있습니다. 따라서 동일한 체인 코드 패키지가 여러 피어에 일관되게 설치 될 수 있습니다.

Package Syntax

peer chaincode package 명령 구문은 다음과 같습니다. :

peer chaincode package [output-file] [flags]

Package Flags

peer chaincode package 명령은 다음 명령 특정 플래그가 있습니다 :

  • -c, --ctor <string> JSON 형식의 체인 코드 생성자 메시지 (기본값 "{}")
  • -i, --instantiate-policy <string> 체인 코드의 인스턴스화 정책. 현재 최대 1 개의 서명이 필요한 정책 (예 : "OR ( 'Org1MSP.peer', 'Org2MSP.peer')) 만 지원됩니다.
  • -l, --lang <string> 체인 코드가 쓰여진 언어 (기본 "golang")
  • -n, --name <string> 인스톨되고있는 체인 코드의 이름. 영숫자, 대시 및 밑줄로 구성 될 수 있습니다.
  • -p, --path <string> 패키징되는 체인 코드의 경로입니다. Golang (-l golang) 체인 코드의 경우 GOPATH에 상대적인 경로입니다. Node.js (-l 노드) 체인 코드의 경우 패키지 명령이 수행되는 절대 경로 또는 상대 경로입니다.
  • -s, --cc-package 원시 체인 코드 배포 사양과 함께 체인 코드 소유권 정보를 저장하는 패키지를 만듭니다 (단, 아래 참고 참조).
  • -S, --sign -s플래그 와 함께이 플래그를 지정하면 로컬 MSP를 사용하여 패키지에 소유자 보증을 추가합니다 (단, 아래 참고 참조).
  • -v, --version <string> 설치중인 체인 코드의 버전. 영숫자, 대시, 밑줄, 마침표 및 더하기 기호로 구성 될 수 있습니다.
`-s` 및 `-S` 명령의 메타 데이터는 현재 사용되지 않습니다. 이 명령들은 향후 확장을 위한 것이며 구현 변경을 겪게 될 것입니다.
그것들은 사용하지 않는 것이 좋습니다.

Package Usage

다음은 peer chaincode package 명령의 예제입니다. 이 명령은 버전 1.1에서 mycc라는 이름의 체인 코드를 패키지화하고, 체인 코드 배포 사양을 작성하고, 로컬 MSP를 사용하여 패키지에 서명하고, 이를 ccpack.out으로 출력합니다. :

peer chaincode package ccpack.out -n mycc -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -v 1.1 -s -S

.
.
.
2018-02-22 17:27:01.404 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc
2018-02-22 17:27:01.405 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc
.
.
.
2018-02-22 17:27:01.879 UTC [chaincodeCmd] chaincodePackage -> DEBU 011 Packaged chaincode into deployment spec of size <3426>, with args = [ccpack.out]
2018-02-22 17:27:01.879 UTC [main] main -> INFO 012 Exiting.....

peer chaincode query

Query Description

peer chaincode query 명령은 체인 코드의 Invoke 메소드를 호출하여 체인 코드를 쿼리 할 수 있게 합니다. queryinvoke 하위 명령의 차이점은 성공한 응답의 경우 invoke는 orderer에게 트랜잭션을 제출하도록 진행하는 반면, query는 성공 또는 기타 응답을 표준 출력으로 출력한다는 점입니다.

Query Syntax

peer chaincode query 명령 구문은 다음과 같습니다. :

peer chaincode query [flags]

Query Flags

peer chaincode query 명령은 다음 명령 특정 플래그가 있습니다 :

  • -C, --channelID <string> 체인 코드를 쿼리해야하는 채널의 이름입니다.
  • -c, --ctor <string> JSON 형식의 체인 코드 생성자 메시지 (기본값 "{}")
  • -n, --name <string> 쿼리되는 체인 코드의 이름입니다.
  • -r --raw 쿼리 값을 원시 바이트로 출력합니다 (기본값).
  • -x --hex 쿼리 값 바이트 배열을 16 진수로 출력합니다. 호환되지 않는 with -raw

전역 peer 명령 플래그도 적용됩니다.

  • --transient <string>

Query Usage

다음은 peer chaincode query 명령의 예입니다. peer 원장에 mycc라는 이름의 체인 코드가 버전 1.0에서 변수 a의 값으로 쿼리됩니다. :

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

2018-02-22 16:34:30.816 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2018-02-22 16:34:30.816 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
Query Result: 90

쿼리 결과 변수 a의 값은 90 이었음을 출력에서 확인할 수 있습니다.

peer chaincode signpackage

signpackage Description

peer chaincode signpackage 명령은 -s 및 -S 옵션을 사용하여 peer chaincode package 명령으로 작성된 체인 코드 패키지에 서명을 추가하는 데 사용됩니다.

signpackge Syntax

peer chaincode signpackage 명령 구문은 다음과 같습니다.

peer chaincode signpackage <inputpackage> <outputpackage>

signpackage Usage

다음은 기존 서명된 패키지를 허용하고 로컬 MSP의 서명이 추가된 새 서명을 작성하는 peer chaincode signpackage 명령의 예입니다.

peer chaincode signpackage ccwith1sig.pak ccwith2sig.pak
Wrote signed package to ccwith2sig.pak successfully
2018-02-24 19:32:47.189 EST [main] main -> INFO 002 Exiting.....

peer chaincode upgrade

Upgrade Description

관리자는 peer chaincode upgrade 명령을 사용하여 채널에서 인스턴스화 된 체인 코드를 최신 버전으로 업그레이드 할 수 있습니다.

Upgrade Syntax

peer chaincode upgrade 명령 구문은 다음과 같습니다. :

peer chaincode upgrade [flags]

Upgrade Flags

peer chaincode upgrade 명령은 다음 명령 특정 플래그가 있습니다 :

  • -C, --channelID <string> 체인 코드를 업그레이드해야하는 채널의 이름입니다.
  • -c, --ctor <string> JSON 형식의 체인 코드 생성자 메시지 (기본값 "{}")
  • -E, --escc <string> 이 체인 코드에 사용할 Endorsement System 체인 코드의 이름 (기본값 "escc")
  • -n, --name <string> 업그레이드되는 체인 코드의 이름
  • -P, --policy <string> 이 체인 코드와 관련된 Endorsement Policy. 기본적으로 패브릭은 "현재 채널에 있는 조직의 모든 구성원"과 동일한 Endorsement Policy을 생성합니다.
  • -v, --version <string> 업그레이드 된 체인 코드의 버전
  • -V, --vscc <string> 이 체인 코드에 사용할 확인 시스템 체인 코드 이름 (기본값 : "vscc")

전역 peer명령 플래그도 적용됩니다.

  • --cafile <string>
  • -o, --orderer <string>
  • --tls
`--orderer` 플래그를 지정하지 않으면 명령은 업그레이드 명령을 내리기 전에 피어로부터 채널에 대한 orderer 정보를 검색하려고 시도합니다.

Upgrade Usage

다음은 peer chaincode upgrade 명령의 예입니다. mychannel이라는 채널의 버전 1.0에서 mycc라는 체인 코드를 새로운 변수 c가 포함된 버전 1.1로 업그레이드합니다. :

  • TLS가 활성화된 네트워크에서 --tls 및 --cafile 전역(global) 플래그를 사용하여 체인 코드를 업그레이드합니다. :
export ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
peer chaincode upgrade -o orderer.example.com:7050 --tls --cafile $ORDERER_CA -C mychannel -n mycc -v 1.2 -c '{"Args":["init","a","100","b","200","c","300"]}' -P "OR   ('Org1MSP.peer','Org2MSP.peer')"

.
.
.
2018-02-22 18:26:31.433 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc
2018-02-22 18:26:31.434 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc
2018-02-22 18:26:31.435 UTC [chaincodeCmd] getChaincodeSpec -> DEBU 005 java chaincode enabled
2018-02-22 18:26:31.435 UTC [chaincodeCmd] upgrade -> DEBU 006 Get upgrade proposal for chaincode <name:"mycc" version:"1.1" >
.
.
.
2018-02-22 18:26:46.687 UTC [chaincodeCmd] upgrade -> DEBU 009 endorse upgrade proposal, get response <status:200 message:"OK" payload:"\n\004mycc\022\0031.1\032\004escc\"\004vscc*,\022\014\022\n\010\001\022\002\010\000\022\002\010\001\032\r\022\013\n\007Org1MSP\020\003\032\r\022\013\n\007Org2MSP\020\0032f\n \261g(^v\021\220\240\332\251\014\204V\210P\310o\231\271\036\301\022\032\205fC[|=\215\372\223\022 \311b\025?\323N\343\325\032\005\365\236\001XKj\004E\351\007\247\265fu\305j\367\331\275\253\307R\032 \014H#\014\272!#\345\306s\323\371\350\364\006.\000\356\230\353\270\263\215\217\303\256\220i^\277\305\214: \375\200zY\275\203}\375\244\205\035\340\226]l!uE\334\273\214\214\020\303\3474\360\014\234-\006\315B\031\022\010\022\006\010\001\022\002\010\000\032\r\022\013\n\007Org1MSP\020\001" >
.
.
.
2018-02-22 18:26:46.693 UTC [chaincodeCmd] upgrade -> DEBU 00c Get Signed envelope
2018-02-22 18:26:46.693 UTC [chaincodeCmd] chaincodeUpgrade -> DEBU 00d Send signed envelope to orderer
2018-02-22 18:26:46.908 UTC [main] main -> INFO 00e Exiting.....
  • 명령별 옵션만 사용하여 TLS가 비활성화된 네트워크의 체인 코드를 업그레이드합니다. :
.
.
.
2018-02-22 18:28:31.433 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc
2018-02-22 18:28:31.434 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc
2018-02-22 18:28:31.435 UTC [chaincodeCmd] getChaincodeSpec -> DEBU 005 java chaincode enabled
2018-02-22 18:28:31.435 UTC [chaincodeCmd] upgrade -> DEBU 006 Get upgrade proposal for chaincode <name:"mycc" version:"1.1" >
.
.
.
2018-02-22 18:28:46.687 UTC [chaincodeCmd] upgrade -> DEBU 009 endorse upgrade proposal, get response <status:200 message:"OK" payload:"\n\004mycc\022\0031.1\032\004escc\"\004vscc*,\022\014\022\n\010\001\022\002\010\000\022\002\010\001\032\r\022\013\n\007Org1MSP\020\003\032\r\022\013\n\007Org2MSP\020\0032f\n \261g(^v\021\220\240\332\251\014\204V\210P\310o\231\271\036\301\022\032\205fC[|=\215\372\223\022 \311b\025?\323N\343\325\032\005\365\236\001XKj\004E\351\007\247\265fu\305j\367\331\275\253\307R\032 \014H#\014\272!#\345\306s\323\371\350\364\006.\000\356\230\353\270\263\215\217\303\256\220i^\277\305\214: \375\200zY\275\203}\375\244\205\035\340\226]l!uE\334\273\214\214\020\303\3474\360\014\234-\006\315B\031\022\010\022\006\010\001\022\002\010\000\032\r\022\013\n\007Org1MSP\020\001" >
.
.
.
2018-02-22 18:28:46.693 UTC [chaincodeCmd] upgrade -> DEBU 00c Get Signed envelope
2018-02-22 18:28:46.693 UTC [chaincodeCmd] chaincodeUpgrade -> DEBU 00d Send signed envelope to orderer
2018-02-22 18:28:46.908 UTC [main] main -> INFO 00e Exiting.....



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

Hyperledger Fabric SDK

Hyperledger Fabric은 다양한 프로그래밍 언어를 지원하는 여러 SDK를 제공합니다. 

Node.js와 Java에는 공식적으로 출시 된 SDK가 두 가지 있습니다.

또한 공식적으로 아직 출시되지 않은 Python, Go 및 REST 용 SDK가 세 가지 더 있지만, 다음과 같이 다운로드하여 테스트 할 수 있습니다.


peer command


Description

이 peer 명령에는 다섯 가지 하위 부속 명령이 있습니다. 각 부속 명령은 관리자가 피어와 관련된 특정 작업 세트를 수행 할 수 있게 합니다. 예를 들어, peer channel 하위 명령을 사용하여 피어를 채널에 조인하거나 peer chaincode 명령을 사용하여 스마트 계약 체인코드를 피어에 배포할 수 있습니다 .

Syntax

peer 명령은 내부에 다섯 가지 하위 명령이 있습니다 :

peer chaincode [option] [flags]
peer channel   [option] [flags]
peer logging   [option] [flags]
peer node      [option] [flags]
peer version   [option] [flags]

각 부속 명령에는 사용 가능한 다른 옵션이 있으며 이것들은 전용 주제로 설명됩니다. 간결함을 위해, 우리는 단순히 명령 (peer), 하위 명령 (channel), 또는 하위 명령 옵션(fetch)을 명령으로 참조하기도 합니다.

하위 명령을 옵션없이 지정하면 아래의 --help 플래그에 설명된대로 상위 수준의 도움말 텍스트가 반환 됩니다.

Flags

각 peer 하위 명령에는 연관된 특정 플래그 세트가 있으며, 그 중 많은 플래그는 모든 하위 명령 옵션에서 사용될 수 있기 때문에 글로벌(global) 로 지정 됩니다. 이 플래그는 관련 peer 하위 명령으로 설명됩니다 .

최상위 레벨 peer 명령에는 다음과 같은 플래그가 있습니다.

  • --help 모든 peer 명령에 대한 간략한 도움말 텍스트를 얻는 데--help 플래그를 사용하십시오. --help 플래그는 매우 유용합니다 - 명령 도움말, 하위 명령에 도움, 심지어 옵션의 도움을 받을 수 있습니다. 예를 들어
peer --help
peer channel --help
peer channel list --help

자세한 내용은 개별 peer 하위 명령을 참조하십시오 .

  • --logging-level <string> 이 플래그는 시작할 때 피어의 로깅 수준을 설정합니다. <string>에는 여섯 개의 가능한 값이 있습니다 : debuginfonoticewarningerror, 그리고 critical. logging-level이 명시적으로 지정되지 않은 경우, CORE_LOGGING_LEVEL 환경 변수가 설정되면 이를 사용합니다. CORE_LOGGING_LEVEL이 설정되지 않은 경우에는 sampleconfig/core.yaml 파일을 사용하여 피어에 대한 로깅 수준을 결정합니다. peer logging getlevel <component-name>을 실행하여 피어의 특정 구성 요소에 대한 현재 로깅 수준을 찾을 수 있습니다 .
  • --version 이 플래그를 사용하여 피어가 어떻게 작성되었는지에 대한 자세한 정보를 표시하십시오. 이 플래그는 peer 하위 명령 또는 하위 옵션에 적용 할 수 없습니다.

Usage

다음은 peer 명령에서 사용 가능한 여러 플래그를 사용하는 몇 가지 예제 입니다.

  • peer channel join 명령에 --help 플래그 사용.
peer channel join --help

Joins the peer to a channel.

Usage:
  peer channel join [flags]

Flags:
  -b, --blockpath string   Path to file containing genesis block

Global Flags:
      --cafile string                       Path to file containing PEM-encoded trusted certificate(s) for the ordering endpoint
      --certfile string                     Path to file containing PEM-encoded X509 public key to use for mutual TLS communication with the orderer endpoint
      --clientauth                          Use mutual TLS when communicating with the orderer endpoint
      --keyfile string                      Path to file containing PEM-encoded private key to use for mutual TLS communication with the orderer endpoint
      --logging-level string                Default logging level and overrides, see core.yaml for full syntax
  -o, --orderer string                      Ordering service endpoint
      --ordererTLSHostnameOverride string   The hostname override to use when validating the TLS connection to the orderer.
      --tls                                 Use TLS when communicating with the orderer endpoint
  -v, --version                             Display current version of fabric peer server

여기에는 peer channel join 명령에 대한 간략한 도움말 구문이 표시됩니다.

  • peer 명령에 --version 플래그 사용.
peer --version

peer:
 Version: 1.1.0-alpha
 Go version: go1.9.2
 OS/Arch: linux/amd64
 Experimental features: false
 Chaincode:
  Base Image Version: 0.4.5
  Base Docker Namespace: hyperledger
  Base Docker Label: org.hyperledger.fabric
  Docker Namespace: hyperledger

이것은 이 피어가 GOLANG 1.9.2.로 컴파일된 Hyperledger Fabric version 1.1.0의 알파를 사용하여 제작되었음을 보여줍니다. AMD64 호환 명령 세트가 있는 Linux 운영체제에서 사용할 수 있습니다.



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

API 문서

Hyperledger Fabric의 Golang API에 대한 문서는 godoc 사이트에서 찾을 수 있습니다 Fabric .

이러한 API를 사용하여 개발을 계획하고 있다면 지금 해당 링크를 북마크하세요.

바이너리 및 고정 이미지 설치

Hyperledger Fabric 바이너리 용 실제 설치 프로그램을 개발하는 동안 플랫폼 고유 바이너리를 시스템에 다운로드하는 스크립트를 제공합니다.

스크립트는 Docker 이미지를 로컬 레지스트리에 다운로드합니다.

+ Recent posts