使用区块链和智能合约改进超连接物流

Nervosfans  2019-04-15  区块链/区块链Blockchain栏目  

  每晚八点,

  我们在社区分享知识。

  乐乐:sensus113 

   美果大冰:xj73226

  备注入群,谢谢!

  摘要:

  物联网和超级连接的物流概念为商品提供了一个开放,高效,环保的供应链区块链和物联网技术越来越被视为该领域改进的主要推动者。我们描述了区块链和智能合约如何通过展示其实施的具体示例来展示应用于超连接物流的潜力。供应链物流是一个竞争激烈且具有法律效益的行业,其中具有多元化能力和目标的多个主角必须合作以满足客户需求。参与的不同参与者必然相互信任,因此很少分享他们的货物处理或IT基础设施;这被认为是导致效率低下的主要原因。物联网的概念是一种新兴的范式,旨在提高商品处理,路由和存储方面的供应链效率,以及改善其经济,环境和社会可持续性。为了实现这一承诺,物联网具有破坏性新技术的优势。例如,许多先前的研究表明,物联网(IoT)作为一种可以提高供应链效率的技术越来越受到关注。此外,区块链技术和他们的实施使所有干预方能够共享一个开放和值得信赖的信息系统,从而降低失败或欺诈的风险。将这些技术整合到一个然而,共同制度仍然是一个开放的挑战。接下来,我们介绍区块链和智能合约应用于物联网的最新进展,特别是超连接物流,通过具体实施到现有的AnyLogic设计模拟,这是一种广泛使用的仿真平台。

  A SIMPLE  HYPERCONNECTED  LOGISTICS  SCE-NARIOT

  超连接物流范例旨在其他方面,在包装路线,交货速度和库存管理方面提高货物交付的效率。这是通过从中心辐射架构向所谓的连接网络(so-called hy-perconnected networks)发展而实现的。在这个模型中,如图1所示,整个世界可以在最小规模的区域内分割,其大小取决于预期的需求密度。相邻的单位区域被分组为本地区域,而这些区域又聚集到区域中,这些区域形成区域。同时,几个中心网络被定义为链接这些不同的层: 一起访问hubslink单元区域; localhubslink本地单元和网关hubslink区域。不同的集线器级别可以存在于同一物理实体内(例如,本地集线器也可以是接入集线器),因此允许不同层之间的相互作用.为了说明架构在供应链效率方面的潜力,请考虑以下简单模型的超连接“大城市”。城市本身被建模为矩形地图,实际上仅限于一个区域(见图2);这个区域本身由四个本地小区组成。整个城市都会出现这样的交付。运输者和送货员都参与将它们运送到城市内的最终目的地。每个本地单元划分为9个单元区域,其亮度反映其需求密度:单位区域的颜色越暗,该区域将成为出货请求的原点或目的地的概率越高。接入集线器位于单元区域的每个顶点,并与其相邻的单元区域共享。本地集线器位于本地小区的每个节点处,并由其相邻的本地小区共享。在这种情况下,本地集线器(local hubs)也是接入集线器(access hubs)。在此模拟中定义了三种carriers:

  couriers,riders and shuttlers。

  Couriers负责在他们指定的单位区域内处理最后一英里的物品,进行步行,骑自行车,或骑摩托车或轻型电动车辆。Riders and shuttlers使用更快的车辆(通常是电气或天然气),因为它们可以覆盖更长的距离。Riders区域指向本地小区,在单元区域和/或小区内的本地集线器之间移动货物。航天飞机被分配到一个区域,在该区域内的本地枢纽和/或门道枢纽之间移动货物。shuttlers最好使用比Riders更快的公路,类似于Riders最好使用比Couriers更快的道路。这种超级连接的城市物流的模拟模型由Kaboudvand等人开发,使用AnyLogic软件并在上届IISE年会上发表。在这个模拟中,Riders和shuttlers聚集一组称为carriers的运输工具中。

  BLOCKCHAIN-ENABLED  TRACKING  SYSTEM  INSIMULATION

  虽然最初的模拟成功地表明,从优化的角度来看,超连接网络比传统的中心辐射网络更有效,但它没有涉及船舶跟踪数据管理和存储。Recentworks通过指出区块链网络在超连接环境中的适用性来解决这个问题。然而,本节介绍了一种具体的实时货物跟踪系统,通过使用以太坊区块链后端应用于初始模拟。以太坊(ETH)是第一个能够在区块链上部署智能合约的平台,是一个开源的,受益于庞大的社区,使得能够找到关于如何处理智能合约的文档。目的这项工作的目的是提供跟踪有关代理人在模拟中对货物执行的操作的信息,这些信息必须使用区块链系统而不是常规数据库或日志文件进行存储。在此模拟中,我们没有考虑到货物处理中的货物处理情况。枢纽,意味着被跟踪的唯一行为是快递和运输商的货物运输和提货。这些实体是我们模拟的代理。因此,在区块链中,每个代理都有一个账户,并且能够进行交易。我们存储在区块链交易行为中的信息,它们的组成如下:

  1.货物的标识符执行;

  2.发生的日期和时间;

  3.它的类型(在这种情况下,只有提取和交付类型);

  4.执行操作的代理的名称和帐户地址;

  5.它的位置(即模拟区域中的X-Y坐标)。

  私有区块链网络

  在这个模型中,我们模拟一个私有的Ethereum blockchain网络,它使用权威证明(Proof-of-Authority consensus,PoA)。这意味着我们运行了几个相互通信的Ethereum node,并且我们处理的区块链完全独立于其他网络。为了模拟一个完整的网络,我们选择将一个完整的以太坊客户端分配给AnyLogic simulation的每个代理。这意味着每个快递员和运输商都会接收网络的所有交易,在接收时对其进行验证,存储它们,从而将整个区块链保存在本地。此外,我们还运行密码,负责在使用PoA共识时负责事务验证和块生成的网络节点。

  智能合约

  如前所述,每个操作都要存储在区块链中。为此,我们使用两种智能合约:Shipment Manager and Shipment cONTracts

  Shipment contract

  A Shipmentcontract表示模拟中的单一货件,并存储在其上执行的每个操作。因此,它包含以下元素:

  • id:货件的标识符(即Anylogic模拟中的发货名称)

  • actions:对货件执行的操作列表

  • shipmentManager:

  对ShipmentManager的引用,其目的将在后面解释

     

  Shipment提供三种可调用方法:

  • addAction(action)将指定的操作添加到操作列表,它只能由the Shipment Manager调用

  • getActionCount()返回操作列表的当前长度

  • getAction(index)使用索引inactions返回操作

  ShipmentManager contract

  ShipmentManager提供一个负责manage Shipment contracts的接口,用于表征出货的特征,相同的应用程序上下文。它由单个属性和两个方法组成:

  • shipmentById:一个结构映射装运ID到相应的Shipmentcontracts。因此,它保留了对特定集合的所有处理合约的引用。

  • addAction(shipmentId,action)调用与提供的行业合约相对应的行业合约的相应行为方法。如果尚未存在“部分合约”,则会创建该合约,然后添加操作。此外,还会发出描述新操作的日志事件。

  • getShipment通过shipmentsById返回相对应的shipmentId.Shipment contract的地址,如果不存在,则返回空地址(即0x0)。可能会认为没有必要使用Shipment Manager contracts。实际上,行动可以直接发送给相应的船舶合约,结果也是一样的。但是,有这样的选择有几个理由。首先,仅使用Shipment contracts意味着代理商必须知道他们的所有地址,这意味着必须维护某些包含这些地址的数据库或文件并使其可供所有代理商使用,而这些代理商必须能够每次他们取消新合约时都要更新它。Shipment Manager通过保留对每个合约的引用并在每次添加动作时更新此列表来解决这个问题:不需要外部系统,而且需要知道所有代理需要知道的是Shipment Manager的地址。其次,拥有这样一个界面可以让我们针对单一合约上的所有货物进行新添加的操作。 否则,每个装运合约将负责发出自己的事件。 如果有人想监控在特定货物上实现的行动,他必须在每个货物的基础上这样做。在我们的解决方案中,他只需要监控由Shipment Manage发出的事件并过滤那些被认为有价值的事件。

     

  全局解决方案到目前为止,我们已经描述了区块链网络以及如何使用智能合约将操作存储在区块链中。本节展示了AnyLogic仿真中的代理如何能够与它们进行交互。动作管理器和架构由于AnyLogic仿真是用Java开发的,并不提供处理区块链技术的框架,所以首先要导入web3j - 一个开源Java允许与ETH客户端(https://web3j.io/)进行通信的库 - 在AnyLogic中直接处理模拟中的智能合约。但是,已存在于AnyLogic中的加密库与web3j用于签署事务的加密库之间存在冲突,使得此选项无法实现。因此,另一种方法是在AnyLogic之外开发一个程序,它可以接收AnyLogic代理发送的动作,然后将它们作为事务转发给ETH客户端。

     

  这个中间程序叫做Action Manager:它实际上是一个已知代理的HTTP服务器public / private key,它正在监听包含来自模拟代理的动作数据的POST请求,然后将它们处理成实际的ETH事务,然后通过RPC将它们发送到ETH客户端。这意味着在代理级别有三个不同的实体:

  1. 代理在AnyLogic模拟中,

  2.其动作管理器负责交易转发,

  3.ETH节点从动作管理器接收交易并与另一个交流区块链网络的ETH节点。切换到以太网为了减少Action Managers的内存消耗(每个内存占用200 MB内存,40个必须同时运行 -36 couriers and 4 transporters),决定切换从Java到Go程序。事实上,Go语言提供了非常轻量级的HTTP请求处理,是以太坊客户端的常态开发语言,并且受益于与web3j相同的功能。因此,行动经理在Go中重新编码并使用了以太坊库(https://github.com/ethereum/go-ethereum),这是以太坊客户的本地官方库。此更改提供了非常积极的结果,因为现在运行40个Action Manager现在只需要大约20 MB的RAM,而Java和web3j大约需要8 GB。

  运行模拟

  我们使用go-ethereum library开发了一个Go程序来自动设置和启动我们的网络,并为我们的sealers/agents创建不同的帐户。 bootnode 也启动以启用节点之间的通信。一旦网络启动并运行,AnyLogic代理就需要将其出货操作发送到区块链。如上一节所述,需要动作管理器将动作从AnyLogic代理发送到以太网客户端。因此,必须首先使用自定义Go程序启动它们,该程序为每个AnyLogic代理程序创建并运行Action Manager。此时,可以启动AnyLogic模拟。因此,Go程序显示第一个封口程序的输出在我们的模拟中,sealer0。显然,如果AnyLogic simulation以初始速度运行,则需要花费一些时间进行第一次事务.这是因为模拟开始与来自其中一个传递者的实际第一次拾取动作之间存在延迟。几秒钟之后,由于模拟中的高密度动作,几乎每个块导入都应包含至少一个事务(可能还有更多)。即使在程序输出中观察新的块导入也是一个很好的方法如果我们的系统正常工作或根本没有工作,那么实时列出所有添加的操作会更好。为此,还实施了行动监测。它连接到sealer0's Shipment Manager contract,打印old actions(即在其开始之前生成的动作)并监听新动作事件的发射,在每次更新时显示其详细信息。启动时,监视器显示类似于以下的输出:

  2018- 06-12 11:57:57 99送货员[13] 1 X:1117,Y:257

  2018-06-12 12:10:31 102送货员[35] 1 X:1283,Y:677

  2018-06-12 12:09:53 101送货员[19] 1 X:448,Y:407

  2018-06-12 12:15:39 103送货员[4] 1 X:498,Y:261

  2018-06-12 11:48:52 100送货员[16 ] 1 X:1015,Y:363

  2018-06-12 13:07:01 100送货员[16] 2 X:950,Y:300

  每一行是代理人在船上执行的行动,前四个空间 - 分隔的单词是模拟内部动作的时间戳(不是在当前日)。然后是货物的标识符,模拟中指定的代理的标识符,操作的类型(1个用于拾取,2个用于交付),最后是行动发生的X-Y位置。这允许用户清楚地看到区块链中存储的内容。结果和讨论本节总结了本报告所取得的成果,展示了我们的初步结果,并指出了可以进行的下降和改进。

     

  实施共享货件跟踪系统前面描述的模拟允许各种代理商共享相同的区块链网络,以便在他们运营的货物上存储信息。这有两个主要优点。hipment的单一虚拟身份和数据可用性大多数时候,参与供应链流程的公司不共享相同的信息系统。这种信息复制和/或信息的结果,即跟踪数据在各方之间是分开的,并且不能直接访问其他人的信息。借助区块链技术,可以提供一个共享且值得信赖的信息系统(不是由单个实体管理),以便每个步骤都可以获得数据,从而提高企业和消费者的透明度。当归者的性质不可知论使用这个系统,很容易从新公司添加新的代理商参与运输。所需要的只是为每个新代理人创建一个账户,因为代理商的交易以相同的方式处理,无论他们的公司是什么,他们的性质(在这种情况下是送货人或运输商)。事实上,代理人甚至不需要成为人类,他们可能会在hub内部自动运行物联网设备。他们所需要的只是以太坊帐户。显然,如果公司或货件需要特定的验证步骤,系统可以进行调整,以便可以部署额外的智能合约来强制执行所需的控制。块链大小和数据复制实际上,我们运行模拟100秒,这对应于在模拟城市中大约4个小时,我们监测了区块链大小的演变。图3显示了区块链大小随时间变化的变化(3a),并且作为动作数量的函数(3b)。在100秒后,区块链大小达到532 KB,这对应于AnyLogic代理发送的318个动作。由于区块链大小与行动编号线性相关,我们可以推断出包含动作的交易平均需要1.6 KB。对于像亚马逊或UPS这样的大型航运公司,这可能意味着每天可能会增加数千GB的数据.尽管使用当前存储技术可能不是一个问题,但重要的是要提到区块链网络中的每个完整节点都存储相同的区块链,并且区块链网络的安全性依赖于每个完整节点必须具有它的副本的事实。由于它们的数量预计相当高(例如,在比特币网络中,目前大约有10,000个完整节点),这意味着

  访问控制和机密性在我们的模拟中,连接到网络的任何代理都能够发送交易,从而提供有关货物的跟踪信息。每个代理商还可以访问已经或将要在货件上执行的所有操作。虽然它实际上是区块链技术的主要优点之一,但这也可能是危险的。任何恶意代理都可能由于各种原因(例如,损坏敏感数据,使网络过载)向网络发送信息,并且还可以访问他不应该访问的信息。通过部署智能协议可以解决此问题各种访问控制,取决于代理的地址(与其公钥直接相关,因此不可能伪造它,因为它也会对交易签名进行伪造)。例如,这些智能合约可以仅允许可更新的帐户地址列表来附加操作。但是,尽管此解决方案可以防止恶意写入尝试,但它并未解决潜在的禁止读取访问问题。在这里,目前只有两种选择可能出现

  1. 加密敏感数据并将密钥分发给代理,

  2. 将数据存储在外部系统中,只保存区块链中的数据哈希值(如上一节所述)。以太坊网络的主要问题是它支持非常低的交易率(主网上几十秒,而Visa为45,000)。如果所有公司都使用相同的网络,这可能是一个真正的问题,因为它可以被物理网络范例推荐,因为全世界可能同时发生数十万次交易。但是,其他区块链网络可能会用于解决此问题。例如,EOS.IO是一种区块链结构,“有可能扩展到数百万次交易”(来自:http://eos.io/faq)。在本文中,我们已经说明了区块链技术,物联网技术支持自动数据收集,完全符合Physical Internet的本质,并描述了它对超连接物流的第一个应用。尽管一些小问题将成为未来工作的主题,但该技术已经准备就绪。由于这样的基础设施预计将被许多不同的实体(如公司,政府和消费者)使用,因此即将面临的挑战之一就是建立标准和设计一个能够支持并适合所有各方的架构。

  Nervosfans社区正在整合资源

  为想创建项目的朋友搭建创业平台,

  请感兴趣的朋友加乐乐微信:sensus113,

  谢谢!

  Nervos CKB 唯一官网:Nervos.org

  欢迎关注Nervos Fans

  Nerovs CKB 爱好者社区

  Nervos Fans如下频道:

  NervosFans twitter:@nervosfans

  NervosFans 微博:@NervosFans

  NervosFans 微信公号:Nervosfans

  入群请加乐乐微信:sensus113

  美果大冰微信:xj73226

  备注入群,谢谢!

  按识别二维码

  关注我们

版权信息
作者:马蹄
来源:Nervosfans

关于我们

联系我们

作者进驻

手机版

Copyright © 2013 比特巴 www.btb8.com
始建于2013年,提供比特币 区块链及数字货币新闻、技术教程、测评、项目周报、人物等资讯
本页面提供的是区块链新闻资讯,区块链(Blockchain)是比特币的一个重要概念,它本质上是一个去中介化的数据库。