一种基于Fabric的物资援助溯源系统的制作方法

文档序号:23004405发布日期:2020-11-20 11:53阅读:164来源:国知局
一种基于Fabric的物资援助溯源系统的制作方法

本发明属于区块链技术领域,具体涉及一种基于fabric的物资援助溯源系统。



背景技术:

现阶段某些公益组织暴露出了物资调拨分配不均,不公开透明等问题,陷入信任危机,而区块链技术的发展为解决这一问题提供了思路。

区块链技术首先应用于比特币系统,作为解决数据库安全和不需要信任的管理员问题的解决方案。在比特币系统中,区块链是其核心组成部分,通过对等网络上的服务器自主地管理区块链这个去中心化数据库,同时也使得比特币成为第一个解决双重支付问题的数字货币。

hyperleder项目由linux基金会于2015年发起的,它旨在使用区块链技术创造一个需要授权的、跨行业的、企业间共享的、冗余的账本,fabric(一个许可的区块链架构)是其最活跃的子项目,主要有身份认证、账本管理、智能合约、交易管理四个模块构成。

fabric的账本由区块链和世界状态这两部分构成,世界状态可以频繁更改,区块链不可篡改。首先世界状态是一个数据库,它可以由支持json数据格式的数据库couchdb或者支持key-value数据格式的数据库leveldb提供支持,存储的内容是一组账本状态的当前值。系统不需要遍历整个区块链交易日志即可通过世界状态直接获取一个账本状态的当前值,用户能够使用固定的接口来创建、删除和更新世界状态。而区块链是所有交易的日志,记录了导致当前世界状态的一系列交易历史,只能增加不可修改。

智能合约是区块链上一段由开发人员编写的、可以运行的、给用户一定自由度来操作链上数据的代码,是区块链对外交互的接口。在fabric中,智能合约被称作链码,开发人员在用户链码中根据自身需求,调用官方api,实现相关接口,完成相应业务逻辑,安装在fabric网络中以后,通过命令行工具操作链码或者通过用sdk开发相应的客户端就可以对世界状态数据库进行增删改查。fabric中用于数据隔离的一个重要概念是通道(channel),智能合约需要在通道中部署,一个组织可以加入多个通道,一个通道也允许多个组织的加入。在同一个通道中的智能合约可以互相调用,可以修改数据,不同通道的智能合约互相调用时只能读取数据,不可以写数据。

ipfs(星际文件系统)是一个点对点的分布式文件系统,旨在创建持久且分布式存储和共享文件的网络传输协议,其存储的每个文件都有一个唯一的加密散列,当需要将图片等文件上链时,可以先存储到ipfs中,返回一个唯一的文件id,将这个id作为图片的标识,再存入fabric世界状态的数据库。



技术实现要素:

本发明的目的在于提出一种基于fabric的物资援助溯源系统,以解决现今公益体系物资流向不公开透明等问题。

本发明提出的基于fabric的物资援助溯源系统,不同于大多数公益平台,本系统不涉及各种形式的善款筹集,只关注物资援助,具有需求发布,记录援助物资中转信息并保证真实性,查看物资信息等主要功能。

本发明提出的基于fabric的物资援助溯源系统,是基于fabric的区块链应用系统,系统主要包括客户端、ipfs服务器、web服务、fabricsdk和fabric区块链网络等模块(参见图1)。其中,客户端主要为用户提供一个简洁、易于操作使用的界面;web服务主要用于处理ipfs服务器从客户端收到的请求,根据请求内容,启用ipfs服务器或者调用fabricsdk;若请求内容包含图片存取操作,则需通过ipfs服务器进行:存储图片时,ipfs服务器将图片上传到ipfs文件系统中,返回唯一id;取图片时,通过ipfs服务器,根据id从ipfs文件系统得到相应图片;一个fabric网络由账本、通道和链码、fabricca(证书颁发机构)、对等节点和排序节点等部分组成。其中,fabricca的功能是通过颁发和管理证书来精确的管理每个角色在fabric网络中的权限和资源;链码用于实现本系统的主要业务逻辑,能够与账本进行各种交互。fabric网络内部节点都提供了基于grpc协议(谷歌远程过程调用)的接口,用于数据交互,在此基础上,为了简化开发,fabric为开发人员提供了多种语言版本的sdk。通过sdk可以访问fabric区块链网络中的多种资源,包括账本、交易、链码、事件、权限管理等。

所述系统主要工作流程如下:

(1)系统初始化:

根据需求初始化fabric网络,可通过配置文件配置组织信息,包括对等节点和排序节点组织的名称和域名、以及组织内用户数目等,然后通过ca根据配置文件内容生成对应组织的节点用户证书;然后可通过配置文件指定区块链网络节点的排序策略和一些与出块相关的信息,如出块时间,最大交易数等;然后使用命令生成创世区块和创世交易,通过配置文件配置fabric网络运行容器的一些信息,如暴露的端口号等;将容器运行起来后,还需使用命令创建并加入通道,编写链码和实例化等操作;

(2)登录注册:

本系统作为互联网应用,登录注册是用户使用此系统的第一步。因本系统是一个公益平台,涉及个人利益,用户在客户端注册时应填写包括身份证号、姓名、密码和联系方式在内的必要信息,保证用户的真实性。通过sdk执行相应链码,链码验证成功后,将注册信息上链。登录时,用户输入身份证号和密码,服务器从链上获取数据,若密码正确,则登录成功;

