(免费领源码)java#SSM#mysql基于区块链的物联网数据交易46193-计算机毕业设计项目选题推荐

摘  要

物联网技术作为继互联网技术后新一代的通信信息集成应用的典范,其巨大的应用前景受到了学术界和政商界的广泛关注。物联网技术在一些传统行业已经有了很深入的应用,例如,其在商品生产信息溯源、环境监测保护、物流、供应链、能源等领域的成功应用。

与此同时,物联网技术的发展也受到了安全隐私问题的制约。目前物联网拓扑结构一般是客户端一中央服务器模型,即中心化结构。这种结构的特点是数据管理方便、执行效率高,但是,我们经常看到用户数据被有意或无意泄露,给用户隐私带来巨大的危害,究其原因,正是因为中央数据存储机构监管困难,访问权限不明确。区块链作为近年来兴起的技术,具有去信任、去中心化和可溯源特性,是一种有潜力解决物联网隐私安全的技术,因此也是国内外学术界研究的热点。

本文着重研究了区块链系统中的共识机制,对月前主流的共识机制在吞吐量、时延等方面做了量化的比较,分析了每种共识算法的优势和不足,并对目前应用广泛的权益证明(proofof stake)共识机制进行系统的研究,本文针对权益共识机制中存在的“无风险投注”问题,提出了一种新的解决策略,该策略的具体做法是允许投票节点投出支持票和反对票两种,而不是目前存在的只能投出一种票,若节点对某一分叉投支持票该分叉最后胜出,则节点获得收益,反之,若节点对某一分叉投出反对票且该分叉最后没有胜出则节点获得收益。

设计了物联网数据交易系统,提供了区块链网络中点对点之间交互的能力,在以太坊区块链上进行了智能合约部署,设计了数据存储方法。最后,本文设计了基于区块链的物联网数据交易系统,该应用通过使用智能合约实现了数据的点对点自由交易,不需要第三方参与交易,这些交易不需要人为干预,物联网数据与系统代币以太币根据智能合约制定的规则进行交换。

关键词:物联网数据交易系统;Java;SSM;MYSQL

Abstract

The Internet of Things (IoT) technology,as a model of the integrated application of communication and information of the new generation following the Internet technology,has attracted extensive attention from the academic and political and business circles for its huge application prospects. The Internet of Things technology has already had a very deep application in some traditional industries,for example,its successful application in commodity production information traceability,environmental monitoring and protection,logistics,supply chain,energy and other fields.

At the same time,the development of Internet of Things technology is also restricted by security and privacy issues. At present,the topology of the Internet of Things is generally the client central server model,namely the centralized structure. This structure is characterized by convenient data management and high execution efficiency. However,we often see that user data is leaked intentionally or unintentionally,which brings great harm to user privacy. The reason is that the central data storage organization is difficult to supervise and has unclear access rights. As a technology emerging in recent years,blockchain has the characteristics of distrust,decentralization and traceability. It is a technology that has the potential to solve the privacy security of the Internet of Things,so it is also a research hotspot in domestic and foreign academic circles.

This paper focuses on the consensus mechanism in the blockchain system,makes a quantitative comparison of the mainstream consensus mechanism in terms of throughput,delay,etc.,analyzes the advantages and disadvantages of each consensus algorithm,and systematically studies the consensus mechanism of proof of stake,which is widely used at present. This paper proposes a new solution to the problem of "risk-free betting" in the equity consensus mechanism,The specific approach of this strategy is to allow voting nodes to cast support votes and negative votes,instead of only casting one vote at present. If a node votes in support of a fork and the fork finally wins,the node gains income. On the contrary,if a node votes against a fork and the fork does not win,the node gains income.

The Internet of Things data trading system is designed,which provides the ability of point-to-point interaction in the blockchain network. The smart contract is deployed on the Ethereum blockchain,and the data storage method is designed. Finally,this paper designs the Internet of Things data trading system based on the blockchain. This application realizes point-to-point free trading of data by using smart contracts,without the participation of a third party. These transactions do not require human intervention. The Internet of Things data and system token Ether are exchanged according to the rules established by the smart contract.

Keywords: Internet of Things data trading system; Java; SSM; MYSQ

目录

1 绪论

1.1 研究背景与意义

1.2 研究现状

1.3 相关技术介绍

2 基于区块链的物联网数据交易分析

2.1 可行性分析

2.1.1 技术可行性分析

2.1.2 经济可行性分析

2.2 系统需求分析

2.2.1 功能性需求分析

2.2.2 非功能性分析

2.3 系统用例分析

3 基于区块链的物联网数据交易总体设计

3.1 系统模块设计

3.2 数据库设计

3.3.1 数据库概念结构设计

3.2.2 数据库逻辑结构设计

4 基于区块链的物联网数据交易设计与实现

4.1 系统首页页面

4.2 注册页面

4.3 登录页面

4.4 平台资讯页面

4.5数据交易页面

4.6 用户管理页面

4.7 资源管理页面

4.8 数据交易管理页面

4.9 购买信息管理页面

4.10 交易记录管理页面

5基于区块链的物联网数据交易测试

5.1 调试部分问题

5.2 系统测试用例

5.3 系统测试结果

结论

参考文献

  

1 绪论

1.1 研究背景与意义

2008年,化名为中本聪的学者发表划时代的论文《比特币:一种点对点电子现金系统》",标志着区块链技术的诞生。以区块链作为底层技术的比特币数字货币系统的成功将这一技术彻底将这一技术推向研究与应用的高潮,其后陆陆续续出现了一些较为成熟的区块链平台,其中有代表性的有Ethereum平台、IBM Hyperledger平台、LISK 平台等。在加密货币领域更是出现了数不胜数的应用,区块链技术的众多成功应用案例引起了更多人对这一新技术的重视,越来越多的商业机构都推出了自己的区块链应用,例如,阿里巴巴2017年便推出了商品溯源链和蚂蚁金服公益链应用,越来越多的国家将数字代币合法化,这一切都表明区块链技术所带来的技术和思维变革为多数人渐渐接受。

