1. 创建链码

首先,需要创建一个名为helloworld的链码,用于实现第一个helloworld示例。链码可以使用任何开发语言编写,如Go、JavaScript、Java等,本文以Go语言为例,编写如下helloworld.go文件:

package main

import (
	"fmt"
	
	"github.com/hyperledger/fabric/core/chaincode/shim"
	"github.com/hyperledger/fabric/protos/peer"
)

// HelloWorldChaincode example simple Chaincode implementation
type HelloWorldChaincode struct {
}

// Init is a no-op
func (t *HelloWorldChaincode) Init(stub shim.ChaincodeStubInterface) peer.Response {
	return shim.Success(nil)
}

// Invoke is a no-op
func (t *HelloWorldChaincode) Invoke(stub shim.ChaincodeStubInterface) peer.Response {
	return shim.Success(nil)
}

func main() {
	err := shim.Start(new(HelloWorldChaincode))
	if err != nil {
		fmt.Printf("Error starting HelloWorldChaincode: %s", err)
	}
}

2. 编译链码

接着,需要使用Hyperledger Fabric的chaincode构建工具编译helloworld.go文件,生成helloworld.go文件,命令如下:

docker exec cli peer chaincode package helloworld.tar.gz --lang go --label helloworld_1.0 --path /opt/gopath/src/github.com/chaincode/helloworld/

3. 安装链码

安装链码,命令如下:

docker exec cli peer chaincode install helloworld.tar.gz 
docker exec cli peer chaincode instantiate -n helloworld -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -C mychannel
docker exec cli peer chaincode invoke -n helloworld -c '{"Args":["invoke","a","b","10"]}' -C mychannel
docker exec cli peer chaincode query -n helloworld -c '{"Args":["query","a"]}' -C mychannel

4. 查看helloworld结果

最后,就可以查看helloworld的结果了,由于上面的操作中a的值被更新为90,因此查询结果应该为90。