客户端要往 Fabric 网络中发送请求,首先需要知道网络的相关信息,如网络中成员组织信息、背书节点的地址、链码安装信息等。
在 Fabric v1.2.0 版本之前,这些信息需要调用者手动指定,容易出错;另外,当网络中信息变更后(如节点上下线)还需要再次更新。
为了解决这些问题,社区自 v1.2.0 版本开始在 Peer 节点上提供 Discovery gRPC 服务,并编写了 discover 客户端工具(入口位于 discovery/cmd),查询 Discovery 服务获取指定信息(如通道内的邻居节点、可对某链码进行背书的节点组)。
主要功能
discover 工具目前提供如下查询功能:
●节点信息,使用 peers 子命令查询通道内各节点的 MSP ID、服务地址和证书等信息。
●通道配置,使用 config 子命令查询通道的配置信息,包括通道内成员组织的身份信息、排序服务信息等。
●链码背书信息,使用 endorsers 子命令查询对某个链码可以进行背书的节点信息。命令使用格式为:discover [全局参数]< 子命令 >[子命令参数列表]。注意,节点信息和链码背书信息查询功能在默认情况下只支持组织管理员,如果希望普通成员也可以查询,需要开启 Peer 配置 peer.discovery.orgMembersAllowedAccess=true。
usage: discover [<flags>] <command> [<args> ...]Command line client for fabric discovery serviceFlags:--help Show context-sensitive help (also try --help-long and --help-man).--configFile=CONFIGFILE Specifies the config file to load the configuration from--peerTLSCA=PEERTLSCA Sets the TLS CA certificate file path that verifies the TLS peer's certificate--tlsCert=TLSCERT (Optional) Sets the client TLS certificate file path that is used when the peer enforces client authentication--tlsKey=TLSKEY (Optional) Sets the client TLS key file path that is used when the peer enforces client authentication--userKey=USERKEY Sets the user's key file path that is used to sign messages sent to the peer--userCert=USERCERT Sets the user's certificate file path that is used to authenticate the messages sent to the peer--MSP=MSP Sets the MSP ID of the user, which represents the CA(s) that issued its user certificateCommands:help [<command>...]Show help.peers [<flags>]Discover peersconfig [<flags>]Discover channel configendorsers [<flags>]Discover chaincode endorserssaveConfigSave the config passed by flags into the file specified by --configFile
全局参数
discover 支持的全局参数和相关说明如下:
●--help,输出帮助信息。
●--configFile=CONFIGFILE,指定从配置文件中载入参数配置,无须从命令行指定参数。
●--peerTLSCA=PEERTLSCA,指定校验 Peer 端 TLS 的 CA 证书。
●--tlsCert=TLSCERT,指定客户端使用的 TLS 证书(可选,当 Peer 校验客户端 TLS 时)。
●--tlsKey=TLSKEY,指定客户端使用的 TLS 私钥(可选,当 Peer 校验客户端 TLS 时)。
●--userKey=USERKEY,客户端签名私钥。
●--userCert=USERCERT,客户端签名证书。
●--MSP=MSP,指定客户端的 MSP ID。
peers 子命令
显示通道中的 Peer 节点信息,包括它们的 MSP ID、gRPC 服务监听地址和身份证书。
例如,通过 peer0.org1.example.com 节点查询 businesschannel 通道内的 Peer 节点信息:
discover peers --channel businesschannel --peerTLSCA /etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem --userKey /etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin\@org1.example.com/msp/keystore/priv_sk --userCert /etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin\@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem --MSP Org1MSP --tlsCert /etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin\@org1.example.com/tls/client.crt --tlsKey /etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin\@org1.example.com/tls/client.key --server peer0.org1.example.com:7051
结果如下:
[{"MSPID": "Org1MSP","LedgerHeight": 9,"Endpoint": "peer0.org1.example.com:7051","Identity": "-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIRAIc6sjio0hnYI+sBuebcN9gwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwMjE3MTAzMDAwWhcNMzIwMjE1MTAzMDAw\nWjBqMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzENMAsGA1UECxMEcGVlcjEfMB0GA1UEAxMWcGVlcjAub3Jn\nMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEHhWvyNC5Pp\noJmF9pZzdVkKrLcjhS3ePhEIW/53NrnqZUB5QT6NRvo+rxqpIxAjMMZTTg2OewJd\ng/crbYls2GyjTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAIGk9e22kEiVLy3ReWOlHBJklL9JCedP2QWQP/12fsPLuMAoGCCqGSM49\nBAMCA0cAMEQCICVqogpr/tI+sNTy8EYbkuuek4gw5Y/bNNI5cTZJpefKAiB8Zr2o\nx1r62J3DV5qmF2jEAVRV8duwliiAkKW4q1xcNA==\n-----END CERTIFICATE-----\n","Chaincodes": ["hyperledger-fabric-contract-java-demo","_lifecycle"]},{"MSPID": "Org1MSP","LedgerHeight": 9,"Endpoint": "peer1.org1.example.com:8051","Identity": "-----BEGIN CERTIFICATE-----\nMIICKDCCAc6gAwIBAgIQYSi1/xYV9ghavadHl49VMDAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMS5leGFtcGxlLmNvbTAeFw0yMjAyMTcxMDMwMDBaFw0zMjAyMTUxMDMwMDBa\nMGoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ0wCwYDVQQLEwRwZWVyMR8wHQYDVQQDExZwZWVyMS5vcmcx\nLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEp42mYDwJKY11\nntYoyWAwXtIyJiWH/9EB93jVPsFALzicKbibE1vSZlGl1mkb7M5wYCtfai11Bqqz\nUFEz7e+DsqNNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0j\nBCQwIoAgaT17baQSJUvLdF5Y6UcEmSUv0kJ50/ZBZA//XZ+w8u4wCgYIKoZIzj0E\nAwIDSAAwRQIhAP+WvJIfhdpG/zkc1GrlTwZOppc0JZL9Nl0MfhJ4TMpiAiAfJ8kF\njJeEYOonkKeZcRG77WoeB/+32BCUJNsSIwYyKA==\n-----END CERTIFICATE-----\n","Chaincodes": ["hyperledger-fabric-contract-java-demo","_lifecycle"]},{"MSPID": "Org2MSP","LedgerHeight": 9,"Endpoint": "peer0.org2.example.com:7051","Identity": "-----BEGIN CERTIFICATE-----\nMIICKTCCAc+gAwIBAgIRAJnk+wcTIbag0SNs4f2TAeIwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwMjE3MTAzMDAwWhcNMzIwMjE1MTAzMDAw\nWjBqMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzENMAsGA1UECxMEcGVlcjEfMB0GA1UEAxMWcGVlcjAub3Jn\nMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKtm2wfuhEqm\nht8CqbV1CKAe7YRAao5ySPMCCswpXuX3Amw65L0pFLELhhFHvqoTmwTZOLNHeHCl\nJoDQgoM5DUyjTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAINRek9OkgUPYeL4655/hNDSGXlXS/7qqtIzG+9yf2LG2MAoGCCqGSM49\nBAMCA0gAMEUCIQCB9+ASmx0BgYaN30Zeq+z3Gtj/q1yqrae2bD0dJspbMwIgcAFC\nx9CQ52jYET7PbIqJOGPksb8amAPUAJXBOIxVJ7U=\n-----END CERTIFICATE-----\n","Chaincodes": ["hyperledger-fabric-contract-java-demo","_lifecycle"]},{"MSPID": "Org2MSP","LedgerHeight": 9,"Endpoint": "peer1.org2.example.com:8051","Identity": "-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIRAMV4swH5jaaH+rQ13cBAzcwwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwMjE3MTAzMDAwWhcNMzIwMjE1MTAzMDAw\nWjBqMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzENMAsGA1UECxMEcGVlcjEfMB0GA1UEAxMWcGVlcjEub3Jn\nMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJQ2FIGAqO2J\ngR9LzplbIGt2OXCHklyoQzl/o8OubrAy0hc88KqCFJQeH9gynDDrZM8eSyrlNWTO\nf6ZXcoMMRbejTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAINRek9OkgUPYeL4655/hNDSGXlXS/7qqtIzG+9yf2LG2MAoGCCqGSM49\nBAMCA0cAMEQCICAY5hjEBFmhjJgOPNZx7oJIh5YlhPPMPuVnofwXR4ZCAiAVnOzZ\nGzUNe7WFYhT4L2l7xLPl51FjigMoLYjG2Jt+ng==\n-----END CERTIFICATE-----\n","Chaincodes": ["hyperledger-fabric-contract-java-demo","_lifecycle"]}
]
config 子命令
显示网络中的通道配置信息,包括各个组织的 MSP 信息和排序节点信息。
例如,通过 peer0.org1.example.com 节点查询 businesschannel 通道内的配置信息,可以执行如下命令:
discover config --channel businesschannel --peerTLSCA /etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem --userKey /etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin\@org1.example.com/msp/keystore/priv_sk --userCert /etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin\@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem --MSP Org1MSP --tlsCert /etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin\@org1.example.com/tls/client.crt --tlsKey /etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin\@org1.example.com/tls/client.key --server peer0.org1.example.com:7051
结果将显示通道内的各个 MSP 的信息和排序服务信息:
{"msps": {"OrdererMSP": {"name": "OrdererMSP","root_certs": ["LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQVENDQWVTZ0F3SUJBZ0lSQU53NEdYbDlIMmE0S2hKdzM4TzlhWHd3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakF5TVRjeE1ETXdNREJhRncwek1qQXlNVFV4TURNd01EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUzdMSWppODVNTVVscGo0bTd6ZW1RZU9TS2EKTnBFWHA3bEF1R3Ryb3ZSMUIwMTVBRzZ4aTFCcCtCRVJNUjZTZXpVV2pGRDlKWHJqWHVJRXc0R0o5YjZZbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlJSlJGclVMcnQxdk5GQmJORG5OR2RZSkNGSmEKMkdVK0VLbVpEd1ZkVzBLNU1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lCdnZ6ekhtVW5aUExiWStNYWdDcGhGOApINjJRcnpmSkxnTHZXQmFaaW5LeEFpQlZxQkZWMVBValFoS09RbEVnbzcxeE1HVXlLNHEvbHAwNGF2empXVjY0CmRRPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo="],"crypto_config": {"signature_hash_family": "SHA2","identity_identifier_hash_function": "SHA256"},"tls_root_certs": ["LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNSRENDQWVxZ0F3SUJBZ0lSQUs4eXNvYjliUmNJRGJyVjJVZjdFTDh3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBeU1UY3hNRE13TURCYUZ3MHpNakF5TVRVeE1ETXdNREJhTUd3eEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SUXdFZ1lEVlFRS0V3dGxlR0Z0Y0d4bExtTnZiVEVhTUJnR0ExVUVBeE1SZEd4elkyRXVaWGhoCmJYQnNaUzVqYjIwd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFSSlRjKzArcU9RNjU2WkEwanoKVEZWNnRVSkloaWJJbjhxekY5dzduNlpOZkMvaUVjUGI5NmJaMFA2UTZjWGw4SGpySG1qOG9BOVhVUW9LNVc3UgpBU0NlbzIwd2F6QU9CZ05WSFE4QkFmOEVCQU1DQWFZd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3SUdDQ3NHCkFRVUZCd01CTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3S1FZRFZSME9CQ0lFSU5iQ0ZOcy9wUXRQSllZU1RvYkYKRjdnTThIa0o5SFhlL3dGeXFMbHh1YU1yTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFDMG9Pdjh6YU95T1JYTApzVFp2VnFUclIrNzBvcTVzRGZNNHNsSStyTE5nM0FJZ01SZjRpUFY2MDFwa2E3ZnpUOUdpTHZmN0hsUWRDZnhDClN3ZC9xRFh4ZElVPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg=="],"fabric_node_ous": {"enable": true,"client_ou_identifier": {"certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQVENDQWVTZ0F3SUJBZ0lSQU53NEdYbDlIMmE0S2hKdzM4TzlhWHd3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakF5TVRjeE1ETXdNREJhRncwek1qQXlNVFV4TURNd01EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUzdMSWppODVNTVVscGo0bTd6ZW1RZU9TS2EKTnBFWHA3bEF1R3Ryb3ZSMUIwMTVBRzZ4aTFCcCtCRVJNUjZTZXpVV2pGRDlKWHJqWHVJRXc0R0o5YjZZbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlJSlJGclVMcnQxdk5GQmJORG5OR2RZSkNGSmEKMkdVK0VLbVpEd1ZkVzBLNU1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lCdnZ6ekhtVW5aUExiWStNYWdDcGhGOApINjJRcnpmSkxnTHZXQmFaaW5LeEFpQlZxQkZWMVBValFoS09RbEVnbzcxeE1HVXlLNHEvbHAwNGF2empXVjY0CmRRPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=","organizational_unit_identifier": "client"},"peer_ou_identifier": {"certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQVENDQWVTZ0F3SUJBZ0lSQU53NEdYbDlIMmE0S2hKdzM4TzlhWHd3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakF5TVRjeE1ETXdNREJhRncwek1qQXlNVFV4TURNd01EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUzdMSWppODVNTVVscGo0bTd6ZW1RZU9TS2EKTnBFWHA3bEF1R3Ryb3ZSMUIwMTVBRzZ4aTFCcCtCRVJNUjZTZXpVV2pGRDlKWHJqWHVJRXc0R0o5YjZZbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlJSlJGclVMcnQxdk5GQmJORG5OR2RZSkNGSmEKMkdVK0VLbVpEd1ZkVzBLNU1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lCdnZ6ekhtVW5aUExiWStNYWdDcGhGOApINjJRcnpmSkxnTHZXQmFaaW5LeEFpQlZxQkZWMVBValFoS09RbEVnbzcxeE1HVXlLNHEvbHAwNGF2empXVjY0CmRRPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=","organizational_unit_identifier": "peer"},"admin_ou_identifier": {"certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQVENDQWVTZ0F3SUJBZ0lSQU53NEdYbDlIMmE0S2hKdzM4TzlhWHd3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakF5TVRjeE1ETXdNREJhRncwek1qQXlNVFV4TURNd01EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUzdMSWppODVNTVVscGo0bTd6ZW1RZU9TS2EKTnBFWHA3bEF1R3Ryb3ZSMUIwMTVBRzZ4aTFCcCtCRVJNUjZTZXpVV2pGRDlKWHJqWHVJRXc0R0o5YjZZbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlJSlJGclVMcnQxdk5GQmJORG5OR2RZSkNGSmEKMkdVK0VLbVpEd1ZkVzBLNU1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lCdnZ6ekhtVW5aUExiWStNYWdDcGhGOApINjJRcnpmSkxnTHZXQmFaaW5LeEFpQlZxQkZWMVBValFoS09RbEVnbzcxeE1HVXlLNHEvbHAwNGF2empXVjY0CmRRPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=","organizational_unit_identifier": "admin"},"orderer_ou_identifier": {"certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQVENDQWVTZ0F3SUJBZ0lSQU53NEdYbDlIMmE0S2hKdzM4TzlhWHd3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakF5TVRjeE1ETXdNREJhRncwek1qQXlNVFV4TURNd01EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUzdMSWppODVNTVVscGo0bTd6ZW1RZU9TS2EKTnBFWHA3bEF1R3Ryb3ZSMUIwMTVBRzZ4aTFCcCtCRVJNUjZTZXpVV2pGRDlKWHJqWHVJRXc0R0o5YjZZbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlJSlJGclVMcnQxdk5GQmJORG5OR2RZSkNGSmEKMkdVK0VLbVpEd1ZkVzBLNU1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lCdnZ6ekhtVW5aUExiWStNYWdDcGhGOApINjJRcnpmSkxnTHZXQmFaaW5LeEFpQlZxQkZWMVBValFoS09RbEVnbzcxeE1HVXlLNHEvbHAwNGF2empXVjY0CmRRPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=","organizational_unit_identifier": "orderer"}}},"Org1MSP": {"name": "Org1MSP","root_certs": ["LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVekNDQWZpZ0F3SUJBZ0lSQU9wamxIMFRsLzlteXYrSWZzRGVSSnN3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3TWpFM01UQXpNREF3V2hjTk16SXdNakUxTVRBek1EQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkVoVGc2cFRtZ214QnExM0VvRmx5SGozeWd5em9ydWZQb1J3MjlXUVdUNFluMFhTZnNmT1RUZHZRKzJlRThxSgo5WHNVenFmKzVkc2Y4dDF4SFpmR2wxU2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKYVQxN2JhUVNKVXZMZEY1WTZVY0VtU1V2MGtKNTAvWkJaQS8vWFordzh1NHdDZ1lJS29aSXpqMEVBd0lEU1FBdwpSZ0loQU5lRzUzL3hxMHZHTXpaaVVwWG9RZGwySGZFeU9pVXl3bG43c3AvY0hTOGxBaUVBa3dWN09GckhOTnZECkJUT2szVnVneWxwcytOdWxXTGpOU0hXWTB2NTZaZDA9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K"],"crypto_config": {"signature_hash_family": "SHA2","identity_identifier_hash_function": "SHA256"},"tls_root_certs": ["LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNWekNDQWYyZ0F3SUJBZ0lRTGUwVEFISlZGaW0zUXB0OGJQSUhFREFLQmdncWhrak9QUVFEQWpCMk1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWZNQjBHQTFVRUF4TVdkR3h6ClkyRXViM0puTVM1bGVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBeU1UY3hNRE13TURCYUZ3MHpNakF5TVRVeE1ETXcKTURCYU1IWXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSApFdzFUWVc0Z1JuSmhibU5wYzJOdk1Sa3dGd1lEVlFRS0V4QnZjbWN4TG1WNFlXMXdiR1V1WTI5dE1SOHdIUVlEClZRUURFeFowYkhOallTNXZjbWN4TG1WNFlXMXdiR1V1WTI5dE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMEQKQVFjRFFnQUV0OWg1T3VpZlVZekdyN21YcnFSQUJMRDVXTWVJQnUzKzlCcFJsOUhtbnRaSnR1a2JpS0IwbDdkdApvcTROYmVHM1NSRmNvUDFodlI5L1NuZjF2Ny81LzZOdE1Hc3dEZ1lEVlIwUEFRSC9CQVFEQWdHbU1CMEdBMVVkCkpRUVdNQlFHQ0NzR0FRVUZCd01DQmdnckJnRUZCUWNEQVRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUNrR0ExVWQKRGdRaUJDQjhXckdseUQydUVuZmJjcW50SnBxUzFDTXZ5aHRUYlFpOUVYb0ZIdFBkUnpBS0JnZ3Foa2pPUFFRRApBZ05JQURCRkFpRUFvZzVPY29jVGs1eGFmU2hmMjAzUzJSU2JXNm1xZldhWXZFWC80RjdEUnlBQ0lDaExueHNTCjZPMGJJZm1BbUVQaERFV0E4TTM2M1RkbWpQQTBCbCtXb2lwTQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg=="],"fabric_node_ous": {"enable": true,"client_ou_identifier": {"certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVekNDQWZpZ0F3SUJBZ0lSQU9wamxIMFRsLzlteXYrSWZzRGVSSnN3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3TWpFM01UQXpNREF3V2hjTk16SXdNakUxTVRBek1EQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkVoVGc2cFRtZ214QnExM0VvRmx5SGozeWd5em9ydWZQb1J3MjlXUVdUNFluMFhTZnNmT1RUZHZRKzJlRThxSgo5WHNVenFmKzVkc2Y4dDF4SFpmR2wxU2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKYVQxN2JhUVNKVXZMZEY1WTZVY0VtU1V2MGtKNTAvWkJaQS8vWFordzh1NHdDZ1lJS29aSXpqMEVBd0lEU1FBdwpSZ0loQU5lRzUzL3hxMHZHTXpaaVVwWG9RZGwySGZFeU9pVXl3bG43c3AvY0hTOGxBaUVBa3dWN09GckhOTnZECkJUT2szVnVneWxwcytOdWxXTGpOU0hXWTB2NTZaZDA9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K","organizational_unit_identifier": "client"},"peer_ou_identifier": {"certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVekNDQWZpZ0F3SUJBZ0lSQU9wamxIMFRsLzlteXYrSWZzRGVSSnN3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3TWpFM01UQXpNREF3V2hjTk16SXdNakUxTVRBek1EQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkVoVGc2cFRtZ214QnExM0VvRmx5SGozeWd5em9ydWZQb1J3MjlXUVdUNFluMFhTZnNmT1RUZHZRKzJlRThxSgo5WHNVenFmKzVkc2Y4dDF4SFpmR2wxU2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKYVQxN2JhUVNKVXZMZEY1WTZVY0VtU1V2MGtKNTAvWkJaQS8vWFordzh1NHdDZ1lJS29aSXpqMEVBd0lEU1FBdwpSZ0loQU5lRzUzL3hxMHZHTXpaaVVwWG9RZGwySGZFeU9pVXl3bG43c3AvY0hTOGxBaUVBa3dWN09GckhOTnZECkJUT2szVnVneWxwcytOdWxXTGpOU0hXWTB2NTZaZDA9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K","organizational_unit_identifier": "peer"},"admin_ou_identifier": {"certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVekNDQWZpZ0F3SUJBZ0lSQU9wamxIMFRsLzlteXYrSWZzRGVSSnN3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3TWpFM01UQXpNREF3V2hjTk16SXdNakUxTVRBek1EQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkVoVGc2cFRtZ214QnExM0VvRmx5SGozeWd5em9ydWZQb1J3MjlXUVdUNFluMFhTZnNmT1RUZHZRKzJlRThxSgo5WHNVenFmKzVkc2Y4dDF4SFpmR2wxU2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKYVQxN2JhUVNKVXZMZEY1WTZVY0VtU1V2MGtKNTAvWkJaQS8vWFordzh1NHdDZ1lJS29aSXpqMEVBd0lEU1FBdwpSZ0loQU5lRzUzL3hxMHZHTXpaaVVwWG9RZGwySGZFeU9pVXl3bG43c3AvY0hTOGxBaUVBa3dWN09GckhOTnZECkJUT2szVnVneWxwcytOdWxXTGpOU0hXWTB2NTZaZDA9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K","organizational_unit_identifier": "admin"},"orderer_ou_identifier": {"certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVekNDQWZpZ0F3SUJBZ0lSQU9wamxIMFRsLzlteXYrSWZzRGVSSnN3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3TWpFM01UQXpNREF3V2hjTk16SXdNakUxTVRBek1EQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkVoVGc2cFRtZ214QnExM0VvRmx5SGozeWd5em9ydWZQb1J3MjlXUVdUNFluMFhTZnNmT1RUZHZRKzJlRThxSgo5WHNVenFmKzVkc2Y4dDF4SFpmR2wxU2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKYVQxN2JhUVNKVXZMZEY1WTZVY0VtU1V2MGtKNTAvWkJaQS8vWFordzh1NHdDZ1lJS29aSXpqMEVBd0lEU1FBdwpSZ0loQU5lRzUzL3hxMHZHTXpaaVVwWG9RZGwySGZFeU9pVXl3bG43c3AvY0hTOGxBaUVBa3dWN09GckhOTnZECkJUT2szVnVneWxwcytOdWxXTGpOU0hXWTB2NTZaZDA9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K","organizational_unit_identifier": "orderer"}}},"Org2MSP": {"name": "Org2MSP","root_certs": ["LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVVENDQWZlZ0F3SUJBZ0lRWDhHQkcvWDg0V29LdmtOeUNaZnU5ekFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NaTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakF5TVRjeE1ETXdNREJhRncwek1qQXlNVFV4TURNd01EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3lMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKRWs1RnpVQTFYYmtKZk5jRnJQSUxvLytKejhMSXdhcFM3U2FneUhBQ0ZhQTRuK0djcVk0Q3d0SDg3WnRmQnNMYgpvaUh5THVDam8reDhnNnAyREN5MXNxTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDRFUKWHBQVHBJRkQySGkrT3VlZjRUUTBobDVWMHYrNnFyU014dnZjbjlpeHRqQUtCZ2dxaGtqT1BRUURBZ05JQURCRgpBaUVBNVo5Z0tqODFKVHg2U0wzR2hYWm12V0FtYTIzclE1OUpHTXRBR0IyQURjd0NJRlFoM3JCOGdkM0ZKM0hnCkdSVEgwakZlTGtGMURHdEdRRWJ0Vys2ektMZVUKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo="],"crypto_config": {"signature_hash_family": "SHA2","identity_identifier_hash_function": "SHA256"},"tls_root_certs": ["LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNWekNDQWYyZ0F3SUJBZ0lRUityNWtGYnF6WUR2cFhJNzFPd0JYVEFLQmdncWhrak9QUVFEQWpCMk1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWZNQjBHQTFVRUF4TVdkR3h6ClkyRXViM0puTWk1bGVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBeU1UY3hNRE13TURCYUZ3MHpNakF5TVRVeE1ETXcKTURCYU1IWXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSApFdzFUWVc0Z1JuSmhibU5wYzJOdk1Sa3dGd1lEVlFRS0V4QnZjbWN5TG1WNFlXMXdiR1V1WTI5dE1SOHdIUVlEClZRUURFeFowYkhOallTNXZjbWN5TG1WNFlXMXdiR1V1WTI5dE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMEQKQVFjRFFnQUVUWlBZRkxmSUJMUUFkcDVmZ0NxSnZ3SjMyeDY5OG1LWEhibEY2cUR4bFVvMG5GUnRmbkhTU2NLZQplNXdmREtlM0pHS3pWek1RSDJQUlFTSVVHRGVKNWFOdE1Hc3dEZ1lEVlIwUEFRSC9CQVFEQWdHbU1CMEdBMVVkCkpRUVdNQlFHQ0NzR0FRVUZCd01DQmdnckJnRUZCUWNEQVRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUNrR0ExVWQKRGdRaUJDQm5CN25MTy9yczNHeWpQM09KaXAvYks3OHBDMURjSWtVQUg5T29IWjM4V1RBS0JnZ3Foa2pPUFFRRApBZ05JQURCRkFpQTQwUWNNYzlTdGZONnVVcFhhdGJQWUpyV21TekErdmdVS3MyS1hxQTNxa3dJaEFLeGh4UGVICkhicXRRK2x0bUFHT3JxUTd1RHM5Q0NtWS9WVFNDYmg4Z2E4RAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg=="],"fabric_node_ous": {"enable": true,"client_ou_identifier": {"certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVVENDQWZlZ0F3SUJBZ0lRWDhHQkcvWDg0V29LdmtOeUNaZnU5ekFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NaTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakF5TVRjeE1ETXdNREJhRncwek1qQXlNVFV4TURNd01EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3lMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKRWs1RnpVQTFYYmtKZk5jRnJQSUxvLytKejhMSXdhcFM3U2FneUhBQ0ZhQTRuK0djcVk0Q3d0SDg3WnRmQnNMYgpvaUh5THVDam8reDhnNnAyREN5MXNxTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDRFUKWHBQVHBJRkQySGkrT3VlZjRUUTBobDVWMHYrNnFyU014dnZjbjlpeHRqQUtCZ2dxaGtqT1BRUURBZ05JQURCRgpBaUVBNVo5Z0tqODFKVHg2U0wzR2hYWm12V0FtYTIzclE1OUpHTXRBR0IyQURjd0NJRlFoM3JCOGdkM0ZKM0hnCkdSVEgwakZlTGtGMURHdEdRRWJ0Vys2ektMZVUKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=","organizational_unit_identifier": "client"},"peer_ou_identifier": {"certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVVENDQWZlZ0F3SUJBZ0lRWDhHQkcvWDg0V29LdmtOeUNaZnU5ekFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NaTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakF5TVRjeE1ETXdNREJhRncwek1qQXlNVFV4TURNd01EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3lMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKRWs1RnpVQTFYYmtKZk5jRnJQSUxvLytKejhMSXdhcFM3U2FneUhBQ0ZhQTRuK0djcVk0Q3d0SDg3WnRmQnNMYgpvaUh5THVDam8reDhnNnAyREN5MXNxTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDRFUKWHBQVHBJRkQySGkrT3VlZjRUUTBobDVWMHYrNnFyU014dnZjbjlpeHRqQUtCZ2dxaGtqT1BRUURBZ05JQURCRgpBaUVBNVo5Z0tqODFKVHg2U0wzR2hYWm12V0FtYTIzclE1OUpHTXRBR0IyQURjd0NJRlFoM3JCOGdkM0ZKM0hnCkdSVEgwakZlTGtGMURHdEdRRWJ0Vys2ektMZVUKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=","organizational_unit_identifier": "peer"},"admin_ou_identifier": {"certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVVENDQWZlZ0F3SUJBZ0lRWDhHQkcvWDg0V29LdmtOeUNaZnU5ekFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NaTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakF5TVRjeE1ETXdNREJhRncwek1qQXlNVFV4TURNd01EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3lMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKRWs1RnpVQTFYYmtKZk5jRnJQSUxvLytKejhMSXdhcFM3U2FneUhBQ0ZhQTRuK0djcVk0Q3d0SDg3WnRmQnNMYgpvaUh5THVDam8reDhnNnAyREN5MXNxTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDRFUKWHBQVHBJRkQySGkrT3VlZjRUUTBobDVWMHYrNnFyU014dnZjbjlpeHRqQUtCZ2dxaGtqT1BRUURBZ05JQURCRgpBaUVBNVo5Z0tqODFKVHg2U0wzR2hYWm12V0FtYTIzclE1OUpHTXRBR0IyQURjd0NJRlFoM3JCOGdkM0ZKM0hnCkdSVEgwakZlTGtGMURHdEdRRWJ0Vys2ektMZVUKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=","organizational_unit_identifier": "admin"},"orderer_ou_identifier": {"certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVVENDQWZlZ0F3SUJBZ0lRWDhHQkcvWDg0V29LdmtOeUNaZnU5ekFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NaTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakF5TVRjeE1ETXdNREJhRncwek1qQXlNVFV4TURNd01EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3lMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKRWs1RnpVQTFYYmtKZk5jRnJQSUxvLytKejhMSXdhcFM3U2FneUhBQ0ZhQTRuK0djcVk0Q3d0SDg3WnRmQnNMYgpvaUh5THVDam8reDhnNnAyREN5MXNxTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDRFUKWHBQVHBJRkQySGkrT3VlZjRUUTBobDVWMHYrNnFyU014dnZjbjlpeHRqQUtCZ2dxaGtqT1BRUURBZ05JQURCRgpBaUVBNVo5Z0tqODFKVHg2U0wzR2hYWm12V0FtYTIzclE1OUpHTXRBR0IyQURjd0NJRlFoM3JCOGdkM0ZKM0hnCkdSVEgwakZlTGtGMURHdEdRRWJ0Vys2ektMZVUKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=","organizational_unit_identifier": "orderer"}}}},"orderers": {"OrdererMSP": {"endpoint": [{"host": "orderer0.example.com","port": 7050},{"host": "orderer1.example.com","port": 8050},{"host": "orderer2.example.com","port": 9050}]}}
}
endorsers 子命令
显示网络中的背书节点信息,包括它们的 MSP ID、账本高度、服务地址和身份证书等。
discover --configFile discover_config.yaml endorsers --channel businesschannel --chaincode hyperledger-fabric-contract-java-demo --server peer0.org1.example.com:7051
结果如下:
[{"Chaincode": "hyperledger-fabric-contract-java-demo","EndorsersByGroups": {"G0": [{"MSPID": "Org1MSP","LedgerHeight": 9,"Endpoint": "peer1.org1.example.com:8051","Identity": "-----BEGIN CERTIFICATE-----\nMIICKDCCAc6gAwIBAgIQYSi1/xYV9ghavadHl49VMDAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMS5leGFtcGxlLmNvbTAeFw0yMjAyMTcxMDMwMDBaFw0zMjAyMTUxMDMwMDBa\nMGoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ0wCwYDVQQLEwRwZWVyMR8wHQYDVQQDExZwZWVyMS5vcmcx\nLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEp42mYDwJKY11\nntYoyWAwXtIyJiWH/9EB93jVPsFALzicKbibE1vSZlGl1mkb7M5wYCtfai11Bqqz\nUFEz7e+DsqNNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0j\nBCQwIoAgaT17baQSJUvLdF5Y6UcEmSUv0kJ50/ZBZA//XZ+w8u4wCgYIKoZIzj0E\nAwIDSAAwRQIhAP+WvJIfhdpG/zkc1GrlTwZOppc0JZL9Nl0MfhJ4TMpiAiAfJ8kF\njJeEYOonkKeZcRG77WoeB/+32BCUJNsSIwYyKA==\n-----END CERTIFICATE-----\n"},{"MSPID": "Org1MSP","LedgerHeight": 9,"Endpoint": "peer0.org1.example.com:7051","Identity": "-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIRAIc6sjio0hnYI+sBuebcN9gwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwMjE3MTAzMDAwWhcNMzIwMjE1MTAzMDAw\nWjBqMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzENMAsGA1UECxMEcGVlcjEfMB0GA1UEAxMWcGVlcjAub3Jn\nMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEHhWvyNC5Pp\noJmF9pZzdVkKrLcjhS3ePhEIW/53NrnqZUB5QT6NRvo+rxqpIxAjMMZTTg2OewJd\ng/crbYls2GyjTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAIGk9e22kEiVLy3ReWOlHBJklL9JCedP2QWQP/12fsPLuMAoGCCqGSM49\nBAMCA0cAMEQCICVqogpr/tI+sNTy8EYbkuuek4gw5Y/bNNI5cTZJpefKAiB8Zr2o\nx1r62J3DV5qmF2jEAVRV8duwliiAkKW4q1xcNA==\n-----END CERTIFICATE-----\n"}],"G1": [{"MSPID": "Org2MSP","LedgerHeight": 9,"Endpoint": "peer0.org2.example.com:7051","Identity": "-----BEGIN CERTIFICATE-----\nMIICKTCCAc+gAwIBAgIRAJnk+wcTIbag0SNs4f2TAeIwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwMjE3MTAzMDAwWhcNMzIwMjE1MTAzMDAw\nWjBqMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzENMAsGA1UECxMEcGVlcjEfMB0GA1UEAxMWcGVlcjAub3Jn\nMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKtm2wfuhEqm\nht8CqbV1CKAe7YRAao5ySPMCCswpXuX3Amw65L0pFLELhhFHvqoTmwTZOLNHeHCl\nJoDQgoM5DUyjTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAINRek9OkgUPYeL4655/hNDSGXlXS/7qqtIzG+9yf2LG2MAoGCCqGSM49\nBAMCA0gAMEUCIQCB9+ASmx0BgYaN30Zeq+z3Gtj/q1yqrae2bD0dJspbMwIgcAFC\nx9CQ52jYET7PbIqJOGPksb8amAPUAJXBOIxVJ7U=\n-----END CERTIFICATE-----\n"},{"MSPID": "Org2MSP","LedgerHeight": 9,"Endpoint": "peer1.org2.example.com:8051","Identity": "-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIRAMV4swH5jaaH+rQ13cBAzcwwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwMjE3MTAzMDAwWhcNMzIwMjE1MTAzMDAw\nWjBqMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzENMAsGA1UECxMEcGVlcjEfMB0GA1UEAxMWcGVlcjEub3Jn\nMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJQ2FIGAqO2J\ngR9LzplbIGt2OXCHklyoQzl/o8OubrAy0hc88KqCFJQeH9gynDDrZM8eSyrlNWTO\nf6ZXcoMMRbejTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAINRek9OkgUPYeL4655/hNDSGXlXS/7qqtIzG+9yf2LG2MAoGCCqGSM49\nBAMCA0cAMEQCICAY5hjEBFmhjJgOPNZx7oJIh5YlhPPMPuVnofwXR4ZCAiAVnOzZ\nGzUNe7WFYhT4L2l7xLPl51FjigMoLYjG2Jt+ng==\n-----END CERTIFICATE-----\n"}]},"Layouts": [{"quantities_by_group": {"G0": 1,"G1": 1}}]}
]
saveConfig 子命令
该命令并不与 Peer 节点打交道,它将由参数指定的变量信息保存为本地文件。这样用户在执行后续命令时可以指定该文件,而无须再指定各个参数值。需要通过 --conf igFile=CONFIGFILE 来指定所存放的参数信息文件路径。例如,保存指定的参数信息到本地的 discover_config.yaml 文件,可以执行如下命令:
discover saveConfig --configFile discover_config.yaml --peerTLSCA /etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem --userKey /etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin\@org1.example.com/msp/keystore/priv_sk --userCert /etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin\@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem --MSP Org1MSP --tlsCert /etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin\@org1.example.com/tls/client.crt --tlsKey /etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin\@org1.example.com/tls/client.key
discover_config.yaml
文件:
version: 0
tlsconfig:certpath: /etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/client.crtkeypath: /etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/client.keypeercacertpath: /etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pemtimeout: 0s
signerconfig:mspid: Org1MSPidentitypath: /etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pemkeypath: /etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/priv_sk
有了这个参数文件,当再使用同样的参数时就无须手动指定,直接使用 --configFile discover_config.yaml 即可。当然,用户也可以手动编写参数文件,但直接使用 saveConfig 命令自动生成将更加方便、高效。
fabrichyperledgerz3jns
© 著作权归作者所有
举报