我已经使用 Hyperledger Fabric 框架部署了区块链网络。我的链码工作正常。当在组织(我们称之为 org1)的对等节点 cli 上调用方法时,我需要传递此对等节点的 ca.crt 以及另一个组织中认可对等节点的 ca.crt(我们称之为组织2)。
我手动将 ca.cart 从背书对等节点组织复制到交易对等节点组织的 cli 路径 /tmp/example2-net-ca.crt 中。我用这个命令调用合约:
peer chaincode invoke -o orderer1.example1-net:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/orderer/tls/orderer.crt --channelID example1-channel --name example-chaincode -c '{"Function":"ExampleMethod", "Args":["example_param_1", "example_param_2"]}' --peerAddresses peer0.example1-net:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/crypto/admin/msp/cacerts/ca.crt --peerAddresses peer0.example2-net:7051 --tlsRootCertFiles /tmp/example2-net-ca.crt
此调用有效,并且据了解,交易的完成需要背书节点的秘密。
但是,当我使用 Hyperledger Fabric 应用程序 v2.5 网关时,我只为 org1 中的交易对等节点指定机密。这些秘密包括对等节点的 ca.crt 以及用户的密钥库和签名证书。在我的代码中,我没有为 org2 的背书对等节点指定秘密,但交易仍然有效。应用程序网关在哪里以及如何获取这些机密,或者应用程序不需要它们,为什么?另一方面,我如何使用
peer invoke
命令来模拟应用程序如何调用事务?
谢谢你。
本页中描述的旧版客户端 SDK 和 Fabric Gateway 客户端 API 之间执行事务流的差异可能有助于解释行为差异。 Fabric peer
CLI 命令的行为方式与旧版客户端 SDK 相同 - 它直接连接到每个认可对等点,而使用 Fabric Gateway 客户端 API 的应用程序仅连接到网关对等点,然后网关对等点连接到代表客户认可同行。与对等点的连接使用 HTTPS / TLS,因此需要签署每个组织对等点 TLS 证书的颁发机构的 CA 证书来验证连接是否安全。网关对等方拥有其本地分类帐中可用的所有 CA 证书,因为它们记录在通道配置中。