繁体   English   中英

Hyperledger“智能合约”可以在状态下有多个集合吗?

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

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

  • 对于选民(网络应用程序的用户,不应具有任何特定证书)
  • 选举(例如“附近最佳餐厅的选举”),
  • 对于候选人,
  • 投票本身(例如比尔投票给“老鲍勃三明治”)
  • 等等。

我在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)

请参阅 - 有带有issuer参数的buy方法,但没有issuer集合,也没有owners集合。 应用程序中的任何地方也没有“货币余额”状态。

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

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

每个事务的密钥必须是唯一的。为该密钥维护状态。 您可以使用富查询从状态中获取数据。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM