吉 原, 蔣凌云
(南京郵電大學計算機學院, 江蘇 南京 210023)
眾包(Crowdsourcing)[1]是一種面向大眾公開招募任務工作者的問題解決模式,通過招募具有相應技能的個體,完成一些復雜難解的任務,這種模式近年受到了工業界和學術界的廣泛關注。然而,傳統的基于集中式中央平臺的眾包模型存在單點故障、隱私泄露、信任風險等問題。區塊鏈作為一種去中心化的分布式賬本技術,為解決傳統基于集中式中央平臺的眾包模型存在的問題提供了一種可行方案。本文調研了基于區塊鏈的眾包系統的相關研究工作,首先介紹了眾包和區塊鏈技術的概念,其次分析了傳統基于集中式中央平臺的眾包模型存在的問題,并從架構設計、安全隱私、共識機制、數據存儲等方面分析了基于區塊鏈的眾包系統面臨的主要問題及針對這些問題常用的解決方案,同時針對眾包數據質量以及共識協議通信復雜度問題,本文給出了基于信譽系統的解決思路。最后本文對基于區塊鏈的眾包系統未來的研究方向進行了展望。
HOWE[1]于2006年提出了眾包這一概念,并將其描述為一種將傳統上由員工完成的任務以公開招募的形式外包給一大群人的想法。通過眾包這種商業模式,企業或個人可以在眾包平臺上發布任務并將任務分配給有意愿完成此任務的互聯網上的大眾,以此尋求任務解決方案。
典型的眾包系統通常由三組角色組成:任務請求者、工作者和眾包平臺(如圖1所示)。任務請求者在眾包平臺上描述任務需求并發布任務,平臺中對該任務感興趣的、符合技能要求的平臺用戶報名參加任務,平臺或者任務請求者選擇合適的工作者。被選中的工作者在完成任務后將結果提交給平臺,當任務執行結果滿足任務請求者設置的要求后,平臺將最終結果發送給任務請求者,并向相應的工作者發放獎勵。設計好的激勵機制可以吸引更多的平臺用戶參與眾包任務,因此成為眾包領域的研究熱點。為了保證激勵機制的有效執行,需要選擇一個可信的第三方平臺(也可稱為中介)對交易和服務進行托管,保證眾包服務與獎勵之間的順利交換。因此,傳統的眾包系統普遍基于集中式的架構完成眾包各個階段任務的執行。

圖1 典型的眾包系統架構Fig.1 Typical architecture of crowdsourcing system
區塊鏈的概念首次出現在比特幣白皮書中,但是該白皮書中并未對區塊鏈做出精確定義[2]。目前,學術界將區塊鏈視為一種去中心化、集體維護的分布式數據庫,其數據結構由按時間順序排列的數據區塊組成,每個區塊包含一段時間內的事務信息、相應的時間戳和指向前一個區塊的哈希指針等信息,并通過密碼學技術加強事務信息的完整性,避免信息被篡改和偽造[3]。
區塊鏈賬本由網絡中的眾多節點共同維護,系統中的節點使用點對點(Peer-To-Peer,P2P)網絡連接通信,P2P網絡中的節點地位平等,不需要中央服務器集中協調。為了保證分布式網絡中各節點數據的一致性,需要設計合理的共識機制。共識的過程就是節點驗證事務信息并更新區塊鏈的過程。共識機制作為區塊鏈技術的核心,對區塊鏈的安全性、公平性及效率等方面起著關鍵作用。
區塊鏈系統中一個典型的運作流程如下:用戶在區塊鏈客戶端發起請求消息,各節點將消息數據在網絡中廣播,網絡中參與共識的節點驗證請求數據,各節點根據共識機制完成用戶請求并將一段時間內的請求數據打包生成區塊,節點將新區塊在網絡中廣播,其余節點驗證新區塊并更新其本地區塊鏈。
智能合約是一種不需要中介、自我驗證、自動執行合約條款的計算機程序,近年來隨著區塊鏈技術的廣泛應用而備受關注[4]。智能合約的概念最早于1994年被提出,它被定義為一種能夠按照事先寫好的規則自主執行且不受外界人為干預的計算機程序,但當時無法為智能合約提供可信的執行環境,所以在很長的一段時間內沒有得到廣泛應用[5]。隨著區塊鏈技術的出現,人們發現區塊鏈系統可以為智能合約提供去中心化的可信執行環境,使得智能合約的概念得到實際應用。同時,區塊鏈系統也可以借助智能合約的可編程特性實現一些復雜的交易功能。
區塊鏈系統中相關用戶對規則進行協商,達成一致后創建智能合約代碼,并將該合約代碼部署到區塊鏈上。一旦滿足了合約的觸發條件,預定義的合約代碼將自主執行,并將執行后的結果打包進區塊,經共識驗證之后發布到區塊鏈中。通過智能合約,平臺用戶和陌生人可以在去中心化的環境中安全、公平地進行交易。
基于集中式中央平臺的眾包模型存在一些問題:首先,中央平臺容易因分布式拒絕服務攻擊(Distributed Denial of Service,DDoS)或系統故障導致服務不可用,損害平臺用戶的利益;其次,中央平臺并不一定完全公平,可能會偏向支付服務費的任務請求者,當任務請求者和工作者之間發生沖突時,需要依賴平臺的主觀仲裁,這會引起公平性方面的風險;最后,中央平臺的數據庫中一般存儲了大量的用戶隱私信息(如姓名、年齡、地理位置、職業信息等),可能存在用戶隱私泄露的風險。
區塊鏈為解決上述問題提供了可行的方案。首先,區塊鏈去中心化機制可以有效地解決單點故障問題,在沒有集中式中央平臺的情況下,支持相互不信任的用戶安全地完成交易,解決了中央平臺存在的公平性問題;其次,區塊鏈的匿名機制能在一定程度上保護用戶的隱私。因此,基于區塊鏈的眾包系統成為眾包領域重要的研究方向。
本章節首先討論了基于區塊鏈的眾包系統的架構設計和實現流程,其次從安全隱私、共識機制和數據存儲方面介紹了目前區塊鏈領域的相關工作。
一個典型的基于區塊鏈的眾包系統流程如圖2所示。任務請求者一般通過以下步驟發布需求,進而獲得解決方案。

