基于区块链和IPFS的共享储能安全交易系统应用研究

known 发布于 2025-08-25 阅读(275)

摘" 要:针对共享储能存在隐私暴露、数据安全及监管、开销大等问题,文章提出基于区块链和IPFS的共享储能安全交易系统。利用区块链实现去中心化储能交易,保证交易匿名性及交易记录不可篡改。首先采用BF-IBE算法加密交易记录,解决信息暴露的问题。引入IPFS分布式存储加密订单,提高存储查询效率。其次基于智能合约和区块链,进行去中心化可追溯监管,解决监管开销问题,确保交易金额完整,防止恶意竞争。再次结合智能合约和数字签名技术进行身份认证,确保合法用户修改储能输送状态信息,保证数据完整。最后进行安全性证明、系统实现与实验测试,分析链下、链上计算效率和资源消耗,实验结果表明系统安全高效。

关键词:星际文件系统;共享储能;隐私保护;去中心化

中图分类号:TP309;TP39" 文献标识码:A" 文章编号:2096-4706(2025)04-0145-07

Research on the Application of Shared Energy Storage Secure Trading System Based on Blockchain and IPFS

ZHAO Wanxiong, LI Juan

(Information Engineering Institute, Wuchang Institute of Technology, Wuhan" 430065, China)

Abstract: Aiming at the existing problems such as privacy exposure, data security and regulation, and high overhead in shared energy storage, this paper proposes a secure trading system for shared energy storage based on blockchain and IPFS. Blockchain is utilized to achieve decentralized energy storage transactions, ensuring transaction anonymity and immutability of transaction records. Firstly, the BF-IBE algorithm is employed to encrypt transaction records, addressing the issue of information exposure. And it introduces IPFS distributed storage for encrypted orders to improve storage and query efficiency. Secondly, it conducts decentralized and traceable supervision based on smart contracts and blockchain, resolving regulatory overhead issues, ensuring the integrity of transaction amounts, and preventing malicious competition. Thirdly, it combines smart contracts and digital signature technology for identity authentication to ensure that legitimate users modify the energy storage transmission status information and ensure data integrity. Finally, security proofs, system implementation, and experimental tests are conducted to analyze off-chain and on-chain computational efficiency and resource consumption. The experimental results demonstrate that the system is secure and efficient.

Keywords: IPFS; shared energy storage; privacy protection; decentralization

0" 引" 言

共享储能交易产业以传统运营模式为主,即由政府部门作为建设主导、以能源生产企业作为中心枢纽的运行方式,虽然这种方式很大程度上保障了共享储能交易的稳定与安全[1],但是仍然存在恶性竞争的情况导致建设资源浪费的问题,例如,恶意篡改用户能源输送状态,修改交易金额,导致资金无法正常到达业主等。同时,在整个共享储能交易的过程中,需要由政府部门主导的机构生成作为保证公平交易的仲裁凭证,即交易记录,并进行存储;交易记录一般以中心化的形式存储在政府监管机构的本地数据库中。但这种存储方式也面临着一些问题,比如:交易记录作为一种电子文件,在系统进行上传、处理和存储操作等过程中非常容易被修改;如果存储电子文档的中心数据库被攻击,不仅会丢失用户的交易记录,还可能会被窃取或篡改交易记录[2],用户隐私无法得到安全的保障;电子文档会因为系统的崩溃、中毒等问题造成数据缺失。

区块链作为一种具备透明性和开放性的分布式数据库,已广泛应用于商业领域,并在储能交易方面取得了一定成果。针对分布式能源交易,文献提出了多种模型和机制,如结合区块链与分布式能源的交易模式[3-4]、基于智能合约的分布式能源交易方案[5]、区块链与分布式优化相结合的能源交易框架[6]、基于信用的P2P电力交易模型[7]以及去中心化电能源交易平台[8]等。然而,这些研究大多未明确解决用户隐私暴露问题或系统设计与实现方法的细节。Aitzhan等人[9]提出了基于代币的私有去中心化能源交易系统,通过区块链技术、多重签名和匿名加密消息传播流提供隐私和安全性,但未提供系统设计细节。Liu等人[10]和张显等人[11]的研究分别提出了弱中心化管理的分布式新能源现货交易方法和基于区块链的绿色电力能源交易系统,但未解决区块链存储开销大和无法储存大文件的问题。本文针对共享储能交易场景,提出使用以太坊账户保证交易匿名性,结合区块链、IPFS和密码学技术防止交易信息暴露,并通过智能合约提高储存和交易效率,确保公平性和数据完整性,构建一个可监管的去中心化共享储能安全交易系统。

1" 预备知识

1.1" 区块链技术

区块链是一个分布式系统,可以为彼此不完全信任的众多节点提供可靠的服务。所有节点收集事务,形成一个块,由公钥、消息身份验证码(MAC)、签名和抗冲突哈希加密,以提供高级安全保护。区块链技术以加密与解密算法、点对点传输和分布式存储为基础,利用密码学和共识算法确保多个对等节点可以复制、同步、共享同一个账本,从而保证数据一致性、防止篡改,并提高数据安全性[12]。

1.2" 智能合约

智能合约[13]是由编程语言定义和编译的一种协议,合约参与方可以在其上执行这些协议。开发者可以使用编程语言编写智能合约,并通过区块链网络中的所有节点进行共同参与和监督。在编译智能合约时,预先设定的条件将存放在区块链中。当输入外部数据时,智能合约会自动判断该数据是否满足预先设置的触发条件,并按照规则执行合约代码,最终更新整个合约运行状态,并反馈执行结果。

1.3" 星际文件系统

星际文件系统(Inter Planetary File System, IPFS)是一个点对点分布式文件系统[14],与传统数据库通过数据所储存的具体位置进行查找不同,IPFS是根据所储存的数据内容进行查询,具有高效性和准确性。IPFS通过内容寻址来查找数据,将文件分块后,为每个块计算哈希值并构建文件检索表,然后将所有块的哈希值拼接起来并做一次哈希运算,从而得到文件的唯一标识符(CID)。资源请求者只需提供CID,IPFS便能根据文件检索表和内部路由表自动查找并合并各文件块,以还原原始文件。

1.4" Boneh-Franklin加密

Boneh-Franklin加密算法[15]是一种基于身份的加密体制,包括系统建立(Setup)、密钥提取(Extract)、加密(Encrypt)、解密(Decrypt)。Boneh和Franklin利用Fujisaki-Okamoto转换改进后,可抵抗选择密文攻击。

2" 方案设计

2.1" 系统概述

系统涵盖应用层、业务层、文件存储层、智能合约与区块链层5部分,以及用户节点、业主节点、储能电站节点3个实体。应用层是用户或业主与系统的交互入口,用户或业主节点能在此完成交易信息上传、文件索引上传与查询、金额交易等操作。业务层以密码学的加密与解密算法为核心。用户或业主节点提交重要交易记录时,系统先加密再存储,确保数据安全。交易双方节点检索文件时,系统进行解密处理。文件存储层融入分布式的星际文件系统(IPFS),业主节点提交交易信息前先加密,上传到IPFS确保安全存储、防篡改,还具备高度隐秘性和可仲裁性,保障交易记录完整性和可信度。系统设置自动操作,如身份验证、金额交易等,借助智能合约模块在去中心化前提下自动执行。区块链层,用户共享IPFS中订单记录索引信息,引入IPFS存储加密订单记录,通过智能合约上传检索信息至区块链,实现分布式存储,降低开销,提高效率。系统方案架构图如图1所示。

2.2" 系统处理流程

在交易过程中,用户节点使用业主节点的公钥加密交易信息(包括用户隐私信息如地址、储能类型和需求量等),然后将加密信息与账户地址发送给业主节点。业主节点解密交易信息后,将其整合为订单并再次加密,存储在IPFS中,并将IPFS生成的加密订单索引信息发送给用户。用户确认订单后,通过系统交易界面完成支付操作。支付完成后,业主节点通过区块链验证用户支付金额的正确性,并授权储能电站按照交易信息中记录的电量输送储能。储能输送完毕后,用户节点需通过系统界面进行身份验证,以获取修改储能状态的权限。最终,智能合约根据储能状态自动完成业主的提现操作。系统处理流程图如图2所示。

2.3" 安全性分析

本节针对提出的安全目标进行安全性分析具体内容如下:

1)匿名性。用户在交易协商中使用系统生成的伪身份,确保攻击者无法推断其真实身份。资金交易使用哈希函数生成的以太坊账户,具备隐蔽性,即使交易记录在区块链上,也无法通过账户推测出真实身份。

