基于区块链和“时间银行”的互助式服务平台的设计和开发

2023-03-30 08:52向佳欣王宏杰梁桂萍赖沛鑫
现代计算机 2023年2期
关键词:时间银行用户端区块

向佳欣,王宏杰,梁桂萍,赖沛鑫

(广州华商学院数据科学学院,广州 511300)

0 引言

近年来我国社会老龄化加重,传统的社区养老模式[1]已不能满足我国的养老需要,需寻求新的养老模式作为补充。“时间银行”顾名思义是储蓄时间、提取时间的银行。一般表现为,需要帮助的老年人在平台上发布需求,志愿者接单后为其提供服务,以此获得一定的时间币,未来志愿者有需要时可以通过支付时间币为自己或者亲人换取养老服务,简单来说是用现在的服务时间换取以后的服务时间。时间银行通过一种将服务时间转换成时间币的方式来鼓励公众参与志愿者活动,提高人们对志愿服务的积极性。

现今中国部分地区已开展试行时间银行的志愿服务,然而在开展过程中存在一定的缺陷和不足,以时间币为例,现有的时间银行在时间币的发行和流通方面缺乏透明度,用户无法了解时间币的发行量。此外,时间币交易数据存储在一个中心化的数据库中,一旦数据库受到攻击,就会造成数据库损坏,导致数据丢失、篡改,甚至产生数据无法恢复的严重后果。区块链是一种新型去中心化协议,由不同节点组成,它不依赖第三方机构的审核,可以自动执行智能合约,实现分布式存储时间币交易信息或其它数据,保证数据的安全性[2]。利用区块链技术可以使时间币的发行和流通公开透明,时间币的结算不依赖某个中心化的节点。

针对上述情况,本文提出将区块链技术与“时间银行”概念相结合的互助式服务平台。平台以政府为主导,以“时间银行”为媒介,借助“时间币”进行价值衡量。同时,应用区块链去中心化管理数据实现时间币的结算流通,促进服务供需双方完成服务交换。

平台分为用户端和管理端。用户端主要采用uni‑app框架完成前端开发,使用Web3.js和智能合约作为接口连接以太坊区块链;而管理端主要利用Thymeleaf 模板完成前端开发。二者均利用Spring Boot框架及Spring Security框架完成后端开发,Solidity编写智能合约连接服务端和区块链,进行数据交互,用MySQL完成数据存储。

1 技术基础

1.1 uni⁃app和Thymeleaf

uni‑app是一个基于Vue.js开发所有前端应用的框架,实现一套代码可发布到iOS、Android、Web 以及各种小程序(如微信、支付宝、百度等)、快应用等多个平台[3]。

Thymeleaf是一个能够处理HTML、JS、XML并服务于Java 的模板引擎,它可用于Web 与非Web 环境中的应用开发。使用Thymeleaf 可以提高平台开发的速度,实现完美的页面渲染[4]。

1.2 Web3.js

Web3.js 是一个JavaScript 库集合,它封装了以太坊的JSON RPC API,可以提供一系列Javascript 对象和函数与以太坊区块链交互,包括查看网络状态,检索用户账户,发送交易,与智能合约交互等[5]。

1.3 Spring Boot和Spring Security

Spring Boot 是Spring 项目的一个子项目,它由Pivotal 团队提供,其样板化的配置可以精简Spring应用的初始搭建以及开发过程,使项目开发变得简单、方便和快捷[6]。

Spring Security 是基于企业级应用系统,为应用程序开发提供声明式安全访问控制的框架。它对安全性的支持依赖于Servlet 过滤器。过滤器可对进入的请求进行安全检测,检测通过后应用程序才会对该请求进行处理[7]。

1.4 Solidity

Solidity是Ethereum 的一种契约型编程语言,属静态类型,支持继承库和用户自定义类型以及其他功能,旨在定位到以太坊虚拟机。

1.5 MySQL

MySQL 由MySQL AB 公司开发,是一种关系型数据库管理系统[8],与其他数据库将所有数据放在一个中央仓库不同,关系数据库将数据保存在不同的表中,从而增加了数据存储速度并提高了数据查询的灵活性。

2 系统设计

2.1 总体设计

与传统意义上的社会互助不同,新型互助服务平台是基于“时间银行”概念开发的,由政府加强政策引导,提高统筹层次,服务交换双方通过线上交流,以“时间银行”为媒介,借助“时间币”进行价值衡量,同时应用区块链去中心化管理数据并实现时间币的结算流通,促进服务供需双方完成服务交换,最终实现全社会所有群体共同帮助有需要的老年人的互助服务平台。因此平台服务主要设计了用户端和管理端。

