1.找到前面部署的智能合约路径:
2.go.mod:Go语言的模块化开发
Fabric智能合约(链码)中的模块化是必须的,不然没办法部署智能合约
之前,Go代码只能写在GOPATH下面,开启模块化之后,可以写在任何地方
用命令行:go mod init + 模块名 生成go.mod文件
当开启了模块化管理后我们运行代码用的是:go run + 模块名字 ,而不是带点后缀的文件了。
3.go.sum:帮我们管理当前的这个模块对其他第三方的依赖
(比如:有一些依赖我们引入了,但实际上没有用到,那用go mod tidy命令生成go.sum时就可以帮我们清除那些没有用到的第三方库;但有一些要用的没有下载,它就会自动帮我们下载到本地)
4.智能合约相关代码
(1)assetTransfer.go代码中引用的仓库
开发超级账本的智能合约所需要的三个仓库:fabric-chaincode-go,fabric-contract-api-go,fabric-protos-go(拉取时要注意GO111MODULE="auto",同时要保证网络良好)
(2)main函数
main函数在这里的作用:创建链码对象;启动链码(这里启动链码是等部署好链码后的启动)
第16行的错误是创建资产转移基础链代码时出错;第20行的错误是启动资产转移基础链码错误。
(3)SmartContract对象
在模块化开发要通过import的方式引用chanincode包来调用SmartContract对象
(4)InitLedger()方法
初始化账本:创建了一系列相关的数据,把这些数据存储到了超级账本中
提示:如果想方法跟区块链进行交互或者访问区块链网络,就让方法绑定在智能合约结构体。
世界状态(World State) 为每个特定的链码维护变量的当前状态。 Fabric 目前支持的两种类型的 世界状态数据库包括 LevelDB 和 CouchDB。 LevelDB 是基于 Fabric Peer 的默认键值数据库,而 CouchDB 是基于 JSON 的数据库,支持基于 JSON 对象的丰富查询操作。
(5)CreateAsset()方法
创建资产:使用给定的细节向世界状态发出一个新资产。
(6)ReadAsset()方法
读取资产:返回给定id存储在世界状态中的资产。
(7)UpdateAsset()方法
更新资产:使用提供的参数更新世界状态中的现有资产。
(8)DeleteAsset()方法
删除资产:从世界状态中删除给定的资产。
(9)AssetExists()方法
判断资产是否存在:给定ID的资产在世界状态中存在
(10)TransferAsset()方法
资产转移:在世界状态中用给定id更新资产的所有者字段
(11)GetAllAssets()方法
获取所有资产列表:返回在世界状态中找到的所有资产
5.smartcontract_test.go测试文件
用于测试smartcontract.go文件