APP下载

基于区块链的城市停车共享之路*

2019-06-27林飞龙陈中育郑忠龙马永进潘日敏夏胜楠

关键词:停车场合约区块

林飞龙, 陈中育, 郑忠龙, 马永进, 潘日敏, 夏胜楠

(浙江师范大学 数学与计算机科学学院,浙江 金华 321004)

0 引 言

区块链,最早是由Nakamoto[1]在其发表的比特币白皮书中提出的.作为比特币的底层技术,区块链建立了可追溯、可说明的基础架构,保障比特币的数字货币属性.区块链本质上是一个按时间顺序存储的分布式账本,其通过一系列技术实现账本数据的良好属性.基于工作量证明(PoW)的共识协议保证了分布式网络环境下数据区块的有序生成,并维护冗余存储的区块链账本的一致性.哈希函数和公钥密码学技术解决了时间序列账本的先后可验证性,从而保证了交易记录的不可抵赖性和不可篡改性.智能合约技术将业务转化成为区块链上的可执行代码,为实现各种应用提供了很大的自由度.区块链技术的出现,为数字经济环境下优化资源配置,提升业务透明度和公正性,以及降低服务成本和信任成本提供了新的解决思路,引起了各行业广泛的兴趣[2-3].例如,在交通领域,文献[4]提出了基于区块链的智能交通体系架构,实现数据交互的安全性和可信性.在车联网通信技术的可靠性设计中,区块链的安全特性可用于实现网络通信过程中密钥的安全管理和分布式协商[5-6].随着新能源汽车产业的兴起,区块链技术还广泛应用于实现车与智能电网、车与车之间的电能定价与交换[7-8].文献[9]设计了双层区块链架构的车辆网络,信息层区块链网络用于实现车联网信息发布与信息交互,能源层区块链网络用于记录能源交换信息及交易支付,并且通过设计跨链技术实现双层区块链的可信交互.文献[10]考虑了车联网与微网可再生能源的电能交互,利用区块链技术承载了分布式可再生能源与新能源汽车之间的价格博弈和电能交互合约.

笔者聚焦城市停车行业.在日常的城市生活中,寻找车位常常是一种耗时耗力的糟糕经历;停车管理也已经成为城市静态交通的瓶颈问题.国家发展与改革委员会报告数据[11]显示:当前城市小汽车与停车位的比例为1.0∶0.8,停车位缺口5 000万个;且随着汽车保有量的增长,这个缺口还在扩大.事实上,停车资源未必短缺,而是现有的资源没有得到有效利用.一方面,没有有效的方法让司机及时获取可用停车信息;另一方面,没有平台可以开放大量的私有停车资源.因此,如何有效地利用现有的停车资源也是十分重要的课题.

针对上述问题,本文提出了一种基于区块链的停车资源共享网络(简称停车链),其创新和贡献如下:第一,给出了停车共享网络架构,利用现有设备设施,包括联网车辆、停车管理实体、智能手机等,构建停车链网络基础设施,从而节省区块链基础设施的建设成本.停车链是开放性网络,私有停车资源(例如私人停车场和非开放的政府停车场)可以方便、灵活地加入区块链实现共享服务并获得一定的回报,这将极大地有利于缓解停车难的问题.第二,设计了基于信用的共识协议(PoC),PoC避免了工作量证明协议(PoW)中的巨大算力消耗,也改善了权益证明协议(PoS)的可靠性.第三,各种停车相关的服务通过智能合约设计来定义和执行,保证服务的可信赖性、透明性和公平性,并且保证了各方权益,这将有效地减少在传统方式中存在的争议.最后,本文基于以太坊技术[12]构建了停车链的原型系统,在停车链原型系统上进行了大量的实验,验证了所提出停车链的有效性和可行性,也揭示了停车链的服务性能及未来商业价值.

1 停车链的体系架构

现有互联网环境下,车载信息互联系统、移动智能手机、停车场管理设施构成了分布式网络,成为目标停车链的硬件基础设施,如图1所示.停车链即可在尚未形成体系的现有网络上构建和开发,从而降低了区块链基础设施的建设成本.

