開發步奏:
1.創建教育聯盟
2.區塊鏈服務平台自動生成通道id
3.區塊鏈網絡服務人員通過命令行在區塊鏈網絡中創建對應通道
4.創建相關教育組織
5.邀請相關組織加入聯盟
6.區塊鏈網絡管理人員通過命令行在區塊鏈網絡創建組織並加入通道
7.教育組織相關開發人員通過區塊鏈網絡進行系統開發
實現功能:
聯盟管理
組織管理
聯盟邀請
證書下載
實現聯盟相關組織簽名同意機制、實現智能合約在線上傳
其他需求:
1、把區塊鏈顯示儀表盤的接口實現換成Java的(目前:node.js)
2、Java查看區塊鏈信息的api接口 ------------- blockWalker
借鑒騰訊區塊鏈平台搭建思想
①創建聯盟
②創建網絡(選擇區塊鏈引擎[Fabric、Bcos、TrustSQL])
=======================> ③選擇區塊鏈類型:私有鏈、公有鏈 =====> 創建對應channel
④設置網絡信息 ------> 邀請組織(綁定channel中的org、peer)
智能合約部分
運行在docker容器里面,如果需要調試只能通過打日志log方式
一個合約,就是一個用戶用go/java/ node編寫的文件(包括:字符,方法,返回信息)
在區塊中 (chaincode目錄下),一個合約只能對應一個目錄
用戶上傳的智能合約都是存放在hyperledger安裝的以下目錄:(注:src目錄結構之前的是用戶自定義安裝目錄結構)
/home/ubuntu/gopath/src/github.com/hyperledger/fabric-samples/chaincode
下面目錄有用go/java/node語言開發智能合約的代碼
下面網址可以查看channel跟存入的數據等(一個合約跟一個channel會生成一個庫)
一個channel下可以安裝多個合約,每個合約都會生成一個數據庫
安裝合約
命令行代碼
解釋:
-n : 合約名稱
-v:合約版本
-p:合約所在目錄
說明:
合約所在目錄從github.com開始,因為前面會自動從根目錄(opt)目錄層拼上路徑
安裝后,狀態查看
實例化合約
實例化操作是會存到區塊鏈上的,需要指定是在哪個channel里面上傳區塊。
指令:
說明:
-n、-v跟上面指令相同
-o:指定order的節點 //上塊操作都必須指定order節點
--tls --cafile:指定tls證書 //保證數據的安全性
-c:執行方法名參數 //-c '{"Args":["init"]}'
-P:指定倍數策略 //上面指令只裝一台節點
實例化后,狀態查看
實例化完整之后,可以觸發合約
往合約里面上傳一條數據【invoke命令】
查詢剛剛上傳的數據【調用自定義的合約方法】
調用自定義的query方法,查詢結果
通過create database查看上傳的數據
合約代碼調試(log打印方式)
升級合約
情景:增加新功能、有新的優化等
注意:不需要再實例化
1、修改、
2、重新安裝當前合約(版本更改2.0)
3、調用升級指令(會在區塊鏈上生成一個區塊)
a、升級之前先查詢當前channel區塊信息
結果:高度 = 9
b、執行升級指令
c、升級之后再查詢一次channel區塊信息,看height增加了沒有
注意:更新之后,調用原來合約的查詢方法,得到的都是最新數據,原來的版本數據作廢
合約里對私有數據(字段)處理【只能指定人查看】
使用private data
1、修改合約代碼
調用api存儲和取值時,換成保存私有數據的api
2、定義一個json
說明:
name:私有字段名稱
policy:策略(允許哪些組織機構訪問)
requiredPeerCount:除了倍數節點以外,哪些節點還可以作為私有數據的存儲備份
maxPeerCount:私有數據備份的最大數量
blockToLive:私有數據存儲上鏈之后,增加?個塊,當前私有數據消失(0:永遠不消失)
memberOnlyRead:只有當前定義的組織機構成員可以訪問
3、指定實例化合約的路徑
說明:所有的策略都是在實例化的時候指定的
channel部分
創建channel
方法一、服務器命令行創建
方法二、Java sdk 創建
1、在服務器生成tlx證書文件
命令: configtxgen -profile TwoOrgsChannel -outputCreateChannelTx channel-artifacts/sunsheen.tx -channelID sunsheen
說明:紅色部分是證書名
在first-network目錄下面執行當前命令
查看當前生成的證書
2、將證書文件下載到本地
channel-artifacts目錄下....
3、編寫userContext類;編寫FabricClient類;測試
FabricClient:
上面獲取channel方法需要修改
測試:
優化:
先創建channel,返回后再加入peer跟order ...
查看新創建的channel
問題點:
1、docker沒有正常啟動 ---- > docker ps
· 命令查看,重新啟動
生成tx證書
configtxgen -profile TwoOrgsChannel -outputCreateChannelTx channel-artifacts/ws.tx -channelID ws
configtxgen -profile TwoOrgsChannel -outputCreateChannelTx channel-artifacts/sunsheen.tx -channelID sunsheen
通過生成的證書創建channel
/home/ubuntu/gopath/src/github.com/hyperledger/fabric-samples/first-network/fabric-ca-server/ca-cert.pem
/home/ubuntu/gopath/src/github.com/hyperledger/fabric-samples/first-network/crypto-config/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem
/home/ubuntu/gopath/src/github.com/hyperledger/fabric-samples/first-network/crypto-config/ordererOrganizations/example.com/ca/ca.example.com-cert.pem
/home/ubuntu/gopath/src/github.com/hyperledger/fabric-samples/first-network/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
/home/ubuntu/gopath/src/github.com/hyperledger/fabric-samples/first-network/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/signcerts/orderer.example.com-cert.pem
peer channel create -o orderer.example.com:7050 -c testChannel -f ./channel-artifacts/testChannel.tx --tls --cafile /home/ubuntu/gopath/src/github.com/hyperledger/fabric-samples/first-network/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
peer channel fetch config config_block.pb -o orderer.example.com:7050 -c testchainid
ideal:
阿里有區塊鏈API,下下來,直接調用。
https://help.aliyun.com/document_detail/141372.html?spm=a2c4g.11186623.6.606.281c379evInTeZ
鏈碼里不寫業務 不同的業務控制接口