掌桥专利:专业的专利平台
掌桥专利
首页

一种能源分布式交易信息物理系统

文献发布时间:2023-06-19 19:28:50


一种能源分布式交易信息物理系统

技术领域

本申请属于区块链技术领域,特别是涉及一种能源分布式交易信息物理系统。

背景技术

区块链技术的诞生和发展仅十年左右,在能源领域的应用尚处于早期阶段。区块链技术在能源领域的应用场景较少、技术发展不成熟、应用工具不完善等问题突出,当前应用主要集中在分布式能源交易、微电网和P2P能源交易等领域。全球能源区块链应用也仍处于小范围试点阶段。主要存在以下问题:一是以共识算法为代表的区块链的核心技术优化和完善空间较大;二是区块链计算与处理效率还难以适配高频度应用环境;三是系统吞吐量小、延迟高以及区块存储容量低,难以应对数据量巨大、系统产销实时性高的能源领域。区块链受共识、广播速度、网络速度、区块大小等多方面影响,交易速度并不理想。比特币交易速度仅为6~7笔每秒,以太坊由于区块gas限制,也容易发生拥堵。

同时,针对基于区块链进行的能源点对点交易大多数依赖于用户模拟申报或者由计算机生成,而未有实际系统进行验证和交互。这也不利于区块链能源交易系统的落地应用。

申请内容

1.要解决的技术问题

基于现有区块链技术在能源交易领域落地困难的问题,本申请提供了一种能源分布式交易信息物理系统。

2.技术方案

为了达到上述的目的,本申请提供了一种能源分布式交易信息物理系统,包括依次连接的能源交易模块,轻量区块链模块和硬件系统模块,所述硬件系统模块与所述能源交易模块连接;

用户在所述能源交易模块进行申请交易,用户选择作为买方或卖方发布交易信息,所述能源交易模块按照价格优先,时间优先原则匹配交易,生成交易结果;所述轻量区块链模块读取用户申请交易信息和匹配结果信息,分别上传至生成交易链和交易结果链,同时将数据传输至所述轻量区块链模块的数据库模块中;所述硬件系统模块读取所述交易结果并进行实际电能传输,由智能电表读取所述硬件系统模块实际传输电量,并由所述硬件系统模块的信息物联网模块将传输情况上传至所述能源交易模块。

本申请提供的另一种实施方式为所述能源交易模块中用户可选择交易时间段为:保证对于单个用户而言,每个小时内撮合的电量等于其所需电量或位于电量上下限的区间内,并且时间段内总的撮合电量等于所需交易总量。

本申请提供的另一种实施方式为:所述撮合包括考虑到需求多样性与撮合准确性,用户有三种输入方式,撮合过程开始前,需要对用户通过三种方式输入的数据进行处理。

本申请提供的另一种实施方式为:所述输入方式包括输入能源交易总量、输入每小时的交易电量和输入每小时的交易电量上下限。

本申请提供的另一种实施方式为:所述轻量区块链模块包括私钥验证层,智能合约层,区块链层,数据库层和交叉检验层;所述私钥验证层用于在用户登录系统准备交易时的身份验证;所述智能合约层用于发布交易,交易撮合,违约处理和交易结算;所述区块链层用于对交易撮合合约生成的数据进行存储和将执行的交易结算合约的结果进行存储;所述数据库层用于存储数据;所述交叉检验层用于同步区块链存储数据和数据库存储的数据,使数据库数据具有安全性。

本申请提供的另一种实施方式为:所述生成交易链包括交易记录ID、买方ID、卖方ID、交易时间、交易价格、交易电量、区块Hash和父区块Hash;所述交易结果链包括交易记录ID、买方ID、卖方ID、交易时间、价格、合约电量、卖方实际出电量、买方实际用电量、违约情况、区块Hash和父区块Hash。

本申请提供的另一种实施方式为:所述违约情况包括双方均不违约、买方违约、卖方违约和双方均违约。

本申请提供的另一种实施方式为:所述硬件系统模块包括分布式光伏板,储能电源和灯泡,所述硬件系统模块与所述智能电表连接,所述硬件系统模块之间相互连接。

本申请提供的另一种实施方式为:所述交易信息包括期望交易价格、交易日期、交易时间段。