(3)发布求助与审核:

用户根据自身情况发布求助信息时,应填写用户所代表的组织或者个人,还应填写自己需要的物资的类别和数目,填写收货地址和联系电话,同时应上传相关照片加以佐证。未被审核的求助信息需经过系统管理员审核才能公示,如若证明资料不足,系统管理员不予通过审核,审核的结果会告知用户;

(4)发布援助:

用户浏览系统平台时,决定对某一个求助项目进行援助,在线上填写要援助的物资种类和数目,以及相关物流信息;线下将物资交予物流公司,由物流公司送达指定地点,同时系统生成特定二维码。在物资运输过程中,需要物流公司协助配合(物流公司可以和本系统仅为合作关系,也可以作为一个组织参与到此fabric网络中),协助方式可以为员工在转运点处扫描二维码,系统自动获取地理位置等信息,也可以为使用配套的物联网自动化装置,目的是避免人工输入,从而记录物资转运的真实信息;

(5)查询和反馈:

用户可以查询系统平台相关信息,包括求助信息和援助信息等;若求助人最终确认收到物资,可以进行图片和文字形式的反馈。

本发明将相关信息上链,保证了信息的公开透明,不可篡改;同时链上数据的真实性由人工审核和系统本身应用的技术来共同确保,使得链上数据真实可信。

附图说明

图1为系统结构图示。

图2为发布求助与审核的时序图示。

图3为发布援助的时序图示。

具体实施方式

下面通过具体实施例进一步描述本发明,以便相关领域的技术人员能更好地理解本发明技术和功能特点,但本发明的保护范围不限于下述实施例。

在本实施例中,编程语言为javascript、html、golang,前端界面由html、js、css实现,web服务通过gin框架实现,链码由golang实现。系统的具体工作流程为:

一、系统初始化

根据需求初始化fabric网络,配置两个虚拟组织、五个对等节点和两个排序节点,指定共识策略为kafka,指定世界状态数据库为leveldb,指定设置好出块时间为2秒,区块允许的最大交易数为100等,指定容器暴露的端口信息,创建并加入通道mychannel,编写好链码charity1来完成核心业务逻辑,并在各个节点上安装和实例化。

二、登录注册

用户在客户端提交包括姓名、身份证号(作为账号)、联系电话、密码在内的注册信息,在web服务中通过链码sdk执行相应链码函数,改变世界状态。登录时,用户输入账号和密码,web服务中通过sdk执行相应链码函数,查询世界状态,如若账号存在且密码正确,则登录成功。

三、发布求助与审核,其时序图见图2所示。

用户发布求助时,首先通过路由服务(/ipfs/up)提交相关求助照片,通过web服务上传到ipfs服务节点,返回对应的一系列图片的哈希值,然后通过路由服务(/help)提交包括身份证号在内的用户填写的求助信息,通过sdk执行链码函数(applyforhelp),成功后返回求助信息标识和http状态码。

同时系统管理员可以通过路由服务(/maneger)执行链码函数(queryuncheckedhelp)查询所有未审核的求助信息,然后选中某个未审核的求助信息,审核予以通过或者不通过,执行链码函数(checkhelp),改变世界状态。

四、发布援助,其时序图见图3所示。

为了明确和记录物资流向,可以将这个功能分为四个阶段:

①线上填写:捐赠方用户在平台上浏览求助项目,选中一个项目后,填写捐赠信息,包括捐赠物资信息如种类和数量,通过web路由服务(/ipfs/up)上传实物照片给ipfs节点,确认后,通过sdk执行链码函数(supportthehelp)改变世界状态,返回援助信息标识,同时平台根据此标识生成一张专用二维码。

②线下捐赠:捐赠方将二维码打印出来,到自行选择的物流公司,将二维码粘贴在打包好的捐赠物品的封口处,物流公司负责将物资送到指定地点。

③线上补充物流信息:捐赠方将物资交给物流公司,拿到物流单号后,即可再次登录平台,通过web路由服务(/support/logi)补充必要的物流信息,如选择的物流公司和物流单号,物流起点和终点,提交后通过sdk执行相应链码函数(addsupportlogi),改变世界状态,供受助方查看。

④线上补充中转点信息:在物流中的起点和终点,以及中间过程的所有转运点处,物流公司的工作人员配合使用手机扫描二维码,跳转到物流信息记录页面通过web路由服务(/support/path)添加中转点信息,拍摄完好的捐赠物品的照片并上传,同时系统自动获取地理位置信息和时间信息,避免人工输入,保证数据的真实性,点击完成后通过sdk执行链码函数(addsupportpath),改变世界状态。

五、查询与反馈

用户可以查询系统平台上他人发布的求助信息,也可以查询自己发布的求助信息;可以查看都有哪些人对自己的求助项目进行了援助,这些援助的基本信息是什么,援助的进度如何,如物资已经经过了哪个转运点;还可以查询自己对他人援助的项目进度,了解受助人是否已经收到了物资。这些查询操作都通过web服务中的sdk接口来执行相应链码函数。

若求助人最终确认收到物资,可以进行图片和文字形式的反馈。反馈也是援助项目的重要一环,它代表受助人已经收到了物资,此时,由物资中转信息和求助人的反馈可以保证该项目得到落实,标志援助项目的完成。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1