Fabric-小例子

本文通过一个简单的例子介绍了如何使用Golang编写Fabric链码,详细讲解了链码结构、依赖引入、Init和Invoke函数的声明,以及如何在本地测试网络中启动和编译链码。同时,提到了7052端口的作用,以及在CLI容器中安装、实例化链码和查询汽车信息的操作步骤。
摘要由CSDN通过智能技术生成

汽车信息记录

汽车信息的链码结构
1、引入依赖包

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"strconv"

	"github.com/hyperledger/fabric/core/chaincode/shim"
	sc "github.com/hyperledger/fabric/protos/peer"
)

2、声明一个结构体

type SimpleChaincode struct {
   
}

3、声明Init() 和 Invoke() 函数

// 在链码初始化过程中调用 Init 来数据,此处不做任何操作
func (s *SmartContract) Init(APIstub shim.ChaincodeStubInterface) sc.Response {
   
	return shim.Success(nil)
}

// query 和 invoke 时被自动调用
func (s *SmartContract) Invoke(APIstub shim.ChaincodeStubInterface) sc.Response {
   

	// 解析用户调用链码传递的函数名及参数
	function, args := APIstub.GetFunctionAndParameters()
	
	// 调用不同的函数
	if function == "queryCar" {
    
		return s.queryCar(APIstub, args)   
	} else if function == "initLedger" {
   
		return s.initLedger(APIstub)
	} else if function == "createCar" {
   
		return s.createCar(APIstub, args)
	} else if function == "queryAllCars" {
   
		return s.queryAllCars(APIstub)
	} else if function == "changeCarOwner" {
   
		return s.changeCarOwner(APIstub, args)
	}

	return shim.Error("Invalid Smart Contract function name.")
}

4、对Invoke() 函数中的各个函数就是进行声明

// 初始化账本数据
func (s *SmartContract) initLedger(APIstub shim.ChaincodeStubInterface) sc.Response {
   
	cars := []Car{
   
		Car{
   Make: "Toyota", Model: "Prius", Colour: "blue", Owner: "Tomoko"},
		Car{
   Make: "Ford", Model: "Mustang", Colour: "red", Owner: "Brad"},
		Car{
   Make: "Hyundai", Model: "Tucson", Colour: "green", Owner: "Jin Soo"},
		Car{
   Make: "Volkswagen", Model: "Passat", Colour: "yellow", Owner: "Max"},
		Car{
   Make: "Tesla", Model: "S", Colour: "black",</
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值