Сложность создания эталонного теста с использованием Hyperledger Caliper

Я пытаюсь использовать структуру Hyperledger Caliper для измерения производительности сети блокчейнов на основе Hyperledger Fabric, содержащей 3 узла и 1 заказчик и индивидуальный консенсус. У меня уже установлена ​​и работает сеть, смарт-контракты правильно отвечают на разных удаленных виртуальных машинах. Я знаю, что мне нужно создать файл конфигурации сети и файл для тестирования конфигурации. Здесь начинаются мои сомнения. Во всех примерах, которые я видел, в этом файле конфигурации связаны файлы javascripts для тестирования, но мой смарт-контракт был написан на голанге. Должны ли мои тесты быть написаны с использованием javascript? Могу ли я сослаться на файл golang в этом файле? Кто-нибудь может привести мне пример? Я занимался исследованиями в течение нескольких недель, но не могу понять примеры, представленные фреймворком. Может ли кто-нибудь помочь мне, даже если это ссылка, которую я еще не видел для дальнейшего поиска.


person Rodrigo Passos    schedule 14.12.2020    source источник


Ответы (2)


Ключом к javascript калибратора является вызов однорангового узла. Другими словами, он не выполняется путем прямого подключения определенного смарт-контракта (голанга).

Caliper(javascript) <-> Peer <-> Chaincode(golang)

caliper запрашивает цепной код однорангового узла (javascript) одноранговому узлу, и одноранговый узел получает запрос, выполняет цепной код (golang) и возвращает результат.
Это означает, что он полностью не зависит от языка цепного кода.

См. Ссылку ниже. В случае кода, который вызывает цепной код в JavaScript фактического измерителя, требуются только имя цепного кода, функция и входные параметры.

Hyperledger-caliper-fabric-tutorial

(ex)
...
const contractID = fabcar;
const chaincodeFunction = 'createCar';
const invokerIdentity = '[email protected]';
const chaincodeArguments = [assetID,'blue','ford','focus','jim'];

const result = await bc.bcObj.invokeSmartContract(ctx, contractID, version, myArgs);
console.log(result);
person myeongkil kim    schedule 15.12.2020

Все рабочие нагрузки измерителя в настоящее время выполняются в node.js, который преимущественно является движком javascript (Chaincode может быть написан на любом языке, поддерживаемом фабрикой). Поддержка других языков может появиться в будущем либо изначально, либо, возможно, за счет альтернативы, просто транспиляции в javascript или компиляции в wasm, поскольку движок node.js увеличивает его возможности wasm.

Я бы порекомендовал посмотреть последний учебник по ткани, который можно найти здесь https://hyperledger.github.io/caliper/v0.4.2/fabric-tutorial/ Поскольку в калипер были внесены некоторые большие улучшения (по сравнению с версией v0.3.2)

person david_k    schedule 15.12.2020