3.有益效果

与现有技术相比,本申请提供的能源分布式交易信息物理系统的有益效果在于:

本申请提供的能源分布式交易信息物理系统,为一种基于轻量区块链的能源分布式交易信息物理系统;属于能源分布式交易信息物理系统开发领域,尤其涉及对区块链技术升级与性能提升,及其在实际分布式能源交易落地中的应用研究。

本申请提供的能源分布式交易信息物理系统,解决现有区块链技术在能源交易领域落地困难的问题,为区块链技术应用化提供新的解决方法。

本申请提供的能源分布式交易信息物理系统,能够降低交互功耗,构建轻量型区块链系统,打造出可插拔型普适的轻量区块链系统,使得区块链技术在应用模式上更为成熟完善。

本申请提供的能源分布式交易信息物理系统,能够促进分布式能源用户以更加灵活的方式参与市场交易,用户可以根据自己的实际情况选择交易时间和交易量,这一改进将大大促进交易的灵活性,增加用户分布式发电收益以及降低用电成本。

本申请提供的能源分布式交易信息物理系统,实现能源交易后的真正调度,且实现和信息层面的交互,能够有效地改善现今能源区块链大多仍局限于仿真分析和测试的现状,工程开发人员可以据此进一步开展相关研究工作。

附图说明

图1为本申请的违约情况分析示意图;

图2为本申请的轻量区块链整体架构示意图;

图3为本申请的基于区块链分布式能源交易系统框架示意图;

图4为本申请的智能电表、数据读取模块实物图以及连线方式示意图;

图5为本申请的DL/T 645协议下的智能电表数据传输流程示意图;

图6为本申请的DL/T 645协议下数据帧格式示意图;

图7为本申请的从站正常应答时,返回数据帧格式示意图。

具体实施方式

在下文中,将参考附图对本申请的具体实施例进行详细地描述,依照这些详细的描述,所属领域技术人员能够清楚地理解本申请,并能够实施本申请。在不违背本申请原理的情况下,各个不同的实施例中的特征可以进行组合以获得新的实施方式,或者替代某些实施例中的某些特征,获得其它优选的实施实施方式。

参见图1~7,本申请提供一种能源分布式交易信息物理系统,包括依次连接的能源交易模块,轻量区块链模块和硬件系统模块,所述硬件系统模块与所述能源交易模块连接;

用户在所述能源交易模块进行申请交易,用户选择作为买方或卖方发布交易信息,所述能源交易模块按照价格优先,时间优先原则匹配交易;所述轻量区块链模块读取用户申请交易信息和匹配结果信息,分别上传至生成交易链和交易结果链,同时将数据传输至所述轻量区块链模块的数据库模块中;所述硬件系统模块读取交易结果并进行实际电能传输,由智能电表读取所述硬件系统模块实际传输电量,并由所述硬件系统模块的信息物联网模块将传输情况上传至所述能源交易模块。

硬件系统模块组成。能源交易模块对用户交易进行设计,用户根据市场行情和自身需求申请交易时,可以选择作为买方或卖方发布交易信息。发布交易时需要期望交易价格、交易日期、交易时间段等信息;轻量区块链模块与现有区块链相比,将矿工机制等进行删减,保留智能合约功能和链式数据结构,同时添加数据库作为数据存储的辅助工具,保证能源交易公平性和交易结果不可篡改性;硬件系统模块搭建离网运行的实际系统,包含光伏发电用户,储能用户等,一方面实现能源实际传输,另一方面实现硬件模块与信息模块的信息交互。本发明在信息物理模块面均实现能源交易,对未来发展分布式能源交易具有较强参考意义。

1.模拟微网示意

平台的总体框架如图3所示,总体由电网、大容量储能设备、智能电表与包括光伏、储能、普通用电设备在内的各类负载组成。

考虑到实验的安全性与独立性,本实验不依赖并网进行,而是通过整流器-大容量储能设备-逆变器的模式进行实际电网的模拟。后续连接四类用户,其负荷类型分别为普通用电负荷、光伏负荷+普通用电负荷、储能电池+普通用电负荷与储能电池+光伏负荷+普通用电负荷。为吸收电网与复载侧电能,需要利用整流与逆变装置串接在储能设备前后,在研究中也多将整流-储能电池-逆变装置集合成套。而光伏负荷作为典型的送电型负荷,也需前置光伏逆变器并进行一定的波形调制。

