Hyperledger Fabric 1.0 链码(chaincode)的原理、接口和结构
2017-11-29 17:46
579 查看
chaincode原理
在Hyperledger Fabric 1.0中,链码(chaincode)延伸自智能合约的概念,采用主流高级编程语言编写。链码会对fabric应用发出的交易做出响应,执行代码逻辑,与账本进行交互。区块链网络中的成员商定业务逻辑后,可将业务逻辑编程到链码中,大家遵循此合约执行。链码会创建一些状态(state)并写入账本中。状态带有绑定到链码的命名空间,仅限于创建他的链码使用,不能被其他链码直接访问。不过,在合适的范围内,一个链码也可以调用另一个链码,间接访问其状态。
链码在fabric节点上的隔离沙盒(docker容器)中执行,并通过gRPC协议来与节点进行交互。必要的交互包括调用链码、读写账本、返回响应结果等。
Fabric中支持多种语言实现链码,包括golang、javascript、java等。下面例子为golong。
chaincode接口
每个链码都需要实现chaincode接口:type Chaincode interface{ Init(stub ChaincodeStubInterface) pb.Response Invoke(stub ChaincodeStubInterface) pb.Response }
其中:
Init:当链码收到实例化(instantiate)或者升级(update)类型的交易时,Init被调用。
Invoke:当链码收到调用(invoke)或者查询(query)类型的交易时,invoke方法被调用。
chaincode结构
一个链码的必要结构如下所示:package main //引入必要的包 import( "github.com/hyperledger/fabric/core/chaincode/shim" pb"github.com/hyperledger/fabric/protos/peer" ) //声明一个结构体 type SimpleChaincode struct {} //为结构体添加Init方法 func (t *SimpleChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response{ //在该方法中实现链码初始化或升级时的处理逻辑 //编写时可灵活使用stub中的API } //为结构体添加Invoke方法 func (t *SimpleChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response{ //在该方法中实现链码运行中被调用或查询时的处理逻辑 //编写时可灵活使用stub中的API } //主函数,需要调用shim.Start( )方法 func main() { err:=shim.Start(new(SimpleChaincode)) if err != nil { fmt.Printf("Error starting Simple chaincode: %s", err) } }
相关文章推荐
- Hyperledger Fabric 1.0 实战开发系列 第三课 chaincode开发
- Hyperledger fabric的链码接口整理
- Hyperledger fabric0.6的链码接口整理
- Hyperledger Fabric1.0 整体结构
- Hyperledger Fabric 1.0架构及原理
- hyperledger fabric-sample 运行 chaincode-docker-devmode 遇到的坑
- vmware workstation12+ubuntu16版本快速启动hyperledger fabric1.0网络
- 最好的Hyperledger1.0原理架构的讲解
- Hyperledger Fabric1.0架构概览
- 区块链基础知识系列 第四课Hyperledger fabric 1.0网络组成及构建流程
- hyperledger fabric0.6 结构分析(二)
- Hyperledger Fabric 1.0 安装和使用说明
- 区块链基础知识系列第5课 Hyperledger fabric1.0网络中transaction产生以及流转过程
- Hyperledger Fabric 1.0镜像下载
- 在 hyperledger fabric 环境对Validating Peers布署 chaincode (智能合约)
- Hyperledger Fabric SDK 示例fabric-samples-《balance-transfer》之十一《查询已经安装/实例化的chaincode》
- Hyperledger Fabric 1.0 从零开始(三)——环境构建(内网/准离线)
- 区块链 hyperledger fabric1.0 环境搭建
- hyperledger fabric0.6 结构分析(三)
- Hyperledger Fabric 1.0 实战开发系列 第二课 Fabric环境搭建