channelmain peer0.org5、peer1.org5、peer0.org1、peer0.org2、peer0.org3、peer0.org4
channelproduce peer0.org1、peer1.org1、peer2.org1、peer3.org1
channelprocess peer0.org2、peer1.org2、peer2.org2、peer3.org2
channellogistics peer0.org3、peer1.or3、peer2.org3、peer3.org3
channelsales peer0.or4、peer1.org4、peer2.org4、peer3.org4
1 组织一的节点位于channelmain和 channelproduce中,使用组织一的Token创建这两个通道,所有节点加入channelproduce中更新组织一的锚节点,peer0.org1加入chanelmain中更新组织一的锚节点
2 组织二的节点位于channelprocess和channelmain,使用组织二的Token创建channelprocecc,所有节点加入通道channelprocess后更新组织二锚节点,peer0.org2加入channelmain后更新组织二的锚节点
3 组织三的节点位于channellogistics和channelmain,使用组织三的Token创建channellogistics,所有节点加入通道channellogistics后更新组织三锚节点,peer0.org3加入channelmain后更新组织三的锚节点
4 组织四的节点位于channelsales和channelmain,使用组织四的Token创建channellsales,所有节点加入通道channelsales后更新组织四锚节点,peer0.org4加入channelmain后更新组织三的锚节点
5 组织五的节点位于channelmain,使用组织五的Token所有节点加入通道channelmain后更新组织五锚节点
一养殖链 channelproduce 组织1
生成组织一Token
curl -s -X POST http://localhost:4000/users -H "content-type: application/x-www-form-urlencoded" -d 'username=prod_user_3&orgName=Org1'
Token值
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk0OTIzLCJ1c2VybmFtZSI6InByb2RfdXNlcl8zIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MTgyOTQ5MjR9.zEOEdPhOj4CRSoj6ppVmge_7N85F23n16LqpSzJDT54
创建通道channelmain
curl -s -X POST \
http://localhost:4000/channels \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjFlKzMyLCJ1c2VybmFtZSI6InByb2RfdXNlcl8yIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MTgyODMzMTB9.2LCU3ZwVRShBIVVvgIJBuEpfFo6V5AGn_LAdgaJUYCo"\
-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.eyJleHAiOjFlKzMyLCJ1c2VybmFtZSI6InByb2RfdXNlcl8yIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MTgyODMzMTB9.2LCU3ZwVRShBIVVvgIJBuEpfFo6V5AGn_LAdgaJUYCo"\
-H "content-type: application/json" \
-d '{
"channelName":"channelproduce",
"channelConfigPath":"../artifacts/channel/channelproduce.tx"
}'
peer0.org1加入通道channelmain
curl -s -X POST \
http://localhost:4000/channels/channelmain/peers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjFlKzMyLCJ1c2VybmFtZSI6InByb2RfdXNlcl8yIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MTgyODMzMTB9.2LCU3ZwVRShBIVVvgIJBuEpfFo6V5AGn_LAdgaJUYCo" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org1.example.com"]
}'
指定channelmain中组织一的锚节点
curl -s -X POST \
http://localhost:4000/channels/channelmain/anchorpeers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk0OTIzLCJ1c2VybmFtZSI6InByb2RfdXNlcl8zIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MTgyOTQ5MjR9.zEOEdPhOj4CRSoj6ppVmge_7N85F23n16LqpSzJDT54"\
-H "content-type: application/json" \
-d '{
"configUpdatePath":"../artifacts/channel/mainchannelanchors/Org1MSPanchors.tx"
}'
所有节点(peer0 1 2 3)加入channelproduce
curl -s -X POST \
http://localhost:4000/channels/channelproduce/peers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk0OTIzLCJ1c2VybmFtZSI6InByb2RfdXNlcl8zIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MTgyOTQ5MjR9.zEOEdPhOj4CRSoj6ppVmge_7N85F23n16LqpSzJDT54" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org1.example.com","peer1.org1.example.com","peer2.org1.example.com","peer3.org1.example.com"]
}'
加入后指定channelprodece组织一锚节点
curl -s -X POST \
http://localhost:4000/channels/channelproduce/anchorpeers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk0OTIzLCJ1c2VybmFtZSI6InByb2RfdXNlcl8zIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MTgyOTQ5MjR9.zEOEdPhOj4CRSoj6ppVmge_7N85F23n16LqpSzJDT54"\
-H "content-type: application/json" \
-d '{
"configUpdatePath":"../artifacts/channel/producechannelanchors/Org1MSPanchors.tx"
}'
二 加工链 channelprocess 组织2
生成组织二Token
curl -s -X POST http://localhost:4000/users -H "content-type: application/x-www-form-urlencoded" -d 'username=proc_user_1&orgName=Org2'
Token值
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk1NTI5LCJ1c2VybmFtZSI6InByb2NfdXNlcl8xIiwib3JnTmFtZSI6Ik9yZzIiLCJpYXQiOjE2MTgyOTU1MzB9.wZfyNMigKN9uPo2XXiaJA-X0vPLX9k0vwaMtteTo9wA
创建通道channelproduce
curl -s -X POST \
http://localhost:4000/channels \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk1NTI5LCJ1c2VybmFtZSI6InByb2NfdXNlcl8xIiwib3JnTmFtZSI6Ik9yZzIiLCJpYXQiOjE2MTgyOTU1MzB9.wZfyNMigKN9uPo2XXiaJA-X0vPLX9k0vwaMtteTo9wA"\
-H "content-type: application/json" \
-d '{
"channelName":"channelprocess",
"channelConfigPath":"../artifacts/channel/channelprocess.tx"
}'
peer0.org2加入通道channelmain
curl -s -X POST \
http://localhost:4000/channels/channelmain/peers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk1NTI5LCJ1c2VybmFtZSI6InByb2NfdXNlcl8xIiwib3JnTmFtZSI6Ik9yZzIiLCJpYXQiOjE2MTgyOTU1MzB9.wZfyNMigKN9uPo2XXiaJA-X0vPLX9k0vwaMtteTo9wA" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org2.example.com"]
}'
指定channelmain中组织二的锚节点
curl -s -X POST \
http://localhost:4000/channels/channelmain/anchorpeers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk1NTI5LCJ1c2VybmFtZSI6InByb2NfdXNlcl8xIiwib3JnTmFtZSI6Ik9yZzIiLCJpYXQiOjE2MTgyOTU1MzB9.wZfyNMigKN9uPo2XXiaJA-X0vPLX9k0vwaMtteTo9wA"\
-H "content-type: application/json" \
-d '{
"configUpdatePath":"../artifacts/channel/mainchannelanchors/Org2MSPanchors.tx"
}'
所有节点(peer0 1 2 3)加入channelprocess
curl -s -X POST \
http://localhost:4000/channels/channelprocess/peers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk1NTI5LCJ1c2VybmFtZSI6InByb2NfdXNlcl8xIiwib3JnTmFtZSI6Ik9yZzIiLCJpYXQiOjE2MTgyOTU1MzB9.wZfyNMigKN9uPo2XXiaJA-X0vPLX9k0vwaMtteTo9wA" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org2.example.com","peer1.org2.example.com","peer2.org2.example.com","peer3.org2.example.com"]
}'
加入后指定channelprocess组织二锚节点
curl -s -X POST \
http://localhost:4000/channels/channelprocess/anchorpeers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk1NTI5LCJ1c2VybmFtZSI6InByb2NfdXNlcl8xIiwib3JnTmFtZSI6Ik9yZzIiLCJpYXQiOjE2MTgyOTU1MzB9.wZfyNMigKN9uPo2XXiaJA-X0vPLX9k0vwaMtteTo9wA"\
-H "content-type: application/json" \
-d '{
"configUpdatePath":"../artifacts/channel/processchannelanchors/Org2MSPanchors.tx"
}'
三物流链 channellogistics 组织3
生成组织三Token
curl -s -X POST http://localhost:4000/users -H "content-type: application/x-www-form-urlencoded" -d 'username=logis_user_1&orgName=Org3'
Token值
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk2NDE1LCJ1c2VybmFtZSI6ImxvZ2lzX3VzZXJfMSIsIm9yZ05hbWUiOiJPcmczIiwiaWF0IjoxNjE4Mjk2NDE2fQ.B-9Hvsr50J8KzVMUr1aVIj-e-kweuLgd-nZAFyqg0xc
创建通道channellogistics
curl -s -X POST \
http://localhost:4000/channels \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk2NDE1LCJ1c2VybmFtZSI6ImxvZ2lzX3VzZXJfMSIsIm9yZ05hbWUiOiJPcmczIiwiaWF0IjoxNjE4Mjk2NDE2fQ.B-9Hvsr50J8KzVMUr1aVIj-e-kweuLgd-nZAFyqg0xc"\
-H "content-type: application/json" \
-d '{
"channelName":"channellogistics",
"channelConfigPath":"../artifacts/channel/channellogistics.tx"
}'
peer0.org3加入通道channelmain
curl -s -X POST \
http://localhost:4000/channels/channelmain/peers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk2NDE1LCJ1c2VybmFtZSI6ImxvZ2lzX3VzZXJfMSIsIm9yZ05hbWUiOiJPcmczIiwiaWF0IjoxNjE4Mjk2NDE2fQ.B-9Hvsr50J8KzVMUr1aVIj-e-kweuLgd-nZAFyqg0xc" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org3.example.com"]
}'
指定channelmain中组织三的锚节点
curl -s -X POST \
http://localhost:4000/channels/channelmain/anchorpeers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk2NDE1LCJ1c2VybmFtZSI6ImxvZ2lzX3VzZXJfMSIsIm9yZ05hbWUiOiJPcmczIiwiaWF0IjoxNjE4Mjk2NDE2fQ.B-9Hvsr50J8KzVMUr1aVIj-e-kweuLgd-nZAFyqg0xc"\
-H "content-type: application/json" \
-d '{
"configUpdatePath":"../artifacts/channel/mainchannelanchors/Org3MSPanchors.tx"
}'
所有节点(peer0 1 2 3)加入channellogistics
curl -s -X POST \
http://localhost:4000/channels/channellogistics/peers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk2NDE1LCJ1c2VybmFtZSI6ImxvZ2lzX3VzZXJfMSIsIm9yZ05hbWUiOiJPcmczIiwiaWF0IjoxNjE4Mjk2NDE2fQ.B-9Hvsr50J8KzVMUr1aVIj-e-kweuLgd-nZAFyqg0xc" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org3.example.com","peer1.org3.example.com","peer2.org3.example.com","peer3.org3.example.com"]
}'
加入后指定channellogistics组织三锚节点
curl -s -X POST \
http://localhost:4000/channels/channellogistics/anchorpeers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk2NDE1LCJ1c2VybmFtZSI6ImxvZ2lzX3VzZXJfMSIsIm9yZ05hbWUiOiJPcmczIiwiaWF0IjoxNjE4Mjk2NDE2fQ.B-9Hvsr50J8KzVMUr1aVIj-e-kweuLgd-nZAFyqg0xc"\
-H "content-type: application/json" \
-d '{
"configUpdatePath":"../artifacts/channel/logisticschannelanchors/Org3MSPanchors.tx"
}'
四分销链 channelsales 组织4
生成组织四Token
curl -s -X POST http://localhost:4000/users -H "content-type: application/x-www-form-urlencoded" -d 'username=sales_user_1&orgName=Org4'
Token值
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk2Nzk0LCJ1c2VybmFtZSI6InNhbGVzX3VzZXJfMSIsIm9yZ05hbWUiOiJPcmc0IiwiaWF0IjoxNjE4Mjk2Nzk1fQ.yoRHktW9VpmwXU04hlmq8ahiBQTRTK7LMFu1v4ZPZgc
创建通道channelsales
curl -s -X POST \
http://localhost:4000/channels \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk2Nzk0LCJ1c2VybmFtZSI6InNhbGVzX3VzZXJfMSIsIm9yZ05hbWUiOiJPcmc0IiwiaWF0IjoxNjE4Mjk2Nzk1fQ.yoRHktW9VpmwXU04hlmq8ahiBQTRTK7LMFu1v4ZPZgc"\
-H "content-type: application/json" \
-d '{
"channelName":"channelsales",
"channelConfigPath":"../artifacts/channel/channelsales.tx"
}'
peer0.org4加入通道channelsales
curl -s -X POST \
http://localhost:4000/channels/channelmain/peers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk2Nzk0LCJ1c2VybmFtZSI6InNhbGVzX3VzZXJfMSIsIm9yZ05hbWUiOiJPcmc0IiwiaWF0IjoxNjE4Mjk2Nzk1fQ.yoRHktW9VpmwXU04hlmq8ahiBQTRTK7LMFu1v4ZPZgc" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org4.example.com"]
}'
指定channelmain中组织四的锚节点
curl -s -X POST \
http://localhost:4000/channels/channelmain/anchorpeers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk2Nzk0LCJ1c2VybmFtZSI6InNhbGVzX3VzZXJfMSIsIm9yZ05hbWUiOiJPcmc0IiwiaWF0IjoxNjE4Mjk2Nzk1fQ.yoRHktW9VpmwXU04hlmq8ahiBQTRTK7LMFu1v4ZPZgc"\
-H "content-type: application/json" \
-d '{
"configUpdatePath":"../artifacts/channel/mainchannelanchors/Org4MSPanchors.tx"
}'
所有节点(peer0 1 2 3)加入channelsales
curl -s -X POST \
http://localhost:4000/channels/channelsales/peers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk2Nzk0LCJ1c2VybmFtZSI6InNhbGVzX3VzZXJfMSIsIm9yZ05hbWUiOiJPcmc0IiwiaWF0IjoxNjE4Mjk2Nzk1fQ.yoRHktW9VpmwXU04hlmq8ahiBQTRTK7LMFu1v4ZPZgc" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org4.example.com","peer1.org4.example.com","peer2.org4.example.com","peer3.org4.example.com"]
}'
加入后指定channelsales组织四锚节点
curl -s -X POST \
http://localhost:4000/channels/channelsales/anchorpeers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk2Nzk0LCJ1c2VybmFtZSI6InNhbGVzX3VzZXJfMSIsIm9yZ05hbWUiOiJPcmc0IiwiaWF0IjoxNjE4Mjk2Nzk1fQ.yoRHktW9VpmwXU04hlmq8ahiBQTRTK7LMFu1v4ZPZgc"\
-H "content-type: application/json" \
-d '{
"configUpdatePath":"../artifacts/channel/saleschannelanchors/Org4MSPanchors.tx"
}'
五追溯链 channelmain 组织5
生成组织五Token
curl -s -X POST http://localhost:4000/users -H "content-type: application/x-www-form-urlencoded" -d 'username=trace_user_1&orgName=Org5'
Token值
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk3NTM2LCJ1c2VybmFtZSI6InRyYWNlX3VzZXJfMSIsIm9yZ05hbWUiOiJPcmc1IiwiaWF0IjoxNjE4Mjk3NTM3fQ.TFqVOp2LafLMRP_wNHuLW1n-aC778X_-UbNXrNiF8mg
所有节点(peer0 1 )加入channelmain
curl -s -X POST \
http://localhost:4000/channels/channelmain/peers \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk3NTM2LCJ1c2VybmFtZSI6InRyYWNlX3VzZXJfMSIsIm9yZ05hbWUiOiJPcmc1IiwiaWF0IjoxNjE4Mjk3NTM3fQ.TFqVOp2LafLMRP_wNHuLW1n-aC778X_-UbNXrNiF8mg" \
-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.eyJleHAiOjEwMDAxNjE4Mjk3NTM2LCJ1c2VybmFtZSI6InRyYWNlX3VzZXJfMSIsIm9yZ05hbWUiOiJPcmc1IiwiaWF0IjoxNjE4Mjk3NTM3fQ.TFqVOp2LafLMRP_wNHuLW1n-aC778X_-UbNXrNiF8mg"\
-H "content-type: application/json" \
-d '{
"configUpdatePath":"../artifacts/channel/mainchannelanchors/Org5MSPanchors.tx"
}'
关于通道的配置已经完成,接下来编写链码 实现业务逻辑
查询channelmain区块高度
curl -s -X GET \
"http://localhost:4000/channels/channelmain?peer=peer0.org1.example.com" \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk0OTIzLCJ1c2VybmFtZSI6InByb2RfdXNlcl8zIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MTgyOTQ5MjR9.zEOEdPhOj4CRSoj6ppVmge_7N85F23n16LqpSzJDT54" \
-H "content-type: application/json"
区块0 创世区块
区块1 为channelmain组织一更新锚节点
区块2 为channelmain组织二更新锚节点
区块3 为channelmain组织三更新锚节点
区块4 为channelmain组织四更新锚节点
区块5 为channelmain组织五更新锚节点
查询channelproduce区块高度
curl -s -X GET \
"http://localhost:4000/channels/channelproduce?peer=peer0.org1.example.com" \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk0OTIzLCJ1c2VybmFtZSI6InByb2RfdXNlcl8zIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MTgyOTQ5MjR9.zEOEdPhOj4CRSoj6ppVmge_7N85F23n16LqpSzJDT54" \
-H "content-type: application/json"
区块0 创世区块
区块1 为channelproduce组织一更新锚节点
通过区块高度查询数据:
curl -s -X GET \
"http://localhost:4000/channels/channelproduce/blocks/5?peer=peer0.org1.example.com" \
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAxNjE4Mjk0OTIzLCJ1c2VybmFtZSI6InByb2RfdXNlcl8zIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE2MTgyOTQ5MjR9.zEOEdPhOj4CRSoj6ppVmge_7N85F23n16LqpSzJDT54" \
-H "content-type: application/json"
介绍Hyperledger fabric的PPT(52页)
密码学笔记
区块链知识体系简介
部署 ipfs 网络 对接联盟链网络
Hyperledger fabric网络(多共识 多版本 多数据库 ca ) 封装接口sdk
Hyperledger Caliper 测试(多组织 多节点 多共识)
区块链浏览器
联系We-chat V : 18852897525