8.安装合约

[复制链接]
查看809 | 回复0 | 2023-7-29 00:55:01 | 显示全部楼层 |阅读模式
CSDN资料地址:(152条消息) 1.hyperledger-fabric 资料整理_youth_ymh的博客-CSDN博客
! _; ^$ F7 V, R' K" ahttps://blog.csdn.net/baidu_ymh/article/details/131537319?spm=1001.2014.3001.5501
+ e3 e8 g8 r6 ~9 Y: Z知乎:https://zhuanlan.zhihu.com/p/641458419
4 T/ z* G# w9 I8 Z2 K. `* w4 H% G# H# `0 `章节目录
/ Y) O" \* Z6 m: M1.hyperledger-fabric 介绍和资料整理 https://www.toutiao.com/article/7251935732179354150/, |, f  e+ h- q- ^# ]) O
2.服务环境准备 https://www.toutiao.com/article/7251937147132035623/
2 s) s, A! Q# Z3 ^5 q2 k. h3.安装fabric 二进制源码程序 https://www.toutiao.com/article/7251938220630753795/- y7 g& B! P& }! n! C* t$ J
4.生成fabric身份信息文件(证书)https://www.toutiao.com/article/7251940174950105633/3 Q$ s# D5 u* b9 h$ Z4 G& p
5.生成系统通道初始区块文件 https://www.toutiao.com/article/7251940560347349542/
7 ^3 W: c+ _. @6.启动配置网络节点 docker-compose启动文件 https://www.toutiao.com/article/7252140512931889676/
9 ^$ g  l+ g3 ?/ T6 B7.将组织加入通道 https://www.toutiao.com/article/7252141528884265505/
; }- b7 H$ [3 K5 V; Y8.安装合约链码 https://www.toutiao.com/article/7252142449584521766/. [  o- H9 o( Y# Y* K
configtx.yaml 详解 https://mp.toutiao.com/profile_v4/graphic/preview?pgc_id=7252143717228986918* w# T2 I  T  l' @$ ?2 Z
crypto-config.yaml配置详解 https://mp.toutiao.com/profile_v4/graphic/preview?pgc_id=72521439706698552353 s+ }/ z4 Q9 U9 E+ d+ f% e

$ k, T& T4 q) t4 T; P3 Z9 E$ u7 R2 C2 @0 F( |
1.创建合约代码  l9 v- `) ^1 v0 t& c/ a2 E# k% N
* Y8 w" u# \3 C
语言:java
$ B- a' h3 a( M. F, w( q" u/ P$ n* d  w! l6 _" o7 r
参考官网示例: https://mvnrepository.com/artifact/org.hyperledger.fabric-chaincode-java/fabric-chaincode-shim
) F0 b/ ?- G4 `- o7 H# T4 N5 C7 F+ m! i% e
项目目录. A6 y4 }' E3 r- s

1 D: @/ z2 ^; p. v( ]
8.安装合约-1.jpg
1 `% Q' A# G; |

& q, z1 A1 l5 p$ f3.maven 打包
% P" s4 h0 f1 F8 y, y
  j( @  B6 }' |; i5 Z# N2 Q# L% f, K, B9 M
4 D; Q6 e8 X  x# M* r6 T) C! _
打包后target/下会生成chaincode.jar 包。
- D# |0 k4 c9 Y5 N1 M! e& I' `# P2 X

8 u' Q7 V$ l4 g/ u4.移动包到服务器
: J& Y3 F0 h* y0 j2 ~, `5 d1 s# h5 o$ e  }* ^7 n
将合约代码里target\chaincode.jar和 META-INF 两个文件上传到服务器目录 /home/hyperledgerFabric/qkl_01/chaincode/fabric-java 下,没有目录请创建。4 r5 i0 l$ z$ ^7 Q* L* J  V

1 |. e. o* W2 g& q+ ~3 A4 B# j$ m% k. N$ f/ z, x! ?7 z0 X8 \
5.设置环境变量
; y/ B5 q: {; E* \  `% @
) }' V% y2 o+ K4 e+ {1 cexport PATH=/home/hyperledgerFabric/qkl_01/bin:$PATHexport FABRIC_CFG_PATH=/home/hyperledgerFabric/qkl_01/config/6.通过 lifecycle 命令打包成链码包( ?2 l# [4 V5 z. F6 y8 C0 q
: j/ r* \6 h5 T! |! s8 c
lifecycle命令参数- r5 C# w& U; c1 o$ w" p" ^7 x: V
! A! _: ]& F7 Q: S+ I6 b
package : 打包后的链码包文件
: ?' D& n7 Y$ ~, m5 X& z7 L+ Y2 [' G' h3 J
--path : 需要打包的合约代码文件目录: x1 j7 M* O& X2 F0 L  ^; H

