一个基于JAVA的区块链共享电桩交易模拟系统的实现

发表时间:2020/9/3   来源:《科学与技术》2020年第9期   作者:俞聪 韩泽钦 章烨清 阮顺 李然
[导读] 本文从当前火热的区块链技术出发,分析了区块链技术在推动私人共享充电桩成为一种新的汽车充电运营模式的核心地位,

         摘要:本文从当前火热的区块链技术出发,分析了区块链技术在推动私人共享充电桩成为一种新的汽车充电运营模式的核心地位,提出了一个基于Java的区块链共享电桩交易的模拟系统,并着重介绍其交易的过程,该系统使用Web Service技术实现局域网内模拟的区块链节点与节点的通信,并通过HTTP服务实现对节点通信命令的控制,结合密码学hash函数、工作量证明机制、区块数据的持久存储、UTXO模型、数字签名、P2P网络通信几个模块来模拟实现区块链技术在私人共享电桩网络的应用场景。
         关键词:区块链;私人共享电桩;点对点网络
         
         为了应对能源危机与环境污染,国家大力推动电动汽车行业的建设与发展,而在更多的实际场景中,由于缺少与日益增长的电动汽车数量相匹配的共享充电桩资源,电动汽车车主们为了寻求路边的充电桩,常常需要在手机中下载多个充电桩APP,并且在支付过程中常常因为APP多样化而导致的问题。此外,电桩的架设容易出现分布不平衡,并随着其电桩的数量增多维护成本高,而拥有少量电桩的个体户无法参与竞争,使得大量的闲散电桩资源浪费。本系统利用区块链去中心化、可追溯、不可篡改的特点,规避了传统电桩运营模式的短板,模拟实现共享充电桩的交易过程。
1核心业务流程
         通过模拟电动汽车车主前往电桩充电,充电桩扫描用户APP提供的二维码,获取对应用户的钱包地址,同时将电桩所有者区块链钱包地址一同发送至云端,由用户的APP负责去获取数据并查询区块链判断钱包余额,后执行用户钱包地址向电桩所有者钱包地址转账的操作,并且由区块链的矿工节点进行挖矿加链,对于添加到区块链上的新区块,采用广播的形式在局域网内以点对点网络的形式逐渐将最新的区块信息广播到所有的节点,以上业务流程在区块链的每一个节点之间都可以进行,并且完成数据在全网的同步。其业务流程图如图1所示。

图 1交易流程图
2平台搭建
2.1密码学hash函数
         而这里提及的hash函数,是一个算法,可以将不同长度的文本转换相同长度的,具有不可以被逆运算的散列字符串,从而获得代表该区块的一个信息摘要,在我们简化版的区块链中,每一个区块都有一个hash字段,用于存放该区块的摘要信息,而hash计算的数据来来源就是每一个区块中记录的时间戳,前一个区块的hash以及当前区块的交易信息。
2.2工作量证明
         所谓工作量就是对于区块链中的任何一个节点如果想将一个区块加入到区块链当中,必须先付出计算获得在区块链中加入区块的权限,矿工们不断的挖矿加链并获得奖励,在这种机制下,区块链得以稳定运行。而在我们的模拟系统当中,由于我们开发者作为系统的管理者,虽然采用的也是区块链式的数据存储方式,却取消了每次挖矿成功会获得奖励,而是采用如果有用户希望以个人形式加入到电桩的网络当中,就可以向管理者提出申请,从而由管理员发放一个钱包地址,并且钱包中的电子货币也将由管理员以挖矿的形式进行充值,以及抽取部分每次交易成功的手续费,从而达到平台盈利的目的。
2.3区块持久化存储
         该模拟系统采用的存储方式式以XML文档的形式存储在每一台节点机器上,在开发测试时,采用4台机器在局域网内模拟一个小型的区块链的网络,本质上它们没有任何区别都拥有对区块链的所有操作的权限,包括:挖矿、转账、新建钱包、查询余额、查询区块链等,测试时一台PC作为全节点,两台PC作为普通用户钱包节点,一台作为矿工节点,当全节点的服务开启后,所有的其余节点作为客户机的形式连接全节点主机,并同步全节点最新数据,一旦有涉及区块链的操作发生,便会由全节点在执行添加区块之后进行对数据的全网广播,从而数据又得以在节点之间进行广播达到全网互通的目的,从而确保网络内的所有的节点都同步最新的数据。
