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

有人可以确切地告诉我这是如何工作的吗?假设我有一个非常简单的带有 getter 和 setter 的链码,我可以从 composer 中的 JS 代码中调用它们吗?

最佳答案

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

这是在 composer 中使用 getNativeAPI 的示例示例,它调用 Hyperledger Fabric API 函数 getHistoryForKey 以将指定 Assets 的历史记录作为迭代器返回。然后事务处理器函数将返回的数据存储在一个数组中。

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) {
            }
        }
    }
}

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

一些资源:
  • Fabric Chainode
  • Fabric Shim
  • Composer Transaction

  • 希望这些能帮助你理解。

    关于hyperledger-fabric - 如何使用Hyperledger Getnative API,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49535602/

    10-16 23:51