2 Y" E% f3 @9 f- c: h7 ~: b# C--lang : 链码语言 java版本
- i4 Q) i& L# h- N3 l
3 r2 M3 d4 ~$ E& C--label : 链码包名称id
8 N! d, d; Q! K$ R4 z7 k+ {7 Vpeer lifecycle chaincode package fabcar.tar.gz --path /home/hyperledgerFabric/qkl_01/chaincode/fabric-java --lang java --label fabric-java7.安装链码8 F% F  k% @1 ^9 J' Z6 w$ `7 K

$ k7 X4 M4 l/ P. G; Q; `% ~进入链码包目录:  W* E. @8 @  O4 A# Y" ^  }/ k
​cd /home/hyperledgerFabric/qkl_01/chaincode​
# ]+ M  J& D5 Q" C- N6 R! c- b$ ?6 I  v. b  E* d; o
7.1 Org1MSP 安装链码- a7 z/ p$ q  J: R/ C1 q" U
( V/ ^6 p7 h1 i: Y$ `9 X
export CORE_PEER_TLS_ENABLED=trueexport CORE_PEER_LOCALMSPID="Org1MSP"export CORE_PEER_TLS_ROOTCERT_FILE=/home/hyperledgerFabric/qkl_01/crypto-config/peerOrganizations/org1.ymh.com/peers/peer0.org1.ymh.com/tls/ca.crtexport CORE_PEER_MSPCONFIGPATH=/home/hyperledgerFabric/qkl_01/crypto-config/peerOrganizations/org1.ymh.com/users/[email protected]/mspexport CORE_PEER_ADDRESS=peer0.org1.ymh.com:2051#安装链码包---构建mavanpeer lifecycle chaincode install fabcar.tar.gz7.1.1 查看链码: R6 S. N. }. y" s
8 ^( K& e7 @7 i" e- n
#查询Org1MSP链码 Package ID  a: W: N9 ]7 {5 i  b7 Q
peer lifecycle chaincode queryinstalled# ^* B; U8 n+ f) H$ a/ ^' c% y2 M
+ p+ l- f. u" H$ v
​​8 N" V" ?0 {" I* S6 I( l
/ R" ]  f! F, @0 o7 _5 N
8.安装合约-2.jpg
* K2 R2 a9 B! R4 A/ |; \
) b" U+ T  S# f% \/ E
​​4 W, }" T" P" J0 A$ c- k- b9 A  A
7.1.2 批准链码
$ _5 E# A. J6 d# T& x
5 L+ e9 A3 e2 s" Z+ R9 g#写入环境变量export CC_PACKAGE_ID=fabric-java:60d361c56b9bd73b69ecfc7caa434c56db41d99126d176835b74e79939fbbca4#Org1MSP批准链码peer lifecycle chaincode approveformyorg -o orderer0.ymh.com:2050 --ordererTLSHostnameOverride orderer0.ymh.com --channelID ymhchannel --name fabric-java --version 1.0 --package-id $CC_PACKAGE_ID --sequence 1 --tls --cafile /home/hyperledgerFabric/qkl_01/crypto-config/ordererOrganizations/shineyue.com/orderers/orderer0.ymh.com/msp/tlscacerts/tlsca.ymh.com-cert.pem7.2 Org2MSP 安装链码8 D6 k2 A" F- o4 p& e5 U

/ b5 M% U7 Q2 Q9 [export CORE_PEER_TLS_ENABLED=trueexport CORE_PEER_LOCALMSPID="Org2MSP"export CORE_PEER_TLS_ROOTCERT_FILE=/home/hyperledgerFabric/qkl_01/crypto-config/peerOrganizations/org2.ymh.com/peers/peer0.org2.ymh.com/tls/ca.crtexport CORE_PEER_MSPCONFIGPATH=/home/hyperledgerFabric/qkl_01/crypto-config/peerOrganizations/org2.ymh.com/users/[email protected]/mspexport CORE_PEER_ADDRESS=peer0.org2.ymh.com:3051#安装链码包---构建mavanpeer lifecycle chaincode install fabcar.tar.gz7.2.1 查看链码6 X. }/ A- M1 b  ^# d3 }7 W. ^% a

) w9 |5 [, R- y. J* a' J#查询Org2MSP链码 Package IDpeer lifecycle chaincode queryinstalled
; ]6 h, B" X: T6 ?5 [6 {: G2 s* x% N" m8 P) z% n9 M7 e
  z6 `) F- d: z0 M0 J* A& X7 y
8.安装合约-3.jpg

' p7 t: z- P$ v7 ^" H2 g) |- @3 m* O: L( p% a6 N$ M6 y. B4 Q

0 E7 p. c1 E# r$ F+ N7.2.2 批准链码
- z( R0 J2 t% a& B1 a( L: o
  ~. v- k: V  [#写入环境变量export CC_PACKAGE_ID=fabric-java:60d361c56b9bd73b69ecfc7caa434c56db41d99126d176835b74e79939fbbca4#Org2MSP批准链码peer lifecycle chaincode approveformyorg -o orderer0.ymh.com:2050 --ordererTLSHostnameOverride orderer0.ymh.com --channelID ymhchannel --name fabric-java --version 1.0 --package-id $CC_PACKAGE_ID --sequence 1 --tls --cafile /home/hyperledgerFabric/qkl_01/crypto-config/ordererOrganizations/shineyue.com/orderers/orderer0.ymh.com/msp/tlscacerts/tlsca.ymh.com-cert.pem7.3检查链码
+ @: f! y5 T' ?, _0 K( I- g" T$ U- Z- T' }; G
peer lifecycle chaincode checkcommitreadiness --channelID ymhchannel --name fabric-java --version 1.0 --sequence 1 --tls --cafile /home/hyperledgerFabric/qkl_01/crypto-config/ordererOrganizations/shineyue.com/orderers/orderer0.ymh.com/msp/tlscacerts/tlsca.ymh.com-cert.pem --output json7.4将链码提交到通道
  o- h4 v( W+ Q& r, L9 Z
( V# A( H) }; [; Z命令参数
  E% l2 Z. `) ?$ o1 o; n
