向佳欣,王宏杰,梁桂萍,賴沛鑫
(廣州華商學院數據科學學院,廣州 511300)
近年來我國社會老齡化加重,傳統的社區養老模式[1]已不能滿足我國的養老需要,需尋求新的養老模式作為補充。“時間銀行”顧名思義是儲蓄時間、提取時間的銀行。一般表現為,需要幫助的老年人在平臺上發布需求,志愿者接單后為其提供服務,以此獲得一定的時間幣,未來志愿者有需要時可以通過支付時間幣為自己或者親人換取養老服務,簡單來說是用現在的服務時間換取以后的服務時間。時間銀行通過一種將服務時間轉換成時間幣的方式來鼓勵公眾參與志愿者活動,提高人們對志愿服務的積極性。
現今中國部分地區已開展試行時間銀行的志愿服務,然而在開展過程中存在一定的缺陷和不足,以時間幣為例,現有的時間銀行在時間幣的發行和流通方面缺乏透明度,用戶無法了解時間幣的發行量。此外,時間幣交易數據存儲在一個中心化的數據庫中,一旦數據庫受到攻擊,就會造成數據庫損壞,導致數據丟失、篡改,甚至產生數據無法恢復的嚴重后果。區塊鏈是一種新型去中心化協議,由不同節點組成,它不依賴第三方機構的審核,可以自動執行智能合約,實現分布式存儲時間幣交易信息或其它數據,保證數據的安全性[2]。利用區塊鏈技術可以使時間幣的發行和流通公開透明,時間幣的結算不依賴某個中心化的節點。
針對上述情況,本文提出將區塊鏈技術與“時間銀行”概念相結合的互助式服務平臺。平臺以政府為主導,以“時間銀行”為媒介,借助“時間幣”進行價值衡量。同時,應用區塊鏈去中心化管理數據實現時間幣的結算流通,促進服務供需雙方完成服務交換。
平臺分為用戶端和管理端。用戶端主要采用uni?app框架完成前端開發,使用Web3.js和智能合約作為接口連接以太坊區塊鏈;而管理端主要利用Thymeleaf 模板完成前端開發。二者均利用Spring Boot框架及Spring Security框架完成后端開發,Solidity編寫智能合約連接服務端和區塊鏈,進行數據交互,用MySQL完成數據存儲。
uni?app是一個基于Vue.js開發所有前端應用的框架,實現一套代碼可發布到iOS、Android、Web 以及各種小程序(如微信、支付寶、百度等)、快應用等多個平臺[3]。
Thymeleaf是一個能夠處理HTML、JS、XML并服務于Java 的模板引擎,它可用于Web 與非Web 環境中的應用開發。使用Thymeleaf 可以提高平臺開發的速度,實現完美的頁面渲染[4]。
Web3.js 是一個JavaScript 庫集合,它封裝了以太坊的JSON RPC API,可以提供一系列Javascript 對象和函數與以太坊區塊鏈交互,包括查看網絡狀態,檢索用戶賬戶,發送交易,與智能合約交互等[5]。
Spring Boot 是Spring 項目的一個子項目,它由Pivotal 團隊提供,其樣板化的配置可以精簡Spring應用的初始搭建以及開發過程,使項目開發變得簡單、方便和快捷[6]。
Spring Security 是基于企業級應用系統,為應用程序開發提供聲明式安全訪問控制的框架。它對安全性的支持依賴于Servlet 過濾器。過濾器可對進入的請求進行安全檢測,檢測通過后應用程序才會對該請求進行處理[7]。
Solidity是Ethereum 的一種契約型編程語言,屬靜態類型,支持繼承庫和用戶自定義類型以及其他功能,旨在定位到以太坊虛擬機。
MySQL 由MySQL AB 公司開發,是一種關系型數據庫管理系統[8],與其他數據庫將所有數據放在一個中央倉庫不同,關系數據庫將數據保存在不同的表中,從而增加了數據存儲速度并提高了數據查詢的靈活性。
與傳統意義上的社會互助不同,新型互助服務平臺是基于“時間銀行”概念開發的,由政府加強政策引導,提高統籌層次,服務交換雙方通過線上交流,以“時間銀行”為媒介,借助“時間幣”進行價值衡量,同時應用區塊鏈去中心化管理數據并實現時間幣的結算流通,促進服務供需雙方完成服務交換,最終實現全社會所有群體共同幫助有需要的老年人的互助服務平臺。因此平臺服務主要設計了用戶端和管理端。
用戶端,利用uni?app、Spring Boot以及Web3.js構建移動端,它主要是為供需雙方提供服務交換的線上平臺,入駐平臺的社會組織發布志愿服務信息和已認證老年人發布個人需求,志愿者接收需求,完成服務并獲得時間幣。同時,利用區塊鏈去中心化協議,使時間幣的發行和流通公開透明,時間幣的結算不依賴某個中心化的節點。
管理端,利用Thymeleaf、Spring Boot和Spring Security 實施,它是一個B/S 結構的在線Web 系統,管理員通過瀏覽器實現對平臺的管理。
系統架構如圖1所示。

