355-fabric链码初始化








fabric链码初始化








先说一下背书策略
模拟交易被执行的过程

举例:
两个组织:
aaa:
	peer0
	peer1
bbb:
	peer0
	peer1

交易规则:
1.aaa组织的所有节点参与,bbb组织的所有节点也参与
2.只有aaa组织的节点参与交易
3.只有bbb组织的节点参与交易

在我们初始化链码的时候
就要把这些交易规则放进去








我们举几个背书规则的例子

1. Org1MSP,Org2MSP,Org3MSP中的用户共同验证交易
"AND ('Org1MSP.member', 'Org2MSP.member', 'Org3MSP.member')"

2. Org1MSP,Org2MSP,Org3MSP中的任何一个成员验证
"OR ('Org1MSP.member', 'Org2MSP.member', 'Org3MSP.member')"

3. Org1MSP某个成员进行验证, Org2MSP和Org3MSP成员共同
"OR ('Org1MSP.member', AND('Org2MSP.member', 'Org3MSP.member'))"












链码初始化
peer chaincode instantiate 
常用参数:
-o 	--orderer		orderer节点地址,orderer.abc.com:7050
-C	--channelID		通道名字
-v	--version		链码版本
-l	--lang			链码语言
-n	--name			链码名字
-c	--ctor			链码调用,json格式调用
-P	--policy		背书策略
--tls				加密
--cafile			orderer的tls证书,/msp/tlscacerts/xxx.pem


执行一下
peer chaincode instantiate -o orderer.abc.com:7050 --tls --cafile $tlsfile -C abcchannel -n abccc -v 1.0 -P "AND ('Org1MSP.member', 'Org2MSP.member')" -c '{"Args":["init","a","100","b","200"]}'

peer chaincode instantiate
-o			orderer.abc.com:7050
--tls
--cafile 	$tlsfile
-C 			abcchannel
-n			abccc
-v			1.0
-P			"AND ('Org1MSP.member', 'Org2MSP.member')"
-c			'{"Args":["init","a","100","b","200"]}'




peer chaincode instantiate -o orderer.abc.com:7050 --tls --cafile $tlsfile -C abcchannel -n abccc -v 1.0 -P "AND ('OrgGO.member', 'OrgCpp.member')" -c '{"Args":["init","a","100","b","200"]}'









如果出错了
就重新来一遍

0.docker-compose -f docker-compose-cli.yaml down

1.docker volume prune

2.docker-compose -f docker-compose-cli.yaml up -d

3.docker exec -it cli bash

4.tlsfile=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/abc.com/msp/tlscacerts/tlsca.abc.com-cert.pem

5.peer channel create -o orderer.abc.com:7050 --tls true --cafile $tlsfile -c abcchannel -f ./channel-artifacts/channel.tx

6.peer channel join -b abcchannel.block

7.peer chaincode install -n abccc -v 1.0 -p github.com/chaincode

8.peer chaincode instantiate -o orderer.abc.com:7050 --tls --cafile $tlsfile -C abcchannel -n abccc -v 1.0 -P "AND ('OrgGO.member', 'OrgCpp.member')" -c '{"Args":["init","a","100","b","200"]}'





我们看一下这一系列操作的流程和结果