用户端,利用uni‑app、Spring Boot以及Web3.js构建移动端,它主要是为供需双方提供服务交换的线上平台,入驻平台的社会组织发布志愿服务信息和已认证老年人发布个人需求,志愿者接收需求,完成服务并获得时间币。同时,利用区块链去中心化协议,使时间币的发行和流通公开透明,时间币的结算不依赖某个中心化的节点。

管理端,利用Thymeleaf、Spring Boot和Spring Security 实施,它是一个B/S 结构的在线Web 系统,管理员通过浏览器实现对平台的管理。

系统架构如图1所示。

图1 系统架构图

2.2 功能设计

平台主要为用户端和管理端,用户端和管理端又分别包含若干个功能模块,如图2所示。

图2 系统功能模块

用户端按时间币交易流程分为发布需求、接收服务、服务资讯、兑换商城以及家庭通讯录等五个模块。

(1)发布需求。发布需求形式有两种:第一种为政府主导,政府鼓励社会组织入驻平台并在平台上发布志愿服务信息,同时发放时间币;第二种为个人主导,已在平台认证的老年人,发布个人需求。在需求者发布需求前,平台会收集需求者的服务地点、服务时间、服务时长、服务内容等具体信息,以便平台为志愿者提供具体的服务信息。

(2)接收需求。“接服务”分为志愿服务队发布的志愿服务和个人认证后允许发布的需求,用户可以选择需求类型并报名,为了提高报名的通过率,志愿者需要在申请过程中填写详细的申请信息,通过审核后才算报名成功。报名后按照规定进行服务,志愿者服务完成后经过审核平台认证后获得相应时间币,如果未能按照要求完成任务或超时完成,平台会扣除志愿者的积分。

(3)服务资讯。平台主页设有关于公益宣传的咨询,同时提供社区论坛功能,志愿者和被服务群体均可在论坛里进行交友,分享心得体会,丰富平台的娱乐功能。

(4)兑换商城。为鼓励志愿者进行志愿服务,本系统设置了兑换功能。在兑换商城中,用户可利用时间币进行物品兑换。

(5)家庭通讯录。在家庭通讯录功能中,用户可以邀请自己的朋友和亲人加入,形成好友链,好友链间用户可以共享时间币。

管理端根据时间币交易流程,分为账户管理、存取管理、系统信息管理、查询管理以及基本业务管理等五个模块。

(1)账户管理。管理员可以对用户的相关信息进行管理,包括志愿服务队和个人的账户开户、账户信息修改和挂失与销户等功能。

(2)存取管理。主要包括账户中时间币的存与取,系统发放用户时间币,以及家人账户之间的时间币共享和转发,商城兑换的时间币交易等功能。

(3)系统信息管理。主要包括社区活动信息、用户信息、活动额度设置、商品兑换展示和数据备份等管理。也包括账户查询、导出、打印等功能。

(4)查询管理。主要包括查询社区居民的账户信息、活动申请和完成信息、捐赠信息等功能。

(5)基本业务管理。基本业务包括商品管理、需求管理、消息管理和资讯管理等。主要是对用户的数据进行读取、新增、修改、保存和删除等操作。

2.3 数据库设计

本系统采用MySQL 作为关系型数据库系统,按照数据库设计原则,在服务器的MySQL数据库中设计用户信息表(用户id、用户姓名、用户密码、用户电话、用户类型、账户余额等)、新闻资讯表(新闻id、新闻名、新闻作者名、发表时间、新闻图片、新闻详情等)、兑换商城信息表(商品id、商品名称、商品图片、商品价格、商品数量等)、活动需求表(需求id,需求名称、需求类型、需求时间、需求备注等)和时间币交易记录表等多个数据表,如表1所示。

表1 数据库表设计

2.4 区块链设计

为保证用户时间币交易安全,用户端需要把提交到服务端的数据分为个人信息、服务信息和时间币交易信息等,服务端通过消息摘要算法运算得到摘要信息,通过Web3.js 与以太坊节点进行连接,将摘要信息提交到区块链存储,同时用户端将信息存储到本地数据库。管理端定期检查数据并判断信息是否被篡改,管理端首先发出请求,通过智能合约查询从而获取区块链中存储的信息,然后与本地数据库中存储的信息进行对比。信息一致则证明数据没有被篡改,信息不相同就表明数据存在被篡改的可能性。

2.5 智能合约设计

