我一直在研究fabcar示例,并在没有发生任何更改的情况下使其完美运行。我想做的是更新fabcar.go代码以添加更多字段,并仅使用示例进行操作,但是我的docker映像未使用正确的代码进行更新。

要安装链码,请在cli容器上运行以下命令: >
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli peer chaincode install -n fabcar -v 1.0 -p github.com/fabcar


但是,在代码/执行更新之后(实际上我已经将它从Car更改为Ticket对象,具有全新的字段,并更新了所有相关的链式命令以进行反映),拆卸,然后重新启动,我仍然看到所有旧字段。

我在这里想念什么?

这是“ Invoke”功能上的更改为票据的代码的一个片段。智能合约功能名称。”调用以下命令时:

./../chaincode/:/opt/gopath/src/github.com/


评论

当您说“拆解,然后重新启动”时,您是什么意思?

teardown的意思是使用basic-network / teardown.sh删除docker镜像,该镜像仅“删除”所有容器。 start的意思是,在我进行更改后,仅调用start.sh bash脚本即可备份容器。

您是否已修改合同的其余部分,即定义了“ QuesryAllTickets”功能的位置?

是的,它们都已被编辑,并且不再具有用于汽车的任何代码,我只是将其切换以将票证称为资产

@ farhan3拆卸文件是主要关闭所有容器的文件。

#1 楼

我会建议两种可能的方法:


使用新名称或递增版本安装链码

同名,但更新版本:

peer chaincode install -n fabcar -v 2.0 -p github.com/fabcar


或具有相同版本,但新名称为:

peer chaincode install -n tickets -v 1.0 -p github.com/fabcar



清理旧的链式代码容器并安装备用链式代码的更新版本再次。

您可以使用以下命令删除旧的链式代码容器映像:

docker images | grep fabcar | awk '{print }' | docker rmi


评论


啊,你是对的。由于他没有增加版本或更改ID,因此Fabric仍在使用旧的Chaincode图像。

–farhan3
17年8月8日在19:39

谢谢,这清除了这一点。我只是在杀死容器而不删除图像。很大的帮助!

–克里斯·弗里克(Chris Fricke)
17年8月8日19:50