在物联网中使用以太币区块链:电动汽车电池加油的解决方案


引用

Sun H., Hua S., Zhou E., Pi B., Sun J., Yamashita K. (2018) Using Ethereum Blockchain in Internet of Things: A Solution for Electric Vehicle Battery Refueling. In: Chen S., Wang H., Zhang LJ. (eds) Blockchain – ICBC 2018. ICBC 2018. Lecture Notes in Computer Science, vol 10974. Springer, Cham

摘要

物联网技术近年来变得越来越受欢迎。但由于物联网设备资源有限,系统架构集中,集中服务器超载、单点故障、个人信息恶意使用等严重问题仍难以解决。区块链技术在加密货币交易领域取得了巨大的成功。它具有许多独特的功能,如协商机制、对等通信、实现无第三方、基于智能合约的交易等。区块链似乎可以帮助构建一个分布式、自主的物联网系统来克服上述问题。

本文介绍了一种基于 Ethereum 区块链的 rich-thin-clients 物联网解决方案,解决了在物联网场景中采用区块链挖矿机制时,物联网设备资源有限所带来的问题。富客户机和瘦客户机都可以提供区块链访问和数据收集功能,而只有拥有更多资源的富客户机才能执行挖掘过程。在此基础上,提出了一种采用换电池方法的电动汽车电池加油系统。通过实验说明了该方案的合理性,并与其他基于区块链的物联网方案进行了比较。我们的结论是,我们的区块链物联网解决方案适用于各种物联网场景,同时避免了物联网设备资源有限带来的问题。

介绍

区块链最早由中本聪于2008年推出,作为比特币的底层数据结构。顾名思义,区块链是一个块链,其中每个块包含许多事务,这些事务散列在 Merkle 树中。通过存储前一个块的哈希值,每个块引用前一个块,形成一个链结构。图1 显示了区块链的典型结构。区块链系统与点对点通信、工作证明(PoW)、非对称加密、数字签名等矿商之间的共识相结合,可以提供一个稳定、不变的价值传递网络,促进加密货币的蓬勃发展。这种主要用于加密货币的区块链可以定义为区块链 1.0。


图1 区块链典型结构

虽然比特币支持脚本来定义简单的规则,但是脚本是不完整的。为了使区块链适用于加密货币以外的更多场景,Ethereum 引入了 smart contract,它可以用图灵完备的编程语言(如 solid)构建。智能合约是存储在区块链上的可执行代码,定义要存储什么信息和执行什么事务。理论上,所有基于事务的状态机都可以通过智能合约构建。图2 显示了智能合约的机制。如果应用程序仅由类似以太体的区块链构建,没有网络物理交互或其他外部设施,则定义为区块链 2.0,即基于区块链的经济、市场和金融相关应用程序随着智能设备的快速发展和无线网络带宽的不断提高,物联网的概念正在被广泛接受和普及。如今,它代表着一个网络,在这个网络中,智能事物与传感器和天线相连。作为一个高度动态的网络,物联网始终具有允许节点连接和离开网络的可伸缩性。事实上,物联网范式代表了一个连接设备和异构网络的集合,它也继承了计算机网络的传统安全和隐私问题。然而,与传统计算机不同的是,物联网设备通常具有有限的资源,如有限的电源、计算能力和存储空间。这就导致了传统的基于区块链的计算机网络安全方案难以在物联网网络中实现。


图2 智能合约机制

区块链3.0 意味着基于区块链的应用程序超出了区块链2.0 的场景。例如,基于区块链的命名系统、医疗保健系统、物联网系统等。对于基于区块链的物联网系统,除了区块链的相关因素如共识方法、智能合同支持外,或者不考虑状态机管理,也必须考虑物联网的相关因素,如计算能力的约束、设备的内存和网络带宽、设备的安全性等。然而,物联网设备资源有限,不能很好地支持区块链节点挖矿过程的问题经常发生。本文介绍了一种基于区块链的物联网系统的富瘦客户端解决方案。