! K+ E# D& P7 c$ e% y3 ~1 `9 q" B1 l--name : 链码名称/ H3 ~1 o: i* ~. j9 a
" E% ?; F; t' }$ d. }  l6 x1 }
--version : 链码版本8 @0 X% z" J; t4 D4 L" h5 o/ C
5 \/ u  _* e7 d5 X0 ?: M3 F
--sequence : 升级序列号,从1开始,每次升级迭代累加1., ?; J3 b$ K0 u6 l/ w" p
peer lifecycle chaincode commit -o orderer0.ymh.com:2050 --ordererTLSHostnameOverride orderer0.ymh.com --channelID ymhchannel --name fabric-java --version 1.0 --sequence 1 --tls --cafile /home/hyperledgerFabric/qkl_01/crypto-config/ordererOrganizations/shineyue.com/orderers/orderer0.ymh.com/msp/tlscacerts/tlsca.ymh.com-cert.pem --peerAddresses peer0.org1.ymh.com:2051 --tlsRootCertFiles /home/hyperledgerFabric/qkl_01/crypto-config/peerOrganizations/org1.ymh.com/peers/peer0.org1.ymh.com/tls/ca.crt --peerAddresses peer0.org2.ymh.com:3051 --tlsRootCertFiles /home/hyperledgerFabric/qkl_01/crypto-config/peerOrganizations/org2.ymh.com/peers/peer0.org2.ymh.com/tls/ca.crt7.5 确认链码定义已提交给通道
% F# j- M2 Q9 f3 i6 ?0 \
8 w" _/ z1 {* p1 P0 {. j; R( epeer lifecycle chaincode querycommitted --channelID ymhchannel --name fabric-java --cafile /home/hyperledgerFabric/qkl_01/crypto-config/ordererOrganizations/shineyue.com/orderers/orderer0.ymh.com/msp/tlscacerts/tlsca.ymh.com-cert.pem3 b! F! E/ G  l. `
: n" X8 N3 D7 }

