
引用
Chen M., Li Y., Xu Z., Huang X., Wang W. (2018) A Blockchain Based Data Management System for Energy Trade. In: Qiu M. (eds) Smart Blockchain. SmartBlock 2018. Lecture Notes in Computer Science, vol 11373. Springer, Cham
摘要
近年来出现了一种新型的能源贸易形式,即分布式能源。然而政府、用户和能源公司之间存在着信任问题。为了解决这个问题,我们使用智能合约和以太坊技术开发了一个分布式能源交易系统。智能合约是一种计算机协议,旨在以数字方式促进、验证或执行合约的谈判或履行。以太坊是运行智能合约的分布式平台之一。采用智能合约和以太坊,系统避免了使用集中能源管理系统可能带来的相关风险。本项目的目的是使用以太坊开发一个基于区块链的能源链交易的物联网数据管理系统,并通过通信顺序过程(CSP,描述并发系统交互模式的正式语言)测试智能合约。
关键词
区块链、智能合约、能源交易、CSP以太坊
技术介绍
目前,几乎所有用户都是从当地电力公司购得用电。发电厂根据地区日用电的预先估值发电。由于发电量可能超过实际用电量,所以会有一些电力未被完全利用。如果不被使用,额外的能量会被浪费掉。为解决此问题,我们提出了一种能源竞价系统,作为一个中介平台来让大家竞价额外的能源。现行的集中竞价系统可能会产生一些安全问题。典型的漏洞如重放攻击和客户串通。这会破坏匿名性和隐私性。由于第三方机构本身可能泄露秘密信息,因此第三方机构的可靠性无法保证。即使第三方机构值得信赖,这种机构也常常要求昂贵的代理费。
为避免上述风险,中间机构应该被移除。区块链技术可以满足此要求。它是一种分布式账本技术,允许用户删除中间人并且减少了交易成本和通过第三方工作的时间间隔。此外,区块链账本不属于任何中央机构,每个人都可以访问。新的区块链技术的一个特点是与对智能合约的集成,智能合约是存储在区块链上的代码,可以在没有第三方控制的情况下自动执行。作为运行智能合约的分布式平台,以太坊为在定制区块链上进行合约开发和部署提供了成熟的环境。开发者可以通过智能合约来实现基于以太坊的去中心化能源招标系统。
尽管智能合约规避了第三方的风险,但是它的并发特性可能导致一些易被他人的风险。这些漏洞来自于智能合约设计逻辑上的错误。为了检测智能合约在能源拍卖上的漏洞,采用通信顺序过程(CSP)作为验证方法。CSP可以规定和验证并发系统之间的交互。
实验方法
能源拍卖的过程分为几个主要阶段,如图1所示,供应商在第一阶段部署智能合约并公布包括能源数量,拍卖时间和供应商地址的招标信息。投标人发送报价以投标能源。收到价格后,智能合约将给定价格与当前最高价格进行比较。如果给定价格高于当前最高价格,则合约将接受报价并以给定价格更改当前最高价格。否则,报价将被拒绝。在下一阶段,投标人将定金转移到智能合约。合约账户保留定金,直到投标人要求取回或投标人赢得拍卖。当投标时间结束时,拍卖结束,合约账户将获胜者的定金转移到供应商的账户。在下一阶段,在拍卖中失败的投标人可以取回存款。使用区块链的结构,所有投标人和供应商都可以在没有第三方平台(如拍卖公司)的情况下参与拍卖。

图1 能源拍卖的状态图
能源拍卖系统必须满足以下要求:
1.拍卖结束时,供应商应有证明从中标者那里获得资金。
2.如果最终没有中标,投标人可以收回定金。
3.智能合约不能自行返还资金,需要投标者主动撤回定金。
4.投标人应在投标进行期间报价;否则报价无效。
5.如果投标人发布与当前最高价相同的价格,系统将拒绝报价。
6.每个投标者的价格是保密的,除非报价是当前的最高价。即只有最高价格是公开的。
智能合约是在以太坊平台上部署的程序。在以太坊中,智能合约不能自行激活,但可以由外部账户触发。在我们的实验中,我们使用Solidity来实施能源拍卖的智能合约。智能合约可供公众访问,用户可以使用合约地址激活智能合约。用户可以通过以下几个接口查看出价信息:
1.投标时间:当前拍卖的最后一次投标时间。
2.供应商:能源供应商的帐户地址。
3.供应商提供的能源数量。
4.最高出价者:提供最高价格的投标人的帐户地址。
5.最高报价
6.返回:用于存储所有投标人报价信息(定金)的映射。(类似于Java中map的数据结构)。
在能源拍卖智能合约中,我们定义了以下功能:
1. Bid():任何公众都可以使用此功能参加拍卖。有三个要求:
(a)投标人不能是供应商本身。
(b)当前时间必须在投标时间内。
(c)该投标人的报价必须高于当前的最高价。
如出价满足上述要求,则当前最高价和最高出价者将分别更改为信息发送者的报价和地址。
2. Return_deposit():退还投标人的定金,拍卖的获胜者除外。
3. Auction_End():它要求当前时间应晚于拍卖结束时间。同时,要求拍卖还从未结束。
4.在智能合约中,关键字event和emit用于记录事务日志。
实验进展与功能测试
实验中,我们部署了智能合约并进行了功能测试,该测试分为两个主要部分。第一个基于JVM。 我们在JVM上部署了智能合约,以测试合同是否满足功能要求。 我们在此测试中使用Remix作为Solidity编译器。Remix还提供了一个交互界面(如图2和图3所示),供我们部署合同和调用功能。

