Hyperledger“智能合约”可以在该州拥有多个集合吗?

时间:2019-06-25 12:14:27

标签: node.js hyperledger-fabric hyperledger

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

  • 对于选民(网络应用程序的用户,应该没有任何特定的证书)
  • 进行选举(例如“选举周围最佳餐厅”)
  • 对于候选人,
  • 投票本身(例如,比尔为“老鲍伯三明治”投票)

我在https://hyperledger-fabric.readthedocs.io看了很多文章 并且它们总是显示出有很多商业文件汽车可以购买和发行的情况。 我已经看到允许“私有集合”,但是我不需要数据是私有的。 我还看到了一些渠道(但渠道又一次使不同的用户与不同的分类帐进行交互)

示例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集合。应用程序中的任何地方也没有“货币余额”状态。

我想看一下处理不同类型数据(汽车/客户/商店)的应用程序。

1 个答案:

答案 0 :(得分:1)

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

每个交易的键必须是唯一的,并保持该键的状态。 您可以使用丰富的查询从状态中获取数据。

您可以在链码中定义具有其属性(集合)的任何资产(例如汽车,书籍等),并将其也存储(主要以json格式)。 前提是密钥是唯一的。 您可以检查fabcar或marbles02链码是否相同,可以在fabric-samples / chaincode中找到它。 如果我错过了任何内容,请回复评论。