Hyperledger Fabric 1.4:我们如何定义资产?

问题描述 投票:0回答:2

以前我在Hyperledger Composer上开发了我的应用程序。现在我正在尝试将应用程序迁移到Hyperledger Fabric 1.4。

我给出了Fabric 1.4文档which you can find here的商业论文教程。一切正常。

现在我想根据我的应用程序定制它,并希望定义更多资产。

他们在商业票据/组织/ digibank / contract / lib上有一个文件paper.js,这是“纸质”资产的定义吗?

如果我需要定义其他资产,我是否也在同一位置创建文件myasset.js然后调用智能合约?

或者有更好的方法来定义资产吗?

PS:我正在尝试将Hyperledger composer中的资源映射到Hyperledger fabric 1.4。

另外,您如何定义资产与参与者或其他资产之间的关系?在Composer中我们曾经使用 - >来定义关系,我们如何实现fabric-1.4相同的东西?

hyperledger-fabric blockchain hyperledger-composer
2个回答
1
投票

由于您已经自己回答了这个问题,我只想添加您自己答案的用户标识部分。

值得一提的是CID Lib。有了这个和AttributeBasedAccessControl的概念,你可以在链上管理对查询/调用的访问。

希望有助于并为您的答案增加更多见解:)


0
投票

我相信我找到了自己的问题的答案,我希望这可以帮助处于类似情况的任何人(从Hyperledger Composer迁移到Fabric 1.4)

ctx.stub.putState(key, data); 

我们只是使用上面的代码来添加资产。在fabcar示例中可以找到非常简化的版本。

async createCar(ctx, carNumber, make, model, color, owner) {
    console.info('============= START : Create Car ===========');

    const car = {
        color,
        docType: 'car',
        make,
        model,
        owner,
    };

    await ctx.stub.putState(carNumber, Buffer.from(JSON.stringify(car)));
    console.info('============= END : Create Car ===========');
}

我们在这里添加一辆汽车,这是一项资产。

在商业纸张示例中,他们使用面向对象的方法完成了这项工作。使用paper.js,他们只需创建一个“纸质”对象(纸类扩展状态类。状态类具有制作和拆分键的方法,稍后将使用),然后将其传递给“paperlist”,然后使用定义的方法在statelist.js(paperlist类扩展statelist类,它具有将状态写入分类帐的所有方法),使用以下代码创建此资产

 async addState(state) {
    let key = this.ctx.stub.createCompositeKey(this.name, state.getSplitKey());
    let data = State.serialize(state);
    await this.ctx.stub.putState(key, data);
}

在这里,您可以观察到密钥是使用状态类生成的,该类是由纸类继承的。

关于关系的最后一个问题,我还没有找到具体的答案,但我相信你可以通过传递参与者ID或资产ID来实现这一点(例如:用户由userId标识,所以我们只是通过了userId)在数据对象中。

事后看来,这个问题看起来很愚蠢,但我希望它可以帮助一些人。

请随时纠正我对Hyperledger示例的理解。我在这里学习:)

© www.soinside.com 2019 - 2024. All rights reserved.