Невозможно создать цепной код в сети фабрики Hyperledger. - PullRequest
0 голосов
/ 08 мая 2019

Я попытался создать хорошо протестированный цепной код в своей фабричной сети, но в итоге получилась проблема "невозможно зарегистрировать цепной код". Контейнер цепного кода не обнаружен. Я проверил свои цепные коды, и они прошли все базовые тесты, поэтому с кодом проблем нет. Независимо от того, на какой организации я ни запускаю, инстанция не работает.

Может кто-нибудь помочь?

Платформа управления версиями Hyperledger упоминает ту же ошибку, но я не вижу, какое решение они придумали (https://jira.hyperledger.org/browse/FAB-14638). Кажется, они что-то говорят о несоответствии версии узла.

cli log:

peer chaincode instantiate -o orderer.flightcommand.com:7050 -C flightcommandchannel -l node -n TripCC -v v0 -c '{"Args":["init"]}' -P 'AND ("CapitalcityMSP.member")' 2019-05-08 05:40:55.146 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc 2019-05-08 05:40:55.150 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc Error: could not assemble transaction, err proposal response was not successful, error code 500, msg chaincode registration failed: container exited with 0**

одноранговые журналы:

[flightcommandchannel][97cbe635] Exit chaincode: name:"lscc" (98834ms) 
2019-05-08 05:42:33.897 UTC [endorser] SimulateProposal -> ERRO 18f [flightcommandchannel][97cbe635] failed to invoke chaincode name:"lscc" , error: container exited with 0 
github.com/hyperledger/fabric/core/chaincode.(*RuntimeLauncher).Launch.func1 /opt/gopath/src/github.com/hyperledger/fabric/core/chaincode/runtime_launcher.go:63 runtime.goexit /opt/go/src/runtime/asm_amd64.s:1333 chaincode registration failed
2019-05-08 05:42:33.898 UTC [comm.grpc.server] 1 -> INFO 190 unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.peer_address=192.168.96.12:38100 grpc.code=OK grpc.call_duration=1m38.836283s

Ответы [ 4 ]

1 голос
/ 09 мая 2019

Я наконец нашел проблему.Я пропустил переменную ENV, чтобы указать в peer docker-compose.yaml.

" - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE = network_1.0 "

Где network_1.0 - это имяиз докерной сети.Хотя сообщения об ошибках не были настолько наглядными, я немного постарался и перестроил свой предыдущий проект, где работало развертывание кода цепи, и сравнил его с моим текущим проектом.Нашел только этот кусок пропавшим и после добавления, к моему удивлению, все заработало.

0 голосов
/ 08 мая 2019

Порт 7052 вряд ли будет проблемой здесь.Это объяснение (из core.yaml) о порте 7052.

# The endpoint this peer uses to listen for inbound chaincode connections.
# If this is commented-out, the listen address is selected to be
# the peer's address (see below) with port 7052
# chaincodeListenAddress: 0.0.0.0:7052

В вашем отладочном выводе я вижу "chaincodeBuildlevel":"1.4.1-rc1"

Я думаю, что вы используете Fabric Images для 1.4.1-rc1.

Я бы предложил удалить образы Docker в вашей системе и заменить на 1.4.1, а затем использовать fabric-shim 1.4.1 для обеспечения согласованности.Это может решить проблему, но, безусловно, будет лучшим местом для продолжения расследований.

Обновлено после комментариев

С Docker Compose, если ваша группа контейнеров запущена наодин и тот же сетевой мост (на одном хост-компьютере / виртуальной машине), они могут разрешать адреса друг друга и подключаться к любому порту.

Сопоставление портов в файле docker-compose.yaml сопоставляет порты с главного компьютера в контейнер (не между контейнерами).

Порт 7053 использовался для событий в более старых версиях Fabric, но он не используется в 1.4.1

. Ошибка, которую вы сейчас указали в комментарии, является ошибкой разрешения имен, поэтомуне делать с портами.Возможно, ваши контейнеры находятся не на том же Docker Bridge?

0 голосов
/ 09 мая 2019

Я сталкивался с одной и той же проблемой всякий раз, когда пытался создать цепной код, я получал эту ошибку

одноранговые журналы:

2019-05-09 04:05:38.285 EDT [endorser] SimulateProposal -> ERRO 15c [mychannel][03349c15] failed to invoke chaincode name:"lscc" , error: container exited with 1
github.com/hyperledger/fabric/core/chaincode.(*RuntimeLauncher).Launch.func1
/home/alex/go/src/github.com/hyperledger/fabric/core/chaincode/runtime_launcher.go:63
runtime.goexit
/usr/local/go/src/runtime/asm_amd64.s:1337
chaincode registration failed

Мне удалось это исправить, изменив файл build.gradle, убедитесь, что в вашем build.gradle вы установили Main-Class в manifest attributes в свой основной файл Java.

shadowJar {
    baseName = 'chaincode'
    version = null
    classifier = null

    manifest {
        attributes 'Main-Class': 'org.hyperledger.fabric.chaincode.XXX'
    }
}

Где XXX - это файл XXX.java, в котором определена ваша main() функция

Не уверен, как это можно сделать в узле. Но я надеюсь, что это даст вам идею.

0 голосов
/ 08 мая 2019

Я изменил уровень регистрации однорангового узла и увидел что-то странное. Ниже приведены цепные журналы в режиме отладки.

2019-05-08 11:21:52.980 UTC [endorser] callChaincode -> INFO 04f [flightcommandchannel][d01daf8c] Entry chaincode: name:"lscc"
2019-05-08 11:21:54.424 UTC [peer.chaincode.dev-peer0.onesky.flightcommand.com-AccountChaincode-v0] func2 -> INFO 050
2019-05-08 11:21:54.426 UTC [peer.chaincode.dev-peer0.onesky.flightcommand.com-AccountChaincode-v0] func2 -> INFO 051 > trip@1.0.0 start /usr/local/src
2019-05-08 11:21:54.427 UTC [peer.chaincode.dev-peer0.onesky.flightcommand.com-AccountChaincode-v0] func2 -> INFO 052 > **NODE_ENV=development node account.js "--peer.address" "peer0.onesky.flightcommand.com:7052"**
2019-05-08 11:21:54.428 UTC [peer.chaincode.dev-peer0.onesky.flightcommand.com-AccountChaincode-v0] func2 -> INFO 053
2019-05-08 11:21:55.124 UTC [peer.chaincode.dev-peer0.onesky.flightcommand.com-AccountChaincode-v0] func2 -> INFO 054 2019-05-08T11:21:55.118Z debug [lib/chaincode.js]                                 debug: Starting chaincode using options {"_":[],"peer.address":"peer0.onesky.flightcommand.com:7052","chaincodeBuildlevel":"1.4.1-rc1","chaincodeLoggingLevel":"debug","chaincodeLoggingFormat":"%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{shortfunc} -> %{level:.4s} %{id:03x}%{color:reset} %{message}","chaincodeIdName":"AccountChaincode:v0","chaincodeLoggingShim":"debug","peerTlsEnabled":"false","grpc.max_send_message_length":-1,"grpc.max_receive_message_length":-1,"grpc.keepalive_time_ms":110000,"grpc.http2.min_time_between_pings_ms":110000,"grpc.keepalive_timeout_ms":20000,"grpc.http2.max_pings_without_data":0,"grpc.keepalive_permit_without_calls":1,"module-path":"/usr/local/src","modulePath":"/usr/local/src","chaincode-id-name":"AccountChaincode:v0","timestamp":"2019-05-08T11:21:55.118Z"}
2019-05-08 11:21:55.128 UTC [peer.chaincode.dev-peer0.onesky.flightcommand.com-AccountChaincode-v0] func2 -> INFO 055 2019-05-08T11:21:55.127Z debug [lib/chaincode.js]                                 debug: Peer URL {"0":"g","1":"r","2":"p","3":"c","4":":","5":"/","6":"/","7":"p","8":"e","9":"e","10":"r","11":"0","12":".","13":"o","14":"n","15":"e","16":"s","17":"k","18":"y","19":".","20":"f","21":"l","22":"i","23":"g","24":"h","25":"t","26":"c","27":"o","28":"m","29":"m","30":"a","31":"n","32":"d","33":".","34":"c","35":"o","36":"m","37":":","38":"7","39":"0","40":"5","41":"2","timestamp":"2019-05-08T11:21:55.127Z"}
2019-05-08 11:21:55.135 UTC [peer.chaincode.dev-peer0.onesky.flightcommand.com-AccountChaincode-v0] func2 -> INFO 056 2019-05-08T11:21:55.135Z info [lib/chaincode.js]                                  info: Registering with peer peer0.onesky.flightcommand.com:7052 as chaincode "AccountChaincode:v0" {"timestamp":"2019-05-08T11:21:55.135Z"}
2019-05-08 11:21:55.147 UTC [peer.chaincode.dev-peer0.onesky.flightcommand.com-AccountChaincode-v0] func2 -> INFO 057 2019-05-08T11:21:55.146Z debug [lib/handler.js]                                   debug: Sending chat message: {"type":1,"payload":{"type":"Buffer","data":[18,19,65,99,99,111,117,110,116,67,104,97,105,110,99,111,100,101,58,118,48]}} {"timestamp":"2019-05-08T11:21:55.146Z"}
2019-05-08 11:21:55.440 UTC [peer.chaincode.dev-peer0.onesky.flightcommand.com-AccountChaincode-v0] func2 -> INFO 058 2019-05-08T11:21:55.437Z error [lib/handler.js]                                   error: Chat stream with peer - on error: "Error: 14 UNAVAILABLE: Name resolution failure\n    at Object.exports.createStatusError (/usr/local/src/node_modules/grpc/src/common.js:91:15)\n    at ClientDuplexStream._emitStatusIfDone (/usr/local/src/node_modules/grpc/src/client.js:233:26)\n    at ClientDuplexStream._receiveStatus (/usr/local/src/node_modules/grpc/src/client.js:211:8)\n    at Object.onReceiveStatus (/usr/local/src/node_modules/grpc/src/client_interceptors.js:1306:15)\n    at InterceptingListener._callNext (/usr/local/src/node_modules/grpc/src/client_interceptors.js:568:42)\n    at InterceptingListener.onReceiveStatus (/usr/local/src/node_modules/grpc/src/client_interceptors.js:618:8)\n    at /usr/local/src/node_modules/grpc/src/client_interceptors.js:1123:18" {"timestamp":"2019-05-08T11:21:55.437Z"}
2019-05-08 11:21:55.617 UTC [dockercontroller] func2 -> INFO 059 Container dev-peer0.onesky.flightcommand.com-AccountChaincode-v0 has closed its IO channel
2019-05-08 11:21:56.091 UTC [endorser] callChaincode -> INFO 05a [flightcommandchannel][d01daf8c] Exit chaincode: name:"lscc"  (3111ms)
2019-05-08 11:21:56.091 UTC [endorser] SimulateProposal -> ERRO 05b [flightcommandchannel][d01daf8c] failed to invoke chaincode name:"lscc" , error: container exited with 0
github.com/hyperledger/fabric/core/chaincode.(*RuntimeLauncher).Launch.func1
    /opt/gopath/src/github.com/hyperledger/fabric/core/chaincode/runtime_launcher.go:63
runtime.goexit
    /opt/go/src/runtime/asm_amd64.s:1333
chaincode registration failed
2019-05-08 11:21:56.091 UTC [comm.grpc.server] 1 -> INFO 05c unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.peer_address=172.25.0.4:59932 grpc.code=OK grpc.call_duration=3.1157286s

Так вот в чем проблема. Мой узел прослушивает порт 7051, а не 7052. В идеале команда должна выглядеть так: «NODE_ENV = узел разработки account.js» --peer.address »« peer0.onesky.flightcommand.com:7051 "». Понятия не имею, откуда оно 7052.

P.S. Я добавил следующее, чтобы получить более полное представление об этой проблеме при создании экземпляра цепочки кода.

  • FABRIC_LOGGING_SPEC = информация

  • CORE_CHAINCODE_LOGGING_SHIM = отлаживать

  • CORE_CHAINCODE_LOGGING_LEVEL = отлаживать

core.yaml говорит

# The endpoint this peer uses to listen for inbound chaincode connections.
# If this is commented-out, the listen address is selected to be
# the peer's address (see below) with port 7052
# chaincodeListenAddress: 0.0.0.0:7052

# The endpoint the chaincode for this peer uses to connect to the peer.
# If this is not specified, the chaincodeListenAddress address is selected.
# And if chaincodeListenAddress is not specified, address is selected from
# peer listenAddress.
# chaincodeAddress: 0.0.0.0:7052

Итак, я пришел к выводу, что, поскольку оба прокомментированы, в качестве адреса для прослушивания кода цепи используется 7051.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...