软硬件层面通信由智能电表完成,其通过模拟电网连接到各个用户,并实时检测用户各类型负载电量,上传至交易系统后端,在后文中也将介绍数据传输的方法。

2.基于普通户用电表的智能电表设计

自2007年以来,智能电表采用了通用的DL/T 645协议进行数据的处理。因此,本实验以此协议为中心,结合485-TTL转换器与ESP8266 WIFI模块进行电表测量数据的传输。

需要注意的是,由于模拟用户设备包括用电型与送电型,所以电表必须拥有同时测量双向功率的功能,另外也应具备485通信模块。本实验采用了林洋DDZY71-J型单相费控智能电能表,其实物与连线图如图4所示。

参照图4,需要将485-TTL转换器的A、B端口与电表的A、B端口(即11、12号口)分别相连,并将485-TTL转换器的RX/TX端口与ESP8266的TX/RX端口相连,完成数据传输的硬件连线。

3.智能电表与软件系统的通信

对于数据传输的软件部分,本申请采用ARM编译器,整体数据传输的流程为:1)寻找电表存储数据的地址;2)读取地址中存储的电表数据;3)将读取的数据类型转为十进制;4)借助云服务器平台,将数据传输到能源交易系统的后端。电表数据传输流程图如图5所示。数据传输过程依靠Arduino编译器进行。基于DL/T645协议和MQTT(Message QueuingTelemetry Transport,消息队列遥测传输协议)协议的智能电表数据传输流程如图6所示。首先,ESP8266 WIFI模块与智能电表进行互动,采集电表存储数据的地址,读取地址中存储的电表数据并将读取的数据类型转为十进制。接下来,ESP8266 WIFI模块与云服务器进行互动,在验证数据存储于正常后成功将数据传输到BTM-P2P交易系统的服务器后端。

依照DL/T 645协议,读取电表电量时,其命令格式如图6所示,其中68H、CS与16H分别为帧起始符、校验码与结束符。依照图6的数据传输流程,在读取电表存储数据前应先读取电表数据地址,虽然电表地址多标示在电表型号下方,但是考虑到不同电表厂家地址格式不尽统一,准确的读表地址命令为:FE FEFEFE68 AAAAAAAAAAAA 681300DF 16,其中FE为前导地址。

在读取电表地址之后,可依据《多功能电能表通信规约》标准文档(下文简称“通信标准文档”),进行不同数据的读取,下文将以正向有功总电量为例,演示数据读取与处理的过程。假设表地址为12345678,由通信标准文档可知,正向有功总电量的数据标识DI0~DI3为00000100,而数据与传输运算方式规定:主站加0x33,从站减0x33,因此数据标识DI0~DI3变为33333433,从而可以得出读取正向有功总电量的命令为:FE FEFEFE6878563412000068110433333433C616。其中,785634120000对应表地址,传输次序低在前,高在后。11表示读数据命令,04表示数据域长度为4。

若从站正常应答,其返回数据帧格式如图7。其中控制码C=91H为无后续数据帧,C=B1H时为有后续数据帧。对于返回的数据N1~Nm,应将每位减去0x33后再转为十进制格式,方为所得数据。在得到电表测量数据后,单片机会结合云服务器平台,将数据发送至预设的域名下,若数据域与单片机预设域名不符,则由云服务器平台进行数据域校对,保证电表数据可以顺利传输。最后,由能源交易系统在云端进行数据调用,完成由硬件至软件的数据传输流程。

进一步地,所述能源交易模块中用户可选择交易时间段为:保证对于单个用户而言,每个小时内撮合的电量等于其所需电量或位于电量上下限的区间内,并且时间段内总的撮合电量等于所需交易总量。

进一步地,所述撮合包括考虑到需求多样性与撮合准确性,用户有三种输入方式,撮合过程开始前,需要对用户通过三种方式输入的数据进行处理。

进一步地,所述输入方式包括输入能源交易总量、输入每小时的交易电量和输入每小时的交易电量上下限。

能源分布式交易市场的参与方式与信用机制

