我遇到了 getNative API,通过它一个来自 Hyperledger composer 的调用链代码。见这里:https://github.com/hyperledger/composer/issues/3120
有人可以确切地告诉我这是如何工作的吗?假设我有一个非常简单的带有 getter 和 setter 的链码,我可以从 composer 中的 JS 代码中调用它们吗?
最佳答案
要在 composer
的事务处理器函数中调用 Hyperledger Fabric API,必须调用函数 getNativeAPI
。 getNativeAPI
允许用户直接调用 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) {
}
}
}
}
请记住:
getState
和 putState
Hyperledger Fabric API 函数将绕过 Hyperledger Composer 访问控制规则。一些资源:
希望这些能帮助你理解。
关于hyperledger-fabric - 如何使用Hyperledger Getnative API,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49535602/