在Hyperledger Composer中,与交易相关的 logic.js 是什么?
如何从 logic.js 访问列表?
有任何好的教程可以了解我在 logic.js 文件中可以做些什么吗?
答案 0 :(得分:1)
虽然这是一个答案,但我要解释logic.js
与transaction
的关系,以便读者理解。
交易是在分类账上或从分类账转出的资产。在Hyperledger Composer
事务中,在模型(包含.cto
扩展名)文件中定义了事务。在logic.js
(可以是anything.js
)文件中包含Transaction processor function
来执行模型文件中定义的事务。
以下是样本模型文件:
/**
* My commodity trading network
*/
namespace org.acme.mynetwork
asset Commodity identified by tradingSymbol {
o String tradingSymbol
--> Trader owner
}
participant Trader identified by tradeId {
o String tradeId
o String firstName
o String lastName
}
transaction Trade {
--> Commodity commodity
--> Trader newOwner
}
在模型文件中,定义了Trade
事务,指定与资产和参与者的关系。 Trade
交易旨在简单地接受正在交易的Commodity
资产的标识符,以及要设置为新所有者的Trader
参与者的标识符。
这是一个逻辑文件,其中包含用于执行模型文件中定义的事务的JavaScript逻辑。
/**
* Track the trade of a commodity from one trader to another
* @param {org.acme.mynetwork.Trade} trade - the trade to be processed
* @transaction
*/
async function tradeCommodity(trade) {
trade.commodity.owner = trade.newOwner;
let assetRegistry = await getAssetRegistry('org.acme.mynetwork.Commodity');
await assetRegistry.update(trade.commodity);
}
<强>教程强>
答案 1 :(得分:0)
是的,但不必独占文件名'logic.js'。点击此处https://hyperledger.github.io/composer/latest/reference/js_scripts
您首先为数组字段建模https://hyperledger.github.io/composer/latest/reference/cto_language.html然后对其进行编码。像任何javascript数组处理一样处理数组。请参阅此处的示例 - &gt;查询的结果https://github.com/hyperledger/composer-sample-networks/blob/master/packages/trade-network/lib/logic.js#L45在数组中处理。此外,temperatureReadings是在此处的示例网络中处理的数组https://github.com/hyperledger/composer-sample-networks/blob/v0.16.x/packages/perishable-network/lib/logic.js#L37
我鼓励您试用这些教程来验证您的理解。 https://hyperledger.github.io/composer/latest/tutorials/tutorials