圖1 系統架構圖
平臺主要為用戶端和管理端,用戶端和管理端又分別包含若干個功能模塊,如圖2所示。

圖2 系統功能模塊
用戶端按時間幣交易流程分為發布需求、接收服務、服務資訊、兌換商城以及家庭通訊錄等五個模塊。
(1)發布需求。發布需求形式有兩種:第一種為政府主導,政府鼓勵社會組織入駐平臺并在平臺上發布志愿服務信息,同時發放時間幣;第二種為個人主導,已在平臺認證的老年人,發布個人需求。在需求者發布需求前,平臺會收集需求者的服務地點、服務時間、服務時長、服務內容等具體信息,以便平臺為志愿者提供具體的服務信息。
(2)接收需求。“接服務”分為志愿服務隊發布的志愿服務和個人認證后允許發布的需求,用戶可以選擇需求類型并報名,為了提高報名的通過率,志愿者需要在申請過程中填寫詳細的申請信息,通過審核后才算報名成功。報名后按照規定進行服務,志愿者服務完成后經過審核平臺認證后獲得相應時間幣,如果未能按照要求完成任務或超時完成,平臺會扣除志愿者的積分。
(3)服務資訊。平臺主頁設有關于公益宣傳的咨詢,同時提供社區論壇功能,志愿者和被服務群體均可在論壇里進行交友,分享心得體會,豐富平臺的娛樂功能。
(4)兌換商城。為鼓勵志愿者進行志愿服務,本系統設置了兌換功能。在兌換商城中,用戶可利用時間幣進行物品兌換。
(5)家庭通訊錄。在家庭通訊錄功能中,用戶可以邀請自己的朋友和親人加入,形成好友鏈,好友鏈間用戶可以共享時間幣。
管理端根據時間幣交易流程,分為賬戶管理、存取管理、系統信息管理、查詢管理以及基本業務管理等五個模塊。
(1)賬戶管理。管理員可以對用戶的相關信息進行管理,包括志愿服務隊和個人的賬戶開戶、賬戶信息修改和掛失與銷戶等功能。
(2)存取管理。主要包括賬戶中時間幣的存與取,系統發放用戶時間幣,以及家人賬戶之間的時間幣共享和轉發,商城兌換的時間幣交易等功能。
(3)系統信息管理。主要包括社區活動信息、用戶信息、活動額度設置、商品兌換展示和數據備份等管理。也包括賬戶查詢、導出、打印等功能。
(4)查詢管理。主要包括查詢社區居民的賬戶信息、活動申請和完成信息、捐贈信息等功能。
(5)基本業務管理。基本業務包括商品管理、需求管理、消息管理和資訊管理等。主要是對用戶的數據進行讀取、新增、修改、保存和刪除等操作。
本系統采用MySQL 作為關系型數據庫系統,按照數據庫設計原則,在服務器的MySQL數據庫中設計用戶信息表(用戶id、用戶姓名、用戶密碼、用戶電話、用戶類型、賬戶余額等)、新聞資訊表(新聞id、新聞名、新聞作者名、發表時間、新聞圖片、新聞詳情等)、兌換商城信息表(商品id、商品名稱、商品圖片、商品價格、商品數量等)、活動需求表(需求id,需求名稱、需求類型、需求時間、需求備注等)和時間幣交易記錄表等多個數據表,如表1所示。

表1 數據庫表設計
為保證用戶時間幣交易安全,用戶端需要把提交到服務端的數據分為個人信息、服務信息和時間幣交易信息等,服務端通過消息摘要算法運算得到摘要信息,通過Web3.js 與以太坊節點進行連接,將摘要信息提交到區塊鏈存儲,同時用戶端將信息存儲到本地數據庫。管理端定期檢查數據并判斷信息是否被篡改,管理端首先發出請求,通過智能合約查詢從而獲取區塊鏈中存儲的信息,然后與本地數據庫中存儲的信息進行對比。信息一致則證明數據沒有被篡改,信息不相同就表明數據存在被篡改的可能性。
智能合約以Solidity 為開發語言,在以太坊區塊鏈環境下,主要完成客戶端到區塊鏈端摘要信息的上傳,以及管理端到區塊鏈端摘要信息的查詢。智能合約中使用mapping 存儲數組[9],設計userInfo、serviceInfo和billInfo三個變量。userInfo 存儲用戶個人信息數組,其中user為用戶對象,包含用戶名和用戶的以太坊地址;serviceInfo存儲用戶服務信息的摘要;billInfo存儲用戶的時間幣交易信息的摘要,具體如表2所示。

