創建一個簡易智能合約並部署
- 編寫一個簡易的智能合約
使用goland創建一個chaincodePorject
編寫代碼如下:
package main
import (
"fmt"
"github.com/hyperledger/fabric/core/chaincode/shim"
pb "github.com/hyperledger/fabric/protos/peer"
)
//定義一個結構體,作爲chaincode的主對象,可以是任何符合GO語言規範的命名方式
type simplechaincode struct {
}
/*
系統初始化方法,再部署chaincode的過程中當執行命令的時候會調用該方法,即實例化鏈碼的時候調用該方法
*/
func (t*simplechaincode) Init(stub shim.ChaincodeStubInterface) pb.Response {
fmt.Println("<<<<==========success init it is view in docker======================>>>>")
return shim.Success([]byte("success init"))
}
/*
主業務邏輯,在執行命令的時候系統會調用該方法並傳入相關的參數,注意“invoke"之後,的參數是需要傳入的參數
*/
func (t*simplechaincode) Invoke (stub shim.ChaincodeStubInterface) pb.Response {
fmt.Println("<<<<==================== 1.success it is view in docker ============>>>>")
return shim.Success([]byte("success invoke"))
}
func main() {
err := shim.Start(new(simplechaincode))
if err != nil {
fmt.Printf("Error starting simple chaincode: %s",err)
}
}
**注意:**如果是在windows環境下開發,運行環境在linux環境下,需要將github.com/hyperledger/fabric
複製到項目的src目錄下
2. 部署
- 將編寫完成的chaincodeProject拷貝
/opt/gopath/src/github.com/hyperledger/fabric/singlepeer/chaincoode/go
目錄下 - 按照單機單節點的啓動方式啓動fabric
注意:如果沒有將編寫完成的chaincode放在以上示例的目錄下,需要在docker-compose-cli.yaml
文件的cli
配置下將chaincode所在的路徑放在下圖中框選的位置,在開啓容器時將chaincode加載到docker容器中
- "/opt/gopath/src/github.com/study/chaincodeProject:/opt/gopath/src/github.com/study/chaincodeProject"
這段配置,以冒號爲界,前段是chaincode在本地的路徑,後段是在docker容器中的位置
注:配置文件由代碼自動生成,雖然有引號,但是不影響其功能
參考:
- 博客園博主靈龍關於Fabric 1.4 單機單節點部署(solo)的實例:https://www.cnblogs.com/llongst/p/9571321.html
- chaincode代碼參考《區塊鏈開發實戰-Hyperledger Fabric關鍵技術與案例分析》第七章