前言
这篇文章,咱们承接上文,来聊聊
上篇文章的飞机票
在Xuper链上部署Java语言智能合约和分析存证合约的实现逻辑
“如何根据自己公司的业务逻辑定义存证合约里面的数据结构来实现存证智能合约”
首先需要明确下公司存证业务需要上链的数据结构
{ "data":"", #这里是一个动态的json字符串 "businessId":"", #业务id "fileHash":"", #文件hash "applyNotarization","" #申请组织编号 "entityName":"" #公司名称 }
业务需求
1、将上面的数据上链
2、可以通过业务id businessId和fileHash查询
官方给的go语言版本的存证合约模版
这个咱上篇文章已经详细介绍过存证合约模版的实现逻辑了 这里把数据结构贴出来 然后和自己需要的数据结构进行比对 { "Owner":"xiaoming" , # 这个表示用户名 "UserFiles":{ # 这个是一个map集合 "filehash":{ # map集合的key是文件hash "Timestamp":"" # 时间戳 "Hashval":"" # []byte(filehash) 其实也是hash值 } } }
比对结果
1、filehash这个map的key对应的value是一个对象 对象内容官方模版只有Timestamp和Hashval这2个字段 那么咱们把 data、businessId、fileHash、applyNotarization、entityName 这5个字段加入进去
2、另外咱们上篇文章也说了 官方模版里面 是通过owner和filehash确认一条上链数据的 ,那么咱们的需求又增加了一个查询参数 businessId 那么再添加一个map集合 里面的与元素 key表示businessId value表示一个对象的json字符串不就可以解决了
最终符合业务需求的数据结构
{ "Owner":"xiaoming", "UserFiles":{ "filehash":{ "Timestamp":"", "Hashval":"", "data":"", "businessId":"", "applyNotarization":"", "entityName":"", "fileHash":"" } }, "BuisnessUserFiles":{ "businessId":{ "Timestamp":"", "Hashval":"", "data":"", "businessId":"", "applyNotarization":"", "entityName":"", "fileHash":"" } } }
下面存证合约模版代码
- 数据结构
1、添加了一个map集合 key-value ,key为businessId
2、将那5个业务字段添加进去
3、需要注意的是 对象里面的参数首字母必须大写 否则 给属性赋不了值
- 数据上链方法修改