Hyperledger Fabric 链码(2) 接口

1.Chaincode interface:每个链码程序必须实现链码接口,用以响应接收的事务。

1.1 go语言的“shim ”包中,接口规范如下:

  • Init:在链码实例化或者升级的时候被调用,完成数据初始化
  • Invoke:客户端调用Invoke方法来提交交易提案,在更新或查询提案事务中分类帐本数据状态的时候被调用
type Chaincode interface {
    // Init is called during Instantiate transaction after the chaincode container
    // has been established for the first time, allowing the chaincode to
    // initialize its internal data
    Init(stub ChaincodeStubInterface) pb.Response
    // Invoke is called to update or query the ledger in a proposal transaction.
    // Updated state variables are not committed to the ledger until the
    // transaction is committed.
    Invoke(stub ChaincodeStubInterface) pb.Response
}

2. ChaincodeStubinterface:shim中的另一个重要接口,用于访问和修改帐本,以及实现链间调用

共定义了36个成员方法
eg.

  • GetFunctionAndParameters()(function string,params []string)返回被调用函数的名称以及参数列表
  • GetStringArgs()[]string 直接返回参数列表
  • GetState(key string)([]byte,error) 根据指定的key值查询数据状态
  • PutState(key string,value []byte)error 根据指定的key,将对应的value保存到帐本中
  • DelState(key) 删除账本中的一对键值。
上一篇:Spring源码之spring事务


下一篇:springboot 事务执行全流程分析