Hyperledger "Smart Contract" 可以在该州拥有多个集合吗?

Can Hyperledger "Smart Contract" have multiple collections at the state?

我正在尝试了解超级账本状态的使用方式。 我想开发一个用于投票的简单区块链网络。 据我了解,区块链扮演着应用程序的 'database' 角色。 我以前的所有经验都告诉我要构建一个包含多个 集合 (或表)的数据库:

我在https://hyperledger-fabric.readthedocs.io阅读了很多文章 而且他们总是显示有很多商业票据汽车可以购买和发行的情况。 我已经看到允许 "private collections",但我不需要数据是私有的。 我还看到有渠道(但渠道,同样,让不同的用户与不同的分类账互动)

来自示例的代码 repo:

class CommercialPaperContext extends Context {
  constructor() {
    super();
      // All papers are held in a list of papers
      this.paperList = new PaperList(this);
  }
}
...
class CommercialPaperContract extends Contract {
  createContext() {
    return new CommercialPaperContext();
  }
...
  async buy(ctx, issuer, paperNumber, currentOwner, newOwner, price, purchaseDateTime)

看到 - 有 buy 方法和 issuer 参数,但没有 issuer 集合,也没有 owners 集合。应用程序中的任何地方也没有 'money balance' 状态。

我想看看处理不同类型数据 (Cars/Customers/Shops) 的应用程序。

在 Hyperledger fabric 中,数据存储为键值对。

密钥必须是唯一的,因为每个 transaction.State 都为该密钥维护。 您可以使用丰富的查询从状态中获取数据。

您可以在链代码中定义任何资产,如汽车、书籍等及其属性(集合),并将其存储起来,主要以 json 格式。 前提是密钥是唯一的。 你可以检查 fabcar 或 marbles02 链代码是否相同,你会在 fabric-samples/chaincode 中找到它。 如果我遗漏了什么,请回复评论。