Fabric链码编写——(三)Go

链码是什么

链码是一段程序,由Go、node.js或Java编写,来实现一些预定义的接口。链码运行在一个和背书节点分开的独立进程中,通过应用程序提交的交易来初始化和管理账本状态。

链码可以在提案交易中被调用用来升级或者查询账本。赋予适当的权限,链码就可以调用其他链码访问它的状态,不管是在同一个通道还是不同的通道。注意,如果被调用链码和调用链码在不同的通道,就只能执行只读查询。就是说,调用不同通道的链码只能进行“查询”,在提交的子语句中不能参与状态的合法性检查。

Chaincode API

每一个链码程序都必须实现 Chaincode 接口,该接口的方法在接收到交易时会被调用 。

在每种语言中,客户端提交交易提案(transaction proposal)都会调用 Invoke 方法。该方法可以让你使用链码来读写通道账本上的数据。

你还需要包含Init方法,该方法是实例化方法。该方法是链码接口需要的,你的应用程序没有必要调用 。你可以使用Fabric链码生命周期过程来指定在Invoke之前是否必须调用Init方法。

接下来以Go语言为例,看一下如何编写链码:

内务

首先从内务开始。每一个链码都要实现Chaincode接口中的Init和Invoke方法。所以,我们先使用Go import语句来导入链码必要的依赖。我们将导入链码shim包和peer protobuf包,这是我们写链码必须要导入的两个包,我们所有用的API都在这两个包里。然后,我们加入一个SimpleAsset结构体来作为Chaincode shim方法的接收者。这个结构体可以什么也不写。

初始化链码

然后,我们将实现Init方法。

注意:链码升级的时候也要调用这个方法,当写一个用来升级已存在的链码的时候,清确保合理更改Init方法。特别地,当升级时没有“迁移”或者没东西需要初始化时,可以提供一个空的Init方法。

接下来,我们将使用ChaincodeStubInterface

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值