特别地,将现有的硬件实体分为3个角色来承载停车链,分别是轻节点、全功能节点和边缘服务节点.车辆用户的移动终端资源有限,通常承担轻节点的角色.停车场管理计算机拥有强大的计算和存储资源,并且可以连续工作,因此承担全功能节点的角色.引入边缘服务节点是为移动轻节点提供接入服务.这个角色既可以独立部署,也可以由停车场管理计算机承担.当然,作为一个开放的网络,停车链上的节点和角色都不是严格指定的,每个节点都允许自由地加入或者退出网络.

停车链的软件设计从逻辑上分为2层,即区块链层和服务层(如图2所示).对于区块链层,首先提出了一种新的共识协议,该协议利用区块授权机制进行区块生成管理.区块授权者通过选举产生,凡是在系统中积累一定信誉的用户,均可以申请成为授权者.其次,根据停车行业的相关业务特点,开发了多种智能合约,如停车信息发布合约、停车预约合约、停车服务合约等.通过智能合约,这些服务可以以一种透明并且可信任的方式运行.在服务层上,通过开发分布式应用程序(DApps)来提供服务接口.如图2所示,车主微信小程序是为车辆用户提供停车服务而开发的.边缘服务DApp为轻节点提供区块链相关服务.停车共享管理DApp处理停车资源的发布、更新、停车服务等.

图1 基于区块链的停车共享网络示意图 图2 停车链软件系统架构

2 基于信用的共识机制

本文提出的基于信用的共识机制(PoC),一方面,采用区块授权产生机制避免PoW算力消耗;另一方面,采用信用积分作为区块授权节点选取的标准,有助于提高系统的可靠性.

2.1 PoC共识过程

图3从区块链交易流程的角度给出了一个PoC共识流程示意图,具体描述如下.

图3 PoC共识过程示意图

1)交易提出.任何用户通过调用智能合约提出一个服务交易.在填写完智能合约要求的参数后,用户签署交易并将其发送到区块链网络.

2)交易验证.接收到交易的其他节点将对交易进行验证,包括检查交易提出者的签名和账户余额、智能合约使用的规范性、交易费用等.如果成功地验证了交易,就将交易传播给它的相邻节点;否则,交易将被丢弃.

3)区块生成.授权组中的节点会收集区块链网络中的交易信息.轮值授权节点会将未封装的交易打包进一个区块中.授权组的状态更新和授权节点的信用评分也记录到区块中(授权组机制将在后面讨论).然后,轮值授权节点签署新的区块并将其广播到区块链网络.

4)区块验证.任何接收到新区块的用户都可以对其进行验证,包括所涉及交易的有效性、授权组的更新、授权节点的信用评分和轮值授权节点的合法性.如果用户成功地验证了区块,就将该区块连接到区块链账本并存储在本地.当大多数的网络节点成功地验证了区块之后,交易的共识证明和新的区块就完成了.

2.2 信用子系统

获取信用分数的方法有2种:交易积分和区块授权积分.在该子系统中,作为交易发起者的用户在交易成功完成之后可以获得一定的信用分数.此外,作为授权人的用户在成功生成一个区块后,也可以获得一个固定的信用分数作为报酬.信用评分子系统为评价长期留在区块链网络中的用户的可靠性与可信度提供了有价值的参考.它还为授权组机制设计提供了参考标准.

2.3 授权组机制

授权组机制解决2个问题:如何确定一个用户有资格成为授权节点,以及哪个授权节点负责当前区块的生成.为了解决上述问题,笔者设计了一套授权组机制规则:

1)授权组初始化.在创世区块(第一个区块)中选定一组授权节点,并且所有的授权节点的地址都被记录到创世区块的“extra”字段中(在以太坊中,一个名为extra的数据字段被保留在区块头中,区块生成节点可以写入任意信息),初始化每个授权节点的信用评分为KCth,其中,K是一个正整数,Cth是判断一个节点是否有资格申请成为授权节点的信用门限.初始信用评分允许授权组在初始阶段服务较长时间.此外,每个授权节点的任职时间tD也被记录到extra字段中.

