44

ChainDesk:如何利用Fabric提供的接口编写链码

 6 years ago
source link: https://studygolang.com/articles/17213?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
eYz2Ujj.jpg!web

作者:ChainDesk韩小东,ChainDesk区块链行业分析师, ChainDesk区块链工程师

目标

牢记编写链码所需要的两个重要包

开发链码所必须实现的接口及方法

开发链码文件的基本结构

任务实现

开发链码,离不开 Hyperledger Fabric 提供的 SDK ,为了方便诸多不同的应用场景且使用不同语言的开发人员,Hyperledger Fabric 提供了许多不同的 SDK 来支持各种编程语言。如:

Hyperledger Fabric Node SDK:https://github.com/hyperledger/fabric-sdk-node

Hyperledger Fabric Java SDK:https://github.com/hyperledger/fabric-sdk-java

Hyperledger Fabric Python SDK:https://github.com/hyperledger/fabric-sdk-py

Hyperledger Fabric Go SDK:https://github.com/hyperledger/fabric-sdk-go

在本课程中我们将使用 Golang 进行链码的开发,所以我们应该确定在本系统中有 Hyperledger Fabric 提供的相关API,其它语言的 SDK 我们不在本课程中进行讨论。

如果本地系统中没有相关的API,请执行如下下载命令:

aA3mAvF.jpg!web

区块链技术QQ交流群:263270946 掌握更多技术干货,关注微信公众号“ChainDesk”

Init 与 Invoke 方法

编写链码,关键是实现 Init 与 Invoke 两个方法,必须由所有链码实现。Fabric 通过调用指定的函数来运行事务。

Init:在链码实例化或升级时被调用, 完成初始化数据的工作。

invoke:更新或查询提案事务中的分类帐本数据状态时,Invoke 方法被调用, 因此响应调用或查询的业务实现逻辑都需要在此方法中编写实现。

在实际开发中,开发人员可以自行定义一个结构体,然后重写 Chaincode 接口的两个方法,并将两个方法指定为自定义结构体的成员方法;具体可参考下一节的内容。

5.1.2 必要结构

依赖包

shim 包为链码提供了 API 用来访问/操作数据状态、事务上下文和调用其他链代码;peer 包提供了链码执行后的响应信息。所以开发链码需要引入如下依赖包:

"github.com/hyperledger/fabric/core/chaincode/shim"

shim 包提供了链码与账本交互的中间层。

链码通过 shim.ChaincodeStub 提供的方法来读取和修改账本的状态。

"github.com/hyperledger/fabric/protos/peer"

peer.Response:封装的响应信息。

一个开发的链码源文件的必要结构如下:

uaAzaqy.jpg!web

未经授权禁止转载、改编,转载请注明出处!

本文地址: https://www.chaindesk.cn/witbook/11/121

ChainDesk——全球区块链技术生态超级社区

以区块链技术为入口,搭建全球区块链技术生态超级社区,社区将服务于公链生态建设、DAPP项目研发、技术咨询、课程体系研发、区块链书籍编写,区块链课程制作、讲师培训、区块链职业教育、区块链线上教育、去中心化技术评测一体化的区块链技术超级社区。

免费·原创·专业·高效·系统


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK