基于区块链的乘车方法、装置、计算机设备和存储介质与流程

文档序号:30606605发布日期:2022-07-01 22:37阅读:65来源:国知局
基于区块链的乘车方法、装置、计算机设备和存储介质与流程

1.本技术涉及区块链技术领域,特别是涉及一种基于区块链的乘车方法、装置、计算机设备、存储介质和计算机程序产品。


背景技术:

2.随着互联网技术的发展,网约车出行给人们的出行带来的极大的便利,成为很多人的出行方式。因此,越来越多的司机选择加入网约车司机系统中,通过网约车司机系统接单。但随着网约车行业的发展,出现了越来越多的网约车司机平台,有些司机为了能多接单,在多个平台进行了注册,在同一段时间内同时开启多个网约车司机平台接单,从而可能导致同时接到多个订单的申请,而司机为了避免多个平台多个订单的冲突,需要根据自己的判断选择接其中一个网约车平台的订单。即目前各个网约车平台独立运营,导致平台无法获知司机在其他平台的状态,无法根据司机的真实状况进行派单。
3.因此,如何实现能够合理调配乘车资源的乘车方式成为了亟需解决的问题。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供一种能够合理调配乘车资源的基于区块链的乘车方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
5.第一方面,本技术提供了一种基于区块链的乘车方法,所述方法包括:
6.接收乘客终端发送的乘车请求;所述乘车请求的请求信息中包含用户信息以及乘车信息;
7.根据智能合约以及预设评价指标对所述乘车请求进行模拟响应,获取对应的多个模拟响应结果;所述模拟响应结果包括司机信息以及乘车平台信息;
8.通过排序节点,根据所述乘车请求和所述模拟响应结果生成对应的多个区块,并根据工作量证明共识算法,将所述多个区块中的有效区块加入区块链;
9.通过所述区块链,基于所述有效区块中的用户信息、乘车信息、司机信息以及乘车平台信息生成所述乘车请求对应的订单信息,将所述订单信息发送至所述乘客终端以及所述司机信息对应的司机终端。
10.在其中一个实施例中,所述根据智能合约以及预设评价指标对所述乘车请求进行模拟响应,获取对应的多个模拟响应结果,包括:
11.获取所述乘客终端对应的数字签名和数字证书;
12.通过背书节点中验证所述数字证书,获取所述乘客终端对应的公钥,并根据所述公钥验证所述数字签名;
13.若所述数字签名验证通过,根据智能合约,获取所述乘车请求对应的多个模拟司机信息和模拟乘车平台信息,并根据多个预设评价指标、每个所述预设评价对应的权重以及所述多个预设评价指标的数量,获取每个所述模拟司机信息对应的评价值;所述多个预设评价指标包括路程指标、司机状态指标、司机车辆指标、车辆要求指标以及乘车平台指标
中的至少一种;
14.根据所述评价值,从所述多个模拟司机信息和模拟乘车平台信息中确定多个模拟响应结果。
15.在其中一个实施例中,所述获取对应的多个模拟响应结果之后,还包括:
16.将所述模拟响应结果以及所述数字签名发送至所述乘客终端;所述乘客终端用于在验证所述数字签名通过后将所述模拟响应结果发送至排序节点。
17.在其中一个实施例中,所述根据工作量证明共识算法,将所述多个区块中的有效区块加入区块链,包括:
18.对所述多个区块进行有效检测,获取多个有效区块;所述有效检测包括所述区块是否满足预设背书策略、所述区块中的模拟响应结果是否符合账单输入输出规则、所述乘车请求是否有效以及所述区块中模拟响应结果的司机信息是否有效中的至少一种;
19.根据工作量证明共识算法,确定所述有效区块加入区块链的顺序,并基于所述顺序将所述有效区块加入所述区块链。
20.在其中一个实施例中,所述根据工作量证明共识算法,确定所述有效区块加入区块链的顺序,并基于所述顺序将所述有效区块加入所述区块链,包括:
21.获取所述区块链中的最后一个区块的哈希值以及获取预设随机数;
22.根据所述哈希值,以及所述有效区块的时间戳、区块层次、交易个数、经纬字符串和所述预设随机数,生成对应的字符串;
23.将所述字符串输入预设哈希函数,获取对应的输出哈希值;
24.检测所述输出哈希值中的前预设位数是否为零,若是则将所述有效区块作为所述区块链中的最后一个区块加入所述区块链,并从所述多个有效区块中获取新的有效区块,返回所述获取所述区块链中的最后一个区块的哈希值以及获取预设随机数的步骤,直至所述多个有效区块均加入所述区块链;
25.若否,将所述预设随机数增加预设数值,并返回所述根据所述哈希值,以及所述有效区块的时间戳、区块层次、交易个数、经纬字符串和所述预设随机数,生成对应的字符串的步骤。
26.在其中一个实施例中,所述通过所述区块链,基于所述有效区块中的用户信息、乘车信息、司机信息以及乘车平台信息生成所述乘车请求对应的订单信息,将所述订单信息发送至所述乘客终端以及所述司机信息对应的司机终端,包括:
27.通过所述区块链,接收所述有效区块,并更新所述区块链中所述用户信息对应的订单状态以及所述司机信息对应的订单状态;
28.将所述司机信息和乘车平台信息发送至所述乘客终端,将所述用户信息和所述乘车信息发送至所述司机终端。
29.第二方面,本技术提供了一种基于区块链的乘车装置,所述装置包括:
30.接收模块,用于接收乘客终端发送的乘车请求;所述乘车请求的请求信息中包含用户信息以及乘车信息;
31.模拟模块,用于根据智能合约以及预设评价指标对所述乘车请求进行模拟响应,获取对应的多个模拟响应结果;所述模拟响应结果包括司机信息以及乘车平台信息;
32.生成模块,用于通过排序节点,根据所述乘车请求和所述模拟响应结果生成对应
的多个区块,并根据工作量证明共识算法,将所述多个区块中的有效区块加入区块链;
33.发送模块,用于通过所述区块链,基于所述有效区块中的用户信息、乘车信息、司机信息以及乘车平台信息生成所述乘车请求对应的订单信息,将所述订单信息发送至所述乘客终端以及所述司机信息对应的司机终端。
34.第三方面,本技术提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述的方法的步骤。
35.第四方面,本技术提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法的步骤。
36.第五方面,本技术提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述的方法的步骤。
37.上述基于区块链的乘车方法、装置、计算机设备、存储介质和计算机程序产品,通过基于智能合约以及预设评价指标对乘客终端发送的乘车请求进行模拟响应,得到多个包括司机信息和乘车平台信息的模拟响应结果;并通过排序节点,基于乘车请求和模拟响应结果生成多个区块,并通过工作量证明共识算法将多个区块中的有效区块加入区块链,并通过区块链利用有效区块中的用户信息、乘车信息、司机信息和乘车平台信息生成乘车请求对应的订单信息,并将订单信息发送至对应的乘客终端和司机终端,从而使得乘客终端和司机终端基于订单信息进行乘车交易。相较于传统的乘车预约方式,本方案通过区块链进行乘车交易的分派和记录,提高了乘车资源调配的合理性。
附图说明
38.图1为一个实施例中基于区块链的乘车方法的应用环境图;
39.图2为另一个实施例中基于区块链的乘车方法的应用环境图;
40.图3为一个实施例中基于区块链的乘车方法的流程示意图;
41.图4为另一个实施例中基于区块链的乘车方法的流程示意图;
42.图5为一个实施例中基于区块链的乘车装置的结构框图;
43.图6为一个实施例中计算机设备的内部结构图。
具体实施方式
44.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
45.本技术实施例提供的基于区块链的乘车方法,涉及区块链技术领域,可以应用于如图1所示的应用环境中。其中,乘客终端102、司机终端106均可以通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。服务器104可以是一种区块链服务器,可以接收乘客终端102发送的乘车请求,并基于智能合约和预设评价指标对乘车请求进行模拟响应,将得到的模拟响应结果通过排序节点生成多个区块,再将这些区块加入区块链中,服务器104在区块链中基于有效区块中的相关信息更新用户订单并发送至相应的终端中。
46.其中,在一些实施例中,上述基于区块链的乘车方法的应用环境还可以如图2所
示,上述服务器104可以由网约车平台、金融机构和监管等服务器集群组成,乘客可以通过乘客终端102与服务器104进行通信,司机可以通过司机终端106与服务器104进行通信,从而可以实现上述的基于区块链的乘车方法。其中,乘客终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
47.在一个实施例中,如图3所示,提供了一种基于区块链的乘车方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
48.步骤s202,接收乘客终端发送的乘车请求;乘车请求的请求信息中包含用户信息以及乘车信息;。
49.其中,乘客终端102可以是乘客所持有的终端,乘客终端102中可以设置有乘客用户的客户端,该客户端可以是一套用户程序,供乘客使用,可处理乘客登陆、乘车、授权、支付等请求,创建事务,经由p2p网络传播到区块链中的其他相关节点,并获取记账结果;客户端不参与记账过程。乘客用户可以在乘客终端102中发起乘车请求。其中乘车请求中包括用户信息和乘车信息等请求信息,用户信息可以是用户的个人信息,例如可以是用户的标识;乘车信息可以是用户的乘车需求,例如用户的出发地位置信息和目的地位置信息等。具体地,客户端可以接收来自用户的乘车请求,创建一个交易事务t,该交易事务中包含乘客用户标识、出发地位置信息、目的地位置信息等信息。服务器104可以接收乘客终端102发送的乘车请求,并基于乘车请求进行乘客订单的生成和派发。
50.另外,在一些实施例中,上述乘客终端102还可以在上述乘车请求中添加数字签名后再发送至服务器104。例如,乘客终端102的应用程序接收到交易事务请求后,可以在交易事务请求的交易信息加上合约标识、合约方法构造交易提案,乘客终端102可以使用用户的私钥生成数字签名,将交易提案、数字签名、数字证书一同发送给服务器104的区块链中的背书节点。
51.步骤s204,根据智能合约以及预设评价指标对乘车请求进行模拟响应,获取对应的多个模拟响应结果;模拟响应结果包括司机信息以及乘车平台信息。
52.其中,上述乘客终端102发送的乘车请求可以是一种乘车预约请求,服务器104可以基于上述乘车请求进行模拟响应。其中,服务器104中可以设置有不同的网约车平台,网约车平台中包括应用程序、智能合约、区块链底层。应用系统处理乘客用户客户端、司机用户客户端的事务,执行智能合约,实现区块链记账,并将处理结果发给乘客用户客户端、司机用户客户端。网约车平台可以与金融机构节点对接,共同完成乘客用户支付、司机用户收款等账务处理。网约车平台还可以与监控节点共享乘客用户信息、司机用户信息。上述服务器104还可以包括金融机构平台,金融机构平台可以与网约车平台连接,并共同完成乘客用户支付、司机用户收款等账务处理。上述服务器104还可以包括监控平台,监控平台可以与网约车平台连接,监控平台可以用于获取乘客用户信息、司机用户信息,分析载客路线情况,监控司机行为,发现异常行为后通报公安机关。
53.服务器104接收到乘车请求后,可以执行智能合约,基于预设评价指标对乘车请求进行模拟响应,从而得到多个模拟响应结果。其中,模拟响应结果中包括司机信息以及乘车平台信息。例如,服务器104对乘车请求执行智能合约,利用乘车请求中的用户信息和乘车
信息,基于预设评价指标进行模拟派单,得到符合要求的多个司机信息和司机所属的乘车平台信息,从而服务器104可以根据得到的多个司机信息以及这些司机信息所属的乘车平台信息,生成多个模拟派单结果,作为上述模拟响应结果。其中,预设评价指标可以包括多种类型的指标,每种指标可以有相应的权值,从而服务器104根据权值计算结果确定符合要求的司机信息。
54.步骤s206,通过排序节点,根据乘车请求和模拟响应结果生成对应的多个区块,并根据工作量证明共识算法,将多个区块中的有效区块加入区块链。
55.其中,服务器104的区块链中包括背书节点、排序节点、主节点和记账节点等。服务器104可以通过排序节点,利用上述乘车请求中的用户信息和乘车信息,以及上述模拟响应结果中的司机信息和乘车平台信息,生成对应的多个区块。其中,上述多个区块可以是按照预设规则生成的。例如,服务器104通过排序节点的kafka(卡夫卡)集群接收到区块链网络去交的乘车请求和模拟响应结果的消息,并收集到区块中,根据一定规则划分区块,其中区块可包含多笔交易,服务器104可以在排序节点中通过消息广播区块给主节点。其中,区块划分的规则可以是:服务器104通过排序节点消费kafka集群分区中的消息,按照消息偏移量offset顺序消费,满足预设条件之一则生成一个新的区块。其中,预设条件包括:消费交易笔数达到单个区块最大交易笔数,即消费的消息数量达到等于单个区块最大交易笔数,则对新消费的消息生成一个新的区块。超过单个区块最大字节数,即设定每个区块能容纳的字节数,当已消费未生成新区块的消息再加上下个消费的消息的字节数,超过设定的单个区块最大字节数,那么不包含下个消费的消息,已消费未生成新区块的消息生成一个新的区块。等待时间超过单个区块最大等待时间。如果一直没有新消息产生,不满足上面两个条件,那么当上一个区块生成的时间后的等待时间超过单个区块最大等待时间,服务器104将未生成区块的消息生成一个新的区块。
56.服务器104在排序节点中得到上述多个区块后,可以通过工作量证明共识算法pow,将多个区块中的有效区块加入区块链中。其中,服务器104可以对上述多个区块中的各个交易进行校验后,再将通过校验的区块通过上述pow算法进行加入区块链顺序的确定,从而服务器104可以按照相应的顺序将有效区块加入区块链中。
57.步骤s208,通过区块链,基于有效区块中的用户信息、乘车信息、司机信息以及乘车平台信息生成乘车请求对应的订单信息,将订单信息发送至乘客终端以及司机信息对应的司机终端。
58.其中,服务器104将上述有效区块加入区块链后,可以在区块链中进行订单状态的更新和派发。上述有效区块中存储有用户乘车请求中的用户信息和乘车信息,以及模拟响应结果中的司机信息和司机所述的乘车平台信息。服务器104可以在区块链中,基于上述用户信息、乘车信息、司机信息和乘车平台信息生成用户的乘车请求对应的订单信息,并将订单信息发送至上述乘客终端102和司机终端106,并将更新的订单信息进行保存在区块链中,保证订单的不可抵赖性。上述乘客终端102接收到订单信息后,乘客可以通过该订单信息知道自己预约的车辆的司机信息和司机所属的乘车平台信息等信息;司机终端106接收到上述订单信息后,司机可以通过该订单信息知道乘客的用户信息和乘客的乘车信息等信息。从而司机可以基于该订单信息对乘客进行接送,完成用户的乘车请求。
59.上述基于区块链的乘车方法中,通过基于智能合约以及预设评价指标对乘客终端
发送的乘车请求进行模拟响应,得到多个包括司机信息和乘车平台信息的模拟响应结果;并通过排序节点,基于乘车请求和模拟响应结果生成多个区块,并通过工作量证明共识算法将多个区块中的有效区块加入区块链,并通过区块链利用有效区块中的用户信息、乘车信息、司机信息和乘车平台信息生成乘车请求对应的订单信息,并将订单信息发送至对应的乘客终端和司机终端,从而使得乘客终端和司机终端基于订单信息进行乘车交易。相较于传统的乘车预约方式,本方案通过区块链进行乘车交易的分派和记录,提高了乘车资源调配的合理性。
60.在一个实施例中,根据智能合约以及预设评价指标对乘车请求进行模拟响应,获取对应的多个模拟响应结果,包括:获取乘客终端对应的数字签名和数字证书;通过背书节点中验证数字证书,获取乘客终端对应的公钥,并根据公钥验证数字签名;若数字签名验证通过,根据智能合约,获取乘车请求对应的多个模拟司机信息和模拟乘车平台信息,并根据多个预设评价指标、每个预设评价对应的权重以及多个预设评价指标的数量,获取每个模拟司机信息对应的评价值;多个预设评价指标包括路程指标、司机状态指标、司机车辆指标、车辆要求指标以及乘车平台指标中的至少一种;根据评价值,从多个模拟司机信息和模拟乘车平台信息中确定多个模拟响应结果。
61.本实施例中,乘客终端102在接收到用户的乘车请求时,可以在乘车请求的交易信息上加上合约标识和合约方法,从而构造交易提案,并基于用户的私钥生成数字签名,提交交易提案、数字签名、数字证书给服务器104的背书节点。服务器104可以通过背书节点获取乘客终端102发送的数字签名和数字证书,并在通过ca机构的公钥验证数字证书后得到乘客终端102对应的公钥,从而服务器104可以基于用户的公钥验证上述数字签名。若数字签名验证通过,则服务器104可以根据上述智能合约,获取乘车请求对应的多个模拟司机信息和模拟乘车平台信息,并根据多个预设评价指标,每个预设评价对应的权重以及预设评价指标的数量,获取每个模拟司机信息对应的评价值。其中,预设评价指标包括路程指标、司机状态指标、车辆要求指标以及乘车平台指标中的至少一种。服务器104可以获取多个评价值,并基于多个评价值从多个模拟司机信息和模拟乘车平台信息中确定出多个模拟交易结果,作为模拟响应结果。
62.例如,服务器104可以在背书节点中用ca机构的公钥验证数字证书,获得用户的公钥,并基于用户的公钥验证数字签名,验证通过后,将交易提案作为输入,服务器104在当前状态数据库上执行智能合约,根据智能合约中约定的背书策略进行模拟派单,生成交易结果。其中,交易结果包括系统派送的网约车司机标识、司机所属网约车平台标识等信息。需要说明的是,此结果并未更新到账本,只是模拟执行得到的结果。服务器104还可以用私钥对交易结果生成数字签名,并返回交易结果跟数字签名给应用程序。
63.其中,上述智能合约中的系统派单算法以线性权重法为基础,计算公式如下:
64.其中,x是被派单司机的综合评价值,pi表示各单项评价指标的权重数,gi表示各单项指标评价的评价值;n表示评价指标的数量。
65.其中,上述路程指标可以包括路程预估距离、路线预估用时、出发地到目的地的预估车费等指标;司机状态指标可以包括司机账户情况等信息;司机车辆指标可以包括车辆账户情况等信息;车辆要求指标可以包括乘客账户情况等指标;乘车平台指标可以包括网
约车平台账户情况等指标。具体地,上述预设评价指标可以包括以下指标:a、路线预估距离。指车辆所在位置到出发地的预估行驶路线核算距离。b、路线预估用时。指车辆所在位置到出发地的预估行驶路线核算时间。考虑交通的拥堵情况、路线限速情况、路线工程施工情况等因素。c、出发地到目的地的预估车费。车费受网约车平台、乘客等因素的影响。网约车平台是否有优惠,乘客对车型的要求。d、司机账户情况。指司机是否存在封禁、限行、听单模式及服务评价分相关问题。如果司机处于封禁阶段,不能出车。车辆尾号限行或开四停四,不符合当地政策,不能出车。司机设置接顺路单、不接机场单等听单模式,系统派满足司机设置条件的单子。系统优先派单给服务评价分高的司机。e、车辆账户情况。指车辆车龄、车险、年检的情况。车辆车龄符合最低要求,车辆在车险有效期内。是否按期完成年检,年检结果是否正常。不符合条件的车不能出车。f、乘客账户情况。指乘客是否存在对车种类、车座数、司机驾龄、网约车平台优选、拼车等需求。乘客是否选择燃油汽车或电动汽车。乘客选择4座车、5座车亦或7座车。乘客是否有要求司机驾龄满足多少年限,年限是1年、2年或者3年以上。乘客是否只接受某些网约车平台的接单。乘客是否接受拼车。系统优先派满足乘客需求选项的单子。g、网约车平台账户情况。指网约车平台是否存在优惠活动、夜间服务费、长途服务费、特殊人群用车服务费、平台服务评价分。系统派价钱更低廉的订单。
66.另外,上述预设评价指标的权重pi可以采用专家调查法确定。例如,通过聘请相关领域具有代表性、权威性的专家,对每项评价指标进行深入的调查研究,列出每项评价指标的权值范围,按重要性排列成列表。由每个专家对上述列表的每项评价指标的权值做登记,得到每项指标的权值分数。将每个专家的每项指标的权值分数相加,得到总权值分数。并用每项指标的权值分数除以总权值分数,得到每个评价指标的权重。其中,对于同个评价指标,服务器104可以将所有专家对应的指标的权重集合起来,得到该指标的平均权重。另外,如有专家想修改评分,需回到专家对权值做登记的步骤,从而重复整个评分过程。
67.通过本实施例,服务器104可以基于预设评价指标以及线性权重方式对用户的乘车请求进行模拟交易,得到多个模拟交易结果,从而实现提高乘车资源调配合理性的效果。
68.在一个实施例中,获取对应的多个模拟响应结果之后,还包括:将模拟响应结果以及数字签名发送至乘客终端;乘客终端用于在验证数字签名通过后将模拟响应结果发送至排序节点。
69.本实施例中,服务器104在得到上述多个模拟响应结果后,可以将模拟响应结果以及上述乘客终端102的数字签名发送至乘客终端102中,从而乘客终端102可以对数字签名进行验证,并在验证通过后将模拟响应结果返回至上述服务器104的排序节点。例如,服务器104通过背书节点用私钥将上述多个模拟响应结果生成数字签名,并返回模拟响应结果跟数字签名给乘客终端102的应用程序。乘客终端102通过应用程序接收到背书节点通过智能合约模拟执行的结果跟数字签名,并验证数字签名,若验证通过,则乘客终端102将上述乘车请求形成的交易提案和上述模拟响应结果以消息形式通过kafka集群广播到服务器104的排序节点。
70.通过本实施例,服务器104在生成模拟响应结果后,可以发送给乘客终端102进行验证,从而提高了乘车资源信息的安全性。
71.在一个实施例中,根据工作量证明共识算法,将多个区块中的有效区块加入区块链,包括:对多个区块进行有效检测,获取多个有效区块;有效检测包括区块是否满足预设
背书策略、区块中的模拟响应结果是否符合账单输入输出规则、乘车请求是否有效以及区块中模拟响应结果的司机信息是否有效中的至少一种;根据工作量证明共识算法,确定有效区块加入区块链的顺序,并基于顺序将有效区块加入区块链。
72.本实施例中,服务器104可以在通过排序节点生成多个区块后,可以通过校验多个区块,从而确定多个区块中的有效区块,并基于工作量证明共识算法pow,确定有效区块加入区块链的顺序。在校验时,服务器104可以对多个区块进行有效检测,得到多个有效区块。其中,有效检测包括区块是否满足预设背书策略、区块中的模拟响应结果是否符合账单输入输出规则、乘车请求是否有效以及区块中模拟响应结果的司机信息是否有效中的至少一种。例如,服务器104可以通过主节点接收区块链网络发送过来的各个新区块,并对区块内的每个交易进行校验,即检查区块内的每个乘车请求和模拟响应结果,服务器104可以检查区块内交易是否满足背书策略,检查交易的输入输出是否符合当前账本的状态,乘客发起的订单是否仍是有效,没有撤销或者还没有被派单,司机的账户是否仍是等待派单状态等合法校验,验证通过后,服务器104可以采用pow工作量证明的共识算法,决定先将哪个新区块加入区块链中。
73.服务器104可以在通过上述校验得到有效区块后,利用上述工作量证明共识算法,确定每个有效区块加入区块链的顺序。例如,服务器104可以基于区块的哈希值、时间戳等区块参数确定区块加入区块链的顺序。
74.通过本实施例,服务器104可以通过对区块进行有效性检测得到有效区块,并且可以基于工作量共识证明算法确定区块加入区块链的顺序,从而可以在区块链中实现对用户的乘车请求的响应和车辆资源调配,提高了资源调配的合理性。
75.在一个实施例中,根据工作量证明共识算法,确定有效区块加入区块链的顺序,并基于顺序将有效区块加入区块链,包括:获取区块链中的最后一个区块的哈希值以及获取预设随机数;根据哈希值,以及有效区块的时间戳、区块层次、交易个数、经纬字符串和预设随机数,生成对应的字符串;将字符串输入预设哈希函数,获取对应的输出哈希值;检测输出哈希值中的前预设位数是否为零,若是则将有效区块作为区块链中的最后一个区块加入区块链,并从多个有效区块中获取新的有效区块,返回获取区块链中的最后一个区块的哈希值以及获取预设随机数的步骤,直至多个有效区块均加入区块链;若否,将预设随机数增加预设数值,并返回根据哈希值,以及有效区块的时间戳、区块层次、交易个数、经纬字符串和预设随机数,生成对应的字符串的步骤。
76.本实施例中,服务器104可以基于工作量证明共识算法确定上述获取的多个区块的入链顺序。其中,上述各个区块中可以包括多种参数,服务器104可以利用区块中的参数确定入链顺序。其中,服务器104生成的区块的结构可以如下表格所示:
[0077][0078]
其中,创世区块,即第一个区块,的变量值如第4列所示。对于每个待确定顺序的有效区块,服务器104可以获取区块链中最后一个区块的哈希值以及获取预设随机数;服务器104根据上述哈希值,以及上述有效区块的时间戳、区块层次、交易个数、经纬字符串和预设随机数,生成对应的字符串,并将上述字符串输入预设哈希函数,得到对应的输出哈希值。服务器104可以检测输出哈希值的前预设位数是否为零,若是,则服务器104可以将该有效区块作为区块链中的最后一个区块加入区块链中,从而该有效区块成为区块链中新的最后一个区块,服务器104将一个有效区块加入区块链后,可以从多个有效区块中获取新的有效区块,并返回获取区块链中的最后一个区块的哈希值以及获取预设随机数的步骤,直至上述多个有效区块均加入区块链。若服务器104检测到上述输出哈希值的前预设位数不为零,则服务器104可以将上述预设随机数增加预设数值,并返回根据哈希值,以及有效区块的时间戳、区块层次、交易个数、经纬字符串和预设随机数,生成对应的字符串的步骤,从而基于新的预设随机数获取输出哈希值。
[0079]
具体地,基于上述区块结构,在服务器104执行工作量证明共识算法时,可以从有效区块中获取一个有效区块进行顺序确定。服务器104可以首先取得前一个区块的哈希值prehash,若为第一次确定,则可以是区块链中的最后一个区块的哈希值。服务器104还可以设定随机数nonce,初始化为0。并将前一个区块的哈希值prehash、上述有效区块的当前区块的时间戳timestamp、当前区块的区块层次level、交易个数size、经纬字符串positions、
随机数nonce和拼接起来,形成一个新的字符串ns。服务器104可以将新的字符串ns作为sha256哈希函数的输入,sha256哈希函数输出计算后得到256位的哈希值,作为上述输出哈希值。服务器104可以检测上述输出的256位的哈希值的前4位是否为0,如果为0,则此区块为相对于上述前一个区块的下一个区块,赋值此区块的prehash、thehash、nonce。否则,服务器104可以将随机数nonce递增,从上述生成随机字符串的步骤开始重新计算。
[0080]
通过本实施例,服务器104可以基于工作量证明共识算法,确定多个有效区块的入链顺序,从而提高了乘车预约时资源调配的合理性。
[0081]
在一个实施例中,通过区块链,基于有效区块中的用户信息、乘车信息、司机信息以及乘车平台信息生成乘车请求对应的订单信息,将订单信息发送至乘客终端以及司机信息对应的司机终端,包括:通过区块链,接收有效区块,并更新区块链中用户信息对应的订单状态以及司机信息对应的订单状态,保存司机信息和乘车平台信息;将司机信息和乘车平台信息发送至乘客终端,将用户信息和乘车信息发送至司机终端。
[0082]
本实施例中,服务器104将上述有效区块加入区块链后,可以在区块链中进行订单状态的更新以及订单信息的分发。服务器104可以通过区块链接收有效区块,并更新区块链中用户信息对应的订单状态以及司机信息对应的订单状态,即加入区块链的有效区块中的交易可以是需要生效的交易。服务器104可以保存上述司机信息、乘车平台信息和用户信息等信息。并将上述司机信息和乘车平台信息发送至乘客终端102,从而乘客终端102的乘客用户可以基于上述司机信息和乘车平台信息确定自己预约的车辆。服务器104还可以将用户信息和乘车信息发送至司机终端106,从而司机终端106的司机用户可以基于上述用户信息和乘车信息确定需要搭载的乘客的信息。
[0083]
其中,上述服务器104通过区块链接收到有效区块后,还可以进行校验后再进行订单状态的更新。例如,服务器104通过区块链网络各节点接收到有效区块,可以对有效区块内每个交易进行校验,检查区块内交易是否满足背书策略,检查交易的输入输出是否符合当前账本的状态,乘客发起的订单是否仍是有效,没有撤销或者还没有被派单,司机的账户是否仍是等待派单状态等合法校验等。服务器104校验上述有效区块通过后,可以用该区块的前一个区块的哈希值prehash、当前区块的时间戳timestamp、当前区块的区块层次level、交易个数size、经纬字符串positions、随机数nonce拼接成字符串用sha256哈希函数计算得到的哈希值是否满足前4位是否为0的要求且是否等于当前区块的哈希值thehash,验证通过后,服务器104可以接受上述有效区块进入区块链。并且服务器104可以更新账本,更新乘客的订单状态为已派送,保存网约车司机标识,即上述司机信息、司机所属网约车平台标识,即上述乘车平台信息,更新司机的账户状态为已派单状态,保存乘客用户标识,即上述用户信息。因为各节点的账本均更新,均保存了此订单的信息,故此交易具有不可抵赖性。
[0084]
其中,上述区块链中的节点可以通过事件(evnet)通知服务器104中的应用程序,交易已经被加入区块链中。从而区块链网络完成此次交易的处理。服务器104的应用程序接收到区块链网络反馈的事件(evnet),得到交易结果,得到乘客用户标识、网约车司机标识、司机所属网约车平台标识,可以分别获取乘客、司机、网约车平台账户的信息,分别生成应答信息发送给乘客用户客户端、司机用户客户端。其中,服务器104返回给乘客用户客户端的信息包含司机所属网约车平台的信息、司机的基础信息、司机的联络方式、司机的所在位
置、预估接收乘客的路线、预估接收时间、车型、车牌等信息;服务器104返回给司机用户客户端的信息包括乘客的联络方式、乘客的上车位置、乘客的目的地等信息。
[0085]
通过本实施例,服务器104可以通过区块链进行乘车请求对应的订单信息的生成和分发,从而提高了多平台乘车预约的车辆资源调配的合理性。
[0086]
在一个实施例中,如图4所示,图4为另一个实施例中基于区块链的乘车方法的流程示意图。包括以下流程:用户可以基于乘客终端102的客户端发起乘车请求,客户端创建交易事务并发送给服务器104的应用程序,服务器104可以基于交易事务生成交易提案发送至服务器104的背书节点,通过背书节点执行智能合约,得到多个模拟执行结果并签名返回至应用程序,应用程序可以对模拟执行结果验证后提交至服务器104中的排序节点。服务器104通过排序节点交易排序并生成区块,服务器104在主节点中将区块保存并更新世界状态,同步区块到背书节点并通过发送事件向乘客终端102返回相应的订单信息。
[0087]
上述实施例,通过设置基于分布式账本的联盟链系统,由各网约车平台、乘客用户客户端、司机用户客户端、监控平台、金融机构平台共同构建,共同完成交易验证、交易授权、交易监控和信息共享等功能。乘客用户客户端与司机用户客户端创建事务,事务通过p2p网络进行传播共享到联盟链中各相关节点。各节点按照智能合约处理事务。通过区块链进行乘车交易的分派和记录,所有节点经过一致性检验后进行记账,生成可靠、无法抵赖的交易记录。从而可以在已有的网约车系统的基础上,利用区块链的分布式记账、智能合约、不可篡改、去中心化的特点,将各网约车系统通过区块链网络统一到同一联盟链中,实现了信息共享,更好实现资源的调配,提高了乘车资源调配的合理性。
[0088]
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0089]
基于同样的发明构思,本技术实施例还提供了一种用于实现上述所涉及的基于区块链的乘车方法的基于区块链的乘车装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个基于区块链的乘车装置实施例中的具体限定可以参见上文中对于基于区块链的乘车方法的限定,在此不再赘述。
[0090]
在一个实施例中,如图5所示,提供了一种基于区块链的乘车装置,包括:接收模块500、模拟模块502、生成模块504和发送模块506,其中:
[0091]
接收模块500,用于接收乘客终端发送的乘车请求;乘车请求的请求信息中包含用户信息以及乘车信息;。
[0092]
模拟模块502,用于根据智能合约以及预设评价指标对乘车请求进行模拟响应,获取对应的多个模拟响应结果;模拟响应结果包括司机信息以及乘车平台信息。
[0093]
生成模块504,用于通过排序节点,根据乘车请求和模拟响应结果生成对应的多个区块,并根据工作量证明共识算法,将多个区块中的有效区块加入区块链。
[0094]
发送模块506,用于通过区块链,基于有效区块中的用户信息、乘车信息、司机信息
以及乘车平台信息生成乘车请求对应的订单信息,将订单信息发送至乘客终端以及司机信息对应的司机终端。
[0095]
在一个实施例中,上述模拟模块502,具体用于获取乘客终端对应的数字签名和数字证书;通过背书节点中验证数字证书,获取乘客终端对应的公钥,并根据公钥验证数字签名;若数字签名验证通过,根据智能合约,获取乘车请求对应的多个模拟司机信息和模拟乘车平台信息,并根据多个预设评价指标、每个预设评价对应的权重以及多个预设评价指标的数量,获取每个模拟司机信息对应的评价值;多个预设评价指标包括路程指标、司机状态指标、司机车辆指标、车辆要求指标以及乘车平台指标中的至少一种;根据评价值,从多个模拟司机信息和模拟乘车平台信息中确定多个模拟响应结果。
[0096]
在一个实施例中,上述装置还包括:反馈模块,用于将模拟响应结果以及数字签名发送至乘客终端;乘客终端用于在验证数字签名通过后将模拟响应结果发送至排序节点。
[0097]
在一个实施例中,上述生成模块504,具体用于对多个区块进行有效检测,获取多个有效区块;有效检测包括区块是否满足预设背书策略、区块中的模拟响应结果是否符合账单输入输出规则、乘车请求是否有效以及区块中模拟响应结果的司机信息是否有效中的至少一种;根据工作量证明共识算法,确定有效区块加入区块链的顺序,并基于顺序将有效区块加入区块链。
[0098]
在一个实施例中,上述生成模块504,具体用于获取区块链中的最后一个区块的哈希值以及获取预设随机数;根据哈希值,以及有效区块的时间戳、区块层次、交易个数、经纬字符串和预设随机数,生成对应的字符串;将字符串输入预设哈希函数,获取对应的输出哈希值;检测输出哈希值中的前预设位数是否为零,若是则将有效区块作为区块链中的最后一个区块加入区块链,并从多个有效区块中获取新的有效区块,返回获取区块链中的最后一个区块的哈希值以及获取预设随机数的步骤,直至多个有效区块均加入区块链;若否,将预设随机数增加预设数值,并返回根据哈希值,以及有效区块的时间戳、区块层次、交易个数、经纬字符串和预设随机数,生成对应的字符串的步骤。
[0099]
在一个实施例中,上述发送模块506,具体用于通过区块链,接收有效区块,并更新区块链中用户信息对应的订单状态以及司机信息对应的订单状态;将司机信息和乘车平台信息发送至乘客终端,将用户信息和乘车信息发送至司机终端。
[0100]
上述基于区块链的乘车装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0101]
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储用户信息和司机信息等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于区块链的乘车方法。
[0102]
本领域技术人员可以理解,图6中示出的结构,仅仅是与本技术方案相关的部分结
构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0103]
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述的基于区块链的乘车方法。
[0104]
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述的基于区块链的乘车方法。
[0105]
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述的基于区块链的乘车方法。
[0106]
需要说明的是,本技术所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
[0107]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistive random access memory,mram)、铁电存储器(ferroelectric random access memory,fram)、相变存储器(phase change memory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。本技术所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本技术所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
[0108]
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0109]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1