2.4 UTXO模型与优化
         交易是区块链技术的核心所在,我们实现该系统的目的就是通过区块链技术,能够安全可靠地存储交易,并且保证交易的不可抵赖性。而在区块链网络中,其没有所谓的服务器的存在,而用户的余额也并不是直接存放在数据库中,或者说在该系统中是没有余额的概念的。比特币作为一个公开的数据库,其存储数据的主体,就是一笔一笔的交易,比特币交易都是由INPUTS(输入)、OUTPUTS(输出)组成。可以简单理解为发币地址是输入、收币地址是输出。OUTPUTS用来进行一次新的加密,加密后只有收款者才能解密并动用这笔钱。而每次查询余额的操作,实际上就是要查询区块链得到对应钱包地址中未花费的交易的输出,从而计算得到剩余的余额总数。而出于对调试的方便,本系统在设置交易的时候选择每一条交易信息都对应一次挖矿操作,同时数据以XML文档的形式存储在各个节点,方便交易的查看。UTXO集的原理,就是我们将所有区块的未花费的UTXO,单独存储到一个BUCKET中。无论是进行余额查询,还是转账操作,都无需遍历查询所有的区块,查询所有的交易去找未花费UTXO了,只需要查询UTXO集即可。如果是转账操作,转账后需要及时更新UTXO集。
2.5数字签名
         对于2.4提到的交易,作为区块链的数据公开给所有区块链的用户,在开发者的角度我们编写的一键查询所有区块链钱包的函数,而即使是对普通用户来说,也可以直接通过查询区块链的数据得到交易双方的钱包地址,自然也可以查询每个地址对应的区块链的余额,那如何确保用户不会冒名进行交易呢,这里采取的方法是:找到上一笔交易,确认支付方的货币的来源,算出支付方的地址确保公钥属实,用公钥解签名数据进行验证。
2.6 P2P网络
         Web Service技术,能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件,就可相互交换数据或集成。该技术有三大技术特点:1.远程调用技术:指一台设备上的程序A可以调用另一台设备上的方法B;2.跨编程语言:是指服务端、客户端程序的编程语言可以不同;3.跨操作系统平台:是指服务端、客户端可在不同的操作系统上运行。Web Service交互的过程就是,Web Service遵循SOAP协议通过XML封装数据,然后由HTTP协议来传输数据。如图2所示为Web Service的生存期。

图 2Web Service的生存期
2.7 系统的调试与运行
本系统采用HTTP服务与Web Service服务配合模拟实现区块链的数据交互,每一台测试主机都将启用两个端口完成区块链网络的搭建。其中HTTP服务负责控制,整个项目的调试以Post Man发送HTTP请求的方式进行对诸如挖矿、交易、转账、创建钱包、查询钱包余额、添加到P2P节点等功能的控制。Web Service服务实现局域网内P2P的通信和数据交互,每个节点既可以作为客户机又可以作为服务器。
3总结
         本文侧重于介绍一个通过JAVA模拟实现简易版的区块链交易平台,并以共享充电桩为现实需求,利用区块链的去中心化,交易可追溯不可抵赖篡改的特性,以点对点的交易让支付变得更加的便捷,让分属于各个社会团体的电桩所有者都能以低成本高回报的形式主动参与其中,致力于解决当下共享充电桩闲散资源浪费,交易安全性得不到保障,维护成本高,电动汽车用户充电难等问题。
参考文献:
[1]黄奕敏. 基于区块链的充电桩系统智能合约应用研究[D]. 北京: 华北电力大学,2019:1-7.
[2]李刚, 黄奕敏, 郑顾平,等. 雷电网络在电动汽车充电交易中的技术前景[J]. 电力建设, 2018, 39(09):56-75.
[3]王浩然,陈思捷,严正,平健. 基于区块链的电动汽车充电站充电权交易:机制、模型和方法[J]. 中国机电工程学报,2019,40(02):6-11.
投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: