在Hyperledger Composer中通过事务创建资产

时间:2018-04-10 02:53:45

标签: hyperledger

创建任何资产参与者时,需要在某些字段上检查某些条件赞(IF..THEN..ELSE)。是否可以通过交易创建资产参与者

1 个答案:

答案 0 :(得分:1)

是的。

我在网络中做过同样的事情,通过交易创建资产并应用您需要的任何规则。

事务是从lib中的logic.js文件运行的。

假设您在org.myAssets命名空间中拥有资产myAsset

asset myAsset identified by assetId
{
  o String assetId
  o String someData
  //other fields as required
}

您现在想要一笔可以创建资产的交易

您的CTO交易如下:

namespace org.transactions
import org.myAssets.*

transaction MyAssetCreate
{
  o myAsset anAsset
}

在这里您无法引用该资产,因为您还没有资产。

在lib / logic.js中,您有类似的内容:

/**
 * creates an asset
 * @param {org.transactions.MyAssetCreate} myAssetCreate 
 * @transaction
 */
async function MyAssetCreate(myAssetCreate) {
    return getAssetRegistry('org.myAssets.myAsset')
    .then(function(result) {
        var factory = getFactory();
        var newAsset = factory.newResource(
        'org.myAssets', 
        'myAsset', 
        myAssetCreate.anAsset.assetId); 
        newAsset.someData = myAssetCreate.anAsset.someData
        //continue with property assignments and any logic you have
        //when you are done and everything looks good you can continue
        return result.add(newAsset);
     });

现在您可以调用MyAssetCreate,您将在正确的注册表中获取资产。 当然,如果这样做,则需要确保您不允许通过标准资产端点创建资产。

我本人计划根本不公开任何资产端点,仅允许通过交易进行更改。

检查代码是否有错别字等,我从运行中的网络中删除了此代码,替换了我的类型名,以便可能我输错了一些内容。