Я борюсь с Node.js клиентской библиотекой Hyperledger Fabri c по этой конкретной ошибке:
Моя сеть блокчейнов (Hyperledger Fabri c 1.4) развернута на одном сервере с IP и все необходимые порты видны с другого сервера. Все примеры / примеры, доступные в документации, относятся к сети через localhost.
Как можно запустить клиентское приложение и указать ему IP-адрес сети вместо имен локального хоста или однорангового контейнера (например, peer0. org1.example.com)?
Должно ли каждое клиентское приложение регистрировать администратора и пользователя в своем локальном постоянном хранилище, или это может быть сделано только один раз самой сетью (и, вероятно, подключено от сети к приложению на более поздней стадии) )? Здесь мы поговорим о Dockerized сети на одном хосте и клиентском приложении (также Dockerized) на другом.
А также, как запустить приложение и подключиться к нему, например, заказанному через GRCPS, если для этого требуется файл сертификата .pem присутствует при вызове createPeer
метода?
Я буду очень благодарен за любую помощь, предоставленную здесь.
РЕДАКТИРОВАТЬ, 12.03.2020:
I Я использую образец базовой сети c с изменениями в моей сети, чтобы создать 3 организации с 3 одноранговыми узлами и 5 заказчиками Raft. Я скопировал файл connection-org1. json, изменил localhost на IP-адрес моего внешнего сервера и получил следующую ошибку:
2020-03-12T12:45:31.503Z - error: [SingleQueryHandler]: evaluate: message=No peers available to query. Errors: ["14 UNAVAILABLE: DNS resolution failed","14 UNAVAILABLE: DNS resolution failed","14 UNAVAILABLE: DNS resolution failed"], stack=FabricError: No peers available to query. Errors: ["14 UNAVAILABLE: DNS resolution failed","14 UNAVAILABLE: DNS resolution failed","14 UNAVAILABLE: DNS resolution failed"]
at SingleQueryHandler.evaluate ((...)/network_files/javascript/node_modules/fabric-network/lib/impl/query/singlequeryhandler.js:44:17), name=FabricError
Failed to evaluate transaction: FabricError: No peers available to query. Errors: ["14 UNAVAILABLE: DNS resolution failed","14 UNAVAILABLE: DNS resolution failed","14 UNAVAILABLE: DNS resolution failed"]
Мне удалось успешно зарегистрироваться и зарегистрировать администратора и пользователя на моем локальная машина с использованием сети, размещенной на внешнем IP. Но я не могу запросить код цепи с помощью профиля подключения.
Вот мой профиль подключения:
{
"name": "first-network-org1",
"version": "1.0.0",
"client": {
"organization": "Org1",
"connection": {
"timeout": {
"peer": {
"endorser": "300"
}
}
}
},
"organizations": {
"Org1": {
"mspid": "Org1MSP",
"peers": [
"peer0.org1.example.com",
"peer1.org1.example.com",
"peer2.org1.example.com"
],
"certificateAuthorities": [
"ca.org1.example.com"
]
}
},
"peers": {
"peer0.org1.example.com": {
"url": "grpcs://<IP>:7051",
"tlsCACerts": {
"pem": "<CERT>"
},
"grpcOptions": {
"ssl-target-name-override": "peer0.org1.example.com",
"hostnameOverride": "peer0.org1.example.com"
},
"endorsingPeer": true,
"chaincodeQuery": true,
"ledgerQuery": true,
"eventSource": true
},
"peer1.org1.example.com": {
"url": "grpcs://<IP>:8051",
"tlsCACerts": {
"pem": "<CERT>"
},
"grpcOptions": {
"ssl-target-name-override": "peer1.org1.example.com",
"hostnameOverride": "peer1.org1.example.com"
}
},
"peer2.org1.example.com": {
"url": "grpcs://<IP>:9051",
"tlsCACerts": {
"pem": "<CERT>"
},
"grpcOptions": {
"ssl-target-name-override": "peer2.org1.example.com",
"hostnameOverride": "peer2.org1.example.com"
}
}
},
"certificateAuthorities": {
"ca.org1.example.com": {
"url": "https://<IP>:7054",
"caName": "ca-org1",
"tlsCACerts": {
"pem": "<CERT>"
},
"httpOptions": {
"verify": false
}
}
}
}