logic.js文件如何在Hyperledger Composer中工作?

时间:2018-04-05 09:58:46

标签: hyperledger-fabric hyperledger hyperledger-composer

在Hyperledger Composer中,与交易相关的 logic.js 是什么?

如何从 logic.js 访问列表?

有任何好的教程可以了解我在 logic.js 文件中可以做些什么吗?

2 个答案:

答案 0 :(得分:1)

虽然这是一个答案,但我要解释logic.jstransaction的关系,以便读者理解。

交易是在分类账上或从分类账转出的资产。在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. Composer Official Documentation
  2. IBM Blochain Developer Tutorial

答案 1 :(得分:0)

  1. 是的,但不必独占文件名'logic.js'。点击此处https://hyperledger.github.io/composer/latest/reference/js_scripts

  2. 您首先为数组字段建模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

  3. 我鼓励您试用这些教程来验证您的理解。 https://hyperledger.github.io/composer/latest/tutorials/tutorials