首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Build Your First Network示例将背书策略从OR切换为AND后,不会更新余额

Build Your First Network示例将背书策略从OR切换为AND后,不会更新余额
EN

Stack Overflow用户
提问于 2018-02-16 04:23:13
回答 1查看 509关注 0票数 0

我正在尝试将fabric链码背书策略从OR更改为AND。当背书策略为OR时,一切正常,余额也会更新。在我将背书策略切换到和并重新创建所有容器后,余额不再更新。在peer0 org1容器中,我看到以下警告和错误。在peer0 org2容器中也发现了类似的错误。

代码语言:javascript
复制
2018-02-15 20:08:11.778 UTC [vscc] Invoke -> WARN 8d4 Endorsement policy failure for transaction txid=2742f25b173374674c6f9796fe11d8ad37bc52fe332ffa420fa04a272b67d927, err: Failed to authenticate policy
2018-02-15 20:08:11.779 UTC [txvalidator] VSCCValidateTxForCC -> ERRO 8de VSCC check failed for transaction txid=2742f25b173374674c6f9796fe11d8ad37bc52fe332ffa420fa04a272b67d927, error VSCC error: policy evaluation failed, err Failed to authenticate policy
2018-02-15 20:08:11.779 UTC [txvalidator] validateTx -> ERRO 8e2 VSCCValidateTx for transaction txId = 2742f25b173374674c6f9796fe11d8ad37bc52fe332ffa420fa04a272b67d927 returned error VSCC error: policy evaluation failed, err Failed to authenticate policy
2018-02-15 20:08:11.780 UTC [valimpl] preprocessProtoBlock -> WARN 8ea Block [4] Transaction index [0] marked as invalid by committer. Reason code [10]

我唯一更改的是对等链代码实例化命令的策略部分:-P“-P(‘Org1MSP.ember’,'Org2MSP.member')”

是否需要更改其他配置或命令?谢谢!

cd到first-network目录并执行以下命令:

代码语言:javascript
复制
../../bin/cryptogen generate --config=./crypto-config.yaml
export FABRIC_CFG_PATH=$PWD
../../bin/configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block
export CHANNEL_NAME=mychannel  && ../../bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID $CHANNEL_NAME
../../bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSP
../../bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org2MSP
docker-compose -f docker-compose-cli.yaml -f docker-compose-couch.yaml up -d

进入cli容器并执行以下命令:

代码语言:javascript
复制
docker exec -it cli bash
export CHANNEL_NAME=mychannel
echo $CHANNEL_NAME
peer channel create -o orderer.example.com:7050 -c $CHANNEL_NAME -f ./channel-artifacts/channel.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
peer channel join -b mychannel.block
CORE_PEER_ADDRESS=peer0.org2.example.com:7051 CORE_PEER_LOCALMSPID="Org2MSP" CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.crt CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.key CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt CHANNEL_NAME=mychannel peer channel join -b mychannel.block
peer channel update -o orderer.example.com:7050 -c $CHANNEL_NAME -f ./channel-artifacts/Org1MSPanchors.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
CORE_PEER_ADDRESS=peer0.org2.example.com:7051 CORE_PEER_LOCALMSPID="Org2MSP" CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.crt CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.key CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt CHANNEL_NAME=mychannel peer channel update -o orderer.example.com:7050 -c $CHANNEL_NAME -f ./channel-artifacts/Org2MSPanchors.tx --tls --cafile /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 install -n mycc -v 1.0 -p github.com/chaincode/chaincode_example02/go/
CORE_PEER_ADDRESS=peer0.org2.example.com:7051 CORE_PEER_LOCALMSPID="Org2MSP" CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.crt CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.key CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt CHANNEL_NAME=mychannel peer chaincode install -n mycc -v 1.0 -p github.com/chaincode/chaincode_example02/go/
peer chaincode instantiate -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n mycc -v 1.0 -c '{"Args":["init","a", "100", "b","200"]}' -P "AND ('Org1MSP.member','Org2MSP.member')"
peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'  #this shows 100 as expected
peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","b"]}'  #this shows 200 as expected
peer chaincode invoke -o orderer.example.com:7050  --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem  -C $CHANNEL_NAME -n mycc -c '{"Args":["invoke","a","b","10"]}'
peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'  #this still shows 100 and is not changed.
peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","b"]}'  #this still shows 200 and is not changed.
EN

回答 1

Stack Overflow用户

发布于 2018-02-16 05:05:20

这是有意义的,因为对等CLI (对等链码*、对等通道*等)二进制只能收集来自单个对等体的背书。

当您定义CORE_PEER_ADDRESS时,它基本上告诉对等CLI,它应该联系哪个对等。

一个背书政策有一个和,显然需要一个以上的同级,所以这就是交易失败的原因……

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48815652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档