为 hyperledger v1.0 部署链码时出现问题
Something wrong on deploy chaincode for hyperledger v1.0
我尝试使用 docker 工具箱在我的本地机器上设置 Hyperledger V1.0。
我根据这个文件:
http://hyperledger-fabric.readthedocs.io/en/latest/asset_setup.html
但是当我尝试部署链代码时。
$node deploy.js
我收到一条错误信息:
info: Returning a new winston logger with default configurations
info: [Chain.js]: Constructed Chain instance: name - fabric-client1, securityEnabled: true, TCert download batch size: 10, network mode: true
info: [Peer.js]: Peer.const - url: grpc://localhost:8051 options grpc.ssl_target_name_override=tlsca, grpc.default_authority=tlsca
info: [Peer.js]: Peer.const - url: grpc://localhost:8055 options grpc.ssl_target_name_override=tlsca, grpc.default_authority=tlsca
info: [Peer.js]: Peer.const - url: grpc://localhost:8056 options grpc.ssl_target_name_override=tlsca, grpc.default_authority=tlsca
info: [Client.js]: Failed to load user "admin" from local key value store
info: [FabricCAClientImpl.js]: Successfully constructed Fabric COP service client: endpoint - {"protocol":"http","hostname":"localhost","port":8054}
info: [crypto_ecdsa_aes]: This class requires a KeyValueStore to save keys, no store was passed in, using the default store C:\Users\daniel\.hfc-key-store
[2017-04-15 22:14:29.268] [ERROR] Helper - Error: Calling enrollment endpoint failed with error [Error: connect ECONNREFUSED 127.0.0.1:8054]
at ClientRequest.<anonymous> (C:\Users\daniel\node_modules\fabric-ca-client\lib\FabricCAClientImpl.js:304:12)
at emitOne (events.js:96:13)
at ClientRequest.emit (events.js:188:7)
at Socket.socketErrorListener (_http_client.js:310:9)
at emitOne (events.js:96:13)
at Socket.emit (events.js:188:7)
at emitErrorNT (net.js:1278:8)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickCallback (internal/process/next_tick.js:98:9)
[2017-04-15 22:14:29.273] [ERROR] DEPLOY - Error: Failed to obtain an enrolled user
at ca_client.enroll.then.then.then.catch (C:\Users\daniel\helper.js:59:12)
at process._tickCallback (internal/process/next_tick.js:103:7)
events.js:160
throw er; // Unhandled 'error' event
^
Error: Connect Failed
at ClientDuplexStream._emitStatusIfDone (C:\Users\daniel\node_modules\grpc\src\node\src\client.js:201:19)
at ClientDuplexStream._readsDone (C:\Users\daniel\node_modules\grpc\src\node\src\client.js:169:8)
at readCallback (C:\Users\daniel\node_modules\grpc\src\node\src\client.js:229:12)
这是关于无法连接到ca的问题吗?还是其他原因?
编辑:
环境:
OS: Windows 10 Professional Edition
Docker Toolbox: 17.04.0-ce
Go: 1.7.5
Node.js: 6.10.0
我的步数:
1.Open Docker 快速启动终端和键盘命令。
$curl -L https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sfhackfest/sfhackfest.tar.gz -o sfhackfest.tar.gz 2> /dev/null; tar -xvf sfhackfest.tar.gz
$docker-compose -f docker-compose-gettingstarted.yml build
$docker-compose -f docker-compose-gettingstarted.yml up -d
$docker ps
已确认已激活6个容器
2.Download 示例和安装模块。
$curl -OOOOOO https://raw.githubusercontent.com/hyperledger/fabric-sdk-node/v1.0-alpha/examples/balance-transfer/{config.json,deploy.js,helper.js,invoke.js,query.js,package.json}
//This link didn't work, so I downloaded the required files from GitHub of fabric-sdk-node
$npm install --global windows-build-tools
$npm install
3.Try 部署链码。
$node deploy.js
有几个问题,其中最重要的是该文档已经过时并且是针对 Hyperledger Fabric 的预览版。由于我们需要更新示例/示例,因此文档实际上正在被删除。
您提到了 Docker 工具箱 - 那么您是否试图 运行 在 Windows 或 Mac 上实现所有这些?
更新:
Docker Toolbox 或 Docker for Windows 的问题之一是当您尝试从主机(甚至在 QuickStart 终端中)到 Docker 容器的端点。当 QuickStart Terminal 首次启动时 Docker,您会看到它将输出与公开端口通信时应使用的端点的 IP 地址。
我在学习最新的 "Writing Your First Application" 教程 (http://hyperledger-fabric.readthedocs.io/en/latest/write_first_app.html) 时遇到了同样的问题。我已经安装了所有先决条件和 fabric-samples
并启动了本地网络。
当我进入注册管理员用户 $ node enrollAdmin.js
的步骤时,我收到了与上面相同的错误消息 Error: connect ECONNREFUSED
,后跟本地主机域。
正如第一个答案所暗示的,根本原因是我 运行 Docker 工具箱。我正在开发较旧的 Mac、OSX v10.9.5,因此我无法将 Docker 用于 Mac.
为了解决这个问题,我用 Docker 工具箱中的 IP 替换了 enrollAdmin.js 代码中的 'localhost'
。
以下是我采取的步骤:
- 已开始 Docker 应用程序 > Docker 快速启动终端
- 从这句话复制IP:
docker is configured to use the default machine with IP
...
- 从
fabric-samples/fabcar
目录打开 enrollAdmin.js
的副本
找到此代码:
// be sure to change the http to https when the CA is running TLS enabled
fabric_ca_client = new Fabric_CA_Client('http://localhost:7054', tlsOptions , 'ca.example.com', crypto_suite); // <-- This is the line to change
- 将 'localhost' 替换为 Docker IP,端口
:7054
保持原样。
- 已保存
- 重新运行命令,
$ node enrollAdmin.js
脚本连接到 CA 并成功完成管理员注册。
进行下一步!
我尝试使用 docker 工具箱在我的本地机器上设置 Hyperledger V1.0。 我根据这个文件: http://hyperledger-fabric.readthedocs.io/en/latest/asset_setup.html
但是当我尝试部署链代码时。
$node deploy.js
我收到一条错误信息:
info: Returning a new winston logger with default configurations
info: [Chain.js]: Constructed Chain instance: name - fabric-client1, securityEnabled: true, TCert download batch size: 10, network mode: true
info: [Peer.js]: Peer.const - url: grpc://localhost:8051 options grpc.ssl_target_name_override=tlsca, grpc.default_authority=tlsca
info: [Peer.js]: Peer.const - url: grpc://localhost:8055 options grpc.ssl_target_name_override=tlsca, grpc.default_authority=tlsca
info: [Peer.js]: Peer.const - url: grpc://localhost:8056 options grpc.ssl_target_name_override=tlsca, grpc.default_authority=tlsca
info: [Client.js]: Failed to load user "admin" from local key value store
info: [FabricCAClientImpl.js]: Successfully constructed Fabric COP service client: endpoint - {"protocol":"http","hostname":"localhost","port":8054}
info: [crypto_ecdsa_aes]: This class requires a KeyValueStore to save keys, no store was passed in, using the default store C:\Users\daniel\.hfc-key-store
[2017-04-15 22:14:29.268] [ERROR] Helper - Error: Calling enrollment endpoint failed with error [Error: connect ECONNREFUSED 127.0.0.1:8054]
at ClientRequest.<anonymous> (C:\Users\daniel\node_modules\fabric-ca-client\lib\FabricCAClientImpl.js:304:12)
at emitOne (events.js:96:13)
at ClientRequest.emit (events.js:188:7)
at Socket.socketErrorListener (_http_client.js:310:9)
at emitOne (events.js:96:13)
at Socket.emit (events.js:188:7)
at emitErrorNT (net.js:1278:8)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickCallback (internal/process/next_tick.js:98:9)
[2017-04-15 22:14:29.273] [ERROR] DEPLOY - Error: Failed to obtain an enrolled user
at ca_client.enroll.then.then.then.catch (C:\Users\daniel\helper.js:59:12)
at process._tickCallback (internal/process/next_tick.js:103:7)
events.js:160
throw er; // Unhandled 'error' event
^
Error: Connect Failed
at ClientDuplexStream._emitStatusIfDone (C:\Users\daniel\node_modules\grpc\src\node\src\client.js:201:19)
at ClientDuplexStream._readsDone (C:\Users\daniel\node_modules\grpc\src\node\src\client.js:169:8)
at readCallback (C:\Users\daniel\node_modules\grpc\src\node\src\client.js:229:12)
这是关于无法连接到ca的问题吗?还是其他原因?
编辑:
环境:
OS: Windows 10 Professional Edition
Docker Toolbox: 17.04.0-ce
Go: 1.7.5
Node.js: 6.10.0
我的步数:
1.Open Docker 快速启动终端和键盘命令。
$curl -L https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sfhackfest/sfhackfest.tar.gz -o sfhackfest.tar.gz 2> /dev/null; tar -xvf sfhackfest.tar.gz
$docker-compose -f docker-compose-gettingstarted.yml build
$docker-compose -f docker-compose-gettingstarted.yml up -d
$docker ps
已确认已激活6个容器
2.Download 示例和安装模块。
$curl -OOOOOO https://raw.githubusercontent.com/hyperledger/fabric-sdk-node/v1.0-alpha/examples/balance-transfer/{config.json,deploy.js,helper.js,invoke.js,query.js,package.json}
//This link didn't work, so I downloaded the required files from GitHub of fabric-sdk-node
$npm install --global windows-build-tools
$npm install
3.Try 部署链码。
$node deploy.js
有几个问题,其中最重要的是该文档已经过时并且是针对 Hyperledger Fabric 的预览版。由于我们需要更新示例/示例,因此文档实际上正在被删除。
您提到了 Docker 工具箱 - 那么您是否试图 运行 在 Windows 或 Mac 上实现所有这些?
更新:
Docker Toolbox 或 Docker for Windows 的问题之一是当您尝试从主机(甚至在 QuickStart 终端中)到 Docker 容器的端点。当 QuickStart Terminal 首次启动时 Docker,您会看到它将输出与公开端口通信时应使用的端点的 IP 地址。
我在学习最新的 "Writing Your First Application" 教程 (http://hyperledger-fabric.readthedocs.io/en/latest/write_first_app.html) 时遇到了同样的问题。我已经安装了所有先决条件和 fabric-samples
并启动了本地网络。
当我进入注册管理员用户 $ node enrollAdmin.js
的步骤时,我收到了与上面相同的错误消息 Error: connect ECONNREFUSED
,后跟本地主机域。
正如第一个答案所暗示的,根本原因是我 运行 Docker 工具箱。我正在开发较旧的 Mac、OSX v10.9.5,因此我无法将 Docker 用于 Mac.
为了解决这个问题,我用 Docker 工具箱中的 IP 替换了 enrollAdmin.js 代码中的 'localhost'
。
以下是我采取的步骤:
- 已开始 Docker 应用程序 > Docker 快速启动终端
- 从这句话复制IP:
docker is configured to use the default machine with IP
... - 从
fabric-samples/fabcar
目录打开enrollAdmin.js
的副本 找到此代码:
// be sure to change the http to https when the CA is running TLS enabled fabric_ca_client = new Fabric_CA_Client('http://localhost:7054', tlsOptions , 'ca.example.com', crypto_suite); // <-- This is the line to change
- 将 'localhost' 替换为 Docker IP,端口
:7054
保持原样。 - 已保存
- 重新运行命令,
$ node enrollAdmin.js
脚本连接到 CA 并成功完成管理员注册。
进行下一步!