1.用户申请交易

用户根据市场行情和自身需求申请交易时,可以选择作为买方或卖方发布交易信息。发布交易时需要期望交易价格、交易日期、交易时间段等信息。对于交易电量,考虑到需求多样性与撮合准确性,用户有三种输入方式:输入能源交易总量、输入每小时的交易电量、输入每小时的交易电量上下限。

2.撮合过程

撮合过程开始前,需要对用户通过三种方式输入的数据进行处理。以购电用户d,交易时间段为t∈[t

1)用户仅输入时间段内的交易总量

2)用户输入每小时的交易电量

3)用户输入每小时的交易电量上下限

下面确定每位用户每小时需要撮合的电量。购电用户d和售电用户g每个小时分别需要撮合的电量

式(4)(5)能够确保交易撮合的合理性:即保证对于单个用户而言,每个小时内撮合的电量等于其所需电量或位于电量上下限的区间内,并且时间段内总的撮合电量等于所需交易总量。

令C为信用积分,S为报价-信用联合值,E为成交量矩阵,P为成交价矩阵,A为价格系数。A不是一个固定值,可以根据实际市场的供求关系动态调整。

对于未撮合成功的电量,由电网进行满足,购电用户按照目录电价从电网购买,售电用户则按照上网电价出售给电网。根据上述撮合机制,在报价相同的情况下,信用积分越高:对于购电者,S值越高,优先级越高,即撮合成功的机会越高,并且倾向于获得较低成交价;对于售电者,S值越低,优先级越高,意味着撮合成功的机会越高,并且倾向于获得较高成交价。

3.信用积分评价体系

交易撮合机制起到了订立合约的作用。然而由于分布式能源出力的间隙性,实际能源交割过程有可能违反合约。为了规范用户行为,维护市场秩序,本节建立信用积分评价体系。

由于智能电表的引入,当实际传输电量达到合约电量时,电表会起到“拉闸断电”的作用,因此认为实际交割电量总是小于合约电量。

首先介绍信用积分计算方式。对于单个用户k,信用积分Ck的计算基于实际交割电量和合约电量之比。假设用户k不违约的交易次数为rfk,作为购电者违约的交易次数为rbuy k,作为售电者违约的交易次数为rsell k,那么其信用积分Ck为

式中实际用电量、实际出电量、合约电量均包括购售电者之间及其与电网之间的电量。初始信用积分和信用积分上限均为1,当信用积分低于0.5时,禁止用户进行交易。其次是违约情况分析。系统获取买卖双方电表数据后判断违约情况,并对违约方(被违约方)做出相应惩罚(补偿)。用户违约是指其由于自身原因导致所消耗或传输的电量少于合约电量的情况。

违约情况分析如图1所示,分为以下四种情况。1)双方均不违约:购售电者之间按照合约电量进行金额结算,电网与购售电者按照实际交割电量进行金额结算。2)售电者违约:购电者从电网获取剩余电能,若此时的目录电价>合约电价,则购电者亏损,售电者需要补偿购电者差价;若此时的目录电价≤合约电价,购电者无亏损,售电者无需补差价,但需要额外支付给购电者一笔违约金。3)购电者违约:售电者将剩余电量出售给电网,若此时的上网电价<合约电价,则售电者亏损,购电者需要额外补偿售电者差价;若此时的上网电价≥合约电价,售电者无亏损,购电者无需补差价,但需要额外支付给售电者一笔违约金。4)双方均违约:双方无需支付违约金,购售电者之间及其与电网之间均按照实际交割电量进行金额结算。

综上,引入信用积分评价体系有助于交易市场的公平稳定。用户违约不仅会造成损失,还会影响后续交易撮合的优先级,因此用户为了保护自身利益,会遵守合约规定。对于信用积分较低的用户,只有通过在后续交易中遵守合约规定,才能提高信用积分,否则将面临禁止交易的风险。

进一步地,所述轻量区块链模块包括私钥验证层,智能合约层,区块链层,数据库层和交叉检验层;所述私钥验证层用于在用户登录系统准备交易时的身份验证,用户在输入私钥和交易信息后(包含用户的公钥),系统前端用私钥加密信息(随机生成的字符串)向后端发送加密后的密文,同时立即销毁用户私钥(用于保护用户私钥),然后系统用提交信息中的公钥解密密文获得明文,系统经比对解密后的明文和用户提交信息中的数据是否一致即可判断用户公私钥是否正确,此时系统判断出公私钥是否匹配,从而决定数据是否继续往下一层继续传输。