区块链技术的巨大潜力引起了很多传统行业的注意,其中以金融领域和物联网领域最为火热,金融领域以支付系统和数字代币为代表,出现了很多成功的结合案例,而在物联网领域目前还处于比较早期的研究阶段,少有较为成熟的应用推出,但是,我们看到物联网的建设与发展确实受到了安全隐私问题的制约,具体来说是物联网数据的隐私性、存储安全性和数据完整性问题。首先数据隐私问题,物联网在家居、个人医疗、交通等方面的应用使得原本属于一些个人隐私的数据被采集起来,这些数据与个人生活息息相关,因此,物联网在方便生活的同时,却有损个人隐私:其次,是数据安全问题,智慧城市、能源、金融等行业已经与物联网有了深层次的融合,这些关乎国计民生的行业数据的存储安全不得不引起人们的担忧,这些数据一旦被窃取或者泄露将造成很大的危害;最后是数据完整性问题,很多领域对数据完整性有着极高的要求,例如物流和商品溯源领域。这些问题是目前传统物联网架构所决定的,亟待新的解决方案。

随着区块链和物联网获得广泛认可,技术世界似乎再次融合。今天,我们分别经历了这两种颠覆性技术的使用案例。物联网的重要性正在为电子器件及其连接的物体带来期待已久的技术革命。物联网对我们的日常生活产生了更为密切的影响,预计到2020年底,将有大约200亿台设备连接在一起工作。每一项技术进步都伴随着一些漏洞, 当数十 亿设备通过中央通信通道连接时,数据安全问题可能是一项重大挑战,这会导致单点故障,这意味着如果黑客发现单个漏洞,即使安装了各种类型安全协议的大型服务器表单,也可能会遭到损害,而区块链技术是分布式数据库技术,没有中央机构,是有可能解决这一问题的方案。因此loT( Internet of Things) +区块链方案应运而生。当然,基于区块链技术的物联网改造升级并不是一个推到重来的过程,而是一个相互融合的过程。鉴于以上分析物联网所出现的问题,区块链技术解决方案将带来一下三点新的变化:

(一)数据安全隐私方面有了新的解决方案。传统的物联网架构是中心化的结构,所有的数据都被中央机构统一采集管理, 首先,这种架构本身对数据安全就是一个威胁,一旦中央管理机构出现安全漏洞将危及大量用户数据安全隐私;其次,中央管理机构掌握着数据访问权限,出于商业利益将用户数据出售的风险确实存在。而在区块链技术中,没有中心化的机构,每一个数据操作都需要用户身份验证,同时每一个数据操作的日志会被永久地记录在区块中,这样,数据管理权限就掌握在了每一个用户手中,从而彻底解决数据安全隐私问题。

(二)区块链技术使得物联网数据有了新的交易模式。区块链最大的优势就是可以去信任地进行交易,用户与用户之间可以通过智能合约制定条款直接进行数据交易,不需要人为干预,这极大地提高了数据利用效率。

(三)区块链技术降低了企业成本。物联网设备呈现儿何级增长,传统物联网架构下中央机构的计算、存储、维护等成本压力骤升,而区块链技术维护是点对点网络中每个节点完成的,分散了压力,提高容错能力。

1.2研究现状

区块链是一种去中心化,分布式账本系统。它利用密码学原理来保证信息传递和处理的安全性;同时采用智能合约实现了对资源的透明访问以及对用户权限控制等功能。基于区块链技术的物联网数据应用场景及优势:

(1)通过智能合约进行数据流转;

(2)提高数据价值的挖掘能力;

(3)提升数据存储效率。在此基础上提出一种基于区块链的物联云平台架构方案,包括底层基础设施层、应用服务器层与上层服务层三部分。该架构将区块链技术融入到传统数据中心中,可以有效解决传统数据中心所存在的问题:虚拟化程度低;数据安全风险大;无法提供统一的数据共享标准;业务连续性差等。      最后以智慧城市管理为例进行实验测试,结果表明该框架可满足海量异构数据组织、传输、存储等需求。

1.3相关技术介绍

(1)基于区块链的物联网数据交易中的web后台管理中的后端不再使用古老的jsp+javabean+servlet技术,而是使用当前主流的SSM框架,它减少java配置代码,简化编程代码,目前SSM框架也是很多企业选择的框架之一。

(2)基于区块链的物联网数据交易中的web后台管理中的前端使用的是bootstrap框架,它配合ajax和jquery可以美化页面设计。

(3)流行vue框架结合jQuery技术,在jQuery基础上扩展一些插件,通过自己定义插件更好的实现前端的设计。

(4)基于区块链的物联网数据交易中数据库用的mysql5.7,它执行效率高。

2 基于区块链的物联网数据交易分析

2.1 可行性分析

2.1.1 技术可行性分析

通过了解对基于区块链的物联网数据交易的真实需求后,将基于区块链的物联网数据交易所需要的角色划分整理成了下图2-1,图2-2和图2-3。

从开发工具来看,由于基于区块链的物联网数据交易是基于JAVA的,因此有很多开发工具都可以进行开发,这些功能强大的开发工具可以给我来设计基于区块链的物联网数据交易带来非常大的方便。

从基于区块链的物联网数据交易的本身技术来说,对于我来开发一个基于区块链的物联网数据交易这个毕设是不费事的。基于区块链的物联网数据交易的开发可以简单的分为前台端、后台端开发以及数据库开发。其中的大部分技术难点在我上学时已经使用过了,同时网络上很多技术点可以让我来借鉴。Web后台管理使用JAVA[9]的SSM架构开发,数据库使用mysql,页面上使用javascript脚本,因此为我在开发基于区块链的物联网数据交易这个毕设上省去了很多多余代码,这给我的毕设项目编写带来了极大的便利。综上所述,从技术层面来看开发基于区块链的物联网数据交易是可行的。

