基于联盟链的去中心化能源交易系统

周鑫1,邓莉荣2,王彬1*,潘昭光1


(1.清华大学电机工程与应用电子技术系,北京市 海淀区 100089;2.清华大学清华-伯克利深圳学院,广东省 深圳市 518057)

摘要

随着分布式能源的快速发展,传统的中心化能源交易系统遇到了建造和维护中心化数据库的成本较高、数据被篡改后会酿成严重后果和难以保障用户隐私这三大问题。针对这些问题,设计了一种基于联盟链的去中心化能源交易系统。首先,分析了该系统的组成部分,利用联盟链的准入机制对用户进行监管。介绍了该系统的交易流程,包括网络节点的配置,使用数字证书注册管理员和用户,借鉴链上链下协同架构实现分布式交易撮合等。接着,介绍了该系统使用的分布式交易撮合算法。然后,利用Hyperledger Fabric平台研发了该系统,介绍了相关的软件架构。最后,分析了使用联盟链的优点,从系统总成本、园区内分布式光伏发电自销占比两个方面将设计的系统与中心化的点对网交易系统进行比较,验证了该系统用于分布式能源交易的可行性。

关键词 : 联盟链;去中心化;能源交易系统

0 引言

随着能源互联网的发展,光伏、风电这类能源利用率高、污染排放低的分布式能源已在世界各国受到广泛关注。2017年,国家发改委和国家能源局出台了《关于开展分布式发电市场化交易试点的通知》,鼓励分布式能源参与到电力市场中,提出建立分布式发电市场化交易平台。未来的电力市场参与者的类型将更为丰富,生产者和消费者不再是互斥的关系,用户将更多地以产消者的身份参与到电力市场交易中。

传统的电力市场交易采用集中式模式,发电商和用户将报价数据传递给中心化交易系统,然后再通过集中撮合或者优化的方式进行匹配[1]。但是,随着分布式能源的大量使用,这种中心化交易系统存在着以下问题:首先,交易的用户数量较多,交易数据量极大,建立中心化交易平台以及维护交易数据的成本很高;其次,交易中心信息安全程度不高,容易受到恶意攻击,数据被篡改后会造成严重后果;最后,交易中心存在信息不对称的问题,现在用户越来越重视隐私保护,而中心化交易系统难以保障用户隐私。为了解决这些问题,一些学者将目光放到了新兴的区块链技术上,提出使用区块链技术应对这些问题。

2008年,中本聪创立并发行了比特币[2],而区块链作为比特币的核心底层技术,具有去中心、去信任等优点,得到了人们的广泛关注。区块链是一种分布式数据库,其技术框架的四大组成部分为:共享账本、加密技术、共识机制、智能合约[3]。共享账本依托于数据库技术,每一笔事务都会添加到共享账本中。加密技术利用极高的计算复杂度来确保身份验证和事务验证的可靠性。共识机制是区块链系统的核心,区块链各个节点利用共识机制来验证事务,构建区块链节点间的信任系统。智能合约是嵌入在区块链系统中的商业条款,在智能合约中需要定义每一笔事务的价值流动和状态变化。

目前已有许多文献探讨了区块链技术在能源交易中的应用。文献[4]将区块链技术应用到大用户直购电中,利用互联链的思想,分别记录直购电及其二级市场交易、阻塞管理数据、日前市场交易。文献[5]使用区块链建立了分布式能源P2P(peer to peer)交易架构,基于连续双边拍卖机制建立了交易的结算机制,并讨论了区块链技术在能源交易市场中的局限性。文献[6]利用区块链中的联盟链建立了电动汽车间的P2P交易机制,该机制使用了基于PoW(proof of work)的共识机制增加了交易的安全性。文献[7]则使用联盟链设计了电动汽车的V2V(vehicle to vehicle)电力交易平台。文献[8]综述了分布式账本技术在局部能源市场P2P交易中的应用,提出了一种能源交易系统的架构,并在区块链PoS(proof of stake)共识机制的基础上提出了PoE(proof of energy)共识机制。文献[9]设计了一种基于多代理和区块链的分布式电力交易系统,提出使用两条区块链记录交易结果,并利用高频的检验机制对区块的内容进行验证。

