基于区块链的绿证和碳交易市场联合激励机制
2022-06-06杨雪金孝俊王海洋魏翼飞
杨雪, 金孝俊, 王海洋,魏翼飞
(1. 山东电力工程咨询院有限公司,济南市 250013;2. 北京邮电大学电子工程学院,北京市 100876)
0 引 言
随着中国能源资源短缺、环境污染加剧等问题日益凸显,提升可再生能源比例、优化能源结构是解决能源困境的主要方法,也是未来电力系统不可逆转的发展趋势。但是,风光等非水可再生能源电源目前还不具有成本优势,同时中国可再生能源电价补贴存在资金缺口大、审核手续繁复等缺陷[1]。为缓解目前可再生能源发电面临的利用效率低、市场竞争力差的问题,鼓励环境友好的可再生能源发电,国际上提出了可交易绿色证书与碳排放权的概念,并在一些国家得到应用[2]。
可再生能源配额制(renewable portfolio standard, RPS)下的可交易绿色证书 (tradable green certificate, TGC) 制度可以通过绿色证书交易实现不可再生能源生产者、可再生能源生产者、电网企业和消费者可再生能源消费义务的合理分配,提高可再生能源发电比例[3]。RPS是由行政(监管)机构对市场主体最低使用的可再生能源电量进行强制约束的制度。市场主体需要在配额核算周期内完成配额指标,否则将受到惩罚。政策明确了售电企业、电力用户是消纳责任承担主体,鼓励通过超额消纳量交易和绿证交易的方式完成消纳指标[4]。2019年5月15日,国家发展和改革委员会、国家能源局联合印发了《关于建立健全可再生能源电力消纳保障机制的通知》,不仅标志着中国正式从上网电价向配额制转变,也表明中国在能源制度层面更强调依靠市场手段来推动能源低碳转型[5]。我国已有部分地区实施了配额机制,例如北京电力交易中心和广州电力交易中心[6]。与配额制配套的绿证交易制度,其目标是建立一个统一的绿证交易市场。绿证是一种可交易的、能兑现为货币的凭证,代表一定数量的绿色能源。绿证需求由配额承担者形成,供给由可再生能源生产商形成,需求与供给共同决定绿证价格[7]。
碳排放权(carcon emission,CE)交易指的是将允许的碳排放配额视为一种商品,通过市场进行自由交易。当企业通过分配获得的排放许可额度大于其实际排放量时,企业就可以通过售出剩余的额度获取一定的利润;反之,就需要到市场上购买排放许可额度,否则应缴纳比购买碳排放权更多的罚款金额[8]。目前,中国已建立了北京、天津、上海、重庆、湖北、深圳、广东及福建8个碳排放权交易试点,全国性碳排放权交易市场的启动工作亦在紧锣密鼓地开展[9]。
中国可再生能源装机容量充足,而现阶段面临的关键问题是大量可再生能源无法消纳,可再生能源利用率低。碳交易市场同样存在一些问题,比如未考虑碳排放交易数据的安全性问题;依赖于中心化管理,信息传输效率低;促进企业参与碳交易的激励效果不明显;买卖双方碳交易匹配时信息不对称,导致整体的效益不高[10]。
随着能源结构的转型和智能电网的发展,分布式能源体系将成为传统能源体系的有力补充,而区块链技术以其去中心化、公开透明的特点可以有效支撑能源体系的发展[11]。基于区块链技术的技术架构可以保证能源互联网中个体用户的地位平等,并实现用户之间的P2P 能源及能源相关信息交易,从而实现能源互联网的价值驱动,建立新的能源价值体系[12]。
目前基于区块链的绿证交易和碳交易系统相关研究很多,文献[13]提出了一种基于跨链交易技术的电力碳交易市场运行机制,设计了跨链交易的基础技术,包括电力和碳价格的跨链数据共享和相关性分析,以及通过智能合同对碳和电力联合交易进行编码,最后基于以太坊平台进行模拟交易,论证了两种市场在跨链交易中的可行性。文献[14]提出了一种新的基于区块链的点对点交易框架来交易能源和碳配额,消费者的投标/销售价格可以直接激励消费者重塑消费行为,以实现区域能源平衡和缓解碳排放。文献[15]提出了一个区块链应用程序,用于在网络化微电网中处理能源和碳配额,中央配电系统运营商从所有微电网收集数据,并计算微电网之间的能源和碳配额交易,以实现安全的配电网络运营,而区块链在其中的作用是通过应用非对称加密,即公钥和私钥,确保微电网交易安全和透明。文献[16]基于区块链技术的透明度和可靠性,结合社会规范和同伴效应理论,设计了一种新型的i-green激励机制——绿色比率方案,用于激励消费者和消费者自愿进行绿色证书交易,并设计了加密货币和I-Green-proof of generation的共识协议,与绿色比率方案具有协同效应。欧盟Scanergy项目将区块链和个人碳交易结合起来,以实现小用户绿色能源的直接交易,但该方案缺少对消费者购买绿证的激励。该项目设想在交易系统中每15 min测试一次网络的生产和消费状态,并向能源供应商提供类似比特币的NRG货币,作为能源生产的激励,该项目尚未投入实际运营[17]。
共识算法是区块链的核心,分布式共识以区块链为载体,为去中心化能源交易、物联网自动化管理、碳认证和交易、电动汽车交通等分布式能源系统提供安全保障[18]。目前用的较为广泛的是工作量证明(proof of work,PoW)算法,但该算法会造成大量的能源浪费,而权益证明(proof of stake,PoS)避免了挖矿过程带来的能源消耗,被认为是未来的主流算法。但PoS同样面临易分叉、N@S攻击等问题。文献[19]提出了一个基于区块链的分布式系统,提出了一种委托声誉证明(delegated proof of reputation,DPoR)共识机制,声誉越高的节点越容易参与到共识中,降低了恶意企业的攻击意图,在更快地发现恶意矿工方面表现更好,从而提高了分布式碳排放交易系统的安全性。但文献[19]中并没有说明参与交易节点的声誉值的具体计算方法,整体方案不够全面。文献[20]研究了基于PoS的联盟区块链网络中的共识传播问题,并在传播过程的延迟和区块链用户提供的交易费用之间取得平衡。文献[21]提出了一种新的基于区块链的合约结算协议,该协议采用实用拜占庭容错(practical Byzantine fault tolerance,PBFT)算法和改进的PoS两阶段共识算法,以保证系统的安全性、能量和效率。文献[22]提出了一种基于PoS的鲁棒权益证明(robust proof of stake, RPoS)共识协议,RPoS基于币余额选择数据写入节点,其他节点接受新数据以保持账本的一致性。在对比部分中,RPoS比PoW更节能,比PoS更快,并且对N@S攻击和硬币时代积累攻击等PoS相关攻击更健壮。文献[23]提出了一种共识协议,称为扩展PoS (e-PoS),解决了PoW和PoS的局限性,并在区块链系统中实现去中心化、节能和公平挖掘。文献[24]提出了一种基于PBFT的共识算法PoPT(proof of previous transactions)用于联合云分布式账本的并行核算。在PoPT中,通过对所有用户进行排名,从一定数量的候选人中选择出块节点。文献[25]提出了一种实用性强的新型PoS协议Baguena。与以往的方法相比,Baguena在随机生成和leader选择方面具有优势,提高了安全性和效率。
综上所述,目前将区块链与碳交易、绿证交易相结合的研究有很多,但对于适用于碳交易场景的区块链共识机制研究较少,激励方法不够完善。针对现有的缺乏激励以及共识算法的安全及效率问题,本文做出如下贡献:
1)提出基于区块链的可再生能源产品交易架构,可再生能源产品的交易过程以及每个主体的RPS分配过程都由区块链上的智能合约执行,信息透明、方便监管。
2)设计激励模型,提出“碳龄”的概念,对参与交易的节点权益值进行建模,对减排贡献越多的节点其碳龄越多,越容易参与共识,获得激励。
3)提出具有拜占庭容错的、用于激励可再生能源商品交易的公平且无分叉的共识算法PoCT(proof of carbon taken),并与点点币和黑币中的PoS以及传统DPoS算法进行对比,验证PoCT算法的公平性,加强网络的安全性。
1 系统模型
本文将系统参与者分为可再生能源发电企业、不可再生能源发电企业、电力大用户、电网企业,整体架构如图1所示。可再生能源发电企业产生绿色能源,国家可再生能源信息管理中心为其核发绿色证书以及中国核证自愿减排量(Chinese Certified Emission Reduction,CCER)。每产生1 000 kW·h的可再生能源,国家可再生能源信息管理中心就为其核发一个绿色证书,每个绿色证书的编号唯一。参与自愿减排的减排量需经国家可再生能源信息管理中心在国家自愿减排交易登记簿进行登记备案,经备案的减排量称为“核证自愿减排量(CCER)”。碳市场按照1∶1的比例给予CCER替代碳排放配额,即1个CCER等同于1个配额,可以抵消1 t二氧化碳当量的排放。本文中假设电网公司作为中心机构,同时具有国家可再生能源信息管理中心的职能。
图1 基于区块链的可再生能源产品交易系统
本文参考fabric的世界状态[26],每个节点的当前状态都保存在世界状态数据库中,每当新的区块产生,所有节点会根据区块内的交易改变当前世界状态数据库中所有用户的状态。世界状态数据库的目的是方便节点查询信息,方便监管。用户的信息由电网公司进行注册并记录在区块链上。本文架构中的节点包括可再生能源发电企业、不可再生能源生产商与电力大用户、电网企业。
2 PoCT模型
本文提出基于PoS的改进算法——PoCT共识算法,利用区块链的奖励机制激励消费者购买可再生能源商品,同时解决传统PoS算法中存在的N@S攻击问题以及奖励分配的公平性问题。本节将从共识流程、权益计算、奖励与惩罚机制3个方面进行分析。
2.1 共识流程
本文提出的PoCT共识机制中,首先给出碳通证与碳龄的概念。区块链能源碳通证是以智能合约的编写为前提,通过区块链平台的能源交易过程创建的一种新型数字通证。该数字通证的设计目的是采用一种“计量或计数”载体来区分市场各参与方的贡献与角色定位,为不同市场交易产生或折算的减碳量提供计算参照物,碳通证代表主体对减排做出的贡献[27]。碳通证作为奖励,伴随出块节点产生区块时产生,产生的数量由交易中的绿色能源产品对应的减排量来决定。然后通过选举共识节点的方式解决传统PoS共识算法中的N@S攻击问题。碳龄是参考点点币[28]中币龄的概念,作为PoCT算法中的权益值,碳龄越多的节点越容易获得出块权。
首先假设有N=m+n个节点,m为该区域内可再生能源发电公司总数,n为该区域内不可再生能源发电公司总数。出块节点占全部节点的比例为μ,出块节点数量为k=μN。所有节点对世界状态中的节点碳龄大小进行排序,选出碳龄排名前k的节点为出块节点。k个出块节点再根据自身的权益大小进行排序,按顺序产生区块。选举出块节点并产生区块的过程称为一次epoch。若排序后发现有多个节点的碳龄与第k个节点相同,导致出块节点的数量大于k,则再对与第k个节点碳龄相同的节点的ID的hash值进行比较,再进行一次排序,直到当前epoch的出块节点的数量达到k个。在不考虑hash碰撞的情况下,hash值是唯一的,因此比较结果也是唯一的。所以在选举出块节点时所有节点可以达成共识,选举出相同的k个节点构成出块节点队列。PoCT中每次epoch选举k个出块节点,而不是选择1个出块节点,主要是为了给更多的节点提供奖励,激励它们参与到减排任务中,同时也为了避免一个节点可能会离线,不进行出块任务,导致系统资源浪费的情况。
下面介绍k个出块节点产生区块的过程。每个节点产生一个区块,产生区块的顺序同样由节点的碳龄大小来决定。每个出块节点要等待前面的出块节点发送临时区块链给自己,并验证这个临时区块的产生顺序是否符合排序以及区块中的交易是否合法。若发现有不合法的交易,则不接受该区块,并且对产生非法交易的节点进行惩罚,把它从出块节点队列中移除。若存在离线节点,在该节点打包区块的时候,该节点没有进行区块打包,则跳过该节点,由下一个节点打包区块。在所有节点完成出块任务后,由最后一个出块节点将临时区块链发送给其他未参与共识的节点。
最终一次epoch的区块数量可能小于k,因此节点离线率的大小会影响整个区块链网络的性能。当临时区块链产生后,再发给其他未参与共识的节点,其他节点验证区块的产生顺序是否正确以及区块中的交易是否合法。顺序固定是为了防止出块时产生分叉,因此固定的出块顺序可以有效地抵御N@S攻击。参与了一次epoch的节点的碳龄会被清零。
一次epoch的流程如图2所示。主要分为出块节点选举、Pre-Prepare、Prepare、Commit and View-change以及Replay这几个过程。其中Pre-Prepare与Prepare沿用了PBFT的Pre-Prepare与Prepare过程,与PBFT算法具有相同的容错性,可以容纳f个拜占庭节点,而一次epoch中的总出块节点数k应满足k≥3f+1[29],因此每次epoch也允许存在不超过1/3的拜占庭节点。一次epoch也可看成是连续多次的PBFT过程,PoCT共识算法流程如下。
第1步:根据选举算法选出出块节点。由于某些节点可能离线,到该节点生产区块时没有区块产生,因此设置一个节点最长等待时延Tmax。若超过Tmax没收到区块,系统自动执行选举算法,选出下一个出块节点。
第2步:进入Pre-Prepare阶段,出块节点产生区块,广播消息<
第3步:进入Prepare阶段,副本节点收到Pre-Prepare消息后,检查消息是否合法,如果验证通过则向其他节点发送prepare消息
第4步:进入Commit and View-Change阶段,广播commit消息,告诉其他节点当前区块在视图中已经处于准备状态。如果集齐至少2/3节点验证通过的commit消息,则说明区块通过,对当前主节点产生的区块达成共识。同时进入View-Change执行节点选举算法,由下一个出块节点产生区块。若超过Tmax时间没有产生区块,则跳过当前出块节点,进入View-Change阶段,重新选出出块节点。
第5步:按上述过程反复执行Pre-Prepare、Prepare与Commit and View-change过程,直到第k个节点完成出块任务,形成临时区块链,由第一个出块节点广播给所有跟随者节点,最终完成一次epoch。若其他节点超过Tmax没有收到第一个节点的消息,则由第二个节点将临时区块链广播给其他节点。其中节点n2由于中途离线,没能成为该epoch中最后的出块节点,没有完成出块任务。
第6步:进入Broadcast Blockchain阶段,其他节点在Tmax时间内没有接收到节点n2的消息,执行View-Change过程,选出节点n0作为主节点,此时参考点点币在线并作为主节点将临时区块链发送给其他未参与本次epoch的全节点。
第7步:进入Reply阶段,未参与共识的全节点收到临时区块链后执行Reply过程,首先验证临时区块链交易的合法性,确定临时区块链是按照正确的顺序出块,以及每个区块中的签名信息,验证无误后发送Reply消息给其他节点,所有节点收到超过2/3未参与出块节点的reply消息后对此临时区块链达成共识,添加到本地的区块链中。
区块传播时间由每个链路上的传输延迟和每个节点的交易验证时间决定。对于大小为s的区块,传输延时为:
(1)
式中:γ是与网络规模相关的参数;c为各链路的平均有效信道容量。由于验证一个交易需要一定的计算量,区块验证时间可以建模为一个线性函数:
τv(s)=βs
(2)
式中:β是由网络规模和每个节点的平均验证速度决定的参数。那么,大小为s的块在网络上传播的平均时间为:
(3)
由于传播延迟或节点离线而出块的发生率遵循平均速率为1/T的泊松过程。因此,节点没有产生一个大小为s的有效块的概率为:
(4)
一次epoch预期产生区块的数量为:
(5)
则在PoCT共识中完成一次epoch的时间为:
(6)
式中:η是通信复杂度参数;Tmax为节点最长等待时间;Telection为出块节点选举时间。
本文区块链架构的吞吐量(transaction processing systems,TPS)为:
(7)
式中:Nblock为临时区块链中区块的数量;STx为每笔交易的平均大小。
每一次epoch后节点计算每个节点的碳龄,排序后记录到世界状态中。世界状态存储节点当前的状态以及碳龄排名前k个节点的列表,每一次epoch更新一次世界状态。若节点因离线而没有参与到本次共识,则同样会将该节点的碳龄清零,并且不会得到区块奖励,因此节点会偏向于长时间保持在线状态。
2.2 权益计算
在基于PoS的区块链系统中,原则上认为:为系统做出贡献越多的节点,越容易挖到区块并获得奖励。在本文中认为TGC的买卖双方促进了绿色能源的消纳,CCER和CE的卖方对减排做出了贡献。因此售出CCER、CE的企业获得一定的碳通证同时卖TGC以及买TGC的企业会获得一定的碳通证。
本文定义时间序列:
T={D0,D1,D2,...}
(8)
其中相邻的时间间隔为一个区块产生的时间,如D0为创世区块产生的时间点,D1为第一个区块产生的时间点,以此类推。
点点币[26]中用币龄来进行权益计算,币龄的计算公式为:
acoin_t=ncoin(Dt-Dt-1)+acoin_t-1
(9)
式中:acoin_t为该节点t时刻的币龄;ncoin为该节点当前币的数量。点点币通过累积币龄来减小挖矿难度,币龄越多,挖矿难度越小,且挖到区块后币龄会被清零。区块链的挖矿过程需要计算一个满足一定范围条件的哈希值,点点币的PoS计算公式为:
hash(Bheader) (10) 式中:hash(·)为哈希运算;hash(Bheader)表示当前区块头的哈希值;Tthreshold表示目标阈值;acoin表示币龄。这种权益计算的问题是,一个节点可以长期离线累积币龄,挖到区块获得可观的利益后再次离线,很明显如果大量的节点都这样做,将会威胁到整个系统的安全。 为进一步巩固PoS的安全,黑币[30]被发明了出来。黑币将币龄去除,使得积攒币龄的方法不再有效,所有节点必须更多地保持在线,以进行权益累积,越多的节点在线进行权益累积,系统遭遇51%攻击的可能性就越低。黑币的PoS计算公式为: hash(Bheader) (11) 但在这两种模式下,一个财富很多的节点会更容易挖到下一个区块,挖到区块后获得的区块奖励使他的财富变得更多,其币龄累积的速度也会越来越快,这就导致了富者越富的现象,并且该权益计算方式并没有体现出节点为系统做出的贡献。 本文中的碳龄与传统PoS算法中的权益对应,由节点购买或售出的TGC以及卖出的CCER和CE所获得的碳通证计算。由于交易可再生能源产品,就会促进减排,因此可以认为对本文系统做出了贡献。在传统PoS中存在权益累积现象,比如很多节点累计到很大的权益,再同时挖矿造成恶意分叉。为了防止权益累积,本文在碳龄计算中添加了一个衰减因子eδt,同时设置一个内部计数器cnt,当节点在z个区块内都没有获得出块权,就将该节点碳龄清零重新计算。这也是PoCT中每次epoch选举k个节点的原因之一,在一定程度上避免了这样的情况发生:一些节点还没有获得出块权碳龄就被清零,而没有获得奖励。 对于消纳主体,碳龄计算方式如式(12)所示。 Cage_i,t=(ωnTGCi,t+ξnCCERi,t+ψnCEi,t)bcmeδt (12) 式中:ω、ξ、ψ分别表示TGC、CCER以及CE在碳龄中的计算系数;nTGCi,t为消纳主体i在t时刻前总共购买或售出的绿色证书的数量;nCCERi,t为用户i在t时刻前总共售出的CCER的数量;nCEi,t为用户i在t时刻售出的碳配额;bcnt为计数器相关的布尔值,当计数器显示为z时,bcnt=0,否则bcnt=1。 用户被选为出块节点的概率与他的碳龄与总碳龄的占比成正比,用户i碳龄占比为: (13) 占比排前k的节点会被选为出块节点,参与出块行为并获得奖励。 为了激励消费者购买TGC,通过购买TGC而获得出块权的节点将会获得一定的区块奖励。本文将区块奖励分为动态奖励与静态奖励两部分。对于一个节点,奖励函数为: Ctoken_i=Cage_i,tr+Rstatic (14) 式中:r是动态奖励参数;Cage_i,tr为动态奖励,动态奖励与节点出块时得到碳龄成正比;Rstatic为固定奖励。 对于没有完成RPS目标的消纳主体,进行经济惩罚。惩罚量由未达到RPS指标的量决定,并且由监管中心没收所有静态区块奖励。这是因为动态奖励的本质是对可再生能源的补贴,消纳主体已经购买的可再生能源商品对应的可再生能源已经汇入主网,因此该消纳主体应该得到该补贴。而固定奖励是额外的奖励,用于激励所有主体购买可再生能源商品,对于消纳主体应当在完成配额目标的情况下才有资格获得这部分奖励。 由于责任主体的RPS指标完成情况在区块链上公开,因此惩罚过程可由智能合约自动执行,省去了国家可再生能源信息管理中心核查RPS完成情况的过程,整个核查、惩罚过程变得更加公正、简单。 PoCT算法可以有效抵抗N@S攻击。PoCT每次epoch按顺序产生固定数量的区块,每次epoch后所有节点又对当前的出块队列达成共识,认可同一批出块队列,这就避免了传统区块链中的分叉现象,也同时避免了传统PoS算法中的N@S攻击。由于出块节点是被动选择的,因此PoCT算法的效率受节点离线率的影响,若多数被选为出块节点的节点处于离线状态,则一次epoch产生的区块数量就会较少,从而影响系统性能。本文的应对方案是,被选为出块节点但没有进行出块任务的节点不会获得区块奖励,同时该节点积攒的碳龄也会清零,导致下一次很难被选为出块节点。因此为了不损失自身的利益,节点会尽可能保持在线状态。每次epoch中的出块节点都是由PoCT算法自动选出的,因此不存在传统PoS算法中的币龄积攒攻击。 PoCT的出块节点选举过程与DPoS类似,但DPoS算法的基本假设是相信节点是好的,而把问题发生后的修复过程推迟到投票中,可以说DPoS并不考虑拜占庭容错问题。DPoS算法中存在普通节点不积极参与投票的问题,因为选举代表需要消耗大量的时间和算力;任何一个持币节点都可以参与到投票和竞选代表这2个过程中,每个节点投票的权重和持币量成正比,因此可能存在恶意节点贿赂权重较大的节点给自己投票的潜在风险,从而产生腐败贿赂的现象[31]。PoCT算法中并不存在节点投票的过程,出块节点的选举由系统自动执行,对减排做出贡献越大的节点,被选为出块节点的概率越高,因此避免了传统DPoS中贿赂节点投票的问题,且节点合法出块后会得激励,这也是对做出减排贡献的节点的正反馈。 PBFT中只要收到超过2/3的节点的区块就会被验证通过。而在PoCT中,每个被选出的出块节点都会对其他出块节点产生的区块进行合法性验证,也就是说一次epoch生成的临时区块链在添加到当前链之前是要经过所有出块节点同意。假如选出的出块节点中只有一个是诚实节点,而其他都是共谋节点,则当轮到诚实节点出块时他不会接收当前的非法临时链,也不会进行出块操作。系统中的交易池是所有节点共同维护的,当非法临时链在2.1节中的第7步被发送到其他未参与出块的节点时,这些节点同样会验证每个区块的合法性,若其中含有非法交易则抛弃整个临时链,若临时链合法,则将其添加到本地链。本文场景是在智能电网中所有区块链网络中的节点一定是经过身份验证的,因此不存在女巫攻击的问题。对于一条非法临时链,诚实节点不会接受,而作恶节点会接受,这样就会产生分叉,诚实节点所在的分叉交易一定是合法的,作恶节点在分叉链上得到的激励同样不会被所有诚实节点所接受,因此作恶节点最终会被系统所淘汰。 PoCT算法在出块节点产生区块的过程中加入了PBFT算法的Prepare、Commit以及View-Change过程,PoCT中每个区块的产生都可以看作是一次PBFT过程,因此具有拜占庭容错性,其效率高于传统PBFT,低于DPoS。PoCT中一次epoch中的出块节点数量由总节点数N以及出块节点的比例μ决定,每次epoch过程中通信复杂度与PBFT一样为O(n2),n为节点数量,因此μ的取值越高,一个epoch所花费的时间越高,拜占庭容错性也越高;μ取值越小,epoch花费的时间也越小,拜占庭容错越低。因此PoCT算法可以看做是一种激励节点对减排做出贡献以及具有拜占庭容错的DPoS算法。 仿真过程设置5个电力大用户、4个可再生能源生产商、6个不可再生能源生产商,共15个节点。在仿真阶段,假定系统中的可再生能源产品是充足的,不考虑天气等自然因素导致绿证供不应求的情况。 1)PoCT的权益分析。 下面仿真本文提出的PoCT算法,PoCT中的权益为碳龄,初始化碳通证数量Ctoken、碳龄Cage:[10,50,150,300,1 300,600,500,100,350,100,100,600,100,300,100]、[10,20,15,25,30,100,150,130,125,500,560,2 000,1 000,800,750],数组中的值分别代表15个节点对应的Ctoken与Cage的值。设置普通用户每隔5个区块时间买一次可再生能源产品,不可再生能源生产商每隔3个区块买一次可再生能源产品,每次购买可再生能源产品随机向4个可再生能源生产商中的一个购买,每次购买的数量在(1,15]之间,三种节点的贡献度比例约为3∶8∶5,1 000次epoch后,仿真结果如图3所示,横坐标中P代表电力大用户,GP代表可再生能源生产商,NP代表不可再生能源生产商。可以看出节点最终的Ctoken集中在4个可再生能源生产商当中,因此节点获得的碳通证数量与碳通证数量、碳龄的初始值无关, 只与买卖可再生能源产品的量有关。 图3 PoCT权益分析 2)被选为出块节点的次数。 由于本文采用的区块奖励与点点币和黑币不同,因此比较产生2 000区块中,各个节点的出块次数统计来比较4种算法的优劣性。以点点币和黑币为代表的PoS算法可以理解为选出系统中权益最高的节点作为出块节点。DPoS一般通过节点投票的方式选举出出块节点,而PoCT则通过计算节点在一段时间内对减排做出的贡献选举出出块节点,通过激励的方式对减排节点进行正反馈,这在碳交易背景下更具有意义。从图4中可以看出黑币中出块次数主要集中在初始权益最高的节点,而点点币的权益计算方式效果明显好一些,但仍受初始权益影响。DPoS算法中的出块节点由普通节点投票产生,且权益越高的节点投票比重越大,因此出块次数同样集中在权益较高的节点处。 图4 四种算法节点出块次数对比 (15) 本文提出的PoCT算法,随着时间的增长,获得出块权的次数只与其做出的贡献相关,3类用户的贡献比例约为3∶8∶5,因此从图4中可以看出可再生能源企业的出块次数明显较多,因此PoCT算法更加公平合理。 本节将本文提出的PoCT算法与传统联盟链中的PBFT算法的性能进行比较。设置参数如下:区块大小s=10 MB,交易大小STx=0.2 kb,有效信道容量c=50 kbit/s, 网络规模参数β与γ分别设置为:β=0.000 05,γ=50,出块节点选举时间Telection=0.1 s,通信复杂度参数η=0.3,泊松分布参数T=30,节点最长等待时延Tmax=2 s,出块比例μ=0.5。 1)每次epoch所花费的时间随节点数量变化情况。 比较2种算法每次epoch所花费的时间随节点数量变化的情况,如图5所示,由图5可以看出生成同样数量的区块PoCT算法的效率远高于PBFT。 图5 PoCT与PBFT延时对比 2)系统吞吐量随节点数量变化情况。 PoCT与PBFT在不同节点数量下的系统吞吐量比较如图6所示。由图6可以看出PoCT算法的系统吞吐量远高于PBFT算法。 图6 PoCT与PBFT吞吐量对比 3)不同出块比例μ下2种算法的epoch时间与系统吞吐量比较。 本节改变出块比例参数μ,来比较算法性能。μ分别取0.8、0.5、0.2,在不同μ下的PoCT与PBFT的epoch时间比较如图7所示, 不同μ下的系统吞吐量比较如图8所示。由图7可以看出,随着μ的减小,每次epoch的时间也会减小,且μ越接近1,曲线越接近PBFT的epoch时延曲线。由图8可以看出,μ越小TPS就越高,共识效率也就越高。但是μ的值并非越高越好,出块节点过少可能会导致系统趋于中心化,因此μ在实际情况中可以折中选择。 图7 不同μ下PoCT与PBFT时延对比 图8 不同μ下PoCT与PBFT吞吐量对比 本文提出了基于PoS的PoCT算法,一般的PoS共识算法,后加进来的节点权益很小,很难获得出块权,在本文提出的PoCT共识中节点的权益与它在智能电网中的减排量有关,只要它对减排做出了贡献就有机会获得权出块权得到奖励,激励其继续减排。本文采用动态权益的方法,挖到区块或过一段时间后,节点的权益就会清零,从仿真结果上看在一定程度上避免了权益累积对区块链系统造成的威胁。在传统模式中,各电网企业需对营业区域内的可再生能源产品的产生和转移进行核算,并将汇总信息报给国家可再生能源信息管理中心。而区块链具有天然的可追溯性,交易信息以及RPS信息都记录在链上不可篡改且可追溯,使交易各方的信息对称。2.3 奖励与惩罚机制
3 安全性分析
4 仿真分析
4.1 公平性分析
4.2 效率分析
5 结 论