从用户体验来看,市面上很多被广泛使用的系统案例可以让我来参考,因此我可以综合它们的页面交互设计的优点,基于我的毕设项目特点来进行改版,最后达到令用户满意的页面交互体验。综上所述,从技术层面来看开发基于区块链的物联网数据交易是可行的。

2.1.2 经济可行性分析

基于区块链的物联网数据交易的开发成本来看,基于区块链的物联网数据交易的设计和开发都是我自己完成的,没有其他成本上的开销。

基于区块链的物联网数据交易的维护成本来看,基于区块链的物联网数据交易的开发遵循一套完整的代码编写规范,并且基于区块链的物联网数据交易的结构设计非常灵活,遵循高内聚低耦合的原则,因此易于维护和迭代开发。

基于区块链的物联网数据交易上线之后,上线前期我会根据真实需求来调查,对使用我开发的基于区块链的物联网数据交易来制定一套符合的使用费。系统运行稳定后我会将推广范围到其他的校园当中,其他校园可以使用我的基于区块链的物联网数据交易,只需要缴纳一点点的定金,我会给他们引入广告投资和自营业务。

综合以上的分析,基于区块链的物联网数据交易所带来的经济效益将会带来极大的收益。并且随着我的推广,来使用我开发的基于区块链的物联网数据交易的市场将越来越大,基于区块链的物联网数据交易带来的利润也就越来越多。因此,从经济层面来看开发基于区块链的物联网数据交易的是可行的。

2.2 系统需求分析

2.2.1 功能性需求分析

基于区块链的物联网数据交易从角色上划分为了系统用户、管理员两种角色。

管理员用户角色:

(1)登录:管理员的账号是在数据表表中直接设置生成的,不需要进行注册;

(2)公告管理:当点击“公告管理”这一菜单的时候,会出现公告栏这一个子菜单,可以对这个模块进行增删改查操作;

(3)系统用户管理:当点击“系统用户管理”这一菜单的时候,会出现管理员+用户两个子菜单,可以对这个模块进行增删改查操作;

(4)资源管理:当点击“资源管理”这一菜单的时候,会出现平台资讯+资讯分类个子菜单,可以对平台资讯进行增删改查操作;

(5)模块管理:当点击“模块管理”这一菜单的时候,会出现余额充值+数据交易+购买信息+交易记录个子菜单,能够对购买信息进行增删改查操作,对数据交易进行管理,以及实现对交易记录进行管理

系统用户角色:

(1)注册登录模块:当系统用户想要进入本基于区块链的物联网数据交易中对资讯进行查看评论以及了解药品信息等操作的时候,就必须要登录到系统当中,要是新的用户没有基于区块链的物联网数据交易的账号的话,点击“注册”按钮,就会进入到新用户注册这个界面上,用户输入对应的账号(必须填写)+密码(必须填写)+确认密码(必须填写,而且要与密码一直)+昵称+邮箱+手机号+选择用户身份等等,然后点击“注册”,系统在用户这一数据库中会查询账号是不是存在,两次密码是不是一样,都填写正确就会注册成功,然后再进行登录,如果是之前已经注册过的用户很长时间没有使用,忘记密码,也可以点击“忘记密码”进行找回;

(2)平台资讯:在首页导航栏上我们会看到“平台资讯”这一菜单,我们点击进入进去以后,会看到所有资讯列表,在这个界面,我们可以点击进入进行查看、评论、点赞等;

(3)公告消息:在首页导航栏上我们会看到“公告消息”这一菜单,我们点击进入进去以后,会看到所有管理员在后台发布的公告信息;

4)我的收藏:在“我的”下可以查看管理“我的收藏”信息,可以查看收藏,也可以对不喜欢的信息进行删除收藏;

5)我的账户:当用户点击右上角“我的”这个按钮,会出现子菜单,点击“我的账户”可以对个人的资料以及登录系统的密码进行设置;

6)个人中心:当用户点击右上角“我的”这个按钮,就会进入到对应的后台进行信息的管理了;

2.2.2 非功能性分析

基于区块链的物联网数据交易的非功能性需求比如基于区块链的物联网数据交易的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下2-1表格中:

2-1基于区块链的物联网数据交易非功能需求表

安全性

主要指基于区块链的物联网数据交易数据库的安装,数据库的使用和密码的设定必须合乎规范。

可靠性

可靠性是指基于区块链的物联网数据交易能够安装用户的指示进行操作,经过测试,可靠性90%以上。

性能

性能是影响基于区块链的物联网数据交易占据市场的必要条件,所以性能最好要佳才好。

可扩展性

比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。

易用性

用户只要跟着基于区块链的物联网数据交易页面展示内容进行操作,就可以了。

可维护性

基于区块链的物联网数据交易开发的可维护性是非常重要的,经过测试,可维护性没有问题

2.3 系统用例分析

根据上一节功能分析,可以得出系统的用例,系统用户角色用例如图2.1所示。

图2.1 基于区块链的物联网数据交易中系统用户角色用例图

管理员角色用例如图2.2所示。

2.2 基于区块链的物联网数据交易管理员角色用例图

3 基于区块链的物联网数据交易总体设计

3.1 系统模块设计

根据第二章中基于区块链的物联网数据交易的功能分析可知,基于区块链的物联网数据交易中整体功能模块图如图3.1所示, 

图3.1 基于区块链的物联网数据交易功能模块图

3.2 数据库设计

3.3.1 数据库概念结构设计

下面是整个基于区块链的物联网数据交易中主要的数据库表总E-R实体关系图。

图3.2 基于区块链的物联网数据交易总E-R关系图

3.2.2 数据库逻辑结构设计

通过上一小节中基于区块链的物联网数据交易中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。

(1)transaction表:

名称

类型

长度

不是null

主键

注释

transaction_id

int

11

交易记录ID

data_name

varchar

64

数据名称

selling_users

int

11

出售用户

selling_price

int

11

出售价格

full_name

varchar

64

姓名

user_no

varchar

64

用户编号

buying_users

int

11