图2 Remix的接口

图3 合约部署的接口
JVM上测试合同时不需要注册帐户,因为Remix将为用户提供多个帐户,如图3。在部署智能合约之后,我们可通过Remix实现单元测试。
测试阶段,我们在部署合同时将一个提供的帐户设置为供应商地址。然后,我们更改帐户并使用Remix添加新的出价。
第二部分基于测试网络。在这一部分中,我们使用Meta-Mask作为提供几个不同帐户的钱包。我们还使用了一个叫Ganache的工具,它可以建立本地私人链以部署智能合约。 Ganache提供多个可用账户,每个账户中有100个ETH用于交易。然后我们用Meta-Mask和Ganache创建了一个测试网络。帐户信息可以与Remix同步,这意味着一旦我们通过Remix进行交易,Meta-Mask中的帐户信息将立即更新。
以下是解释测试网络中出价进度的一个实例。
第1步:我们使用供应商帐户部署智能合约(由Ganache提供)和30单位能源:
0xC67f6Fb04dfdCbBfA4f2b8BF2A65Fa991A5E3920
第2步:我们创建三个不同的帐户作为投标人:
0x8487e47c74d059bCEEA05804056Ded5F7C9d0a61
0xAaEAdeF6Ee95B3d773488079472F980d1555bF62
0xC518089037C3FAEf1A3599BD51B3AAba9D7d6664
现在我们使用前四个字符来表示帐户。
第3步:我们开始招标:
1)0x84提供0.5 ETH的价格
2)0xAa提供1 ETH的价格
3)0x84提供2 ETH的价格
4)0x5c提供4 ETH的价格
5)拍卖结束
拍卖的最终结果是0x5c赢得拍卖,最终价格为4ETH。 此外,合约将2.5ETH返回到0x84,将1ETH返回到0xAa。可以在Ganache上查看交易信息,账户信息和私人链信息,如图4和图5所示。分别为4,5和6。

图4 私有链上的交易信息

图5 各账户余额

图6 私有链上的块信息
合约脆弱度测试
如图7所示,验证的过程可分为三个主要阶段:
1.通过CSP理论将合同源代码翻译成形式语言,建立模型;
2.开发攻击者模型;
3.编译建模结果并使用FDR进行验证。

图7 用于验证的工作流
CSP模型:
在此测试中,CSP用于描述隐藏在程序中的攻击序列。接着我们使用FDR以测试理论上的攻击序列是否退出。它以成功检测并发安全协议中的攻击而闻名。建模主要关注三个对象:变量,过程和攻击者模型。
1.变量:全局变量主要有三个:最高出价者、最高出价、结束。在本合约中,状态定义为
结束 := {真,假}
由于并发进程,全局变量可能会导致一些推断问题。因此,我们需要关注全局变量的建模。此外,还有另外一组变量:
对象 := {供应商,投标人,合同}
供应商,投标人和合同分别指供应商,投标人和合同的账户信息。
2.过程:在这个阶段,我们开发了契约函数模型,它包含四个主要函数:constructor(),bid(),auction_end()和return_deposit()。由Energy_Trade(x,y,z,u, w),Bid(x,y,z,u,w),Auction_end(x,y,z,u,w)和Return_deposit(x,y,z,u,w)分别在流程建模中展示


3.攻击者模型:CSP模型中的跟踪描述了智能合约在诸如招标,退回定金和结束拍卖等条件下可能产生的所有可能错误状态。它们根据能源交易情景建模。在这个实验中,模型检查合同中的资金是否转移到相应的供应商和投标人的地址的安全性,并在拍卖结束时将能源给予获胜者。此模型中攻击的定义如下所示:

使用FDR验证结果:正式模型由FDR编译并自动验证,最终结果表明是否存在攻击痕迹。
最终结果失败(如图8),这意味着攻击痕迹没有出现在我们的CSP模型的跟踪集中。它表明这个智能合约没有可能导致交易错误的漏洞,因此完全可以抵御这种攻击。

图8 验证结果
本文主要贡献
与传统能源贸易系统相比,我们的系统具有以下优势:
1.在传统的能源贸易系统中,用户只扮演消费者的角色。在我们的系统中还能扮演能源供应者的角色。
2.我们的系统是一个分布式的能源贸易体系,它使贸易更加透明和可靠。分布式系统使用户能够参与能源价格的决策。此外,与普通的p2p网络相比,区块链的优势使其对我们的系统更有利:
3.区块链有自己的共识机制,这意味着我们不需要开发协议来帮助用户建立彼此之间的信任。
4.区块链的交易信息透明且不可更改。
5.用户的隐私(如真实姓名)受到区块链的保护。
添加新手交流群:币种分析、每日早晚盘分析
添加助理微信,一对一亲自指导:YoYo8abc