所以我想知道我的设置是否存在某些缺陷,或者我没有得到链码容器生命周期的概念。
问题如下。在通道上安装/实例化链代码后,我必须通过docker cli对链代码进行查询/调用,然后才能从nodejs后端与相应的已注册对等节点进行相同的操作。
因此,当我观看docker日志时,直到我从docker cli发出调用后,chaincode容器才处于活动状态。这是故意的吗?还是错过了要设置的东西?为我澄清这个问题或发布一些文档很酷。
答案 0 :(得分:0)
那是正常的,为什么会这样,是因为实例化的结构仅在实例化它的对等方上旋转了链代码的docker容器。因此,当您尝试通过其他对等方调用或查询chaincode时,它需要先启动容器,然后再执行查询。
另一种方法是将通道中所有认可对等体实例化为目标链代码,以确保在调用或查询之前通道中的所有对等体都具有容器。
如果您使用的是go-sdk,则可通过withTargets() or withTargetEndpoints()
完成:
peers = ["peer1.org1.example.com","peer1.org2.example.com"]
req := InstantiateCCRequest{Name: "name", Version: "version", Path: "path", Policy: ccPolicy}
, err := rc.InstantiateCC("mychannel", req, WithTargets(peers...))
在cli调用中使用了类似的逻辑,一个链式实例化代码的人给出了(寻找NOTICE --->
,我已在其中标记了必需的标志):
Deploy the specified chaincode to the network.
Usage:
peer chaincode instantiate [flags]
Flags:
-C, --channelID string The channel on which this command should be executed
--collections-config string The fully qualified path to the collection JSON file including the file name
--connectionProfile string Connection profile that provides the necessary connection information for the network. Note: currently only supported for providing peer connection information
-c, --ctor string Constructor message for the chaincode in JSON format (default "{}")
-E, --escc string The name of the endorsement system chaincode to be used for this chaincode
-h, --help help for instantiate
-l, --lang string Language the chaincode is written in (default "golang")
-n, --name string Name of the chaincode
"NOTICE--->" --peerAddresses stringArray The addresses of the peers to connect to
-P, --policy string The endorsement policy associated to this chaincode
--tlsRootCertFiles stringArray If TLS is enabled, the paths to the TLS root cert files of the peers to connect to. The order and number of certs specified should match the --peerAddresses flag
-v, --version string Version of the chaincode specified in install/instantiate/upgrade commands
-V, --vscc string The name of the verification system chaincode to be used for this chaincode
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
--connTimeout duration Timeout for client to connect (default 3s)
--keyfile string Path to file containing PEM-encoded private key to use for mutual TLS communication with the orderer endpoint
-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
--transient string Transient map of arguments in JSON encoding```