购买用户

user_address

varchar

64

用户地址

data_key

varchar

64

数据密钥

equipment_type

varchar

64

设备类型

data_type

varchar

64

数据类型

data_hash

varchar

64

数据哈希

incidental_information

text

0

附带信息

order_number

varchar

64

订单号

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

(2)system_user表:

名称

类型

长度

不是null

主键

注释

system_user_id

int

11

系统用户ID

full_name

varchar

64

姓名

gender

varchar

64

性别

user_balance

int

11

用户余额

user_no

varchar

64

用户编号

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

user_id

int

11

用户ID

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

(3)recharge_balance表:

名称

类型

长度

不是null

主键

注释

recharge_balance_id

int

11

余额充值ID

rechargeable_user

int

11

充值用户

full_name

varchar

64

姓名

gender

varchar

64

性别

user_balance

varchar

64

用户余额

recharge_amount

int

11

充值金额

recharging_remarks

varchar

64

充值备注

user_no

varchar

64

用户编号

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

(4)purchase_informatio表:

名称

类型

长度

不是null

主键

注释

purchase_information_id

int

11

购买信息ID

data_name

varchar

64

数据名称

data_classification

varchar

64

数据分类

selling_users

int

11

出售用户

selling_price

int

11

出售价格

buying_users

int

11

购买用户

user_address

varchar

64

用户地址

data_key

varchar

64

数据密钥

full_name

varchar

64

姓名

user_no

varchar

64

用户编号

order_number

varchar

64

订单号

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

 (5)data_transaction表:

名称

类型

长度

不是null

主键

注释

data_transaction_id

int

11

数据交易ID

data_name

varchar

64

数据名称

data_classification

varchar

64

数据分类

cover_photo

varchar

255

封面图片

data_description

text

0

数据描述

selling_users

int

11

出售用户

selling_price

int

11

出售价格

hits

int

11

点击数

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

 (6)comment表:

名称

类型

长度

不是null

主键

注释

comment_id

int

11

评论ID

user_id

int

11

评论人ID

reply_to_id

int

11

回复评论ID

content

longtext

0

内容

nickname

varchar

255

昵称

avatar

varchar

255

头像地址

create_time

timestamp

0

创建时间

update_time

timestamp

0

更新时间

source_table

varchar

255

来源表

source_field

varchar

255

来源字段

source_id

int

10

来源ID

4 基于区块链的物联网数据交易设计与实现

基于区块链的物联网数据交易的详细设计与实现主要是根据前面的基于区块链的物联网数据交易的需求分析和基于区块链的物联网数据交易的总体设计来设计页面并实现业务逻辑。主要从基于区块链的物联网数据交易界面实现、业务逻辑实现这两部分进行介绍

4.1 系统首页页面

当进入基于区块链的物联网数据交易的时候,首先映入眼帘的是系统的导航栏,下面是轮播图以及系统内容,其主界面展示如下图4.1所示。

图4.1 系统用户界面图

4.2 注册页面

不是基于区块链的物联网数据交易中正式用户的是可以在线进行注册的,如果你没有本基于区块链的物联网数据交易的账号的话,添加“注册”,当填写上自己的账号+密码+确认密码+昵称+邮箱+手机号等后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可用户注册成功。注册界面实现了系统用户用户的注册,其注册界面展示如下图4。2所示。

图4.2 注册界面图

系统用户注册逻辑代码如下:

/**

     * 注册

     * @return

     */

    @PostMapping("register")

    public Map<String,Object> signUp(HttpServletRequest request) throws IOException {

        // 查询用户

        Map<String,String> query = new HashMap<>();

        Map<String,Object> map = service.readBody(request.getReader());

        query.put("username",String.valueOf(map.get("username")));

        List list = service.selectBaseList(service.select(query,new HashMap<>()));

        if (list.size()>0){

            return error(30000,"用户已存在");

        }

        map.put("password",service.encryption(String.valueOf(map.get("password"))));

        service.insert(map);

        return success(1);

}

    public Map<String,Object> readBody(BufferedReader reader){

        BufferedReader br = null;

        StringBuilder sb = new StringBuilder("");

        try{

            br = reader;

            String str;

            while ((str = br.readLine()) != null){

                sb.append(str);

            }

            br.close();

            String json = sb.toString();

            return JSONObject.parseObject(json,Map.class);

        }catch (IOException e){

            e.printStackTrace();

        }finally{

            if (null != br){

                try{

                    br.close();

                }catch (IOException e){

                    e.printStackTrace();

                }

            }

        }

        return null;

    }

    public void insert(Map<String,Object> body){

        E entity = JSON.parseObject(JSON.toJSONString(body),eClass);

        baseMapper.insert(entity);

        log.info("[{}] - 插入操作:{}",entity);

}

4.3 登录页面

基于区块链的物联网数据交易中的前台上注册后的用户是可以通过自己的账户名和密码进行登录的,当用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到基于区块链的物联网数据交易的首页中;否则将会提示相应错误信息,用户登录界面如下图4.3所示。

图4.3 登录界面图

系统用户登录的逻辑代码如下所示。

