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