上述文献中,大部分文献并没有明确区块链的类型,只有少数文献具体的讨论了区块链中联盟链的应用。实际上,区块链可以分为公有链、联盟链和私有链。通常人们所说的区块链指的是公有链,它是完全去中心化的,节点可以随时加入或离开公有链网络。联盟链是部分去中心化的,由各个组织机构共同管理,用户需要经过身份验证才能进入到联盟链网络中。而私有链类似于普通的数据库,并不适合应用到分布式能源交易中。在分布式能源交易领域,联盟链要优于公有链,原因为:首先,任何一个节点都可以加入到公有链网络中,不利于能源系统的监管,而联盟链具有准入机制,只有符合要求的节点才能加入到联盟链网络中;其次,公有链的隐私保护依赖于匿名机制,但公有链上传输的数据是公开可见的,而联盟链可以通过权限控制防止恶意节点获得这些数据;最后,在防止数据篡改方面,公有链通常使用PoW或PoS共识机制,其中PoW机制具有速度慢和能耗大的缺点,PoS机制则存在着马太效应的问题,而联盟链可以采用基于PBFT(practical byzantine fault tolerance)或CFT(crash fault tolerance)的共识机制,共识速度较快。

本文在已有研究的基础上,设计一种基于联盟链的去中心化能源交易系统,并使用Hyperledger(超级账本)项目中的Fabric开发平台研发这一系统,结合分布式交易撮合算法,通过一个工业园区的算例分析该交易系统的可行性。

1 去中心化能源交易系统架构

本文设计的基于联盟链的去中心化能源交易系统如图1所示,相关的组织机构包括生产者、消费者、产消者、电网和支付机构五类。

图1中,生产者、消费者和产消者三大组织机构中的用户直接参与到能源的生产和消耗。电网一方面需要管理公共的电力设施,另一方面也需要弥补联盟链本质上作为信息层面的数据库的不足,执行相关的物理层面的操作。选择支付机构前需要先确定一个交易介质,而通常的区块链交易平台都是使用了数字代币作为交易介质,这样一来支付机构实际上就是区块链本身。但是本文使用的是联盟链,而联盟链是不一定需要使用数字代币的。考虑到央行正在研究使用联盟链发行央行数字货币,本文认为可以将银行作为支付机构,交易介质由银行决定,这里的联盟链交易系统只负责记录电力交易的账本。

该交易系统中,wallet是各个组织机构用来管理用户数字证书的身份管理系统,由相应的数字证书颁发机构创建,5类组织机构都至少要在wallet中注册一个管理员。然后,对于生产者、消费者和产消者来说,管理员还需要审核用户资格,创建若干用户。在交易时,用户需要将报价信息传递给联盟链,联盟链再通过智能合约对报价进行撮合,将报价和和交易信息写入到联盟链数据库中。得到交易结果后,电网执行相关的物理操作,支付机构对交易进行支付。可以看到,联盟链的主要作用在于用户准入审核、记录交易和报价数据以及通过智能合约进行交易结算。

图1 能源交易系统架构
Fig.1 Architecture of energy trading system

2 能源交易系统交易流程

本文设计的能源交易系统的交易流程如图2所示。

图2 交易流程
Fig.2 Transaction flow

2.1 联盟链网络配置

联盟链网络配置主要包括定义参加联盟链的各个组织机构和分配各个组织机构对应的节点。本文使用的联盟链开发平台为Hyperledger Fabric,该平台中联盟链网络的节点分为orderer节点、peer节点和client节点[10]。其中,orderer节点能够实现排序服务,将联盟链中发生的事务进行排序,打包整理成区块发送给其他节点;peer节点拥有一个区块链账本,所有peer节点会共同维护账本并验证其可靠性;client节点会向联盟链网络提交事务申请,并将需要改变联盟链账本的事务发送给orderer节点进行排序。

本文研发时只为电网配置了一个orderer节点。在实际应用场景中,可以考虑增加orderer节点的个数。关于peer节点的配置,由于peer节点直接参与记账过程,每个组织机构都应该配置peer节点。文献[11]研究了peer节点个数对达成共识所需时间的影响,指出当传输时延较小时,peer节点个数与平均达成共识所需时间近似为线性关系,为了加快共识速度,本文对5个组织机构都只配置了一个peer节点。而client节点本质上是用户与联盟链交互的接入点,是用户通过调用智能合约创建一笔事务形成的[12],在能源交易系统的背景下,只有生产者、消费者和产消者的用户才会有client节点。

联盟链网络的配置信息在联盟链网络启动后会记录到一个初始区块中,该初始区块只记录网络配置信息,不会记录其他的事务信息。在实际运行过程中,如果联盟链管理员需要修改网络配置,可以通过系统链代码[13]增加新的配置区块。

2.2 管理员与用户注册

