在 Fabric 2.0 中使用 Fabric Node SDK 1.4.x

Using Fabric Node SDK 1.4.x with Fabric 2.0

我们刚刚迁移到 Fabric 2.0,我们所有的组件(对等节点、排序节点、二进制文件)都在 v2.0.0。

我们的 Fabric Node SDK 仍然是 v1.4.8,它的大部分功能都在工作,例如

createChannel, updateChannel, installChaincode etc.

但是,当我尝试使用 Channel.sendInstantiateProposal 时,出现错误

"Channel <channel_name> has been migrated to the new lifecycle. LSCC is now read only".

我知道这可能是 SDK 和 Fabric 组件之间的不匹配,但是,除了升级到 Fabric Node SDK 2.0 之外,还有什么方法可以让它工作吗?

用于调出网络的 configtx.yaml 文件有 capabilities all set to V2.0:true。注释表明 V2.0 功能是非向后兼容的,所以我假设我不能将它们设置为 V1.4 并且仍然可以使用 Fabric 2.0 组件。

谢谢

official documentation 似乎证实了您的假设,即当涉及到新功能时,SDK 不一定向前兼容,例如新的链码生命周期(参见蓝色 'Note' 框)。

在这种情况下,v1.4 SDK 与 v2 兼容,但 v2 中的新链代码架构没有将链代码实例化作为其生命周期的一部分。相反,它使用 official documentation 中定义的新的四步流程。这就是为什么 v1.4 SDK 在您调用 Channel.sendInstantiateProposal() 的那一行失败的原因。 SDK 工作正常,但新的链代码生命周期不支持该操作。

至于解决方案,不幸的是,在 v2 SDK 中无法执行管理任务,您必须使用 Peer CLI 进行此类操作。