智能合约以Solidity 为开发语言,在以太坊区块链环境下,主要完成客户端到区块链端摘要信息的上传,以及管理端到区块链端摘要信息的查询。智能合约中使用mapping 存储数组[9],设计userInfo、serviceInfo和billInfo三个变量。userInfo 存储用户个人信息数组,其中user为用户对象,包含用户名和用户的以太坊地址;serviceInfo存储用户服务信息的摘要;billInfo存储用户的时间币交易信息的摘要,具体如表2所示。

图3 区块链设计方案

表2 智能合约变量设计表

3 系统开发

3.1 开发过程

平台的原型设计、功能设计以及针对各个操作交互设计均基于“时间币”交易流程开发,时间币开发以政府公信力为背书,同时需要建立一个审核平台对时间币进行审核认证,整个过程如下:

(1)时间币的发行。“时间币”由政府主导发行,平台以各政府单位为全节点,以用户为轻节点,构建公有链网络;以政府公信力为背书,为志愿者发放时间币,主要表现在政府引导各大志愿组织在平台上发布志愿服务内容,志愿者参加服务,完成服务后由审核平台进行审核,审核完成后向志愿者支付相应时间币[10]。

(2)时间币的交易。平台允许经过审核的个人用户在平台上发布需求,主要表现在老年人向平台提供相关证明材料,审核平台对证明材料进行审核,审核完成后即可发布个人需求。依据个人需求,志愿者向有服务需求的老年人提供相应的服务。审核平台在服务完成后将会对整个服务过程进行审核。服务通过审核后,结合被服务者的满意程度以及服务类型等综合因素,平台将服务时间进行服务资产数字化,即将服务时间转换为等值的时间币。

(3)时间币的转让。平台用户可以邀请自己的朋友和亲人加入,形成好友链,用户在好友链中进行账号关联,关联后的账号平台可以实现时间币共享。

(4)时间币的支付。平台设置线上商城,政府与商家达成合作,商家通过平台宣传产品,并为平台提供产品赞助,用户可以在商城页面换取赞助商的产品。

3.2 用户端

(1)用户登录。iOS 和Android 系统中,点击首页下方“我的”按钮进入用户个人界面,点击头像或未登录进入登录界面,用户输入手机号和密码,点击登录。小程序中,点击首页下方“我的”按钮进入用户个人界面,点击头像或未登录,平台跳转至微信授权界面,用户点击允许,“我的”界面即可获取用户信息,如图4所示。

图4 登陆界面

(2)发布需求。用户在首页选择“发需求”进入页面填写表单,其中,用户可点击“服务类型选择”进行修改,如图5所示。

图5 发布需求表单

(3)接收需求。用户在首页选择“接收服务”进入界面选择服务,其中用户可以在页面上方进行服务类型、时间币排序、时间排序的筛选,选择完成后进入详情页报名,系统生成活动需求信息上传至区块链存储以及保存到本地数据库,服务完成后志愿者获得相应时间币,同时时间币交易信息上传至区块链和本地数据库存储,如图6所示。

图6 接收需求界面

(4)兑换商城。用户点击首页下方“我的”按钮进入用户个人界面,选择兑换商城,点击商品进入商品详情页兑换,如图7所示。

图7 兑换商城界面

(5)家庭通讯录。用户点击首页下方“我的”按钮进入用户个人界面,选择家庭通讯录,点击邀请按钮跳转至微信邀请界面,点击同意关联即可绑定账号,同时将两者时间币余额进行相加后作为新的账户余额数据,修改用户信息,同时形成时间币交易信息并上传至区块链和本地数据库存储,如图8所示。

图8 家庭通讯录界面

3.3 管理端

管理端是利用Spring Boot 和Thymeleaf 实施的在线系统,包括账户、存取、信息、查询、基本业务等各种管理功能,由于篇幅原因,其实施过程在此不展开论述。

4 结语

互助式服务平台把区块链技术与“时间银行”概念结合起来,以政府为主导,以“时间银行”为媒介,借助“时间币”进行价值衡量,同时应用区块链去中心化管理数据并实现时间币的结算流通,最终促进服务供需双方完成服务交换。本平台的设计与实现,可以有效解决社会老龄化过程中关于“时间银行”概念的新型服务模式探索过程中的问题,为促进我国老年人链接多元的社会资源,为我国养老公益志愿服务常态化、规范化、机制化发展作出贡献。

猜你喜欢
时间银行用户端区块
Android用户端东北地区秸秆焚烧点监测系统开发与应用
区块链:一个改变未来的幽灵
区块链:主要角色和衍生应用
区块链+媒体业的N种可能
读懂区块链
基于三层结构下机房管理系统的实现分析
基于三层结构下机房管理系统的实现分析
一种太阳能户外自动花架电气系统简介
山东推出“时间银行”应对老龄社会
在瑞士,“时间银行”能“养老”