本文基于hellowrold区块链环境,使用fabric-sdk-node 开发客户端应用。
1.新建连接文件
connection-org1.yaml
---
name: helloworld
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://localhost:7051
tlsCACerts:
pem: |
-----BEGIN CERTIFICATE-----
MIICVzCCAf2gAwIBAgIQPpRrjZvaloVkj2FDjvjdHTAKBggqhkjOPQQDAjB2MQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xOTEyMDYwNzE4MDBaFw0yOTEyMDMwNzE4
MDBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD
VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
AQcDQgAEm6zQPRtevUHiMlaEfYaAK7Uu3yCbr7s/aoWtm6HqeSP0iKBb/VCXvV0j
LDgDLb1kK6obJBl8TA4SIX94xkQ+QaNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1Ud
JQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1Ud
DgQiBCCaMWO9GF+XwAh3KmV1pJ8zmzqazuahyjDqymQPY79+YTAKBggqhkjOPQQD
AgNIADBFAiEAnpxtX/dFdqSZ34s6lETiMpNOg2Xus4z2X7MMHirNDvkCIHgmaZ54
B+c5lYRNqeiO9LSawwid4jfdbZvcNQ9QZQQH
-----END CERTIFICATE-----
grpcOptions:
ssl-target-name-override: peer0.org1.example.com
hostnameOverride: peer0.org1.example.com
peer1.org1.example.com:
url: grpcs://localhost:8051
tlsCACerts:
pem: |
-----BEGIN CERTIFICATE-----
MIICVzCCAf2gAwIBAgIQPpRrjZvaloVkj2FDjvjdHTAKBggqhkjOPQQDAjB2MQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xOTEyMDYwNzE4MDBaFw0yOTEyMDMwNzE4
MDBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD
VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
AQcDQgAEm6zQPRtevUHiMlaEfYaAK7Uu3yCbr7s/aoWtm6HqeSP0iKBb/VCXvV0j
LDgDLb1kK6obJBl8TA4SIX94xkQ+QaNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1Ud
JQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1Ud
DgQiBCCaMWO9GF+XwAh3KmV1pJ8zmzqazuahyjDqymQPY79+YTAKBggqhkjOPQQD
AgNIADBFAiEAnpxtX/dFdqSZ34s6lETiMpNOg2Xus4z2X7MMHirNDvkCIHgmaZ54
B+c5lYRNqeiO9LSawwid4jfdbZvcNQ9QZQQH
-----END CERTIFICATE-----
grpcOptions:
ssl-target-name-override: peer1.org1.example.com
hostnameOverride: peer1.org1.example.com
peer2.org1.example.com:
url: grpcs://localhost:7251
tlsCACerts:
pem: |
-----BEGIN CERTIFICATE-----
MIICVzCCAf2gAwIBAgIQPpRrjZvaloVkj2FDjvjdHTAKBggqhkjOPQQDAjB2MQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xOTEyMDYwNzE4MDBaFw0yOTEyMDMwNzE4
MDBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD
VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
AQcDQgAEm6zQPRtevUHiMlaEfYaAK7Uu3yCbr7s/aoWtm6HqeSP0iKBb/VCXvV0j
LDgDLb1kK6obJBl8TA4SIX94xkQ+QaNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1Ud
JQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1Ud
DgQiBCCaMWO9GF+XwAh3KmV1pJ8zmzqazuahyjDqymQPY79+YTAKBggqhkjOPQQD
AgNIADBFAiEAnpxtX/dFdqSZ34s6lETiMpNOg2Xus4z2X7MMHirNDvkCIHgmaZ54
B+c5lYRNqeiO9LSawwid4jfdbZvcNQ9QZQQH
-----END CERTIFICATE-----
grpcOptions:
ssl-target-name-override: peer2.org1.example.com
hostnameOverride: peer2.org1.example.com
certificateAuthorities:
ca.org1.example.com:
url: https://localhost:7054
caName: ca-org1
tlsCACerts:
pem: |
-----BEGIN CERTIFICATE-----
MIICUjCCAfigAwIBAgIRAMU4/9+dq0VuPKEjSFipx/AwCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTkxMjA2MDcxODAwWhcNMjkxMjAzMDcxODAw
WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE
AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
BHkedN9y3BKwEyYKqcWM+AkWO5/xwnmybQ+eT4US8MZWNRqPpbxj04QaIb38WLaZ
EEHWpwCZ5ibI7pMBL6pQt7qjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU
BggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg
KmZ7N0Vi4BkkiDL1YbHbv8hdIH4v1feKEDrrPbxEORswCgYIKoZIzj0EAwIDSAAw
RQIhAIdEP0JbQI8LqW4XJ6fI/jmS9gqQPtGcwJxtof6pEieCAiAHxiG/VINKnQkT
18juN4fAU6fKQKbRad4/WA5wA4Z6Jw==
-----END CERTIFICATE-----
httpOptions:
verify: false
2.nodejs 脚本
在helloworld下创建script目录,用于放js文件
2.1 enrollAdmin.js
用于从 CA服务中获取 admin 用户注册信息
/*
* SPDX-License-Identifier: Apache-2.0
*/
'use strict';
const FabricCAServices = require('fabric-ca-client');
const {
FileSystemWallet, X509WalletMixin } = require('fabric-network');
const fs = require