2)交易记录的机密性。交易记录经BF-IBE算法加密后存储,即便恶意节点获取了加密后的记录,由于无法获取用户的私钥,无法解密交易信息,确保了交易记录的机密性。

3)数据完整性。交易记录存储于IPFS分布式系统,防止通过攻击储能电站或业主本地数据库窃取记录的风险。区块链的不可篡改性保证了数据的可追溯性和完整性。智能合约作为资金流的载体,记录并监管资金流动,确保资金流和物流信息的完整性。只有经过身份认证的合法用户才能修改物流信息,防止恶意节点篡改。

4)资金流的正确性。在支付阶段结束前,智能合约记录并永久存储支付方的以太坊账户和支付金额,业主可以验证支付金额的正确性,确保资金流向正确。当用户通过身份认证并修改物流状态后,智能合约自动扣除支付平台余额并将金额转移至业主,保证资金最终到达业主。

5)身份认证。确认收货阶段,若恶意节点伪造身份试图修改输送状态以获取资金,即便其知晓用户以太坊账户,也无法通过验证,确保交易安全性。

3" 系统实现

系统采用Geth 1.10作为搭建区块链的底层架构,区块链底层基于VM虚拟机Ubuntu 16.04操作系统实现部署,并配置go-1.16等服务。智能合约开发使用Solidity语言,采用Remix平台作为编译和部署合约以及可视化界面的底层框架。使用MetaMask工具与Remix连接的方式,能够更清晰地观察交易详情,同时引入IPFS作为业务数据库。系统开发环境:Windows 10操作系统、Intel Core i7处理器、内存16 GB、硬盘空间512 GB。下面介绍关键代码的编写过程。针对交易信息交互阶段,采用基于Java语言的Boneh-Franklin加密算法进行功能实现,其中Java版本为14.0.1,编译平台选用InterlliJ IDEA 2020。

