Fabric智能合约:智能合约代码结构分析(Windows系统)

1.找到前面部署的智能合约路径:

Fabric智能合约:智能合约代码结构分析(Windows系统)_第1张图片

 2.go.mod:Go语言的模块化开发

Fabric智能合约(链码)中的模块化是必须的,不然没办法部署智能合约

之前,Go代码只能写在GOPATH下面,开启模块化之后,可以写在任何地方

用命令行:go mod init + 模块名 生成go.mod文件

当开启了模块化管理后我们运行代码用的是:go run + 模块名字 ,而不是带点后缀的文件了。

Fabric智能合约:智能合约代码结构分析(Windows系统)_第2张图片

 3.go.sum:帮我们管理当前的这个模块对其他第三方的依赖

 (比如:有一些依赖我们引入了,但实际上没有用到,那用go mod tidy命令生成go.sum时就可以帮我们清除那些没有用到的第三方库;但有一些要用的没有下载,它就会自动帮我们下载到本地)

Fabric智能合约:智能合约代码结构分析(Windows系统)_第3张图片

4.智能合约相关代码

 (1)assetTransfer.go代码中引用的仓库

Fabric智能合约:智能合约代码结构分析(Windows系统)_第4张图片

 开发超级账本的智能合约所需要的三个仓库:fabric-chaincode-go,fabric-contract-api-go,fabric-protos-go(拉取时要注意GO111MODULE="auto",同时要保证网络良好

Fabric智能合约:智能合约代码结构分析(Windows系统)_第5张图片

(2)main函数

main函数在这里的作用:创建链码对象;启动链码(这里启动链码是等部署好链码后的启动)

第16行的错误是创建资产转移基础链代码时出错;第20行的错误是启动资产转移基础链码错误。

Fabric智能合约:智能合约代码结构分析(Windows系统)_第6张图片

(3)SmartContract对象

在模块化开发要通过import的方式引用chanincode包来调用SmartContract对象

Fabric智能合约:智能合约代码结构分析(Windows系统)_第7张图片

Fabric智能合约:智能合约代码结构分析(Windows系统)_第8张图片

 (4)InitLedger()方法

初始化账本:创建了一系列相关的数据,把这些数据存储到了超级账本中

提示:如果想方法跟区块链进行交互或者访问区块链网络,就让方法绑定在智能合约结构体。

世界状态(World State) 为每个特定的链码维护变量的当前状态。 Fabric 目前支持的两种类型的 世界状态数据库包括 LevelDB 和 CouchDB。 LevelDB 是基于 Fabric Peer 的默认键值数据库,而 CouchDB 是基于 JSON 的数据库,支持基于 JSON 对象的丰富查询操作。 

Fabric智能合约:智能合约代码结构分析(Windows系统)_第9张图片(5)CreateAsset()方法

创建资产使用给定的细节向世界状态发出一个新资产。

Fabric智能合约:智能合约代码结构分析(Windows系统)_第10张图片

(6)ReadAsset()方法

读取资产:返回给定id存储在世界状态中的资产。

Fabric智能合约:智能合约代码结构分析(Windows系统)_第11张图片

 (7)UpdateAsset()方法

更新资产:使用提供的参数更新世界状态中的现有资产。

Fabric智能合约:智能合约代码结构分析(Windows系统)_第12张图片

(8)DeleteAsset()方法

删除资产:从世界状态中删除给定的资产。

Fabric智能合约:智能合约代码结构分析(Windows系统)_第13张图片

 (9)AssetExists()方法

判断资产是否存在:给定ID的资产在世界状态中存在

Fabric智能合约:智能合约代码结构分析(Windows系统)_第14张图片

 (10)TransferAsset()方法

资产转移:在世界状态中用给定id更新资产的所有者字段

Fabric智能合约:智能合约代码结构分析(Windows系统)_第15张图片

 (11)GetAllAssets()方法

获取所有资产列表:返回在世界状态中找到的所有资产

Fabric智能合约:智能合约代码结构分析(Windows系统)_第16张图片

 5.smartcontract_test.go测试文件

用于测试smartcontract.go文件

你可能感兴趣的:(区块链学习,fabric,智能合约,运维)