一种基于区块链的众包物流派送调度系统及其方法与流程

文档序号:21368417发布日期:2020-07-04 04:44阅读:347来源:国知局
本发明属涉及众包物流技术,具体涉及一种基于区块链的众包物流派送调度系统及其方法。
背景技术
::在传统物流服务中,商家和用户(消费者)依赖集中式的物流服务平台进行任务匹配、物流传递、电子交易及退换货等相关内容。然而,随着各大电商以及网络营销的迅猛发展,其不可避免地面临着配送速度慢,成本高,商品丢失损坏和用户信息泄露严重,追究责任难等一系列问题。近年来,众包的思想打破了传统物流固定配送员,固定配送路线的运营模式,借助于成熟的大数据和移动网络技术,将配送任务以自愿、有偿的方式,通过网络外包给非特定社会群体,实现了社会闲置资源的最大化利用,大幅降低了物流成本。然而,现有的众包物流系统均采用集中式的数据处理方式,需要通过可信的第三方保障交易的安全性,存在单点故障问题;存在用户信息泄露,用户隐私未得到良好保护;中心式平台信息透明化不够且不能保证无法篡改。区块链的去中心化、透明性、不可篡改和可追溯性等特征使其和众包物流需求完美匹配。各商家、快递网点(驿站)、用户和众包配送员都可以加入区块链网络,利用大数据智能化和众包直接调度最优派送路径及派送匹配。利用区块链实现分布式数据存储,解决单点故障问题;节点间数据交换遵循固定原则,基于钱包地址而非个人身份,实现用户隐私保护;区块链任何节点可以拥有全网账本,即数据对所有节点公开,具有高度透明性;区块链信息经过共识被所有节点共同记录,以链式结构按照生成顺序链接,篡改难度与成本非常高。现有的基于区块链众包物流技术存在以下问题:1)如何在保护用户隐私同时进行监管管理,2)如何在大规模处理请求需求下,避免对等节点集中于处理同一问题,进行最优分配调度;3)如何在保障信息真实性同时提高系统效率;4)如何完成派送同时,实现快捷匿名支付。技术实现要素:发明目的:本发明的目的在于解决现有技术中存在的不足,提供基于区块链的众包物流派送调度系统及其方法,本发明通过引入区块链、智能合约及基于智能条件的交易通道来实现去中心化的众包物流派送调度及代币支付,适合应用于实现去中心化众包物流服务,并保障用户与服务提供者的隐私。技术方案:本发明的一种基于区块链的众包物流派送调度系统,包括用户层、众包物流逻辑层和数据层,数据层即区块链层;所述区块链层采用以太坊进行实施;众包物流逻辑层和区块链层交互;所述用户层和众包物流逻辑层交互,用户层包括承运方、托运方、认证中心和各级管理部门;系统共识过程中的共识节点从各级管理部门随机选择一定数量组成,并且定期更换共识节点;承运方和托运方注册时由认证中心验证身份信息有效性。本发明还公开一种实现上述基于区块链的众包物流派送调度系统的方法,其特征在于:包括以下步骤:步骤1:用户在系统上进行注册,所述用户包括托运方和承运方,系统为托运方和承运方用户分别分配c个随机数作为私钥,并通过椭圆曲线密码算法产生相应公钥,然后对用户公钥进行哈希和编码运算,得到的值作为用户的钱包地址,该地址对应用户账户。承运方提交承运车辆信息,在区块链上创建注册智能合约账户,实现对承运车辆信息的记录;步骤2:共识节点对承运车辆信息进行打包,计算哈希值,对哈希值进行投票,某一哈希值获得投票比例超过一个阈值,则认为这个哈希是通过共识的区块哈希,被打包的信息作为新区块加到当前区块链上,实现注册信息上链;步骤3:在区块链上创建验证及分类智能合约账户,当托运方在系统上发布派送信息时执行该智能合约,实现对派送信息的验证,派送信息包括托运方公钥、起始位置、目的位置、包裹重量、托运价格、时效要求及签名,对通过验证的派送信息根据其时效要求进行分类,并按照分类进行记录;步骤4:在区块链上创建空间聚类智能合约账户,对时效要求为非紧急的派送信息根据起始位置及目标位置进行空间聚类划分;步骤5:在区块链上创建划分分类智能合约账户,针对空间聚类产生的划分集合,根据起始位置和目标位置是否在同一个划分内,对派送信息进行进一步分类;步骤6:在区块链上创建路径规划智能合约账户,实现派送路径规划;步骤7:在区块链上创建路径选择智能合约账户,实现根据承运方效益最大化原则选择派送路径;步骤8:根据步骤2对派送信息和相应派送调度方案进行共识,实现信息上链;步骤9:根据承运方位置、派送路径及派送费用信息在区块链上建立基于通用的智能条件的支付通道,实现派送作业完成后的代币支付。进一步的,所述步骤1的具体内容如下:步骤1.1托运方和承运方在注册时提供有效身份信息,然后由认证部门检查身份信息有效性,系统为提供有效身份的用户分配密钥,为托运方用户mi分配c个随机数作为私钥,为承运方用户fi分配c个随机数作为私钥;步骤1.2根据私钥经过椭圆曲线算法生成用户i的公钥r∈{1,2,…,c},x∈{m,f};步骤1.3对用户i的公钥进行哈希运算其中h(·)采用sha256,在头部增加一个字节的地址版本号,再对结果进行一次sha256运算,将结果的前4字节作为的校验值,连接在其尾部,对生成的字符串使用base58进行编码从而得到用户i的钱包地址,用户钱包地址对应用户账户;步骤1.4在区块链上创建注册智能合约账户,账户包括随机数、账户余额、合约代码、账户存储,合约代码由用户注册成功触发,执行将承运车辆信息记录在账户存储中,当信息数目达到c1或者距离上次广播信息超过时间t1后对信息进行打包并广播;步骤1.5承运方提交承运车辆信息,包括:承运方公钥,车辆状态,运载能力,单位价格,车辆位置;步骤1.6用户注册成功并提交承运车辆信息,触发步骤1.4中的合约代码,代码执行将接收到的信息记录在账户存储中,满足条件后对信息进行打包并广播。其中,合约代码为注册智能合约代码,整个过程中创建有不同的智能合约账户,对应不同的合约代码,每处所提到的合约代码为所创建智能合约账户中的代码,不同智能合约账户的合约代码不同。进一步的,所述步骤2中的具体内容为:步骤2.1共识节点尽可能收集注册信息进行打包,构建merkle树,获得merkle树的根root,并对其做哈希运算h(root),获取当前区块号blockno、父区块哈希prehash、当前时间戳timestamp,计算h(blockno||h(root)||prehash||timestamp);步骤2.2共识节点发送计算出的区块哈希值h(blockno||h(root)||prehash||timestamp);步骤2.3共识节点尽可能收集接收到的区块哈希值,放到“候选集”中,发送自己的候选集;整个过程中,共识节点不只一个,每个共识节点都做同类工作,收集区块哈希值,放到自己的候选集中,然后发送自己的候选集,其他共识节点接收到不同共识节点发送的候选集之后,对接收到的候选集和自己产生的候选集做并集,对哈希值投票,针对某一个哈希值,得票数为在这些候选集中该哈希值出现的次数;步骤2.4共识节点对接收到的“候选集”做并集,对其中的每一个区块哈希值投票;步骤2.5共识节点交流投票结果,获得超过60%投票的区块哈希值进入下一轮,即重复步骤2.3和步骤2.4,否则该区块哈希值对应区块中的所有注册信息进入下一次共识过程;步骤2.6在最终轮中,如果某个区块哈希值的投票比例超过80%,则该哈希值成为通过共识的区块哈希,对应区块通过共识添加到区块链上,否则区块中所有注册信息进入下一次共识过程。进一步的,所述步骤3中的具体内容为:步骤3.1在区块链上创建验证及分类智能合约账户,账户包括:随机数、账户余额、合约代码、账户存储;合约代码由派送信息触发,执行对派送信息的验证,把通过验证的派送信息根据时效要求分为紧急和非紧急分别记录在账户存储中,丢弃未通过验证的派送信息,当账户存储中的紧急派送信息数目超过c2或距离上次触发下一过程超过时间t2时,发送触发路径规划智能合约的消息及派送信息包,当账户存储中的非紧急派送信息数目超过c3或距离上次触发下一过程超过时间t3时,发送触发空间聚类智能合约的消息及派送信息包;步骤3.2托运方fi产生派送信息parcel,包括:起始位置origin、目的位置destination、包裹重量weight、托运价格price、时效要求timelimit,托运方从自己的密钥对池中选择用对消息进行ecdsa签名生成sig,产生完整的派送信息:parcel=‖origin‖destination‖weight‖price‖timelimit‖timestamp‖sig,发布parcel,并启动计时器t,超时后选择下一密钥对;步骤3.3parcel信息触发步骤3.1中智能合约代码,进行parcel格式检查,包括是否为完整信息、各字段字节数及格式是否正确、timestamp是否小于当前时间戳,通过格式检查的parcel进行ecdsa签名验证,如果签名验证通过,根据请求信息的第六字段时效要求把该派送信息分类记录在账户存储中,满足条件后发送触发路径规划智能合约的消息及派送信息包,或发送触发空间聚类智能合约的消息及派送信息包。进一步的,所述步骤4的实现包括如下:步骤4.1在区块链上创建空间聚类智能合约账户,账户包括:随机数、账户余额、合约代码、账户存储;合约代码由步骤3.3中的触发信息触发,执行对派送信息根据起始位置和目的位置分别进行空间聚类,然后对两次聚类产生的质心集合进行空间聚类,聚类方法采用k-means方法,具体执行过程如下:(1)获取当前集合中所有parcel第二字段的起始位置信息oi=(xi,yi),构成当前空间聚类过程的数据集{o1,o2,…,on},进行k-means聚类;(2)获取当前集合中所有parcel第三字段的目的位置信息di=(xi,yi),构成当前空间聚类过程的数据集{d1,d2,…,dn},进行k-means聚类;(3)取步骤(1)和(2)产生的聚类集合的质心,构成新的数据集,进行k-means聚类;(4)发送触发划分分类智能合约的消息及派送信息划分集合包。其中k-means方法的结束条件为本轮质心与上一轮质心之间的距离小于阈值σ,其具体执行过程如下:(1)根据数据集{v1,v2,…,vn}大小n确定聚类集合的个数k;(2)从数据集中选择k个元素作为质心centroid1,…,centroidk;(3)对数据集中的n-k个非质心元素,计算每个元素vi与每一个质心的距离,其中j∈{1,2,…,k},选择中最小的则元素vi划分到质心centroidj的集合;(4)得到k个集合后,对每个集合重新计算质心centroid'j;(5)计算新得到的质心centroid'j和原质心centroidj之间的距离如果d'-j小于阈值σ,则已达到期望的聚类划分,否则重复(4)、(5)步骤。步骤4.2非紧急派送信息包触发步骤4.1中智能合约代码,①执行对当前parcel集合根据起始位置的空间聚类,得到划分集合setpartition1,即得到以点为质心的k个集合,把派送信息划分为根据起始位置聚集的k个集合,②执行对当前parcel集合根据目的位置的空间聚类,得到划分集合setpartition2,即得到以点为质心的k个集合,把派送信息划分为根据目的位置聚集的k个集合,③把质心和质心构成新的集合,进行空间聚类,得到划分集合setpartition3,即以k1个起始位置质心和k2个目的位置质心点为质心的k'(k'=k1+k2)个集合,发送触发划分分类智能合约的消息及派送信息划分集合包。进一步的,所述步骤5的实现包括如下:步骤5.1在区块链上创建划分分类智能合约账户,账户包括:随机数、账户余额、合约代码、账户存储;合约代码由步骤4.2中的触发信息触发,执行对setpartition3各个集合根据派送起始位置和目的位置在同一集合内和不在同一集合内进行派送分类,把起始位置和目标位置不在同一划分集合内的派送信息组成新的集合,由此得到k'+1个派送信息集合,发送触发路径规划智能合约的消息及得到的派送信息集合;步骤5.2步骤4.2中的触发信息触发步骤5.1中的智能合约代码,产生k'+1个派送信息集合,发送触发路径规划智能合约的消息及得到的派送信息集合。进一步的,所述步骤6的实现包括如下:步骤6.1在区块链上创建路径规划智能合约账户,账户包括:随机数、账户余额、合约代码、账户存储;合约代码由步骤5.2中的触发信息触发,或者由步骤3中的紧急派送信息包触发,执行各个派送信息集合内的派送路径规划,假设集合内的派送总数目为n,起点质心个数为m,根据每个起点质心集合的大小确定路径数目上限为ri,i∈{1,2,…,m},路径规划采用蚁群算法,以配送路径最短为目标函数:其中pijk表示第i个质心的第j条路径上的第k个派送,表示第k个派送起始位置到目的位置的距离,pij表示第i个质心的第j条路径上的派送数目且满足步骤6.2触发信息触发步骤6.1中的智能合约,执行目标函数为约束条件为所有派送被规划一次且仅被规划一次的蚁群算法,生成派送路径规划,发送触发路径选择智能合约的消息及派送路径规划。进一步的,所述步骤7的实现包括如下:步骤7.1在区块链上创建路径选择智能合约账户,账户包括:随机数、账户余额、合约代码、账户存储;合约代码由步骤6.2中的触发信息触发,执行以承运方效益最大化为目标的路径选择,具体步骤为:(1)选择当前车辆状态为可用的承运方车辆集合;(2)根据车辆运载能力及派送路径上包裹总重量进行匹配,使得车辆运载能力不小于所选派送路径上包裹总重量;(3)根据派送路径、当前车辆位置及车辆行驶单位价格计算承运方代价costs,其中pvehicle表示车辆位置,oi表示派送i的起始位置,di表示派送i的目的位置,unitprice表示车辆行驶单位价格,p表示所选路径上派送总数;(4)产生最佳匹配:其中p表示所选路径上派送总数。步骤7.2派送路径规划信息触发步骤7.1中的智能合约,执行根据承运方效益最大化的路径选择,获得派送调度方案并广播。进一步的,所述步骤9的实现包括如下:步骤9.1在区块链上建立基于智能条件的托运方与承运方之间的支付通道,具体过程如下:(1)在区块链上创建支付智能合约账户,账户包括:随机数、账户余额、合约代码、账户存储;合约代码由派送方案上链触发,并处理交易通道建立和更新操作;(2)交易通道建立opentransaction:托运方和承运方根据派送路径匹配,建立支付通道,①派送路径上各托运方身份签名信息,②承运方身份签名信息,③根据托运方需要支付的代币数额从托运方账户拿出不小于数额的代币amounti放入通道,④从承运方账户拿出一定数额的惩罚保证金deposit存入通道,⑤各托运方对开启通道消息签名,⑥承运方对开启通道消息签名;(3)基于智能条件的交易通道更新updatetransaction:①获得交易更新序号sequenceno,默认为0,每次发生代币支付则sequenceno加1,②确定各托运方需要支付的代币数量及需要支付给承运方的代币总数量③根据承运车辆位置及派送路径计算派送所需时间tdispatch,执行交易通道更新的等待时间holdperiod=tdispatch+δ,δ是一个时间常量,④交易通道更新条件:车辆驾驶员完成派送后,向承运方提供完成派送证明proof,承运方检验proof,如果正确,向区块链提供完成派送证明proof,如果proof正确且在holdperiod内提交,则向承运方支付数量为的代币,即更新承运方与各托运方余额为⑤承运方对交易通道更新签名,⑥各托运方对交易通道更新签名;步骤9.2根据派送路径建立承运方与各托运方交易通道;步骤9.3承运方向区块链提交完成派送证明proof,如果智能合约在holdperiod时间内收到proof,检查proof正确性,正确则按照合约内容完成代币转移支付;步骤9.4承运方和各托运方对交易通道更新签名,完成交易支付,交易更新通道关闭。有益效果:本发明实现基于区块链的众包物流派送调度,在区块链上创建智能合约,实现用户注册、派送调度分配,并通过共识将信息上链保证信息的不可篡改性。此外,在区块链上创建基于智能条件的匿名支付通道,实现托运方与承运方之间安全隐私的代币支付。与现有技术相比,本发明具有以下优点:(1)避免中心化众包物流系统的单点故障本发明运行在以太坊区块链上,是对等网络,注册信息、交易数据及调度算法以记录形式存储在区块中,不可篡改,且全网对等节点都拥有完整的区块链数据副本,避免了由于中心节点失效导致整个系统失效的问题及造成的严重后果。(2)提供数据安全性保障本发明在用户注册过程中验证用户身份有效性并分配私钥池,交易传输过程中请求信息包含用户公钥信息及签名,实现交易数据不可篡改、不可伪造,保障了交易数据传输安全;交易数据存储在区块中,区块通过哈希值前后链接,保障了数据的不可篡改性。(3)保障用户隐私需求用户注册时提供的身份信息通过认证中心验证有效后,用户获得密钥池,在提交承运车辆信息时不需要真实身份信息,保障了用户身份隐私;在发布派送信息时定期更换公钥,保障了用户身份不可追踪链接;在派送完成时通过建立基于智能条件的支付通道,实现派送完成后的代币支付,保障了用户之间的匿名交易。(4)可监管性根据用户注册时提供的身份信息,在发生交易纠纷时可以实现管理部门对交易信息及实际实体的追踪确认,实现有效监管管理及纠纷解决。附图说明图1为本发明的系统示意图;图2为实施例中众包物流派送调度过程实体交互时序示意图。具体实施方式下面对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。实施例1本发明实施例提供了一种基于区块链的众包物流派送调度系统。如图1所示,本实施中的众包物流系统分为3个层次,分别是用户层、众包物流逻辑层和数据层(区块链层)。用户层包括托运方、承运方、认证中心和各级管理部门,托运方和承运方为参与交易主要实体,认证中心在用户注册阶段对用户身份有效性进行验证,各级管理部门作为系统共识节点,随机选择一定数量管理部门作为共识节点,并且定期更换。众包物流逻辑层主要的功能是实现派送调度逻辑,包括:用户注册、派送发布、派送验证及分类、派送根据起始位置和目的位置的聚类划分、根据派送起始位置和目的位置是否在同一划分集合内对聚类划分的进一步分类、派送路径规划、根据承运方效益最大化原则的派送路径选择、代币支付;逻辑过程通过创建智能合约账户编写智能合约的方式实现,智能合约通过以太坊虚拟机进行编译、部署和执行;交易信息通过共识过程实现数据上链。数据层基于以太坊区块链,交易信息以区块形式通过哈希值链接,打包区块等待共识,通过共识的区块链接到区块链尾;智能合约通过以太坊虚拟机编译和部署在区块链上。实施例2本发明实施例提供了一种基于区块链的众包物流派送调度方法。该方法包括:步骤1:托运方和承运方在系统上进行注册,系统为托运方和承运方用户分别分配c个随机数作为私钥,并通过椭圆曲线密码算法产生相应公钥,然后对用户公钥进行哈希和编码运算,得到的值作为用户的钱包地址,该地址对应用户账户。承运方提交承运车辆信息,在区块链上创建注册智能合约账户,实现对承运车辆信息的记录。图2中步骤1的具体实现如下:步骤1.1托运方和承运方在注册时提供有效身份信息,然后由认证部门检查身份信息有效性,系统为提供有效身份的用户分配密钥,为托运方用户mi分配c个随机数作为私钥,为承运方用户fi分配c个随机数作为私钥;步骤1.2根据私钥经过椭圆曲线算法生成用户i的公钥r∈{1,2,…,c},x∈{m,f};步骤1.3对用户i的公钥进行哈希运算其中h(·)采用sha256,在头部增加一个字节的地址版本号,再对结果进行一次sha256运算,将结果的前4字节作为的校验值,连接在其尾部,对生成的字符串使用base58进行编码从而得到用户i的钱包地址,用户钱包地址对应用户账户;步骤1.4在区块链上创建注册智能合约账户,账户包括随机数、账户余额、合约代码、账户存储,合约代码由用户注册成功触发,执行将承运车辆信息记录在账户存储中,当信息数目达到n1或者距离上次广播信息超过时间t1后对信息进行打包并广播;步骤1.5承运方提交承运车辆信息,包括:承运方公钥,车辆状态,运载能力,单位价格,车辆位置;步骤1.6用户注册成功并提交承运车辆信息,触发步骤1.4所创建的注册智能合约代码:(1)接收到第一条承运车辆信息时开始计时器timer1,并在账户存储中建立承运车辆信息表tablevehicles;(2)将接收到的承运车辆信息记录在列表tablevehicles中;(3)如果timer1>t1,|tablevehicles|>c1有一个不等式成立,则广播信息表并清空记录、复位计时器,否则继续记录承运车辆信息;步骤2:共识节点对承运车辆信息进行打包,并进行投票共识,若投票比例超过一个阈值,则产生新区块,实现注册信息上链。图2中步骤2的实现细节包括:步骤2.1共识节点对打包的信息,构建merkle树,获得merkle树的根root,并对其做哈希运算h(root),获取当前区块号blockno、父区块哈希prehash、当前时间戳timestamp,计算哈希值:h=h(blockno||h(root)||prehash||timestamp)(1)步骤2.2共识节点发送h;步骤2.3共识节点尽可能收集接收到的区块哈希值,放到“候选集”中,发送自己的候选集;步骤2.4共识节点对接收到的“候选集”做并集得到{h1,h2,…,hn},对其中的每一个区块哈希值hi投票votei:votei初始为0,某个“候选集”中包含hi则获得一票,votei++;步骤2.5共识节点交流投票结果,获得超过60%投票的区块哈希值进入下一轮,即重复步骤2.3和步骤2.4,否则该区块哈希值对应区块中的所有请求进入下一次共识过程;步骤2.6在最终轮中,如果某个区块哈希值hi的投票比例超过80%,则该哈希值hi成为通过共识的区块哈希,对应区块通过共识添加到区块链上,否则区块中所有请求进入下一次共识过程。步骤3:在区块链上创建验证及分类智能合约账户,当托运方在系统上发布派送信息时执行该智能合约,实现对派送信息的验证,对通过验证的派送信息根据其时效要求进行分类,并按照分类进行记录。图2中步骤3的具体实现如下:步骤3.1在区块链上创建验证及分类智能合约账户,账户包括:随机数、账户余额、合约代码、账户存储;合约代码由派送信息触发,执行对派送信息的验证,把通过验证的派送信息根据时效要求分为紧急和非紧急分别记录在账户存储中,丢弃未通过验证的派送信息,当账户存储中的紧急派送信息数目超过c2或距离上次触发下一过程超过时间t2时,发送触发路径规划智能合约的消息及派送信息包,当账户存储中的非紧急派送信息数目超过c3或距离上次触发下一过程超过时间t3时,发送触发空间聚类智能合约的消息及派送信息包;步骤3.2托运方fi产生派送信息parcel,包括:起始位置origin、目的位置destination、包裹重量weight、托运价格price、时效要求timelimit,托运方从自己的密钥对池中选择用对消息进行ecdsa签名生成sig,产生完整的派送信息:发布parcel,并启动计时器t,超时后选择下一密钥对;步骤3.3parcel信息触发步骤3.1智能合约中验证及分类智能合约代码:(1)检查parcel格式,是否为完整信息、各字段字节数及格式是否正确、timestamp是否小于当前时间戳,若否则丢弃消息;(2)进行ecdsa签名验证,验证不通过丢弃消息;(3)获取parcel第六字段时效要求信息timelimit,在账户存储建立列表table1、table2,并开始计时器timer1、timer2;(4)把parcel按timelimit分类紧急和非紧急记录在账户存储列表table1、table2中;(5)如果某个不等式timer1>t2或|table1|>c2成立,则发送触发路径规划智能合约的消息及派送信息包并清空table1记录、复位计时器timer1,否则继续记录;如果某个不等式timer2>t3或|table2|>c3成立,则发送触发空间聚类智能合约的消息及派送信息包并清空table2记录、复位计时器timer2,否则继续记录。步骤4:在区块链上创建空间聚类智能合约账户,对时效要求为非紧急的派送信息根据起始位置及目标位置进行空间聚类划分。图2中步骤4的实现细节如下:步骤4.1在区块链上创建空间聚类智能合约账户,账户包括:随机数、账户余额、合约代码、账户存储;合约代码由步骤3.3中的触发信息触发,执行对派送信息根据起始位置和目的位置分别进行空间聚类,然后对两次聚类产生的质心集合进行空间聚类,聚类方法采用k-means方法,具体执行过程如下:(1)获取当前集合中所有parcel第二字段的起始位置信息oi=(xi,yi),构成当前空间聚类过程的数据集{o1,o2,…,on},进行k-means聚类;(2)获取当前集合中所有parcel第三字段的目的位置信息di=(xi,yi),构成当前空间聚类过程的数据集{d1,d2,…,dn},进行k-means聚类;(3)取步骤(1)和(2)产生的聚类集合的质心,构成新的数据集,进行k-means聚类;(4)发送触发划分分类智能合约的消息及派送信息划分集合包。其中k-means方法的结束条件为本轮质心与上一轮质心之间的距离小于阈值σ,其具体执行过程如下:(1)根据数据集{v1,v2,…,vn}大小n确定聚类集合的个数k;(2)从数据集中选择k个元素作为质心centroid1,…,centroidk;(3)对数据集中的n-k个非质心元素,计算每个元素vi与每一个质心的距离,其中j∈{1,2,…,k},选择中最小的则元素vi划分到质心centroidj的集合;(4)得到k个集合后,对每个集合重新计算质心centroid'j;(5)计算新得到的质心centroid'j和原质心centroidj之间的距离如果d'-j小于阈值σ,则已达到期望的聚类划分,否则重复(4)、(5)步骤。步骤4.2非紧急派送信息包触发步骤4.1中智能合约代码,①执行对当前parcel集合根据起始位置的空间聚类,得到划分集合setpartition1,即得到以点为质心的k个集合,把派送信息划分为根据起始位置聚集的k个集合,②执行对当前parcel集合根据目的位置的空间聚类,得到划分集合setpartition2,即得到以点为质心的k个集合,把派送信息划分为根据目的位置聚集的k个集合,③把质心和质心构成新的集合,进行空间聚类,得到划分集合setpartition3,即以k1个起始位置质心和k2个目的位置质心点为质心的k'(k'=k1+k2)个集合,发送触发划分分类智能合约的消息及派送信息划分集合包。步骤5:在区块链上创建划分分类智能合约账户,针对空间聚类产生的划分集合,根据起始位置和目标位置是否在同一个划分内,对派送信息进行进一步分类。图2中步骤5的具体实现包括:步骤5.1在区块链上创建划分分类智能合约账户,账户包括:随机数、账户余额、合约代码、账户存储;合约代码由步骤4.2中的触发信息触发,执行对setpartition3各个集合根据派送起始位置和目的位置在同一集合内和不在同一集合内进行派送分类,把起始位置和目标位置不在同一划分集合内的派送信息组成新的集合,由此得到k'+1个派送信息集合,发送触发路径规划智能合约的消息及得到的派送信息集合;步骤5.2步骤4.2中的触发信息触发步骤5.1中的智能合约代码,产生k'+1个派送信息集合,发送触发路径规划智能合约的消息及得到的派送信息集合。步骤6:在区块链上创建路径规划智能合约账户,实现派送路径规划。图2中步骤6的具体实现如下:步骤6.1在区块链上创建路径规划智能合约账户,账户包括:随机数、账户余额、合约代码、账户存储;合约代码由步骤5.2中的触发信息触发,执行各个派送信息集合内的派送路径规划,假设集合内的派送总数目为n,起点质心个数为m,根据每个起点质心集合的大小确定路径数目上限为ri,i∈{1,2,…,m},路径规划采用蚁群算法,以配送路径最短为目标,实现所有派送被规划一次且仅被规划一次,目标函数及约束条件如下:patchij∈{pijk|pijk∈[1,2,…,n],k=1,2,…,pij}(5)其中pijk表示第i个质心的第j条路径上的第k个派送,表示第k个派送起始位置到目的位置的距离,pij表示第i个质心的第j条路径上的派送数目,式(5)表示每条路径派送组成,式(6)表示任意两条路径上没有相同派送。步骤6.2步骤5.2中的触发信息触发步骤6.1中的智能合约,按目标函数及约束条件执行蚁群算法,生成派送路径规划,发送触发路径选择智能合约的消息及派送路径规划。步骤7:在区块链上创建路径选择智能合约账户,实现根据承运方效益最大化原则选择派送路径。图2中步骤7的具体实现如下:步骤7.1在区块链上创建路径选择智能合约账户,账户包括:随机数、账户余额、合约代码、账户存储;合约代码由步骤6.2中的触发信息触发,执行以承运方效益最大化为目标的路径选择,具体步骤为:(1)选择当前车辆状态为可用的承运方车辆集合;(2)根据车辆运载能力及派送路径上包裹总重量进行匹配,使得车辆运载能力不小于所选派送路径上包裹总重量;(3)根据派送路径、当前车辆位置及车辆行驶单位价格计算承运方代价cost:其中pvehicle表示车辆位置,oi表示派送i的起始位置,di表示派送i的目的位置,unitprice表示车辆行驶单位价格,p表示所选路径上派送总数;(4)以承运方收益最大化为目标产生最佳匹配:步骤7.2派送路径规划信息触发步骤7.1中的智能合约,执行根据承运方效益最大化的路径选择,获得派送调度方案并广播。步骤8:根据步骤2对派送信息和相应派送调度方案进行共识,生成新区块,实现信息上链。步骤9:根据承运方位置、派送路径及派送费用信息在区块链上建立基于通用的智能条件的支付通道,实现派送作业完成后的代币支付。图2中步骤9的具体实现如下:步骤9.1在区块链上建立基于智能条件的托运方与承运方之间的支付通道,具体过程如下:(1)在区块链上创建支付智能合约账户,账户包括:随机数、账户余额、合约代码、账户存储;合约代码由派送方案上链触发,并处理交易通道建立和更新操作;(2)交易通道建立opentransaction:托运方和承运方根据派送路径匹配,建立支付通道,①派送路径上各托运方身份签名信息,②承运方身份签名信息,③根据托运方需要支付的代币数额从托运方账户拿出不小于数额的代币amounti放入通道,④从承运方账户拿出一定数额的惩罚保证金deposit存入通道,⑤各托运方对开启通道消息签名,⑥承运方对开启通道消息签名;(3)基于智能条件的交易通道更新updatetransaction:①获得交易更新序号sequenceno,默认为0,每次发生代币支付则sequenceno加1,②确定各托运方需要支付的代币数量及需要支付给承运方的代币总数量③根据承运车辆位置及派送路径计算派送所需时间tdispatch,执行交易通道更新的等待时间holdperiod=tdispatch+δ,δ是一个时间常量,④交易通道更新条件:车辆驾驶员完成派送后,向承运方提供完成派送证明proof,承运方检验proof,如果正确,向区块链提供完成派送证明proof,如果proof正确且在holdperiod内提交,则向承运方支付数量为的代币,即更新承运方与各托运方余额为⑤承运方对交易通道更新签名,⑥各托运方对交易通道更新签名;步骤9.2根据派送路径建立承运方与各托运方交易通道;步骤9.3承运方向区块链提交完成派送证明proof,如果智能合约在holdperiod时间内收到proof,检查proof正确性,正确则按照合约内容完成代币转移支付;步骤9.4承运方和各托运方对交易通道更新签名,完成交易支付,交易更新通道关闭。通过上述实施例可以看出,本发明能够在保护用户隐私同时,实现有效监管管理,即在用户使用众包物流系统过程中不揭露真实身份且身份不被追踪,但在需要时可以实现管理部门对交易信息及实际实体的追踪确认;同时,本发明还能够合理分配调度算法部署,避免在大规模处理请求需求下,对等节点集中于处理同一问题;在本发明的优化区块链共识过程,实现在保障信息真实性同时,提高系统效率;最后在完成派送同时,实现快捷匿名支付。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1