基于Fabric的共享汽车系统设计实现

  • 一、项目描述
    • 1. 项目意义
    • 2. 项目实施阶段
      • 第一阶段
      • 第二阶段
  • 二、项目设计
    • 1.系统功能模块设计
    • 2.证书颁发设计
    • 3.智能合约设计
    • 4.第二阶段设计
  • 三、具体代码细节
    • 1.区块链网络的搭建
    • 2.智能合约编写
    • 3.源码分析

基于fabric的共享汽车租赁系统项目复盘

一、项目描述

将区块链和共享汽车结合的数据结算和共享系统框架, 在当前流行的区块链实现平台上进行部署, 利用区块链的分布式存储、 加密算法和时间戳服务器等技术来保证数据安全存储的同时设计系统关键业务流程的智能合约, 并为了提高节点的参与度以及针对系统中的恶意节点提出了信誉度评估算法, 有效制止恶意节点的行为, 为用户在租车过程中提供安全且便捷的租车服务。

1. 项目意义

对于用户:可以提高隐私保护
对于汽车:历史数据可追溯,防止里程欺骗等。
对于商家:智能合约,提高业务执行效率,并且去除第三方,节约成本,数据更可信。

2. 项目实施阶段

整个项目的实施分为两个阶段,第一阶段是实现基本的网络搭建和逻辑功能;第二阶段实现系统的优化和改进以及解决区块链的数据孤岛问题。

第一阶段

使用fabric在Linux下搭建区块链平台,使用智能合约来实现基于区块链的共享汽车租赁系统的基本业务逻辑功能。例如租车还车、事故处理以及二手车销售和回收等。并将这些数据存储至本地和分布式的区块链网络上。本地存储全部交易信息,区块链网络存储交易信息的关键hash值。

第二阶段

提出信誉度算法合约,对商家和用户的行为进行评估,通过一个信誉度评估函数,并将每一个参与者的信誉度存入区块链数据库,对于信誉度高的用户,租赁公司已提供优惠的策略来激励其参与系统治理过程,对于信誉度低的用户,限制甚至拒绝其消费行为。同时,在其基础上,提出使用fabric的多链技术来解决多个区块链网络的信息孤岛问题,具体为使用多链来将多个租赁公司的联盟区块链网络的一部分信息(可设置)进行共享,例如用户信誉度评分,对于信誉度低的用户,实现租车公司间的共识,拒绝为其进行租车服务。

二、项目设计

1.系统功能模块设计

系统主要分为几个模块:用户(组织)客户端、Web服务端、SDK接口(Fabric-Java-SDK)、本地数据库(MongoDB)、Fabric底层网络,如图2所示。其每个部分的具体实现步骤和功能如下。

