区块链技术 :链码(chaincode)信息公证之分析

区块链技术:链码简介如下

链码chaincode_example01.go 主要实现如下的功能:

  • 初始化,以键值形式存放信息;

  •  允许读取和修改键值。

代码中,首先初始化了 hello_world 的值,并根据请求中的参数创建修改查询链上 key 中的值,本质上实现了一个简单的可修改的键值数据库。

区块链技术 :链码(chaincode)信息公证之分析

区块链技术:链码主要函数

  •   read :读取key args[0] 的 value;

  •   write :创建或修改 key args[0] 的 value;

  •   init :初始化 key hello_world 的 value;

  •   invoke :根据传递参数类型调用执行相应的 init 和 write 函数;

  •   query :调用 read 函数查询 args[0] 的 value。

区块链技术:链码代码运行分析

  main 函数作为程序的入口,调用 shim 包的 start 函数,启动 chaincode 引导程序的入口节点。如果报错,则返回。

func main() {

err := shim.Start(new(SimpleChaincode)) if err != nil {

fmt.Printf("Error starting Simple chaincode: %s", err)

}

}

当智能合约部署在区块链上,可以通过 rest api 进行交互。


三个主要的函数是 init , invoke , query 。在三个函数中,通过 stub.PutState 与

  stub.GetState 存储访问 ledger 上的键值对。


通过 REST API 操作智能合约

假设以 jim 身份登录 pbft 集群,请求部署该 chaincode 的 json 请求格式为:

{

"jsonrpc": "2.0",

"method": "deploy", "params": {

"type": 1, "chaincodeID": {

"path": "https://github.com/ibm-blockchain/learn-chaincode/finished"

},

"ctorMsg": {

"function": "init", "args": [

"hi there"

]

},

"secureContext": "jim"

},

"id": 1

}

目前 path 仅支持 github 上的目录,ctorMsg 中为函数 init 的传参。调用 invoke 函数的 json 格式为:

{

"jsonrpc": "2.0",

"method": "invoke", "params": {

"type": 1, "chaincodeID": {

"name": "4251b5512bad70bcd0947809b163bbc8398924b29d4a37554f2dc2b033617c19c c0611365eb4322cf309b9a5a78a5dba8a5a09baa110ed2d8aeee186c6e94431"

},

"ctorMsg": {

"function": "init", "args": [

"swb"

]

},

"secureContext": "jim"

},

"id": 2

}


其中 name 字段为 deploy 后返回的 message 字段中的字符串。

query 的接口也是类似的。

链书小结:

区块链技术:链码(chaincode)与区块链技术的运用

链码开发的基础,一句话总结起来就是:一个基类,两个查询,一个写入。

玖壹区块链声明

加微信:469649885区块链培训教程
还可免费获取区块链培训班试学名额

分享:

扫一扫在手机阅读、分享本文

区块链评论

玖壹区块链培训

玖壹区块链培训学院简称(玖壹学院http://www.91xiubbs.com/)提供区块链技术培训资料、区块链开发培训视频教程等下载,不过网上自学区块链技术课程必然存在一些缺陷:遇到问题易卡壳、学习周期漫长、无针对性等。区块链培训机构现场面对面的讲授区块链培训课程可以让您和团队在最短时间内掌握正确、系统、高效的区块链实战技术。