创建任何资产或参与者时,需要在某些字段上检查某些条件赞(IF..THEN..ELSE)。是否可以通过交易创建资产或参与者?
答案 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,您将在正确的注册表中获取资产。 当然,如果这样做,则需要确保您不允许通过标准资产端点创建资产。
我本人计划根本不公开任何资产端点,仅允许通过交易进行更改。
检查代码是否有错别字等,我从运行中的网络中删除了此代码,替换了我的类型名,以便可能我输错了一些内容。