Hyperledger Fabric 1.4:我们如何定义资产?
Hyperledger Fabric 1.4 : How do we define assets?
之前我在 Hyperledger Composer 上开发了我的应用程序。现在我正在尝试将应用程序迁移到 Hyperledger Fabric 1.4。
我根据 Fabric 1.4 文档实现了商业论文教程,which you can find here。一切正常。
现在我想根据我的应用程序定制它并定义更多资产。
他们在 commercial-paper/organization/digibank/contract/lib 有一个文件 paper.js,这是 "paper" 资产的定义吗?
如果我需要定义额外的资产,我是否也在同一位置创建一个文件myasset.js,然后调用智能合约?
或者有没有更好的方法来定义资产?
PS:我正在尝试将资产从 Hyperledger composer 映射到 Hyperledger fabric 1.4。
此外,您如何定义资产与参与者或其他资产之间的关系?在 Composer 中我们曾经使用 --> 来定义关系,我们如何实现相同的东西 fabric-1.4?
我相信我找到了我自己问题的答案,我希望这能帮助任何处于类似情况的人(从 Hyperledger Composer 迁移到 Fabric 1.4)
ctx.stub.putState(key, data);
我们简单的使用上面的代码来添加一个asset。在 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' 对象(论文 class 扩展了状态 class。状态 class 有制作和拆分密钥的方法,这些方法将被使用稍后),然后将其传递给 'paperlist',然后使用 statelist.js 中定义的方法(paperlist class extends statelist class,它具有将状态写入到ledger) 使用以下代码创建此资产
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);
}
在这里您可以观察到密钥是使用状态 class 中的方法生成的,该方法被论文 class.
继承
关于关系的最后一个问题,我还没有找到具体的答案,但我相信你可以通过传递参与者 ID 或资产 ID 来实现(例如:用户由 userId 标识,所以我们只是在数据对象中传递 userId)。
事后看来,这个问题看起来很愚蠢,但我希望它能帮助一些人。
请随时纠正我对 Hyperledger 示例的理解。我是来学习的:)
既然你已经自己回答了这个问题,我只想在用户标识部分添加你自己的答案。
值得一提的是 CID Lib. With that and the concept of AttributeBasedAccessControl 你可以完美地在链上管理对 queries/invokes 的访问。
希望对您的回答有所帮助并增加更多见解:)
之前我在 Hyperledger Composer 上开发了我的应用程序。现在我正在尝试将应用程序迁移到 Hyperledger Fabric 1.4。
我根据 Fabric 1.4 文档实现了商业论文教程,which you can find here。一切正常。
现在我想根据我的应用程序定制它并定义更多资产。
他们在 commercial-paper/organization/digibank/contract/lib 有一个文件 paper.js,这是 "paper" 资产的定义吗?
如果我需要定义额外的资产,我是否也在同一位置创建一个文件myasset.js,然后调用智能合约?
或者有没有更好的方法来定义资产?
PS:我正在尝试将资产从 Hyperledger composer 映射到 Hyperledger fabric 1.4。
此外,您如何定义资产与参与者或其他资产之间的关系?在 Composer 中我们曾经使用 --> 来定义关系,我们如何实现相同的东西 fabric-1.4?
我相信我找到了我自己问题的答案,我希望这能帮助任何处于类似情况的人(从 Hyperledger Composer 迁移到 Fabric 1.4)
ctx.stub.putState(key, data);
我们简单的使用上面的代码来添加一个asset。在 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' 对象(论文 class 扩展了状态 class。状态 class 有制作和拆分密钥的方法,这些方法将被使用稍后),然后将其传递给 'paperlist',然后使用 statelist.js 中定义的方法(paperlist class extends statelist class,它具有将状态写入到ledger) 使用以下代码创建此资产
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);
}
在这里您可以观察到密钥是使用状态 class 中的方法生成的,该方法被论文 class.
继承关于关系的最后一个问题,我还没有找到具体的答案,但我相信你可以通过传递参与者 ID 或资产 ID 来实现(例如:用户由 userId 标识,所以我们只是在数据对象中传递 userId)。
事后看来,这个问题看起来很愚蠢,但我希望它能帮助一些人。
请随时纠正我对 Hyperledger 示例的理解。我是来学习的:)
既然你已经自己回答了这个问题,我只想在用户标识部分添加你自己的答案。
值得一提的是 CID Lib. With that and the concept of AttributeBasedAccessControl 你可以完美地在链上管理对 queries/invokes 的访问。
希望对您的回答有所帮助并增加更多见解:)