以前,我在 Hyperledger Composer 上开发了我的应用程序。现在我正在尝试将应用程序迁移到 Hyperledger Fabric 1.4。
我根据 Fabric 1.4 文档实现了 Commercial-Paper 教程,您可以在此处找到。一切正常。
现在我想根据我的应用程序定制它并想定义更多资产。
他们在commerce-paper/organization/digibank/contract/lib 有一个文件paper.js,这是“纸”资产的定义吗?
如果我需要定义额外的资产,我是否还要在同一位置创建一个文件 myasset.js 然后调用智能合约?
或者有没有更好的方法来定义资产?
PS:我正在尝试将 Hyperledger Composer 中的资产映射到 Hyperledger Fabric 1.4。
此外,您如何定义资产与参与者或其他资产之间的关系?在Composer中我们曾经使用-->来定义关系,我们如何实现fabric-1.4一样的东西?
我相信我找到了我自己问题的答案,我希望这能帮助任何处于类似情况的人(从 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,他们只是创建一个“paper”对象(paper 类扩展 state 类。State 类具有创建和拆分键的方法,稍后将使用),然后将其传递给“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);
}
在这里您可以观察到密钥是使用 state 类中的方法生成的,该类是由 paper 类继承的。
关于关系的最后一个问题,我还没有找到具体的答案,但我相信您可以通过传递参与者 ID 或资产 ID 来实现这一点(例如:用户由 userId 标识,因此我们只需传递userId) 在数据对象中。
事后看来,这个问题看起来很愚蠢,但我希望它可以帮助一些人。
请随时纠正我对 Hyperledger 示例的理解。我是来学习的:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句