From 906b5edbd9cdf127aa938e4edb02e324341c11df Mon Sep 17 00:00:00 2001 From: Baohua Yang Date: Wed, 1 Nov 2017 22:17:36 +0800 Subject: [PATCH] Fix bugs, now passed all modes --- hyperledger_fabric/1.0.3/Makefile | 66 +++-- hyperledger_fabric/1.0.3/base-dev.yaml | 2 +- .../docker-compose-1orgs-1peers-dev.yaml | 16 +- .../docker-compose-2orgs-4peers-kafka.yaml | 9 +- .../kafka/channel-artifacts/block_0.block | Bin 0 -> 12011 bytes .../kafka/channel-artifacts/block_1.block | Bin 0 -> 13830 bytes .../kafka/channel-artifacts/block_2.block | Bin 0 -> 5221 bytes .../kafka/channel-artifacts/block_3.block | Bin 0 -> 4681 bytes hyperledger_fabric/1.0.3/scripts/func.sh | 2 +- .../1.0.3/scripts/initialize_peer0.sh | 12 +- hyperledger_fabric/latest/base.yaml | 2 +- .../latest/docker-compose-base-dev.yaml | 97 ------- .../latest/docker-compose-base-kafka.yaml | 259 ------------------ 13 files changed, 63 insertions(+), 402 deletions(-) create mode 100644 hyperledger_fabric/1.0.3/kafka/channel-artifacts/block_0.block create mode 100644 hyperledger_fabric/1.0.3/kafka/channel-artifacts/block_1.block create mode 100644 hyperledger_fabric/1.0.3/kafka/channel-artifacts/block_2.block create mode 100644 hyperledger_fabric/1.0.3/kafka/channel-artifacts/block_3.block delete mode 100644 hyperledger_fabric/latest/docker-compose-base-dev.yaml delete mode 100644 hyperledger_fabric/latest/docker-compose-base-kafka.yaml diff --git a/hyperledger_fabric/1.0.3/Makefile b/hyperledger_fabric/1.0.3/Makefile index 18246443..e38b40ac 100644 --- a/hyperledger_fabric/1.0.3/Makefile +++ b/hyperledger_fabric/1.0.3/Makefile @@ -1,43 +1,40 @@ -KAFKA_ENABLED ?= false -COUCHDB_ENABLED ?= false -DEV_ENABLED ?= false +# mode of the network: solo, kafka, couchdb, dev +HLF_MODE ?= solo + +CODE_BUILD_WAIT=2 +NETWORK_INIT_WAIT=2 COMPOSE_FILE ?= "docker-compose-2orgs-4peers-solo.yaml" -ifeq ($(KAFKA_ENABLED),true) -COMPOSE_FILE="docker-compose-2orgs-4peers-kafka.yaml" -endif - -ifeq ($(COUCHDB_ENABLED),true) -COMPOSE_FILE="docker-compose-2orgs-4peers-couchdb.yaml" -endif - -ifeq ($(DEV_ENABLED),true) -COMPOSE_FILE="docker-compose-1orgs-1peers-dev.yaml" +ifeq ($(HLF_MODE),kafka) + COMPOSE_FILE="docker-compose-2orgs-4peers-kafka.yaml" +else ifeq ($(HLF_MODE),couchdb) + COMPOSE_FILE="docker-compose-2orgs-4peers-couchdb.yaml" +else ifeq ($(HLF_MODE),dev) + COMPOSE_FILE="docker-compose-1orgs-1peers-dev.yaml" endif all: - @echo "Run test with ${COMPOSE_FILE}" + @echo "Run test with $(COMPOSE_FILE)" @echo "Please make sure u have setup Docker and pulled images by 'make setup'." - sleep 1 + sleep 2 make ready - make lscc qscc - + make lscc qscc fetch_block make stop clean ready: restart @echo "Restart, init network and then do cc testing..." - if [ "$(DEV_ENABLED)" = "true" ]; then \ - echo "In DEV mode, wait for rebuilding ..." && sleep 35; \ + if [ "$(HLF_MODE)" = "dev" ]; then \ + echo "In DEV mode, wait for rebuilding ..." && sleep $(CODE_BUILD_WAIT); \ make init_peer0; \ - sleep 2; \ - make test_peer0; \ + sleep $(NETWORK_INIT_WAIT); \ + make test_cc_peer0; \ else \ echo "In Normal mode ..." && sleep 3; \ make init; \ - sleep 2; \ - make test_cc; \ + sleep $(NETWORK_INIT_WAIT); \ + make test_cc_all; \ fi @echo "Now the fabric network is ready to play" @@ -63,13 +60,14 @@ stop: # stop the fabric network restart: stop start +chaincode_dev: restart chaincode_init test_cc_peer0 stop ################## Chaincode testing operations ################ -test_cc: # test user chaincode on all peers +test_cc_all: # 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_all.sh" -test_peer0: # test single peer +test_cc_peer0: # test single peer @echo "Invoke and query cc example02 on single peer0" docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_peer0.sh" @@ -79,6 +77,14 @@ qscc: # test qscc queries lscc: # test lscc quries docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_lscc.sh" +fetch_block: # test channel fetch + docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_fetch.sh" + docker cp fabric-cli:/tmp/block_0.block kafka/channel-artifacts/ + docker cp fabric-cli:/tmp/block_1.block kafka/channel-artifacts/ + docker cp fabric-cli:/tmp/block_2.block kafka/channel-artifacts/ + docker cp fabric-cli:/tmp/block_3.block kafka/channel-artifacts/ + + ################## Env setup related, no need to see usually ################ setup: # setup the environment @@ -114,6 +120,7 @@ logs_check: logs_save logs_view logs_save: # save logs docker logs peer0.org1.example.com >& /tmp/dev_peer.log docker logs orderer.example.com >& /tmp/dev_orderer.log + docker-compose -f ${COMPOSE_FILE} logs >& /tmp/dev_all.log logs_view: # view logs less /tmp/dev_peer.log @@ -130,7 +137,14 @@ configtxlator: # run configtxlator download: # download required images @echo "Download Docker images" docker pull yeasy/hyperledger-fabric:latest - docker pull yeasy/hyperledger-fabric:1.0.3 + docker pull yeasy/hyperledger-fabric-kafka:0.10.2.0 # official repo does not provide the latest image currently docker pull hyperledger/fabric-baseos:x86_64-0.4.2 docker tag yeasy/hyperledger-fabric:latest hyperledger/fabric-ccenv:x86_64-1.1.0 + + +################## 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" + diff --git a/hyperledger_fabric/1.0.3/base-dev.yaml b/hyperledger_fabric/1.0.3/base-dev.yaml index b18a4dee..d6abf601 100644 --- a/hyperledger_fabric/1.0.3/base-dev.yaml +++ b/hyperledger_fabric/1.0.3/base-dev.yaml @@ -38,7 +38,7 @@ services: extends: file: base.yaml service: peer-base - image: yeasy/hyperledger-fabric:latest + image: yeasy/hyperledger-fabric:1.0.3 container_name: peer0.org1.example.com hostname: peer0.org1.example.com environment: diff --git a/hyperledger_fabric/1.0.3/docker-compose-1orgs-1peers-dev.yaml b/hyperledger_fabric/1.0.3/docker-compose-1orgs-1peers-dev.yaml index ee4731f3..cb76dc7a 100644 --- a/hyperledger_fabric/1.0.3/docker-compose-1orgs-1peers-dev.yaml +++ b/hyperledger_fabric/1.0.3/docker-compose-1orgs-1peers-dev.yaml @@ -1,4 +1,4 @@ -# https://github.com/yeasy/docker-compose-files/tree/master/hyperledger +# https://github.com/yeasy/files/tree/master/hyperledger # This compose file will start a Hyperledger Fabric 1.0 MVE, including # * 1 ca # * 1 orderer @@ -36,23 +36,23 @@ services: # ZooKeeper services, at least 3 nodes zookeeper0: extends: - file: docker-compose-base-kafka.yaml + file: base-kafka.yaml service: zookeeper0 zookeeper1: extends: - file: docker-compose-base-kafka.yaml + file: base-kafka.yaml service: zookeeper1 zookeeper2: extends: - file: docker-compose-base-kafka.yaml + file: base-kafka.yaml service: zookeeper2 # Kafka services, at least 4 node to tolerant work with 1 node failure kafka0: extends: - file: docker-compose-base-kafka.yaml + file: base-kafka.yaml service: kafka0 depends_on: - zookeeper0 @@ -61,7 +61,7 @@ services: kafka1: extends: - file: docker-compose-base-kafka.yaml + file: base-kafka.yaml service: kafka1 depends_on: - zookeeper0 @@ -70,7 +70,7 @@ services: kafka2: extends: - file: docker-compose-base-kafka.yaml + file: base-kafka.yaml service: kafka2 depends_on: - zookeeper0 @@ -79,7 +79,7 @@ services: kafka3: extends: - file: docker-compose-base-kafka.yaml + file: base-kafka.yaml service: kafka3 depends_on: - zookeeper0 diff --git a/hyperledger_fabric/1.0.3/docker-compose-2orgs-4peers-kafka.yaml b/hyperledger_fabric/1.0.3/docker-compose-2orgs-4peers-kafka.yaml index 97d24eb1..b7acbe11 100644 --- a/hyperledger_fabric/1.0.3/docker-compose-2orgs-4peers-kafka.yaml +++ b/hyperledger_fabric/1.0.3/docker-compose-2orgs-4peers-kafka.yaml @@ -27,11 +27,18 @@ services: extends: file: base-kafka.yaml service: orderer.example.com + depends_on: + - kafka0 + - kafka1 + - kafka2 + - kafka3 peer0.org1.example.com: extends: file: base-kafka.yaml service: peer0.org1.example.com + depends_on: + - orderer.example.com peer1.org1.example.com: extends: @@ -51,13 +58,11 @@ services: # ZooKeeper services, at least 3 nodes zookeeper0: extends: - file: base-kafka.yaml file: base-kafka.yaml service: zookeeper0 zookeeper1: extends: - file: base-kafka.yaml file: base-kafka.yaml service: zookeeper1 diff --git a/hyperledger_fabric/1.0.3/kafka/channel-artifacts/block_0.block b/hyperledger_fabric/1.0.3/kafka/channel-artifacts/block_0.block new file mode 100644 index 0000000000000000000000000000000000000000..16049b65b6dea5b0873da019e342d7787b9b9b2e GIT binary patch literal 12011 zcmeHNd$1%|T}~FVSx!Q-^d=-+F)Zr?!U)sT^9CcFeojwM_e?)#dS(cz>gnm}>6z~7 zp6QwCN0qvuC|Y1a3blZg6-1+=Wke7KDN8AYLM*8=C5lyuK@k*+NAVAWRP1@)yL)%D zH!+l&%H68Hw@?30pYA^W{eIu~odYf$oEJXw@2_uNd`HFn6!&5r`Pye5{`ki}@$GNh zuf6GQ?{eZ~rBB~*;nv>5wqBia zF>K_4)8Mfi0I1LU#>|-Uas&Cs4KH8);1t6O=huG%o@EJAAqd#3n=oK;XtENlaWOPy zej1sB3fj?#X|0c|5lkAL)TG;0D= zc-jn!7*y)FOV-I<$6VPxydW8xyN=MC^(xf`< zIf4gtOjz<#5HRNU_CjH)JCdzCt*GW)_89aypn^_i`yvS_c37}IAfc#}q6sO#rTFRA zWacy*X$NbzQ&f(QIFiqIdA2jdhaMB@#d(DH3I?hKdLFbeuTGXCtkcA@bRZQ{Hsc#c znRPUWQdqv?_3~J6DhNE~2juE5CA0y>N*aeE2~7hg(-^F#u}=jQo(@EUhcMuRb>Ijm z#DI07iQ8&tT+4YzYfNSxY^(%zw2`KqDe1YO&=u=tzk}z)V7?reF8^3aIk})DvO~z# z{Y8Hw^<1yd<9b~jl$McE9RfIr)KNHX$D&&!2+wSW8U-!9DW#;k(Hv`5&>SoI#&|g% zxY@qr!kjq`CY78zSdQD|v;juuJ@@2H-zeli?f^G#VS@bA9mp4M+oPsFGm%GbJNWH$;8`mGJ$MfJ z<#WjW=l17UjemH0J?I8i1SKgf%@R9+QbNe@srRS()oj=4Obpzpo%2zVFd!Mr zb2aMbbLC1{7~sW`EU3%*vJiNFeJ+~8#OC!nyX5#_ z&~=TNT?&U_Jcf!3ufHZ}hsxO=V=8Ry7QES#!d42 zrYa@Vjdz)h*Bj%Pfd}vMIM3kGl#%&d8JZMB5K{)M4+5$JQ5NDfTPtB!sTN>aW^6a= z+5WI!Y`T-6*DbU=B06km3QF>=Qx;t`7RCAi(m);ittq2+?dD7yV|39TKv|@7{YgnB z@zh{hZ7)WOg4cMMTNfX4Q+!tBqGFPePd?cMFk2A75lkTCuLIdY9P=tE7&Q%!;uNq26OnWpV= z9a~gYuY{^7xvUPuE)Yv%*C{SZrBM#az^tTA)>I{HIn&)*HXnHBDST3~R?LmSc}~P=UsJmYYsq^Zg;IH3 zT%W^3UT9+Uf~C3<=&1RT))q#+m}>GkyXidSYezF}l4wI_1UsvlOJ1@sZd#-9Ix0J#>YC!({9qnZrYT6ThJq^;O#OY(7 zt;zNv9I`zp)Z@k6v-Co{QkxWER|$u?h(|%C5RKX~-oFB9aBs9N9C9+PBxGWD!OQc^d6eJ$Z>Q*`zh$TT}&5Fh? zIXP2eVzV_>xd_EmQE{e|&>wRCd`|R2SY0?#cf>v}m<~?EzGF@N3t4cZIHI{AI-%ykF1AU7YSZu?F-u*wKUR`e1*(3*fm#GJ-Mj7rqjC2J$@Q zMsUOWf=6PWv%YEBiVfs;0Gk0FRczzdi;llo1-ih3D=2-~X9iKh5k9irm z6}Me|+|q2TudSX8xdVA_68xO~?CoPOfE#yjc^|WFI2yB?^nJ{>VHdM|@yN$g;3nvK zwxw?d{y-|3@OR$6QUGRV#pi$N_Jgl(`ToD2Lq2;B`OLY)lb^a~juuBrjy9Zqj&3Z~ zoHn8HLBnsNZK*lWmFf6+j*g%59Gw((eV3!fM1oKFtztgHnspv`*D(oeR#vPTTsiRM z${O$$eotbajIvIu#G$m_DC==RuUN7ua#V;XHA)YUsp=!@8&KgoVP84$3iA7M^$kL! zna5DI)lgwKVE9ET&s1BECYSnI-zt<1C++3K4$rs=4WT`b_j>hqfaYU3kQZ!4LIKe$ zri0m1YfWXRg=SjafmV$)VZhVq734SL?DBI}6j>g27=Y8wepQ4!b)amtdNY74h7?0@ zqa<<^Yl>#i=(OaXvK;4Xjvhi6&+xoqMT0nyOe%U&1Qi%}1#UyF~3)I7(i~ z<&5X)gC^R4s?k&mDq9;ZnV+2^xGGq{cDoNM&eA4Ca|cSj4SXo>oK_2m`k4HKdv4nly}xlg9zYF z4pS{KwF=8hwTt&_zTA`AE>=}~PTZ)JDL5ob1*POIjl>a7^(K9ntP}l8P1n|-hcbSH@4*T%jb~KokRX{ zLr&KxpEx-c3e#?mqq+@j;#csnyJ*Ng|9_{PTASsZYm?Jsf&a(I>G36>tB}*3I=23?C#PiJQYJ$olX0^p$Th}bG@UdGr3FQpL#S#wY=i(ct*>hOhMxn|vER&`fDQg?+k*KA=! zBQJ2NbkDD2Gi6XbZc*#;_rLD4mn?v+>n;hkUEQUUk_$F9_gLVGYVNA!0(FGnic}JU<>7T zQH&#JOm_Hm8|a4DmTbjxg&CEZF4KC$UEnF)7bnwNiY82NgfVt^!L^NX7YNRrf{M!ITZ`Ph(dqUtSx7xrHlHj(H4asrtmtTJZiRdW>tnSN&!!9Q zcyvs~tqI*z>RTUYbjQ9b>hKHP61v1S-ZHvl!6z#{V6_c_uN*G!JW*dH5n-2ZIk<{1 za=fBQ8?^`4yC%Z!&dgrPz2m`;Q+|@=$IaG+IbQcIJlWk4WW}OiqysY$J&S#Py8!%lIY)&?_7lxhRX$s{X2b*_}l)O>O}@`5&+c9$n8KVWB$ zJP~hXQ4F*ibfQu*oPiXpQCX=Xz?#ssiW9S~PgPWNi*-ANPncu!=y1zIRiPG{Q59%e z-I$_!R|>k3pG|k#ytTBN)w0Q!`-D;}42hYSAkBw4XnA?Xe@MiRHWZ+^=T8u3~odcOP@y z#@*TQSGA6JV;;O5ykKo1liFOXX#UWenDTtK(C3Spft*bo|HqP_TXzq4z=E^e9UidX zpC!Ab3?IoO2jEV3vpwn+MyNTSZM;HvomUpoJbG|Pdh5TZw;j_P+yCGK04t;1oz1O< zgWQH7;H<$ZtFy5`N`hgHD>_%&{^=cTftwh zc8w)Y{MB}i{pM-#rqg@)kALP@Z~M@Ygs&wrO(-u|}d zfAouAx-kFj7ys^|(`Rn@&iI~}zDWJh`+f{zQ0ml+uY2^XUwY_`&42#jd#kU1_4$wf z_{XVVczYOY{m+%Zam%pu(Kj?soxe}~i$}u${Dbaaf4cd`AO5Y^-1*?cw^d&ICy(B7 z&uh?6zU5oL_(Ft6$y4Wl@*iGX{@E|yck@qYzx96dUtUxAUR!<(xZ~dUzxUN2y#D-w z{K%>ErXAk>*t=ip<$kXHk}v;!Y5AtleO~|iH(&hl^B?`4?X#Whw)B*kWL)K;aFZC>HrKa>fF1rJ8~rsfJwJ}i*9>hGJ(_Z2qw@w71}JeZz#25?xG zVY?{v67N#;9$3n?$+9xGE1l$|+G#g@hU1x3uxl8FgcE?{BWm12Q5%s+L{j zaV;y>6QhZqZU9)HD9v%NAZ(*BRw-!W1t}n9^+HQE-9k%_=31jx-3r$_7K|7@ zx0{M6^--%t_Hv+UTyqVWz15UJuD{;MrK7+2?qM%->zm$oM`Qo}lYjol>t1)!d9QqS zibXzN1h>*FOUNxW^6({K*E&p)Z(M?W>*5X6Wcvnk@5QUP?FUbp0_c|g$XoX#H|*ay zKHd4(%d<}Bs3IsyW@(myGPMaXp7a4$Q#S#Yt8%Vd%XiX^a1nMbP7w!kgF616{htOH z(>m(_6J2T!FphEuGwg3dpDOWqVU~#Cn9r6mYFH^X8r2f+RPxa#sA8zA$WX=&t=DKZ zvpJE)al=^u&f~Z%5D>~dnsd5r#w&593c*_4xRW+YSvuqaYf_3hs7UCL^zs8GYzY;# z)k$@$xHhh8g5BXegjg@gu4}7NGMI1%^>{D>g&xb1Rw&_uk_@xcY?BfbIIJfq9P$KI z%Pu(wS=-N-E^d@5ADL}P!rUxY;^(n4B*7G}JTXhQHPR4GoPbQRVu~ZP9aY4fUR9+W zjEliUUbV8Frrm~dY;2^uDFO?~9^}C0^-eJ_u#m)QXi_j%?&kb&UbxPPTqzgp=v2kB z%8hg-kHRq%3ueu{)K+W|%{v53bIH^=R>$Mbyr7H*qnK+u*@0-d-8Qdf*%8OP^@^o? z>`2%I<2F!z$AJg0@Ho%llOB`jBS~mb3_xg_%}6mkrk% zwRpkmy46aoR2I=jDHN0acbzinxIT<$>yQRY%PIC4rP40+)fPs_+jW>1=}4`cP)Iyb zAEisfrYz$b9!6%xhnyFmDY-})B;@^9)(6Zw2w)TXka1>#tSh#7f`crq6gz1mz?Iq+ zn2Zi=DnSm&;5gkgVrsTi0OY93KwZ-^)o6}~*6g~bmo-BlYCxVU5UfaAgEko|v~8~3 z78S)#pbAQk(v5KihzYUMiH}G*mmHI>kqR2Dp-ASauUVOJbYdqUVR?0?=tSsZH!Y71 zoC8CPXsE$6Hx%Oi{W! z5V~@)$qWNBHVoyaiv^F8dB0*!nHz!goQTnms#JW|61B@RrSP~o zJBE*Wp@7jtma0rZS&25)lF+PrRDs9Y`N<7Fvo+KDiFV91VR`!G{F^LOCCTyWQDaJj z{06qrIXqG#Wh%^*ttmUhcuzxl+Vc0Y^L_HhKDSCz{yWlQz^_9zr#us!9?{&yjL%uo zYDzc}**r05j=>D9HZzeNUG{T(rdqKxrd9w^rQImWi3TLP&4ibsDqV$7a?(WaOgOFO zu$g?jK5nqp&RFw?1KZSMrBtRHhZT9;h)j4Cq+*k1$-`?W01a+8*9%A9f2<^Aa6>Al z@&(Al#0)o6b_aZVNAqx2SzK=VPDp4LCs>M2XQWum&7e7R&=a*(%y2C#PmGETq?J~< z-=zn2K9tCV0NRh7983g9i-ZeP-CWK`(`4NBO0`Ki8O5{&>7-*Zi3k0x8H~7MLJ(Oa zrE()KA4)KuQS2$)1jPfBcwZx-)8L%JfT)gPdf1s%n(X6(X>}RaI%d~77zVo}UG*i8 zgFGL(!q;4@$O^LTe=e=;Slx^4*-G8Eo}~26!I_;D0qcDtS0ZbE2bXW@Xdkk7Ye)Nh znKmEamFu6Y2f+n|)phi)Gj!yMts@s9yTJJ^wcb(}v3|@`adn_I@}{RF2aw$>VBeub zheDSgI<&SCa|PHli;>NaZVd;>UgSKmggG0>p8@t0b3rKS&Y*8<1JmyoS=k5>z#eYe zE8e$S(;ILt5&^qs<3O)YqDgFhBeZn`+qw~+Z7kY5cyQykT#D>nc?tp++xwO_Vy*-i z;%!T771g#`Q>PY2KOW-&hBmZy9hoH+3GH96o@{09Ab zBAVQ}P;$Wde5uWs6Sn;zey+W|G6rTP;Go`FGMj^DdrSd zaT$J?h%)J7N6jZ{VaJRm^-j=^j>|k_`2>cxIo_^jOD-DqU_C!%QxXb@YCP!nM{2Q` z?-bEcu~Jvl6IH15GMKT>-N+d@xnE~CVqZQE9z-})`BRoRI}KodwFbv)lgwb+jU8Ab3>&&;eGjlV}_ef^b5t2kQvGRNK@L_M8hfD zY4hDq!AyG~TPl!v#hg5zez@V3XkwaZ<2=<87|v(Na(MdTf>twHx)UJc@>?04~Tv%}~XL)QH70 zphu!eYw*OE=6sL@HcO;4mrY}4fe$J<<| z<8o~U1z4csOhKWD7{`?gd7!&}EQO^4lF~NiAk3SULZR=3CTPZ-H04$|6cGuQ%m`wx zoO1&qS`yts$d@Euu^6Rgkp)7XP1-rBZ(0ToC-Ls%fMT1VxbKu8$xj7EomhZGf;o-q z>+M*T>=CU&+fj;Sld{F*!SB|ZXWRN^WLTPu21}-x`YLUJ;4)QWxCI|hW&jZo-BJ{wzG+2(-Qhb^by!9khbWf)2X0! z9!KYr#xJ2tjT!qEI5j+R6+OAw0DfYhD|8|{DHYT{Ej2tY7ZsWCxK$1^MLpE(HGAQ@ z9wA~KND<|lobQWerV-LzLmFvdlt}k0xo|j>V0(huM%!Ar)v*Y!r+Rudgq>1s0AFF8 zRBfD8Y;bvdU>0QE#0ZcGjr6eF2t+24QMot9g;8TN)|prwPxl)67`k0-Xufjyfx}=h z+z1pw&y0;y=?Y%UIQgnnvaqyV?RdFVl7bB)5t9@4NcX+uK($-5$ShGyWi%})n^iob zrB#gYf}E#HEGA{Tj6N=P`V9?k^^&(q_XXWM7+R3qDMR#mPlb^d3{sX3nrIyE`n7Wlu6oNk{iIte-59(X$B zvCw=iGpgnj!CI4dTckCq*LX4BBJv?2-8Kc55{xX0 z7Xj@fQ_Fg_MASkHVcq33A*LSt4Uto`2OB{=#MVZJ?VH-eRxeTl+<-%+yf;auRBgcU znSLiMpv7%7CmZCHteJARA%sF!I03m_3p9J(Tr4r9Vs*|A(~j51I4#wK!L*R@(}{m^ zT#ZBXu-9l$I-|ZEi@GXLSCjtqq)sY5DF*t5dO9iEiN~qK2j6zey30)KuC}G_3PG+= z#2R{3-~z#_lg0XSJ-*%C*1X?*-DQuNI+@j75~_>3OZg=i%xmtpz|*R^(~=96CSHA_ zHFsKa!NQc>QgdhZbm|a7*HuJC8mLMX&dTXF+~XB+BFFm}^NzA=dP5#}Tj63a<|?ta zkSxVTZ_;UzWjf79qp7iqrs^BCVW2~EznnWx* z@M^Sl(z2QAg(sz!3_M=ri1;KNPD>P(PFGt|)Y1BbvPmn1MdG?DW+lIDs+^uoc>x$! z^8HDoNlr$h&Xx351qhu11!aYa7Kf2Ru3V`dGX=Y?Y(7zfs&A^eysV*tfjQ<=SPjc0 zcs3X-dChGqZbsVGd=Yl+ zVuh3VBHJs9G*^3Iw%%e~S=iuHxwk#|amtTBaXDYqFu=2piTmp!+^`sT;MOiKp31u9z*RML{#?Oh{@;a*i(6&EzV)>s zuvY8)>#KAJi6X1uQft1jYO51`bsUYNtCs}V9rxh+iNU$|@B8^+>iJv!fjR6T7b6JR zm!G-Fn|oKE3-+xK3bqZ)pOk2H5CmBP>yw0wVV#!EetLKAlurP8+dlBw3&E$R>&<)* z|77dUZe0e4mp9Z4^2-x1Halm_owMbh)VADw*%xx@%M$lK!+7X5A3oB1;I7xJ%isGO z?VDfut1mwN4aj3F;P4XIwp>#|3dc@NO&5$_y@{vb>aO`Bv>gY1Uty6EXB!K5V27Vz z7I|>TM!vggC-U~4$2NUmyZ z2lKx?`Wf^*_N`yIbG@NEo*IAtwKwG+x#nvh`S%-MSWkcCg_pegdeb# z%J;qC$dNC9&^}yQ`N-#w3g4pXYkvRymnMFhT3Ul|UwzkIpNJ>koH=yy%1c&%e*SHb zyzG&0T=kxx-W`1h^P^Y6)$d*a9$rQsS_bD9t)E-8es0nF=e^JFy*ah(ioZMf0F#M+ z8=t)Tz8^pIyn6=-jgm`iuejr~0|(Z=@J9X*%q#A{{Vg}!Nfa1L-A zzX&<^E0O=tzY_V$BQNTYZdS(T2flOU?Jr=NBX_^&o7lb^UNHyU-uutH>z;>S{IT5_ z`{2J``?vi={eMvHckTGSi$C^;pI!dN#F3@7gnjVS?|k1E4q$iOev#%j-ha*(g+R$@x0CETy~S)Y?9k(rO9Tqd4IWF zve{U*DilQ+g$gwgm;EnR!&nj7!%{H}fb(Ibm?+_HJh zyB(9scl3sB>WsT~uJ$ET2eRjvjC*kLBX@64JiJ_)ykgbnF(+Sk{Q~--9z3T9$G;3# zjRM)WW_^3xlbiZq89Dy-=T~}XUKOj9Q+cUe7L(C@Udqn9rAv%EEU{>pXm?2FgjqDj zY-YPzgps(-9!KDqXieB**cR>TN=R@Vv02PDFax@&N ziaBdh;E6Dev4dk+jb?%fS)quC3WTsV9qnP#u{sfywqj>=#D&X=HQHfOG8dFEDbXruHG;L;ZEUNXXjlSTeK0uS@nzN32 zFqsKqsKBGy5KnWoLNr372&IS%;aV}0bEvUgHc4}WLZX9Vy9vd_Yav) zi)|cbMVysUBH<~OC?9RgCKEosYBdu^jNzHM9A%SS(q{9567I1Jo&*=@<|LNQ*@DHg zJ-|2uh`rq9BkFj?SN6bSDZ{7akVra|EU9v;jbUh_tl+YMgAfP%QP$mwq1xWc5=x`W zK$hc#LSUT=>!eXs=~lFuIXI0uS%oT~a!e9Jff!%SSiCtPadt-)b$IjXvKWNjeM-8M zGIp8Ea3!Ev7)o)GXH$G98c0Qg!QQe- zg}o^?&1do^3+tqCFT?r;zhX3z9IN!1oD^FRg{&mcQh-TNj-sFIO%-GkRlD+F@Prc# ze(|V7Q(s>W<{gaQBRw{H|AK?+*3+I%w~jk^SGWV(34t9D7*@-$T87o~*=l)o3|OiI z59q+Rb#1zjYmL4RTH{hNTTsE!k_P62Yqg2(P)kk~MSZjBdRRXhw50N>KA?+&W)lnp zT?{lM+V31_3HBzuTI|%jlNXBE?pp6F#|1lP(bMPTE2Ol!;b1x0SfnnC9Z{F8({MhC{JkHhiw|*E%9?ty5)jxgdFIOxZd(=SF zkYUtUC(fNQ$@rs9_xGRw$Dg0+J2WAhd1{hp;n}r^BU2WLv*#Pwb$=>sKfG66dd)(_ z`Mf&o%-J_)Y}?5wOh1r#{qJ>cyLI|6Z1gk7HY|~Tq;~qQH$#W6$Qf}}8|Lk-n7u}S(qoDSdbx-{ zKkSUI%o!22h!P2hRN861a%aT$6nau_W3f{~yl&oERpWR%f!orlV9}p&+fm?)C(J2| zp=@YM=!~jL(8TyHId>*sES0;1c&KEF#w|4mTUBeQ;6~UY?h)ze|AR9UqRF&5E5X1c z+Pf(S>aH8pzPy=9Q>v0EIy`Zwt(a#u%N=1+C*=-x8Y^8%JZ4t=>RvgWspU)VV9|>u ztANYY#Xf~Jp&=q`GNJURoDm7*O@`W*8CR`ay6AY}U+$SgWxwM@k_?;f)y>%uJ@E8x zi`M_K$&gxjI=*q#kq@gKj01~xoOrHD$GP`<3yEz0=GDem9)esj(RB5Qz2|P2vi*bp z{U`V}HPiXY$oYRx`^JIsv}5GgC;h7bdriS6!-7}u%ty8;?R)m5w_+=s_I+^h;VgIj zY<_Y3cTcTadI8e+j|FeHLjA2^O)I!C5&&OsTxvZEAsh5M6q09n?LQ6TsmpeoG-dxb% znL~m-M#4g>-8gNH(3H@NC5tXq?CMjom`#FtMYMttQuN_=6%m4nnN&ENG3zQzl7q@c za|BP(?qbY}#7dt?b11WD+xXegf@Q-(#%n1`p$u-$AsJrr!TwGnSHg=0V2iLmM_ItE zHKnhbu@5~gctE2dj-`@lx364@=eby+7}uE9$0qDmRq`YOnoz^(TB)bb7Q9YpQ4ZFk z1e(HvoRRZM!Avxz1T(zVpQ&aN1#>)CKrM1f$-6D#L^accm;4|t-*nTb@zc;<;0 zX20CAY{ZKb{@!G8&!Ue!v1{6#l@m7qeB!Pd-#Pu_d!hT*wr+G>_tIOxy;|4>-fsn( z+k#FG3+{itDHs;qf4?O7;tEcE?8iISEST^@V8eqQl^^UJdF0I0%^w|*pS@V&7W$Wc zC3>`;KNddLrJw%V+GVFMyft7YyLOR*QYE1 literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/1.0.3/kafka/channel-artifacts/block_3.block b/hyperledger_fabric/1.0.3/kafka/channel-artifacts/block_3.block new file mode 100644 index 0000000000000000000000000000000000000000..57d5758a1468960ee28cf3e4e5f0467036aa69b7 GIT binary patch literal 4681 zcmeH~ZLHJQ8OI^_Rp-*urX7N8ba#wa8!3(Byxiof6pmk#IEkIuv7PITq1le(#CcEd zjpJUI_tBQFxfZai}8K32hP%We+ zwhdPY#xPy4=Zi)n$+84Aunx^OO@Ol!A+l_kG^3)>A$hv{cjy*K9HV0_8fwbvOiL~M zY7$STX^g$HhP7!%Ktod$nX!PB_8Ia7V<;UmLt|?1aGqurPqad(d?hU$npDH>QoPKx z6rNORta@b+Y}34il2hRN8=)35kv7wTKH5-C#-Ke6fyv#R)yoOja)1ss+js{?F`W@H zDDki)@-#=AWUn-eG;4&EZr3v9prw>cd76{V5WG@$gf!iJw*;@wRib&N%+yqrY0+H3 zjPwo@1eU=vVRua_V%>XC+wrpKmC|lg2@6va8l0pU(iK06f{dAi?jR;Lz7LD&?N$h9Fl}=#D&4`+v*ymp*eHQS<)mi zm&xKZgl5d_*32OWhO;JBg}S0iVoKp#MQ^+eG%gTq!C<^%G*tnKOqzy^a*lbL$W+So zGL(ty*UBQhjYe=LG&xA=X%>yeCWI8w%mx}kBTg<|D)26tDr5wq(R5o#ykHr8vEuf! zI7P%6HYp`dr#r;4=A;{^*p4XrLOe?WCPxKpNv=_->LF;2Rlt=FCmG^utJ@c^5Bzk~ z&|2eLTc23Fee{W<%No5A**!JJy=)H0`*PgcvNA+QXLf;)!ie`qug zI~XifTGgTk=F4Ed0&H%?erO2X4@U0~-u1Q1OF(Ps@4j(z{8lcp{^ZD03;JKIZ+Y+p ze?lNK!+ z_uaVtu@lvaLd02fnP@!1<1H&o7&*dk6ogtb7YRU+$mTo+ilO|lAh~4A6x>YGTaFYf zwR$rq5MtdcXT9wp+p^kFilA(bh^n;wzhHlooHslr4FOR#5Tk-H(s3Gziia^M%goh+ z(Jbz-RoE_9Wmt$)5z*zG8p{)k$C~WKb)(p>)FVPIj^$f`D|XaLGvtOMS#rA}{W1Fs zBc$zf^Y&^(KRLZ_rMMN5mp9LBezE_)cW>G&9{bEYk)wY)#~=KHZS;; zht0OWg@^0nquEKlIHpJ*zdk7(HqsI8A>Qa8;!g(h@I0APsS+0Eg-u+9T z+PYCaG;rdzl{;>=jk4oadCA2W?r#6_=`BJb`PSfW#e3|H;uB|bp7AL4faUn}P2lZ8 z`>8>&X%PH#0Dwdzt2MO745_|*eNrX(8B$GrNU9u+$2w3?(READMG#5G>+vj>F3yGx zQ|8Gypkc8`pLrS=MY>IPAlE}aoyUtzUI~}VU6!1Z(_}kjK%uv$@`Tu3D_~)umP1`+ zD|I9^&<+tW)!R_zadZ~aajF@*ihrc(Go-5&3qHcw|DI0ikbVtL!Hv-Azr!i$(Wz;M zyUf?6c7kj(U0HG^wJciKBh%Sn3TBgOQ{DRY|hmJ4(;Ag3?f-{4_*7fW;!Cf2ut~Uu9eU;G8{SX8 zz5#jm*xs+?AHHq#NcG9(Lyx}N6I^BSm%iEmQhC>Iv2*Fd+1ks4EB?MNeQ@W3-G@iq zjPnl{ZKES^y?if