/**

     * 登录

     * @param data

     * @param httpServletRequest

     * @return

     */

    @PostMapping("login")

    public Map<String,Object> login(@RequestBody Map<String,String> data,HttpServletRequest httpServletRequest) {

        log.info("[执行登录接口]");

        String username = data.get("username");

        String email = data.get("email");

        String phone = data.get("phone");

        String password = data.get("password");

        List resultList = null;

        QueryWrapper wrapper = new QueryWrapper<User>();

        Map<String,String> map = new HashMap<>();

        if(username != null && "".equals(username) == false){

            map.put("username",username);

            resultList = service.selectBaseList(service.select(map,new HashMap<>()));

        }

        else if(email != null && "".equals(email) == false){

            map.put("email",email);

            resultList = service.selectBaseList(service.select(map,new HashMap<>()));

        }

        else if(phone != null && "".equals(phone) == false){

            map.put("phone",phone);

            resultList = service.selectBaseList(service.select(map,new HashMap<>()));

        }else{

            return error(30000,"账号或密码不能为空");

        }

        if (resultList == null || password == null) {

            return error(30000,"账号或密码不能为空");

        }

        //判断是否有这个用户

        if (resultList.size()<=0){

            return error(30000,"用户不存在");

        }

        User byUsername = (User) resultList.get(0);

        Map<String,String> groupMap = new HashMap<>();

        groupMap.put("name",byUsername.getUserGroup());

        List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap,new HashMap<>()));

        if (groupList.size()<1){

            return error(30000,"用户组不存在");

        }

        UserGroup userGroup = (UserGroup) groupList.get(0);

        //查询用户审核状态

        if (!StringUtils.isEmpty(userGroup.getSourceTable())){

            String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());

            if (res==null){

                return error(30000,"用户不存在");

            }

            if (!res.equals("已通过")){

                return error(30000,"该用户审核未通过");

            }

        }

        //查询用户状态

        if (byUsername.getState()!=1){

            return error(30000,"用户非可用状态,不能登录");

        }

        String md5password = service.encryption(password);

        if (byUsername.getPassword().equals(md5password)) {

            // 存储Token到数据库

            AccessToken accessToken = new AccessToken();

            accessToken.setToken(UUID.randomUUID().toString().replaceAll("-",""));

            accessToken.setUser_id(byUsername.getUserId());

            tokenService.save(accessToken);

            // 返回用户信息

            JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));

            user.put("token",accessToken.getToken());

            JSONObject ret = new JSONObject();

            ret.put("obj",user);

            return success(ret);

        } else {

            return error(30000,"账号或密码不正确");

        }

}

    public String select(Map<String,String> query,Map<String,String> config){

        StringBuffer sql = new StringBuffer("select ");

        sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");

        sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query,"0".equals(config.get(FindConfig.LIKE))));

        if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){

            sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");

        }

        if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){

            sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");

        }

        if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){

            int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;

            int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;

            sql.append(" limit ").append( (page-1)*limit ).append(",").append(limit);

        }

        log.info("[{}] - 查询操作,sql: {}",table,sql);

        return sql.toString();

}

    public List selectBaseList(String select) {

        List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);

        List<E> list = new ArrayList<>();

        for (Map<String,Object> map:mapList) {

            list.add(JSON.parseObject(JSON.toJSONString(map),eClass));

        }

        return list;

}

4.4 平台资讯页面

当用户点击平台资讯以后就会进入到以下界面,用户可以输入关键词搜索资讯内容,查看点赞数以及点击数,然后点击到资讯的详细的界面,在这个详细界面可以点赞+评论。其出界面展示如下图4.4所示。

图4.4 平台资讯界面图

4.5数据交易页面

当用户点击“数据交易”以后就会给我们展示数据交易的列表,选择一个数据交易进入到图4.5界面中,用户可以对数据交易进行购买,点击购买按钮,进入到4.6界面中,输入数据名称、数据分类、出售用户、出售价格、用户地址、订单号、用户编号等,点击“提交”按钮,就会显示购买成功。

图4.5 数据交易界面图

图4.6 购买界面图

数据交易的逻辑代码如下:

@RequestMapping(value = "/del")

    @Transactional

    public Map<String,Object> del(HttpServletRequest request) {

        service.delete(service.readQuery(request),service.readConfig(request));

        return success(1);

}

4.6 用户管理页面

此功能为管理员的功能,管理员点击“系统用户管理”菜单后,会展示出管理员+系统用户两个子菜单,任何可以对其进行增删改查操作;其界面展示如下图4.7所示。

图4.7 系统用户管理界面图

用户管理关键代码如下所示。

public List selectBaseList(String select) {

        List<Map<String,eClass));

        }

        return list;

}

4.7资源管理页面

此功能为管理员的功能,管理员点击“资源管理”菜单后,会展示出平台资讯+资讯分类两个子菜单,任何可以对其进行增删改查操作;其界面展示如下图4.8所示。

图4.8 资源管理界面图

4.8 数据交易管理页面

此功能为管理员的功能,管理员点击“数据交易”菜单后,会展示出添加数据交易栏,可以对数据交易信息进行增删改查操作;其界面展示如下图4.9所示。

图4.9 数据交易管理界面图

4.9 购买信息管理页面

此功能为管理员的功能,管理员点击“购买信息”菜单后能够对购买信息进行增删改查操作;其界面展示如下图4.10所示。

图4.10 购买信息管理界面图

4.10 交易记录管理页面

此功能为管理员的功能,管理员点击“交易记录”菜单后能够对交易记录进行增删改查操作;其界面展示如下图4.11所示。

图4.11 交易记录管理界面图

5基于区块链的物联网数据交易测试

基于区块链的物联网数据交易测试是为了检验软件是否达到设计要求,是否存在错误,通过测试的方法来检查基于区块链的物联网数据交易,以便发现基于区块链的物联网数据交易中的错误。测试工作是保证基于区块链的物联网数据交易质量的关键。

5.1 调试部分问题

问题1:数据库无法添加中文。

解决过程:重新创建数据库,将库的编码格式改为utf8。

效果:能在新库的表中添加中文。

问题2:控制台报错前台与后台参数不一致

解决过程:检查代码,找到报错参数完成修改,继续报错,服务器移除项目重新运行。

效果:重启项目不再报错。

问题3:报错No bean named 'sysLogServiceImpl' available找不到名为sysLogServiceImpl的bean的对象。

解决过程:询问导师报错原因,发现错误原因是未添加注解@Service,需要在在impl实现类的外面添加@Service注解。

效果:重新debug项目无报错。

问题4:启动项目时报错:Mapped Statements collection does not contain value for

解决过程:网上搜索解决办法,出错可能的原因有多个,经过努力排查,错误原因是mapper映射地址有误。在mybatis-config里重新配置地址。

效果:项目启动正常

5.2 系统测试用例

