Add v1.3.0
parent
8c92d1c0f1
commit
afaa0195f9
|
@ -2,7 +2,7 @@
|
|||
|
||||
This project provides several useful Docker-Compose script to help quickly bootup a Hyperledger Fabric network, and do simple testing with deploy, invoke and query transactions.
|
||||
|
||||
Currently we support Hyperledger Fabric v0.6.x and v1.x.
|
||||
Currently we support Hyperledger Fabric all releases from v0.6 to latest v1.x.
|
||||
|
||||
If you're not familiar with Docker and Blockchain, can have a look at these books (in CN):
|
||||
|
||||
|
@ -13,30 +13,35 @@ If you're not familiar with Docker and Blockchain, can have a look at these book
|
|||
|
||||
Fabric Release | Description
|
||||
--- | ---
|
||||
[Fabric v0.6.0](v0.6.0/) | fabric v0.6.0 release (too old, not recommend to use).
|
||||
[Fabric v1.0.0](v1.0.0/) | fabric v1.0.0 release.
|
||||
[Fabric v1.0.2](v1.0.2/) | fabric v1.0.2 release.
|
||||
[Fabric v1.0.5](v1.0.5/) | fabric v1.0.5 release.
|
||||
[Fabric Latest](latest/) | latest fabric code, unstable.
|
||||
[Fabric v1.3.0](v1.3.0/) | stable fabric 1.3.0 release.
|
||||
[Fabric v1.2.0](v1.2.0/) | stable fabric 1.2.0 release.
|
||||
[Fabric v1.1.0](v1.1.0/) | stable fabric 1.1.0 release.
|
||||
[Fabric v1.0.6](v1.0.6/) | fabric v1.0.6 release.
|
||||
[Fabric v1.1.0](v1.1.0/) | latest stable fabric 1.1.0 release.
|
||||
[Fabric v1.2.0](v1.2.0/) | latest stable fabric 1.2.0 release.
|
||||
[Fabric Latest](latest/) | experimental with latest fabric code, unstable.
|
||||
[Fabric v1.0.5](v1.0.5/) | fabric v1.0.5 release.
|
||||
[Fabric v1.0.2](v1.0.2/) | fabric v1.0.2 release.
|
||||
[Fabric v1.0.0](v1.0.0/) | fabric v1.0.0 release.
|
||||
[Fabric v0.6.0](v0.6.0/) | fabric v0.6.0 release (too old, not recommend to use).
|
||||
|
||||
|
||||
## Getting Started
|
||||
|
||||
### TLDR
|
||||
RELEASE=v1.3.0
|
||||
|
||||
```bash
|
||||
$ cd v1.2.0; make
|
||||
$ cd ${RELEASE}; make setup test
|
||||
```
|
||||
|
||||
More details are releaved below.
|
||||
|
||||
### Pick up a fabric version
|
||||
|
||||
Enter the subdir of specific version, e.g.,
|
||||
Enter the subdir of specific version and setup, e.g.,
|
||||
|
||||
```bash
|
||||
$ cd v1.2.0 # select a fabric version
|
||||
$ cd ${RELEASE} # select a fabric version
|
||||
$ make setup download # Install docker/compose, and pull required images
|
||||
```
|
||||
|
||||
### Quick Test
|
||||
|
@ -44,7 +49,6 @@ $ cd v1.2.0 # select a fabric version
|
|||
The following command will run the entire process (start a fabric network, create channel, test chaincode and stop it.) pass-through.
|
||||
|
||||
```bash
|
||||
$ make setup download # Install docker/compose, and pull required images
|
||||
$ make test # Test with default fabric solo mode
|
||||
```
|
||||
|
||||
|
@ -62,10 +66,6 @@ $ HLF_MODE=be make test # Start a blockchain-explorer to view network info
|
|||
|
||||
See [detailed steps](docs/steps.md)
|
||||
|
||||
## TODO
|
||||
|
||||
* Support boot up a fabric network with hyperledger composer
|
||||
|
||||
## Acknowledgement
|
||||
|
||||
* [Hyperledger Fabric](https://github.com/hyperledger/fabric/) project.
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
FABRIC_IMG_TAG=latest
|
||||
EXT_IMG_TAG=amd64-0.4.13
|
||||
NETWORK=hlf_net
|
|
@ -8,7 +8,6 @@ SHELL:=/bin/bash
|
|||
|
||||
# mode of the network: solo, kafka, couchdb, event, dev
|
||||
HLF_MODE ?= solo
|
||||
HLF_VERSION ?= latest
|
||||
|
||||
CODE_BUILD_WAIT=40 # time to wait to build peer/orderer from local code
|
||||
NETWORK_INIT_WAIT=2 # time to wait the fabric network finish initialization
|
||||
|
|
|
@ -11,7 +11,7 @@ services:
|
|||
extends:
|
||||
file: base.yaml
|
||||
service: orderer-base
|
||||
image: yeasy/hyperledger-fabric:latest
|
||||
image: yeasy/hyperledger-fabric:${FABRIC_IMG_TAG}
|
||||
container_name: orderer.example.com
|
||||
hostname: orderer.example.com
|
||||
ports:
|
||||
|
@ -38,7 +38,7 @@ services:
|
|||
extends:
|
||||
file: base.yaml
|
||||
service: peer-base
|
||||
image: yeasy/hyperledger-fabric:latest
|
||||
image: yeasy/hyperledger-fabric:${FABRIC_IMG_TAG}
|
||||
container_name: peer0.org1.example.com
|
||||
hostname: peer0.org1.example.com
|
||||
environment:
|
||||
|
@ -67,7 +67,7 @@ services:
|
|||
extends:
|
||||
file: base.yaml
|
||||
service: cli-base
|
||||
image: yeasy/hyperledger-fabric:latest
|
||||
image: yeasy/hyperledger-fabric:${FABRIC_IMG_TAG}
|
||||
container_name: fabric-cli
|
||||
hostname: fabric-cli
|
||||
tty: true
|
||||
|
|
|
@ -18,15 +18,17 @@ version: '2' # compose v3 still doesn't support `extends`, shame!
|
|||
|
||||
services:
|
||||
ca-base:
|
||||
image: yeasy/hyperledger-fabric-ca:latest
|
||||
image: yeasy/hyperledger-fabric-ca:${FABRIC_IMG_TAG}
|
||||
restart: always
|
||||
network_mode: ${NETWORK}
|
||||
environment:
|
||||
- FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
|
||||
- FABRIC_CA_SERVER_TLS_ENABLED=true # change to false to disable TLS
|
||||
|
||||
orderer-base:
|
||||
image: yeasy/hyperledger-fabric-orderer:latest
|
||||
image: yeasy/hyperledger-fabric-orderer:${FABRIC_IMG_TAG}
|
||||
restart: always
|
||||
network_mode: ${NETWORK}
|
||||
# Default config can be found at https://github.com/hyperledger/fabric/blob/master/orderer/common/localconfig/config.go
|
||||
environment:
|
||||
- ORDERER_GENERAL_LOGLEVEL=DEBUG # default: INFO
|
||||
|
@ -56,13 +58,14 @@ services:
|
|||
command: orderer start
|
||||
|
||||
peer-base: # abstract base for fabric-peer, will be used in peer.yaml
|
||||
image: yeasy/hyperledger-fabric-peer:latest
|
||||
image: yeasy/hyperledger-fabric-peer:${FABRIC_IMG_TAG}
|
||||
restart: always
|
||||
network_mode: ${NETWORK}
|
||||
environment:
|
||||
- CORE_PEER_ADDRESSAUTODETECT=false
|
||||
- CORE_LOGGING_LEVEL=DEBUG
|
||||
- CORE_LOGGING_FORMAT=%{color}[%{id:03x} %{time:01-02 15:04:05.00 MST}] [%{longpkg}] %{callpath} -> %{level:.4s}%{color:reset} %{message}
|
||||
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=latest_default # uncomment this to use specific network
|
||||
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${NETWORK} # uncomment this to use specific network
|
||||
- CORE_PEER_GOSSIP_USELEADERELECTION=true
|
||||
- CORE_PEER_GOSSIP_ORGLEADER=false # whether this node is the org leader, default to false
|
||||
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=0.0.0.0:7051 # external addr for peers in other orgs
|
||||
|
@ -85,8 +88,9 @@ services:
|
|||
command: peer node start
|
||||
|
||||
cli-base:
|
||||
image: yeasy/hyperledger-fabric:latest
|
||||
image: yeasy/hyperledger-fabric:${FABRIC_IMG_TAG}
|
||||
restart: always
|
||||
network_mode: ${NETWORK}
|
||||
tty: true
|
||||
environment:
|
||||
- CORE_LOGGING_LEVEL=DEBUG
|
||||
|
@ -98,8 +102,9 @@ services:
|
|||
|
||||
#deprecated
|
||||
event-listener-base:
|
||||
image: yeasy/hyperledger-fabric:latest
|
||||
image: yeasy/hyperledger-fabric:${FABRIC_IMG_TAG}
|
||||
restart: always
|
||||
network_mode: ${NETWORK}
|
||||
tty: true
|
||||
environment:
|
||||
- CORE_PEER_ID=fabric-event-listener
|
||||
|
@ -110,8 +115,9 @@ services:
|
|||
command: bash -c 'while true; do sleep 20170504; done'
|
||||
|
||||
zookeeper-base:
|
||||
image: hyperledger/fabric-zookeeper:amd64-0.4.13
|
||||
image: hyperledger/fabric-zookeeper:${EXT_IMG_TAG}
|
||||
restart: always
|
||||
network_mode: ${NETWORK}
|
||||
tty: true
|
||||
expose:
|
||||
- '2181'
|
||||
|
@ -121,8 +127,9 @@ services:
|
|||
kafka-base:
|
||||
# official repo doesn't have 1.1.0-alpha tag, however, kafka changes version recently
|
||||
#image: yeasy/hyperledger-fabric-kafka:0.10.2.0
|
||||
image: hyperledger/fabric-kafka:amd64-0.4.13
|
||||
image: hyperledger/fabric-kafka:${EXT_IMG_TAG}
|
||||
restart: always
|
||||
network_mode: ${NETWORK}
|
||||
tty: true
|
||||
environment:
|
||||
- KAFKA_MESSAGE_MAX_BYTES=1048576 # 1 * 1024 * 1024 B
|
||||
|
@ -133,8 +140,9 @@ services:
|
|||
- '9092'
|
||||
|
||||
couchdb-base:
|
||||
image: hyperledger/fabric-couchdb:amd64-0.4.13
|
||||
image: hyperledger/fabric-couchdb:${EXT_IMG_TAG}
|
||||
restart: always
|
||||
network_mode: ${NETWORK}
|
||||
tty: true
|
||||
|
||||
explorer-base:
|
||||
|
@ -146,5 +154,11 @@ services:
|
|||
mysql-base: # mysql service
|
||||
image: mysql:8.0
|
||||
restart: always
|
||||
network_mode: ${NETWORK}
|
||||
expose:
|
||||
- "3306"
|
||||
|
||||
networks:
|
||||
default:
|
||||
external:
|
||||
name: ${NETWORK}
|
|
@ -0,0 +1,18 @@
|
|||
|
||||
OU
|
||||
Role
|
||||
EnrollmentID
|
||||
RevocationHandleD
|
||||
/KÙ—\TMւ°NÉ®ðc[½ó_Óš €»?8þ“ñr´-<2D>`—S¸Á!*1‚WØø~þ¿þöD
|
||||
qÝÒ!ÐÂR"$“ºDþeR¢œoö{Ù%‡{„ú¾ c†Û¾CO?wê=Û¦(\Ó¹Z<C2B9>üEª§’ï«\Û‚t‡"D
|
||||
÷s€“@É´O<C2B4>ojRA£hÙ¬ùn¥
|
||||
Á3ÀRUEÇy¯> FÆ0mpPr»è{ÚV㥟¦æpö¡ÀM¨ùgèn"D
|
||||
ÀKV¨Q£Ì•OÐÄ|ß!š°R*!å¹îàW<1B>àdˆ tT@w.ÛáŸù' mù–üp¶"Qã2t[ñ<>#™Ñ„"D
|
||||
¹ppŸ²¨•ž9J8wÎœú
<™è×
[™,>˜OÀH€
|
||||
Ïôk¤?[®‰ztýP_Á-gto+«4Ô³æ?$"D
|
||||
<20>º¡)T¦p3o<sÆ6M6ÍŽý ~Ñx×]x È ç¬´.)ûºÿäKÌ!_IÒá=å‘D•î*•îÜú*ˆ
|
||||
€G£e—Ã÷†xùh”X±MHY¬Ï±½h±£PB„½ ^Ï„/„aÔÃù`Æ™ï\áJHay¨
|
||||
Ùñ`BäyÑÐÓ OëŠÊõGf‰ôͨKÞXåEËð|~°:<16>¾" <20>Sr{ȼtÕ³D•¶ƒþ²º?¹—WNèlOùÓˆ'2D
|
||||
K¨û<C2A8>öâ0VÊÄEì”BV†êûª$ßxâj¡†‚ö "~AŠJ9<4A>Ù`mü<À^Ž_9óz$Q¬÷:D
|
||||
I·–8°QÂÈ*´ú½ÕDhïñ<C3AF>Lù26µOÀxN Äû «>MX>õÛ¿e£MxõB)IÜTô¾E<C2BE>%öÍB I“°l[ÔÌ0„’hŸõ@Q‚¨³§ƒ«Ë‰Û¡µJJ ]œA½ëò0³¨(Ð<>1Õ‹Oëx]<5D>QGÏ-«Š1R ¥šÌeÈëC’†Á•`>‘`£F‘û
|
||||
¢l=Á‰f0øô
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PUBLIC KEY-----
|
||||
MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEDSMDdZOsmA1SpSm9GK1mKkTPBPVKjeYo
|
||||
mEZMM/kqHNiXQErz6y77zu+kaxVwMM2I+jipDuYHzFxJA9m27hpFODNHApg5WEla
|
||||
Ak5Fo+Ak9cw5WUydukL1FjBg3UICNOgi
|
||||
-----END PUBLIC KEY-----
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICHjCCAcWgAwIBAgIUFBjX17iaFQ0kRSLN1YQIdlBIdM0wCgYIKoZIzj0EAwIw
|
||||
bDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK
|
||||
ExBvcmcxLmV4YW1wbGUuY29tMQswCQYDVQQLEwJjYTEcMBoGA1UEAxMTY2Eub3Jn
|
||||
MS5leGFtcGxlLmNvbTAeFw0xODEwMTAwOTI2MDBaFw0zMzEwMDYwOTI2MDBaMGwx
|
||||
CzAJBgNVBAYTAlVTMRcwFQYDVQQIEw5Ob3J0aCBDYXJvbGluYTEZMBcGA1UEChMQ
|
||||
b3JnMS5leGFtcGxlLmNvbTELMAkGA1UECxMCY2ExHDAaBgNVBAMTE2NhLm9yZzEu
|
||||
ZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR/vnxyLUrmMJJx
|
||||
h1nGAk+YidN8RL0XKl8gjzNa2SuEHfaROUhBVU3r06rDuJoNn+P3tcIwFsgndJmk
|
||||
vLrCBcQDo0UwQzAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBATAd
|
||||
BgNVHQ4EFgQUu79ukG5b4N19gYSYYALk+wY91SYwCgYIKoZIzj0EAwIDRwAwRAIg
|
||||
THDvbxlsa/Xw0gEAXlSfNS5XIthdULlQmsWzA0WEz1ACICXifW6iWfl4fibYwqR5
|
||||
L/XiIQ/2UQ9nHnPbZm3ISVvN
|
||||
-----END CERTIFICATE-----
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgiN1Z0HqaMHo8VPPt
|
||||
2267O46l2yZ1r411HjSr9rOPXeOhRANCAAR/vnxyLUrmMJJxh1nGAk+YidN8RL0X
|
||||
Kl8gjzNa2SuEHfaROUhBVU3r06rDuJoNn+P3tcIwFsgndJmkvLrCBcQD
|
||||
-----END PRIVATE KEY-----
|
|
@ -0,0 +1,132 @@
|
|||
version: 1.3.0
|
||||
port: 7054
|
||||
debug: false
|
||||
crlsizelimit: 512000
|
||||
tls:
|
||||
enabled: false
|
||||
certfile: null
|
||||
keyfile: null
|
||||
clientauth:
|
||||
type: noclientcert
|
||||
certfiles: null
|
||||
ca:
|
||||
name: ca.org1.example.com
|
||||
keyfile: ca.org1.example.com_sk
|
||||
certfile: ca.org1.example.com-cert.pem
|
||||
chainfile: null
|
||||
crl:
|
||||
expiry: 24h
|
||||
registry:
|
||||
maxenrollments: -1
|
||||
identities:
|
||||
- name: admin-default
|
||||
pass: pass-default
|
||||
type: client
|
||||
affiliation: ""
|
||||
attrs:
|
||||
hf.Registrar.Roles: '*'
|
||||
hf.Registrar.DelegateRoles: '*'
|
||||
hf.Revoker: true
|
||||
hf.IntermediateCA: true
|
||||
hf.GenCRL: true
|
||||
hf.Registrar.Attributes: '*'
|
||||
hf.AffiliationMgr: true
|
||||
db:
|
||||
type: sqlite3
|
||||
datasource: fabric-ca-server.db
|
||||
tls:
|
||||
enabled: false
|
||||
certfiles: null
|
||||
client:
|
||||
certfile: null
|
||||
keyfile: null
|
||||
ldap:
|
||||
enabled: false
|
||||
url: ldap://<adminDN>:<adminPassword>@<host>:<port>/<base>
|
||||
tls:
|
||||
certfiles: null
|
||||
client:
|
||||
certfile: null
|
||||
keyfile: null
|
||||
attribute:
|
||||
names:
|
||||
- uid
|
||||
- member
|
||||
converters:
|
||||
- name: null
|
||||
value: null
|
||||
maps:
|
||||
groups:
|
||||
- name: null
|
||||
value: null
|
||||
affiliations:
|
||||
org1:
|
||||
- department1
|
||||
- department2
|
||||
org2:
|
||||
- department1
|
||||
signing:
|
||||
default:
|
||||
usage:
|
||||
- digital signature
|
||||
expiry: 8760h
|
||||
profiles:
|
||||
ca:
|
||||
usage:
|
||||
- cert sign
|
||||
- crl sign
|
||||
expiry: 43800h
|
||||
caconstraint:
|
||||
isca: true
|
||||
maxpathlen: 0
|
||||
tls:
|
||||
usage:
|
||||
- signing
|
||||
- key encipherment
|
||||
- server auth
|
||||
- client auth
|
||||
- key agreement
|
||||
expiry: 8760h
|
||||
csr:
|
||||
cn: ca.org1.example.com
|
||||
keyrequest:
|
||||
algo: ecdsa
|
||||
size: 256
|
||||
names:
|
||||
- C: US
|
||||
ST: North Carolina
|
||||
L: null
|
||||
O: org1.example.com
|
||||
OU: ca
|
||||
hosts:
|
||||
- ca.org1.example.com
|
||||
- localhost
|
||||
ca:
|
||||
expiry: 131400h
|
||||
pathlength: 1
|
||||
idemix:
|
||||
rhpoolsize: 1000
|
||||
nonceexpiration: 15s
|
||||
noncesweepinterval: 15m
|
||||
bccsp:
|
||||
default: SW
|
||||
sw:
|
||||
hash: SHA2
|
||||
security: 256
|
||||
filekeystore:
|
||||
keystore: msp/keystore
|
||||
cacount: null
|
||||
cafiles: null
|
||||
intermediate:
|
||||
parentserver:
|
||||
url: null
|
||||
caname: null
|
||||
enrollment:
|
||||
hosts: null
|
||||
profile: null
|
||||
label: null
|
||||
tls:
|
||||
certfiles: null
|
||||
client:
|
||||
certfile: null
|
||||
keyfile: null
|
Binary file not shown.
|
@ -0,0 +1,6 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGkAgEBBDB9kCD1CUKnFFo6ks3Mo2qS/X+GFNPPT0SZkeR4iHswUzsZIV7bTwN9
|
||||
0RDjlfS2Ix+gBwYFK4EEACKhZANiAAQNIwN1k6yYDVKlKb0YrWYqRM8E9UqN5iiY
|
||||
Rkwz+Soc2JdASvPrLvvO76RrFXAwzYj6OKkO5gfMXEkD2bbuGkU4M0cCmDlYSVoC
|
||||
TkWj4CT1zDlZTJ26QvUWMGDdQgI06CI=
|
||||
-----END PRIVATE KEY-----
|
|
@ -0,0 +1 @@
|
|||
<EFBFBD>ƶ<EFBFBD><19><><EFBFBD><16><><EFBFBD>f<EFBFBD>i<EFBFBD>:<3A>bb<62><62>f<EFBFBD>:<3A>߶<EFBFBD><DFB6><EFBFBD>G
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgiN1Z0HqaMHo8VPPt
|
||||
2267O46l2yZ1r411HjSr9rOPXeOhRANCAAR/vnxyLUrmMJJxh1nGAk+YidN8RL0X
|
||||
Kl8gjzNa2SuEHfaROUhBVU3r06rDuJoNn+P3tcIwFsgndJmkvLrCBcQD
|
||||
-----END PRIVATE KEY-----
|
Binary file not shown.
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PUBLIC KEY-----
|
||||
MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEWdv1PmR2LLHqufi+l8aYtxnRvnJBwHop
|
||||
mSWv/TJgomLUWfPd2jBSWZEhY0FpkAPSDSJQNRIG8wMVqbWRcL3uYIyqj3PMO6yt
|
||||
LdTu49HIFPocwCLg3KNyA4xpcS8zUjc4
|
||||
-----END PUBLIC KEY-----
|
|
@ -0,0 +1,132 @@
|
|||
version: 1.3.0
|
||||
port: 7054
|
||||
debug: false
|
||||
crlsizelimit: 512000
|
||||
tls:
|
||||
enabled: false
|
||||
certfile: null
|
||||
keyfile: null
|
||||
clientauth:
|
||||
type: noclientcert
|
||||
certfiles: null
|
||||
ca:
|
||||
name: tlsca.org1.example.com
|
||||
keyfile: tlsca.org1.example.com_sk
|
||||
certfile: tlsca.org1.example.com-cert.pem
|
||||
chainfile: null
|
||||
crl:
|
||||
expiry: 24h
|
||||
registry:
|
||||
maxenrollments: -1
|
||||
identities:
|
||||
- name: admin-default
|
||||
pass: pass-default
|
||||
type: client
|
||||
affiliation: ""
|
||||
attrs:
|
||||
hf.Registrar.Roles: '*'
|
||||
hf.Registrar.DelegateRoles: '*'
|
||||
hf.Revoker: true
|
||||
hf.IntermediateCA: true
|
||||
hf.GenCRL: true
|
||||
hf.Registrar.Attributes: '*'
|
||||
hf.AffiliationMgr: true
|
||||
db:
|
||||
type: sqlite3
|
||||
datasource: fabric-ca-server.db
|
||||
tls:
|
||||
enabled: false
|
||||
certfiles: null
|
||||
client:
|
||||
certfile: null
|
||||
keyfile: null
|
||||
ldap:
|
||||
enabled: false
|
||||
url: ldap://<adminDN>:<adminPassword>@<host>:<port>/<base>
|
||||
tls:
|
||||
certfiles: null
|
||||
client:
|
||||
certfile: null
|
||||
keyfile: null
|
||||
attribute:
|
||||
names:
|
||||
- uid
|
||||
- member
|
||||
converters:
|
||||
- name: null
|
||||
value: null
|
||||
maps:
|
||||
groups:
|
||||
- name: null
|
||||
value: null
|
||||
affiliations:
|
||||
org1:
|
||||
- department1
|
||||
- department2
|
||||
org2:
|
||||
- department1
|
||||
signing:
|
||||
default:
|
||||
usage:
|
||||
- digital signature
|
||||
expiry: 8760h
|
||||
profiles:
|
||||
ca:
|
||||
usage:
|
||||
- cert sign
|
||||
- crl sign
|
||||
expiry: 43800h
|
||||
caconstraint:
|
||||
isca: true
|
||||
maxpathlen: 0
|
||||
tls:
|
||||
usage:
|
||||
- signing
|
||||
- key encipherment
|
||||
- server auth
|
||||
- client auth
|
||||
- key agreement
|
||||
expiry: 8760h
|
||||
csr:
|
||||
cn: tlsca.org1.example.com
|
||||
keyrequest:
|
||||
algo: ecdsa
|
||||
size: 256
|
||||
names:
|
||||
- C: US
|
||||
ST: North Carolina
|
||||
L: null
|
||||
O: org1.example.com
|
||||
OU: tlsca
|
||||
hosts:
|
||||
- tlsca.org1.example.com
|
||||
- localhost
|
||||
ca:
|
||||
expiry: 131400h
|
||||
pathlength: 1
|
||||
idemix:
|
||||
rhpoolsize: 1000
|
||||
nonceexpiration: 15s
|
||||
noncesweepinterval: 15m
|
||||
bccsp:
|
||||
default: SW
|
||||
sw:
|
||||
hash: SHA2
|
||||
security: 256
|
||||
filekeystore:
|
||||
keystore: msp/keystore
|
||||
cacount: null
|
||||
cafiles: null
|
||||
intermediate:
|
||||
parentserver:
|
||||
url: null
|
||||
caname: null
|
||||
enrollment:
|
||||
hosts: null
|
||||
profile: null
|
||||
label: null
|
||||
tls:
|
||||
certfiles: null
|
||||
client:
|
||||
certfile: null
|
||||
keyfile: null
|
Binary file not shown.
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgIBJvF5e9l85ObbFs
|
||||
duRrWd2ZPgc/vmaR231EQhsibl6hRANCAAR+EOYSg7O1tuEvYiXkWlNtg06RjTzv
|
||||
sz9aASDbkjLfaIDf+mOjUzESXAlXqma+hy/6EJT+Bt7fVq0mdvVTlec6
|
||||
-----END PRIVATE KEY-----
|
|
@ -0,0 +1,6 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGkAgEBBDAOZeFX1SIKBZaYMr4mlObgPA+nf9HPxUpPn6LnwuJin86W0OlRpBcf
|
||||
m52W/svE6cegBwYFK4EEACKhZANiAARZ2/U+ZHYsseq5+L6Xxpi3GdG+ckHAeimZ
|
||||
Ja/9MmCiYtRZ893aMFJZkSFjQWmQA9INIlA1EgbzAxWptZFwve5gjKqPc8w7rK0t
|
||||
1O7j0cgU+hzAIuDco3IDjGlxLzNSNzg=
|
||||
-----END PRIVATE KEY-----
|
|
@ -0,0 +1 @@
|
|||
<EFBFBD>Fm'<27>Mo<4D>v<EFBFBD>k4x<34>E%<25><><EFBFBD> {5<>*B<>Mql<71><6C>
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICKjCCAdGgAwIBAgIUYILtTrGFkEL2QHDFj1jvfBAPZYQwCgYIKoZIzj0EAwIw
|
||||
cjELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK
|
||||
ExBvcmcxLmV4YW1wbGUuY29tMQ4wDAYDVQQLEwV0bHNjYTEfMB0GA1UEAxMWdGxz
|
||||
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xODEwMTAwOTI2MDBaFw0zMzEwMDYwOTI2
|
||||
MDBaMHIxCzAJBgNVBAYTAlVTMRcwFQYDVQQIEw5Ob3J0aCBDYXJvbGluYTEZMBcG
|
||||
A1UEChMQb3JnMS5leGFtcGxlLmNvbTEOMAwGA1UECxMFdGxzY2ExHzAdBgNVBAMT
|
||||
FnRsc2NhLm9yZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNC
|
||||
AAR+EOYSg7O1tuEvYiXkWlNtg06RjTzvsz9aASDbkjLfaIDf+mOjUzESXAlXqma+
|
||||
hy/6EJT+Bt7fVq0mdvVTlec6o0UwQzAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/
|
||||
BAgwBgEB/wIBATAdBgNVHQ4EFgQU8TyFJWYtXTJDpEvvaA8vwVFCT2IwCgYIKoZI
|
||||
zj0EAwIDRwAwRAIgAmyCF1D7mXAjHZpBwQsF2pOXS2V/LQ+j3Wg0hvjixZgCICEh
|
||||
X7C57zvM+RKPMYjWdlzXvt1JU+8l6nw9CGsWCPnY
|
||||
-----END CERTIFICATE-----
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgIBJvF5e9l85ObbFs
|
||||
duRrWd2ZPgc/vmaR231EQhsibl6hRANCAAR+EOYSg7O1tuEvYiXkWlNtg06RjTzv
|
||||
sz9aASDbkjLfaIDf+mOjUzESXAlXqma+hy/6EJT+Bt7fVq0mdvVTlec6
|
||||
-----END PRIVATE KEY-----
|
|
@ -0,0 +1,162 @@
|
|||
|
||||
#############################################################################
|
||||
# This is a configuration file for the fabric-ca-client command.
|
||||
#
|
||||
# COMMAND LINE ARGUMENTS AND ENVIRONMENT VARIABLES
|
||||
# ------------------------------------------------
|
||||
# Each configuration element can be overridden via command line
|
||||
# arguments or environment variables. The precedence for determining
|
||||
# the value of each element is as follows:
|
||||
# 1) command line argument
|
||||
# Examples:
|
||||
# a) --url https://localhost:7054
|
||||
# To set the fabric-ca server url
|
||||
# b) --tls.client.certfile certfile.pem
|
||||
# To set the client certificate for TLS
|
||||
# 2) environment variable
|
||||
# Examples:
|
||||
# a) FABRIC_CA_CLIENT_URL=https://localhost:7054
|
||||
# To set the fabric-ca server url
|
||||
# b) FABRIC_CA_CLIENT_TLS_CLIENT_CERTFILE=certfile.pem
|
||||
# To set the client certificate for TLS
|
||||
# 3) configuration file
|
||||
# 4) default value (if there is one)
|
||||
# All default values are shown beside each element below.
|
||||
#
|
||||
# FILE NAME ELEMENTS
|
||||
# ------------------
|
||||
# The value of all fields whose name ends with "file" or "files" are
|
||||
# name or names of other files.
|
||||
# For example, see "tls.certfiles" and "tls.client.certfile".
|
||||
# The value of each of these fields can be a simple filename, a
|
||||
# relative path, or an absolute path. If the value is not an
|
||||
# absolute path, it is interpretted as being relative to the location
|
||||
# of this configuration file.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
#############################################################################
|
||||
# Client Configuration
|
||||
#############################################################################
|
||||
|
||||
# URL of the Fabric-ca-server (default: http://localhost:7054)
|
||||
url: http://ca.org1.example.com:7054
|
||||
|
||||
# Membership Service Provider (MSP) directory
|
||||
# This is useful when the client is used to enroll a peer or orderer, so
|
||||
# that the enrollment artifacts are stored in the format expected by MSP.
|
||||
mspdir: msp
|
||||
|
||||
#############################################################################
|
||||
# TLS section for secure socket connection
|
||||
#
|
||||
# certfiles - PEM-encoded list of trusted root certificate files
|
||||
# client:
|
||||
# certfile - PEM-encoded certificate file for when client authentication
|
||||
# is enabled on server
|
||||
# keyfile - PEM-encoded key file for when client authentication
|
||||
# is enabled on server
|
||||
#############################################################################
|
||||
tls:
|
||||
# TLS section for secure socket connection
|
||||
certfiles:
|
||||
client:
|
||||
certfile:
|
||||
keyfile:
|
||||
|
||||
#############################################################################
|
||||
# Certificate Signing Request section for generating the CSR for an
|
||||
# enrollment certificate (ECert)
|
||||
#
|
||||
# cn - Used by CAs to determine which domain the certificate is to be generated for
|
||||
#
|
||||
# serialnumber - The serialnumber field, if specified, becomes part of the issued
|
||||
# certificate's DN (Distinguished Name). For example, one use case for this is
|
||||
# a company with its own CA (Certificate Authority) which issues certificates
|
||||
# to its employees and wants to include the employee's serial number in the DN
|
||||
# of its issued certificates.
|
||||
# WARNING: The serialnumber field should not be confused with the certificate's
|
||||
# serial number which is set by the CA but is not a component of the
|
||||
# certificate's DN.
|
||||
#
|
||||
# names - A list of name objects. Each name object should contain at least one
|
||||
# "C", "L", "O", or "ST" value (or any combination of these) where these
|
||||
# are abbreviations for the following:
|
||||
# "C": country
|
||||
# "L": locality or municipality (such as city or town name)
|
||||
# "O": organization
|
||||
# "OU": organizational unit, such as the department responsible for owning the key;
|
||||
# it can also be used for a "Doing Business As" (DBS) name
|
||||
# "ST": the state or province
|
||||
#
|
||||
# Note that the "OU" or organizational units of an ECert are always set according
|
||||
# to the values of the identities type and affiliation. OUs are calculated for an enroll
|
||||
# as OU=<type>, OU=<affiliationRoot>, ..., OU=<affiliationLeaf>. For example, an identity
|
||||
# of type "client" with an affiliation of "org1.dept2.team3" would have the following
|
||||
# organizational units: OU=client, OU=org1, OU=dept2, OU=team3
|
||||
#
|
||||
# hosts - A list of host names for which the certificate should be valid
|
||||
#
|
||||
#############################################################################
|
||||
csr:
|
||||
cn: admin-default
|
||||
keyrequest:
|
||||
algo: ecdsa
|
||||
size: 256
|
||||
serialnumber:
|
||||
names:
|
||||
- C: US
|
||||
ST: North Carolina
|
||||
L:
|
||||
O: Hyperledger
|
||||
OU: Fabric
|
||||
hosts:
|
||||
- ca-client
|
||||
|
||||
#############################################################################
|
||||
# Registration section used to register a new identity with fabric-ca server
|
||||
#
|
||||
# name - Unique name of the identity
|
||||
# type - Type of identity being registered (e.g. 'peer, app, user')
|
||||
# affiliation - The identity's affiliation
|
||||
# maxenrollments - The maximum number of times the secret can be reused to enroll.
|
||||
# Specially, -1 means unlimited; 0 means to use CA's max enrollment
|
||||
# value.
|
||||
# attributes - List of name/value pairs of attribute for identity
|
||||
#############################################################################
|
||||
id:
|
||||
name:
|
||||
type:
|
||||
affiliation:
|
||||
maxenrollments: 0
|
||||
attributes:
|
||||
# - name:
|
||||
# value:
|
||||
|
||||
#############################################################################
|
||||
# Enrollment section used to enroll an identity with fabric-ca server
|
||||
#
|
||||
# profile - Name of the signing profile to use in issuing the certificate
|
||||
# label - Label to use in HSM operations
|
||||
#############################################################################
|
||||
enrollment:
|
||||
profile:
|
||||
label:
|
||||
|
||||
#############################################################################
|
||||
# Name of the CA to connect to within the fabric-ca server
|
||||
#############################################################################
|
||||
caname:
|
||||
|
||||
#############################################################################
|
||||
# BCCSP (BlockChain Crypto Service Provider) section allows to select which
|
||||
# crypto implementation library to use
|
||||
#############################################################################
|
||||
bccsp:
|
||||
default: SW
|
||||
sw:
|
||||
hash: SHA2
|
||||
security: 256
|
||||
filekeystore:
|
||||
# The directory used for the software file-based keystore
|
||||
keystore: msp/keystore
|
|
@ -0,0 +1,18 @@
|
|||
|
||||
OU
|
||||
Role
|
||||
EnrollmentID
|
||||
RevocationHandleD
|
||||
/KÙ—\TMւ°NÉ®ðc[½ó_Óš €»?8þ“ñr´-<2D>`—S¸Á!*1‚WØø~þ¿þöD
|
||||
qÝÒ!ÐÂR"$“ºDþeR¢œoö{Ù%‡{„ú¾ c†Û¾CO?wê=Û¦(\Ó¹Z<C2B9>üEª§’ï«\Û‚t‡"D
|
||||
÷s€“@É´O<C2B4>ojRA£hÙ¬ùn¥
|
||||
Á3ÀRUEÇy¯> FÆ0mpPr»è{ÚV㥟¦æpö¡ÀM¨ùgèn"D
|
||||
ÀKV¨Q£Ì•OÐÄ|ß!š°R*!å¹îàW<1B>àdˆ tT@w.ÛáŸù' mù–üp¶"Qã2t[ñ<>#™Ñ„"D
|
||||
¹ppŸ²¨•ž9J8wÎœú
<™è×
[™,>˜OÀH€
|
||||
Ïôk¤?[®‰ztýP_Á-gto+«4Ô³æ?$"D
|
||||
<20>º¡)T¦p3o<sÆ6M6ÍŽý ~Ñx×]x È ç¬´.)ûºÿäKÌ!_IÒá=å‘D•î*•îÜú*ˆ
|
||||
€G£e—Ã÷†xùh”X±MHY¬Ï±½h±£PB„½ ^Ï„/„aÔÃù`Æ™ï\áJHay¨
|
||||
Ùñ`BäyÑÐÓ OëŠÊõGf‰ôͨKÞXåEËð|~°:<16>¾" <20>Sr{ȼtÕ³D•¶ƒþ²º?¹—WNèlOùÓˆ'2D
|
||||
K¨û<C2A8>öâ0VÊÄEì”BV†êûª$ßxâj¡†‚ö "~AŠJ9<4A>Ù`mü<À^Ž_9óz$Q¬÷:D
|
||||
I·–8°QÂÈ*´ú½ÕDhïñ<C3AF>Lù26µOÀxN Äû «>MX>õÛ¿e£MxõB)IÜTô¾E<C2BE>%öÍB I“°l[ÔÌ0„’hŸõ@Q‚¨³§ƒ«Ë‰Û¡µJJ ]œA½ëò0³¨(Ð<>1Õ‹Oëx]<5D>QGÏ-«Š1R ¥šÌeÈëC’†Á•`>‘`£F‘û
|
||||
¢l=Á‰f0øô
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PUBLIC KEY-----
|
||||
MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEDSMDdZOsmA1SpSm9GK1mKkTPBPVKjeYo
|
||||
mEZMM/kqHNiXQErz6y77zu+kaxVwMM2I+jipDuYHzFxJA9m27hpFODNHApg5WEla
|
||||
Ak5Fo+Ak9cw5WUydukL1FjBg3UICNOgi
|
||||
-----END PUBLIC KEY-----
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICHjCCAcWgAwIBAgIUFBjX17iaFQ0kRSLN1YQIdlBIdM0wCgYIKoZIzj0EAwIw
|
||||
bDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK
|
||||
ExBvcmcxLmV4YW1wbGUuY29tMQswCQYDVQQLEwJjYTEcMBoGA1UEAxMTY2Eub3Jn
|
||||
MS5leGFtcGxlLmNvbTAeFw0xODEwMTAwOTI2MDBaFw0zMzEwMDYwOTI2MDBaMGwx
|
||||
CzAJBgNVBAYTAlVTMRcwFQYDVQQIEw5Ob3J0aCBDYXJvbGluYTEZMBcGA1UEChMQ
|
||||
b3JnMS5leGFtcGxlLmNvbTELMAkGA1UECxMCY2ExHDAaBgNVBAMTE2NhLm9yZzEu
|
||||
ZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR/vnxyLUrmMJJx
|
||||
h1nGAk+YidN8RL0XKl8gjzNa2SuEHfaROUhBVU3r06rDuJoNn+P3tcIwFsgndJmk
|
||||
vLrCBcQDo0UwQzAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBATAd
|
||||
BgNVHQ4EFgQUu79ukG5b4N19gYSYYALk+wY91SYwCgYIKoZIzj0EAwIDRwAwRAIg
|
||||
THDvbxlsa/Xw0gEAXlSfNS5XIthdULlQmsWzA0WEz1ACICXifW6iWfl4fibYwqR5
|
||||
L/XiIQ/2UQ9nHnPbZm3ISVvN
|
||||
-----END CERTIFICATE-----
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgZrwah78tlyMwH4ae
|
||||
ZtAaf1VUiEomgNlJiJMEZtbI69mhRANCAATHx4bqLxk/6+AuPl3fp+usYmv36sGR
|
||||
gDXNwOJNj8FFvKbc972Q4e+OUoGjD3OWY9QVOXktTJu7XIgUjNzdUTte
|
||||
-----END PRIVATE KEY-----
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICYTCCAgigAwIBAgIUc+B8yCS4gvRvORC1tN+ciGJXVhYwCgYIKoZIzj0EAwIw
|
||||
bDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK
|
||||
ExBvcmcxLmV4YW1wbGUuY29tMQswCQYDVQQLEwJjYTEcMBoGA1UEAxMTY2Eub3Jn
|
||||
MS5leGFtcGxlLmNvbTAeFw0xODEwMTAwOTI2MDBaFw0xOTEwMTAwOTMxMDBaMH4x
|
||||
CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4g
|
||||
RnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMQ8wDQYDVQQLEwZj
|
||||
bGllbnQxFjAUBgNVBAMTDWFkbWluLWRlZmF1bHQwWTATBgcqhkjOPQIBBggqhkjO
|
||||
PQMBBwNCAATHx4bqLxk/6+AuPl3fp+usYmv36sGRgDXNwOJNj8FFvKbc972Q4e+O
|
||||
UoGjD3OWY9QVOXktTJu7XIgUjNzdUTteo3YwdDAOBgNVHQ8BAf8EBAMCB4AwDAYD
|
||||
VR0TAQH/BAIwADAdBgNVHQ4EFgQUN2YlpmPSJriIdIkwnMw6nZicUIkwHwYDVR0j
|
||||
BBgwFoAUu79ukG5b4N19gYSYYALk+wY91SYwFAYDVR0RBA0wC4IJY2EtY2xpZW50
|
||||
MAoGCCqGSM49BAMCA0cAMEQCIFdPCkKVb8kKnL6AEMH3DVwuvcuImivs7HKkqEH3
|
||||
U4QcAiBINUX3yyYVlFHII+wbEpBrilgNvak+4/gG+oWemh/iLw==
|
||||
-----END CERTIFICATE-----
|
|
@ -0,0 +1,162 @@
|
|||
|
||||
#############################################################################
|
||||
# This is a configuration file for the fabric-ca-client command.
|
||||
#
|
||||
# COMMAND LINE ARGUMENTS AND ENVIRONMENT VARIABLES
|
||||
# ------------------------------------------------
|
||||
# Each configuration element can be overridden via command line
|
||||
# arguments or environment variables. The precedence for determining
|
||||
# the value of each element is as follows:
|
||||
# 1) command line argument
|
||||
# Examples:
|
||||
# a) --url https://localhost:7054
|
||||
# To set the fabric-ca server url
|
||||
# b) --tls.client.certfile certfile.pem
|
||||
# To set the client certificate for TLS
|
||||
# 2) environment variable
|
||||
# Examples:
|
||||
# a) FABRIC_CA_CLIENT_URL=https://localhost:7054
|
||||
# To set the fabric-ca server url
|
||||
# b) FABRIC_CA_CLIENT_TLS_CLIENT_CERTFILE=certfile.pem
|
||||
# To set the client certificate for TLS
|
||||
# 3) configuration file
|
||||
# 4) default value (if there is one)
|
||||
# All default values are shown beside each element below.
|
||||
#
|
||||
# FILE NAME ELEMENTS
|
||||
# ------------------
|
||||
# The value of all fields whose name ends with "file" or "files" are
|
||||
# name or names of other files.
|
||||
# For example, see "tls.certfiles" and "tls.client.certfile".
|
||||
# The value of each of these fields can be a simple filename, a
|
||||
# relative path, or an absolute path. If the value is not an
|
||||
# absolute path, it is interpretted as being relative to the location
|
||||
# of this configuration file.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
#############################################################################
|
||||
# Client Configuration
|
||||
#############################################################################
|
||||
|
||||
# URL of the Fabric-ca-server (default: http://localhost:7054)
|
||||
url: http://tlsca.org1.example.com:7054
|
||||
|
||||
# Membership Service Provider (MSP) directory
|
||||
# This is useful when the client is used to enroll a peer or orderer, so
|
||||
# that the enrollment artifacts are stored in the format expected by MSP.
|
||||
mspdir: msp
|
||||
|
||||
#############################################################################
|
||||
# TLS section for secure socket connection
|
||||
#
|
||||
# certfiles - PEM-encoded list of trusted root certificate files
|
||||
# client:
|
||||
# certfile - PEM-encoded certificate file for when client authentication
|
||||
# is enabled on server
|
||||
# keyfile - PEM-encoded key file for when client authentication
|
||||
# is enabled on server
|
||||
#############################################################################
|
||||
tls:
|
||||
# TLS section for secure socket connection
|
||||
certfiles:
|
||||
client:
|
||||
certfile:
|
||||
keyfile:
|
||||
|
||||
#############################################################################
|
||||
# Certificate Signing Request section for generating the CSR for an
|
||||
# enrollment certificate (ECert)
|
||||
#
|
||||
# cn - Used by CAs to determine which domain the certificate is to be generated for
|
||||
#
|
||||
# serialnumber - The serialnumber field, if specified, becomes part of the issued
|
||||
# certificate's DN (Distinguished Name). For example, one use case for this is
|
||||
# a company with its own CA (Certificate Authority) which issues certificates
|
||||
# to its employees and wants to include the employee's serial number in the DN
|
||||
# of its issued certificates.
|
||||
# WARNING: The serialnumber field should not be confused with the certificate's
|
||||
# serial number which is set by the CA but is not a component of the
|
||||
# certificate's DN.
|
||||
#
|
||||
# names - A list of name objects. Each name object should contain at least one
|
||||
# "C", "L", "O", or "ST" value (or any combination of these) where these
|
||||
# are abbreviations for the following:
|
||||
# "C": country
|
||||
# "L": locality or municipality (such as city or town name)
|
||||
# "O": organization
|
||||
# "OU": organizational unit, such as the department responsible for owning the key;
|
||||
# it can also be used for a "Doing Business As" (DBS) name
|
||||
# "ST": the state or province
|
||||
#
|
||||
# Note that the "OU" or organizational units of an ECert are always set according
|
||||
# to the values of the identities type and affiliation. OUs are calculated for an enroll
|
||||
# as OU=<type>, OU=<affiliationRoot>, ..., OU=<affiliationLeaf>. For example, an identity
|
||||
# of type "client" with an affiliation of "org1.dept2.team3" would have the following
|
||||
# organizational units: OU=client, OU=org1, OU=dept2, OU=team3
|
||||
#
|
||||
# hosts - A list of host names for which the certificate should be valid
|
||||
#
|
||||
#############################################################################
|
||||
csr:
|
||||
cn: admin-default
|
||||
keyrequest:
|
||||
algo: ecdsa
|
||||
size: 256
|
||||
serialnumber:
|
||||
names:
|
||||
- C: US
|
||||
ST: North Carolina
|
||||
L:
|
||||
O: Hyperledger
|
||||
OU: Fabric
|
||||
hosts:
|
||||
- ca-client
|
||||
|
||||
#############################################################################
|
||||
# Registration section used to register a new identity with fabric-ca server
|
||||
#
|
||||
# name - Unique name of the identity
|
||||
# type - Type of identity being registered (e.g. 'peer, app, user')
|
||||
# affiliation - The identity's affiliation
|
||||
# maxenrollments - The maximum number of times the secret can be reused to enroll.
|
||||
# Specially, -1 means unlimited; 0 means to use CA's max enrollment
|
||||
# value.
|
||||
# attributes - List of name/value pairs of attribute for identity
|
||||
#############################################################################
|
||||
id:
|
||||
name:
|
||||
type:
|
||||
affiliation:
|
||||
maxenrollments: 0
|
||||
attributes:
|
||||
# - name:
|
||||
# value:
|
||||
|
||||
#############################################################################
|
||||
# Enrollment section used to enroll an identity with fabric-ca server
|
||||
#
|
||||
# profile - Name of the signing profile to use in issuing the certificate
|
||||
# label - Label to use in HSM operations
|
||||
#############################################################################
|
||||
enrollment:
|
||||
profile:
|
||||
label:
|
||||
|
||||
#############################################################################
|
||||
# Name of the CA to connect to within the fabric-ca server
|
||||
#############################################################################
|
||||
caname:
|
||||
|
||||
#############################################################################
|
||||
# BCCSP (BlockChain Crypto Service Provider) section allows to select which
|
||||
# crypto implementation library to use
|
||||
#############################################################################
|
||||
bccsp:
|
||||
default: SW
|
||||
sw:
|
||||
hash: SHA2
|
||||
security: 256
|
||||
filekeystore:
|
||||
# The directory used for the software file-based keystore
|
||||
keystore: msp/keystore
|
Binary file not shown.
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PUBLIC KEY-----
|
||||
MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEWdv1PmR2LLHqufi+l8aYtxnRvnJBwHop
|
||||
mSWv/TJgomLUWfPd2jBSWZEhY0FpkAPSDSJQNRIG8wMVqbWRcL3uYIyqj3PMO6yt
|
||||
LdTu49HIFPocwCLg3KNyA4xpcS8zUjc4
|
||||
-----END PUBLIC KEY-----
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICKjCCAdGgAwIBAgIUYILtTrGFkEL2QHDFj1jvfBAPZYQwCgYIKoZIzj0EAwIw
|
||||
cjELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK
|
||||
ExBvcmcxLmV4YW1wbGUuY29tMQ4wDAYDVQQLEwV0bHNjYTEfMB0GA1UEAxMWdGxz
|
||||
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xODEwMTAwOTI2MDBaFw0zMzEwMDYwOTI2
|
||||
MDBaMHIxCzAJBgNVBAYTAlVTMRcwFQYDVQQIEw5Ob3J0aCBDYXJvbGluYTEZMBcG
|
||||
A1UEChMQb3JnMS5leGFtcGxlLmNvbTEOMAwGA1UECxMFdGxzY2ExHzAdBgNVBAMT
|
||||
FnRsc2NhLm9yZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNC
|
||||
AAR+EOYSg7O1tuEvYiXkWlNtg06RjTzvsz9aASDbkjLfaIDf+mOjUzESXAlXqma+
|
||||
hy/6EJT+Bt7fVq0mdvVTlec6o0UwQzAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/
|
||||
BAgwBgEB/wIBATAdBgNVHQ4EFgQU8TyFJWYtXTJDpEvvaA8vwVFCT2IwCgYIKoZI
|
||||
zj0EAwIDRwAwRAIgAmyCF1D7mXAjHZpBwQsF2pOXS2V/LQ+j3Wg0hvjixZgCICEh
|
||||
X7C57zvM+RKPMYjWdlzXvt1JU+8l6nw9CGsWCPnY
|
||||
-----END CERTIFICATE-----
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgu+QFmPSh0F5eI4EJ
|
||||
dXM3BFLfYc1r2NGrU2fZ4YEiqeChRANCAAS+eWBQdlHoVLDGhuh2uUlFBJb/UAUm
|
||||
UMjJtdS4G4GmzpLdrxk6DJGK9gKbv80IyHju6f0GQloiuJIYTnDeUobm
|
||||
-----END PRIVATE KEY-----
|
|
@ -0,0 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICZzCCAg6gAwIBAgIUWlg7m9a5bLX3n5ncxfLHoegDS2wwCgYIKoZIzj0EAwIw
|
||||
cjELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK
|
||||
ExBvcmcxLmV4YW1wbGUuY29tMQ4wDAYDVQQLEwV0bHNjYTEfMB0GA1UEAxMWdGxz
|
||||
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xODEwMTAwOTI2MDBaFw0xOTEwMTAwOTMx
|
||||
MDBaMH4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
|
||||
Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMQ8wDQYD
|
||||
VQQLEwZjbGllbnQxFjAUBgNVBAMTDWFkbWluLWRlZmF1bHQwWTATBgcqhkjOPQIB
|
||||
BggqhkjOPQMBBwNCAAS+eWBQdlHoVLDGhuh2uUlFBJb/UAUmUMjJtdS4G4GmzpLd
|
||||
rxk6DJGK9gKbv80IyHju6f0GQloiuJIYTnDeUobmo3YwdDAOBgNVHQ8BAf8EBAMC
|
||||
B4AwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUJ+5d0xZP4TCm3qU9IjfYTllxd3kw
|
||||
HwYDVR0jBBgwFoAU8TyFJWYtXTJDpEvvaA8vwVFCT2IwFAYDVR0RBA0wC4IJY2Et
|
||||
Y2xpZW50MAoGCCqGSM49BAMCA0cAMEQCIGjT2hSvBeVkXuE96qRzKSTzejRptVr8
|
||||
pKkfaX2WXZkJAiBRppl8nlWoeoi0py6omQtt5bgRByQI1GmEvJ5+B9oMyA==
|
||||
-----END CERTIFICATE-----
|
|
@ -113,6 +113,7 @@ GetCert() {
|
|||
|
||||
ORGS=(org1.example.com org2.example.com )
|
||||
PEERS=( peer0 peer1 )
|
||||
ORDERERS=( orderer )
|
||||
USERS=( Admin User1 )
|
||||
|
||||
# Generates peer orgs
|
||||
|
@ -135,6 +136,14 @@ do
|
|||
fi
|
||||
done
|
||||
|
||||
cd ../peers
|
||||
# Register all peers at ca and tlsca
|
||||
for peer in "${PEERS[@]}"
|
||||
do
|
||||
RegisterUser ca.${org} ${peer}@${org} ${org} ${peer} ${peer} "peer" "hf.Registrar.Roles=peer,hf.Registrar.Attributes=*,hf.Revoker=true,hf.GenCRL=true,admin=false:ecert,abac.init=true:ecert"
|
||||
RegisterUser tlsca.${org} ${user}@${org} ${org} ${user} ${user} "user" "hf.Registrar.Roles=client,hf.Registrar.Attributes=*,hf.Revoker=true,hf.GenCRL=true,admin=false:ecert,abac.init=true:ecert"
|
||||
done
|
||||
|
||||
exit 0
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,162 @@
|
|||
|
||||
#############################################################################
|
||||
# This is a configuration file for the fabric-ca-client command.
|
||||
#
|
||||
# COMMAND LINE ARGUMENTS AND ENVIRONMENT VARIABLES
|
||||
# ------------------------------------------------
|
||||
# Each configuration element can be overridden via command line
|
||||
# arguments or environment variables. The precedence for determining
|
||||
# the value of each element is as follows:
|
||||
# 1) command line argument
|
||||
# Examples:
|
||||
# a) --url https://localhost:7054
|
||||
# To set the fabric-ca server url
|
||||
# b) --tls.client.certfile certfile.pem
|
||||
# To set the client certificate for TLS
|
||||
# 2) environment variable
|
||||
# Examples:
|
||||
# a) FABRIC_CA_CLIENT_URL=https://localhost:7054
|
||||
# To set the fabric-ca server url
|
||||
# b) FABRIC_CA_CLIENT_TLS_CLIENT_CERTFILE=certfile.pem
|
||||
# To set the client certificate for TLS
|
||||
# 3) configuration file
|
||||
# 4) default value (if there is one)
|
||||
# All default values are shown beside each element below.
|
||||
#
|
||||
# FILE NAME ELEMENTS
|
||||
# ------------------
|
||||
# The value of all fields whose name ends with "file" or "files" are
|
||||
# name or names of other files.
|
||||
# For example, see "tls.certfiles" and "tls.client.certfile".
|
||||
# The value of each of these fields can be a simple filename, a
|
||||
# relative path, or an absolute path. If the value is not an
|
||||
# absolute path, it is interpretted as being relative to the location
|
||||
# of this configuration file.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
#############################################################################
|
||||
# Client Configuration
|
||||
#############################################################################
|
||||
|
||||
# URL of the Fabric-ca-server (default: http://localhost:7054)
|
||||
url: http://ca.example.com:7054
|
||||
|
||||
# Membership Service Provider (MSP) directory
|
||||
# This is useful when the client is used to enroll a peer or orderer, so
|
||||
# that the enrollment artifacts are stored in the format expected by MSP.
|
||||
mspdir: msp
|
||||
|
||||
#############################################################################
|
||||
# TLS section for secure socket connection
|
||||
#
|
||||
# certfiles - PEM-encoded list of trusted root certificate files
|
||||
# client:
|
||||
# certfile - PEM-encoded certificate file for when client authentication
|
||||
# is enabled on server
|
||||
# keyfile - PEM-encoded key file for when client authentication
|
||||
# is enabled on server
|
||||
#############################################################################
|
||||
tls:
|
||||
# TLS section for secure socket connection
|
||||
certfiles:
|
||||
client:
|
||||
certfile:
|
||||
keyfile:
|
||||
|
||||
#############################################################################
|
||||
# Certificate Signing Request section for generating the CSR for an
|
||||
# enrollment certificate (ECert)
|
||||
#
|
||||
# cn - Used by CAs to determine which domain the certificate is to be generated for
|
||||
#
|
||||
# serialnumber - The serialnumber field, if specified, becomes part of the issued
|
||||
# certificate's DN (Distinguished Name). For example, one use case for this is
|
||||
# a company with its own CA (Certificate Authority) which issues certificates
|
||||
# to its employees and wants to include the employee's serial number in the DN
|
||||
# of its issued certificates.
|
||||
# WARNING: The serialnumber field should not be confused with the certificate's
|
||||
# serial number which is set by the CA but is not a component of the
|
||||
# certificate's DN.
|
||||
#
|
||||
# names - A list of name objects. Each name object should contain at least one
|
||||
# "C", "L", "O", or "ST" value (or any combination of these) where these
|
||||
# are abbreviations for the following:
|
||||
# "C": country
|
||||
# "L": locality or municipality (such as city or town name)
|
||||
# "O": organization
|
||||
# "OU": organizational unit, such as the department responsible for owning the key;
|
||||
# it can also be used for a "Doing Business As" (DBS) name
|
||||
# "ST": the state or province
|
||||
#
|
||||
# Note that the "OU" or organizational units of an ECert are always set according
|
||||
# to the values of the identities type and affiliation. OUs are calculated for an enroll
|
||||
# as OU=<type>, OU=<affiliationRoot>, ..., OU=<affiliationLeaf>. For example, an identity
|
||||
# of type "client" with an affiliation of "org1.dept2.team3" would have the following
|
||||
# organizational units: OU=client, OU=org1, OU=dept2, OU=team3
|
||||
#
|
||||
# hosts - A list of host names for which the certificate should be valid
|
||||
#
|
||||
#############################################################################
|
||||
csr:
|
||||
cn: admin-default
|
||||
keyrequest:
|
||||
algo: ecdsa
|
||||
size: 256
|
||||
serialnumber:
|
||||
names:
|
||||
- C: US
|
||||
ST: North Carolina
|
||||
L:
|
||||
O: Hyperledger
|
||||
OU: Fabric
|
||||
hosts:
|
||||
- ca-client
|
||||
|
||||
#############################################################################
|
||||
# Registration section used to register a new identity with fabric-ca server
|
||||
#
|
||||
# name - Unique name of the identity
|
||||
# type - Type of identity being registered (e.g. 'peer, app, user')
|
||||
# affiliation - The identity's affiliation
|
||||
# maxenrollments - The maximum number of times the secret can be reused to enroll.
|
||||
# Specially, -1 means unlimited; 0 means to use CA's max enrollment
|
||||
# value.
|
||||
# attributes - List of name/value pairs of attribute for identity
|
||||
#############################################################################
|
||||
id:
|
||||
name:
|
||||
type:
|
||||
affiliation:
|
||||
maxenrollments: 0
|
||||
attributes:
|
||||
# - name:
|
||||
# value:
|
||||
|
||||
#############################################################################
|
||||
# Enrollment section used to enroll an identity with fabric-ca server
|
||||
#
|
||||
# profile - Name of the signing profile to use in issuing the certificate
|
||||
# label - Label to use in HSM operations
|
||||
#############################################################################
|
||||
enrollment:
|
||||
profile:
|
||||
label:
|
||||
|
||||
#############################################################################
|
||||
# Name of the CA to connect to within the fabric-ca server
|
||||
#############################################################################
|
||||
caname:
|
||||
|
||||
#############################################################################
|
||||
# BCCSP (BlockChain Crypto Service Provider) section allows to select which
|
||||
# crypto implementation library to use
|
||||
#############################################################################
|
||||
bccsp:
|
||||
default: SW
|
||||
sw:
|
||||
hash: SHA2
|
||||
security: 256
|
||||
filekeystore:
|
||||
# The directory used for the software file-based keystore
|
||||
keystore: msp/keystore
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgAW49uUwglOMGLe6g
|
||||
H6BYJMB37/8zpTg/iI3ebXR/xsWhRANCAAQVK3wbfCGHDJf42qv4Bf4OGvhYuhZE
|
||||
hNRwyomzUtfJ/dtWYabp87CbThq/rilR3g3df72hZZw0ZIaHNLpYRIGW
|
||||
-----END PRIVATE KEY-----
|
|
@ -0,0 +1,162 @@
|
|||
|
||||
#############################################################################
|
||||
# This is a configuration file for the fabric-ca-client command.
|
||||
#
|
||||
# COMMAND LINE ARGUMENTS AND ENVIRONMENT VARIABLES
|
||||
# ------------------------------------------------
|
||||
# Each configuration element can be overridden via command line
|
||||
# arguments or environment variables. The precedence for determining
|
||||
# the value of each element is as follows:
|
||||
# 1) command line argument
|
||||
# Examples:
|
||||
# a) --url https://localhost:7054
|
||||
# To set the fabric-ca server url
|
||||
# b) --tls.client.certfile certfile.pem
|
||||
# To set the client certificate for TLS
|
||||
# 2) environment variable
|
||||
# Examples:
|
||||
# a) FABRIC_CA_CLIENT_URL=https://localhost:7054
|
||||
# To set the fabric-ca server url
|
||||
# b) FABRIC_CA_CLIENT_TLS_CLIENT_CERTFILE=certfile.pem
|
||||
# To set the client certificate for TLS
|
||||
# 3) configuration file
|
||||
# 4) default value (if there is one)
|
||||
# All default values are shown beside each element below.
|
||||
#
|
||||
# FILE NAME ELEMENTS
|
||||
# ------------------
|
||||
# The value of all fields whose name ends with "file" or "files" are
|
||||
# name or names of other files.
|
||||
# For example, see "tls.certfiles" and "tls.client.certfile".
|
||||
# The value of each of these fields can be a simple filename, a
|
||||
# relative path, or an absolute path. If the value is not an
|
||||
# absolute path, it is interpretted as being relative to the location
|
||||
# of this configuration file.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
#############################################################################
|
||||
# Client Configuration
|
||||
#############################################################################
|
||||
|
||||
# URL of the Fabric-ca-server (default: http://localhost:7054)
|
||||
url: http://tlsca.example.com:7054
|
||||
|
||||
# Membership Service Provider (MSP) directory
|
||||
# This is useful when the client is used to enroll a peer or orderer, so
|
||||
# that the enrollment artifacts are stored in the format expected by MSP.
|
||||
mspdir: msp
|
||||
|
||||
#############################################################################
|
||||
# TLS section for secure socket connection
|
||||
#
|
||||
# certfiles - PEM-encoded list of trusted root certificate files
|
||||
# client:
|
||||
# certfile - PEM-encoded certificate file for when client authentication
|
||||
# is enabled on server
|
||||
# keyfile - PEM-encoded key file for when client authentication
|
||||
# is enabled on server
|
||||
#############################################################################
|
||||
tls:
|
||||
# TLS section for secure socket connection
|
||||
certfiles:
|
||||
client:
|
||||
certfile:
|
||||
keyfile:
|
||||
|
||||
#############################################################################
|
||||
# Certificate Signing Request section for generating the CSR for an
|
||||
# enrollment certificate (ECert)
|
||||
#
|
||||
# cn - Used by CAs to determine which domain the certificate is to be generated for
|
||||
#
|
||||
# serialnumber - The serialnumber field, if specified, becomes part of the issued
|
||||
# certificate's DN (Distinguished Name). For example, one use case for this is
|
||||
# a company with its own CA (Certificate Authority) which issues certificates
|
||||
# to its employees and wants to include the employee's serial number in the DN
|
||||
# of its issued certificates.
|
||||
# WARNING: The serialnumber field should not be confused with the certificate's
|
||||
# serial number which is set by the CA but is not a component of the
|
||||
# certificate's DN.
|
||||
#
|
||||
# names - A list of name objects. Each name object should contain at least one
|
||||
# "C", "L", "O", or "ST" value (or any combination of these) where these
|
||||
# are abbreviations for the following:
|
||||
# "C": country
|
||||
# "L": locality or municipality (such as city or town name)
|
||||
# "O": organization
|
||||
# "OU": organizational unit, such as the department responsible for owning the key;
|
||||
# it can also be used for a "Doing Business As" (DBS) name
|
||||
# "ST": the state or province
|
||||
#
|
||||
# Note that the "OU" or organizational units of an ECert are always set according
|
||||
# to the values of the identities type and affiliation. OUs are calculated for an enroll
|
||||
# as OU=<type>, OU=<affiliationRoot>, ..., OU=<affiliationLeaf>. For example, an identity
|
||||
# of type "client" with an affiliation of "org1.dept2.team3" would have the following
|
||||
# organizational units: OU=client, OU=org1, OU=dept2, OU=team3
|
||||
#
|
||||
# hosts - A list of host names for which the certificate should be valid
|
||||
#
|
||||
#############################################################################
|
||||
csr:
|
||||
cn: admin-default
|
||||
keyrequest:
|
||||
algo: ecdsa
|
||||
size: 256
|
||||
serialnumber:
|
||||
names:
|
||||
- C: US
|
||||
ST: North Carolina
|
||||
L:
|
||||
O: Hyperledger
|
||||
OU: Fabric
|
||||
hosts:
|
||||
- ca-client
|
||||
|
||||
#############################################################################
|
||||
# Registration section used to register a new identity with fabric-ca server
|
||||
#
|
||||
# name - Unique name of the identity
|
||||
# type - Type of identity being registered (e.g. 'peer, app, user')
|
||||
# affiliation - The identity's affiliation
|
||||
# maxenrollments - The maximum number of times the secret can be reused to enroll.
|
||||
# Specially, -1 means unlimited; 0 means to use CA's max enrollment
|
||||
# value.
|
||||
# attributes - List of name/value pairs of attribute for identity
|
||||
#############################################################################
|
||||
id:
|
||||
name:
|
||||
type:
|
||||
affiliation:
|
||||
maxenrollments: 0
|
||||
attributes:
|
||||
# - name:
|
||||
# value:
|
||||
|
||||
#############################################################################
|
||||
# Enrollment section used to enroll an identity with fabric-ca server
|
||||
#
|
||||
# profile - Name of the signing profile to use in issuing the certificate
|
||||
# label - Label to use in HSM operations
|
||||
#############################################################################
|
||||
enrollment:
|
||||
profile:
|
||||
label:
|
||||
|
||||
#############################################################################
|
||||
# Name of the CA to connect to within the fabric-ca server
|
||||
#############################################################################
|
||||
caname:
|
||||
|
||||
#############################################################################
|
||||
# BCCSP (BlockChain Crypto Service Provider) section allows to select which
|
||||
# crypto implementation library to use
|
||||
#############################################################################
|
||||
bccsp:
|
||||
default: SW
|
||||
sw:
|
||||
hash: SHA2
|
||||
security: 256
|
||||
filekeystore:
|
||||
# The directory used for the software file-based keystore
|
||||
keystore: msp/keystore
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgrD+JxECpHZAV4wdS
|
||||
uVPfoTFCD/ixfaVSsW8onQm+m2yhRANCAATJJMk88HeZPD6eT0Azi9m4CEw+A5od
|
||||
vNW/N7vLNw0O4tBj1RX7j/iGVNlmYnjluhkHI6WyyaTxElePnr6+9AMC
|
||||
-----END PRIVATE KEY-----
|
|
@ -43,14 +43,11 @@ done
|
|||
# docker pull yeasy/hyperledger-fabric
|
||||
|
||||
echo "=== Pulling fabric images ${FABRIC_IMG_TAG} from fabric repo... ==="
|
||||
for IMG in peer tools orderer ca ccenv tools couchdb kafka zookeeper; do
|
||||
for IMG in peer tools orderer ca ccenv tools; do
|
||||
HLF_IMG=hyperledger/fabric-${IMG}:$ARCH-$FABRIC_IMG_TAG
|
||||
pull_image $HLF_IMG
|
||||
done
|
||||
|
||||
#pull_image hyperledger/fabric-ccenv:x86_64-1.1.0 # no latest tag for ccenv
|
||||
#docker tag hyperledger/fabric-ccenv:x86_64-1.1.0 hyperledger/fabric-ccenv:$ARCH-$PROJECT_VERSION
|
||||
|
||||
echo "Image pulling done, now can startup the network using docker-compose..."
|
||||
|
||||
exit 0
|
|
@ -24,3 +24,7 @@ command -v "docker" >/dev/null 2>&1 && echo "Docker already installed" || instal
|
|||
command -v "docker-compose" >/dev/null 2>&1 && echo "Docker-Compose already installed" || install_docker_compose
|
||||
|
||||
command -v "jq" >/dev/null 2>&1 && echo "jq already installed" || sudo apt-get install jq
|
||||
|
||||
|
||||
echo "Create default docker network for usage"
|
||||
docker network create hlf_net
|
||||
|
|
|
@ -227,7 +227,7 @@ channelGetInfo () {
|
|||
|
||||
peer channel getinfo -c ${channel} >&log.txt
|
||||
rc=$?
|
||||
cat log.txt
|
||||
[ $rc -ne 0 ] && cat log.txt
|
||||
if [ $rc -ne 0 ]; then
|
||||
echo "=== Fail to get channel info of ${channel} with id of org${org}/peer${peer} === "
|
||||
else
|
||||
|
@ -509,8 +509,6 @@ chaincodeQuery () {
|
|||
let rc=1
|
||||
echo_b "$VALUE != ${expected_result}, will retry"
|
||||
fi
|
||||
else
|
||||
cat log.txt
|
||||
fi
|
||||
if [ $rc -ne 0 ]; then
|
||||
cat log.txt
|
||||
|
|
|
@ -11,8 +11,6 @@ fi
|
|||
|
||||
echo_g "=== Testing eventsclient in a loop ==="
|
||||
|
||||
set -x
|
||||
|
||||
CORE_PEER_LOCALMSPID=${ORG1MSP} \
|
||||
CORE_PEER_MSPCONFIGPATH=${ORG1_ADMIN_MSP} \
|
||||
eventsclient \
|
||||
|
|
|
@ -12,7 +12,7 @@ CC_INVOKE_ARGS=${CC_INVOKE_ARGS:-$CC_02_INVOKE_ARGS}
|
|||
CC_QUERY_ARGS=${CC_QUERY_ARGS:-$CC_02_QUERY_ARGS}
|
||||
|
||||
#Query on chaincode on Peer0/Org1
|
||||
echo_g "=== Testing Chaincode invoke/query ==="
|
||||
echo_b "=== Testing Chaincode invoke/query ==="
|
||||
|
||||
# Non-side-DB testing
|
||||
echo_b "Query chaincode ${CC_NAME} on peer org2/peer0..."
|
||||
|
@ -34,4 +34,4 @@ chaincodeInvoke ${APP_CHANNEL} 2 1 ${CC_NAME} ${CC_INVOKE_ARGS}
|
|||
echo_b "Query chaincode on org1/peer0 4peers..."
|
||||
chaincodeQuery ${APP_CHANNEL} 1 0 ${CC_NAME} ${CC_QUERY_ARGS} 80
|
||||
|
||||
echo_g "=== Chaincode invoke/query completed ==="
|
||||
echo_g "=== Chaincode invoke/query done ==="
|
||||
|
|
|
@ -22,7 +22,6 @@ pushd $MODE/${CHANNEL_ARTIFACTS}
|
|||
|
||||
# Must run `make gen_config` to generate config files first
|
||||
|
||||
|
||||
echo_b "Clean potential existing container $CTL_CONTAINER"
|
||||
[ "$(docker ps -a | grep $CTL_CONTAINER)" ] && docker rm -f $CTL_CONTAINER
|
||||
|
||||
|
|
|
@ -2,6 +2,16 @@
|
|||
# Before running `make`, config this files
|
||||
# Define some global variables for usage. Will be included by func.sh.
|
||||
|
||||
ARCH=amd64
|
||||
|
||||
# for the base images, including baseimage, baseos, couchdb, kafka, zookeeper
|
||||
BASE_IMG_TAG=0.4.13
|
||||
|
||||
# For fabric images, including peer, orderer, ca
|
||||
FABRIC_IMG_TAG=latest
|
||||
|
||||
PROJECT_VERSION=1.3.0
|
||||
|
||||
# Name of app channel, need to align with the gen_artifacts.sh
|
||||
SYS_CHANNEL="testchainid"
|
||||
APP_CHANNEL="businesschannel"
|
||||
|
@ -86,7 +96,7 @@ CC_INVOKE_ARGS=${CC_02_INVOKE_ARGS}
|
|||
CC_QUERY_ARGS=${CC_02_QUERY_ARGS}
|
||||
|
||||
# Generate configs
|
||||
GEN_IMG=yeasy/hyperledger-fabric:latest # working dir is `/go/src/github.com/hyperledger/fabric`
|
||||
GEN_IMG=yeasy/hyperledger-fabric:${FABRIC_IMG_TAG} # working dir is `/go/src/github.com/hyperledger/fabric`
|
||||
GEN_CONTAINER=generator
|
||||
FABRIC_CFG_PATH=/etc/hyperledger/fabric
|
||||
CHANNEL_ARTIFACTS=channel-artifacts
|
||||
|
@ -99,7 +109,7 @@ UPDATE_ANCHOR_ORG1_TX=Org1MSPanchors.tx
|
|||
UPDATE_ANCHOR_ORG2_TX=Org2MSPanchors.tx
|
||||
|
||||
# CONFIGTXLATOR
|
||||
CTL_IMG=yeasy/hyperledger-fabric:latest
|
||||
CTL_IMG=yeasy/hyperledger-fabric:${FABRIC_IMG_TAG}
|
||||
CTL_CONTAINER=configtxlator
|
||||
CTL_BASE_URL=http://127.0.0.1:7059
|
||||
CTL_ENCODE_URL=${CTL_BASE_URL}/protolator/encode
|
||||
|
@ -123,14 +133,3 @@ CFG_DELTA_JSON=config_delta.json
|
|||
CFG_DELTA_PB=config_delta.pb
|
||||
CFG_DELTA_ENV_JSON=config_delta_env.json
|
||||
CFG_DELTA_ENV_PB=config_delta_env.pb
|
||||
|
||||
#ARCH=x86_64
|
||||
ARCH=amd64
|
||||
|
||||
# for the base images, including baseimage, baseos, couchdb, kafka, zookeeper
|
||||
BASE_IMG_TAG=0.4.13
|
||||
|
||||
# For fabric images, including peer, orderer, ca
|
||||
FABRIC_IMG_TAG=latest
|
||||
|
||||
PROJECT_VERSION=1.3.0
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -823,13 +823,13 @@
|
|||
},
|
||||
"signatures": [
|
||||
{
|
||||
"signature": "MEQCIH25X495i3oWeGSXEC4zu3BWxCpLTlexj94+L6D78Z4zAiAccALO54Pfj7xkSFeRBfcRg5tDUlYnqvyAFKHDHBTEsQ==",
|
||||
"signature": "MEQCIHZ4ADCAF1m/RkEcyoXnac68SNTH7wB4MSObkmCkSicdAiBCal+0HRvrUxqetAGlS3SAe7szatMtvRmjmpB4+Pvu7Q==",
|
||||
"signature_header": {
|
||||
"creator": {
|
||||
"id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLVENDQWRDZ0F3SUJBZ0lRY29vYWgxTnpEU0JSTFg4Z203QTA0akFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NaTVsZUdGdGNHeGxMbU52YlRBZUZ3MHhPREE1TVRBd05qQXlNek5hRncweU9EQTVNRGN3TmpBeU16TmEKTUd3eEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVE4d0RRWURWUVFMRXdaamJHbGxiblF4SHpBZEJnTlZCQU1NRmtGa2JXbHVRRzl5Clp6SXVaWGhoYlhCc1pTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVFHcXFuUTNIeEMKeEhSY2NkaEZrTmNwd0ltaHdpRHVaUUkwbnd6d1FaT2Z3cnhOYmU4clh3OWdOWFhjVnpoWWFydnFLa3hBbjkySQpHM3dnOVRPSk9VdTFvMDB3U3pBT0JnTlZIUThCQWY4RUJBTUNCNEF3REFZRFZSMFRBUUgvQkFJd0FEQXJCZ05WCkhTTUVKREFpZ0NES0V0ditTU3h4aW1yL2w1MEdESFZzK0Zva3VheG9hNFAvc0J1eXQra3k2VEFLQmdncWhrak8KUFFRREFnTkhBREJFQWlBYW5xR1M3dHQwSDVRWW9MMW5vaHcxRTQvSEpSVkY0Mk5kVngrQkpnN1J1d0lnS1lyNApYeXdUMVMwWGt6Z3V3L2dpY2ttNGN5WDZxVEFLK0hQRDBpM3U2MG89Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K",
|
||||
"mspid": "Org2MSP"
|
||||
},
|
||||
"nonce": "4z0YaSTOH6B7XvRx9M63MVXVI9Wg4oew"
|
||||
"nonce": "ZU3hWBPUGSvi5nbc5YenNVv/qPOu0cgv"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
@ -839,7 +839,7 @@
|
|||
"channel_id": "businesschannel",
|
||||
"epoch": "0",
|
||||
"extension": null,
|
||||
"timestamp": "2018-09-25T07:37:27Z",
|
||||
"timestamp": "2018-10-11T04:25:14Z",
|
||||
"tls_cert_hash": null,
|
||||
"tx_id": "",
|
||||
"type": 2,
|
||||
|
@ -850,11 +850,11 @@
|
|||
"id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLVENDQWRDZ0F3SUJBZ0lRY29vYWgxTnpEU0JSTFg4Z203QTA0akFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NaTVsZUdGdGNHeGxMbU52YlRBZUZ3MHhPREE1TVRBd05qQXlNek5hRncweU9EQTVNRGN3TmpBeU16TmEKTUd3eEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVE4d0RRWURWUVFMRXdaamJHbGxiblF4SHpBZEJnTlZCQU1NRmtGa2JXbHVRRzl5Clp6SXVaWGhoYlhCc1pTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVFHcXFuUTNIeEMKeEhSY2NkaEZrTmNwd0ltaHdpRHVaUUkwbnd6d1FaT2Z3cnhOYmU4clh3OWdOWFhjVnpoWWFydnFLa3hBbjkySQpHM3dnOVRPSk9VdTFvMDB3U3pBT0JnTlZIUThCQWY4RUJBTUNCNEF3REFZRFZSMFRBUUgvQkFJd0FEQXJCZ05WCkhTTUVKREFpZ0NES0V0ditTU3h4aW1yL2w1MEdESFZzK0Zva3VheG9hNFAvc0J1eXQra3k2VEFLQmdncWhrak8KUFFRREFnTkhBREJFQWlBYW5xR1M3dHQwSDVRWW9MMW5vaHcxRTQvSEpSVkY0Mk5kVngrQkpnN1J1d0lnS1lyNApYeXdUMVMwWGt6Z3V3L2dpY2ttNGN5WDZxVEFLK0hQRDBpM3U2MG89Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K",
|
||||
"mspid": "Org2MSP"
|
||||
},
|
||||
"nonce": "5juEXldHvnZGXK16AiDERQgm7me5eR5N"
|
||||
"nonce": "JxWqfnIKFGN6HJ1qNBnBue8f4NcM0oah"
|
||||
}
|
||||
}
|
||||
},
|
||||
"signature": "MEQCIDcnGn0lWIV2hB/CI8MqMPbyzi2PEGNtjXhsPSjgHxj6AiAZiJkfQHcUGvazH/MIaxRFrptAIifz/PWqCcgs0qbBpw=="
|
||||
"signature": "MEQCIEElZig4c2GOexU4d+tqPUn3A/JJUxoaHcS1OSu/TdwMAiA/zxAzfp7rFb3ms/vUM1haMVouyGXNMR4LKqJagCPERA=="
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
|
@ -862,7 +862,7 @@
|
|||
"channel_id": "businesschannel",
|
||||
"epoch": "0",
|
||||
"extension": null,
|
||||
"timestamp": "2018-09-25T07:37:27Z",
|
||||
"timestamp": "2018-10-11T04:25:14Z",
|
||||
"tls_cert_hash": null,
|
||||
"tx_id": "",
|
||||
"type": 1,
|
||||
|
@ -873,23 +873,23 @@
|
|||
"id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNERENDQWJPZ0F3SUJBZ0lSQUpySTNpeFBaNS9uOUw3dE4zc2hZSnd3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHhPREE1TVRBd05qQXlNek5hRncweU9EQTVNRGN3TmpBeU16TmFNRmd4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJ3d0dnWURWUVFERXhOdmNtUmxjbVZ5TG1WNFlXMXdiR1V1WTI5dE1Ga3dFd1lIS29aSXpqMENBUVlJCktvWkl6ajBEQVFjRFFnQUVza0kvelNpWDE1NUM5ODIrd3RBU2xvQTh0YzRXWEJJYmlPckc4Z3lCSEIrYWtBZXAKUnR2RzdobFZFZmNrRDg4bi95NjJmckljSjJJTzBxWVNYUXlzK3FOTk1Fc3dEZ1lEVlIwUEFRSC9CQVFEQWdlQQpNQXdHQTFVZEV3RUIvd1FDTUFBd0t3WURWUjBqQkNRd0lvQWdoUUNCRkRhVk5oSVptN0ZoR2pJblJib3o0SWVZCjFGVThtWFh4UGR2UDF0RXdDZ1lJS29aSXpqMEVBd0lEUndBd1JBSWdmdXpaWm1QYVRVNmNKeEJMcTJFeEhsVzgKeFZqbVE5ejFCUzJCYTVvbVBKWUNJQzNUK0N1dWNVbmx3c0dZNGFUSGVoQkxuYmtHZmx4Rkwwdjk3OXMwSTlVTAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==",
|
||||
"mspid": "OrdererMSP"
|
||||
},
|
||||
"nonce": "Xwb0yKW8QOh4TBgkqzQcq9CVWRGE/PTR"
|
||||
"nonce": "Xst4YqAIH7enft22ni7v1aMGmmwK0NN0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"signature": "MEQCICMfQQI7kpil7gsvICtL+CKlIL/W4K0yHzfxRle/niS4AiBAaaM7UaEVKvX04nQN/W7q057WvPFZDM6uIvDzrfPAzQ=="
|
||||
"signature": "MEQCIQDojbHsB1okJ6DUP6w4DD+Q+zH7MhDcxDv3UlRzqKHYOwIffAHa0jBwaQrXP/fwrt8vG5vcGgLxDQa7C8/uIwpaKw=="
|
||||
}
|
||||
]
|
||||
},
|
||||
"header": {
|
||||
"data_hash": "mWWg7ZMWOg0wdQA0jgA8AHQUBOn9Pkd6X0PuVjr8iy4=",
|
||||
"data_hash": "TSkRdq0pRQbGLMRuAq/gSBNoOhCmnOF4i05kFqAu44A=",
|
||||
"number": "2",
|
||||
"previous_hash": "qDYAIY7Xr8zf5Pl8r9X/SSHZnRgO6IlgjqgGvUio0OI="
|
||||
"previous_hash": "CxAf2Z4KeAQVnP+2+A/HZlyhn9JaRSN+GCTnCIgdGe0="
|
||||
},
|
||||
"metadata": {
|
||||
"metadata": [
|
||||
"EvgGCq0GCpAGCgpPcmRlcmVyTVNQEoEGLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNERENDQWJPZ0F3SUJBZ0lSQUpySTNpeFBaNS9uOUw3dE4zc2hZSnd3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHhPREE1TVRBd05qQXlNek5hRncweU9EQTVNRGN3TmpBeU16TmFNRmd4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJ3d0dnWURWUVFERXhOdmNtUmxjbVZ5TG1WNFlXMXdiR1V1WTI5dE1Ga3dFd1lIS29aSXpqMENBUVlJCktvWkl6ajBEQVFjRFFnQUVza0kvelNpWDE1NUM5ODIrd3RBU2xvQTh0YzRXWEJJYmlPckc4Z3lCSEIrYWtBZXAKUnR2RzdobFZFZmNrRDg4bi95NjJmckljSjJJTzBxWVNYUXlzK3FOTk1Fc3dEZ1lEVlIwUEFRSC9CQVFEQWdlQQpNQXdHQTFVZEV3RUIvd1FDTUFBd0t3WURWUjBqQkNRd0lvQWdoUUNCRkRhVk5oSVptN0ZoR2pJblJib3o0SWVZCjFGVThtWFh4UGR2UDF0RXdDZ1lJS29aSXpqMEVBd0lEUndBd1JBSWdmdXpaWm1QYVRVNmNKeEJMcTJFeEhsVzgKeFZqbVE5ejFCUzJCYTVvbVBKWUNJQzNUK0N1dWNVbmx3c0dZNGFUSGVoQkxuYmtHZmx4Rkwwdjk3OXMwSTlVTAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tChIY0Tmftxj1VFJ9wkamxhKkbANCaziachRHEkYwRAIgKwSbo4nXMsRJV4xiCnQCtE9nePeI+rcQwtWIXEjcMnICIEnsq8ptMacwtwIggReKcauBLA24Rbat1BQ+Im7R2QVn",
|
||||
"CgIIAhL4BgqtBgqQBgoKT3JkZXJlck1TUBKBBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDRERDQ0FiT2dBd0lCQWdJUkFKckkzaXhQWjUvbjlMN3ROM3NoWUp3d0NnWUlLb1pJemowRUF3SXdhVEVMCk1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkcKY21GdVkybHpZMjh4RkRBU0JnTlZCQW9UQzJWNFlXMXdiR1V1WTI5dE1SY3dGUVlEVlFRREV3NWpZUzVsZUdGdApjR3hsTG1OdmJUQWVGdzB4T0RBNU1UQXdOakF5TXpOYUZ3MHlPREE1TURjd05qQXlNek5hTUZneEN6QUpCZ05WCkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaGJtTnAKYzJOdk1Sd3dHZ1lEVlFRREV4TnZjbVJsY21WeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSQpLb1pJemowREFRY0RRZ0FFc2tJL3pTaVgxNTVDOTgyK3d0QVNsb0E4dGM0V1hCSWJpT3JHOGd5QkhCK2FrQWVwClJ0dkc3aGxWRWZja0Q4OG4veTYyZnJJY0oySU8wcVlTWFF5cytxTk5NRXN3RGdZRFZSMFBBUUgvQkFRREFnZUEKTUF3R0ExVWRFd0VCL3dRQ01BQXdLd1lEVlIwakJDUXdJb0FnaFFDQkZEYVZOaElabTdGaEdqSW5SYm96NEllWQoxRlU4bVhYeFBkdlAxdEV3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnZnV6WlptUGFUVTZjSnhCTHEyRXhIbFc4CnhWam1ROXoxQlMyQmE1b21QSllDSUMzVCtDdXVjVW5sd3NHWTRhVEhlaEJMbmJrR2ZseEZMMHY5NzlzMEk5VUwKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoSGBMtV/MLGYxvOFbbh4jU6h0/7d2OOsgAlBJGMEQCIDLStCxVeJO1Air7oOZvZnbNkc0FkZl0T/RBKFQu8rvIAiBAwYTHdo8J9/NA4WA5VfArPrOcARhfZAhQY0mlZ0C9ow==",
|
||||
"EvkGCq0GCpAGCgpPcmRlcmVyTVNQEoEGLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNERENDQWJPZ0F3SUJBZ0lSQUpySTNpeFBaNS9uOUw3dE4zc2hZSnd3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHhPREE1TVRBd05qQXlNek5hRncweU9EQTVNRGN3TmpBeU16TmFNRmd4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJ3d0dnWURWUVFERXhOdmNtUmxjbVZ5TG1WNFlXMXdiR1V1WTI5dE1Ga3dFd1lIS29aSXpqMENBUVlJCktvWkl6ajBEQVFjRFFnQUVza0kvelNpWDE1NUM5ODIrd3RBU2xvQTh0YzRXWEJJYmlPckc4Z3lCSEIrYWtBZXAKUnR2RzdobFZFZmNrRDg4bi95NjJmckljSjJJTzBxWVNYUXlzK3FOTk1Fc3dEZ1lEVlIwUEFRSC9CQVFEQWdlQQpNQXdHQTFVZEV3RUIvd1FDTUFBd0t3WURWUjBqQkNRd0lvQWdoUUNCRkRhVk5oSVptN0ZoR2pJblJib3o0SWVZCjFGVThtWFh4UGR2UDF0RXdDZ1lJS29aSXpqMEVBd0lEUndBd1JBSWdmdXpaWm1QYVRVNmNKeEJMcTJFeEhsVzgKeFZqbVE5ejFCUzJCYTVvbVBKWUNJQzNUK0N1dWNVbmx3c0dZNGFUSGVoQkxuYmtHZmx4Rkwwdjk3OXMwSTlVTAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tChIYsdiXd+vVYkwVUn9dcCG9FsiiI//KYEefEkcwRQIhAP0Irlkg9VlCafclGXoVnwa6PXt839KhLphRk7Raq66YAiBKsz2lKp3EBCYryw2vgSzyrminL1VIvuHd8OQ4s7ngEg==",
|
||||
"CgIIAhL4BgqtBgqQBgoKT3JkZXJlck1TUBKBBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDRERDQ0FiT2dBd0lCQWdJUkFKckkzaXhQWjUvbjlMN3ROM3NoWUp3d0NnWUlLb1pJemowRUF3SXdhVEVMCk1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkcKY21GdVkybHpZMjh4RkRBU0JnTlZCQW9UQzJWNFlXMXdiR1V1WTI5dE1SY3dGUVlEVlFRREV3NWpZUzVsZUdGdApjR3hsTG1OdmJUQWVGdzB4T0RBNU1UQXdOakF5TXpOYUZ3MHlPREE1TURjd05qQXlNek5hTUZneEN6QUpCZ05WCkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaGJtTnAKYzJOdk1Sd3dHZ1lEVlFRREV4TnZjbVJsY21WeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSQpLb1pJemowREFRY0RRZ0FFc2tJL3pTaVgxNTVDOTgyK3d0QVNsb0E4dGM0V1hCSWJpT3JHOGd5QkhCK2FrQWVwClJ0dkc3aGxWRWZja0Q4OG4veTYyZnJJY0oySU8wcVlTWFF5cytxTk5NRXN3RGdZRFZSMFBBUUgvQkFRREFnZUEKTUF3R0ExVWRFd0VCL3dRQ01BQXdLd1lEVlIwakJDUXdJb0FnaFFDQkZEYVZOaElabTdGaEdqSW5SYm96NEllWQoxRlU4bVhYeFBkdlAxdEV3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnZnV6WlptUGFUVTZjSnhCTHEyRXhIbFc4CnhWam1ROXoxQlMyQmE1b21QSllDSUMzVCtDdXVjVW5sd3NHWTRhVEhlaEJMbmJrR2ZseEZMMHY5NzlzMEk5VUwKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoSGNU4BCnOGrLPWY26nrGBSjDVBWeotvXANhJGMEQCIBFpz9wZAbmgQi90meYBcR9g0Ddb6/y1dFpRrXcNkI0qAiALmfpA9y+Q4WF0Ud98kR9VR5RVg4SX1cPGhFO/LyYffg==",
|
||||
"",
|
||||
""
|
||||
]
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -47,7 +47,8 @@ ready: # create/join channel, install/instantiate cc
|
|||
|
||||
make start
|
||||
|
||||
if [ "$(HLF_MODE)" = "dev" ]; then \
|
||||
#if [ "$(HLF_MODE)" = "dev" ]; then \
|
||||
if [ "$(HLF_MODE)" = "kafka" -o "$(HLF_MODE)" = "dev" ]; then \
|
||||
sleep ${CODE_BUILD_WAIT}; \
|
||||
else \
|
||||
sleep ${NETWORK_INIT_WAIT}; \
|
||||
|
@ -225,6 +226,7 @@ logs: # show logs
|
|||
logs_check: logs_save logs_view
|
||||
|
||||
logs_save: # save logs
|
||||
@echo "All tests done, saving logs locally"
|
||||
[ -d $(LOG_PATH) ] || mkdir -p $(LOG_PATH)
|
||||
docker logs peer0.org1.example.com >& $(LOG_PATH)/dev_peer0.log
|
||||
docker logs orderer.example.com >& $(LOG_PATH)/dev_orderer.log
|
||||
|
@ -236,6 +238,7 @@ logs_view: # view logs
|
|||
elk: # insert logs into elk
|
||||
# curl -XDELETE http://localhost:9200/logstash-\*
|
||||
nc localhost 5000 < $(LOG_PATH)/dev_all.log
|
||||
|
||||
gen_config: # generate config artifacts
|
||||
if [ "$(HLF_MODE)" = "kafka" ]; then \
|
||||
bash scripts/gen_config.sh kafka; \
|
||||
|
|
|
@ -227,7 +227,7 @@ channelGetInfo () {
|
|||
|
||||
peer channel getinfo -c ${channel} >&log.txt
|
||||
rc=$?
|
||||
[ $rc -ne 0 ] && cat log.txt
|
||||
cat log.txt
|
||||
if [ $rc -ne 0 ]; then
|
||||
echo "=== Fail to get channel info of ${channel} with id of org${org}/peer${peer} === "
|
||||
else
|
||||
|
@ -386,7 +386,7 @@ chaincodeInstall () {
|
|||
# chaincodeInstantiate channel org peer name version args
|
||||
chaincodeInstantiate () {
|
||||
if [ "$#" -gt 8 -a "$#" -lt 6 ]; then
|
||||
echo "Wrong param number for chaincode instantaite"
|
||||
echo_r "Wrong param number for chaincode instantaite"
|
||||
exit -1
|
||||
fi
|
||||
local channel=$1
|
||||
|
|
|
@ -38,7 +38,7 @@ configtxgen \
|
|||
-configPath ${FABRIC_CFG_PATH} \
|
||||
-profile ${APP_CHANNEL_PROFILE} \
|
||||
-channelID ${APP_CHANNEL} \
|
||||
-outputCreateChannelTx ${APP_CHANNEL_TX} \
|
||||
-outputCreateChannelTx ${APP_CHANNEL_TX}
|
||||
configtxgen \
|
||||
-inspectChannelCreateTx ${APP_CHANNEL_TX} > ${APP_CHANNEL_TX}.json
|
||||
|
||||
|
|
|
@ -25,7 +25,8 @@ echo_b "Clean existing container $GEN_CONTAINER"
|
|||
|
||||
echo_b "Make sure crypto-config dir exists already"
|
||||
if [ ! -d ${CRYPTO_CONFIG} ]; then # already exist, no need to re-gen crypto
|
||||
echo_g "${CRYPTO_CONFIG} not exists, generating it."
|
||||
echo_g "Path ${CRYPTO_CONFIG} not exists, re-generating it."
|
||||
echo_b "Path org3/crypto-config will keep unchanged by default if exists."
|
||||
mkdir -p ${CRYPTO_CONFIG}
|
||||
|
||||
docker run \
|
||||
|
@ -45,7 +46,7 @@ fi
|
|||
|
||||
echo_b "Make sure channel-artifacts dir exists already"
|
||||
if [ ! -d ${MODE}/${CHANNEL_ARTIFACTS} ]; then
|
||||
echo_g "${CHANNEL_ARTIFACTS} not exists, generating it."
|
||||
echo_g "Path ${CHANNEL_ARTIFACTS} not exists, generating it."
|
||||
mkdir -p ${MODE}/${CHANNEL_ARTIFACTS}
|
||||
|
||||
docker run \
|
||||
|
|
|
@ -36,7 +36,7 @@ docker run \
|
|||
|
||||
sleep 1
|
||||
|
||||
echo_b "Convert all config block files into json"
|
||||
echo_b "Convert all block files into json"
|
||||
for BLOCK_FILE in *.block; do
|
||||
[ -f ${BLOCK_FILE}.json ] || configtxlatorDecode "common.Block" ${BLOCK_FILE} ${BLOCK_FILE}.json
|
||||
decode_result=$?
|
||||
|
|
|
@ -13,6 +13,8 @@ CC_NAME=${CC_MARBLES_NAME}
|
|||
CC_PATH=${CC_MARBLES_PATH}
|
||||
CC_INIT_ARGS=${CC_MARBLES_INIT_ARGS}
|
||||
|
||||
echo_b "=== Testing the private data feature ==="
|
||||
|
||||
echo_b "=== Installing chaincode ${CC_NAME} on all 4 peers... ==="
|
||||
|
||||
for org in "${ORGS[@]}"
|
||||
|
@ -46,7 +48,7 @@ echo_b "Query chaincode with collection collectionMarblePrivateDetails on org1/p
|
|||
chaincodeQuery ${APP_CHANNEL} 1 1 ${CC_MARBLES_NAME} ${CC_MARBLES_QUERY_READPVTDETAILS_ARGS}
|
||||
echo_g "=== Query read details chaincode done ==="
|
||||
|
||||
echo_b "Update chaincode with new collection config"
|
||||
echo_b "Install chaincode with new collection config"
|
||||
for org in "${ORGS[@]}"
|
||||
do
|
||||
for peer in "${PEERS[@]}"
|
||||
|
|
|
@ -8,7 +8,7 @@ APP_CHANNEL="businesschannel"
|
|||
|
||||
# Client cmd execute timeout and retry times
|
||||
TIMEOUT="60"
|
||||
MAX_RETRY=5
|
||||
MAX_RETRY=10
|
||||
|
||||
# Organization and peers
|
||||
ORGS=( 1 2 )
|
||||
|
@ -84,7 +84,7 @@ CC_INVOKE_ARGS=${CC_02_INVOKE_ARGS}
|
|||
CC_QUERY_ARGS=${CC_02_QUERY_ARGS}
|
||||
|
||||
# Generate configs
|
||||
GEN_IMG=yeasy/hyperledger-fabric:1.2.0 # working dir is `/go/src/github.com/hyperledger/fabric`
|
||||
GEN_IMG=yeasy/hyperledger-fabric:${FABRIC_IMG_TAG} # working dir is `/go/src/github.com/hyperledger/fabric`
|
||||
GEN_CONTAINER=generator
|
||||
FABRIC_CFG_PATH=/etc/hyperledger/fabric
|
||||
CHANNEL_ARTIFACTS=channel-artifacts
|
||||
|
@ -97,7 +97,7 @@ UPDATE_ANCHOR_ORG1_TX=Org1MSPanchors.tx
|
|||
UPDATE_ANCHOR_ORG2_TX=Org2MSPanchors.tx
|
||||
|
||||
# CONFIGTXLATOR
|
||||
CTL_IMG=yeasy/hyperledger-fabric:1.2.0
|
||||
CTL_IMG=yeasy/hyperledger-fabric:${FABRIC_IMG_TAG}
|
||||
CTL_CONTAINER=configtxlator
|
||||
CTL_BASE_URL=http://127.0.0.1:7059
|
||||
CTL_ENCODE_URL=${CTL_BASE_URL}/protolator/encode
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
FABRIC_IMG_TAG=1.3.0
|
||||
EXT_IMG_TAG=amd64-0.4.13
|
||||
NETWORK=hlf_net
|
|
@ -0,0 +1,95 @@
|
|||
---
|
||||
version: '2.0'
|
||||
services:
|
||||
orderer.example.com: # orderer in solo mode
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: orderer-base
|
||||
container_name: orderer.example.com
|
||||
hostname: orderer.example.com
|
||||
expose:
|
||||
- '7050'
|
||||
volumes:
|
||||
- ./solo/channel-artifacts/orderer.genesis.block:/var/hyperledger/orderer/orderer.genesis.block
|
||||
- ./solo/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp:/var/hyperledger/orderer/msp
|
||||
- ./solo/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls:/var/hyperledger/orderer/tls
|
||||
peer0.org1.example.com: # peer node
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: peer-base
|
||||
container_name: peer0.org1.example.com # will generated automatically
|
||||
hostname: peer0.org1.example.com # will generated automatically
|
||||
environment:
|
||||
- CORE_PEER_ID=peer0.org1.example.com
|
||||
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051
|
||||
- CORE_PEER_CHAINCODELISTENADDRESS=peer0.org1.example.com:7052
|
||||
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
|
||||
- CORE_PEER_LOCALMSPID=Org1MSP
|
||||
- CORE_PEER_TLS_ENABLED=true
|
||||
volumes:
|
||||
- ./solo/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
|
||||
- ./solo/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
|
||||
expose:
|
||||
- 7051
|
||||
- 7052
|
||||
- 7053
|
||||
peer1.org1.example.com: # peer node
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: peer-base
|
||||
container_name: peer1.org1.example.com # will generated automatically
|
||||
hostname: peer1.org1.example.com # will generated automatically
|
||||
environment:
|
||||
- CORE_PEER_ID=peer1.org1.example.com
|
||||
- CORE_PEER_ADDRESS=peer1.org1.example.com:7051
|
||||
- CORE_PEER_CHAINCODELISTENADDRESS=peer1.org1.example.com:7052
|
||||
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:7051
|
||||
- CORE_PEER_LOCALMSPID=Org1MSP
|
||||
- CORE_PEER_TLS_ENABLED=true
|
||||
volumes:
|
||||
- ./solo/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp:/etc/hyperledger/fabric/msp
|
||||
- ./solo/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls:/etc/hyperledger/fabric/tls
|
||||
expose:
|
||||
- 7051
|
||||
- 7052
|
||||
- 7053
|
||||
peer0.org2.example.com: # peer node
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: peer-base
|
||||
container_name: peer0.org2.example.com # will generated automatically
|
||||
hostname: peer0.org2.example.com # will generated automatically
|
||||
environment:
|
||||
- CORE_PEER_ID=peer0.org2.example.com
|
||||
- CORE_PEER_ADDRESS=peer0.org2.example.com:7051
|
||||
- CORE_PEER_CHAINCODELISTENADDRESS=peer0.org2.example.com:7052
|
||||
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:7051
|
||||
- CORE_PEER_LOCALMSPID=Org2MSP
|
||||
- CORE_PEER_TLS_ENABLED=true
|
||||
volumes:
|
||||
- ./solo/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp:/etc/hyperledger/fabric/msp
|
||||
- ./solo/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls:/etc/hyperledger/fabric/tls
|
||||
expose:
|
||||
- 7051
|
||||
- 7052
|
||||
- 7053
|
||||
peer1.org2.example.com: # peer node
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: peer-base
|
||||
container_name: peer1.org2.example.com # will generated automatically
|
||||
hostname: peer1.org2.example.com # will generated automatically
|
||||
environment:
|
||||
- CORE_PEER_ID=peer1.org2.example.com
|
||||
- CORE_PEER_ADDRESS=peer1.org2.example.com:7051
|
||||
- CORE_PEER_CHAINCODELISTENADDRESS=peer1.org2.example.com:7052
|
||||
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org2.example.com:7051
|
||||
- CORE_PEER_LOCALMSPID=Org2MSP
|
||||
- CORE_PEER_TLS_ENABLED=true
|
||||
volumes:
|
||||
- ./solo/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp:/etc/hyperledger/fabric/msp
|
||||
- ./solo/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls:/etc/hyperledger/fabric/tls
|
||||
expose:
|
||||
- 7051
|
||||
- 7052
|
||||
- 7053
|
|
@ -0,0 +1,273 @@
|
|||
# Makefile to bootup the network, and do testing with channel, chaincode
|
||||
# Run `make test` will pass all testing cases, and delete the network
|
||||
# Run `make ready` will create a network, pass testing cases, and stand there for manual test, e.g., make test_channel_list
|
||||
|
||||
|
||||
# support advanced bash grammar
|
||||
SHELL:=/bin/bash
|
||||
|
||||
# mode of the network: solo, kafka, couchdb, event, dev
|
||||
HLF_MODE ?= solo
|
||||
|
||||
CODE_BUILD_WAIT=40 # time to wait to build peer/orderer from local code
|
||||
NETWORK_INIT_WAIT=2 # time to wait the fabric network finish initialization
|
||||
|
||||
COMPOSE_FILE ?= "docker-compose-2orgs-4peers-solo.yaml"
|
||||
|
||||
LOG_PATH ?= solo/logs
|
||||
|
||||
ifeq ($(HLF_MODE),kafka)
|
||||
COMPOSE_FILE="docker-compose-2orgs-4peers-kafka.yaml"
|
||||
LOG_PATH=kafka/logs
|
||||
else ifeq ($(HLF_MODE),couchdb)
|
||||
COMPOSE_FILE="docker-compose-2orgs-4peers-couchdb.yaml"
|
||||
else ifeq ($(HLF_MODE),event)
|
||||
COMPOSE_FILE="docker-compose-2orgs-4peers-event.yaml"
|
||||
else ifeq ($(HLF_MODE),be)
|
||||
COMPOSE_FILE="docker-compose-2orgs-4peers-solo-be.yaml"
|
||||
else ifeq ($(HLF_MODE),dev)
|
||||
COMPOSE_FILE="docker-compose-1orgs-1peers-dev.yaml"
|
||||
endif
|
||||
|
||||
all: test
|
||||
|
||||
test:
|
||||
@echo "Run test with $(COMPOSE_FILE)"
|
||||
@echo "Please make sure u have setup Docker and pulled images by 'make setup download'."
|
||||
|
||||
make ready # Run all testing till ready
|
||||
|
||||
make stop clean
|
||||
|
||||
ready: # create/join channel, install/instantiate cc
|
||||
make stop
|
||||
# make clean_config # Remove existing crypto-config and channel artifacts.
|
||||
make gen_config # Will ignore if local config path exists
|
||||
|
||||
make start
|
||||
|
||||
#if [ "$(HLF_MODE)" = "dev" ]; then \
|
||||
if [ "$(HLF_MODE)" = "kafka" -o "$(HLF_MODE)" = "dev" ]; then \
|
||||
sleep ${CODE_BUILD_WAIT}; \
|
||||
else \
|
||||
sleep ${NETWORK_INIT_WAIT}; \
|
||||
fi
|
||||
|
||||
make channel_test
|
||||
|
||||
make update_anchors
|
||||
|
||||
make cc_test
|
||||
|
||||
make test_lscc # test lscc operations
|
||||
make test_qscc # test qscc operations
|
||||
|
||||
make test_fetch_blocks # fetch block files
|
||||
|
||||
make test_config_update
|
||||
make test_channel_update
|
||||
|
||||
make test_fetch_blocks # fetch block files again
|
||||
make test_configtxlator
|
||||
|
||||
make test_channel_list
|
||||
make test_channel_getinfo
|
||||
|
||||
make logs_save
|
||||
|
||||
@echo "Now the fabric network is ready to play"
|
||||
@echo "* run 'make cli' to enter into the fabric-cli container."
|
||||
@echo "* run 'make stop' when done."
|
||||
|
||||
# channel related operations
|
||||
channel_test: test_channel_create test_channel_join test_channel_list test_channel_getinfo
|
||||
|
||||
# chaincode related operations
|
||||
cc_test: test_cc_install test_cc_instantiate test_cc_invoke_query
|
||||
|
||||
restart: stop start
|
||||
|
||||
start: # bootup the fabric network
|
||||
@echo "Start a fabric network with ${COMPOSE_FILE}..."
|
||||
@make clean
|
||||
@docker-compose -f ${COMPOSE_FILE} up -d # Start a fabric network
|
||||
|
||||
stop: # stop the fabric network
|
||||
@echo "Stop the fabric network with ${COMPOSE_FILE}..."
|
||||
@docker-compose -f ${COMPOSE_FILE} down >& /tmp/docker-compose.log
|
||||
|
||||
chaincode_dev: restart chaincode_init test_cc_peer0 stop
|
||||
|
||||
################## Channel testing operations ################
|
||||
|
||||
test_channel_list: # List the channel that peer joined
|
||||
@echo "List the joined channels"
|
||||
@docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_channel_list.sh"
|
||||
|
||||
test_channel_getinfo: # Get info of a channel
|
||||
@echo "Get info of the app channel"
|
||||
@docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_channel_getinfo.sh"
|
||||
|
||||
test_channel_create: # Init the channel
|
||||
@echo "Create channel on the fabric network"
|
||||
@docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_channel_create.sh"
|
||||
|
||||
test_channel_join: # Init the channel
|
||||
@echo "Join channel"
|
||||
@docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_channel_join.sh"
|
||||
|
||||
update_anchors: # Update the anchor peer
|
||||
@echo "Update anchors on the fabric network"
|
||||
@docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_update_anchors.sh"
|
||||
|
||||
test_channel_update: # send the channel update transaction
|
||||
@echo "Test channel update with adding new org"
|
||||
@docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_channel_update.sh"
|
||||
|
||||
################## Configtxlator testing operations ################
|
||||
test_configtxlator: # Test change config using configtxlator
|
||||
if [ "$(HLF_MODE)" = "kafka" ]; then \
|
||||
bash scripts/test_configtxlator.sh kafka; \
|
||||
else \
|
||||
bash scripts/test_configtxlator.sh solo; \
|
||||
fi
|
||||
|
||||
test_config_update: # Test change config to add new org
|
||||
if [ "$(HLF_MODE)" = "kafka" ]; then \
|
||||
bash scripts/test_config_update.sh kafka; \
|
||||
else \
|
||||
bash scripts/test_config_update.sh solo; \
|
||||
fi
|
||||
|
||||
################## Chaincode testing operations ################
|
||||
test_cc: # test chaincode, deprecated
|
||||
if [ "$(HLF_MODE)" = "dev" ]; then \
|
||||
make test_cc_peer0; \
|
||||
else \
|
||||
make test_cc_invoke_query; \
|
||||
fi
|
||||
|
||||
test_cc_install: # Install the chaincode
|
||||
@echo "Install chaincode on the fabric network"
|
||||
@docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_install.sh"
|
||||
|
||||
test_cc_instantiate: # Instantiate the chaincode
|
||||
@echo "Instantiate chaincode on the fabric network"
|
||||
@docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_instantiate.sh"
|
||||
|
||||
test_cc_upgrade: # Upgrade the chaincode
|
||||
@echo "Upgrade chaincode on the fabric network"
|
||||
@docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_upgrade.sh"
|
||||
|
||||
test_cc_list: # List the chaincode
|
||||
@echo "List chaincode information (installed and instantited)"
|
||||
@docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_list.sh"
|
||||
|
||||
test_cc_invoke_query: # test user chaincode on all peers
|
||||
@echo "Invoke and query cc example02 on all peers"
|
||||
@docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_invoke_query.sh"
|
||||
|
||||
test_qscc: # test qscc queries
|
||||
@echo "Test QSCC query"
|
||||
@docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_qscc.sh"
|
||||
|
||||
test_lscc: # test lscc quries
|
||||
@echo "Test LSCC query"
|
||||
@docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_lscc.sh"
|
||||
|
||||
# FIXME: docker doesn't support wildcard in cp right now
|
||||
test_fetch_blocks: # test fetching channel blocks fetch
|
||||
@echo "Test fetching block files"
|
||||
@docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_fetch_blocks.sh"
|
||||
|
||||
test_eventsclient: # test get event notification in a loop
|
||||
@echo "Test fetching event notification"
|
||||
@docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/start_eventsclient.sh"
|
||||
|
||||
test_sidedb: # test sideDB/private data feature
|
||||
@echo "Test sideDB"
|
||||
@docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_sideDB.sh"
|
||||
|
||||
temp: # test temp instructions, used for experiment
|
||||
@echo "Test experimental instructions"
|
||||
@docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_temp.sh"
|
||||
|
||||
################## Env setup related, no need to see usually ################
|
||||
|
||||
setup: # setup the environment
|
||||
bash scripts/env_setup.sh # Installing Docker and Docker-Compose
|
||||
|
||||
check: # Check shell scripts grammar
|
||||
@echo "Check shell scripts grammar"
|
||||
[ `which shellcheck` ] && shellcheck scripts/*.sh
|
||||
|
||||
clean: # clean up containers
|
||||
@echo "Clean all HLF containers and chaincode images"
|
||||
@-docker ps -a | awk '{ print $$1,$$2 }' | grep "hyperledger/fabric" | awk '{ print $$1 }' | xargs -r -I {} docker rm -f {}
|
||||
@-docker ps -a | awk '$$2 ~ /dev-peer/ { print $$1 }' | xargs -r -I {} docker rm -f {}
|
||||
@-docker images | awk '$$1 ~ /dev-peer/ { print $$3 }' | xargs -r -I {} docker rmi -f {}
|
||||
echo "May manually clean the crypto-config and $(MODE)/channel-artifacts"
|
||||
|
||||
clean_config: clean_channel_artifacts clean_crypto_config
|
||||
|
||||
env_clean: # clean up environment
|
||||
@echo "Clean all images and containers"
|
||||
bash scripts/env_clean.sh
|
||||
|
||||
cli: # enter the cli container
|
||||
docker exec -it fabric-cli bash
|
||||
|
||||
orderer: # enter the orderer container
|
||||
docker exec -it orderer.example.com bash
|
||||
|
||||
peer: # enter the peer container
|
||||
docker exec -it peer0.org1.example.com bash
|
||||
|
||||
ps: # show existing docker images
|
||||
docker ps -a
|
||||
|
||||
logs: # show logs
|
||||
docker-compose -f ${COMPOSE_FILE} logs -f --tail 200
|
||||
|
||||
logs_check: logs_save logs_view
|
||||
|
||||
logs_save: # save logs
|
||||
@echo "All tests done, saving logs locally"
|
||||
[ -d $(LOG_PATH) ] || mkdir -p $(LOG_PATH)
|
||||
docker logs peer0.org1.example.com >& $(LOG_PATH)/dev_peer0.log
|
||||
docker logs orderer.example.com >& $(LOG_PATH)/dev_orderer.log
|
||||
docker-compose -f ${COMPOSE_FILE} logs >& $(LOG_PATH)/dev_all.log
|
||||
|
||||
logs_view: # view logs
|
||||
less $(LOG_PATH)/dev_peer.log
|
||||
|
||||
elk: # insert logs into elk
|
||||
# curl -XDELETE http://localhost:9200/logstash-\*
|
||||
nc localhost 5000 < $(LOG_PATH)/dev_all.log
|
||||
|
||||
gen_config: # generate config artifacts
|
||||
if [ "$(HLF_MODE)" = "kafka" ]; then \
|
||||
bash scripts/gen_config.sh kafka; \
|
||||
else \
|
||||
bash scripts/gen_config.sh solo; \
|
||||
fi
|
||||
|
||||
clean_channel_artifacts: # clean channel related artifacts
|
||||
if [ "$(HLF_MODE)" = "kafka" ]; then \
|
||||
rm -rf kafka/channel-artifacts; \
|
||||
else \
|
||||
rm -rf solo/channel-artifacts; \
|
||||
fi
|
||||
|
||||
clean_crypto_config: # clean config artifacts
|
||||
rm -rf crypto-config
|
||||
rm -rf org3/crypto-config
|
||||
|
||||
download: # download required images
|
||||
@echo "Download Docker images"
|
||||
bash scripts/download_images.sh
|
||||
|
||||
################## chaincode dev mode ################
|
||||
chaincode_init: # start chaincode in dev mode and do install/instantiate
|
||||
@echo "Install and instantiate cc example02 on the fabric dev network"
|
||||
@docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/init_chaincode_dev.sh"
|
|
@ -0,0 +1,97 @@
|
|||
# This is the development compose file to config env and command
|
||||
# Notice that chaincode is executed inside docker in default net mode
|
||||
# https://github.com/yeasy/docker-compose-files
|
||||
|
||||
# Depends on the yeasy/hyperledger-fabric image.
|
||||
|
||||
version: '2'
|
||||
|
||||
services:
|
||||
orderer.example.com: # There can be multiple orderers
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: orderer-base
|
||||
image: yeasy/hyperledger-fabric:${FABRIC_IMG_TAG}
|
||||
container_name: orderer.example.com
|
||||
hostname: orderer.example.com
|
||||
ports:
|
||||
- "7050:7050"
|
||||
environment:
|
||||
# Kafka related configurations
|
||||
- ORDERER_KAFKA_RETRY_SHORTINTERVAL=1s
|
||||
- ORDERER_KAFKA_RETRY_SHORTTOTAL=30s
|
||||
- ORDERER_KAFKA_VERBOSE=true
|
||||
volumes:
|
||||
- $GOPATH/src/github.com/hyperledger/fabric:/go/src/github.com/hyperledger/fabric
|
||||
# for solo case
|
||||
#- ./solo/channel-artifacts/orderer.genesis.block:/var/hyperledger/orderer/orderer.genesis.block
|
||||
#- ./solo/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp:/var/hyperledger/orderer/msp
|
||||
#- ./solo/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/:/var/hyperledger/orderer/tls
|
||||
# for kafka case
|
||||
- ./kafka/channel-artifacts/orderer.genesis.block:/var/hyperledger/orderer/orderer.genesis.block
|
||||
- ./kafka/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp:/var/hyperledger/orderer/msp
|
||||
- ./kafka/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/:/var/hyperledger/orderer/tls
|
||||
command: bash -c 'bash /tmp/orderer_build.sh; orderer start' # use this if to debug orderer
|
||||
#command: bash -c 'orderer start'
|
||||
|
||||
peer0.org1.example.com:
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: peer-base
|
||||
image: yeasy/hyperledger-fabric:${FABRIC_IMG_TAG}
|
||||
container_name: peer0.org1.example.com
|
||||
hostname: peer0.org1.example.com
|
||||
environment:
|
||||
- CORE_PEER_ID=peer0.org1.example.com
|
||||
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051
|
||||
- CORE_PEER_CHAINCODELISTENADDRESS=peer0.org1.example.com:7052
|
||||
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
|
||||
- CORE_PEER_LOCALMSPID=Org1MSP
|
||||
volumes:
|
||||
- $GOPATH/src/github.com/hyperledger/fabric:/go/src/github.com/hyperledger/fabric
|
||||
# solo mode configuration
|
||||
#- ./solo/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
|
||||
#- ./solo/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
|
||||
# kafka mode configuration
|
||||
- ./kafka/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
|
||||
- ./kafka/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
|
||||
ports:
|
||||
- 7051:7051
|
||||
- 7052:7052
|
||||
- 7053:7053
|
||||
#command: bash -c 'bash /tmp/peer_build.sh; peer node start'
|
||||
command: bash -c 'peer node start'
|
||||
#command: bash -c 'peer node start --peer-chaincodedev=true' # DEV mode
|
||||
|
||||
cli:
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: cli-base
|
||||
image: yeasy/hyperledger-fabric:${FABRIC_IMG_TAG}
|
||||
container_name: fabric-cli
|
||||
hostname: fabric-cli
|
||||
tty: true
|
||||
environment:
|
||||
- CORE_PEER_ID=fabric-cli
|
||||
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051 # default to operate on peer0.org1
|
||||
- CORE_PEER_LOCALMSPID=Org1MSP
|
||||
- CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
|
||||
- CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
|
||||
- CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
|
||||
- CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
|
||||
volumes:
|
||||
- $GOPATH/src/github.com/hyperledger/fabric:/opt/gopath/src/github.com/hyperledger/fabric
|
||||
#- /tmp/:/tmp/
|
||||
- ./scripts:/tmp/scripts
|
||||
# solo mode configuration
|
||||
#- ./solo/channel-artifacts:/tmp/channel-artifacts
|
||||
#- ./solo/configtx.yaml:/etc/hyperledger/fabric/configtx.yaml
|
||||
#- ./solo/crypto-config.yaml:/etc/hyperledger/fabric/crypto-config.yaml
|
||||
#- ./solo/crypto-config:/etc/hyperledger/fabric/crypto-config
|
||||
#- ./examples:/opt/gopath/src/github.com/hyperledger/fabric/examples
|
||||
# kafka mode configuration
|
||||
- ./kafka/channel-artifacts:/tmp/channel-artifacts
|
||||
- ./kafka/configtx.yaml:/etc/hyperledger/fabric/configtx.yaml
|
||||
- ./kafka/crypto-config.yaml:/etc/hyperledger/fabric/crypto-config.yaml
|
||||
- ./kafka/crypto-config:/etc/hyperledger/fabric/crypto-config
|
||||
- ./examples:/opt/gopath/src/github.com/hyperledger/fabric/examples
|
|
@ -0,0 +1,78 @@
|
|||
# All elements in this file should depend on the base-solo.yaml
|
||||
# Provided solo-base fabric network with:
|
||||
|
||||
# ca.org1.example.com
|
||||
# ca.org2.example.com
|
||||
# orderer.example.com
|
||||
# peer0.org1.example.com
|
||||
# peer1.org1.example.com
|
||||
# peer0.org2.example.com
|
||||
# peer1.org2.example.com
|
||||
# cli
|
||||
|
||||
version: '2' # v3 does not support 'extends' yet
|
||||
|
||||
services:
|
||||
ca.org1.example.com: # ca node for org1
|
||||
extends:
|
||||
file: base-solo.yaml
|
||||
service: ca.org1.example.com
|
||||
environment:
|
||||
- FABRIC_CA_SERVER_TLS_ENABLED=false
|
||||
|
||||
ca.org2.example.com: # ca node for org1
|
||||
extends:
|
||||
file: base-solo.yaml
|
||||
service: ca.org2.example.com
|
||||
environment:
|
||||
- FABRIC_CA_SERVER_TLS_ENABLED=false
|
||||
|
||||
orderer.example.com: # orderer node for example org
|
||||
extends:
|
||||
file: base-solo.yaml
|
||||
service: orderer.example.com
|
||||
environment:
|
||||
- ORDERER_GENERAL_TLS_ENABLED=false
|
||||
|
||||
cli: # client node
|
||||
extends:
|
||||
file: base-solo.yaml
|
||||
service: cli
|
||||
environment:
|
||||
#- GOPATH=/opt/gopath
|
||||
- CORE_PEER_TLS_ENABLED=false # to enable TLS, change to false
|
||||
|
||||
## following are peer nodes ##
|
||||
|
||||
peer0.org1.example.com:
|
||||
extends:
|
||||
file: base-solo.yaml
|
||||
service: peer0.org1.example.com
|
||||
environment:
|
||||
- CORE_PEER_TLS_ENABLED=false
|
||||
|
||||
peer1.org1.example.com:
|
||||
extends:
|
||||
file: base-solo.yaml
|
||||
service: peer1.org1.example.com
|
||||
environment:
|
||||
- CORE_PEER_TLS_ENABLED=false
|
||||
|
||||
peer0.org2.example.com:
|
||||
extends:
|
||||
file: base-solo.yaml
|
||||
service: peer0.org2.example.com
|
||||
environment:
|
||||
- CORE_PEER_TLS_ENABLED=false
|
||||
|
||||
peer1.org2.example.com:
|
||||
extends:
|
||||
file: base-solo.yaml
|
||||
service: peer1.org2.example.com
|
||||
environment:
|
||||
- CORE_PEER_TLS_ENABLED=false
|
||||
|
||||
event-listener:
|
||||
extends:
|
||||
file: base-solo.yaml
|
||||
service: event-listener
|
|
@ -0,0 +1,256 @@
|
|||
# All elements in this file should depend on the base.yaml
|
||||
# Provided a Kafka enabled fabric network with:
|
||||
|
||||
# ca.org1.example.com
|
||||
# ca.org2.example.com
|
||||
# orderer.example.com
|
||||
# peer0.org1.example.com
|
||||
# peer1.org1.example.com
|
||||
# peer0.org2.example.com
|
||||
# peer1.org2.example.com
|
||||
# 3 zookeeper nodes
|
||||
# 4 kafka nodes
|
||||
# cli
|
||||
|
||||
version: '2' # v3 does not support 'extends' yet
|
||||
|
||||
services:
|
||||
ca.org1.example.com:
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: ca-base
|
||||
container_name: ca.org1.example.com
|
||||
hostname: ca.org1.example.com
|
||||
environment:
|
||||
- FABRIC_CA_SERVER_CA_NAME=ca-org1
|
||||
- FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem
|
||||
- FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/c843d3f021118963ce5d340e95286e8869bb7bd051454cd4166aa2887a2ad451_sk
|
||||
ports:
|
||||
- "7054:7054"
|
||||
volumes:
|
||||
- ./crypto-config/peerOrganizations/org1.example.com/ca/:/etc/hyperledger/fabric-ca-server-config
|
||||
command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/c843d3f021118963ce5d340e95286e8869bb7bd051454cd4166aa2887a2ad451_sk -b admin:adminpw -d'
|
||||
|
||||
ca.org2.example.com:
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: ca-base
|
||||
container_name: ca.org2.example.com
|
||||
hostname: ca.org2.example.com
|
||||
environment:
|
||||
- FABRIC_CA_SERVER_CA_NAME=ca-org2
|
||||
- FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org2.example.com-cert.pem
|
||||
- FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/1ee551a8753171c0377366e96a1d7ec01afddb868c9483cc501b6f8ac7ae752f_sk
|
||||
ports:
|
||||
- "8054:7054"
|
||||
volumes:
|
||||
- ./crypto-config/peerOrganizations/org2.example.com/ca/:/etc/hyperledger/fabric-ca-server-config
|
||||
command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org2.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/1ee551a8753171c0377366e96a1d7ec01afddb868c9483cc501b6f8ac7ae752f_sk -b admin:adminpw -d'
|
||||
|
||||
orderer.example.com: # There can be multiple orderers
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: orderer-base
|
||||
container_name: orderer.example.com
|
||||
hostname: orderer.example.com
|
||||
ports:
|
||||
- "7050:7050"
|
||||
environment:
|
||||
# Kafka related configurations
|
||||
- ORDERER_KAFKA_RETRY_SHORTINTERVAL=1s
|
||||
- ORDERER_KAFKA_RETRY_SHORTTOTAL=30s
|
||||
- ORDERER_KAFKA_VERBOSE=true
|
||||
volumes:
|
||||
- ./crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp:/var/hyperledger/orderer/msp
|
||||
- ./crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/:/var/hyperledger/orderer/tls
|
||||
- ./kafka/channel-artifacts/orderer.genesis.block:/var/hyperledger/orderer/orderer.genesis.block
|
||||
command: orderer start
|
||||
|
||||
cli:
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: cli-base
|
||||
container_name: fabric-cli
|
||||
hostname: fabric-cli
|
||||
tty: true
|
||||
environment:
|
||||
- CORE_PEER_ID=fabric-cli
|
||||
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051 # default to operate on peer0.org1
|
||||
- CORE_PEER_LOCALMSPID=Org1MSP
|
||||
- CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
|
||||
- CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
|
||||
- CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
|
||||
- CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
|
||||
volumes:
|
||||
- ./scripts:/tmp/scripts
|
||||
- ./crypto-config.yaml:/etc/hyperledger/fabric/crypto-config.yaml
|
||||
- ./crypto-config:/etc/hyperledger/fabric/crypto-config
|
||||
- ./kafka/channel-artifacts:/tmp/channel-artifacts
|
||||
- ./kafka/configtx.yaml:/etc/hyperledger/fabric/configtx.yaml
|
||||
- ./examples:/opt/gopath/src/examples
|
||||
|
||||
## following are peer nodes ##
|
||||
|
||||
peer0.org1.example.com:
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: peer-base
|
||||
container_name: peer0.org1.example.com
|
||||
hostname: peer0.org1.example.com
|
||||
environment:
|
||||
- CORE_PEER_ID=peer0.org1.example.com
|
||||
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051
|
||||
- CORE_PEER_CHAINCODELISTENADDRESS=peer0.org1.example.com:7052
|
||||
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
|
||||
- CORE_PEER_LOCALMSPID=Org1MSP
|
||||
volumes:
|
||||
- ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
|
||||
- ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
|
||||
ports:
|
||||
- 7051:7051
|
||||
- 7052:7052
|
||||
- 7053:7053
|
||||
|
||||
peer1.org1.example.com:
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: peer-base
|
||||
container_name: peer1.org1.example.com
|
||||
hostname: peer1.org1.example.com
|
||||
environment:
|
||||
- CORE_PEER_ID=peer1.org1.example.com
|
||||
- CORE_PEER_ADDRESS=peer1.org1.example.com:7051
|
||||
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:7051
|
||||
- CORE_PEER_CHAINCODELISTENADDRESS=peer1.org1.example.com:7052
|
||||
- CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.example.com:7051
|
||||
- CORE_PEER_LOCALMSPID=Org1MSP
|
||||
volumes:
|
||||
- ./crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp:/etc/hyperledger/fabric/msp
|
||||
- ./crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls:/etc/hyperledger/fabric/tls
|
||||
ports:
|
||||
- 8051:7051
|
||||
- 8052:7052
|
||||
- 8053:7053
|
||||
|
||||
peer0.org2.example.com:
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: peer-base
|
||||
container_name: peer0.org2.example.com
|
||||
hostname: peer0.org2.example.com
|
||||
environment:
|
||||
- CORE_PEER_ID=peer0.org2.example.com
|
||||
- CORE_PEER_ADDRESS=peer0.org2.example.com:7051
|
||||
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:7051
|
||||
- CORE_PEER_CHAINCODELISTENADDRESS=peer0.org2.example.com:7052
|
||||
- CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org2.example.com:7051
|
||||
- CORE_PEER_LOCALMSPID=Org2MSP
|
||||
volumes:
|
||||
- ./crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp:/etc/hyperledger/fabric/msp
|
||||
- ./crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls:/etc/hyperledger/fabric/tls
|
||||
ports:
|
||||
- 9051:7051
|
||||
- 9052:7052
|
||||
- 9053:7053
|
||||
|
||||
peer1.org2.example.com:
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: peer-base
|
||||
container_name: peer1.org2.example.com
|
||||
hostname: peer1.org2.example.com
|
||||
environment:
|
||||
- CORE_PEER_ID=peer1.org2.example.com
|
||||
- CORE_PEER_ADDRESS=peer1.org2.example.com:7051
|
||||
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org2.example.com:7051
|
||||
- CORE_PEER_CHAINCODELISTENADDRESS=peer1.org2.example.com:7052
|
||||
- CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org2.example.com:7051
|
||||
- CORE_PEER_LOCALMSPID=Org2MSP
|
||||
volumes:
|
||||
- ./crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp:/etc/hyperledger/fabric/msp
|
||||
- ./crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls:/etc/hyperledger/fabric/tls
|
||||
ports:
|
||||
- 10051:7051
|
||||
- 10052:7052
|
||||
- 10053:7053
|
||||
|
||||
|
||||
# ZooKeeper services, at least 3 nodes
|
||||
zookeeper0:
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: zookeeper-base
|
||||
container_name: zookeeper0
|
||||
hostname: zookeeper0
|
||||
environment:
|
||||
- ZOO_MY_ID=1
|
||||
- ZOO_SERVERS=server.1=zookeeper0:2888:3888 server.2=zookeeper1:2888:3888 server.3=zookeeper2:2888:3888
|
||||
|
||||
zookeeper1:
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: zookeeper-base
|
||||
container_name: zookeeper1
|
||||
hostname: zookeeper1
|
||||
environment:
|
||||
- ZOO_MY_ID=2
|
||||
- ZOO_SERVERS=server.1=zookeeper0:2888:3888 server.2=zookeeper1:2888:3888 server.3=zookeeper2:2888:3888
|
||||
|
||||
zookeeper2:
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: zookeeper-base
|
||||
container_name: zookeeper2
|
||||
hostname: zookeeper2
|
||||
environment:
|
||||
- ZOO_MY_ID=3
|
||||
- ZOO_SERVERS=server.1=zookeeper0:2888:3888 server.2=zookeeper1:2888:3888 server.3=zookeeper2:2888:3888
|
||||
|
||||
# Kafka services, at least 4 node to tolerant work with 1 node failure
|
||||
kafka0:
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: kafka-base
|
||||
container_name: kafka0
|
||||
hostname: kafka0
|
||||
environment:
|
||||
- KAFKA_BROKER_ID=0
|
||||
- KAFKA_MIN_INSYNC_REPLICAS=2
|
||||
- KAFKA_DEFAULT_REPLICATION_FACTOR=3
|
||||
- KAFKA_ZOOKEEPER_CONNECT=zookeeper0:2181,zookeeper1:2181,zookeeper2:2181
|
||||
|
||||
kafka1:
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: kafka-base
|
||||
container_name: kafka1
|
||||
hostname: kafka1
|
||||
environment:
|
||||
- KAFKA_BROKER_ID=1
|
||||
- KAFKA_DEFAULT_REPLICATION_FACTOR=3
|
||||
- KAFKA_MIN_INSYNC_REPLICAS=2
|
||||
- KAFKA_ZOOKEEPER_CONNECT=zookeeper0:2181,zookeeper1:2181,zookeeper2:2181
|
||||
|
||||
kafka2:
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: kafka-base
|
||||
container_name: kafka2
|
||||
hostname: kafka2
|
||||
environment:
|
||||
- KAFKA_BROKER_ID=2
|
||||
- KAFKA_DEFAULT_REPLICATION_FACTOR=3
|
||||
- KAFKA_MIN_INSYNC_REPLICAS=2
|
||||
- KAFKA_ZOOKEEPER_CONNECT=zookeeper0:2181,zookeeper1:2181,zookeeper2:2181
|
||||
|
||||
kafka3:
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: kafka-base
|
||||
container_name: kafka3
|
||||
hostname: kafka3
|
||||
environment:
|
||||
- KAFKA_BROKER_ID=3
|
||||
- KAFKA_DEFAULT_REPLICATION_FACTOR=3
|
||||
- KAFKA_MIN_INSYNC_REPLICAS=2
|
||||
- KAFKA_ZOOKEEPER_CONNECT=zookeeper0:2181,zookeeper1:2181,zookeeper2:2181
|
|
@ -0,0 +1,203 @@
|
|||
# All elements in this file should depend on the base.yaml
|
||||
# Provided solo-base fabric network with:
|
||||
|
||||
# ca.org1.example.com
|
||||
# ca.org2.example.com
|
||||
# orderer.example.com
|
||||
# peer0.org1.example.com
|
||||
# peer1.org1.example.com
|
||||
# peer0.org2.example.com
|
||||
# peer1.org2.example.com
|
||||
# cli
|
||||
|
||||
version: '2' # v3 does not support 'extends' yet
|
||||
|
||||
services:
|
||||
ca.org1.example.com: # ca node for org1
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: ca-base
|
||||
container_name: ca.org1.example.com
|
||||
hostname: ca.org1.example.com
|
||||
environment:
|
||||
- FABRIC_CA_SERVER_CA_NAME=ca-org1
|
||||
- FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem
|
||||
- FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/c843d3f021118963ce5d340e95286e8869bb7bd051454cd4166aa2887a2ad451_sk
|
||||
ports:
|
||||
- "7054:7054"
|
||||
volumes:
|
||||
- ./crypto-config/peerOrganizations/org1.example.com/ca/:/etc/hyperledger/fabric-ca-server-config
|
||||
command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/c843d3f021118963ce5d340e95286e8869bb7bd051454cd4166aa2887a2ad451_sk -b admin:adminpw -d'
|
||||
|
||||
ca.org2.example.com: # ca node for org2
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: ca-base
|
||||
container_name: ca.org2.example.com
|
||||
hostname: ca.org2.example.com
|
||||
environment:
|
||||
- FABRIC_CA_SERVER_CA_NAME=ca-org2
|
||||
- FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org2.example.com-cert.pem
|
||||
- FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/1ee551a8753171c0377366e96a1d7ec01afddb868c9483cc501b6f8ac7ae752f_sk
|
||||
ports:
|
||||
- "8054:7054"
|
||||
volumes:
|
||||
- ./crypto-config/peerOrganizations/org2.example.com/ca/:/etc/hyperledger/fabric-ca-server-config
|
||||
command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org2.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/1ee551a8753171c0377366e96a1d7ec01afddb868c9483cc501b6f8ac7ae752f_sk -b admin:adminpw -d'
|
||||
|
||||
orderer.example.com: # orderer in solo mode
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: orderer-base
|
||||
container_name: orderer.example.com
|
||||
hostname: orderer.example.com
|
||||
ports:
|
||||
- "7050:7050"
|
||||
volumes:
|
||||
- ./crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp:/var/hyperledger/orderer/msp
|
||||
- ./crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/:/var/hyperledger/orderer/tls
|
||||
- ./solo/channel-artifacts/orderer.genesis.block:/var/hyperledger/orderer/orderer.genesis.block
|
||||
|
||||
## following are peer nodes ##
|
||||
|
||||
peer0.org1.example.com:
|
||||
extends:
|
||||
file: peer.yaml
|
||||
service: peer-solo
|
||||
container_name: peer0.org1.example.com
|
||||
hostname: peer0.org1.example.com
|
||||
environment:
|
||||
- CORE_PEER_ID=peer0.org1.example.com
|
||||
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051
|
||||
- CORE_PEER_CHAINCODELISTENADDRESS=peer0.org1.example.com:7052
|
||||
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
|
||||
- CORE_PEER_LOCALMSPID=Org1MSP
|
||||
volumes:
|
||||
- ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
|
||||
- ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
|
||||
ports:
|
||||
- 7051:7051
|
||||
- 7052:7052
|
||||
- 7053:7053
|
||||
|
||||
peer1.org1.example.com:
|
||||
extends:
|
||||
file: peer.yaml
|
||||
service: peer-solo
|
||||
container_name: peer1.org1.example.com
|
||||
hostname: peer1.org1.example.com
|
||||
environment:
|
||||
- CORE_PEER_ID=peer1.org1.example.com
|
||||
- CORE_PEER_ADDRESS=peer1.org1.example.com:7051
|
||||
- CORE_PEER_CHAINCODELISTENADDRESS=peer1.org1.example.com:7052
|
||||
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:7051
|
||||
- CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.example.com:7051
|
||||
- CORE_PEER_LOCALMSPID=Org1MSP
|
||||
volumes:
|
||||
- ./crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp:/etc/hyperledger/fabric/msp
|
||||
- ./crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls:/etc/hyperledger/fabric/tls
|
||||
ports:
|
||||
- 8051:7051
|
||||
- 8052:7052
|
||||
- 8053:7053
|
||||
|
||||
peer0.org2.example.com:
|
||||
extends:
|
||||
file: peer.yaml
|
||||
service: peer-solo
|
||||
container_name: peer0.org2.example.com
|
||||
hostname: peer0.org2.example.com
|
||||
environment:
|
||||
- CORE_PEER_ID=peer0.org2.example.com
|
||||
- CORE_PEER_ADDRESS=peer0.org2.example.com:7051
|
||||
- CORE_PEER_CHAINCODELISTENADDRESS=peer0.org2.example.com:7052
|
||||
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:7051
|
||||
- CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org2.example.com:7051
|
||||
- CORE_PEER_LOCALMSPID=Org2MSP
|
||||
volumes:
|
||||
- ./crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp:/etc/hyperledger/fabric/msp
|
||||
- ./crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls:/etc/hyperledger/fabric/tls
|
||||
ports:
|
||||
- 9051:7051
|
||||
- 9052:7052
|
||||
- 9053:7053
|
||||
|
||||
peer1.org2.example.com:
|
||||
extends:
|
||||
file: peer.yaml
|
||||
service: peer-solo
|
||||
container_name: peer1.org2.example.com
|
||||
hostname: peer1.org2.example.com
|
||||
environment:
|
||||
- CORE_PEER_ID=peer1.org2.example.com
|
||||
- CORE_PEER_ADDRESS=peer1.org2.example.com:7051
|
||||
- CORE_PEER_CHAINCODELISTENADDRESS=peer1.org2.example.com:7052
|
||||
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org2.example.com:7051
|
||||
- CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org2.example.com:7051
|
||||
- CORE_PEER_LOCALMSPID=Org2MSP
|
||||
volumes:
|
||||
- ./crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp:/etc/hyperledger/fabric/msp
|
||||
- ./crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls:/etc/hyperledger/fabric/tls
|
||||
ports:
|
||||
- 10051:7051
|
||||
- 10052:7052
|
||||
- 10053:7053
|
||||
|
||||
peer0.org3.example.com:
|
||||
extends:
|
||||
file: peer.yaml
|
||||
service: peer-solo
|
||||
container_name: peer0.org3.example.com
|
||||
hostname: peer0.org3.example.com
|
||||
environment:
|
||||
- CORE_PEER_ID=peer0.org3.example.com
|
||||
- CORE_PEER_ADDRESS=peer0.org3.example.com:7051
|
||||
- CORE_PEER_CHAINCODELISTENADDRESS=peer0.org3.example.com:7052
|
||||
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org3.example.com:7051
|
||||
- CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org3.example.com:7051
|
||||
- CORE_PEER_LOCALMSPID=Org3MSP
|
||||
volumes:
|
||||
- ./crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp:/etc/hyperledger/fabric/msp
|
||||
- ./crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls:/etc/hyperledger/fabric/tls
|
||||
ports:
|
||||
- 11051:7051
|
||||
- 11052:7052
|
||||
- 11053:7053
|
||||
|
||||
cli: # client node
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: cli-base
|
||||
container_name: fabric-cli
|
||||
hostname: fabric-cli
|
||||
volumes:
|
||||
- ./scripts:/tmp/scripts
|
||||
- ./crypto-config.yaml:/etc/hyperledger/fabric/crypto-config.yaml
|
||||
- ./crypto-config:/etc/hyperledger/fabric/crypto-config
|
||||
- ./solo/configtx.yaml:/etc/hyperledger/fabric/configtx.yaml
|
||||
- ./solo/channel-artifacts:/tmp/channel-artifacts
|
||||
- ./examples:/opt/gopath/src/examples
|
||||
|
||||
#deprecated
|
||||
event-listener:
|
||||
extends:
|
||||
file: base.yaml
|
||||
service: event-listener-base
|
||||
container_name: fabric-event-listener
|
||||
hostname: fabric-event-listener
|
||||
environment:
|
||||
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051 # default to operate on peer0.org1
|
||||
- CORE_PEER_LOCALMSPID=Org1MSP
|
||||
- CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
|
||||
- CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
|
||||
- CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
|
||||
- CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.Org1.example.com/msp
|
||||
volumes:
|
||||
- ./scripts:/tmp/scripts
|
||||
- ./crypto-config.yaml:/etc/hyperledger/fabric/crypto-config.yaml
|
||||
- ./crypto-config:/etc/hyperledger/fabric/crypto-config
|
||||
- ./solo/configtx.yaml:/etc/hyperledger/fabric/configtx.yaml
|
||||
- ./solo/channel-artifacts:/tmp/channel-artifacts
|
||||
- ./examples:/opt/gopath/src/examples
|
||||
command: bash -c 'while true; do sleep 1; block-listener -events-address=peer0.org1.example.com:7053 -events-mspdir=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/ -events-mspid=Org1MSP; done'
|
||||
#command: bash -c 'while true; do sleep 20170504; done'
|
|
@ -0,0 +1,164 @@
|
|||
# Contains the base template for all Hyperledger Fabric services
|
||||
# Never directly use services in this template, but inherent
|
||||
# All services are abstract without any names, config or port mapping
|
||||
# https://github.com/yeasy/docker-compose-files
|
||||
#
|
||||
# * ca-base: base for fabric-ca
|
||||
# * orderer-base: base for fabric-orderer
|
||||
# * peer-base: base for fabric-peer
|
||||
# * cli-base: base for fabric peer client
|
||||
# * event-listener-base: base for fabric eventhub listener
|
||||
# * kafka-base: base for kafka
|
||||
# * zookeeper-base: base for fabric-zookeeper
|
||||
# * couchdb-base: base for couchdb
|
||||
# * explorer-base: base for Hyperledger blockchain-explorer
|
||||
# * mysql-base: base for MySQL
|
||||
|
||||
version: '2' # compose v3 still doesn't support `extends`, shame!
|
||||
|
||||
services:
|
||||
ca-base:
|
||||
image: yeasy/hyperledger-fabric-ca:${FABRIC_IMG_TAG}
|
||||
restart: always
|
||||
network_mode: ${NETWORK}
|
||||
environment:
|
||||
- FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
|
||||
- FABRIC_CA_SERVER_TLS_ENABLED=true # change to false to disable TLS
|
||||
|
||||
orderer-base:
|
||||
image: yeasy/hyperledger-fabric-orderer:${FABRIC_IMG_TAG}
|
||||
restart: always
|
||||
network_mode: ${NETWORK}
|
||||
# Default config can be found at https://github.com/hyperledger/fabric/blob/master/orderer/common/localconfig/config.go
|
||||
environment:
|
||||
- ORDERER_GENERAL_LOGLEVEL=DEBUG # default: INFO
|
||||
- ORDERER_GENERAL_LOGFORMAT=%{color}[%{id:03x} %{time:01-02 15:04:05.00 MST}] [%{longpkg}] %{callpath} -> %{level:.4s}%{color:reset} %{message}
|
||||
- ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 # default: 127.0.0.1
|
||||
- ORDERER_GENERAL_GENESISMETHOD=file # default: provisional
|
||||
- ORDERER_GENERAL_GENESISFILE=/var/hyperledger/orderer/orderer.genesis.block
|
||||
- ORDERER_GENERAL_LOCALMSPID=OrdererMSP # default: DEFAULT
|
||||
- ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp
|
||||
- ORDERER_GENERAL_LEDGERTYPE=file
|
||||
#- ORDERER_GENERAL_LEDGERTYPE=json # default: file
|
||||
- ORDERER_GENERAL_BATCHTIMEOUT=1s
|
||||
- ORDERER_GENERAL_MAXMESSAGECOUNT=10
|
||||
- ORDERER_GENERAL_MAXWINDOWSIZE=1000
|
||||
- ORDERER_GENERAL_LISTENPORT=7050
|
||||
#- ORDERER_RAMLEDGER_HISTORY_SIZE=100 #only useful when use ram ledger
|
||||
# enabled TLS
|
||||
- ORDERER_GENERAL_TLS_ENABLED=true # default: false
|
||||
- ORDERER_GENERAL_TLS_PRIVATEKEY=/var/hyperledger/orderer/tls/server.key
|
||||
- ORDERER_GENERAL_TLS_CERTIFICATE=/var/hyperledger/orderer/tls/server.crt
|
||||
- ORDERER_GENERAL_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
|
||||
volumes:
|
||||
- $GOPATH/src/github.com/hyperledger/fabric:/go/src/github.com/hyperledger/fabric
|
||||
expose:
|
||||
- "7050" #
|
||||
#command: bash -c 'bash /tmp/orderer_build.sh; orderer start' # use this if to debug orderer
|
||||
command: orderer start
|
||||
|
||||
peer-base: # abstract base for fabric-peer, will be used in peer.yaml
|
||||
image: yeasy/hyperledger-fabric-peer:${FABRIC_IMG_TAG}
|
||||
restart: always
|
||||
network_mode: ${NETWORK}
|
||||
environment:
|
||||
- CORE_PEER_ADDRESSAUTODETECT=false
|
||||
- CORE_LOGGING_LEVEL=DEBUG
|
||||
- CORE_LOGGING_FORMAT=%{color}[%{id:03x} %{time:01-02 15:04:05.00 MST}] [%{longpkg}] %{callpath} -> %{level:.4s}%{color:reset} %{message}
|
||||
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${NETWORK} # uncomment this to use specific network
|
||||
- CORE_PEER_GOSSIP_USELEADERELECTION=true
|
||||
- CORE_PEER_GOSSIP_ORGLEADER=false # whether this node is the org leader, default to false
|
||||
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=0.0.0.0:7051 # external addr for peers in other orgs
|
||||
- CORE_PEER_PROFILE_ENABLED=false
|
||||
- CORE_PEER_TLS_ENABLED=true
|
||||
- CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
|
||||
- CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
|
||||
- CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
|
||||
- CORE_CHIANCODE_LOGGING_LEVEL=DEBUG
|
||||
- CORE_CHIANCODE_LOGGING_FORMAT=%{color}[%{id:03x} %{time:01-02 15:04:05.00 MST}] [%{longpkg}] %{callpath} -> %{level:.4s}%{color:reset} %{message}
|
||||
volumes:
|
||||
- $GOPATH/src/github.com/hyperledger/fabric:/go/src/github.com/hyperledger/fabric
|
||||
# docker.sock is mapped as the default CORE_VM_ENDPOINT
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
expose:
|
||||
- "7051" # Grpc
|
||||
- "7052" # Peer CLI
|
||||
- "7053" # Peer Event
|
||||
#command: bash -c 'bash /tmp/peer_build.sh; peer node start'
|
||||
command: peer node start
|
||||
|
||||
cli-base:
|
||||
image: yeasy/hyperledger-fabric:${FABRIC_IMG_TAG}
|
||||
restart: always
|
||||
network_mode: ${NETWORK}
|
||||
tty: true
|
||||
environment:
|
||||
- CORE_LOGGING_LEVEL=DEBUG
|
||||
- CORE_LOGGING_FORMAT=%{color}[%{id:03x} %{time:01-02 15:04:05.00 MST}] [%{longpkg}] %{callpath} -> %{level:.4s}%{color:reset} %{message}
|
||||
- CORE_PEER_TLS_ENABLED=true # to enable TLS, change to true
|
||||
- ORDERER_CA=/etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
|
||||
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
|
||||
command: bash -c 'cd /tmp; source scripts/func.sh; while true; do sleep 20170504; done'
|
||||
|
||||
#deprecated
|
||||
event-listener-base:
|
||||
image: yeasy/hyperledger-fabric:${FABRIC_IMG_TAG}
|
||||
restart: always
|
||||
network_mode: ${NETWORK}
|
||||
tty: true
|
||||
environment:
|
||||
- CORE_PEER_ID=fabric-event-listener
|
||||
- CORE_LOGGING_LEVEL=DEBUG
|
||||
- CORE_PEER_TLS_ENABLED=false # event-listener doesn't support TLS
|
||||
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
|
||||
#command: bash -c 'block-listener -events-address=peer0.org1.example.com:7053 -events-mspdir=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/ -events-mspid=Org1MSP'
|
||||
command: bash -c 'while true; do sleep 20170504; done'
|
||||
|
||||
zookeeper-base:
|
||||
image: hyperledger/fabric-zookeeper:${EXT_IMG_TAG}
|
||||
restart: always
|
||||
network_mode: ${NETWORK}
|
||||
tty: true
|
||||
expose:
|
||||
- '2181'
|
||||
- '2888'
|
||||
- '3888'
|
||||
|
||||
kafka-base:
|
||||
# official repo doesn't have 1.1.0-alpha tag, however, kafka changes version recently
|
||||
#image: yeasy/hyperledger-fabric-kafka:0.10.2.0
|
||||
image: hyperledger/fabric-kafka:${EXT_IMG_TAG}
|
||||
restart: always
|
||||
network_mode: ${NETWORK}
|
||||
tty: true
|
||||
environment:
|
||||
- KAFKA_MESSAGE_MAX_BYTES=1048576 # 1 * 1024 * 1024 B
|
||||
- KAFKA_REPLICA_FETCH_MAX_BYTES=1048576 # 1 * 1024 * 1024 B
|
||||
- KAFKA_UNCLEAN_LEADER_ELECTION_ENABLE=false
|
||||
- KAFKA_LOG_RETENTION_MS=-1
|
||||
expose:
|
||||
- '9092'
|
||||
|
||||
couchdb-base:
|
||||
image: hyperledger/fabric-couchdb:${EXT_IMG_TAG}
|
||||
restart: always
|
||||
network_mode: ${NETWORK}
|
||||
tty: true
|
||||
|
||||
explorer-base:
|
||||
image: yeasy/blockchain-explorer:0.1.0-preview # Till we have official image
|
||||
expose:
|
||||
- "8080" # HTTP port
|
||||
command: bash -c 'sleep 10; node main.js'
|
||||
|
||||
mysql-base: # mysql service
|
||||
image: mysql:8.0
|
||||
restart: always
|
||||
network_mode: ${NETWORK}
|
||||
expose:
|
||||
- "3306"
|
||||
|
||||
networks:
|
||||
default:
|
||||
external:
|
||||
name: ${NETWORK}
|
|
@ -0,0 +1,18 @@
|
|||
|
||||
OU
|
||||
Role
|
||||
EnrollmentID
|
||||
RevocationHandleD
|
||||
/KÙ—\TMւ°NÉ®ðc[½ó_Óš €»?8þ“ñr´-<2D>`—S¸Á!*1‚WØø~þ¿þöD
|
||||
qÝÒ!ÐÂR"$“ºDþeR¢œoö{Ù%‡{„ú¾ c†Û¾CO?wê=Û¦(\Ó¹Z<C2B9>üEª§’ï«\Û‚t‡"D
|
||||
÷s€“@É´O<C2B4>ojRA£hÙ¬ùn¥
|
||||
Á3ÀRUEÇy¯> FÆ0mpPr»è{ÚV㥟¦æpö¡ÀM¨ùgèn"D
|
||||
ÀKV¨Q£Ì•OÐÄ|ß!š°R*!å¹îàW<1B>àdˆ tT@w.ÛáŸù' mù–üp¶"Qã2t[ñ<>#™Ñ„"D
|
||||
¹ppŸ²¨•ž9J8wÎœú
<™è×
[™,>˜OÀH€
|
||||
Ïôk¤?[®‰ztýP_Á-gto+«4Ô³æ?$"D
|
||||
<20>º¡)T¦p3o<sÆ6M6ÍŽý ~Ñx×]x È ç¬´.)ûºÿäKÌ!_IÒá=å‘D•î*•îÜú*ˆ
|
||||
€G£e—Ã÷†xùh”X±MHY¬Ï±½h±£PB„½ ^Ï„/„aÔÃù`Æ™ï\áJHay¨
|
||||
Ùñ`BäyÑÐÓ OëŠÊõGf‰ôͨKÞXåEËð|~°:<16>¾" <20>Sr{ȼtÕ³D•¶ƒþ²º?¹—WNèlOùÓˆ'2D
|
||||
K¨û<C2A8>öâ0VÊÄEì”BV†êûª$ßxâj¡†‚ö "~AŠJ9<4A>Ù`mü<À^Ž_9óz$Q¬÷:D
|
||||
I·–8°QÂÈ*´ú½ÕDhïñ<C3AF>Lù26µOÀxN Äû «>MX>õÛ¿e£MxõB)IÜTô¾E<C2BE>%öÍB I“°l[ÔÌ0„’hŸõ@Q‚¨³§ƒ«Ë‰Û¡µJJ ]œA½ëò0³¨(Ð<>1Õ‹Oëx]<5D>QGÏ-«Š1R ¥šÌeÈëC’†Á•`>‘`£F‘û
|
||||
¢l=Á‰f0øô
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PUBLIC KEY-----
|
||||
MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEDSMDdZOsmA1SpSm9GK1mKkTPBPVKjeYo
|
||||
mEZMM/kqHNiXQErz6y77zu+kaxVwMM2I+jipDuYHzFxJA9m27hpFODNHApg5WEla
|
||||
Ak5Fo+Ak9cw5WUydukL1FjBg3UICNOgi
|
||||
-----END PUBLIC KEY-----
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICHjCCAcWgAwIBAgIUFBjX17iaFQ0kRSLN1YQIdlBIdM0wCgYIKoZIzj0EAwIw
|
||||
bDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK
|
||||
ExBvcmcxLmV4YW1wbGUuY29tMQswCQYDVQQLEwJjYTEcMBoGA1UEAxMTY2Eub3Jn
|
||||
MS5leGFtcGxlLmNvbTAeFw0xODEwMTAwOTI2MDBaFw0zMzEwMDYwOTI2MDBaMGwx
|
||||
CzAJBgNVBAYTAlVTMRcwFQYDVQQIEw5Ob3J0aCBDYXJvbGluYTEZMBcGA1UEChMQ
|
||||
b3JnMS5leGFtcGxlLmNvbTELMAkGA1UECxMCY2ExHDAaBgNVBAMTE2NhLm9yZzEu
|
||||
ZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR/vnxyLUrmMJJx
|
||||
h1nGAk+YidN8RL0XKl8gjzNa2SuEHfaROUhBVU3r06rDuJoNn+P3tcIwFsgndJmk
|
||||
vLrCBcQDo0UwQzAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBATAd
|
||||
BgNVHQ4EFgQUu79ukG5b4N19gYSYYALk+wY91SYwCgYIKoZIzj0EAwIDRwAwRAIg
|
||||
THDvbxlsa/Xw0gEAXlSfNS5XIthdULlQmsWzA0WEz1ACICXifW6iWfl4fibYwqR5
|
||||
L/XiIQ/2UQ9nHnPbZm3ISVvN
|
||||
-----END CERTIFICATE-----
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgiN1Z0HqaMHo8VPPt
|
||||
2267O46l2yZ1r411HjSr9rOPXeOhRANCAAR/vnxyLUrmMJJxh1nGAk+YidN8RL0X
|
||||
Kl8gjzNa2SuEHfaROUhBVU3r06rDuJoNn+P3tcIwFsgndJmkvLrCBcQD
|
||||
-----END PRIVATE KEY-----
|
|
@ -0,0 +1,132 @@
|
|||
version: 1.3.0
|
||||
port: 7054
|
||||
debug: false
|
||||
crlsizelimit: 512000
|
||||
tls:
|
||||
enabled: false
|
||||
certfile: null
|
||||
keyfile: null
|
||||
clientauth:
|
||||
type: noclientcert
|
||||
certfiles: null
|
||||
ca:
|
||||
name: ca.org1.example.com
|
||||
keyfile: ca.org1.example.com_sk
|
||||
certfile: ca.org1.example.com-cert.pem
|
||||
chainfile: null
|
||||
crl:
|
||||
expiry: 24h
|
||||
registry:
|
||||
maxenrollments: -1
|
||||
identities:
|
||||
- name: admin-default
|
||||
pass: pass-default
|
||||
type: client
|
||||
affiliation: ""
|
||||
attrs:
|
||||
hf.Registrar.Roles: '*'
|
||||
hf.Registrar.DelegateRoles: '*'
|
||||
hf.Revoker: true
|
||||
hf.IntermediateCA: true
|
||||
hf.GenCRL: true
|
||||
hf.Registrar.Attributes: '*'
|
||||
hf.AffiliationMgr: true
|
||||
db:
|
||||
type: sqlite3
|
||||
datasource: fabric-ca-server.db
|
||||
tls:
|
||||
enabled: false
|
||||
certfiles: null
|
||||
client:
|
||||
certfile: null
|
||||
keyfile: null
|
||||
ldap:
|
||||
enabled: false
|
||||
url: ldap://<adminDN>:<adminPassword>@<host>:<port>/<base>
|
||||
tls:
|
||||
certfiles: null
|
||||
client:
|
||||
certfile: null
|
||||
keyfile: null
|
||||
attribute:
|
||||
names:
|
||||
- uid
|
||||
- member
|
||||
converters:
|
||||
- name: null
|
||||
value: null
|
||||
maps:
|
||||
groups:
|
||||
- name: null
|
||||
value: null
|
||||
affiliations:
|
||||
org1:
|
||||
- department1
|
||||
- department2
|
||||
org2:
|
||||
- department1
|
||||
signing:
|
||||
default:
|
||||
usage:
|
||||
- digital signature
|
||||
expiry: 8760h
|
||||
profiles:
|
||||
ca:
|
||||
usage:
|
||||
- cert sign
|
||||
- crl sign
|
||||
expiry: 43800h
|
||||
caconstraint:
|
||||
isca: true
|
||||
maxpathlen: 0
|
||||
tls:
|
||||
usage:
|
||||
- signing
|
||||
- key encipherment
|
||||
- server auth
|
||||
- client auth
|
||||
- key agreement
|
||||
expiry: 8760h
|
||||
csr:
|
||||
cn: ca.org1.example.com
|
||||
keyrequest:
|
||||
algo: ecdsa
|
||||
size: 256
|
||||
names:
|
||||
- C: US
|
||||
ST: North Carolina
|
||||
L: null
|
||||
O: org1.example.com
|
||||
OU: ca
|
||||
hosts:
|
||||
- ca.org1.example.com
|
||||
- localhost
|
||||
ca:
|
||||
expiry: 131400h
|
||||
pathlength: 1
|
||||
idemix:
|
||||
rhpoolsize: 1000
|
||||
nonceexpiration: 15s
|
||||
noncesweepinterval: 15m
|
||||
bccsp:
|
||||
default: SW
|
||||
sw:
|
||||
hash: SHA2
|
||||
security: 256
|
||||
filekeystore:
|
||||
keystore: msp/keystore
|
||||
cacount: null
|
||||
cafiles: null
|
||||
intermediate:
|
||||
parentserver:
|
||||
url: null
|
||||
caname: null
|
||||
enrollment:
|
||||
hosts: null
|
||||
profile: null
|
||||
label: null
|
||||
tls:
|
||||
certfiles: null
|
||||
client:
|
||||
certfile: null
|
||||
keyfile: null
|
Binary file not shown.
|
@ -0,0 +1,6 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGkAgEBBDB9kCD1CUKnFFo6ks3Mo2qS/X+GFNPPT0SZkeR4iHswUzsZIV7bTwN9
|
||||
0RDjlfS2Ix+gBwYFK4EEACKhZANiAAQNIwN1k6yYDVKlKb0YrWYqRM8E9UqN5iiY
|
||||
Rkwz+Soc2JdASvPrLvvO76RrFXAwzYj6OKkO5gfMXEkD2bbuGkU4M0cCmDlYSVoC
|
||||
TkWj4CT1zDlZTJ26QvUWMGDdQgI06CI=
|
||||
-----END PRIVATE KEY-----
|
|
@ -0,0 +1 @@
|
|||
<EFBFBD>ƶ<EFBFBD><19><><EFBFBD><16><><EFBFBD>f<EFBFBD>i<EFBFBD>:<3A>bb<62><62>f<EFBFBD>:<3A>߶<EFBFBD><DFB6><EFBFBD>G
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgiN1Z0HqaMHo8VPPt
|
||||
2267O46l2yZ1r411HjSr9rOPXeOhRANCAAR/vnxyLUrmMJJxh1nGAk+YidN8RL0X
|
||||
Kl8gjzNa2SuEHfaROUhBVU3r06rDuJoNn+P3tcIwFsgndJmkvLrCBcQD
|
||||
-----END PRIVATE KEY-----
|
Binary file not shown.
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PUBLIC KEY-----
|
||||
MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEWdv1PmR2LLHqufi+l8aYtxnRvnJBwHop
|
||||
mSWv/TJgomLUWfPd2jBSWZEhY0FpkAPSDSJQNRIG8wMVqbWRcL3uYIyqj3PMO6yt
|
||||
LdTu49HIFPocwCLg3KNyA4xpcS8zUjc4
|
||||
-----END PUBLIC KEY-----
|
|
@ -0,0 +1,132 @@
|
|||
version: 1.3.0
|
||||
port: 7054
|
||||
debug: false
|
||||
crlsizelimit: 512000
|
||||
tls:
|
||||
enabled: false
|
||||
certfile: null
|
||||
keyfile: null
|
||||
clientauth:
|
||||
type: noclientcert
|
||||
certfiles: null
|
||||
ca:
|
||||
name: tlsca.org1.example.com
|
||||
keyfile: tlsca.org1.example.com_sk
|
||||
certfile: tlsca.org1.example.com-cert.pem
|
||||
chainfile: null
|
||||
crl:
|
||||
expiry: 24h
|
||||
registry:
|
||||
maxenrollments: -1
|
||||
identities:
|
||||
- name: admin-default
|
||||
pass: pass-default
|
||||
type: client
|
||||
affiliation: ""
|
||||
attrs:
|
||||
hf.Registrar.Roles: '*'
|
||||
hf.Registrar.DelegateRoles: '*'
|
||||
hf.Revoker: true
|
||||
hf.IntermediateCA: true
|
||||
hf.GenCRL: true
|
||||
hf.Registrar.Attributes: '*'
|
||||
hf.AffiliationMgr: true
|
||||
db:
|
||||
type: sqlite3
|
||||
datasource: fabric-ca-server.db
|
||||
tls:
|
||||
enabled: false
|
||||
certfiles: null
|
||||
client:
|
||||
certfile: null
|
||||
keyfile: null
|
||||
ldap:
|
||||
enabled: false
|
||||
url: ldap://<adminDN>:<adminPassword>@<host>:<port>/<base>
|
||||
tls:
|
||||
certfiles: null
|
||||
client:
|
||||
certfile: null
|
||||
keyfile: null
|
||||
attribute:
|
||||
names:
|
||||
- uid
|
||||
- member
|
||||
converters:
|
||||
- name: null
|
||||
value: null
|
||||
maps:
|
||||
groups:
|
||||
- name: null
|
||||
value: null
|
||||
affiliations:
|
||||
org1:
|
||||
- department1
|
||||
- department2
|
||||
org2:
|
||||
- department1
|
||||
signing:
|
||||
default:
|
||||
usage:
|
||||
- digital signature
|
||||
expiry: 8760h
|
||||
profiles:
|
||||
ca:
|
||||
usage:
|
||||
- cert sign
|
||||
- crl sign
|
||||
expiry: 43800h
|
||||
caconstraint:
|
||||
isca: true
|
||||
maxpathlen: 0
|
||||
tls:
|
||||
usage:
|
||||
- signing
|
||||
- key encipherment
|
||||
- server auth
|
||||
- client auth
|
||||
- key agreement
|
||||
expiry: 8760h
|
||||
csr:
|
||||
cn: tlsca.org1.example.com
|
||||
keyrequest:
|
||||
algo: ecdsa
|
||||
size: 256
|
||||
names:
|
||||
- C: US
|
||||
ST: North Carolina
|
||||
L: null
|
||||
O: org1.example.com
|
||||
OU: tlsca
|
||||
hosts:
|
||||
- tlsca.org1.example.com
|
||||
- localhost
|
||||
ca:
|
||||
expiry: 131400h
|
||||
pathlength: 1
|
||||
idemix:
|
||||
rhpoolsize: 1000
|
||||
nonceexpiration: 15s
|
||||
noncesweepinterval: 15m
|
||||
bccsp:
|
||||
default: SW
|
||||
sw:
|
||||
hash: SHA2
|
||||
security: 256
|
||||
filekeystore:
|
||||
keystore: msp/keystore
|
||||
cacount: null
|
||||
cafiles: null
|
||||
intermediate:
|
||||
parentserver:
|
||||
url: null
|
||||
caname: null
|
||||
enrollment:
|
||||
hosts: null
|
||||
profile: null
|
||||
label: null
|
||||
tls:
|
||||
certfiles: null
|
||||
client:
|
||||
certfile: null
|
||||
keyfile: null
|
Binary file not shown.
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgIBJvF5e9l85ObbFs
|
||||
duRrWd2ZPgc/vmaR231EQhsibl6hRANCAAR+EOYSg7O1tuEvYiXkWlNtg06RjTzv
|
||||
sz9aASDbkjLfaIDf+mOjUzESXAlXqma+hy/6EJT+Bt7fVq0mdvVTlec6
|
||||
-----END PRIVATE KEY-----
|
|
@ -0,0 +1,6 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGkAgEBBDAOZeFX1SIKBZaYMr4mlObgPA+nf9HPxUpPn6LnwuJin86W0OlRpBcf
|
||||
m52W/svE6cegBwYFK4EEACKhZANiAARZ2/U+ZHYsseq5+L6Xxpi3GdG+ckHAeimZ
|
||||
Ja/9MmCiYtRZ893aMFJZkSFjQWmQA9INIlA1EgbzAxWptZFwve5gjKqPc8w7rK0t
|
||||
1O7j0cgU+hzAIuDco3IDjGlxLzNSNzg=
|
||||
-----END PRIVATE KEY-----
|
|
@ -0,0 +1 @@
|
|||
<EFBFBD>Fm'<27>Mo<4D>v<EFBFBD>k4x<34>E%<25><><EFBFBD> {5<>*B<>Mql<71><6C>
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICKjCCAdGgAwIBAgIUYILtTrGFkEL2QHDFj1jvfBAPZYQwCgYIKoZIzj0EAwIw
|
||||
cjELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK
|
||||
ExBvcmcxLmV4YW1wbGUuY29tMQ4wDAYDVQQLEwV0bHNjYTEfMB0GA1UEAxMWdGxz
|
||||
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xODEwMTAwOTI2MDBaFw0zMzEwMDYwOTI2
|
||||
MDBaMHIxCzAJBgNVBAYTAlVTMRcwFQYDVQQIEw5Ob3J0aCBDYXJvbGluYTEZMBcG
|
||||
A1UEChMQb3JnMS5leGFtcGxlLmNvbTEOMAwGA1UECxMFdGxzY2ExHzAdBgNVBAMT
|
||||
FnRsc2NhLm9yZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNC
|
||||
AAR+EOYSg7O1tuEvYiXkWlNtg06RjTzvsz9aASDbkjLfaIDf+mOjUzESXAlXqma+
|
||||
hy/6EJT+Bt7fVq0mdvVTlec6o0UwQzAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/
|
||||
BAgwBgEB/wIBATAdBgNVHQ4EFgQU8TyFJWYtXTJDpEvvaA8vwVFCT2IwCgYIKoZI
|
||||
zj0EAwIDRwAwRAIgAmyCF1D7mXAjHZpBwQsF2pOXS2V/LQ+j3Wg0hvjixZgCICEh
|
||||
X7C57zvM+RKPMYjWdlzXvt1JU+8l6nw9CGsWCPnY
|
||||
-----END CERTIFICATE-----
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgIBJvF5e9l85ObbFs
|
||||
duRrWd2ZPgc/vmaR231EQhsibl6hRANCAAR+EOYSg7O1tuEvYiXkWlNtg06RjTzv
|
||||
sz9aASDbkjLfaIDf+mOjUzESXAlXqma+hy/6EJT+Bt7fVq0mdvVTlec6
|
||||
-----END PRIVATE KEY-----
|
|
@ -0,0 +1,162 @@
|
|||
|
||||
#############################################################################
|
||||
# This is a configuration file for the fabric-ca-client command.
|
||||
#
|
||||
# COMMAND LINE ARGUMENTS AND ENVIRONMENT VARIABLES
|
||||
# ------------------------------------------------
|
||||
# Each configuration element can be overridden via command line
|
||||
# arguments or environment variables. The precedence for determining
|
||||
# the value of each element is as follows:
|
||||
# 1) command line argument
|
||||
# Examples:
|
||||
# a) --url https://localhost:7054
|
||||
# To set the fabric-ca server url
|
||||
# b) --tls.client.certfile certfile.pem
|
||||
# To set the client certificate for TLS
|
||||
# 2) environment variable
|
||||
# Examples:
|
||||
# a) FABRIC_CA_CLIENT_URL=https://localhost:7054
|
||||
# To set the fabric-ca server url
|
||||
# b) FABRIC_CA_CLIENT_TLS_CLIENT_CERTFILE=certfile.pem
|
||||
# To set the client certificate for TLS
|
||||
# 3) configuration file
|
||||
# 4) default value (if there is one)
|
||||
# All default values are shown beside each element below.
|
||||
#
|
||||
# FILE NAME ELEMENTS
|
||||
# ------------------
|
||||
# The value of all fields whose name ends with "file" or "files" are
|
||||
# name or names of other files.
|
||||
# For example, see "tls.certfiles" and "tls.client.certfile".
|
||||
# The value of each of these fields can be a simple filename, a
|
||||
# relative path, or an absolute path. If the value is not an
|
||||
# absolute path, it is interpretted as being relative to the location
|
||||
# of this configuration file.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
#############################################################################
|
||||
# Client Configuration
|
||||
#############################################################################
|
||||
|
||||
# URL of the Fabric-ca-server (default: http://localhost:7054)
|
||||
url: http://ca.org1.example.com:7054
|
||||
|
||||
# Membership Service Provider (MSP) directory
|
||||
# This is useful when the client is used to enroll a peer or orderer, so
|
||||
# that the enrollment artifacts are stored in the format expected by MSP.
|
||||
mspdir: msp
|
||||
|
||||
#############################################################################
|
||||
# TLS section for secure socket connection
|
||||
#
|
||||
# certfiles - PEM-encoded list of trusted root certificate files
|
||||
# client:
|
||||
# certfile - PEM-encoded certificate file for when client authentication
|
||||
# is enabled on server
|
||||
# keyfile - PEM-encoded key file for when client authentication
|
||||
# is enabled on server
|
||||
#############################################################################
|
||||
tls:
|
||||
# TLS section for secure socket connection
|
||||
certfiles:
|
||||
client:
|
||||
certfile:
|
||||
keyfile:
|
||||
|
||||
#############################################################################
|
||||
# Certificate Signing Request section for generating the CSR for an
|
||||
# enrollment certificate (ECert)
|
||||
#
|
||||
# cn - Used by CAs to determine which domain the certificate is to be generated for
|
||||
#
|
||||
# serialnumber - The serialnumber field, if specified, becomes part of the issued
|
||||
# certificate's DN (Distinguished Name). For example, one use case for this is
|
||||
# a company with its own CA (Certificate Authority) which issues certificates
|
||||
# to its employees and wants to include the employee's serial number in the DN
|
||||
# of its issued certificates.
|
||||
# WARNING: The serialnumber field should not be confused with the certificate's
|
||||
# serial number which is set by the CA but is not a component of the
|
||||
# certificate's DN.
|
||||
#
|
||||
# names - A list of name objects. Each name object should contain at least one
|
||||
# "C", "L", "O", or "ST" value (or any combination of these) where these
|
||||
# are abbreviations for the following:
|
||||
# "C": country
|
||||
# "L": locality or municipality (such as city or town name)
|
||||
# "O": organization
|
||||
# "OU": organizational unit, such as the department responsible for owning the key;
|
||||
# it can also be used for a "Doing Business As" (DBS) name
|
||||
# "ST": the state or province
|
||||
#
|
||||
# Note that the "OU" or organizational units of an ECert are always set according
|
||||
# to the values of the identities type and affiliation. OUs are calculated for an enroll
|
||||
# as OU=<type>, OU=<affiliationRoot>, ..., OU=<affiliationLeaf>. For example, an identity
|
||||
# of type "client" with an affiliation of "org1.dept2.team3" would have the following
|
||||
# organizational units: OU=client, OU=org1, OU=dept2, OU=team3
|
||||
#
|
||||
# hosts - A list of host names for which the certificate should be valid
|
||||
#
|
||||
#############################################################################
|
||||
csr:
|
||||
cn: admin-default
|
||||
keyrequest:
|
||||
algo: ecdsa
|
||||
size: 256
|
||||
serialnumber:
|
||||
names:
|
||||
- C: US
|
||||
ST: North Carolina
|
||||
L:
|
||||
O: Hyperledger
|
||||
OU: Fabric
|
||||
hosts:
|
||||
- ca-client
|
||||
|
||||
#############################################################################
|
||||
# Registration section used to register a new identity with fabric-ca server
|
||||
#
|
||||
# name - Unique name of the identity
|
||||
# type - Type of identity being registered (e.g. 'peer, app, user')
|
||||
# affiliation - The identity's affiliation
|
||||
# maxenrollments - The maximum number of times the secret can be reused to enroll.
|
||||
# Specially, -1 means unlimited; 0 means to use CA's max enrollment
|
||||
# value.
|
||||
# attributes - List of name/value pairs of attribute for identity
|
||||
#############################################################################
|
||||
id:
|
||||
name:
|
||||
type:
|
||||
affiliation:
|
||||
maxenrollments: 0
|
||||
attributes:
|
||||
# - name:
|
||||
# value:
|
||||
|
||||
#############################################################################
|
||||
# Enrollment section used to enroll an identity with fabric-ca server
|
||||
#
|
||||
# profile - Name of the signing profile to use in issuing the certificate
|
||||
# label - Label to use in HSM operations
|
||||
#############################################################################
|
||||
enrollment:
|
||||
profile:
|
||||
label:
|
||||
|
||||
#############################################################################
|
||||
# Name of the CA to connect to within the fabric-ca server
|
||||
#############################################################################
|
||||
caname:
|
||||
|
||||
#############################################################################
|
||||
# BCCSP (BlockChain Crypto Service Provider) section allows to select which
|
||||
# crypto implementation library to use
|
||||
#############################################################################
|
||||
bccsp:
|
||||
default: SW
|
||||
sw:
|
||||
hash: SHA2
|
||||
security: 256
|
||||
filekeystore:
|
||||
# The directory used for the software file-based keystore
|
||||
keystore: msp/keystore
|
|
@ -0,0 +1,18 @@
|
|||
|
||||
OU
|
||||
Role
|
||||
EnrollmentID
|
||||
RevocationHandleD
|
||||
/KÙ—\TMւ°NÉ®ðc[½ó_Óš €»?8þ“ñr´-<2D>`—S¸Á!*1‚WØø~þ¿þöD
|
||||
qÝÒ!ÐÂR"$“ºDþeR¢œoö{Ù%‡{„ú¾ c†Û¾CO?wê=Û¦(\Ó¹Z<C2B9>üEª§’ï«\Û‚t‡"D
|
||||
÷s€“@É´O<C2B4>ojRA£hÙ¬ùn¥
|
||||
Á3ÀRUEÇy¯> FÆ0mpPr»è{ÚV㥟¦æpö¡ÀM¨ùgèn"D
|
||||
ÀKV¨Q£Ì•OÐÄ|ß!š°R*!å¹îàW<1B>àdˆ tT@w.ÛáŸù' mù–üp¶"Qã2t[ñ<>#™Ñ„"D
|
||||
¹ppŸ²¨•ž9J8wÎœú
<™è×
[™,>˜OÀH€
|
||||
Ïôk¤?[®‰ztýP_Á-gto+«4Ô³æ?$"D
|
||||
<20>º¡)T¦p3o<sÆ6M6ÍŽý ~Ñx×]x È ç¬´.)ûºÿäKÌ!_IÒá=å‘D•î*•îÜú*ˆ
|
||||
€G£e—Ã÷†xùh”X±MHY¬Ï±½h±£PB„½ ^Ï„/„aÔÃù`Æ™ï\áJHay¨
|
||||
Ùñ`BäyÑÐÓ OëŠÊõGf‰ôͨKÞXåEËð|~°:<16>¾" <20>Sr{ȼtÕ³D•¶ƒþ²º?¹—WNèlOùÓˆ'2D
|
||||
K¨û<C2A8>öâ0VÊÄEì”BV†êûª$ßxâj¡†‚ö "~AŠJ9<4A>Ù`mü<À^Ž_9óz$Q¬÷:D
|
||||
I·–8°QÂÈ*´ú½ÕDhïñ<C3AF>Lù26µOÀxN Äû «>MX>õÛ¿e£MxõB)IÜTô¾E<C2BE>%öÍB I“°l[ÔÌ0„’hŸõ@Q‚¨³§ƒ«Ë‰Û¡µJJ ]œA½ëò0³¨(Ð<>1Õ‹Oëx]<5D>QGÏ-«Š1R ¥šÌeÈëC’†Á•`>‘`£F‘û
|
||||
¢l=Á‰f0øô
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PUBLIC KEY-----
|
||||
MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEDSMDdZOsmA1SpSm9GK1mKkTPBPVKjeYo
|
||||
mEZMM/kqHNiXQErz6y77zu+kaxVwMM2I+jipDuYHzFxJA9m27hpFODNHApg5WEla
|
||||
Ak5Fo+Ak9cw5WUydukL1FjBg3UICNOgi
|
||||
-----END PUBLIC KEY-----
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue