在Xuper链上部署Java语言智能合约和分析存证合约的实现逻辑(3)

简介: 在Xuper链上部署Java语言智能合约和分析存证合约的实现逻辑(3)

image.png



在合约部署的时候会调用Initialize方法


首先获取到部署命令中的owner参数表示用户名 然后调用链上的方法GetObject来查询该用户名对应的value


智能合约调用的链上的方法就2个 一个是PutObject 将key-value保存到链上


另外一个是GetObject 根据key获取对应的value


如果value为空的话 则初始化一个空的user对象 并转换成json字符串上链保存


合约上链交易的方法


image.png


这个方法首先根据owner(代表用户名称)去链上查询对应的value 根据上面的分析 该value保存着一个用户对象,第一次调用的时候该用户对象是里面的属性都没有进行初始化呢 然后调用putFile方法


image.png


首先初始化一个UserFile对象 这里面保存了一条上链的信息


将该对象作为一个元素 保存到 user对象里面的userfiles这个map集合中 key是filehash value是userFile


然后将用户对象转换成json字符串保存到链上


合约交易查询


image.png


根据filehash遍历该用户对象的userfiles这个map集合 找到对应的userfile元素


截止到这里 是不是发现了 这个存证合约模版的逻辑其实很简单


总结下上面的逻辑


智能合约调用链上的2个方法


  • PutObject 将k-v上链保存


  • GetObject 通过k查询v


一个数据结构


  • 一个user对象 里面有一个map集合 里面的元素是每次上链的数据 可以通过map的key来定位到那一条上链数据


问题发现


filehash重复


大家看过上面的代码有没有发现一个问题


image.png


圈红的地方是将单次上链数据userFile 放入map集合中 ,key是filehash,如果2次上传的filehash相同,那么就会把之前的filehash对应的value值给替换掉


但是呢 相同的上链数据却返回不同的交易id,内部实现机制是怎样的和如果根据公司的业务来定义数据结构以实现智能合约等下一篇文章咱们再分析下。


相关文章
|
7天前
|
Oracle Java 关系型数据库
Java基础(一):语言概述
Java基础(一):语言概述
Java基础(一):语言概述
|
5天前
|
存储 Java 开发者
【潜意识Java】深入详细理解分析Java中的toString()方法重写完整笔记总结,超级详细。
本文详细介绍了 Java 中 `toString()` 方法的重写技巧及其重要
31 10
【潜意识Java】深入详细理解分析Java中的toString()方法重写完整笔记总结,超级详细。
|
1天前
|
JavaScript Java 测试技术
基于Java+SpringBoot+Vue实现的车辆充电桩系统设计与实现(系统源码+文档+部署讲解等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
22 6
|
5天前
|
Java 应用服务中间件 API
【潜意识Java】javaee中的SpringBoot在Java 开发中的应用与详细分析
本文介绍了 Spring Boot 的核心概念和使用场景,并通过一个实战项目演示了如何构建一个简单的 RESTful API。
23 5
|
5天前
|
人工智能 自然语言处理 搜索推荐
【潜意识Java】了解并详细分析Java与AIGC的结合应用和使用方式
本文介绍了如何将Java与AIGC(人工智能生成内容)技术结合,实现智能文本生成。
28 5
|
5天前
|
SQL Java 数据库连接
【潜意识Java】Java中JDBC过时方法的替代方案以及JDBC为什么过时详细分析
本文介绍了JDBC中一些常见过时方法及其替代方案。
25 5
|
5天前
|
Java 数据库连接 数据库
【潜意识Java】深度分析黑马项目《苍穹外卖》在Java学习中的重要性
《苍穹外卖》项目对Java学习至关重要。它涵盖了用户管理、商品查询、订单处理等模块,涉及Spring Boot、MyBatis、Redis等技术栈。
30 4
|
5天前
|
Java 数据库连接 数据库
【潜意识Java】使用 Ruoyi 框架开发企业级应用,从零开始的实践指南和分析问题
本文介绍了基于Spring Boot的开源企业级框架Ruoyi,涵盖环境搭建、项目初始化及用户管理模块的创建。
47 4
|
5天前
|
SQL Java API
|
5天前
|
SQL Java 数据库连接
【潜意识Java】深入理解MyBatis的Mapper层,以及让数据访问更高效的详细分析
深入理解MyBatis的Mapper层,以及让数据访问更高效的详细分析
19 1