本文的其余部分组织如下。在第三节中,我们介绍了一些基于区块链的物联网解决方案。在第四节中,我们提出了一个基于 Ethereum 区块链的富瘦客户端物联网解决方案,并利用该解决方案实现了电动汽车电池加油系统。第四节还介绍了一个性能实验,以证明所提出的解决方案的有效性。在第五节中,我们将基于区块链的物联网解决方案与其他解决方案进行了比较。在第六节中,我们提出结论和今后的工作。

基于区块链的物联网解决方案

物联网是指事物(设备、传感器、执行器等)连接的互联网。来自物理世界的数据由传感器收集,通过互联网传输。物联网系统的用户(或控制单元)可以对采集到的数据进行分析,发现趋势或模式,或根据数据改变执行器的状态。物联网技术近年来发展迅速。Gartner 公司预测,到2020年,将有 208 亿物联网设备接入互联网。

然而,由于物联网设备的计算能力、存储能力和网络带宽有限,以及集中的系统架构,一些严重的问题仍然难以解决。Minhaj 和 Khaled 列举了物联网系统中不同层次的安全问题,如干扰对手、不安全的物理接口、不安全的连接监测、漏洞和虫洞攻击、sybil 攻击等。此外,Nir 总结了当前物联网系统集中化架构带来的主要挑战:成本和容量约束、架构不足、云服务器停机和服务不可用、易受操作等。

Marco 等人的提出了一种分层架构,即在底层区块链的基础上构建额外的应用程序,适用于构建物联网系统,例如由 Muneeb 等人提出的块栈架构。Blockstack 是一个全局命名和存储系统,用户可以通过它注册名称—值对。名称—值对是根据特定的私钥生成的,只有私钥的所有者才能对名称—值对执行写操作或更新操作。块堆栈将控制平面与存储平面分开,这使得块堆栈的性能优于 Namecoin。此外,作者认为可以在块堆栈的控制平面上构建各种状态机。

Ali 等人提出了一种基于区块链的智能家居物联网解决方案,并对其提出的解决方案进行了进一步的研究。他们的解决方案的系统架构也是分层的,包括智能家居、覆盖网络和云存储。智能家居包含了家庭中的所有智能设备、本地区块链、智能家居管理器(SHM)和本地存储。覆盖网络连接智能家居和云存储,通过覆盖区块链提供分布式信任。云存储是用来存储来自智能家居的数据,为互联网上的其他服务提供数据。考虑到物联网设备没有足够的资源来支持 PoW,作者设计了没有 PoW 的系统架构。在智能家居中,本地区块链由业主通过 SHM 集中管理。覆盖网络的节点可以是 SHMs 等资源相对较高的设备。将节点分组成簇,以减少网络过载,每个簇中的一个节点被选为簇头(CH)。CHs 负责评估其他 CHs 是否值得信任,方法是根据直接和间接证据维持一个信任评级。由于该系统不采用协商一致的机制,允许区块链分岔,因此由 CHs 维护覆盖区块链。作者得出的结论是,他们提出的架构保留了传统区块链的优点,如隐私性和安全性,同时消除了传统区块链的 PoW,以获得更好的性能。

Seyoung 等人构建了基于以太坊的用电自动调节系统。该系统由 Ethereum 区块链、智能手机和三个设备组成,分别代表电表、空调和灯泡。由于智能合约可以定义物联网设备的行为,用户可以设置使用智能手机的设备如何工作的策略。例如,用户可以定义一个用电量的阈值,一旦达到这个阈值,空调就会切换到节能模式。作者使用 RSA 算法提供公钥和签名函数,而不是用 Ethereum 实现细粒度。

综上所述,区块链能够解决的物联网问题主要是由于当前物联网系统的集中化架构所导致的问题。列出了一些问题:

  • 中央服务器故障:故障可能由软件故障或攻击引起。
  • 单点故障:一个损坏的设备可能导致整个系统的故障。
  • 缺乏隐私保护:保存在中央服务器上的个人信息可能被滥用。

区块链可以解决上述问题,因为它的分散架构可以防止中央服务器故障或单点故障,而它的公钥—私钥加密可以提供假名,在一定程度上保护个人信息。然而,物联网设备的有限的资源所造成的问题仍然难以解决:一方面,大部分的物联网设备没有足够的资源来支持 PoW,另一方面,如果设备不是一个区块链网络的节点,其安全性和身份是很难保证的。

