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

时间:2019-03-04 13:44:36

标签: hyperledger-fabric blockchain hyperledger-composer

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

根据Fabric 1.4文档which you can find here,我实现了Commercial-Paper教程。一切正常。

现在,我想针对我的应用程序对其进行定制,并想要定义更多资产。

他们在commercial-paper / organization / digibank / contract / lib中有一个paper.js文件,这是“纸”资产的定义吗?

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

还是有更好的方法来定义资产?

PS:我正在尝试将资产从Hyperledger作曲者映射到Hyperledger fabric 1.4。

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

2 个答案:

答案 0 :(得分:1)

由于您已经回答了自己的问题,因此我只想在用户标识中添加您自己的答案。

值得一提的是CID Lib。有了AttributeBasedAccessControl的概念,您就可以完美地管理对查询/调用的访问。

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

答案 1 :(得分:0)

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

@RunWith(SpringRunner.class)
@SpringBootTest
public class RTWFlowsTest {

RTWFlows rtwFlows = new RTWFlows();

@Test
public void rtwTifFileSharePoller() {
    System.out.println("executing test");

    FileReadingMessageSource getFile = rtwFlows.rtwTifFileSharePoller().get(); 

    Message<File> msg = null; 
    while( (msg = getFile.receive()) != null)
        msg.getHeaders().forEach((key, value) -> System.out.println(key + ": " + value));
    } 
}

我们只需使用以上代码即可添加资产。在fabcar示例中找到了一个非常简化的版本。

ctx.stub.putState(key, data); 

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

在商业票据示例中,他们已使用面向对象的方法完成了此任务。通过paper.js,他们只是创建了一个“纸张”对象(纸张类扩展了状态类。状态类具有制作和拆分键的方法,将在以后使用),然后将其传递给“ paperlist”,然后使用定义的方法在statelist.js中(paperlist类扩展了statelist类,该类具有将状态写入总帐的所有方法),可以使用以下代码创建此资产

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 ===========');
}

在这里,您可以看到密钥是使用state类的方法生成的,该状态类是paper类所继承的。

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

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

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