所述智能合约层用于发布交易,交易撮合,违约处理和交易结算,按照能源分布式交易功能划分,智能合约层主要包括发布交易,交易撮合,违约处理和交易结算。申请交易合约用于将用户提交的数据储存在数据库中,方便于后续用户查看。交易撮合合约用于将用户的申请交易信息按照价格优先时间优先的原则进行匹配撮合。违约处理合约目的在于获取用户用电数据之后对用户用电数据进行分析判断用户是否违约,并在系统中记录用户违约信息。交易结算合约用于对用户用电数据结果储存在区块链和数据库。

所述区块链层用于对交易撮合合约生成的数据进行存储和将执行的交易结算合约的结果进行存储,区块链层主要存储两条链,一条为生成交易时储存的生成交易区块链,该链用于对交易撮合合约生成的数据进行存储,另一条为交易结算时储存的交易结算区块链,该链用于将执行的交易结算合约的结果进行存储。

所述数据库层用于存储数据,在业务上数据库中核心主要存储三类数据,第一类是临时数据,主要包括申请交易的信息,第二类是交易的撮合结果和交易结算的结果,包括交易是否买卖,交易的起始时间、终止时间和价格等。第三类是区块数据,生成撮合结果后,区块链层生成区块存储到底层区块链上,同时也会二次生成数据到数据库中储存。

所述交叉检验层用于同步区块链存储数据和数据库存储的数据,使数据库数据具有安全性,采用数据库和区块链双向存储的模式,在数据库和区块链之间添加一个检查模块定期读取区块链中的ID和数据并检查数据库对应字段是否一致,检查方法为顺序遍历区块链,同时检查对应数据库表中交易ID相同的数据,比对数据是否正确,如果数据库数据不正确,生成错误日志到系统待管理员查看,并用区块链数据刷新数据库的数据。

针对业务较为简单、面向普通用户的能源交易应用场景,本申请提出轻量级区块链架构,从数据存储、矿工机制、共识机制三部分进行优化整合,使得该架构具有高性能、高扩展性等特点。

1.轻量区块链整体架构

轻量区块链系统基于私钥验证层、智能合约层、区块链层、数据库层和交叉检验层方案。各部分逻辑关系如图2所示。轻量区块链相比现有区块链将现有区块链的功能进行删减和转移。删减包括删掉区块链中的共识机制和矿工机制,转移则指将大多数静态数据存储在数据库中,减少区块链层的数据存储任务。而在轻量区块链中,保留在能源分布式交易中最必要的“安全”和“不可篡改”需求,安全通过两个设计实现,一个是基于“私钥验证”模块隐私地验证用户身份,一个是基于“检查模块”保证数据库层和区块链层之间的数据一致性。“不可篡改”则通过区块链层中的链式数据结构和Hash链接进行实现。详细过程将在下文介绍。所提出的轻量级区块链架构如图2所示。首先,用户将交易信息私钥传给私钥验证模块,私钥验证通过后将交易信息传给合约部分,执行发布交易合约,进而在指定时间进行交易撮合。交易撮合的结果一方面会传入底层区块链,另一方面会存储到数据库中。底层区块链向区块链广播模块输入信息,而广播模块进而返回验证或更新结果。

与此同时,阿里云服务器监听智能电表数据,并通过数据接收模块接收,并传递数据给违约处理模块。违约处理传递结果进行交易结算,交易结算结果一方面传给底层区块链,一方面传给数据库。

最后,检查模块用于对区块链和数据库的信息进行检查,保证信息的一致性。

2.私钥验证层

在本系统中,私钥验证模块用于在用户登录系统准备交易时的身份验证,既避免中心化存储用户密码带来的隐私问题,又能有效保证参与交易的主体身份唯一性。

区别于现有的以中心化数据库存储用户账号隐私信息的方式,在区块链中,信息的传播按照公钥、私钥这种非对称数字加密技术实现交易安全。本系统采用RSA签名算法作为私钥验证方法,RSA加密是一种非对称加密,其能在不直接传递密钥的情况下,完成解密,以确保信息的安全性,避免了直接传递密钥被破解的风险。

