Hyperledger fabric 是否可以更新或更改Hyperledger网络中部署的智能合约(链码)

Hyperledger fabric 是否可以更新或更改Hyperledger网络中部署的智能合约(链码),hyperledger-fabric,blockchain,hyperledger,hyperledger-composer,Hyperledger Fabric,Blockchain,Hyperledger,Hyperledger Composer,是否可以更新或更改Hyperledger网络中部署的智能合约(链码)?i、 e.我已经部署了智能合约,区块是用事务创建的,过了一段时间后,我想更改链码,可以这样做吗。基本上,我们无法为某个频道更新已安装的链码,但我们可以使用链码版本来区分更新的链码和旧的链码(我们确实进行了升级。 要使用新的更新的链码,我们必须安装新版本的更新的链码(这里是示例版本1,它以前是版本0),链码名称与对等计算机上的旧链码名称相同: peer chaincode install -p chaincodedev/chai

是否可以更新或更改Hyperledger网络中部署的智能合约(链码)?i、 e.我已经部署了智能合约,区块是用事务创建的,过了一段时间后,我想更改链码,可以这样做吗。

基本上,我们无法为某个频道更新已安装的链码,但我们可以使用链码版本来区分更新的链码和旧的链码(我们确实进行了升级。
要使用新的更新的链码,我们必须安装新版本的更新的链码(这里是示例版本1,它以前是版本0),链码名称与对等计算机上的旧链码名称相同:

peer chaincode install -p chaincodedev/chaincode/sacc -n mycc -v 1
请参见上面命令中带有版本1
-v
标记和带有chaincode name的
-n
标记

然后升级频道上的链码:

peer chaincode upgrade -n mycc -v 1 -c '{"Args":["a","10"]}' -C myc
使用版本1
-n
带有chaincode name的标签和
-C
带有频道名称的标签,在上面的命令中再次查看
-v
标签,该标签在其上实例化

因此,一旦安装并升级了链码,它将保留在频道上,我们可以通过升级来使用更新的链码。当我们在对等机上调用链码时,它将调用安装在频道上的最新链码。
e、 g:

参考文献

1) :对等链码升级示例()

由于您使用Hyperledger Composer标记了您的问题,我将在前面的回答中添加一句话,即使用Composer,您可以通过以下命令实现相同的升级:

composer网络安装-cPeerAdmin@hlfv1-我的-network@0.0.2.bna

composer网络升级-cPeerAdmin@hlfv1-n我的网络-V 0.0.2


要升级到网络的v0.0.2(链码)。

谢谢或您的回复安装新链码后,您无需再次调用
实例化
。您只需要运行
对等链码安装
对等链码升级
命令(
Init()
方法在链码升级期间也被调用,这就是为什么升级时必须小心避免重设状态的原因)
peer chaincode invoke -n mycc -c '{"Args":["set", "a", "20"]}' -C myc