如何使用hyperledger getnative API

use*_*878 4 hyperledger hyperledger-fabric hyperledger-composer

我遇到了getNative API,通过它来调用来自Hyperledger作曲家的链码.见这里:https://github.com/hyperledger/composer/issues/3120

有人可以告诉我这究竟是如何工作的?假如我有一个带有getter和setter的非常简单的链代码,我可以从作曲家的JS代码中调用它们

小智 11

要在事务处理器函数中调用Hyperledger Fabric API,必须调用composer该函数getNativeAPI.getNativeAPI允许用户直接调用Fabric shim API,后者为应用程序开发人员提供API,以实现Hyperledger Fabric后端的"智能合约",也称为Chaincodes.

下面是getNativeAPI在composer 中使用的示例示例,该示例调用Hyperledger Fabric API函数getHistoryForKey以将指定资产的历史记录作为迭代器返回.然后,事务处理器功能将返回的数据存储在数组中.

async function simpleNativeHistoryTransaction (transaction) {    
    const id = transaction.assetId;
    const nativeSupport = transaction.nativeSupport;

    const nativeKey = getNativeAPI().createCompositeKey('Asset:systest.transactions.SimpleStringAsset', [id]);
    const iterator = await getNativeAPI().getHistoryForKey(nativeKey);
    let results = [];
    let res = {done : false};
    while (!res.done) {
        res = await iterator.next();

        if (res && res.value && res.value.value) {
            let val = res.value.value.toString('utf8');
            if (val.length > 0) {
                results.push(JSON.parse(val));
            }
        }
        if (res && res.done) {
            try {
                iterator.close();
            }
            catch (err) {
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

请记住:getStateputStateHyperledger Fabric API函数将绕过Hyperledger Composer访问控制规则.

一些资源:

希望这些能帮助你理解.

  • +1 @mohammadjh:只需添加指向可以从`getnativeAPI()`调用的函数的链接(供读者使用)-> https://fabric-shim.github.io/ChaincodeStub.html,可随时将其添加到您的答案(尽管您已经提供了主要索引页面)。 (2认同)