; e' C$ k* G! l8 v9 Y) p
8.安装合约-4.jpg
# V& q* f4 T  b# ^( g3 M# @! s
% `6 f: |4 }1 U  I% `
( U) o6 o; m) T
1 {' j: h3 T  }$ L: J+ x3 v! I

& E) ~9 g% S  S( z' [" B4 H
/ N& }3 D9 Z( x+ W, c链码安装完毕
( u- N. Y! e4 u8 i9 V3 h5 H& L. I/ h7 y$ B/ A7 \1 [

$ W( g* g4 C: P/ h+ i& ?8.链码测试
6 E: o4 q/ ^" k" m! s9 X
  s( P8 ^8 V' p9 ]0 Z8 L' _参数# U5 `! u7 u$ u2 A

( ]0 [# O' |# ]9 |3 n; p-C : 通道id
8 n8 \# t! @: _3 x
" O6 }- P) R6 ^-n :链码名称
: F  c; f" c- ^; C0 @
2 s9 ?; z3 e% {" j) e-c : 合约参数(function - 合约方法名;Args- 参数,数组格式)+ P5 a2 L; c% S; ^2 O
8.1 测试上链
+ a' j# F9 M9 _
# R5 X) s( C0 L8 _peer chaincode invoke -o orderer0.ymh.com:2050 --ordererTLSHostnameOverride orderer0.ymh.com --tls --cafile /home/hyperledgerFabric/qkl_01/crypto-config/ordererOrganizations/shineyue.com/orderers/orderer0.ymh.com/msp/tlscacerts/tlsca.ymh.com-cert.pem -C ymhchannel -n fabric-java --peerAddresses peer0.org1.ymh.com:2051 --tlsRootCertFiles /home/hyperledgerFabric/qkl_01/crypto-config/peerOrganizations/org1.ymh.com/peers/peer0.org1.ymh.com/tls/ca.crt --peerAddresses peer0.org2.ymh.com:3051 --tlsRootCertFiles /home/hyperledgerFabric/qkl_01/crypto-config/peerOrganizations/org2.ymh.com/peers/peer0.org2.ymh.com/tls/ca.crt -c '{"function":"ymhUpchain","Args":["唯一key" ,"参数2", "参数3" , "参数3" ]}'1 S) d) B! [/ V7 p6 S6 v/ C, ]! H
执行上链后提示:200 则成功$ ?/ |7 _2 ~5 l/ ^
% c* J3 l+ w! {1 O6 u0 C
2 u, M7 W4 c) V) m7 C5 J
! D9 g  q' ^; s  I1 j0 x- ?* z. e
8.安装合约-5.jpg

' A: H- C+ X% B/ ?1 w: A8 V
3 f2 d! J( G) e2 e) u0 M
8 q! n* P! j1 J" O( K0 Y8 {  K+ a
$ W$ |. I" B' e  g( K1 O. Q+ N+ T
8.2 查看上链数据1 h7 Y' A/ `9 t0 n

$ F/ \' g& ^# Q0 d8 I8 u% V/ N, epeer chaincode query -C ymhchannel -n fabric-java -c '{"Args":["queryUniversal" , "唯一key"]}'
0 }1 W' `4 _5 n4 E; S- l查询成功后,后台打印输出上链数据,数据格式为json。截图示例:
7 b  c# P( P' ]0 k3 w! }
+ X3 Y/ t) I+ T
$ u! S  x/ q# `
0 c; h7 e! `. e1 N
8.安装合约-6.jpg
" U( f$ V, P$ y0 a/ B% s; J4 o& n
  _. F# ?( P' y2 Y
5 p2 h/ N. l# f% Y0 T9 b0 E5 Q

! D9 _0 I+ E" J# O& A: ~
$ m9 Q0 n( G+ A' o/ p: g3 G9 通过CouchDb 数据库查看上链数据
5 y  z" }' G: ^7 i% J) R
% e8 O$ |% \- i
! ?# V; v- S1 b. a" n, o( {  m" y" n9 C8 J3 V5 z9 g9 c: Y
访问地址: http://ip:5984/_utils/5 W( F( ^1 ]' s! {9 d; i6 {# T
% w, {' X3 o$ ?: _
用户密码:admin adminpw) S. v9 A# t6 G( }
7 x  b8 r* E3 w& L  J7 _& z* e
请查看《6.启动配置网络节点 docker-compose启动文件》章节的5和6 小节目录配置,如下截图:
& u$ E2 {. [) O1 T+ _5 H3 \4 c2 {
" V$ M# D' m5 R3 A0 W( s
% [% V# ^, q* i* B9 h5 d3 h, w. X* F4 B6 K+ R' c
8.安装合约-7.jpg

# I4 v6 @4 w, m! M' O$ t* p
: O& u! S" \9 m7 ^& b3 R4 c) d; `
: \9 T6 F/ r- a3 M+ X5 F
# _3 o- y. G8 r7 m3 ?

" G* \: W2 l0 k- @* u3 T) ?
8.安装合约-8.jpg

+ v7 g# b/ p6 ~, ^
: V0 Z& w- N8 T  v/ {% V) d/ j9 G  |: Y) V  v. r
+ X" F) p! C0 l# i" ]' d" r

! }% M" s4 D1 F$ e# D/ K6 ^) B* {9 R9 q! f9 p) G; |; e) F
8.安装合约-9.jpg

" ~+ i8 \: v- D# K  Z4 p/ K6 P
, _5 A1 z( e# i, H
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

11

金钱

0

收听

0

听众
性别

新手上路

金钱
11 元