3.1" 交易记录加解密

3.1.1" 生成参数

首先使用import关键字导入所需的模块文件,主要需要JPBC库里面的Element、Field、Pairing、PairingFactory这4个包文件,编写代码如下系统首先需要生成特定参数,用于各实体节点的匿名身份标识、公私钥生成。一般需要调用JPBC库中的特定函数newElement(),getGT()生成,代码如下:

#1.变量初始化

pairing = PairingFactory.getPairing(\"a.properties\");

checkSymmetric(pairing);

Zr = pairing.getZr();

r = Zr.newElement();

#2.生成公私钥以及相关参数

G1 = pairing.getG1();

Ppub, Qu, Su, V = G1.newElement();

#3.初始化元素群

Field GT = pairing.getGT();

T1,T2 = GT.newElement();

3.1.2" 加密操作

在生成特定参数后,系统根据用户输入的身份信息生成对应的匿名身份信息,同时为所有实体节点生成公私钥。用户节点通过系统操作界面对交易记录进行加密操作。调用newRandomElement()函数获取随机数用户计算加密公式,然后分别计算V = α·P,W = r⊕H2((e(Ppub,QU)α),T = m⊕H4(r),代码如下:

#1.计算用于加密的参数

α=pairing.getGT().newRandomElement().getImmutable();

r = Zr.newRandomElement().getImmutable();

V = P.mulZn(r);

#2.计算密文

T1 = T1.powZn(r).getImmutable();#计算H2(e(Ppub,Qu)^r)

W = xorEncode(m, pairing.getGT().newElement().setFromHash(T1.toBytes(), 0,3).getImmutable().toBytes());

T=xorEncode(m,pairing.getZr().newElement().setFromHash(α.toBytes() ,0,α.toBytes().length).getImmutable().toBytes());

3.1.3" 解密操作

业主节点通过系统操作界面对交易记录进行解密操作。利用getImmutable()函数对加密后的交易记录进行逆向计算r = W⊕H2(e(V,SU)),m = T⊕H4(r),代码如下:

#1.利用私钥计算密文

T2 = pairing.pairing(V, Su).getImmutable();

Element T3 = pairing.getGT().newElement().setFromHash(T2.toBytes(), 0, 3).getImmutable();

byte[] m = xorEncode(W.toString(),T3.toBytes());

#2.计算长度为128位的数字签名

int byt = V.getLengthInBytes();#求V的字节长度,假设消息长度为128字节

System.out.println(m);

3.1.4" 验证消息

业主节点获取解密信息后,需要进行验证消息的操作,即设置α = H3(r,m)并检查等式V = αP是否成立如果成立,代码如下:

Element Viden = P.mulZn(r);

System.out.println(\"verify results V:\"+Viden);

3.2" 智能合约设计

用户节点进行支付操作、身份验证、修改物流信息,以及业主节点进行上传IPFS文件检索信息等操作时,需要通过系统后台连接到智能合约,前端界面则通过Remix平台进行智能合约部署、代码编译和生成。用户节点和业主节点需要在Remix前端界面中对应的表单输入信息并运行。

3.2.1" addUser()函数

addUser()函数主要实现了用户可进行身份注册的功能。用户Ui调用智能合约录入用户身份,输入内容为EAUi和Ui,其中EAUi为待注册身份用户Ui的以太坊地址,UIDi为用户Ui的匿名身份。输入完成后会触发功能函数addUser(EAUi,UIDi),智能合约将用户Ui账户地址和伪身份整合并存放在LUser中。

3.2.2" setIndex()函数

setIndex()函数业主在上传index值至区块链时使用的方法。业主Sj调用智能合约的setIndex(EASj,index)方法,智能合约首先判断调用方的钱包账户EASj是否正确,若正确则将业主Sj输入的index值存储在区块链中,其中index表示订单记录储存在IPFS的索引地址。具体过程如算法1所示。

算法1" setIndex(EASj, index)

输入:EASj, index

输出:bool(true or 1)

1. if(msg.send !=EASj)

2." " return 1

3. struct newFile

4." times=now

5." "newFile.index=index

6. return true

3.2.3" payment()函数

payment()函数主要实现两个功能,用户支付以及业主提现。当用户需要调用payment()函数时,设置VALUE属性值并触发提交条件,智能合约会将用户资金转账至储能电站管理员的临时钱包账户,具体过程如算法2。其中,EAUi是当前用户的钱包账户,EAp是储能电站管理员的钱包账户,而price则表示此次交易需要支付的金额,即VALUE=price。

算法2:payment(EAUi,EAp,price)

输入:EAUi ,EAp, price

输出:bool(true or 1), TransactionUi

1. if(msg.send !=EAUi)

2." " return 1

3. receiver = EAp

4. msg.value = price

5." "receiver.transfer(msg.value)

6. return true, TransactionUi

3.2.4" authenticateUser()函数

authenticateUser()函数提供用户进行身份验证的功能。用户Ui验证当前共享储能是否正确输送,若验证通过,则调用方法authenticateUser (EAUi,UIDi),输入身份信息触发智能合约进行身份验证,具体过程如算法3。用户Ui通过认证后,智能合约会根据用户当前储能电数量自动修改当前储能输送状态;若输送完毕,则智能合约会自动调用setStatus()函数修改状态信息为“储能已输送完毕”。

算法3:authenticateUser (EAUi , UIDi)

输入:EAUi , UIDi ,complete

输出:bool(true or 1),status

if(msg.send != EAUi)

return 1;

while(1)

if(LUser[i] == UIDi) {

setStatus(complete); }

else return 1;

break;

return true, status;

智能合约在储能输送状态信息发生改变之后,payment()函数会先根据当前的状态信息来决定是否执行提现操作。如果检测到输送状态信息显示为“储能已输送完毕”,那么智能合约将会从储能电站管理员的钱包账户上扣除相应的金额,并将资金转移至业主账户地址。

3.3" 实验结果分析

代码编写完成后,分别对加解密算法,智能合约代码进行编译,并将智能合约部署到系统后台中。用户节点与业主节点可以通过系统输入交易信息,进行对应的加密、解密、验证签名等操作。同时,进行链上操作的时候,可以通过系统进入到智能合约操作界面,如图3所示。

在该方案中,采用基于身份加密机制中的Boneh-Franklin加密算法(BF-IBE)来完成业主与用户之间交互数据以及需要储存的数据的加解密操作。所有的加解密操作都在链下进行,并计算各阶段所需的时间。表1中统计了20次Boneh-Franklin加密算法各部分的耗时时间,其中包括GID、Enc、Dec、VALM、Sum。GID表示:预处理中系统生成用户伪身份。Enc表示:用户User使用系统生成的业主公钥对交易信息进行加密。Dec表示:当业主Store收到用户User发送的加密信息后,使用自己的私钥对加密信息进行解密。VALM表示:当业主Store解密用户User发送的加密信息后,通过计算验证消息的可靠性。Sum表示:整个伪身份产生,加解密及验证信息过程中所消耗的时间之和。其中生成伪身份所需平均时间(Average time)为47.30 ms,加密所需平均时间为32.86 ms,解密所需平均时间为12.35 ms,验证信息所需平均时间为15.51 ms,整个算法所需平均时间为108.02 ms。

表2中包括执行方法、执行者、消耗的gas值、实际成本以及USD,其中消耗的gas值包含交易成本与执行成本,User表示用户,Store表示储能商业主,SC(Smart Contract)表示当前部署的智能合约。交易成本指将交易送至区块链所消耗的费用,基于数据的大小来决定gas的大小。执行成本指以太坊虚拟机(EVM)执行所需的费用。本方案部署在以太坊测试链上,并将gasPrice值设置为28 Gwei,其中1Gwei=109wei=10-9ether。方案中设置以太坊gas消耗总上限为3 000 000 gas,在表3中每个函数的执行成本都没有超过限制的gas,说明方案的智能合约是可部署的。

通过实验结果可以看出,链下操作部分中使用Boneh-Franklin加密技术生成用户和业主的伪身份,完成对二者之间传输数据的加密、解密、验证消息等操作所需平均时间仅为108.02 ms,耗费的时间较少;链上操作部分执行智能合约实际成本较低。因此,该方案是高效的,可行的。

4" 结" 论

本文提出了一种基于区块链和IPFS的共享储能安全交易系统模型。利用BF-IBE加密机制生成用户唯一身份标识和安全密钥,保障身份注册和信息加密,从而确保交易匿名性。智能合约实现了资金流的去中心化监管、身份注册认证、储能状态修改和信息存储等功能,保护用户隐私并保证交易信息的隐秘性和完整性。通过安全性分析和实验评估,分析了模型链下操作的效率及链上操作的性能,证明了该模型的高效性与可行性。本系统在提高安全性的同时,确保了共享储能交易的去中心化管理,有效避免了资源浪费。未来工作将聚焦于大规模用户场景下的并发处理及效率提升。

参考文献:

[1] 王慧敏.基于区块链技术的共享储能交易模型分析 [J].储能科学与技术,2023,12(3):1004-1005.

[2] 杨水丽,来小康,丁涛,等.新型储能技术在弹性电网中的应用与展望 [J].储能科学与技术,2023,12(2):515-528.

[3] 王蓓蓓,李雅超,赵盛楠,等.基于区块链的分布式能源交易关键技术 [J].电力系统自动化,2019,43(14):53-64.

[4] 李彬,覃秋悦,祁兵,等.基于区块链的分布式能源交易方案设计综述 [J].电网技术,2019,43(3):961-972.

[5] 沈泽宇,陈思捷,严正,等.基于区块链的分布式能源交易技术 [J].中国电机工程学报,2021,41(11):3841-3851.

[6] CHEN S J,SHEN Z Y,ZHANG L,et al. A Trusted Energy Trading Framework by Marrying Blockchain and Optimization [J/OL].Advances in Applied Energy,2021,2:100029[2024-06-20].https://doi.org/10.1016/j.adapen.2021.100029.

[7] ZHOU K L,CHONG J,LU X H,et al. Credit-Based Peer-to-Peer Electricity Trading in Energy Blockchain Environment [J].IEEE Transactions on Smart Grid,2022,13(1):678-687.

[8] 马腾,刘洋,许立雄,等.基于区块链的配电侧多微电网电能去中心化交易模型 [J].电网技术,2021,45(6):2237-2247.

[9] AITZHAN N Z,SVETINOVIC D. Security and Privacy in Decentralized Energy Trading Through Multi-Signatures, Blockchain and Anonymous Messaging Streams [J].IEEE Transactions on Dependable and Secure Computing,2018,15(5):840-852.

[10] LIU J Y,CAI Z Y,LIU D N,et al. Research on Distributed Energy Transaction Technology Based on Blockchain [J] E3S Web of Conferences.Harbin:E3S Web of Conferences,2021,236:02011(2021-02-09).https://doi.org/10.1051/e3sconf/202123602011.

[11] 张显,冯景丽,常新,等.基于区块链技术的绿色电力交易系统设计及应用 [J].电力系统自动化,2022,46(9):1-10.

[12] JIA M,CHEN J,HE K,et al. Redactable Blockchain from Decentralized Chameleon Hash Functions [J].IEEE Transactions on Information Forensics and Security,2022,17:2771-2783.

[13] JIANG Z G,ZHENG Z B,CHEN K,et al. Exploring Smart Contract Recommendation: Towards Efficient Blockchain Development [J].IEEE Transactions on Services Computing,2023,16(3):1822-1832.

[14] SONG M,HAN J,EOM H,et al. IPFSz: An Efficient Data Compression Scheme in InterPlanetary File System [J].IEEE Access,2022,10:122601-122611.

[15] SHARMA D K,TOKAS B,JAKKINAPALLI V R,et al. Boneh-Franklin IBE [M]//Functional Encryption.Springer,Cham,2021:137-149.

作者简介:赵万雄(1997—),男,汉族,湖北仙桃人,教师,硕士,研究方向:应用密码学与信息安全、区块链技术;李娟(1977—),女,汉族,江苏淮安人,教授,博士,研究方向:计算机应用技术。

收稿日期:2024-07-28

基金项目:武昌工学院校级科学研究项目(2024KY09);湖北省教育厅科研计划项目(B2019296)

标签:  区块 

免责声明

本文来自网络,不代表本站立场。如有不愿意被转载的情况,请联系我们。

iidomino cuppor