fabric智能合約簡易開發實例

創建一個簡易智能合約並部署

  1. 編寫一個簡易的智能合約
    使用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關鍵技術與案例分析》第七章
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章