在本系统中,用户在输入私钥和交易信息后(包含用户的公钥),系统前端用私钥加密信息(随机生成的字符串)向后端发送加密后的密文,同时立即销毁用户私钥(用于保护用户私钥),然后系统用提交信息中的公钥解密密文获得明文,系统经比对解密后的明文和用户提交信息中的数据是否一致即可判断用户公私钥是否正确,此时系统判断出公私钥是否匹配,从而决定数据是否继续往下一层继续传输。

3.智能合约层

轻量区块链与现有区块链体系中的智能合约层功能一致,即实现一种以信息化方式传播、验证或执行合同的计算机协议。事件信息传入智能合约后,立即触发智能合约进行状态机判断。

状态机就是状态转移图,它是一个有向图形,由一组节点和一组相应的转移函数组成。状态机通过响应一系列事件而“运行”。每个事件都在属于“当前”节点的转移函数的控制范围内,其中函数的范围是节点的一个子集。函数返回“下一个”(也许是同一个)节点。这些节点中至少有一个必须是终态。当到达终态,状态机停止,也就是说,状态机根据输入的状态不同进入不同的计算机运行函数,而在这些函数运行时计算机会根据函数内容进行不同的动作。

如果自动状态机中某个或某几个动作的触发条件满足,则由状态机根据预设信息选择合约动作的自动执行。轻量区块链系统中,智能合约部署在服务器后端中,由JAVA语言编写,基于Springboot框架实现。和硬件层通过MQTT系统连接,实现软硬件结合的特性。Spring框架具有很多优秀的特性,深受Java开发者喜爱。一方面,它降低了本项目复现门槛,Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护交给Spring管理,方便解耦,简化开发;同时降低了Java EEAPI的使用难度,因为Spring对Java EE开发中非常难用的一些API(JDBC、JavaMail、远程调用等)都提供了封装,使这些API应用的难度大大降低;同时该框架对声明式的事务的支持让开发者只需要通过配置就可以完成对事务的管理,而无须手动编程。另一方面,Spring具有方便测试、监控程序的特性,该框架支持JUnit4,可以通过注解方便地测试Spring程序。让本项目可测试性得到提升。其次,Spring提供各种优秀开源框架(如Struts2、Hibernate、MyBatis等)的直接支持,为本项目提供了高度的可拓展性。并且Spring提供面向切面编程,可以方便地实现对程序进行权限拦截和运行监控等功能,提高了本系统的可监控性和可控性。

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。在本系统中分布式智能电表将用户电表数据以电表ID为标识发布在MQTT服务器上,服务器监听电表ID,一旦电表ID对应的发布数据有所改变,服务器即将数据保存在数据库中供用户和系统后续查看。

按照能源分布式交易全环节功能划分,智能合约主要包括发布交易,交易撮合,违约处理和交易结算四个模块。具体功能将在下文详细介绍。

3.1申请交易

申请交易合约用于将用户提交的数据储存在数据库中,方便于后续用户查看。用户在前端输入数据提交后,申请交易合约自动执行将用户输入的期望买卖信息这一临时信息传入数据库储存,该数据用于下一交易撮合模块使用。传入字段和含义如表1所示。主要包含用户输入数据和系统自动读取或生成的数据。详细申请交易过程见第4章。

表1发布交易数据字段及含义

3.2交易撮合

交易撮合合约用于将用户提交的数据撮合为合约用于真正的交易。用户申请交易的数据将存储在数据库中,数据中记录交易起始时间,每到整点交易撮合合约自动执行撮合两小时后的交易数据。封装的模块化智能合约将执行交易撮合过程,生成交易撮合数据,最终交易撮合模块会向区块链模块提出请求以生成区块,同时会同步修改数据库数据二次存储,以便用户调用查看。其中,数据中的时间槽指用户交易能源的时间单位(小时)。

3.3违约处理