系统测试包括:数据交易添加功能测试、购买信息功能测试、交易记录添加功能测试、余额充值功能测试这四大功能测试,如表5.1到5.4所示:

表5.1数据交易添加功能测试表

测试名称

测试功能

操作过程

预期结果

测试结果

数据交易添加功能模块测试

管理员添加数据交易功能是否正常

管理员登录成功后点击“添加数据交易”菜单

管理员根据提示并依次输入数据交易名称+数据名称+数据分类+出售用户+用户编号等,后点击“提交”按钮

数据交易添加信息功能正常

表5.2 购买信息功能测试表

测试名称

测试功能

操作过程

预期结果

测试结果

购买信息添加功能模块测试

系统用户添加购买信息功能是否正常

系统用户登录成功后点击“添加购买信息”菜单

系统用户根据提示并依次输入数据名称+出售价格等,后点击“提交”按钮

购买添加信息功能正常

表5.3 交易记录添加功能测试表

测试名称

测试功能

操作过程

预期结果

测试结果

交易记录添加功能模块测试

交易记录添加交易记录功能是否正常

管理员登录成功后点击“添加交易记录”菜单

管理员根据提示并依次输入用户编号+购买用户等,后+用户地址

数据类型点击“提交”按钮

交易记录添加信息功能正常

表5.4余额充值功能测试表

测试名称

测试功能

操作过程

预期结果

测试结果

余额充值功能模块测试

余额充值功能是否正常

系统用户登录成功后点击余额充值中的“开取”按钮

系统用户根据提示填写充值信息点击“提交”按钮

余额充值信息功能正常

5.3 系统测试结果

通过上面章节编写基于区块链的物联网数据交易的测试用例,已经测试完毕了数据交易添加功能测试、购买信息测试、交易记录添加功能测试、余额充值功能测试,通过这4大模块为基于区块链的物联网数据交易的后期推广运营提供了强力的技术支撑。

结论

至此,基于区块链的物联网数据交易已经结束,在开发前做了许多的准备,在本系统的设计和开发过程中阅览和学习了许多文献资料,从中我也收获了很多宝贵的方法和设计思路,对系统的开发也起到了很重要的作用,系统的开发技术选用的都是自己比较熟悉的,比如SSM、JAVA技术、MYSQL,这些技术都是在以前的学习中学到了,其中许多的设计思路和方法都是在以前不断地学习中摸索出来的经验,其实对于我们来说工作量还是比较大的,但是正是由于之前的积累与准备,才能顺利的完成这个项目,由此看来,积累经验跟做好准备是十分重要的事情。

当然在该系统的设计与实现的过程中也离不开老师以及同学们的帮助,正是因为他们的指导与帮助,我才能够成功的在预期内完成了这个系统。同时在这个过程当中我也收获了很多东西,此系统也有需要改进的地方,但是由于专业知识的浅薄,并不能做到十分完美,希望以后有机会可以让其真正的投入到使用之中。

参考文献

[1]金炜,张戈力.基于技术融合-演进模型的物联网和区块链技术在能源物联网中的应用分析[J].物联网技术,2022,12(11):117-120.DOI:10.16667/j.issn.2095-1302.2022.11.035.

[2]李敦锋,肖瑶,冯勇.一种面向物联网数据交易的高效PCN路由策略[J].计算机科学,49(S2):696-700.

[3]白翔,许从方,柳兴,张磊.区块链物联网安全技术综述及关键技术分析[J].信息技术,2022(10):24-30+40.DOI:10.13274/j.cnki.hdzj.2022.10.005.

[4]王棋.基于SSM框架的网上摄影系统设计与实现[J].电子质量,2022(10):89-93.

[5]谢霜.基于Java技术的网络管理体系结构的应用[J].网络安全技术与应用,2022(10):14-15.

[6]苏婉怡,揣小龙,赵国松,王煜尧.基于Java技术的考试系统关键点研究[J].无线互联科技,19(18):58-60.

[7]杨玉莲.基于SSM框架的智能煤质化验室综合管理系统[J].煤矿现代化,31(05):100-104+109.DOI:10.13606/j.cnki.37-1205/td.2022.05.005.

[8]林佳一.混合式教学在高职MySQL数据库课程的实践研究[J].电脑知识与技术,18(26):133-135.DOI:10.14004/j.cnki.ckt.2022.1737.

[9]李罡,周正茂. 基于Java技术实现内存键值数据管理的方法及其装置[P]. 北京市:CN114840498B,2022-09-13.

[10]王劲松,杨唯正,赵泽宁,魏佳佳.基于有向无环图的区块链技术综述[J].计算机工程,48(06):11-23.DOI:10.19678/j.issn.1000-3428.0064002.

[11]刘文妍. 面向区块链与物联网融合的数据筛选及交易排序服务研究[D].山东大学,2022.DOI:10.27272/d.cnki.gshdu.2022.000754.

[12]张学典,林至锽.一种基于区块链的物联网架构设计[J].软件导刊,21(05):145-150.

[13]郭红,基于java的软件开发环境检测软件V1.0. 湖北省,武汉东湖学院,2021-10-01.

[14]高宇波. 基于区块链与雾节点信誉的物联网访问控制和数据共享的研究[D].西安理工大学,2021.DOI:10.27398/d.cnki.gxalu.2021.000861.

[15]张亚川. 基于区块链的物联网数据共享模型与关键机制的研究与实现[D].北京工业大学,2021.DOI:10.26935/d.cnki.gbjgu.2021.000118.

[16]杨晟. 基于泛在电力物联网与区块链的综合能源服务研究[D].华北电力大学(北京),2021.DOI:10.27140/d.cnki.ghbbu.2021.001174.

[17]高翩翩. 基于区块链的物联网智能合约模型[D].江苏科技大学,2021.DOI:10.27171/d.cnki.ghdcc.2021.000383.

