每个资产在Fabric中都有自己的链码吗?

时间:2018-01-14 09:17:45

标签: blockchain hyperledger-fabric

Chaincode for Developers tutorial仅使用一个链码。

我也知道multiple chaincode is supported,上述教程使用名为SimpleAsset的链码。

是否意味着期望1个资产拥有1个链码?如果我的应用程序涉及多种资产类型(例如小部件和小工具),那么最佳做法是使用单独的链代码来管理每种资产类型的生命周期吗?还是单个链码?

2 个答案:

答案 0 :(得分:4)

有一件事需要牢记。一旦您要在单个chaincode命名空间内维护所有资产,您需要能够以某种方式区分不同类型的资产,这样您就可以在给定ID的情况下搜索特定类型的资产。这基本上最终将迫使您扩展文档模型以包含类型信息或将该知识合并到密钥中,从而更容易区分资产/文档类型。

现在,考虑到这一点,这在某种意义上与将资产管理分成单独的链代码具有相同的效果。此外,拆分管理或维护不同类型的资产与不同的字符将有助于更好地分离关注点,这通常是更好的设计实践。

做小型PoC或在平台上玩游戏将一切都放在一个链码中是很有意义的,同时长期讲话并记住你最终需要支持自己的链码代码库,我建议只要有意义就拆分链码,我认为管理几个资产是一个很好的选择。

答案 1 :(得分:3)

可以使用一个链代码来管理多个资产。关于如何将资产映射到链码没有固定的规则,但我发现有用的一些指导原则是:

  • 如果资产紧密耦合,我更愿意使用单个链码来管理它们,特别是如果一个资产的生命周期取决于另一个资产的生命周期。

  • 如果您希望特定资产的逻辑和生命周期发生变化,那么最好将其隔离在自己的链代码中。我们的想法是将很少将其行为改变的资产与需要不时更改其链码的资产分开。

  • 尽量保持链码较小。这个主要是个人偏好,但也与前一点有关。

  • 如果您拥有少量资产并且逻辑不太多,那么拥有单个链码可能是有意义的。

希望你觉得这很有用。