违约处理合约目的在于获取用户用电数据之后对用户用电数据进行分析判断用户是否违约,并在系统中记录用户违约信息。用户在规定时间内使用电量,智能电表在合约规定的交易结束时间向MQTT服务器发送用户电量使用数据,违约处理模块立即执行,该模块接收数据后将自动检查电表数据变化和合约规定是否一致,如不一致将根据不同的情况进行相应的处理。

3.4交易结算

数据库中存储各个用户(包括电网)的余额情况,用户可以通过充值的方式增加余额。交易结算合约用于对用户用电数据结果储存在区块链和数据库。违约处理模块处理完电表数据后,将向交易结算模块传递三方(能源买方,能源卖方,电网)的余额增减情况,交易结算模块根据数据将提交请求到区块链模块生成区块,并且同时提交数据库修改请求修改对应数据库信息实现数据二次存储。

4.区块链层

与现有区块链体系相比,轻量区块链系统弱化了共识机制和其所引入的矿工角色在能源分布式交易中的必要性。区块链在能源分布式交易中需要解决的核心问题是保证用户的安全隐私,以及保证交易的去中心化不可篡改。安全隐私通过前文所述的私钥验证加以保证,而交易的不可篡改则基于链式的数据结构和广播机制以实施。

在本系统中,底层区块链包括生成区块、存储区块和验证区块三大模块。下文将详细介绍这三大模块。

生成区块模块用于在现有链后生成新区块。生成区块模块为了提高生成区块链的效率,采用直接由专门生成区块的节点生成区块而非基于传统区块链中分布式账本以及矿工争夺节点的机制。为保证系统的去中心化,生成区块模块功能包含在系统的智能合约中,用户一旦提交请求便由系统自动运行函数生成区块而无需用户提供矿机算力只需要用户提出请求即可,而系统管理员并无直接从后台生成区块的权限,此举区别于传统矿工争夺或权益证明因区块生成权争夺和同步导致的生成区块的低效情况,而用户只需要提出交易请求,智能合约自动执行利用服务器算力完成交易,降低了用户门槛,提高了用户体验度。同时由于系统完全由服务器提供算力而无需用户提供算力解决了因不同用户算力不平等竞争带来的新一轮公平问题。

区块具体生成方式为将数据以字典形式保存,再将此字典作为区块加入在系统的链表后方。为了保证区块链的安全性,保留了区块链父哈希、子哈希的数据结构以及私钥验证模块,保证了区块链数据不可篡改的特性。

存储区块功能负责在系统中存储具体链。在存储区块功能中,系统存储两条区块链,一条为生成交易时储存的生成交易区块链,该链用于对上文交易撮合合约生成的数据进行存储,另一条为交易结算时储存的交易结算区块链,该链用于将上文执行的交易结算合约的结果进行存储。该两条链可用于交叉检验层和数据库对照比对从而保证了系统的数据安全性,而数据库中对应的数据可以被用户查看到而获取自己的交易数据,生成的交易区块数据和交易结算区块数据分别如表2和表3所示。

表2生成交易区块链数据

表3交易结算区块链数据

上述存储结构除了业务逻辑所需要的数据存储以外,还存储了区块链数据结构中较为核心的区块Hash和父区块Hash部分,去除了用于矿工争夺区块的随机数和困难值部分,此举是为了提高区块链的性能和出块效率,因为去除了上述数据系统在新增区块时不必进行繁杂的数据计算而只需要关心新增区块这个动作本身,在下文提到的实验中表明出块速度相比当今成熟区块链系统得到大幅上升。

在轻量区块链中,引入节点密钥。节点密钥由交易记录ID由AES公钥加密获得,对称加密所需的密钥由系统生成的唯一字符串,保证了生成区块的服务器仅为生成服务器本身而不是攻击者的服务器或者其他服务器,确保了生成区块身份的唯一性,保证了生成区块功能的安全性,进一步保证了本系统区块链的安全性。

验证区块链功能将用来在特定时机检验区块是否被篡改,进一步加强区块链的不可篡改性。验证时机在系统生成新区块到区块链后,在验证过程中,存储区块链节点将按照顺序遍历区块链,并对区块做两次检查。第一次检查将上一区块hash得到hash值,与当前区块的父Hash字段进行比对,如有不相同的情况,则验证失败说明区块被篡改;第二次检查用公钥解密区块的节点密钥,并将明文与交易记录ID比对,不相同则验证失败。

