Несоответствие данных о несоответствии отпечатков пальцев происходит из-за того, что пакет, который устанавливается на одноранговые узлы, отличается таким же образом, и такая структура видит эту разницу как проблему и сообщает об этой ошибке.
Чтобы понять, как это можнопроисходят детали о том, как композитор помещает bna на одноранговый узел.
Расширенный bna-файл выглядит как модуль узла, он содержит файл package.json и некоторые артефакты, из которых состоит бизнес-сеть, поэтому composer распаковывает bna-файл и использует fabric-node-sdk для его упаковки.вверх, говоря, что это - модуль узла, и fabric-node-sdk соответствующим образом упакует его и отправит на одноранговый узел.Затем Fabric может распаковать этот пакет и выполнить npm install --production
для завершения настройки этой бизнес-сети.Однако необходимо убедиться, что ссылка на некоторые модули npm композитора присутствует в package.json бна, чтобы бизнес-сеть могла реально работать, если эти ссылки не существуют, тогда команда composer network install
внедряет их в package.json для вас, прежде чем fabric-node-sdk создаст окончательный пакет и отправит его равноправному узлу.Команда эффективно добавляет эти строки в раздел зависимостей файла package.json
“composer-runtime-hlfv1”: “0.19.9”,
“composer-common”: “0.19.9”
(обратите внимание, что номер версии, представленный здесь, был самой последней версией на момент написания, вы можете захотетьиспользуйте другую / более новую версию среды выполнения composer)
И вставленный номер версии берется из версии установленного вами composer-cli, поэтому, если у вас есть разные версии composer-cliвы можете видеть, что при развертывании одной и той же bna на разных узлах пакет, который заканчивается на узле, будет отличаться, если будут установлены разные версии composer-cli.(В качестве дополнительного признака, fabric-node-sdk не использует дату / время файлов, но устанавливает для них детерминированное значение, поэтому различие в дате / времени не является проблемой.)
Существует 2как вы можете избежать этой проблемы.
- Убедитесь, что вы используете одинаковые уровни composer-cli для установки на одноранговые узлы различных организаций
- Вы можете явно установить версиюиз
composer-runtime-hlfv1
и composer-common
зависимостей внутри пакета package.json вашей бизнес-сети.Если они присутствуют, командная строка не будет перезаписывать или вставлять записи в package.json до отправки пакета одноранговым узлам.