楊艷梅,劉心如,鄧朝軍,薛榮
(上海理工大學(xué)光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093)
公益是社會(huì)成員基于社會(huì)責(zé)任感、使命感,主動(dòng)為了公眾利益,通過做好事、行善舉等方式解決或改善社會(huì)問題。與慈善不同,公益除了捐款,更重要的是人人參與。公益活動(dòng)的形式多種多樣,如社區(qū)服務(wù)、環(huán)境保護(hù)、義務(wù)植樹、捐款捐物等等。
隨著我國(guó)公益慈善事業(yè)的快速發(fā)展,社會(huì)公眾對(duì)善款去向的合理性、公益項(xiàng)目的透明度尤為關(guān)注。任何不透明事件都可能激發(fā)民眾的不滿、挑戰(zhàn)社會(huì)公眾信心,成為阻礙公益慈善發(fā)展的瓶頸。如去年疫情期間,某機(jī)構(gòu)因物資分配的合理性、透明性而受到民眾廣泛質(zhì)疑;再如有人在水滴籌平臺(tái)偽造虛假病例及住院證明,惡意騙取善款等,都嚴(yán)重影響了人們投身公益的熱情。
區(qū)塊鏈技術(shù)具有去中心化、公開透明、信息可追溯、通過智能合約自動(dòng)執(zhí)行等天然優(yōu)勢(shì),正好對(duì)應(yīng)地解決公益慈善中被詬病的種種問題。區(qū)塊鏈技術(shù)帶來(lái)的信任互聯(lián)網(wǎng)機(jī)制將推動(dòng)公益慈善進(jìn)入公益4.0階段,以技術(shù)重塑信任機(jī)制來(lái)提高慈善組織公信力。因此,將區(qū)塊鏈技術(shù)應(yīng)用于公益慈善項(xiàng)目研究及應(yīng)用日益受到關(guān)注。
李琪等提出一種基于區(qū)塊鏈技術(shù)的慈善應(yīng)用模式,通過時(shí)間戳機(jī)制實(shí)現(xiàn)善款追蹤與實(shí)時(shí)更新,并通過優(yōu)勢(shì)分析和性能分析證明該平臺(tái)能安全、有效地跟蹤善款流向,防止善款濫用;Jayasinghe等搭建基于區(qū)塊鏈技術(shù)的慈善籌款平臺(tái),利用比特幣、智能合約和多重簽名等技術(shù),為慈善組織籌集善款,技術(shù)上保證信息的公開、透明;譚文安等提出一種基于以太坊智能合約的捐助方案,并通過基于智能合約的可信籌款捐助平臺(tái)驗(yàn)證了該方案的可行性;張朝新利用以太坊智能合約設(shè)計(jì)資助平臺(tái),增加了資金使用的透明度;陳志東等提出了眾籌業(yè)務(wù)的私有區(qū)塊鏈架構(gòu)以滿足眾籌業(yè)務(wù)需要,加強(qiáng)金融數(shù)據(jù)的安全和公信力;《2018區(qū)塊鏈公益事業(yè)研究報(bào)告》總結(jié)了區(qū)塊鏈公益事業(yè)的應(yīng)用模式,盤點(diǎn)國(guó)內(nèi)外的區(qū)塊鏈公益項(xiàng)目,指出聯(lián)盟鏈可解信任難題;阿里巴巴2019年正式對(duì)外發(fā)布了“鏈上公益計(jì)劃”,2020年9月提出并聯(lián)合起草了《公益鏈技術(shù)和應(yīng)用規(guī)范》團(tuán)體標(biāo)準(zhǔn),促進(jìn)公益事業(yè)更加公開透明;2020年Fraternity作為全球首個(gè)基于TRON波場(chǎng)主流公鏈開發(fā)的去中心化公益互動(dòng)項(xiàng)目,充分利用和發(fā)揮了區(qū)塊鏈技術(shù)的去中心化、不可篡改及公平公正的特性與優(yōu)勢(shì)。
當(dāng)前研究多是將區(qū)塊鏈技術(shù)應(yīng)用于捐贈(zèng)類慈善事業(yè),本文基于Con flux,將區(qū)塊鏈技術(shù)應(yīng)用于專業(yè)服務(wù)類公益活動(dòng),搭建一個(gè)志愿者活動(dòng)發(fā)布與參與、公益時(shí)長(zhǎng)積分記錄、查詢與認(rèn)證的平臺(tái),做到整個(gè)公益活動(dòng)過程中的信息可追溯、不可篡改。
區(qū)塊鏈?zhǔn)且环N融合多種現(xiàn)有技術(shù)的新型分布式計(jì)算和存儲(chǔ)范式,涉及的領(lǐng)域較多,包括分布式系統(tǒng)、存儲(chǔ)、密碼學(xué)、心理學(xué)、經(jīng)濟(jì)學(xué)、博弈論、控制論、網(wǎng)絡(luò)協(xié)議等。從網(wǎng)絡(luò)層次模型角度劃分區(qū)塊鏈技術(shù),自上而下分為網(wǎng)絡(luò)層、數(shù)據(jù)層、共識(shí)層、控制層和應(yīng)用層,各層對(duì)涉及到的關(guān)鍵技術(shù)進(jìn)行封裝實(shí)現(xiàn)。
區(qū)塊鏈技術(shù)具有去中心化、不開篡改和公開透明等特點(diǎn)。
(1)去中心化。區(qū)塊鏈將信息存儲(chǔ)在網(wǎng)絡(luò)鏈上的所有節(jié)點(diǎn)中,鏈上的各節(jié)點(diǎn)都是平等的,不存在中心化集中管理節(jié)點(diǎn)。
(2)不可篡改。區(qū)塊鏈?zhǔn)且粋€(gè)分布式賬本,網(wǎng)絡(luò)中的節(jié)點(diǎn)都各自保存著一份完整的數(shù)據(jù);根據(jù)共識(shí)機(jī)制,單個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)對(duì)數(shù)據(jù)的修改不會(huì)被其他節(jié)點(diǎn)認(rèn)可,進(jìn)而修改無(wú)效;除非在一定時(shí)間內(nèi)能控制網(wǎng)絡(luò)中超過51%的節(jié)點(diǎn)才能修改成功,而這不太現(xiàn)實(shí)。
(3)公開透明。區(qū)塊鏈上的所有信息包括智能合約代碼都對(duì)全網(wǎng)絡(luò)公開,各節(jié)點(diǎn)都可以對(duì)每次操作進(jìn)行查詢和溯源。
區(qū)塊鏈的發(fā)展經(jīng)歷了以比特幣為代表的貨幣區(qū)塊鏈1.0,以太坊為智能合約代表的區(qū)塊鏈2.0,智能合約的出現(xiàn)使區(qū)塊鏈得以廣泛應(yīng)用。目前區(qū)塊鏈技術(shù)快速發(fā)展、百花齊放,出現(xiàn)了眾多區(qū)塊鏈平臺(tái)和項(xiàng)目,如Hyperledger、FISCO BCOS、Filecoin和Con flux等。這些平臺(tái)封裝了區(qū)塊鏈的底層技術(shù),使開發(fā)基于區(qū)塊鏈的應(yīng)用變的更加容易,正引領(lǐng)區(qū)塊鏈朝著3.0時(shí)代發(fā)展。
Con flux是由清華大學(xué)姚班創(chuàng)立的一個(gè)可擴(kuò)展、去中心化的區(qū)塊鏈底層平臺(tái)。Con flux采用了獨(dú)創(chuàng)的GHAST共識(shí)協(xié)議,可以處理并發(fā)區(qū)塊,不丟棄任何分叉,并運(yùn)用基于有向無(wú)環(huán)圖(DAG)概念的排序算法來(lái)避免分叉問題,具有高吞吐量和快速確認(rèn)等特性。Con flux立足于使中國(guó)區(qū)塊鏈技術(shù)走向全球,得到了機(jī)構(gòu)和社區(qū)的高度認(rèn)可。Con flux交易代付機(jī)制大幅提高了用戶體驗(yàn)感,為創(chuàng)新金融應(yīng)用提供了堅(jiān)實(shí)基礎(chǔ),本文基于Con flux進(jìn)行研究探討。
根據(jù)應(yīng)用類型,公益項(xiàng)目分為資金類、物資類和專業(yè)服務(wù)類;專業(yè)服務(wù)類指由志愿者或?qū)I(yè)機(jī)構(gòu)提供的服務(wù),不涉及物資和善款。本平臺(tái)只引入活動(dòng)發(fā)布者和活動(dòng)參與者兩種角色,分別接受服務(wù)和提供服務(wù)。不需要注冊(cè),人人都可以通過Con flux賬戶在本平臺(tái)發(fā)布公益活動(dòng),人人也都可以選擇活動(dòng)進(jìn)行參與。沒有公益組織機(jī)構(gòu)這一角色對(duì)發(fā)布的活動(dòng)進(jìn)行審核,使活動(dòng)的發(fā)布更加靈活高效。
公益活動(dòng)平臺(tái)如圖1所示,主要功能包括“發(fā)布公益活動(dòng)”、“查看活動(dòng)”、“參與活動(dòng)”和“我的信息”4個(gè)部分。①活動(dòng)發(fā)布者填寫公益活動(dòng)的關(guān)鍵信息(包括活動(dòng)時(shí)長(zhǎng))并發(fā)布公益活動(dòng);②將所有的活動(dòng)顯示在列表中;③活動(dòng)參與者選擇公益活動(dòng)并參與;④活動(dòng)結(jié)束之后參與者獲得相應(yīng)的時(shí)長(zhǎng)積分。根據(jù)區(qū)塊鏈上信息可追溯的特點(diǎn),該公益時(shí)長(zhǎng)可以作為個(gè)人參與公益活動(dòng)的有效憑證,較傳統(tǒng)平臺(tái)可信度更高,可在“我的信息”中查看。
Fig.1 Business model圖1 業(yè)務(wù)模型
本文基于Con flux Studio智能合約的集成化開發(fā)環(huán)境開發(fā)。Con flux Studio是一個(gè)快速開發(fā)Con flux智能合約的集成開發(fā)環(huán)境,集成了Docker、Con flux Node以及Con flux Truffle,該集成開發(fā)環(huán)境可以很方便地實(shí)現(xiàn)DAPP(Decentralization Application,DAPP)開發(fā)。平臺(tái)系統(tǒng)架構(gòu)如圖2所示。
Fig.2 System architecture圖2 系統(tǒng)架構(gòu)
與傳統(tǒng)的Web UI開發(fā)類似,該平臺(tái)分為前端、后端和JavaScript接口3個(gè)部分。
(1)前端負(fù)責(zé)與用戶交互,如公益活動(dòng)的發(fā)布、查詢、參與等操作界面。
(2)后端負(fù)責(zé)提供服務(wù)、存儲(chǔ)數(shù)據(jù)。和傳統(tǒng)Web服務(wù)后端不同的是,區(qū)塊鏈的后端數(shù)據(jù)分布式存儲(chǔ)在區(qū)塊鏈各節(jié)點(diǎn)上,而不是存儲(chǔ)在某個(gè)服務(wù)器上。單獨(dú)修改一個(gè)節(jié)點(diǎn)中數(shù)據(jù)不會(huì)被其他節(jié)點(diǎn)認(rèn)可,保證了數(shù)據(jù)不可篡改。后端的業(yè)務(wù)邏輯(智能合約代碼)也和數(shù)據(jù)一樣存儲(chǔ)在鏈上,由事件(前端界面)觸發(fā)執(zhí)行。本文主要利用Solidity語(yǔ)言編寫智能合約,實(shí)現(xiàn)公益活動(dòng)時(shí)長(zhǎng)的記賬、留痕,做到公益活動(dòng)憑證的可靠、可信。
區(qū)塊鏈上存儲(chǔ)的信息分為兩類:志愿者列表和活動(dòng)列表。志愿者列表用于保存活動(dòng)發(fā)布者和活動(dòng)參與者的個(gè)人信息,包括報(bào)名的活動(dòng)、發(fā)布的活動(dòng)、參加的活動(dòng)、活動(dòng)時(shí)長(zhǎng)等信息?;顒?dòng)列表用于保存公益活動(dòng)的具體信息,包括時(shí)間、地點(diǎn)、內(nèi)容、時(shí)長(zhǎng)等信息。在發(fā)布或參與活動(dòng)時(shí),獲取的志愿者信息和活動(dòng)信息分別保存到兩個(gè)列表中。志愿者信息結(jié)構(gòu)如表1所示,活動(dòng)信息結(jié)構(gòu)如表2所示。
Table1 Volunteer structure表1 志愿者結(jié)構(gòu)體
Table2 Activity information structure表2 活動(dòng)信息結(jié)構(gòu)體
續(xù)表
(3)前后端的交互需要通過JavaScript調(diào)用Web3.js觸發(fā)后端的智能合約執(zhí)行。Web3.js是一個(gè)庫(kù)集合,封裝了一套和區(qū)塊鏈節(jié)點(diǎn)進(jìn)行通信的API。通過該API操作,首先會(huì)關(guān)聯(lián)到操作者的錢包賬戶,然后將該賬戶地址一起傳遞給后端的合約代碼,在合約代碼中可以通過隱含參數(shù)“msg.sender”獲取到本次請(qǐng)求者的賬戶地址,保證了每個(gè)操作都可以追溯、無(wú)法抵賴。
3.1.1 前端界面
活動(dòng)的發(fā)布者和參與者不需要在本平臺(tái)注冊(cè)賬號(hào)就可直接發(fā)布公益活動(dòng),活動(dòng)發(fā)布界面如圖3所示,主要實(shí)現(xiàn)活動(dòng)內(nèi)容填寫,填寫之后點(diǎn)擊“發(fā)布”即可通過JavaScript封裝的接口將前端界面的內(nèi)容傳遞給后端合約代碼。
Fig.3 Posting activity圖3 發(fā)布活動(dòng)
3.1.2 后端智能合約
后端合約接口收到“發(fā)布活動(dòng)”事件后,會(huì)執(zhí)行post Activity合約算法,該算法主要用于保存活動(dòng)信息和志愿者信息,其內(nèi)容如下:
輸入公益活動(dòng)信息
輸出將信息保存在志愿者列表和活動(dòng)列表后,返回成功或失敗
將活動(dòng)狀態(tài)初始化為“報(bào)名中”,生成活動(dòng)ID(簡(jiǎn)化處理、根據(jù)活動(dòng)列表下標(biāo))
將活動(dòng)信息保存到活動(dòng)列表中
從msg.sender獲取活動(dòng)發(fā)布者賬戶地址
在志愿者列表中查找發(fā)布者賬戶地址,如未找到則添加一條記錄
在該志愿者已發(fā)布列表中加入該活動(dòng)ID
返回發(fā)布成功
查看公益活動(dòng)包括“活動(dòng)列表”和“活動(dòng)詳情”兩個(gè)頁(yè)面,如圖4和圖5所示?!盎顒?dòng)列表”展示了所有的公益活動(dòng),點(diǎn)擊列表中的“活動(dòng)名稱”即可進(jìn)入“活動(dòng)詳情”頁(yè)面。
在“活動(dòng)詳情”頁(yè)面可以報(bào)名參與活動(dòng)。點(diǎn)擊“已報(bào)名詳情”,后端合約算法會(huì)根據(jù)賬戶地址判斷是否是活動(dòng)創(chuàng)建者發(fā)起的請(qǐng)求,如果是則返回“活動(dòng)參與者”信息列表,包括姓名和聯(lián)系電話;如果不是則返回空列表。
Fig.4 Activity list圖4 活動(dòng)列表
Fig.5 Activity detail圖5 活動(dòng)詳情
點(diǎn)擊“活動(dòng)詳情”頁(yè)面的“立即報(bào)名”,按鈕會(huì)彈出報(bào)名界面,在該界面輸入“姓名”和“電話”,然后“確認(rèn)報(bào)名”即可。后端收到后會(huì)執(zhí)行joinActivity合約算法,主要邏輯描述如下:
輸入?yún)⑴c者信息及活動(dòng)ID
輸出返回參與成功或失敗
根據(jù)前端請(qǐng)求中攜帶的活動(dòng)ID,在活動(dòng)列表中查找活動(dòng)并確認(rèn)活動(dòng)狀態(tài),如果狀態(tài)不是“報(bào)名中”則返回失敗
在活動(dòng)信息的“申請(qǐng)參加者列表”中加入該志愿者賬戶
在志愿者列表中查找該參與者賬戶地址,如未找到則添加一條記錄
在“報(bào)名中的活動(dòng)列表”中加入該活動(dòng)ID
本頁(yè)面主要用于展示個(gè)人信息。后端收到請(qǐng)求后會(huì)根據(jù)賬戶地址在志愿者列表中查找,如找到則返回表1定義的結(jié)構(gòu)體內(nèi)容。
已發(fā)布活動(dòng)完成后,發(fā)布者需要手動(dòng)修改活動(dòng)狀態(tài)為“已結(jié)束”,后端收到請(qǐng)求后觸發(fā)finishActivity合約算法,邏輯如下:
輸入活動(dòng)ID
輸出返回成功或失敗
根據(jù)活動(dòng)ID,在活動(dòng)列表中查找活動(dòng),并將活動(dòng)狀態(tài)改為“已結(jié)束”
遍歷該活動(dòng)的“申請(qǐng)參加者列表”所有志愿者,進(jìn)行下面兩個(gè)步驟動(dòng)作
累計(jì)時(shí)長(zhǎng)積分加上本活動(dòng)時(shí)長(zhǎng);將本活動(dòng)從“已報(bào)名的活動(dòng)列表”移至“已參加的活動(dòng)列表”
在志愿者列表該用戶的“報(bào)名中的活動(dòng)列表”中加入該活動(dòng)ID
該平臺(tái)與傳統(tǒng)的公益活動(dòng)小程序相比,最大的不同之處是將后端信息存儲(chǔ)在區(qū)塊鏈上而不是存儲(chǔ)在某個(gè)服務(wù)器中,因而具有區(qū)塊鏈的優(yōu)勢(shì):透明、可信、可追溯等。但區(qū)塊鏈技術(shù)目前尚未大規(guī)模應(yīng)用,用戶群較小,因此該平臺(tái)很難像傳統(tǒng)的公益小程序一樣廣泛應(yīng)用。
公益慈善事業(yè)中偶爾出現(xiàn)的弄虛作假事件,對(duì)公益慈善組織的透明度、公信力會(huì)產(chǎn)生較大的負(fù)面影響。區(qū)塊鏈技術(shù)具有去中心化、分布式記賬等天然優(yōu)勢(shì),為公益慈善事業(yè)的發(fā)展提供了新的方向。本文將區(qū)塊鏈技術(shù)應(yīng)用于服務(wù)類公益活動(dòng),搭建了一個(gè)公益活動(dòng)服務(wù)平臺(tái),將活動(dòng)信息記錄在區(qū)塊鏈上,保證了公益活動(dòng)信息可追溯、不可篡改。區(qū)塊鏈公益慈善的發(fā)展不僅依賴區(qū)塊鏈技術(shù)本身,還需要各慈善組織、大型平臺(tái)積極參與,以及政府進(jìn)行信息監(jiān)管,發(fā)展過程還需時(shí)日。后續(xù)將對(duì)公益慈善的組織及運(yùn)作模式作進(jìn)一步研究。