圖3 區塊鏈設計方案

表2 智能合約變量設計表
平臺的原型設計、功能設計以及針對各個操作交互設計均基于“時間幣”交易流程開發,時間幣開發以政府公信力為背書,同時需要建立一個審核平臺對時間幣進行審核認證,整個過程如下:
(1)時間幣的發行。“時間幣”由政府主導發行,平臺以各政府單位為全節點,以用戶為輕節點,構建公有鏈網絡;以政府公信力為背書,為志愿者發放時間幣,主要表現在政府引導各大志愿組織在平臺上發布志愿服務內容,志愿者參加服務,完成服務后由審核平臺進行審核,審核完成后向志愿者支付相應時間幣[10]。
(2)時間幣的交易。平臺允許經過審核的個人用戶在平臺上發布需求,主要表現在老年人向平臺提供相關證明材料,審核平臺對證明材料進行審核,審核完成后即可發布個人需求。依據個人需求,志愿者向有服務需求的老年人提供相應的服務。審核平臺在服務完成后將會對整個服務過程進行審核。服務通過審核后,結合被服務者的滿意程度以及服務類型等綜合因素,平臺將服務時間進行服務資產數字化,即將服務時間轉換為等值的時間幣。
(3)時間幣的轉讓。平臺用戶可以邀請自己的朋友和親人加入,形成好友鏈,用戶在好友鏈中進行賬號關聯,關聯后的賬號平臺可以實現時間幣共享。
(4)時間幣的支付。平臺設置線上商城,政府與商家達成合作,商家通過平臺宣傳產品,并為平臺提供產品贊助,用戶可以在商城頁面換取贊助商的產品。
(1)用戶登錄。iOS 和Android 系統中,點擊首頁下方“我的”按鈕進入用戶個人界面,點擊頭像或未登錄進入登錄界面,用戶輸入手機號和密碼,點擊登錄。小程序中,點擊首頁下方“我的”按鈕進入用戶個人界面,點擊頭像或未登錄,平臺跳轉至微信授權界面,用戶點擊允許,“我的”界面即可獲取用戶信息,如圖4所示。

圖4 登陸界面
(2)發布需求。用戶在首頁選擇“發需求”進入頁面填寫表單,其中,用戶可點擊“服務類型選擇”進行修改,如圖5所示。

圖5 發布需求表單
(3)接收需求。用戶在首頁選擇“接收服務”進入界面選擇服務,其中用戶可以在頁面上方進行服務類型、時間幣排序、時間排序的篩選,選擇完成后進入詳情頁報名,系統生成活動需求信息上傳至區塊鏈存儲以及保存到本地數據庫,服務完成后志愿者獲得相應時間幣,同時時間幣交易信息上傳至區塊鏈和本地數據庫存儲,如圖6所示。

圖6 接收需求界面
(4)兌換商城。用戶點擊首頁下方“我的”按鈕進入用戶個人界面,選擇兌換商城,點擊商品進入商品詳情頁兌換,如圖7所示。

圖7 兌換商城界面
(5)家庭通訊錄。用戶點擊首頁下方“我的”按鈕進入用戶個人界面,選擇家庭通訊錄,點擊邀請按鈕跳轉至微信邀請界面,點擊同意關聯即可綁定賬號,同時將兩者時間幣余額進行相加后作為新的賬戶余額數據,修改用戶信息,同時形成時間幣交易信息并上傳至區塊鏈和本地數據庫存儲,如圖8所示。

圖8 家庭通訊錄界面
管理端是利用Spring Boot 和Thymeleaf 實施的在線系統,包括賬戶、存取、信息、查詢、基本業務等各種管理功能,由于篇幅原因,其實施過程在此不展開論述。
互助式服務平臺把區塊鏈技術與“時間銀行”概念結合起來,以政府為主導,以“時間銀行”為媒介,借助“時間幣”進行價值衡量,同時應用區塊鏈去中心化管理數據并實現時間幣的結算流通,最終促進服務供需雙方完成服務交換。本平臺的設計與實現,可以有效解決社會老齡化過程中關于“時間銀行”概念的新型服務模式探索過程中的問題,為促進我國老年人鏈接多元的社會資源,為我國養老公益志愿服務常態化、規范化、機制化發展作出貢獻。