共5个组织 org1,org2,org3,org4,org5
需要创建通道 channelmain、channelproduce、channelprocess、channellogistics
节点加入通道:
peer0.org1.example channelmain、channelproduce
peer1.org1.example channelproduce
peer0.org2.example channelmain、channelprocess
peer1.org2.example channelprocess
peer0.org3.example channelmain、channellogistics
peer1.org3.example channellogistics
peer0.org4.example channelmain
peer1.org4.example channelmain
peer0.org5.example channelmain
peer1.org5.example channelmain
需要安装的链码
producepub.producepri、processpub、processpri、logisticspub、logisticspri、main
节点安装链码:
peer0.org1.example producepub、producepri、main
peer1.org1.example producepub、producepri
peer0.org2.example processpub、processpri、main
peer1.org2.example processpub、processpri
peer0.org3.example logisticspub、logisticspri、main
peer1.org3.example logisticspub、logisticspri
peer0.org4.example main
peer1.org4.example main
peer0.org5.example main
peer1.org5.example main
所有操作命令中采用相对路径 ,均在balance-transfer目录下进行操作
1 对org1进行操作
注册新的用户 Jim ,获取对组织一节点进行操作的Token 值
curl -s -X POST http://localhost:4000/users -H "content-type: application/x-www-form-urlencoded" -d 'username=Jim&orgName=Org1'
获取Token值
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA0NjUsInVzZXJuYW1lIjoiSmlhIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MDU1Nzg0NjV9.9fO69FzCD468i2DVlPVDlDd5z7x6bfVBqojZlWLOhPw
创建通道 channelmain
curl -s -X POST \
http://localhost:4000/channels \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA0NjUsInVzZXJuYW1lIjoiSmlhIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MDU1Nzg0NjV9.9fO69FzCD468i2DVlPVDlDd5z7x6bfVBqojZlWLOhPw"\
-H "content-type: application/json" \
-d '{
"channelName":"channelmain",
"channelConfigPath":"../artifacts/channel/channelmain.tx"
}'
创建通道channelproduce
curl -s -X POST \
http://localhost:4000/channels \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA0NjUsInVzZXJuYW1lIjoiSmlhIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MDU1Nzg0NjV9.9fO69FzCD468i2DVlPVDlDd5z7x6bfVBqojZlWLOhPw"\
-H "content-type: application/json" \
-d '{
"channelName":"channelproduce",
"channelConfigPath":"../artifacts/channel/channelproduce.tx"
}'
加入通道channelmain
curl -s -X POST \
http://localhost:4000/channels/channelmain/peers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA0NjUsInVzZXJuYW1lIjoiSmlhIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MDU1Nzg0NjV9.9fO69FzCD468i2DVlPVDlDd5z7x6bfVBqojZlWLOhPw" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org1.example.com"]
}'
加入通道channelproduce
curl -s -X POST \
http://localhost:4000/channels/channelproduce/peers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA0NjUsInVzZXJuYW1lIjoiSmlhIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MDU1Nzg0NjV9.9fO69FzCD468i2DVlPVDlDd5z7x6bfVBqojZlWLOhPw" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org1.example.com","peer1.org1.example.com"]
}'
更新锚节点
为通道channelmain 中组织一更新锚节点
curl -s -X POST \
http://localhost:4000/channels/channelmain/anchorpeers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA0NjUsInVzZXJuYW1lIjoiSmlhIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MDU1Nzg0NjV9.9fO69FzCD468i2DVlPVDlDd5z7x6bfVBqojZlWLOhPw"\
-H "content-type: application/json" \
-d '{
"configUpdatePath":"../artifacts/channel/mainchannelanchors/Org1MSPanchors.tx"
}'
为通道channelproduce中组织一更新锚节点
curl -s -X POST \
http://localhost:4000/channels/channelproduce/anchorpeers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA0NjUsInVzZXJuYW1lIjoiSmlhIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MDU1Nzg0NjV9.9fO69FzCD468i2DVlPVDlDd5z7x6bfVBqojZlWLOhPw"\
-H "content-type: application/json" \
-d '{
"configUpdatePath":"../artifacts/channel/producechannelanchors/Org1MSPanchors.tx"
}'
2 对org2进行操作
注册新的用户 Tim ,获取对组织二节点进行操作的Token 值
curl -s -X POST http://localhost:4000/users -H "content-type: application/x-www-form-urlencoded" -d 'username=Tim&orgName=Org2'
获取Token值
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA1NTEsInVzZXJuYW1lIjoiSmliIiwib3JnTmFtZSI6Ik9yZzIiLCJpYXQiOjE2MDU1Nzg1NTF9.pr8xobpX1uYsaSfkb2y97Ip9ioNECiaHzFjykhJmENA
创建通道channelprocess
curl -s -X POST \
http://localhost:4000/channels \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA1NTEsInVzZXJuYW1lIjoiSmliIiwib3JnTmFtZSI6Ik9yZzIiLCJpYXQiOjE2MDU1Nzg1NTF9.pr8xobpX1uYsaSfkb2y97Ip9ioNECiaHzFjykhJmENA"\
-H "content-type: application/json" \
-d '{
"channelName":"channelprocess",
"channelConfigPath":"../artifacts/channel/channelprocess.tx"
}'
加入通道channelmain
curl -s -X POST \
http://localhost:4000/channels/channelmain/peers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA1NTEsInVzZXJuYW1lIjoiSmliIiwib3JnTmFtZSI6Ik9yZzIiLCJpYXQiOjE2MDU1Nzg1NTF9.pr8xobpX1uYsaSfkb2y97Ip9ioNECiaHzFjykhJmENA" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org2.example.com"]
}'
加入通道channelprocess
curl -s -X POST \
http://localhost:4000/channels/channelprocess/peers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA1NTEsInVzZXJuYW1lIjoiSmliIiwib3JnTmFtZSI6Ik9yZzIiLCJpYXQiOjE2MDU1Nzg1NTF9.pr8xobpX1uYsaSfkb2y97Ip9ioNECiaHzFjykhJmENA" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org2.example.com","peer1.org2.example.com"]
}'
更新锚节点
为通道channelmain 中组织二更新锚节点
curl -s -X POST \
http://localhost:4000/channels/channelmain/anchorpeers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA1NTEsInVzZXJuYW1lIjoiSmliIiwib3JnTmFtZSI6Ik9yZzIiLCJpYXQiOjE2MDU1Nzg1NTF9.pr8xobpX1uYsaSfkb2y97Ip9ioNECiaHzFjykhJmENA"\
-H "content-type: application/json" \
-d '{
"configUpdatePath":"../artifacts/channel/mainchannelanchors/Org2MSPanchors.tx"
}'
为通道channelprocess中组织二更新锚节点
curl -s -X POST \
http://localhost:4000/channels/channelprocess/anchorpeers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA1NTEsInVzZXJuYW1lIjoiSmliIiwib3JnTmFtZSI6Ik9yZzIiLCJpYXQiOjE2MDU1Nzg1NTF9.pr8xobpX1uYsaSfkb2y97Ip9ioNECiaHzFjykhJmENA"\
-H "content-type: application/json" \
-d '{
"configUpdatePath":"../artifacts/channel/processchannelanchors/Org2MSPanchors.tx"
}'
3对org3进行操作
注册新的用户 Lim ,获取对组织三节点进行操作的Token 值
curl -s -X POST http://localhost:4000/users -H "content-type: application/x-www-form-urlencoded" -d 'username=Lim&orgName=Org3'
获取Token值
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA3MzEsInVzZXJuYW1lIjoiSmljIiwib3JnTmFtZSI6Ik9yZzMiLCJpYXQiOjE2MDU1Nzg3MzF9.xlI4VC09EKQ6XtN6_K-xcZDfskyCn7HE_XVfK0WUqGE
创建通道channellogistics
curl -s -X POST \
http://localhost:4000/channels \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA3MzEsInVzZXJuYW1lIjoiSmljIiwib3JnTmFtZSI6Ik9yZzMiLCJpYXQiOjE2MDU1Nzg3MzF9.xlI4VC09EKQ6XtN6_K-xcZDfskyCn7HE_XVfK0WUqGE"\
-H "content-type: application/json" \
-d '{
"channelName":"channellogistics",
"channelConfigPath":"../artifacts/channel/channellogistics.tx"
}'
加入通道channelmain
curl -s -X POST \
http://localhost:4000/channels/channelmain/peers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA3MzEsInVzZXJuYW1lIjoiSmljIiwib3JnTmFtZSI6Ik9yZzMiLCJpYXQiOjE2MDU1Nzg3MzF9.xlI4VC09EKQ6XtN6_K-xcZDfskyCn7HE_XVfK0WUqGE" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org3.example.com"]
}'
加入通道channellogistics
curl -s -X POST \
http://localhost:4000/channels/channellogistics/peers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA3MzEsInVzZXJuYW1lIjoiSmljIiwib3JnTmFtZSI6Ik9yZzMiLCJpYXQiOjE2MDU1Nzg3MzF9.xlI4VC09EKQ6XtN6_K-xcZDfskyCn7HE_XVfK0WUqGE" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org3.example.com","peer1.org3.example.com"]
}'
更新锚节点
为通道channelmain 中组织三更新锚节点
curl -s -X POST \
http://localhost:4000/channels/channelmain/anchorpeers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA3MzEsInVzZXJuYW1lIjoiSmljIiwib3JnTmFtZSI6Ik9yZzMiLCJpYXQiOjE2MDU1Nzg3MzF9.xlI4VC09EKQ6XtN6_K-xcZDfskyCn7HE_XVfK0WUqGE"\
-H "content-type: application/json" \
-d '{
"configUpdatePath":"../artifacts/channel/mainchannelanchors/Org3MSPanchors.tx"
}'
为通道channellogistics中组织三更新锚节点
curl -s -X POST \
http://localhost:4000/channels/channellogistics/anchorpeers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA3MzEsInVzZXJuYW1lIjoiSmljIiwib3JnTmFtZSI6Ik9yZzMiLCJpYXQiOjE2MDU1Nzg3MzF9.xlI4VC09EKQ6XtN6_K-xcZDfskyCn7HE_XVfK0WUqGE"\
-H "content-type: application/json" \
-d '{
"configUpdatePath":"../artifacts/channel/logisticschannelanchors/Org3MSPanchors.tx"
}'
4对org4进行操作
注册新的用户 Kim ,获取对组织四节点进行操作的Token 值
curl -s -X POST http://localhost:4000/users -H "content-type: application/x-www-form-urlencoded" -d 'username=Kim&orgName=Org4'
获取Token值
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA4NTYsInVzZXJuYW1lIjoiSmlkIiwib3JnTmFtZSI6Ik9yZzQiLCJpYXQiOjE2MDU1Nzg4NTZ9.N6LtVzaovcceA6TVnn-ZTDE3Yy_ZmU3x0O7yTZijElA
加入通道channelmain
curl -s -X POST \
http://localhost:4000/channels/channelmain/peers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA4NTYsInVzZXJuYW1lIjoiSmlkIiwib3JnTmFtZSI6Ik9yZzQiLCJpYXQiOjE2MDU1Nzg4NTZ9.N6LtVzaovcceA6TVnn-ZTDE3Yy_ZmU3x0O7yTZijElA" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org4.example.com","peer1.org4.example.com"]
}'
更新锚节点
为通道channelmain 中组织四更新锚节点
curl -s -X POST \
http://localhost:4000/channels/channelmain/anchorpeers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA4NTYsInVzZXJuYW1lIjoiSmlkIiwib3JnTmFtZSI6Ik9yZzQiLCJpYXQiOjE2MDU1Nzg4NTZ9.N6LtVzaovcceA6TVnn-ZTDE3Yy_ZmU3x0O7yTZijElA"\
-H "content-type: application/json" \
-d '{
"configUpdatePath":"../artifacts/channel/mainchannelanchors/Org4MSPanchors.tx"
}'
5对org5进行操作
注册新的用户 Lim ,获取对组织五节点进行操作的Token 值
curl -s -X POST http://localhost:4000/users -H "content-type: application/x-www-form-urlencoded" -d 'username=Lim&orgName=Org5'
获取Token值
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzEwNDIsInVzZXJuYW1lIjoiSmllIiwib3JnTmFtZSI6Ik9yZzUiLCJpYXQiOjE2MDU1NzkwNDJ9.mpLxaKx4J3keyt8juGs5scp6pT-vIYu_GqBpOp8Qn10
加入通道channelmain
curl -s -X POST \
http://localhost:4000/channels/channelmain/peers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzEwNDIsInVzZXJuYW1lIjoiSmllIiwib3JnTmFtZSI6Ik9yZzUiLCJpYXQiOjE2MDU1NzkwNDJ9.mpLxaKx4J3keyt8juGs5scp6pT-vIYu_GqBpOp8Qn10" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org5.example.com","peer1.org5.example.com"]
}'
更新锚节点
为通道channelmain 中组织五更新锚节点
curl -s -X POST \
http://localhost:4000/channels/channelmain/anchorpeers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzEwNDIsInVzZXJuYW1lIjoiSmllIiwib3JnTmFtZSI6Ik9yZzUiLCJpYXQiOjE2MDU1NzkwNDJ9.mpLxaKx4J3keyt8juGs5scp6pT-vIYu_GqBpOp8Qn10"\
-H "content-type: application/json" \
-d '{
"configUpdatePath":"../artifacts/channel/mainchannelanchors/Org5MSPanchors.tx"
}'
安装链码
producepub 安装在 peer0.org1.example.com、peer1.org1.example.com
curl -s -X POST \
http://localhost:4000/chaincodes \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA0NjUsInVzZXJuYW1lIjoiSmlhIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MDU1Nzg0NjV9.9fO69FzCD468i2DVlPVDlDd5z7x6bfVBqojZlWLOhPw" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org1.example.com","peer1.org1.example.com"],
"chaincodeName":"producepub",
"chaincodePath":"github.com/produce/producepub",
"chaincodeType": "golang",
"chaincodeVersion":"v0"
}'
实例化链码
curl -s -X POST \
http://localhost:4000/channels/channelproduce/chaincodes \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA0NjUsInVzZXJuYW1lIjoiSmlhIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MDU1Nzg0NjV9.9fO69FzCD468i2DVlPVDlDd5z7x6bfVBqojZlWLOhPw" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org1.example.com"],
"chaincodeName":"producepub",
"chaincodeVersion":"v0",
"chaincodeType": "golang",
"args":["init"]
}'
执行addTraceinfo
curl -s -X POST \
http://localhost:4000/channels/channelproduce/chaincodes/producepub \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA0NjUsInVzZXJuYW1lIjoiSmlhIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MDU1Nzg0NjV9.9fO69FzCD468i2DVlPVDlDd5z7x6bfVBqojZlWLOhPw" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org1.example.com"],
"fcn":"addTraceinfo",
"args":["1","111","corn,yhj,2020/11/9,plant"]
}'
执行readTraceinfo(curl的查询操作)
curl -s -X GET \
"http://localhost:4000/channels/channelproduce/chaincodes/producepub?peer=peer0.org1.example.com&fcn=readTraceinfo&args=%5B%221%22%5D" \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA0NjUsInVzZXJuYW1lIjoiSmlhIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MDU1Nzg0NjV9.9fO69FzCD468i2DVlPVDlDd5z7x6bfVBqojZlWLOhPw" \
-H "content-type: application/json"
执行queryTraceinfoByBatchNum
curl -s -X GET \
"http://localhost:4000/channels/channelproduce/chaincodes/producepub?peer=peer0.org1.example.com&fcn=queryTraceinfoByBatchNum&args=%5B%22111%22%5D" \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA0NjUsInVzZXJuYW1lIjoiSmlhIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MDU1Nzg0NjV9.9fO69FzCD468i2DVlPVDlDd5z7x6bfVBqojZlWLOhPw" \
-H "content-type: application/json"
producepri 安装在 peer0.org1.example.com 、peer1.org1.example.com
curl -s -X POST \
http://localhost:4000/chaincodes \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA0NjUsInVzZXJuYW1lIjoiSmlhIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MDU1Nzg0NjV9.9fO69FzCD468i2DVlPVDlDd5z7x6bfVBqojZlWLOhPw" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org1.example.com","peer1.org1.example.com"],
"chaincodeName":"producepri",
"chaincodePath":"github.com/produce/producepri",
"chaincodeType": "golang",
"chaincodeVersion":"v0"
}'
实例化
curl -s -X POST \
http://localhost:4000/channels/channelproduce/chaincodes \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA0NjUsInVzZXJuYW1lIjoiSmlhIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MDU1Nzg0NjV9.9fO69FzCD468i2DVlPVDlDd5z7x6bfVBqojZlWLOhPw" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org1.example.com"],
"chaincodeName":"producepri",
"chaincodeVersion":"v0",
"chaincodeType": "golang",
"args":["init"]
}'
main安装在peer0.org1.example.com
curl -s -X POST \
http://localhost:4000/chaincodes \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA0NjUsInVzZXJuYW1lIjoiSmlhIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MDU1Nzg0NjV9.9fO69FzCD468i2DVlPVDlDd5z7x6bfVBqojZlWLOhPw" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org1.example.com"],
"chaincodeName":"main",
"chaincodePath":"github.com/main/main",
"chaincodeType": "golang",
"chaincodeVersion":"v0"
}'
实例化
curl -s -X POST \
http://localhost:4000/channels/channelmain/chaincodes \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA0NjUsInVzZXJuYW1lIjoiSmlhIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MDU1Nzg0NjV9.9fO69FzCD468i2DVlPVDlDd5z7x6bfVBqojZlWLOhPw" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org1.example.com"],
"chaincodeName":"main",
"chaincodeVersion":"v0",
"chaincodeType": "golang",
"args":["init"]
}'
processpub 安装在 peer0.org2.example.com 、peer1.org2.example.com
curl -s -X POST \
http://localhost:4000/chaincodes \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA1NTEsInVzZXJuYW1lIjoiSmliIiwib3JnTmFtZSI6Ik9yZzIiLCJpYXQiOjE2MDU1Nzg1NTF9.pr8xobpX1uYsaSfkb2y97Ip9ioNECiaHzFjykhJmENA" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org2.example.com","peer1.org2.example.com"],
"chaincodeName":"processpub",
"chaincodePath":"github.com/process/processpub",
"chaincodeType": "golang",
"chaincodeVersion":"v0"
}'
实例化链码
curl -s -X POST \
http://localhost:4000/channels/channelprocess/chaincodes \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA1NTEsInVzZXJuYW1lIjoiSmliIiwib3JnTmFtZSI6Ik9yZzIiLCJpYXQiOjE2MDU1Nzg1NTF9.pr8xobpX1uYsaSfkb2y97Ip9ioNECiaHzFjykhJmENA" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org2.example.com"],
"chaincodeName":"processpub",
"chaincodeVersion":"v0",
"chaincodeType": "golang",
"args":["init"]
}'
processpri 安装在 peer0.org2.example.com、peer1.org2.example.com
curl -s -X POST \
http://localhost:4000/chaincodes \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA1NTEsInVzZXJuYW1lIjoiSmliIiwib3JnTmFtZSI6Ik9yZzIiLCJpYXQiOjE2MDU1Nzg1NTF9.pr8xobpX1uYsaSfkb2y97Ip9ioNECiaHzFjykhJmENA" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org2.example.com","peer1.org2.example.com"],
"chaincodeName":"processpri",
"chaincodePath":"github.com/process/processpri",
"chaincodeType": "golang",
"chaincodeVersion":"v0"
}'
实例化:
curl -s -X POST \
http://localhost:4000/channels/channelprocess/chaincodes \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA1NTEsInVzZXJuYW1lIjoiSmliIiwib3JnTmFtZSI6Ik9yZzIiLCJpYXQiOjE2MDU1Nzg1NTF9.pr8xobpX1uYsaSfkb2y97Ip9ioNECiaHzFjykhJmENA" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org2.example.com"],
"chaincodeName":"processpri",
"chaincodeVersion":"v0",
"chaincodeType": "golang",
"args":["init"]
}'
main安装在peer0.org2.example.com
curl -s -X POST \
http://localhost:4000/chaincodes \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA1NTEsInVzZXJuYW1lIjoiSmliIiwib3JnTmFtZSI6Ik9yZzIiLCJpYXQiOjE2MDU1Nzg1NTF9.pr8xobpX1uYsaSfkb2y97Ip9ioNECiaHzFjykhJmENA" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org2.example.com"],
"chaincodeName":"main",
"chaincodePath":"github.com/main/main",
"chaincodeType": "golang",
"chaincodeVersion":"v0"
}'
执行addTraceinfo
curl -s -X POST \
http://localhost:4000/channels/channelprocess/chaincodes/processpub \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA1NTEsInVzZXJuYW1lIjoiSmliIiwib3JnTmFtZSI6Ik9yZzIiLCJpYXQiOjE2MDU1Nzg1NTF9.pr8xobpX1uYsaSfkb2y97Ip9ioNECiaHzFjykhJmENA" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org2.example.com"],
"fcn":"addTraceinfo",
"args":["00","000","corn,yhj,2020/11/9,plant"]
}'
执行queryTraceinfoByBatchNum
curl -s -X GET \
"http://localhost:4000/channels/channelprocess/chaincodes/processpub?peer=peer0.org2.example.com&fcn=queryTraceinfoByBatchNum&args=%5B%22111%22%5D" \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA1NTEsInVzZXJuYW1lIjoiSmliIiwib3JnTmFtZSI6Ik9yZzIiLCJpYXQiOjE2MDU1Nzg1NTF9.pr8xobpX1uYsaSfkb2y97Ip9ioNECiaHzFjykhJmENA" \
-H "content-type: application/json"
logisticspub 安装在 peer0.org3.example.com、peer1.org3.example.com
curl -s -X POST \
http://localhost:4000/chaincodes \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA3MzEsInVzZXJuYW1lIjoiSmljIiwib3JnTmFtZSI6Ik9yZzMiLCJpYXQiOjE2MDU1Nzg3MzF9.xlI4VC09EKQ6XtN6_K-xcZDfskyCn7HE_XVfK0WUqGE" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org3.example.com","peer1.org3.example.com"],
"chaincodeName":"logisticspub",
"chaincodePath":"github.com/logistics/logisticspub",
"chaincodeType": "golang",
"chaincodeVersion":"v0"
}'
实例化:
curl -s -X POST \
http://localhost:4000/channels/channellogistics/chaincodes \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA3MzEsInVzZXJuYW1lIjoiSmljIiwib3JnTmFtZSI6Ik9yZzMiLCJpYXQiOjE2MDU1Nzg3MzF9.xlI4VC09EKQ6XtN6_K-xcZDfskyCn7HE_XVfK0WUqGE" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org3.example.com"],
"chaincodeName":"logisticspub",
"chaincodeVersion":"v0",
"chaincodeType": "golang",
"args":["init"]
}'
logisticspri 安装在 peer0.org3.example.com、peer1.org3.example.com
curl -s -X POST \
http://localhost:4000/chaincodes \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA3MzEsInVzZXJuYW1lIjoiSmljIiwib3JnTmFtZSI6Ik9yZzMiLCJpYXQiOjE2MDU1Nzg3MzF9.xlI4VC09EKQ6XtN6_K-xcZDfskyCn7HE_XVfK0WUqGE" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org3.example.com","peer1.org3.example.com"],
"chaincodeName":"logisticspri",
"chaincodePath":"github.com/logistics/logisticspub",
"chaincodeType": "golang",
"chaincodeVersion":"v0"
}'
实例化:
curl -s -X POST \
http://localhost:4000/channels/channellogistics/chaincodes \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA3MzEsInVzZXJuYW1lIjoiSmljIiwib3JnTmFtZSI6Ik9yZzMiLCJpYXQiOjE2MDU1Nzg3MzF9.xlI4VC09EKQ6XtN6_K-xcZDfskyCn7HE_XVfK0WUqGE" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org3.example.com"],
"chaincodeName":"logisticspri",
"chaincodeVersion":"v0",
"chaincodeType": "golang",
"args":["init"]
}'
main安装在peer0.org3.example.com
curl -s -X POST \
http://localhost:4000/chaincodes \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA3MzEsInVzZXJuYW1lIjoiSmljIiwib3JnTmFtZSI6Ik9yZzMiLCJpYXQiOjE2MDU1Nzg3MzF9.xlI4VC09EKQ6XtN6_K-xcZDfskyCn7HE_XVfK0WUqGE" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org3.example.com"],
"chaincodeName":"main",
"chaincodePath":"github.com/main/main",
"chaincodeType": "golang",
"chaincodeVersion":"v0"
}'
执行addTraceinfo
curl -s -X POST \
http://localhost:4000/channels/channellogistics/chaincodes/logisticspub \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA3MzEsInVzZXJuYW1lIjoiSmljIiwib3JnTmFtZSI6Ik9yZzMiLCJpYXQiOjE2MDU1Nzg3MzF9.xlI4VC09EKQ6XtN6_K-xcZDfskyCn7HE_XVfK0WUqGE" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org3.example.com"],
"fcn":"addTraceinfo",
"args":["00","000","corn,yhj,2020/11/9,plant"]
}'
执行queryTraceinfoByBatchNum
curl -s -X GET \
"http://localhost:4000/channels/channellogistics/chaincodes/logisticspub?peer=peer0.org3.example.com&fcn=queryTraceinfoByBatchNum&args=%5B%22111%22%5D" \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA3MzEsInVzZXJuYW1lIjoiSmljIiwib3JnTmFtZSI6Ik9yZzMiLCJpYXQiOjE2MDU1Nzg3MzF9.xlI4VC09EKQ6XtN6_K-xcZDfskyCn7HE_XVfK0WUqGE" \
-H "content-type: application/json"
main安装在peer0.org4.example.com、peer1.org4.example.com
curl -s -X POST \
http://localhost:4000/chaincodes \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA4NTYsInVzZXJuYW1lIjoiSmlkIiwib3JnTmFtZSI6Ik9yZzQiLCJpYXQiOjE2MDU1Nzg4NTZ9.N6LtVzaovcceA6TVnn-ZTDE3Yy_ZmU3x0O7yTZijElA" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org4.example.com","peer1.org4.example.com"],
"chaincodeName":"main",
"chaincodePath":"github.com/main/main",
"chaincodeType": "golang",
"chaincodeVersion":"v0"
}'
执行queryTraceinfoByBatchNum
curl -s -X GET \
"http://localhost:4000/channels/channelmain/chaincodes/main?peer=peer0.org4.example.com&fcn=queryTraceinfoByBatchNum&args=%5B%22111%22%5D" \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzA4NTYsInVzZXJuYW1lIjoiSmlkIiwib3JnTmFtZSI6Ik9yZzQiLCJpYXQiOjE2MDU1Nzg4NTZ9.N6LtVzaovcceA6TVnn-ZTDE3Yy_ZmU3x0O7yTZijElA" \
-H "content-type: application/json"
main安装在peer0.org5.example.com、peer1.org5.example.com
curl -s -X POST \
http://localhost:4000/chaincodes \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDgxNzEwNDIsInVzZXJuYW1lIjoiSmllIiwib3JnTmFtZSI6Ik9yZzUiLCJpYXQiOjE2MDU1NzkwNDJ9.mpLxaKx4J3keyt8juGs5scp6pT-vIYu_GqBpOp8Qn10" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org5.example.com","peer1.org5.example.com"],
"chaincodeName":"main",
"chaincodePath":"github.com/main/main",
"chaincodeType": "golang",
"chaincodeVersion":"v0"
}'
介绍Hyperledger fabric的PPT(52页)
密码学笔记
区块链知识体系简介
部署 ipfs 网络 对接联盟链网络
Hyperledger fabric网络(多共识 多版本 多数据库 ca ) 封装接口sdk
Hyperledger Caliper 测试(多组织 多节点 多共识)
区块链浏览器
联系We-chat V : 18852897525