我正在尝试从用户处进行交易,但是当我尝试获取频道时,我收到此错误:
微服务日志:
error: [DiscoveryService]: send[mychannel] - Channel:mychannel received discovery error:failed constructing descriptor for chaincodes:<name:"mychannel" >
createTransaction Error: Cannot do transaction in blockchain: DiscoveryService: mychannel error: failed constructing descriptor for chaincodes:<name:"mychannel" >
at FabricRepository.<anonymous> (/app/microservice/dist/services/blockchain-client.js:235:23)
at Generator.throw (<anonymous>)
at rejected (/app/microservice/dist/services/blockchain-client.js:6:65)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
POST /fabric-service/createTransaction 997.103
同行日志:
2020-10-20 20:23:54.218 UTC [discovery.endorsement] func1 -> DEBU d98 Endpoint: peer0.org2.com:7052, InternalEndpoint: , PKI-ID: 82f87b1ae00364c30ce6293dd804af5f81462b137b8e4d151580b9fcafa9b4c9, Metadata: satisfies principal principal:"\n\013Org2MSP\020\003"
2020-10-20 20:23:54.218 UTC [discovery.endorsement] func1 -> DEBU d99 Endpoint: peer0.org2.com:7052, InternalEndpoint: , PKI-ID: 82f87b1ae00364c30ce6293dd804af5f81462b137b8e4d151580b9fcafa9b4c9, Metadata: doesn't satisfy principal principal:"\n\007Org2MSP\020\003" : the identity is a member of a different MSP (expected Org1MSP, got Org2MSP)
2020-10-20 20:23:54.218 UTC [discovery] chaincodeQuery -> ERRO d9a Failed constructing descriptor for chaincode chaincodes:<name:"mychannel" > ,: no peer combination can satisfy the endorsement policy
Configtx:
mychannel:
Consortium: MyConsortium
<<: *ChannelDefaults
Application:
<<: *ApplicationDefaults
Organizations:
- *Org1
- *Org2
Capabilities:
<<: *ApplicationCapabilities
总的来说,如果我从 org1 对等点执行相同的事务,我会在对等点上收到类似的错误,两者都失败。如果我从联盟中删除一个组织,它会在该组织中工作,但当两者都在那里时则不会
知道如何解决这个问题吗?
通常,如果交易中使用的链代码名称与将链代码部署到网络中时使用的名称不匹配,则会出现此错误。
有时,如果 Chaincode 未实例化或未在通道中定义,则会发生这种情况。最好检查 Docker 容器以了解此错误背后的原因,并确保链代码名称相同(注意大小写) 如果您正在运行 FB 测试网络,您可以使用
./monitordocker.sh fabric_test
第二个主要原因是锚定同伴不好或缺乏。特别是如果它是一个多组织网络。如果您可以成功地在对等点上执行查询,但在使用结构网关时遇到问题,这可能是原因,这意味着发现服务无法正常工作。您可以使用
进行检查discover --configFile conf.yaml endorsers --channel mychannel --server peer0.org0.tmpa.ma:7051 --chaincode mycc
所以问题在于为组织创建锚点的脚本,错误通过 bash 泄漏。为两个组织添加锚点后,问题就解决了,我可以进行交易。
问题可能来自configtx.yaml,你必须正确放置所有“MSPDir”,当你发出命令时,你必须根据该“MSPDir”设置环境变量。