有没有办法将链码的不同方面(即世界状态,键,其他属性?)从一个链码复制到另一个链码?我正在尝试这一点,但我可以预见一个场景,我需要更改一些代码和&部署。
部署基本上会创建一个具有自己状态的新链代码。假设我想从以前的链代码访问密钥。我是否需要跟踪结构中以前的所有链码?有没有办法将所有密钥合并到新部署的链代码中?
答案 0 :(得分:1)
Fabric 1.0中有两项功能可以帮助您。
1)Chaincode upgrade。假设第一个链代码是版本1.如果您的新链代码具有相同的名称,但您只是递增版本号,那么在实例化时,新的链代码将继承第一个链代码的完整状态。第一个链码将不再可以调用。
2)Chaincode到链代码调用。第二个链码可以使用InvokeChaincode() API调用第一个链码。 这可以在实例化时在新链代码的Init()函数中完成,以从第一链代码读取所有相关状态并在第二链代码中创建相关状态。或者,第二个链代码可以在传统调用期间根据需要调用第一个链代码,以引用或复制特定事务所需的任何状态。
当然,要使用解决方案#2,您需要在第一个链代码上提供正确的查询功能。如果您没有这些,那么您可以使用组合解决方案。首先,使用解决方案#1升级第一个链代码以添加所需的正确查询函数,然后使用解决方案#2从您的全新链代码调用这些新的查询函数。