区块链广播用于多个不同节点的区块匹配验证,从而保证多节点区块数据同步的功能。轻量级区块链采用最长链验证方案,即新增区块节点将区块链信息发送给另一地区的区块链节点,另一地区的区块链节点比较该链和自身链长度,如果该链长度大于自身链则更新自身链。具体监听方法采用了系统中的观察者模式,即一旦目标对象发生变化观察对象就会触发对应函数做出特定的动作,系统中具体实现方法为当节点区块增加或改变则调用通知函数,发送链给相邻节点区块链并调用相邻节点的检查函数。该功能目的在于系统扩展时方案,目前系统中暂不包含该功能。

5.数据库层

数据库层主要包含存储数据的作用。在业务上数据库中核心主要存储三类数据,第一类是临时数据,主要包括申请交易的信息,第二类是交易的撮合结果和交易结算的结果。申请交易信息如表1所示,储存着用户的ID和交易相关的信息,包括交易是否买卖,交易的起始时间、终止时间和价格等,这些数据用于后来的交易撮合模块定时生成撮合结果。

生成撮合结果后,区块链层生成区块存储到底层区块链上,同时也会二次生成数据到数据库中储存。数据库中除开要存储的临时数据外,还需要存储区块链中的数据并和用户直接交互,成熟的数据库系统直接和用户交互将大大提升系统响应时间,而提高用户体验度;而底层的区块链系统将存放真正安全的数据(由区块链不可篡改这一特性保证),下文提到的交叉检验层定时检测数据库和区块链中数据的差异性保证了数据库数据的安全性。在轻量区块链中引入数据库是本技术区别于现有区块链系统的另一大特点,该数据库直接和用户交互,使本系统的响应时间和现有成熟软件系统时间一致,相比于传统区块链ETH响应速度大大提升。

6.交叉检验层

交叉检验层用于同步区块链存储数据和数据库存储的数据,使数据库数据具有安全性。本系统采用数据库和区块链双向存储的模式。为保证数据一致性,在数据库和区块链之间添加一个检查模块定期读取(将在夜晚系统负载较小的情况下进行)区块链中的ID和数据并检查数据库对应字段是否一致,真正的业务交互在数据库中,能够加快系统的响应时间,同时兼顾了安全性,提高用户体验度。

交叉检验模块将检查生成交易区块链数据和交易结算区块链数据。检查方法为顺序遍历区块链,同时检查对应数据库表中交易ID相同的数据,比对数据是否正确,如果数据库数据不正确,生成错误日志到系统待管理员查看,并用区块链数据刷新数据库的数据,保证了数据库数据的安全性和不可篡改性。

进一步地,所述生成交易链包括交易记录ID、买方ID、卖方ID、交易时间、交易价格、交易电量、区块Hash和父区块Hash;所述交易结果链包括交易记录ID、买方ID、卖方ID、交易时间、价格、合约电量、卖方实际出电量、买方实际用电量、违约情况、区块Hash和父区块Hash。

进一步地,所述硬件系统模块包括分布式光伏板,储能电源和灯泡,所述硬件系统模块与所述智能电表连接,所述硬件系统模块之间相互连接。所述硬件系统模块由分布式光伏板,储能电源以及常规灯泡等分别模拟用户,每位用户配置一个智能电表用于计量电能的流入流出,每一位用户之间通过物理线路连接,但所有用户不与当前电网系统连接。

硬件系统模块的信息物联网模块具体解释为:智能电表采用通用的DL/T 645协议进行数据处理,结合485-TTL转换器与ESP8266 WIFI模块进行电表测量数据的传输。采用ARM编译器,整体数据传输的流程为:1)寻找电表存储数据的地址;2)读取地址中存储的电表数据;3)将读取的数据类型转为十进制;4)借助云服务器平台,将数据传输到能源交易系统的后端。

尽管在上文中参考特定的实施例对本申请进行了描述,但是所属领域技术人员应当理解,在本申请公开的原理和范围内,可以针对本申请公开的配置和细节做出许多修改。本申请的保护范围由所附的权利要求来确定,并且权利要求意在涵盖权利要求中技术特征的等同物文字意义或范围所包含的全部修改。

技术分类

06120115926989