2)授权权限分配.当区块链开始工作时,授权节点收集和验证交易,并根据区块打包规则将其中的一些交易封装到一个区块中.PoC协议设计一个简单的算法来指定最新区块的轮值(in-turn)授权节点.Nau表示授权组节点数量.所有授权组节点按照其地址的大小顺序进行排序.指定排列顺序等于h%Nau(其中,h表示当前区块高度,%表示求余数运算)的节点为当前区块的in-turn授权节点;其他的全为off-turn节点.这个算法保证了在每个区块周期中只有一个in-turn授权节点.in-turn授权节点可以立即给区块进行数字签名,并将其广播到区块链网络.考虑到in-turn授权节点可能离线,在延迟一个随机时间后,off-turn节点也允许签名和广播它们各自的区块.从而保障了in-turn授权节点的优先权和区块生成的健壮性.为了进一步保证授权权限分配的公正性,每个授权节点不能在Nau/2个区块周期内签署超过1个区块.

3)区块签名和验证.一旦授权节点获得产生新区块的权利,便将更新授权组成员的信用积分ci和各成员的任职时间tD.然后,利用私钥在新区块上签名.区块的签名也被记录在区块头的extra字段中,用于区块验证.验证过程如下:当一个节点接收到新的区块时,提取签名并使用spec256k1椭圆曲线密码学反解计算公钥;然后检查来自公钥的地址是否存在于区块头的extra数据中,并且对应的授权人是否具有区块生成资格.如果有,那么新的区块将会被接受成为有效区块.

4)授权节点资格.一个节点通过向区块链网络发起提议,申请成为授权节点.收到提议的其他授权节点将会对新申请者的信用积分进行评估,如果申请者的信用积分超过了信用门限,那么它的提议就会被记录并添加到本地提议池中.在每个区块周期,如果提议池不是空的,那么当前in-turn节点就会随机给提议池中的一个申请者进行投票,并在区块头中声明这个申请者所获得的投票结果.每个授权节点维护一个本地选票数据库,用于统计申请节点的选票结果.当收到一个新的区块时,每个授权节点会检查投票结果并更新本地选票统计.一旦一个申请者获得了超过Nau/2的票数,这个申请者就成为一个新的授权节点.

3 停车链智能合约

3.1 停车链智能合约架构

在停车链中,服务主要由智能合约定义和执行.智能合约很好地保证了交易的透明性和公平性.图4给出了停车链的智能合约架构.Contract车辆用户管理和Contract停车场用户管理分别用于不同用户类别的管理,提供用户账号管理和对应的实体管理.Contract停车服务、Contract停车预约和Contract停车信息发布分别处理停车共享相关业务.用户可以通过DApp(分布式应用程序)调用智能合约,实现停车管理和服务.

图4 停车链智能合约架构

3.2 停车链上的基本智能合约

本节对停车链的3个服务智能合约进行解析.

1)Contract停车信息发布.该合约是为了停车场用户发布新的停车资源或者更新停车场状态而设计的.该合约提供了2个函数,分别进行停车场创建和停车状态更新.利用停车场创建函数,该合约允许用户创建新的停车场,并自动指定该用户为该新停车场的所有者.在停车状态更新函数中,通过智能合约require函数成功检查停车场用户的身份后,可以更新指定停车场的状态,例如空位和费用.

2)Contract停车预约.该合约是为了车辆用户预订或者取消停车位置而设计的.该合约提供了2个函数,分别进行停车预约和取消预约.在停车预约函数中,在成功检查车辆用户身份并验证目标停车场的可预订状态之后,车辆用户在指定时间预订停车位置,并更新它的预订状态.如果车辆用户想要取消停车订单,那么智能合约中的取消预约函数就将被调用,其中需要检查车辆用户的身份.在通过区块链网络达成车辆用户提出的停车订单交易的共识后,目标停车节点将会确认停车预订服务.