圖2 一個典型的基于區塊鏈的眾包系統流程Fig.2 A typical blockchain-based crowdsourcing system process
(1)注冊:任務請求者和工作者在平臺上進行身份注冊,獲得身份信息,如公私鑰、數字證書等。
(2)發布任務:任務請求者向區塊鏈中部署眾包智能合約,合約內容包括眾包需求信息、任務請求者公鑰、工作者報名截止時間、任務截止時間、任務結果評價規則、獎勵分配規則等,合約內容透明、公開,并且任務請求者需提前將獎勵資金轉到智能合約賬戶地址。
(3)申請任務:愿意執行眾包任務的工作者通過任務請求者發布的智能合約進行報名、支付押金的操作。
(4)分配任務:智能合約根據預定的規則選擇工作者參與眾包,并通知被選擇的工作者。
(5)執行任務:被選中的工作者執行眾包任務,使用任務請求者的公鑰加密任務數據,然后發送至分布式鏈下存儲,并將數據哈希值和指針存儲在區塊鏈上。
(6)評估并分配獎勵:任務請求者可以通過指針找到任務數據,并用自己的私鑰解密;智能合約根據事先設定的規則評價工作者的任務完成質量,確定獎勵分配,同時將押金返還給工作者。
CrowdBC是一個典型的基于區塊鏈的眾包平臺,其系統架構如圖3所示[6]。CrowdBC架構分為應用層、區塊鏈層和存儲層。對眾包任務感興趣的工作者可以在應用層查詢任務請求者發布的任務,并根據自己具備的相應技能報名相應的任務。區塊鏈層負責對來自應用層的輸入執行共識協議以達成共識,并對眾包任務最終狀態達成一致。在數據存儲方面,由于區塊鏈上的數據存儲容量有限,因此CrowdBC單獨抽離出存儲層,將眾包任務元數據(如數據大小、哈希值、所有者、指針)放在鏈上存儲,原始數據則放在鏈下存儲層,用戶可以通過鏈上的元數據驗證存儲層數據的完整性和真實性。