此外,我们发现以下因素对构建基于区块链的物联网系统至关重要:

  • 应该使用什么样的底层区块链系统?
  • 应采用什么共识方法?
  • 图灵完全编程是否必要?(是否需要智能合约?
  • 如何管理状态机?
  • 如何保证隐私和安全?
  • 如何融合区块链进入物联网?
  • 如何实现网络-物理设备交互?
  • 物联网设备需要成为区块链的节点吗?
  • 如何设计系统架构?
  • 如何设计物联网设备和区块链节点的拓扑结构?

基于 Ethereum 区块链的 Rich-Thin-Clients 物联网解决方案

在本节中,我们提出了一种基于 Ethereum 区块链的富瘦客户端物联网解决方案。我们设计了一种富瘦客户端体系结构,解决了上述物联网设备资源有限与集中式体系结构的矛盾。瘦客户机负责用户交互和物联网数据收集,可以认为是资源受限的物联网设备;富客户机是瘦客户机加上完整的区块链节点,可以认为是资源大于或等于个人计算机的设备。我们使用自己构建的私有以太体区块链网络作为底层区块链系统。这不仅是因为它支持智能合约,我们可以通过智能合约设计不同物联网设备之间、人类用户与设备之间相对复杂的交互,还因为它可以比比特币更快地生成一个新的区块。我们还使用了原始的协商一致方法:PoW,以及原始的加密方法:Ethereum account。

一、系统架构和拓扑

我们设计了一个富瘦客户机体系结构,它不同于分层体系结构,因为富客户机和瘦客户机有一些重叠的功能,而分层体系结构中的层或组件通常执行不同的功能。

图3 显示了富瘦客户机体系结构。富客户端和瘦客户端都可以为用户提供一个 GUI,调用区块链(BC)api 通过公元前接口部署在富客户端,定义业务逻辑,收集物联网数据为富客户端(可选),但只有一个富客户端包含一个完整的 BC 节点可执行公元前的采矿和包含所有交易记录系统。


图3 富—瘦客户端架构

图4 显示了由富客户机和瘦客户机组成的总体体系结构和拓扑。每个富客户机都包含一个功能完备的 Ethereum BC 节点,该节点可以与其他 Ethereum BC 节点一起执行挖掘和运行 PoW 协商算法。富客户机形成 P2P 网络,就像公共 Ethereum BC 节点一样。

瘦客户端连接到同一富客户机的客户机与富客户机形成星型拓扑。由于只有具有高资源的富客户端才能进行挖掘和协商一致算法,所以我们的网络在性能上应该类似于公共以太网络 BC,这样就可以解决物联网设备资源有限与集中式架构的矛盾。


图4 整体架构

二、隐私和安全

我们使用 Ethereum 帐户机制来识别每个客户端并加密交易。我们为每个客户机分配惟一的 Ethereum 帐户,以便在系统中惟一标识它们。每个客户端都有其惟一的公钥和私钥以及 Ethereum 帐户。由于这些账户与现实世界中的个人信息没有直接联系,这可能会为用户提供隐私。

在物联网系统中,物联网设备(瘦客户机)是最容易受到攻击的部分。如果物联网设备被黑,攻击者可能采取三种操作:

  1. 窃取在此设备上使用的帐户的属性。不幸的是,这个问题无法通过使用集中式架构或分散式架构来解决。
  2. 通过该设备入侵其他设备。这种情况在集中系统中可能会导致严重的问题,因为中央服务器可能会通过物联网设备受到攻击,但在分散体系结构中不会发生这种情况。
  3. 由于只有富客户机才能生成有效的帐户,所以在我们的系统中无法验证伪造的帐户。由于区块链验证机制在生成块时,无效的事务或帐户将被拒绝。

此外,即使富客户机被黑,因为它只是区块链网络中的一个节点,其他富客户机也会拒绝它发送的无效请求。

三、基于以太元的物联网加油系统

电动汽车加油。由于电池技术的发展和环保意识的提高,电动汽车技术在过去的几十年里发展迅速。随着电动汽车技术的大规模应用,可以减少温室气体的排放,提高能源利用效率。然而,电池的加油仍然是一个没有很好地解决的问题。电动汽车电池充电主要有三种方式:交流电充电、直流电充电和电池交换。电动汽车车主的车库可采用交流充电。它很方便,但是很费时。用交流电给耗尽的电动汽车电池充一次电需要 8 个多小时。充电站可提供直流充电。用直流电充满耗尽的电动汽车电池需要 12 小时。然而,由于直流充电功率大,可能会对电动汽车电池造成危害。换电池是三种电动汽车电池加油方式中最省时的一种。用电池交换站将耗尽的电池更换为充满电的电池只需要几分钟。

在实际情况下使用我们之前的基于区块链的电动汽车电池交换系统实际上是一个物联网的场景,因为电池交换站和电动汽车必须连接到互联网上,电池信息的网络—物理交互也必须参与其中。在本节中,我们验证了基于区块链的物联网解决方案是否可以用于电动汽车电池交换场景。

电池交换系统的架构。我们基于我们提出的富瘦客户机体系结构实现了电池交换系统。图5 显示了系统是如何组成的。


图5 电池交换系统架构

我们使用 Raspberry Pi(RPi)作为瘦客户机的硬件,每个瘦客户机代表一个 EV。在每个 EV 中,使用 truffle 调用区块链的远程过程调用(RPC)服务,使用本地 express 服务器控制网络物理交互。我们使用 USB 盘,它可以连接到 RPi 来表示真正的电池,每个电池的信息存储在每个对应的 USB 盘的一个文件中。图6 显示了一个典型电池信息文件的静态信息和动态信息。


图6 电池信息文件示例

一个基站由一个电池交换接口(RPi 的工作原理类似于电动车)和一个完整的以太节点组成。我们使用 Geth 作为命令行接口来运行完整的 Ethereum 节点,并为调用者提供 RPC 服务。

智能合约。我们实现了三个智能合约来管理电池交换系统的状态机:

  • “BatteryProcess”智能合约用于操作和存储电池信息。它存储电池的静态信息和动态信息。静态信息是在电池生产完成后确定的,不能更改,例如品牌、生产时间、生产价格等。动态信息用于显示电池的状态,如充电时间、充电状态(SOC)、价格、所有者帐户等。
  • “BalanceProcess” 智能合约用于管理账户之间的价值转移。考虑到要求每个 EV 用户都使用以太币是不合理的,我们在系统中定义了一个名为 E-coin 的令牌作为货币。
  • “BatteryInterface” 智能合约为三类终端用户提供 API 接口:车站运营商、电动车用户和超级用户。电动汽车用户可以在自己的电动汽车上充电,并向电池站发送电池更换请求,等待确认。站务员是电瓶站的员工。他们可以充放电和回收属于电池站的电池,他们可以批准或拒绝电动汽车用户发送的电池交换请求。超级帐户是这个电池交换系统的系统管理员,他可以创建其他类型的帐户,授予电子硬币,定义调用智能合同所需的气体,等等。

系统流程图。图7 显示了系统如何工作。首先,电动汽车有一个耗尽的电池,属于 TOY 品牌,充电电池分别属于 SUM 和 BYD 品牌。然后电动汽车车主进入电池交换系统的 GUI,发送一个交换请求,将自己的玩具电池与站点的比亚迪电池进行交换。当站操作员确认交换请求后,存储在区块链中的所有权信息将被更改。然而,此时对应的“真实”电池(USB 磁盘)还没有交换,因此网络信息和物理信息之间的不一致被警告。最后,更换了相应的电池后,就没有警告了,可以被正常交换。

工作程序主要有三种操作:

  • 初始化。EV 和 Station 分别执行初始化。零售物价指数将读取信息的系统零售物价指数上的所有电池插入 USB 接口,智能合约将创建一个电池基于静态信息记录每个真正的电池和电池产生一个独特的 ID,与此同时,生成的 ID 将被写入到电池电池信息文件内的 USB 磁盘。
  • 电池信息一致性检查。每当电动汽车车主或车站操作员进入显示电动汽车或车站电池信息的索引页时,系统将检查 USB 盘中记录的电池静态信息是否与区块链上的电池静态信息一致。如果发现任何不一致,将弹出一个警告框。当电动汽车所有者提交交换请求,并且站操作员确认请求后,必须更改相应的 USB 磁盘,以消除不一致。
  • 电池充放电。当用户对电池进行充放电操作时,系统会根据电池 ID 改变 USB 盘上记录的动态信息,同时改变区块链上电池的动态信息。

四、实验

为了找到在富瘦客户机体系结构中使用 Ethereum 的合适方法,我们尝试了三种不同的实现,如图8 所示。


图8 架构的不同实现

为了找到在富瘦客户机体系结构中使用 Ethereum 的合适方法,我们尝试了三种不同的实现,如图8 所示。

第一个实现(图8(a))是在 Raspberry Pi 上部署一个 Geth 客户机和一个完整的 Ethereum 节点,该节点用作富客户机,并在 Raspberry Pi 上开始挖掘。第二种实现(图8(b))是部署 Geth 客户机,不需要在每个树莓 Pi 上进行挖掘,而是在 PC 上部署 Geth 和一个完整的 Ethereum 节点,树莓 Pi 上的 Ethereum 节点同步来自挖掘节点的数据。第三个实现(图8(c))是只在一个富客户机的 PC 上部署一个 Geth 客户机和一个完整的 Ethereum 节点,富客户机的 Raspberry Pi 只作为一个电池交换接口工作。

第一个实现在开始挖掘后不久就导致了系统崩溃,因为树莓派 Pi 的资源不能支持挖掘完整的 Ethereum 节点,所以将其排除在性能比较之外。

我们对第二次实施和第三次实施进行了量化比较。实验环境采用 ARMv7 1.2 GHz cpu的Raspberry Pi 3B+、1gb RAM 和 Raspbian OS、Intel 2.0 GHz 64 位 cpu 的 PC、66gb RAM 和 Ubuntu 16.04.2 OS。我们在第 2 个实现和第 3 个实现的瘦客户机中监视了 Raspberry Pi 的 CPU 和内存使用率。此外,我们将电动汽车的放电时间作为一个指标来显示每个实现的效率。我们通过重复电池交换系统的典型场景进行实验,该场景包括初始化、电动汽车电池放电、电池交换和站充电池等过程。图9 显示了在一次实验中 CPU、内存和网络使用情况的变化情况,这表明第 2 个实现明显比第 3 个实现需要更多的 CPU 和内存使用。图10 显示了 10 次重复实验的统计结果,表明第三次实现在电动汽车排放过程中所需的资源和时间更少。从结果可以看出,第 3 个实现的性能优于第 2 个实现,因此我们在之前提出的解决方案中使用了第 3 个实现。


图9 比较两种不同实现的 CPU、内存和网络使用情况


图10 两种不同实现之间的性能比较

基于区块链的物联网解决方案的比较

我们将我们的解决方案与其他基于区块链的物联网解决方案进行了比较。表1 显示了一些主要特性的比较结果。由于解决方案的使用场景完全不同,因此本文没有对不同解决方案的性能进行比较。


表1 基于区块链的物联网解决方案的比较

由于我们使用以太坊作为底层区块链系统,我们的解决方案在构造状态机(支持智能合约)的灵活性上超过了使用比特币作为底层区块链系统的解决方案。虽然 Blockstack 也支持各种状态机,但是没有证据表明它的状态机构造机制比 Ethereum 的智能合约更方便。Seyoung 等人提出的自动用电调节系统,虽然使用了以太坊区块链,但其系统中没有涉及到价值传递机制,因此在解决方案中并没有充分利用以太坊的优势

结论和未来的工作

本文提出了一种基于 Ethereum 区块链的物联网解决方案,介绍了一种基于该方案实现的电池交换系统,并通过实验测试了系统的性能指标,并与其他基于区块链的物联网解决方案进行了比较。我们使用 Ethereum(一个支持智能合约的区块链系统)来解决传统集中式物联网架构带来的问题。通过采用富瘦客户机体系结构,解决了物联网设备资源有限与集中式体系结构的矛盾。此外,我们的解决方案的使用并不局限于电池交换应用,其他物联网应用,如传感器数据交易系统或其他数字化属性也可能受益于我们提出的架构。

在未来的研究中,我们希望建立一个更实用的电池交换系统,与实际的车辆系统,而不是树莓派,并包括多个站点,以模拟实际使用场景。