Q:合约升级后,旧合约是否可以调用?
A:合约调用一般需要:合约名称+版本,假设我们有mycc的两个版本合约:mycc+v1以及mycc+v2,v2为升级后的版本,当我们调用v1版本mycc合约时,能正常执行,但是此时结果并非执行mycc+v1返回的,而是执行mycc+v2返回的,实际上我们执行mycc+x(任意版本,可以是一个已经安装或未曾安装的合约版本)都会执行v2版本的mycc合约,所以得出结论:执行合约mycc+x,会调用最新升级的mycc合约(具体还是得看源码)。
Q:合约升级后,旧合约是否可以删除,删除后是否还可以调用?
A:合约升级后,旧合约可以删除,可以通过删除对于节点的链码容器 以及节点本地保存的链码(位于 /var/hyperledger/production/chaincodes)来删除旧合约。旧合约删除后,有上述mycc+x可知,调用此版本的合约实际上调用的是最新升级的mycc合约
135

被折叠的 条评论
为什么被折叠?



