Я пытаюсь использовать структуру Hyperledger Caliper для измерения производительности сети блокчейнов на основе Hyperledger Fabric, содержащей 3 узла и 1 заказчик и индивидуальный консенсус. У меня уже установлена и работает сеть, смарт-контракты правильно отвечают на разных удаленных виртуальных машинах. Я знаю, что мне нужно создать файл конфигурации сети и файл для тестирования конфигурации. Здесь начинаются мои сомнения. Во всех примерах, которые я видел, в этом файле конфигурации связаны файлы javascripts для тестирования, но мой смарт-контракт был написан на голанге. Должны ли мои тесты быть написаны с использованием javascript? Могу ли я сослаться на файл golang в этом файле? Кто-нибудь может привести мне пример? Я занимался исследованиями в течение нескольких недель, но не могу понять примеры, представленные фреймворком. Может ли кто-нибудь помочь мне, даже если это ссылка, которую я еще не видел для дальнейшего поиска.
Сложность создания эталонного теста с использованием Hyperledger Caliper
Ответы (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);
Все рабочие нагрузки измерителя в настоящее время выполняются в node.js, который преимущественно является движком javascript (Chaincode может быть написан на любом языке, поддерживаемом фабрикой). Поддержка других языков может появиться в будущем либо изначально, либо, возможно, за счет альтернативы, просто транспиляции в javascript или компиляции в wasm, поскольку движок node.js увеличивает его возможности wasm.
Я бы порекомендовал посмотреть последний учебник по ткани, который можно найти здесь https://hyperledger.github.io/caliper/v0.4.2/fabric-tutorial/ Поскольку в калипер были внесены некоторые большие улучшения (по сравнению с версией v0.3.2)