基于区块链的户用光伏多边交易平台设计与实现
2021-05-11薛文琦李培强王继飞高雅洁孟玲梅
薛文琦,李培强,王继飞,穆 亮,高雅洁,孟玲梅
(1.湖南大学电气与信息工程学院,长沙 410082;2.国网冀北电力有限公司张家口供电公司,张家口 075000)
随着传统化石能源急剧枯竭,全球环境危机不断加重,可持续发展成为当今主题。在具有清洁与可再生特点的新能源中,发电量最大的是太阳能[1]。光伏发电能够有效缓解能源紧缺和环境污染[2]。在国家的提倡鼓励[3]下,光伏产业规模化发展迅猛[4-6],但其发电出力有较强间歇性和波动性[7],使电力系统受到巨大冲击[8-9]。
与此同时“大云物移链”等新一代通信技术向各行业加速渗透[10],传统电力行业与之融合成为趋势[11],能源互联网已成为转型的重要方向[12]。其中,区块链技术[13]作为价值互联网新纪元的起点[14],与能源互联网有良好的兼容性,这使其成为推动能源互联网发展的关键支撑技术[15]。
国外区块链与传统电力融合已进入应用阶段[16],荷兰的Vattenfall Energy公司推出Power Peers平台来满足电力消费者分布式应用需求;美国的LO3Eenergy公司也推出了Trans Active Grid项目,建立了全球首个互动式分布式光伏销售平台;2018年上线的We Power区块链发行了加密货币We Power,以便邻居间将太阳能剩余电力进行交易。但国内相关应用还未落地实施。我国配电系统分布式电源渗透率日益提升[17],光伏用户群[18-19]随之壮大,大量产消者产生和接入势必形成电能的直接自由交易[20]。为鼓励分布式电源的就地消纳,国家能源局与发改委出台了《关于开展分布式发电市场化交易试点的通知》。实时电力市场平台是新一代电力系统实现源-网-荷互动平衡的重要途径和方法[21],电能共享可有效提高资源利用,加快经济发展[22]。但建立一个存在中间运营商的管理机制运行成本高、易受攻击、用户隐私难以保障[23]。故本文提出采用区块链技术建立一种去中心化的信任管理机制,完成户用光伏电能交易的线上平台设计。该平台具有去中心化、去信任、可溯源数据透明、难以修改、资源共享的特点,与“泛在电力物联网”发展计划中促进清洁能源消纳、打造智慧能源综合服务平台的建设内容相呼应,也是解决电力物联网网络安全问题[24]的有效方案。相关研究将有力推动电网企业实现能源数字化转型[25]和“两型三网、世界一流”的战略目标。
1 户用多边交易平台总体框架
1.1 区块链技术
区块链(blockchain),即共享数据库,是一种基于密码学原理的分布式点对点P2P(peer to peer)网络共信智能账本技术[26],是集合分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式[27]。其框架主要分为5个层面,如图1所示。
图1 区块链基本框架Fig.1 Basic frame of blockchain
区块链以时间轴递增的链式作为存储结构,链上包含高度密集的区块,区块由区块头和区块体组成如图2所示。区块头链接上一区块的哈希值,区块体主要包括各节点之间交易的主体信息,其是以多份拷贝形式存在于P2P网络上且只可以在总账数据库上追加,如图3所示。
图2 区块结构Fig.2 Block structure
图3 区块链示意Fig.3 Schematic of blockchain
起初区块链是比特币的底层技术[15]。区块链分为3类:公有链、联盟链和私有链,三者在开放程度上逐次递减。目前,从以太网平台应用角度来看,比特币应用属于区块链1.0,以太网智能合约设计属于区块链2.0,行业应用(金融、能源、版权管理等)属于区块链3.0[28]。区块链技术可以说是“第2代互联网”,其体现在4各方面:①在2009年诞生后,推动信息互联网进入价值互联网;②将人类社会从消费互联网带入产业互联网;③从现有完全透明的公开互联网走向加密互联网阶段;④使互联网从中心式走向了分布式。区块链的核心技术包括:①非对称加密算法,即同时生成公开密钥和专用密钥,只有对应的公钥和私钥才可解密信息;②以资产数据库为基础,能够在不同节点、位置和平台上共享和交互数据,每个节点都可以拥有完全相同的数据副本;③采用智能合约,降低成本的同时,还能防止单方毁约,保障整套系统代码按规定运行[29]。因此,在开展分布式能源交易及交易主体信用管理上,区块链具有先天优势[17]。
1.2 平台运营模式设计
1.2.1 平台结构设计
该交易平台基于3类用户群构成,如图4所示。
图4 交易平台用户群构成图Fig.4 Composition of user groups on the trading platform
为促进户用光伏的普及和平台推广,提高新能源应用比例,将其归为一条特殊的公有链。平台的所有用户均各自对应为一个区块链网络中的节点,相当于一个备份数据库,拥有系统所有信息,所有数据公开透明,资源共享。而且用户可以通过账户地址查看任何节点的信息,各个节点之间平等交易,无需担心资产值被篡改。这些公有链特性将有效保障平台用户对于交易公平、可靠的信任度。而其特殊性在于电能并非一般商品,为了保证输配电的统一规划和有序运行,电力公司虽然与其他普通节点一样无权干涉系统运行和平台内交易,但是所有用户在使用该交易平台前需先网上注册,由电力公司进行开户,设定账户类别和分配账户地址,然后用户自行设置用户名和密码。故电力公司存有所有平台用户的账户地址,可实时查看分析用户的账户情况,便于调度部门安全、经济、高效的工作,同时也为下一步系统的研究与升级提供有效数据。
1.2.2 平台交易模式设计
由于光伏发电会受气象等因素影响,波动性较大[30],当产消者的光伏产能大于自身所需时,户主可以选择将用户名和愿出售的电量值挂于平台,供其他用户购买。电力公司设置保证输配电适当盈利的最低电价,产消者用户可在常规电价和最低电价之间自行标定出售价格,根据情况决定是否适当降价以促进销售。这样的运营模式将为能源市场竞价提供一种激励机制,促进设备安装的同时,提高新能源应用比例。平台仅挂出用户名,不公布账户地址,保护了用户的隐私。
交易分为主动交易和触发交易两种。主动交易即用户发起的购电行为。触发交易的启动则由电能计量器N和时间M决定,当N或者M其一满足条件时即触发智能合约,执行合约内容,从而账户充入相应数量的资产。整个网络共用一个智能合约。
交易过程示意如图5所示,粗箭头代表输配电,虚线和实线单箭头表示用户节点之间的信息交流(购买资产、转移资产)。当账户内资产消耗至零时,用户将被停电,此时户主需要从电力公司或其他产消者处购买电能,才可恢复供电。
图5 交易过程示意Fig.5 Schematic of trading process
需要特别说明的是,电力传输与账户资产转移互不影响、相互隔离,户用光伏所产电能即时流入电力系统网络,受电网企业管理和调度。综合考虑负荷和经济等各项因素后配送传输,本文不作详细研究。电能计量器数值是持续累加的,当电能计量器N达到平台设定值或其整数倍时,触发合约执行。计时器在每次智能合约触发的同时清零,循环计时,当计时器M达到设定值时也会触发合约执行。主动交易则仅是账户资产转移,当产能过剩时,用户电费使用不完,等价转让或低价出售给其他用户消费,以赚取现金。
1.2.3 平台交易原理
交易由客户端发起,经数字签名认证。该份交易被发送到区块链系统中的节点并等待交易信息校验,确认完成后下一个区块会记录相关数据,随后所有节点使用共识算法对新区块进行共识,共识完成后写入区块链,表示所有节点认同新区块。户用光伏多边交易平台的交易原理如图6所示。
图6 交易原理解析Fig.6 Analysis of trading principle
交易构建过程共有3步校验程序:①在存入交易池之前,进行数据检验(nonce是否合法、操作类型校验参数和交易池是否已满?),检验成功的数据才可以存入交易池;②在执行共识之前,需要滤出异常和错误交易,共识交易数太大(32 M)与nonce太大属于异常情况,而nonce太小属于错误,只有正常才可继续执行;③在共识过程中将会再次对每笔交易进行校验。交易构建过程将有效保障交易的安全性、稳定性、抗攻击性。
2 平台程序设计及实现
该平台在主流操作系统Ubuntu中建立,程序组成如图7所示。
图7 平台模块架构Fig.7 Architecture ofplatform module
2.1 CA合约用户账户设计
账户分为创世账户、电网账户和普通用户账户3种。电网账户创建用户账户,而电网账户由创世账户创建。创世账号即该区块链平台的首个账户,其信息在config文件中配置,可以通过API接口获取查看。
在去中心化的区块链系统中,所有账户均内嵌智能合约,每位用户都是合约用户。账户结构组成如图8所示。
图8 账户结构图Fig.8 Structure of account
电网与其他用户的账号属性相同。创建用户账户时需指定用户账户权限,设置用户账户不具备发行资产权限。|tx_threshold|optional,default 0,表示该账号的最低权限,转移资产类型为1,设置threshold小于阈值。电网账户创建普通用户账户与创世账户创建电网账户的步骤相同。修改源地址及设置所创建的用户账户权限。类型为2的交易为发行资产,threshold小于tx_threshold没有执行权限。
每个账户都被分配了1个账户地址,任一节点均可通过Account地址查看到该地址节点的交易信息。信息由4部分组成,包括地址前缀(1 byte);加密类型(1 byte);摘要算法(SHA-256)获取公钥hash除去前12位得到的值;再次hash得到新的hase;加Crc8或者Crc16对新的hash得到的校验码(1 byte)。注册时使用者经实名认证,账户名和密码由户主设置。
2.2 网络通信模块
对于该多边交易平台中电力公司和所有用户,不论是否安装了光伏发电设备,均同为资源、服务和内容的提供者和获取者,共享所拥有的部分硬件资源。系统采用P2P作为运行依赖的网络结构,使共能被其他对等节点直接访问。整个网络不依赖专用的集中服务器,也没有专用的工作站。节点通信网络的原理如图9所示。
图9 P2P模块原理Fig.9 Principle for P2P module
P2P是对分布式概念的成功拓展,其将传统方式下的服务器负担分配到网络中的每个节点上,每个节点都将承担有限的存储与计算任务,加入到网络中的节点越多,节点贡献的资源也就越多,其服务质量也就越高。P2P程序流程如图10所示。
图10 网络模块程序流程Fig.10 Flow chart of network module program
2.3 数据存储模块
数据层的数据存储主要基于Merkle树,通过区块的方式和链式结构实现,大多数情况以KV(keyvalue)数据库的方式实现持久化。账号数据存储于account.db;存储共识数据存储于keyvalue.db;区块数据存储于ledger.db。其数据存储原理如图11所示。
图11 数据存储原理Fig.11 Principle for data storage
Merkle Hash Tree即哈希树或校验树。叶子节点为每个数据块的hash值,父节点为叶子节点hash值串联在hash得到。
2.4 智能合约
智能合约是用户发起交易或者电能计量器达到设定值时触发运行的一段代码,其采用Javascript v8引擎实现,其执行依赖于转移资产操作,转移资产流程如图12所示。
图12 转移资产流程Fig.12 Flow chart of transfer assett
智能合约内容如下:
2.5 加密机制
加密具有维护网络安全、切实抵抗黑客攻击的功能。每个账户发起一笔交易成功,则nonce的值加1。nonce可以防黑客攻击和交易伪造。一个交易需经过多重验证,以及区块链中2/3节点的认可才能生效。底层数据存储结构为16叉Merkle树,并且添加深度前缀,增强了加密力度。系统主要用到的加密算法如图13所示。
图13 加密模块组成Fig.13 Composition of encryption module
2.6 共识算法
区块链安全一部分基于加密算法,另一部分基于记账式的共识。常用的共识算法有拜占庭共识PBFT(practical byzantine fault tolerance)算法、PoW(工作量证明机制)和PoS(权益证明机制)。本系统采用PBFT算法,共识的最大容错率为33%。
PBFT算法具有绝对一致性,是一种状态机副本复制算法,即服务作为状态机进行建模,状态机在分布式系统的不同节点进行副本复制。每个状态机的副本都保存了服务的状态,同时也实现了服务的操作,每个节点上的数据绝对一致,当有节点数据与其他节点数据不一致时,可通过PBFT算法使节点数据进行同步。而PoW和PoS都不是强一致性共识算法,且共识效率低。若要提高共识效率,则又会牺牲共识协议的安全性。PoS应用于挖矿,简单来说就是资本主义,按钱分配,包括DPoS在内均存在“富豪统治”问题。而PoW机制的弊端在于:一是浪费大量的算力,只用来竞争挖矿权,并没有更多实际或科学价值;二是类似于RAFT共识,当记账节点为作恶节点时系统将检测不出。故该系统选择PBFT算法。
2.7 日志与配置模块
图14为日志与配置模块构成,配置文件分为6个部分贯穿整个系统,输出对应等级的日志信息。
图14 日志与配置模块构成Fig.14 Composition of log and configuration module
3 Linux布比区块链平台的交易流程实现
电能交易是该区块链平台的主要部分与中心环节。每笔交易的上链在底层中包含3个步骤:创建交易、交易签名和提交交易。图15为平台初始化流程。
图15 平台初始化流程Fig.15 Flow chart of platform initialization
电力公司接收火电厂、风电场、户用光伏所发电能为其账户总资产,其资产量随实际拥有电量值变化。
为了简化实验过程,在本实验中仅启动A、B、C、D、E、F、薛**、李**和电力公司9个节点。假设电网总电量保持为10 GW·h。各用户在未购电或产电时电能资产为0。电能计量器N设为10的整数倍,计时器M为10 min。假设此时天气为晴天,时间为12:00,A、B、C用户每分钟每户光伏发电为1 kW·h,而李**、D、E、F因位置等原因每分钟每户发电0.35 kW·h。故电力公司初始界面显示如图16所示。灰色用户名为产消者,黑色为普通消费者用户。界面左上角由字母和数字组成的代码a0020a52c701ebf5b7170 291b89cf0624b0c6c5681e659,即电力公司Account地址。
图16 12:00电网账户界面Fig.16 Grid account’s interface at 12:00
随着时间推移,户用光伏持续产能。15:45时电力公司界面显示如图17所示。此时Account地址为a0029a42e5518bea59c200dab073bda4670b617 351cb55的李**查看账户余额后,认为77 kW·h不够用。图18为15:45时产消者李**界面。单击“选择卖方”按钮,浏览平台,确定意向卖家后,输入小于卖方售电量的数值,购买支付即可。由于A最便宜,故选择从A处购买200 kW·h。
图17 15:45电网账户界面Fig.17 Grid account’s interface at 15:45
图18 15:45时产消者李**界面Fig.18 Producer-consumer Li’s interface at 15:45
李**账号成功充值200 kW·h。此时,哈希值为b0017d9c341ba14d0bb18518721c332c4ec1938b87 661af8cab4c0a172075e7a04b36b,公钥为6eef7e43a 012e27ed3fd94fa87e851678b30fa0ea168ebd54432fb9 71a75a666。李**账户转入资产200 kW·h,且成功上链。由于在该笔交易之前,光伏产能触发交易22次,nonce为23。
在5 min后,由于薛**的账户资产为0,已被停电。故登录账户,决定从电力公司购电1 000 kW·h,15:50时消费者薛**界面如图19所示。此时,由于用户A已经售电200 kW·h,故平台更新卖方列表清单,用户A仅有10 kW·h可出售电量。电网账户界面如图20所示。此时电网账户的资产余额为9 999 000 kW·h。
图19 15:50时消费者薛**界面Fig.19 Consumer Xue’s interface at 15:50
图20 15:50电网账户界面图Fig.20 Grid account’s interface at 15:50
4 结论
本文采用区块链技术搭建了光伏型电源安装于用户侧的多边交易平台,虽然用户界面友好性有待提高,但实验表明该系统可行性较高、数据透明可溯源,对日后可能落地使用的户用光伏交易平台具有很大的借鉴意义,有力推动“大云物移链”等新一代通信技术与传统电力行业的融合,加快其数字化转型。
区块链技术能够满足光伏交易平台未来规范发展、防范风险的需要,但要真正嵌入传统电力行业,解决日后户用光伏用户群壮大而形成的电能直接自由交易问题,目前还面临3方面挑战[31]。
(1)区块链本身。由于相关标准并不统一,不同区块链目前难以连通互联,这种割裂会在一定程度上削弱区块链电力交易的优势。
(2)现实法律。各国对数字货币和区块链的立法与监管并不同步,但立法落后于实践是一个整体特征。现阶段,对于时间戳、区块链等新技术在证据规则中的应用问题,最高人民法院仍在调研的起步阶段[31]。
(3)光伏产业还未成熟,需其他技术同步跟进。
未来区块链技术的演进和新能源的进一步发展将使电力交易领域从本质上有大的飞跃。基于区块链技术所建立的多边交易平台,将会从本质上颠覆电力交易的载体形式。