[18]Witsarut Sriratana,Vittaya Khagwian,Sutham Satthamsakul. Analysis of Electric Current by Using MySQL Database on Web Server for Machine Performance Evaluation: A Case Study of Air Conditioning System[J]. 제어로봇시스템학회 국제학술대회 논문집,2020.

[19]. Design and Implementation of ERP System Based on SSM Framework[J].,2020,440(5).

[20]Margaretha Ohyver,Jurike V. Moniaga,Iwa Sungkawa,Bonifasius Edwin Subagyo,Ian Argus Chandra. The Comparison Firebase Realtime Database and MySQL Database Performance using Wilcoxon Signed-Rank Test[J]. Procedia Computer Science,2019,157(C).

[21]Ping Wanxin,Chen Yuankun,Hou Xiaoyan. Design of Campus Bicycle Rental Management System Based on SSM Framework[J]. Journal of Physics: Conference Series,1314.

致  谢

时间过的很快,不知不觉,在中北大学的学习生活即将结束。毕业之际,我真诚地向帮助过我的老师、家人、同学、朋友们表达感谢。首先要感谢的是我的母校。感谢母校给了我美好的生活和优越的学习环境,使我能学到了很多知识,也不断的变得优秀;感谢家人在这四年期间一直给与我的爱和无条件的支持,让我没有后顾之忧地完成学业;感谢软件学院的任课老师们给我鼓励和认可,让我有信心去做好每一件事情;感谢同学们的帮助,让我的大学生活更有意义。在此次毕业设计的实现过程中, 我得到了老师们的耐心指导让我顺利完成了该设计。从最初的选题和开题开始,老师就给予我很多帮助,他们认真负责的态度、丰富的教学经验让我学到了很多。

同时也要感谢我敬爱的班主任和实训课程的老师,他们在各个方面都教给了我丰富的经验,在面对各种困难时如何处理。因为今年的特殊性,老师们不仅在学习中给我以精心的指导,同时还在其它方面给予我观关怀,指导老师不辞辛苦的为大家录制视频和一遍遍讲解让我心怀感激之情。在此,我真诚的感恩、感谢我的指导教师们。

还要感谢实习期间不厌其烦教导我鼓励我的技术师傅,他指导了我各个方面的技巧,尤其是编程方面,迄今我的很多技巧和编写规范都有赖于他的指导、纠正。

最后还要特别感谢身边的各位同学们,一直支持鼓励我,无论何时何种境况。我很荣幸获得同学们的帮助,也很开心能够和大家共度大学四年的时光。

最后的最后,再次发自肺腑的感谢所有帮助过我的人。

关注&点赞&收藏&私信博主,免费领取项目源码