1)客户端为用户提供便捷的注册、登录、上传、查询和下载数据功能。
2)Web应用服务为客户端链接Fabric-Java-SDK中间件,实现与区块链网络通信,负责向区块链网络发送交易或者读取账本的世界状态。同时对前端提供的交易和注册信息进行格式审核,审核成功后存入本地MongoDB,同时将新交易请求通过SDK中间件接口上传到区块链状态数据库。
3)Fabric-Java-SDK是由开发人员设计一种集成的数据接口,在连接区块链网络时读取用户权限、封装用户提交的交易提案以及执行注册、写入和查询操作。
4)由于在区块链的链上状态数据库不适合存储大文件,因此本系统采用本地数据库和区块链数据库链上链下联合存储数据的方式,目前普遍采用MongoDB作为本地数据库,用户提交写入新交易请求时,在本地MongoDB中储存所有的交易信息和数据文件,并将文件地址和文件经过哈希算法算出的索引上传至区块链数据库。当用户提交查询交易请求时,根据查询的索引号从区块链链上获取信息后再核对本地链下数据库完整信息,核查一致后呈现客户端。其中:User Message存储普通租车用户信息,Organization Message存储商家用户信息,Car Message存储汽车的数据信息,CA Message存储所有参与者的证书,最后Transaction Message存储参与者提交的所有不同类型的交易数据。
5)Fabric中节点分为背书节点Peer、排序节点Order和普通记账节点(Peer也是普通记账节点)。数据上链是一个复杂的过程,如图3所示,用户首先提交交易提案给链码(智能合约在Fabric中的实现形式)中特定的背书节点进行背书签名,返回模拟执行结果,然后将交易和模拟执行结果提交给排序节点,排序节点根据共识机制(Fabric底层网络支持的排序算法包括Solo、Kafka和实用拜占庭容错算法(Practical Byzantine Fault Tolerance,PBFT)对收到的交易按照时间顺序打包成块,同步给同一通道各区域组织的主节点,主节点再将区块分别广播至各自区域的其他记账节点,记账节点验证交易,每个记账节点会根据背书政策进行验证,还要检查读写集对于当前世界状态是否仍然有效,验证有效的交易保留在区块链账本上,无效的交易也保留在区块链账上,但不更新世界状态。具体实现如下图:

2.证书颁发设计

在区块链网络中设置访问控制机构(Access Control Organization, ACO)[10]和证书颁发机构(Certification Authority, CA)[14],ACO在核对加入的用户或者组织的公钥和身份信息后为其颁发证书,CA为ACO颁发证书的执行工具,ACO还负责对证书内容的更新。在本系统中,由Fabric的自带工具 Cryptogen 代替 CA,实现生成公私钥和证书的功能;ACO机构由租赁公司实现,履行审核加入用户的关键信息,例如身份证和征信信息等,审阅过程如图所示。

3.智能合约设计

合约主要是处理系统中日常的交易上传业务,主要包含购买合同、租车合同、周边信息合同、交通事故判决合同、赔偿合同、汽车维修合同和汽车所有权变更合同等,如图6所示。值得注意的是,本文设计的智能合约代表的是系统的逻辑流程,其在Fabric中的实现是通过链码部署。

  1. 汽车制造商生产成一辆完整的汽车,按照注册合约的要求,市场监管机构检查汽车的质量并生成汽车质检报告上传到区块链网络中,汽车信息存储到Car Message数据库。根据汽车的发动机ID生成汽车信息证书CarCA1的同时也将生成汽车的车主信息证书CarCA2。
  2. 汽车制造商将汽车售卖于租赁公司,上传交易的明细合同到Translation Message,车主由制造商变更为租赁公司,并根据汽车变更合约更新汽车的车主信息CarCA2。
  3. 租赁公司在平台上发布所有型号汽车的租车价格和车型等信息,用户在区块链网络中注册自己的账户,经过ACO(由租赁公司代理)认证后发放证书,拥有查看汽车型号、车损、里程和历史交易信息的权限。用户与租车公司签订租车合同,触发合约暂时修改汽车的车主信息CarCA2为用户,用户在租车时将按要求上传汽车实时信息数据,若有汽车出现损坏将经由租赁公司核查后更新至Car Message,并追究用户的责任。对于不诚实的用户,系统ACO核查其行为后触发信誉合约扣除信誉分。在订单结束时,用户在通过移动支付手段支付租车金额后将订单信息上传区块链网络,与此同时,还需要上传汽车实时车损和里程数信息,上传里程数的目的是为了防止里程欺骗。成功完成一笔租车订单并上传真实车况信息的用户将会获得信誉分奖励。
  4. 在租车过程中,车辆之间通过区块链网络共享其周边的路况环境和突发状况等实时信息,周边的汽车通过智慧交通网络中的路边单元收到信息后主动避让拥挤路段,核对信息真实性后更新发布节点的信誉度积分。
  5. 租车用户在途中经历汽车事故和违章,在本文提出的模型中,将联合租车用户、保险公司、汽车维修厂、监管机构(交警)、租赁公司进行协商,按照合约要求,监管机构对事故进行责任划分,生成交通事故判决合同,维修厂上传汽车损坏证明,用户、保险公司和租赁公司根据交通事故判决合同进行经济赔付。同时上传汽车维修单和赔偿交易收据证明到区块链网络,根据维修单中的汽车损坏部分修改汽车信息。
  6. 汽车加油和停车,在用车过程中难免会遇到停车、加油/充电等问题,为了提高租车效率和租车用户的驾驶体验,停车场、加油站等组织被邀请在区块链网络中注册。在租车过程中,已注册的商家信息出现在租车用户的移动终端上,租客根据优惠和便捷等因素选取合适的商家,并综合租客、商家和租赁公司完成多方交易,上传交易服务合同。租客在完成一笔与商家的交易后对其服务打分,系统综合计算商家组织的信誉分,租赁公司根据其分数给与商家奖励,激励更多的商家组织参与系统。
  7. 汽车到达使用年限或需要转让车辆法人时,需要进行价值评估。车主、车辆评估机构(维修厂)、监管机构、回收厂或买家根据汽车ID查询得到汽车在区块链网络中的历史信息,包括质检报告、保险、车损、里程数等,从而对车辆进行公平公正公开的价格评估,最终生成汽车价值评估报告。区块链技术安全可靠、可溯源、不可篡改的特性将为评估过程提供必要的数据支持。

4.第二阶段设计

信誉度算法:
考虑到在租客租车的过程中,不是所有的租客和组织都是诚实可靠的,存在租客故意伤害车辆、在网络中广播虚假信息以及停车场等组织不按标准收费等欺骗行为。因此为了在系统中规范参与者的行为,提高系统的可靠性,在区块链网络中为每一个参与者引入信誉度机制,一次交易完成后,对每一位参与者的行为进行评判,将其行为量化为信誉度并存入区块链数据账本,信誉度高的租客可获得一定的奖励。把信誉度机制作为系统的激励机制和监管机制,刺激用户参与系统过程,以此提高区块链网络的安全,信誉度合约在交易上传合约中满足触发规则时被调用。

多链模型:
类似我的另一个博客,这里不再进行编辑。

三、具体代码细节

1.区块链网络的搭建

2.智能合约编写

3.源码分析

区块链汽车租赁系统设计相关推荐

  1. 万向区块链“汽车供应链物流服务平台”获评“2018金融区块链创新应用优秀案例”...

    点击上方"蓝色字"可关注我们! 作者:万向区块链 近日,在由中国信通院联合中国支付清算协会金融科技专业委员会发起的"2018金融区块链创新应用优秀案例评选活动" ...

  2. 区块链+汽车供应链物流服务平台“运链盟”正式上线,已有融资款发放

    点击上方"蓝色字"可关注我们! 作者:万向区块链 2018年11月30日,上海万向区块链股份公司(以下简称"万向区块链").中都物流有限公司(以下简称" ...

  3. java毕业设计汽车租赁系统设计源码+lw文档+mybatis+系统+mysql数据库+调试

    java毕业设计汽车租赁系统设计源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计汽车租赁系统设计源码+lw文档+mybatis+系统+mysql数据库+调试 本源码技术栈 ...

  4. springboot+vue汽车租赁系统设计60902

    前端技术:nodejs+vue+elementui (2)用户:首页.个人中心.门店信息管理.车辆信息管理.租赁申请管理.租赁订单管理.事故反馈管理.车辆保险管理 (1)管理员模块:用户管理.门店信息 ...

  5. 万向区块链“汽车供应链物流服务平台”项目获奖

    -获评"2018金融区块链创新应用优秀案例" 上海2018年10月16日电 /美通社/ -- 近日,在由中国信通院联合中国支付清算协会金融科技专业委员会发起的"2018金 ...

  6. android租车管理系统,基于Android汽车租赁系统设计与实现.doc

    摘要:社会在不断地发展,同时人类在不断地进步,人们的生活也越来越离不开手机,几乎每个人都在使用智能机.如今,现在人们的出行中必不可少的一项交通工具就是汽车,因为汽车出行已经越来越方便.对于喜欢车的人来 ...

  7. java+mysql crm客户关系区块链毕业管理系统设计与论文

    威   海   职   业   学   院 毕 业 设 计 任 务 书 专业         软件技术 年级     200X级        班级       软件班 姓名     XXX      ...

  8. Java+mysql 汽车租赁系统设计与实现

    目录 1.需求分析 1.1管理员需求 1.2用户需求 2.概要设计 2.1框架图 2.2 数据库设计 2.2.1 供应商 2.2.2 用户 2.2.3 车辆 2.2.4 租用 3.运行环境 4.开发工 ...

  9. 区块链在物联网领域的应用案例

    案例一:Adept系统创建基于区块链技术的物联网架构 在全世界,许多公司和组织需要将设备或者应用连接起来,收集它们想要的数据.例如,一家卫生组织使用安装在水龙头上的传感器追踪洗手的频率,为将来制定政策 ...

最新文章

  1. JAVA复习5(TreeSet)
  2. 有的日期输入框,可直接调用javascripts
  3. springboot 注解动态赋值_SpringBoot 使用 @Value 注解读取配置文件给静态变量赋值
  4. matlab设置固定的窗宽窗位,python实现CT窗宽窗位的调整(即指定HU值保存图像)...
  5. python 当前目录_Python中的搜索路径顺序
  6. ctf 选择题 题库_看雪CTF题库平台 | 赛练结合,助你夺冠!
  7. 安卓插件化开发!移动开发程序员怎么优雅迈过30K+这道坎?全网最新
  8. 云桌面优缺点_云桌面真的是办公最佳选择吗?云桌面的优缺点对比
  9. 开源看板 wekan docker-compose部署
  10. Java多线程学习(吐血超详细总结)
  11. 阿里天池供应链需求预测(二)
  12. tomcat启动设备未就绪_安全启动异常就绪协程
  13. poi PPT 在线预览
  14. JavaWeb Ajax的使用
  15. 文件服务器迁移多种方案
  16. matlab wolfe准则,[原创]用“人话”解释不精确线搜索中的Armijo-Goldstein准则及Wolfe-Powell准则...
  17. 设计中的设计-设计的意义
  18. 各种HTTP返回错误代码大全 HTTP 403 Forbidden / 404 Not Found / 500 Internal Server Error / 502 Bad Gateway / 50
  19. linux 起网口up_linux 网口设置
  20. Naxx Central District 1 Ice dragon saffron

热门文章

  1. 小梅哥——38译码器
  2. JAVA环境搭建(win10)
  3. TinyPXE+Ghostsrv网刻注意事项
  4. 搜狗浏览器屏蔽广告插件_“云法庭”里“云勘验”,海淀法院开庭审理搜狗浏览器插件屏蔽优酷视频广告不正当竞争纠纷案...
  5. Java+mysql 志愿者管理系统
  6. 【CAD开发】glTF和b3dm文件格式读取(C++,Python)
  7. 算法训练 子网掩码(25分)c++实现
  8. FP6291芯片输出电压12V,DC-DC升压芯片
  9. 给力星-厦门大学数据库实验室
  10. AnnaKournikova病毒源代码解析