管理员的注册实际上是基于公钥基础设施(public key infrastructure)实现的。首先,联盟链的各个组织机构都需要一个证书颁发机构,颁发的数字证书采用在互联网领域已经得到广泛应用的X.509标准[14],利用非对称加密技术验证身份信息。管理员在注册时首先需要创建公钥PK和私钥SK,私钥SK会对管理员的身份信息进行加密得到数字签名DS,当需要验证管理员的身份信息时,可以通过公钥PK对数字签名DS进行验证。管理员对应的组织机构会将管理员的数字证书拷贝一份记录到如图1所示的wallet身份管理系统中。身份信息的验证由MSP(membership service provider)提供,MSP不仅能够判断数字证书的有效性,还能够判断数字证书是否来自受信任的证书颁发机构[15]

生产者、消费者和产消者的用户注册与管理员不同,各个组织机构会以网站或APP的形式为用户提供一个注册的接口,当用户提交注册申请后,证书颁发机构并不会立刻向用户颁发数字证书,而是暂时记录用户的注册信息,等待管理员的审核。管理员本身并不会参与到能源交易中,而是作为政府监管功能的实际执行者,对参与到能源交易中的用户进行资格审核。

2.3 管理员审核用户

管理员首先需要通过数字证书证明自己的管理员身份,登录相应的组织机构用户审核网站或APP。用户提交的注册信息应当包括需要管理员审核的资料,管理员审核通过后,相应的证书颁发机构会为该用户生成一组公钥和私钥,并为该用户颁发数字证书。该用户的数字证书会拷贝一份记录到wallet身份管理系统中。此后用户便可以凭借该数字证书加入到联盟链网络中,以client节点的形式通过智能合约与联盟链进行互动,按照权限查询或修改联盟链的账本。

数字证书存在着过期的问题,当某个用户的数字证书过期后,证书颁发机构会将该数字证书加入到证书撤销列表中,管理员会重新审核用户的资格,审核成功后证书颁发机构会为该用户颁发新的数字证书,wallet身份管理系统会用新的数字证书替换掉原有的数字证书。

2.4 用户提交报价与交易撮合

生产者、消费者和产消者的用户会通过相应的组织机构网站或APP提交自己的报价信息,这里的报价信息应当包括价格与功率。这些报价信息会通过智能合约写入联盟链的数据库中。联盟链利用智能合约对报价进行撮合,具体内容如第3部分所示。撮合的结果也会通过智能合约写入到联盟链中。

用户提交报价或者写入交易时实际上改变了联盟链记录的账本内容,由于联盟链的账本是由所有的peer节点共同维护的,被修改的账本需要通过共识机制达成一致。区块链主流的共识机制为PoW机制和PoS共识机制。PoW共识机制是比特币采用的共识机制,通过求解复杂的数学问题来达成共识,会消耗大量的算力,共识速度慢,不能满足商业级别应用的需要。而PoS机制中引入了权益的概念,共识结果以权益最高的节点为准,但是权益最高的节点容易一直保持最高的权益,产生马太效应。另外PoW和PoS共识机制本质上是非确定性的[16],存在着分叉的问题[17],只能以概率的形式描述各个节点账本的一致性。

本文使用的共识机制采用了Hyperledger Fabric提出的执行-排序-验证框架[10],能够以确定性的方式达成共识。具体来说,联盟链首先检查用户的数字证书,确定用户身份有效后,用户就会以client节点的形式接入到联盟链网络中。通过联盟链提供的API(application programming interface),用户可以调用联盟链的智能合约,向联盟链发出写入报价或写入交易的事务申请。联盟链的智能合约部署到联盟链中,会配置几个组织机构中受信任的peer节点,当智能合约被调用后,这些受信任的peer节点会先模拟调用智能合约产生的结果,对该事务进行数字签名,此时它们并不会修改自身的账本。然后,电网对应的orderer节点会收集这些被签名的事务,并根据智能合约的配置判断是否集齐了受信任的peer节点的数字签名。当收集齐数字签名后,电网对应的orderer节点利用Kafka或Raft排序服务,对这段时间内收到的事务进行排序,并将这些事务打包成区块。最后,电网对应的orderer节点会将打包后的区块发送给所有的peer节点,peer节点根据收到的区块检查事务的有效性,对有效的事务执行相应的更新账本的操作。通过这种共识机制,联盟链各个peer节点能够保证记录账本的一致性,以公开透明、不可篡改的方式记录用户的报价和交易信息。

基于区块链的能源交易系统可以分为P2P模式和集中出清模式