abc@abc:~/workspace/testfabric$ docker-compose -f docker-compose-cli.yaml down
Stopping cli                     ... done
Stopping peer1.orgcpp.abc.com ... done
Stopping peer1.orggo.abc.com  ... done
Stopping peer0.orggo.abc.com  ... done
Stopping orderer.abc.com      ... done
Stopping peer0.orgcpp.abc.com ... done
Removing cli                     ... done
Removing peer1.orgcpp.abc.com ... done
Removing peer1.orggo.abc.com  ... done
Removing peer0.orggo.abc.com  ... done
Removing orderer.abc.com      ... done
Removing peer0.orgcpp.abc.com ... done
Removing network testfabric_byfn
abc@abc:~/workspace/testfabric$ docker volume prune
WARNING! This will remove all local volumes not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Volumes:
fabric_peer1.org1.abc.com
fabricdemo_peer0.org1.example.com
fabricdemo_peer1.org2.example.com
net_peer0.org2.example.com
043b2d54fdbc720d22399181d9680d5178e13caf92c59984a140cf0665961560
fabricdemo_peer0.org2.example.com
fabricdemo_peer1.org1.example.com
net_orderer.example.com
net_peer1.org2.example.com
testfabric_peer0.orgcpp.abc.com
testfabric_peer0.orggo.abc.com
testfabric_peer1.orgcpp.abc.com
testfabric_peer1.orggo.abc.com
0eeaa740cf0bc156854169a5b0c83594d72cfe50a1f029fa70ff712db888b50d
ee95545f8f094b68cb6a9ba3f2533adbb3884dccc9261e08c05d586271b42503
fabric_orderer.abc.com
fabric_peer0.org1.abc.com
fabric_peer0.org2.abc.com
fabric_peer1.org2.abc.com
net_peer0.org1.example.com
net_peer1.org1.example.com
683ffce923e85bfa1b5d2d6244f9fd123566540853f2f9e75cec3797ec23d93c
afec6e124ea7e35d5560808f5a25c8003d6b6447e0c90d44b9f770bd0fbaf19b
fabricdemo_orderer.example.com
testfabric_orderer.abc.com
3ff8fc500f2442f5753a510fe58a2c2749edd5061461918fdb4c8bad546cefbc

Total reclaimed space: 1.025MB
abc@abc:~/workspace/testfabric$ docker-compose -f docker-compose-cli.yaml up -d
Creating network "testfabric_byfn" with the default driver
Creating volume "testfabric_peer1.orggo.abc.com" with default driver
Creating volume "testfabric_peer0.orgcpp.abc.com" with default driver
Creating volume "testfabric_orderer.abc.com" with default driver
Creating volume "testfabric_peer0.orggo.abc.com" with default driver
Creating volume "testfabric_peer1.orgcpp.abc.com" with default driver
Creating peer1.orggo.abc.com  ... done
Creating peer0.orgcpp.abc.com ... done
Creating orderer.abc.com      ... done
Creating peer0.orggo.abc.com  ... done
Creating peer1.orgcpp.abc.com ... done
Creating cli                     ... done
abc@abc:~/workspace/testfabric$ docker exec -it cli bash
root@44e649277a71:/opt/gopath/src/github.com/hyperledger/fabric/peer# tlsfile=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/abc.com/msp/tlscacerts/tlsca.abc.com-cert.pem
root@44e649277a71:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer channel create -o orderer.abc.com:7050 --tls true --cafile $tlsfile -c abcchannel -f ./channel-artifacts/channel.tx
2019-04-15 03:38:24.498 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2019-04-15 03:38:24.527 UTC [cli/common] readBlock -> INFO 002 Got status: &{NOT_FOUND}
2019-04-15 03:38:24.554 UTC [channelCmd] InitCmdFactory -> INFO 003 Endorser and orderer connections initialized
2019-04-15 03:38:24.758 UTC [cli/common] readBlock -> INFO 004 Received block: 0
root@44e649277a71:/opt/gopath/src/github.com/hyperledger/fabric/peer# ls
channel-artifacts  crypto  abcchannel.block
root@44e649277a71:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer channel join -b abcchannel.block
2019-04-15 03:39:15.048 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2019-04-15 03:39:15.170 UTC [channelCmd] executeJoin -> INFO 002 Successfully submitted proposal to join channel
root@44e649277a71:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode install -n abccc -v 1.0 -p github.com/chaincode
2019-04-15 03:39:51.090 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2019-04-15 03:39:51.090 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
2019-04-15 03:39:51.396 UTC [chaincodeCmd] install -> INFO 003 Installed remotely response:<status:200 payload:"OK" > 
root@44e649277a71:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode instantiate -o orderer.abc.com:7050 --tls --cafile $tlsfile -C abcchannel -n abccc -v 1.0 -P "AND ('OrgGO.member', 'OrgCpp.member')" -c '{"Args":["init","a","100","b","200"]}'
2019-04-15 03:40:38.961 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2019-04-15 03:40:38.961 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
root@44e649277a71:/opt/gopath/src/github.com/hyperledger/fabric/peer# 
























 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值