
电网能源终端交互方法
2019年3月,国家电网有限公司提出全面部署泛在电力物联网,建设万物互联的智慧能源综合服务体系,实现业务协同、数据贯通和统一物联管理,形成共建、共治、共享的能源互联网生态圈。
泛在电力物联网和区块链技术互联互通、共治共享的思想一致,是区块链落地应用的广阔天地,同时也带来了新的挑战。
随着泛在电力物联网的建设和普及,海量电力智能终端不断接入,对数据交互的并发性和稳定性要求将会越来越高。
然而,传统的区块链(如比特币、以太坊)采用的基于工作量的共识是将一段时间内接收到的交易数据打包并封装到一个带有时间戳的数据区块中,区块验证成功后再被链接到当前的最长链上。
从结构上看,这样的区块链只有一条单链,共识不能并发进行,打包出块往往需要等待较长时间。
若采用传统的单链线性记账方式,势必会造成网络拥堵,数据交互耗时长,信息也不能实时双向传递。因此如何打破区块链的效率瓶颈,是区块链技术在电网大规模应用的关键。
1.DAG链
为了解决区块链的共识效率问题:
Sompolinsky Y和Zohar A于2013年提出将交易存储在树形结构而非链式结构上,用来加速比特币交易;
2014年,有人在nxtforum.org提出将有向无环图(Directed Acyclic Graph,DAG)与区块链相结合的解决方案。
随后两年,出现了不少项目都采用了类似的存储结构,如DagCoin、The Tangle和Byteball,本方案统称为DAG链。
DAG链不仅是一条单链,而是采用树/图结构,让每笔交易不严格按时间顺序验证排队上链,且并发写入区块链,以此大幅度提高运行效率。
从发展阶段上看,DAG链分为两种:
一种是DAG+区块(DAG of Blocks)模型(如nxtforum.org上提出的模型),只是引进了DAG的网络拓扑结构,交易还是被打包成区块,不同类型的交易分别在不同的链上共识,最后再对不同的分支进行合并,通过划分交易类型同时在多条链上共识,达到缩短共识时间的目的;
另一种是DAG+交易(Blockless)模型(如DagCoin、The Tangle,和Byteball),其完全放弃了区块的存储结构,转而对粒度更小的交易做共识。一笔交易就是一个区块,不需要和其他交易一起打包,这样就节省了打包成区块的时间。

上图中,DAG链的最左边为创世区块,它的出度为0。
从左至右为从创世区块至所有新区块(注意同一时刻可以有多个新区块)所构成的有向无环图,哈希指针由新区快指向历史区块。
除创世区块外,其他区块都可以有多个入度和多个出度,新区块暂时没有入度。
DAG链的运作原理:每当有新的交易产生时,都向前验证N个交易区块的有效性。随着交易被越来越多的直接或者间接的交易所验证,这个交易的可信度就越来越高,直到最终被系统接受,形成新的区块。
在这种结构下,同一时刻各节点的账本有可能不完全一致,但最终会是一致的。
为了让电网系统更灵活、快速、易扩展,也可以用网状的DAG链拓扑结构替代传统的单链存储结构,结合异步通信共识机制,在区块打包时间不变的情况下,并行对多个区块做验证。
这样,多个能源终端节点就可以按照不同的节奏共识确认交易,平行验证,高并发写入,以此提高电网的运行效率。
2.DAG链的“双花”问题
在一个基于区块链的电网中,不同能源终端之间的数据交互都在链上以交易的形式进行,数据是否真实可信、交互能否成功都取决于这笔交易被广播后能否被全网有效共识确认。
在DAG链中,不单只有矿工或指定的记账节点有记账权限,而是整个网络节点都参与到交易合法性的验证中。
这确实可以提高效率,但也让双花攻击成为可能。假设攻击者同一时刻在DAG的两个不同路径上添加了两笔冲突的交易(双花),他们将在链上不断向前验证。
只要他们不汇聚到一起引发冲突,将永远不被其他人发现。
因此,需要让DAG的不同分支最终都汇聚到一条链上,并在DAG宽度和交易置信度之间找到平衡,快速发现冲突、解决冲突,保证DAG链的一致性。
例如,可以借助主链和权威节点的思想,用如下异步通信共识机制进行新区块的确认:
(1)在基于区块链的电网系统中事先选取N个权威节点(N≤全部节点的1/3)作为“见证人”,负责主链上交易有效性的确认与全网交易检查。
(2)当某个能源终端节点A发起一笔数据交互的新交易时,该节点会找前两个权重值(Weight)较高的过去连续历史父区块去验证(看下面的图)。如节点A在B、C、D、F这四个与A有直接关系的父区块中会找到权重值最高的B区块和B区块的权重值最高的直接父区块E区块来验证。

寻找权重最高的连续父区块
(3)利用B、E两个父区块的随机值(Nonce)和A的自身算力进行简单的计算,得到区块A的权重数值W(A)。
(4)将计算得到的W(A)以及Nonce(A)向全网所有节点广播。
(5)该区块的运算结果又会被其他节点发起新交易的子区块G以相同的方式验证。被其他节点验证的次数越多,区块A有效的概率越高。
(6)当区块A被超过一半的权威节点直接或间接确认时,他的有效性将被最终确定;
(7)权威节点将有效区块A加入到主链(如下图所示)。

权威节点见证主链
在步骤2中之所以要选择权重高的父区块来验证,是为了增加自己的交易被后来交易验证的可能性。
如果某个节点绑定了非法交易,那么他的权重将会降低,被后来区块验证的次数将会越来越少,最终被区块链网络抛弃。
权威节点负责记录交易区块的时间戳,监督每个区块按照权重值的大小排序依次进行验证。
在权威节点见证的主链中,所有区块要么位于主链中,要么向前跳跃少数几个父区块就可以到达主链,跳跃的次数被称为主链指数(Main Chain Index,MCI)。
当有冲突(两笔互相矛盾的交易)发生时,比较这两个区块的MCI,只保留MCI较低(即离主链更近)的那个,从而剔除非法交易,杜绝双花事件的发生,保持数据的一致性。


