Fabric链码常用API文档

Fabric链码API文档

一、Fabric-shim.ChaincodeInterface

  1. ChaincodeInterface
    在链码当中我们必须实现ChaincodeInterface接口中定义的方法,例如init()、invoke() 只有实现这些方法才不会报错,两个方法都会传入一个stub对象,init() 方法作为链码初始化或者升级时使用,可以在此方法中实现生成一些实例化的结构体,而invoke() 则是负责链码交互,执行一些业务逻辑,执行一些方法实现对账本中内容的增删改查。

  2. init
    Init 负责链码的初始化,以及链码的升级。具体调用方法如下,因方法过长,不过多赘述,将一些需要初始化的内容序列化保存至账本。

func (f FarmingChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response {
	//初始化一个企业以及一个企业的子账户 初始化两个场地 初始化两个资产
	//初始化一个子账户
	sub := SubAccount{
		Id:         "2001",
		Password:   "123456",
		Name:       "王大壮",
		Address:    "安徽省合肥市瑶海区",
		Phone:      "15655649906",
		Subjection: "1001",
	}
	//对密码进行MD5加密
	sub.Password = Hash(sub.Password, "md5", false, false)
	subKey, err := stub.CreateCompositeKey(SubAccountKeyPrefix, []string{sub.Id})
	if err != nil {
		return shim.Error("create key error ")
	}
	subByte, err := json.Marshal(sub)
	if err != nil {
		return shim.Error("marshal error")
	}
	if err := stub.PutState(subKey, subByte); err != nil {
		return shim.Error("put state error ")
	}
  1. Invoke
    Invoke方法负责链码交互,判断当前该执行哪个方法,执行业务逻辑,具体调用方法如下:
func (f FarmingChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response {
	fun, args := stub.GetFunctionAndParameters()
	switch fun {
	case "createCompany": //创建公司即注册公司
		return createCompany(stub, args)
	case "updateCompany": //修改公司
		return updateCompany(stub, args)
	case "createSubAccount": //创建子账户
		return createSubAccount(stub, args)
	case "updateSubAccount": //修改子账户
		return updateSubAccount(stub, args)
	case "delCompany": //公司注销,即删除公司
		return delCompany(stub, args)
	case "delSubAccount": //删除公司的某个子账户
		return delSubAccount(stub, args)
	case "queryCompany": //查询公司
		return queryCompany(stub, args)
	case "querySubAccount": //查询子账户
		return querySubAccount(stub, args)
	case "querySubAccounts": //查询公司旗下所有子账户
		return querySubAccounts(stub, args)
	case "querySpaces": //查询公司旗下所有子账户
		return querySpaces(stub, args)
	case "queryAssetss": //查询公司旗下所有子账户
		return queryAssetss(stub, args)
	}
	return shim.Error("not find function")
}

二、fabric-shim.ChaincodeStub

  1. createCompositeKey
    createCompositeKey方法的作用是创建一个string组合键,通过前缀和需要拼接的字段,创建组合键,返回一个string组合键,以及一个错误信息,具体调用方法如下:
	compKey, err := stub.CreateCompositeKey("Company", []string{"sjdhgf"})
  1. putState
    putState通过一个键值和一个byte数组将其按照key value 存入账本当中,若账本中已经存在则会覆盖原有的值,返回值为错误信息,所以一般用来更新账本,即保存、修改账本中的内容。

  2. getState
    getState根据key从账本中取出数据(value)返回值为数据的byte数组和一个错误信息。通常用于查询。

  3. delState
    delState根据key值删除账本中对应key的键值对,返回一个错误信息。

  4. getHistoryForKey
    getHistoryForKey 根据key值在帐本中查找key对应的历史记录,每次历史更新都将会保存至账本当中,都记录有当时的值和关联的交易id、时间戳。时间戳取自交易提议头。此方法需要对peer节点的配置来使用。具体配置方法如下:
    此方法返回一个Promise对象,其解析值为HistoryQueryIterator对象。

	core.ledger.history.enableHistoryDatabase = true
  1. getStateByRange
    getStateByRange此方法返回一个账本状态键的迭代器,遍历起始键至结束键之间的所有状态键,返回结果按照词典顺序排列。

    一般来说操作账本的常用的就以上几种,还有很多其他方法,具体方法在fabric官方文档中有详细的解释,链接如下:
    Fabric官方文档

三、fabric-shim.Shim

  1. Shim
    shim提供了链码底层的开发接口,用于链码逻辑的判断来返回内容。

  2. Error
    error返回500状态码以及错误信息。

  3. Success
    success返回200状态码以及字节数组。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

患孤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值