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

Is it possible to update or alter smart contract (chaincode) deployed in Hyperledger network

是否可以更新或更改部署在 Hyperledger 网络中的智能合约(链码)?即我已经部署了一个智能合约,块是用交易创建的,一段时间后,我想更改链码,是否可以这样做。

基本上我们无法为某个频道更新已安装的链码,但我们可以使用链码版本来区分更新的链码和旧的链码(我们升级 Chaincode for Operators - upgrade).
要使用新更新的链代码,我们必须安装新版本的更新链代码(此处示例版本 1 之前是版本 0),链代码名称与旧链代码名称相同同行:

peer chaincode install -p chaincodedev/chaincode/sacc -n mycc -v 1

查看上面命令中的 -v 标签,其中 版本 1-n 标签带有链码名称。

然后升级通道上的链码:

peer chaincode upgrade -n mycc -v 1 -c '{"Args":["a","10"]}' -C myc

在上面的命令中再次查看 -v 标签 version 1-n 带有链代码名称的标签和 -C 带有通道名称的标签它在其上被实例化。

因此,一旦安装并升级了链码,它就会保留在通道中,我们可以通过升级它们来使用更新的更新链码。当我们在对等节点上调用链代码时,它将调用安装在通道上的最新链代码。
例如:

peer chaincode invoke -n mycc -c '{"Args":["set", "a", "20"]}' -C myc

参考文献:
1):对等链码升级示例(https://hyperledger-fabric.readthedocs.io/en/release-1.2/commands/peerchaincode.html#peer-chaincode-upgrade-example

既然你用 Hyperledger Composer 标记了你的问题,我会在之前的回答中补充说,使用 composer 你可以使用这些命令实现相同的升级:

composer network install -c PeerAdmin@hlfv1 -a my-network@0.0.2.bna

composer network upgrade -c PeerAdmin@hlfv1 -n my-network -V 0.0.2

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