原文地址:https://blog.csdn.net/2301_79494083/article/details/135520059

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读903次。文章主要介绍了收益聚合器Beefy协议在币安智能链测试网网上的编译测试部署流程,以Pancake上的USDC-BUSD最新Curve版流动池的农场质押为例,详细介绍了完整的操作流程。_怎么在bsc网络上部署应用
文章浏览阅读952次。比特币的主要思路是,构建一个无中心、去信任的分布式记账系统。交易签名只能保证交易不是他人伪造的,却不能阻止交易的发起者自己进行多重交易,即交易的发起者将一个比特币同时转账给两个人,也就是所谓的双花。比特币应用的区块链场景也叫做公链,因为这个区块链对所有人都是公开的。除此之外,还有一种区块链应用场景,被称作联盟链。区块链的出现,使得低成本,去信任的跨组织合作成为可能,将重构组织间的关系,这个关系既包括企业间的关系,也包括政府和企业间的关系,还有政府部门间的关系。
文章浏览阅读2.5k次。虚拟人从最初的不温不火,到现在步入“出生高峰期”,元宇宙可以说是功不可没。此前,量子位发布了《虚拟数字人深度产业报告》,报告显示,到2030年我国虚拟数字人整体市场规模将达到2700亿元。其中,“身份型虚拟人”市场规模预计达到1750亿元,占主导地位,而“服务型虚拟人”总规模也将超过950亿元。得益于AI、VR/AR 等技术的发展,虚拟人的应用场景正在从传统的虚拟偶像等娱乐行业迈向更多元化的领域。_最喜欢的虚拟角色
文章浏览阅读1.3k次,点赞25次,收藏13次。通过调查和分析用户需求、兴趣和行为,你可以更好地定位你的目标受众,并在市场中找到你的定位。在设计你的Web3.0项目时,注重用户界面的友好性、交互流畅性和功能的创新性,以提供独特的用户体验。通过与有影响力的人或组织进行合作,推广你的Web3.0项目。通过与他们分享你的项目并抓住他们的推荐,可以迅速获得更多的关注度。通过优化你的网站和内容,将有助于提高你的排名,并增加有机流量。通过提供奖励激励计划,如空投、奖励机制等,激励用户参与你的Web3.0项目。的人或组织合作,可以增加你的项目的曝光度。
文章浏览阅读1.7k次。这个智能合约安全系列提供了一个广泛的列表,列出了在 Solidity 智能合约中容易反复出现的问题和漏洞。Solidity 中的安全问题可以归结为智能合约的行为方式不符合它们的意图。我们不可能对所有可能出错的事情做一个全面的列表。然而,正如传统的软件工程有常见的漏洞主题,如 SQL 注入、缓冲区超限和跨网站脚本,智能合约中也有反复出现的。_solidity安全漏洞
文章浏览阅读1.3k次。本文描述了比特币核心的编译与交互方法_编译比特币
文章浏览阅读884次。四水归堂,是中国建筑艺术中的一种独特形式。这种形式下,由四面房屋围出一个天井,房屋内侧坡向天井内倾斜,下雨时雨水会从东西南北四方流入天井,从而起到收集水源,防涝护屋的作用,寓意水聚天心,天人合一。在科技产业当中,很多时候我们需要学习古人的智慧与意蕴,尝试打通各个生态,聚四方之力为我所用,这样才能为最终用户带来最大化价值。随着数字化、智能化的发展,算力成为生产力的根基。在这一大背景下,算力需要贯通软..._超聚变csdn
文章浏览阅读1k次,点赞24次,收藏19次。云计算和区块链是当代科技领域两个备受关注的核心技术。本文将深入探讨云计算和区块链的发展历程,详细剖析其起初阶段的奠基、面临的问题、业务内容、当前研究方向、用到的技术、实际应用场景、未来发展趋势,并提供相关链接供读者深入了解。
文章浏览阅读1.5k次。融入对等网络的奥妙,了解集中式、全分布式和混合式对等网络的差异,以及区块链网络的结构与协议,让你跃入区块链的连结网络。揭开密码学的神秘面纱,探寻对称密码学、非对称密码学、哈希函数、数字签名等关键技术,让你了解信息安全的核心。解码共识算法的精髓,从理论到实践,从PoW、PoS到PBFT,让你深入了解区块链如何达成共识。探索智能合约的世界,从定义到生命周期,从执行引擎到开发与部署,带你进入无限可能的合约领域。了解令人惊叹的区块链世界,从概念到价值,从发展历程到政策法规,一篇章串联出区块链的精髓。
文章浏览阅读777次。8 月份,加密货币市场经历了明显的波动,比特币价格波动幅度较大。与此同时,NFT 市场出现大幅下跌,引发了人们对这一新兴行业未来发展趋势的担忧
文章浏览阅读8.8k次,点赞53次,收藏37次。近二十年来,我国信息科技发展日益成熟,出现的网络完全问题也是“百花齐放”。而元宇宙作为5G技术、AR/VR技术、云计算以及区块链等技术的组合体,其安全性指定会被人们所广泛关注。根据前面所讲,元宇宙融合了虚拟世界和现实世界,通过数据将现实世界的各种元素映射到数字化的虚拟世界中。所以没有数据,就等于没有元宇宙的一切;没有信息安全,元宇宙的社会生产、生活就不能正常有序地进行。所以足以可见数据安全、信息安全对元宇宙发展起到的重要作用!!_元宇宙 安全计算
文章浏览阅读1.4k次。最早使用历史 1991年采用 时间戳 追溯 数字文档,之后 2009年后创始人**中本聪** (satoshi nakamoto )日裔美国人,在设计比特币数字货币中将此理念写入应用程序中_web3.0学习
文章浏览阅读1.7k次。DeFi收益来源全面概述_drfi收益
文章浏览阅读941次,点赞17次,收藏21次。号外:教链内参1.28《从BTC现货ETF的近期数据看到的》隔夜BTC经历现货ETF通过后的情绪冷静,一度破位40k后又逐渐修复至42k上方。请珍惜42k的BTC吧。也许到下个周期,我们将不再有机会见到这个高度的BTC了。下面,让我们重温,42k的BTC,在过去四年穿越牛熊的过程中,带给我们的启迪吧。需要提醒的是,历史文字,自有历史局限性,回顾,也须带着批判性的目光阅读和审视。2021年2月8日,...
文章浏览阅读1.2k次,点赞23次,收藏21次。其实一开始我也是这么想的,但根据PoW算法机制,如果你的计算量不够大,是无法控制区块链的走向的,也就是说,即使你投入了大量的成本用于完成任务,也不能保证自己成功。例如,你持有100个币,总共持有了30天,那么,此时你的币龄就为3000,这个时候,如果你发现了一个PoS区块,那么你的币龄就会被减去一定的值,每减少365个币龄,将会从区块中获得0.05个币的利息(可理解为年利率5%),那么在这个案例中,利息=3000×5%/365=0.41个币。前面说过,谁的算力强,谁最先解决问题的概率就越大。
文章浏览阅读1.9k次。这里主要实现的部分继续下去,对 Blockchain 这个对象有一些修改,如果使用 TS 的话可能要修改对应的 interface,但是如果是 JS 的话就无所谓了。需要安装的依赖有:express现在的 express 已经不内置 body-parser,需要作为单独的依赖下载request不下载会报错,是使用 request-promise 所需要的依赖和已经 deprecated 了,具体 reference 可以参考。_js区块链
文章浏览阅读1k次,点赞19次,收藏19次。作者:Zach Pandl Grayscale编译:象牙山首席村民 碳链价值以太坊在2023年取得了丰厚的回报。但表现不如比特币以及其他一些智能合约公链代币。我们认为,这反映了今年比特币特有的积极因素以及以太坊链上活动的缓慢复苏。尽管以太坊的涨幅低于比特币,但从绝对值和风险调整值来看,今年以太坊的表现优于传统资产类别。以太坊不断增长的L2生态系统的发展可能会吸引新用户,并在2024年支撑以太币的...
文章浏览阅读908次,点赞20次,收藏20次。通证是以数字形式存在,代表的是一种权利、一种固有和内在的价值。徐教授告诉我:多年的职业经历,多年的为易货贸易的思考,认识到在处理贸易和经济领域的关系时,应以提高人民生活水平、保证社会成员充分就业、保证就业成员实际收入和有效需求的大幅稳定增长、实现世界资源的充分利用以及扩大货物的生产和交换为目的,期望通过达成互惠互利安排,实行公开、公平、公正的“三公原则”,开展国家与国家、企业与企业之间的易货贸易,规避因信用问题引起的各类风险,消除国际贸易中的歧视待遇,促进全球国家的经济发展,从而为实现上述目标做出贡献。
文章浏览阅读2.5k次。由于webase文档原因,查找起来比较局限,有时候想找一个api却又忘了在哪个模块的目录下,需要一步一步单独点,而利用文档自带的检索功能又因为查找文档全部信息,显得十分缓慢,所以整理了有关WeBASE的api列表但不可否认,现在只有列表,没有对应的页面跳转,文章目的也只是为了多了解webase的接口_webase私钥管理里获取
文章浏览阅读1.4k次,点赞28次,收藏21次。基于​openzeppelin来构建我们的NFT,并用一个例子来手把手的说明如何在opensea快速发布自己的NFT智能合约(ERC721)。