圖3 CrowdBC系統架構Fig.3 System architecture of CrowdBC
CrowdBC實現了三種類型的智能合約:用戶注冊合約、用戶摘要合約、任務請求者與工作者關系合約。任務請求者或工作者使用用戶注冊合約進行注冊,用戶摘要合約為注冊成功的用戶創建用戶信息(包括技能、職業、聲譽等)。任務請求者與工作者關系合約則實現了任務請求者與工作者之間的協議,描述了任務發布、任務分配、方案收集和獎勵分配的過程。
使用去中心化的智能合約描述復雜的眾包邏輯,可以降低對集中式中央平臺的依賴性,并增強眾包的靈活性。例如,GAO等[7]構建了一種基于區塊鏈技術的新型眾包模型,在智能合約中部署工作者選擇策略,實現可靠的任務分配。余春堂等[8]提出了基于區塊鏈的眾包物流分級多層智能服務交易監管架構,通過編寫智能合約實現與區塊鏈網絡的交互。KADADHA等[9]提出了基于區塊鏈和拍賣機制的眾包框架ABCrowd,設計了拍賣算法激勵工作者公布其真實成本以獲得最高效用,通過以太坊智能合約保證任務請求者和工作者之間的可信交互以及拍賣機制的可信執行。
為了解決工作者能力水平參差帶來的眾包任務數據質量問題,可以將信譽系統引入眾包模型中,使用信譽作為衡量工作者能力的指標,確保所選工作者的能力滿足任務要求。許多眾包研究工作將工作者的信譽評分建立在眾包任務請求者的反饋上,然而眾包任務請求者作為利益相關方可能會提交不真實的反饋。為了解決該問題,可以考慮招募第三方驗證者負責評價眾包工作者完成任務的質量,并在此基礎上建立針對工作者的信譽系統。為了激勵第三方驗證者提交誠實的評價報告,眾包模型可以將驗證者的評價過程建模為同步報告博弈,使用對等預測和對數打分規則衡量驗證者報告的誠實性,在此基礎上設計針對驗證者的信譽系統。
在傳統的基于集中式中央平臺的眾包系統中,當任務請求者和工作者進行交易時,相關數據由中央平臺進行管理,這不僅增加了眾包成本,也帶來了數據被偽造或篡改的風險。因此,一個安全可信的眾包系統必須保證相關數據的一致性,防止被非法用戶篡改。同時,眾包系統的用戶應該可以在任何時間或者地點訪問系統,然而傳統的基于集中式中央平臺的眾包系統面對網絡攻擊或者其他系統故障時,容易造成系統不可用。朱向榮等[10]提出一個基于區塊鏈的眾包知識融合系統FactChain,區塊鏈的去中心化特性和開放性保證了系統的單點崩潰容錯性;區塊鏈的開放透明、可溯源和不可篡改性使得知識的貢獻者和更新流程可追溯。FactChain還利用智能合約實現鏈上的知識融合邏輯,保證了鏈上知識的一致性訪問。
區塊鏈的開放性和透明性保證了事務信息的可溯源和不可篡改,是區塊鏈技術重要的優點之一,然而這一優點可能會影響對眾包用戶的隱私保護。雖然區塊鏈系統的匿名機制允許用戶使用與真實身份信息無關的公鑰標識身份參與眾包,但是由于區塊鏈網絡環境的開放性,導致惡意用戶可以通過分析鏈上公開的眾包交易記錄推斷目標用戶的個人信息(如真實身份、地理位置等),這造成了極大的隱私泄露風險。YANG等[11]提出了一種基于區塊鏈的隱私保護眾包系統,可以保護工作者的位置隱私。為了防止通過重識別進行攻擊,該系統使用多個私有區塊鏈分散眾包參與者的交易記錄,不愿透露位置信息的工作者可以從各種私有區塊鏈中選擇任務,因此攻擊者無法通過觀察相應的事務歷史推斷工作者的身份和位置信息。ZHANG等[12]提出了一種基于區塊鏈的新型隱私保護車輛感知眾包方案PRVB,通過保障車輛與感知數據之間的不可鏈接性達到保護數據隱私的目的。針對眾包任務信息的隱私保護,TONG等[13]提出了一個混合區塊鏈眾包平臺CHChain。CHChain的核心是其混合式區塊鏈結構,它由多個私有任務鏈和一個公共鏈組成,將每個任務的私有信息(如任務響應、評估、反饋等)隔離到只有任務參與者可以訪問的私有任務鏈中,將所有任務的公共信息(如任務ID、獎勵、截止日期等)記錄到一個公共鏈中。CHChain在實現眾包數據分布式透明存儲的同時,還在一定程度上保證了任務敏感信息的私密性。
基于集中式中央平臺的眾包系統缺乏有效的信任機制,無法確保平臺的公平性,也無法有效應對任務請求者或工作者可能存在的不誠實行為。在去中心化的眾包系統中設計安全、公平的共識機制是解決上述問題的有效方法。共識機制是區塊鏈系統建立信任的基礎,比特幣使用工作量證明(Proof of Work,PoW)作為底層共識協議,但該協議吞吐量低、資源消耗大等缺點限制了其廣泛應用,其他共識算法[14][如基于實用拜占庭容錯算法(Practical Byzantine Fault Tolerance,PBFT)、權益證明(Proof of Stake,PoS)等]也存在諸如拓展性差或缺乏公平性等問題。因此,設計共識機制是實現基于區塊鏈的眾包系統的關鍵,通過設計適用于眾包場景下的共識算法,可以提升基于區塊鏈的眾包系統的可拓展性、公平性和安全性。
ZOU等[15]提出了一種信任證明(Proof of Trust,PoT)共識協議,適用于眾包和一般的在線服務行業,基于眾包工作者的信任值選擇交易驗證者,使用Raft算法選取共識領導者,該協議既避免了PoW機制的低吞吐量、高計算消耗問題,也解決了PBFT共識算法的可拓展性問題。但是,該協議使用Raft算法選出的唯一共識領導者可能不可靠,這會增加節點實施惡意行為的概率。ZHU等[16]針對此問題提出了改進的信任證明共識方案,設計了一種適用于眾包場景的信譽算法。該共識方案基于節點信譽值選擇共識節點參與共識過程,一方面可以保證共識節點是動態變化的,另一方面大大降低惡意節點影響共識的概率。與其他共識協議相比,該協議具有更高的安全性和可擴展性。FENG等[17]提出了MCS-Chain區塊鏈眾包系統,該系統使用了一種新的區塊生成共識機制,當等待記錄到下一個區塊中的累計支付金額超過預先定義的閾值時,就會生成一個新區塊,并保證即使多個區塊同時出現,也可以確定唯一的塊,從而大大降低了計算開銷。AN等[18]在基于區塊鏈的眾包模型中引入了雙共識機制,第一個共識保證了工作者與任務請求者之間的雇傭關系,第二個共識保證了工作者和報酬之間的對應關系,雙共識方法避免了欺詐行為的發生。
P2P網絡的開放性和動態性(節點的加入和退出)大大增加了其安全風險,在這樣的網絡中,沒有集中的權力驗證節點和管理網絡。因此,有必要設計一套信譽系統約束共識節點的行為,可以基于信譽對節點進行分組,形成包含多個子集群的底層網絡和包含主集群的上層網絡,將節點共識通信限制在單個集群內,多個子集群獨立、并發地執行共識協議,避免了每個節點向全網所有節點廣播消息,從而大大降低了通信的復雜度。
使用區塊鏈存儲眾包數據存在一些問題:首先,區塊過大會增加區塊鏈中全節點的壓力,這可能會導致全節點的減少和區塊鏈的集中化;其次,向區塊鏈提交事務、達成共識的成本昂貴[19]。區塊鏈提供的優勢可以應用于鏈下存儲,例如可以將眾包任務數據的哈希值存儲在鏈上,原始數據存儲在鏈下。由于哈希值相對較小,因此相應的存儲成本不高。
星際文件系統(Inter Planetary File System,IPFS)是區塊鏈應用中常見的鏈下存儲方案之一。IPFS是一種分布式數據存儲協議,支持高容量存儲和高并發訪問[20]。IPFS是內容可尋址的,為每個存儲的文件分配一個唯一的哈希值,它具有良好的重復數據消除機制,沒有中央服務器限制,上傳到系統中的數據可以永久保存。對于高頻查詢的數據,IPFS可以沿著查詢路徑創建重復數據,以便在下一次查詢時直接從本地加載。區塊鏈應用中的事務數據的大小可達數萬字節,而IPFS哈希值只有幾十個字節。因此,可將IPFS作為基于區塊鏈的眾包系統的鏈下存儲方案,將眾包數據存儲在IPFS中,并將IPFS哈希值存儲在區塊中,從而大大節省了區塊鏈的存儲空間。MUGHAL等[21]提出了基于區塊鏈的河流流量數據采集眾包系統,將河流流量聚合數據存儲到IPFS,實現高效的分布式存儲和共享機制。除此之外,還有許多研究將IPFS作為區塊鏈眾包系統的鏈下存儲方案[22-24]。將IPFS分布式鏈下存儲與區塊鏈相結合,能在去中心化的同時起到擴展擴容、減輕鏈上負擔的作用。
除了IPFS技術,其他的存儲技術(例如中央云服務器、BitTorrent文件系統、Storj、Swarm等)也可用于區塊鏈眾包系統的線下存儲,例如MA等[25]提出的區塊鏈眾包系統將非敏感元數據記錄在區塊鏈上,敏感元數據和加密數據被存儲在鏈下的安全云服務器中。
除了上文梳理的研究角度,基于區塊鏈的眾包系統未來的研究方向還包括如下內容。
(1)智能合約的安全性。智能合約是基于區塊鏈的眾包系統的關鍵組成部分,并且由于區塊鏈的不可篡改特性,使智能合約部署到區塊鏈上后便無法修改,所以一旦智能合約出現代碼漏洞并被不法分子利用,將會造成巨大的損失。因此,在將智能合約部署上鏈之前,有必要對合約代碼進行檢查,分析其是否存在潛在的安全問題。
(2)用戶身份認證。惡意攻擊者可能會偽造生成多個身份參與共識過程以影響共識結果,即所謂的女巫攻擊。為了保證基于區塊鏈的眾包系統的安全性,設計更加復雜的節點身份認證機制,增大發動女巫攻擊的難度和成本,是未來重要的研究方向。
基于區塊鏈的眾包系統作為眾包技術的一個研究領域,有許多需要深入研究的問題。本文梳理了近年來的相關研究工作,并從架構設計、安全隱私、共識機制和數據存儲四個方面分析了基于區塊鏈的眾包系統設計所面臨的問題及其對應的解決方案,并對未來的研究方向進行了展望。希望本文的研究可以對未來的研究工作提供有益參考。