3)Contract停车服务.该合约是为处理车辆用户和停车场之间的停车服务设计的.该合约有2个函数,车辆进入管理和车辆离开管理.如果检测到准备进入停车场的车辆,停车场节点就将调用Contract停车服务.车辆进入管理函数负责检查车辆用户的余额,要求用户在账户中有一定的余额.然后,如果发现该汽车有预约停车的订单,那么就允许其进入停车场,并更新相应的属性;如果没有订单记录,但停车场有空位,车辆也会被允许进入停车场停车.否则,返回“停车场已满”消息.当检测到车辆准备离开停车场时,停车场节点会再次调用Contract停车服务并运行车辆离开管理函数.在验证停车相关属性后,将会自动结算停车服务费,并将车辆属性进行更新,公布此次服务交易中车辆用户和停车授权节点的信用分数.

4 停车链原型及验证

4.1 停车链原型描述

停车链原型建立在不同的硬件组件之上,如表1所示.为了保证停车链的稳定性,有10个全功能区块链节点连续工作.它们由4台普通计算机(每台设置2个容器引擎运行2个区块链节点)、1台阿里巴巴云服务器、1台带有嵌入式控制器的道闸组成.计算机节点和云服务器同时也承载云边缘服务器的角色,为移动用户提供停车链服务接口.为了对服务请求提供及时的响应,区块的生成周期设置为5 s.原型系统设置有4个位于浙江师范大学的校园停车场,分别为ZJNU001—ZJNU004.

表1 停车链原型的硬件组件

4.2 功能测试

为了方便使用,本文为普通车辆用户和停车场用户开发了基于微信小程序的DApps.使用移动智能手机通过微信可以方便地装载DApps.图5展示了停车链用户DApp的部分页面.表2列出的所有服务都通过了本工作中的功能测试,验证了停车链的可用性.

图5 基于微信小程序的停车链DApp

分 类服 务测试结果车辆用户钱包操作:充值和退款√车辆管理:添加或删除一个车牌√停车预订服务:预订或取消预订√停车服务√停车授权用户停车管理:添加或删除√停车预订处理√停车服务管理√停车状态更新√

4.3 性能边界和测试结果

本节对停车链原型进行了性能测试,主要考虑了3个标准:1)每个区块中封装的交易数量,代表停车链原型的服务能力;2)交易延迟,代表服务处理速度;3)交易成功率.考虑到测试强度,选择8个节点同时发送周期为180 ms的交易.表3给出了4个服务独立测试及多任务综合测试的测试结果.从结果看出,由于交易数据的大小和计算步骤的不同,不同服务的性能表现略有不同.简单的服务,例如钱包操作和车辆管理,每个区块平均交易延迟更低.相对而言,停车订单服务和停车服务的服务性能略低.交易成功率几乎为100%,测试过程中没有发生故障.

表3 停车链的性能测试结果

接下来,通过设置不同的交易发送周期来评估不同交易强度下的系统性能.在本测试中选择了混合测试,结果如图6所示.随着交易发送周期从200 ms增加到500 ms,区块链网络负载下降.相应地,区块封装交易数量和交易延迟降低了.本文还在原型中测试了交易发送周期小于180 ms的情况,测试结果发现:网络在这种设置下被阻塞,并且每个授权节点的等待队列增加到无穷大.由于区块链需要共识过程实现账本数据的可靠性,这事实上造成了区块链的服务性能和服务体验的不足.这也是区块链发展研究的热点问题.

5 结 语

本文提出了一个基于区块链技术的新型停车资源共享方案——停车链.在停车链中,提出了一种新的共识协议PoC,利用信用子系统和授权组机制负责区块生成.PoC避免了算力消耗,并且保证了停车链的可信任性和可靠性.设计了各种智能合约实现停车链的停车资源共享和停车服务.基于以上工作,开发了停车链原型,并通过在原型上的运行结果证明了停车链的可用性和良好的性能.我们有充分的理由相信,停车链在解决城市静态交通问题上有很大的潜力,并且几乎没有任何开销.今后将重点研究停车链的大规模测试和智能合约的安全问题.

图6 不同交易发送周期下的区块链网络性能表现

猜你喜欢

停车场合约区块
区块链:一个改变未来的幽灵
区块链:主要角色和衍生应用
停车场迷宫
停车场寻车管理系统
区块链将给媒体业带来什么
区块链+媒体业的N种可能
“8·12”后,何以为家