区块链在众包中的应用,防止搭便车和避免不真实报告
本文講解一個(gè)區(qū)塊鏈在眾包中的應(yīng)用,主要的思想是將一個(gè)公共的區(qū)塊鏈來代替第三方服務(wù)器(或者第三方公司)來解決搭便車(free-riding)和不真實(shí)報(bào)告(false-reporting)的問題。
更多區(qū)塊鏈資源,歡迎關(guān)注本人公眾號(hào):鏈巨人
1、背景
我們把眾包(crowdsourcing)和集眾感知(crowdsensing)劃分到相同的類別。它們大體上都表示“許多人一起完成一件任務(wù)”。如果細(xì)分的話,前者包含后者,因?yàn)榧姼兄话阒甘褂脗鞲衅鱽硗瓿傻娜蝿?wù),比如手機(jī)拍照,手機(jī)檢測(cè)噪音。本文我們將兩者統(tǒng)一對(duì)待。
在眾包中典型的應(yīng)用有:
-
滴滴出行: 出行者在軟件上發(fā)布一個(gè)任務(wù),多個(gè)司機(jī)搶單。
-
斯坦福大學(xué)教授FeiFei Li使用亞馬遜的眾包平臺(tái)(Amazon Mechanical Turk)收集的超過一千多萬圖片數(shù)據(jù),名為Imagenet數(shù)據(jù)集。該數(shù)據(jù)集為推動(dòng)深度學(xué)習(xí)做出了卓越貢獻(xiàn)。
-
百度地圖中的交通擁堵感知。
-
環(huán)境監(jiān)測(cè):空氣污染感知,噪聲污染感知,地震振幅感知。
-
尋找外星人(S E T I@ home)——通過互聯(lián)網(wǎng)利用家用個(gè)人計(jì)算機(jī)處理 天文數(shù)據(jù)共同搜尋地外文明。
通過上面列舉的例子,我們能夠體會(huì)到眾包在我們的有很多重要的應(yīng)用。群智感知是什么?有什么典型應(yīng)用?
這里我們把發(fā)布任務(wù)的人叫requester,簡(jiǎn)稱R,把完成任務(wù)的人叫workers,簡(jiǎn)稱W。在一個(gè)任務(wù)中,有一個(gè)R和多個(gè)W。
2、動(dòng)機(jī)/Motivation
W完成一個(gè)任務(wù)需要消耗時(shí)間,還有設(shè)備比如手機(jī)的電池和通信費(fèi)用的成本。因此僅僅依靠W自愿來參加一個(gè)任務(wù)往往行不通:加入的W數(shù)量和覆蓋范圍有限。因此,我們需要一種激勵(lì)機(jī)制來讓W(xué)參加和完成一個(gè)任務(wù)。而最典型的激勵(lì)便是R支付貨幣給W。
-
對(duì)W來說,只要worker的數(shù)據(jù)質(zhì)量達(dá)到預(yù)設(shè)的要求,且worker得到了相應(yīng)的報(bào)酬,R才能夠獲取到該數(shù)據(jù)(即,防止搭便車 prevent free-riding)。更嚴(yán)格地,我們希望除了該worker和requester,其他人都無法獲取到該數(shù)據(jù)。
-
對(duì)R來說,它希望只有W完成任務(wù),且完成的質(zhì)量達(dá)到要求之后才支付W報(bào)酬 (即,防止不真實(shí)的報(bào)告 prevent false-reporting)。
但是,在互聯(lián)網(wǎng)中,在缺少面對(duì)面接觸的陌生人之間,很容易出現(xiàn)干活了不給錢,或者給錢了不好好干活的情況。比如,亞馬遜的眾包平臺(tái)Amazon Mechanical Turk秉持不干預(yù)的政策,不管R和W之間的糾紛。R擁有主觀決定W的工作質(zhì)量的權(quán)力,造成了很多搭便車的現(xiàn)象。這使得W投訴無門,大大降級(jí)W參與的積極性。
3、解決方法
上圖表示,借用第三方,保證:只有當(dāng)數(shù)據(jù)d滿足要求時(shí),worker能夠的到數(shù)量為r的報(bào)酬;只有支付了worker該報(bào)酬之后,requester才能得到數(shù)據(jù)。
為了防止搭便車和防止不真實(shí)的報(bào)告,我們需要一個(gè)第三方。該第三方是W和R都信任的。我們可以使用公共區(qū)塊鏈,比如以太坊,來擔(dān)任這個(gè)第三方的角色。公共區(qū)塊鏈以太坊有下面的特點(diǎn):
-
公開透明:任何人都可以查看鏈上的信息。
-
Integrity security: 這包含兩個(gè)方面,一是鏈上的信息是不可篡改的且能夠可驗(yàn)證的;二是智能合約的input,執(zhí)行過程和output是不可篡改的且可驗(yàn)證的 (除非能夠攻破PoW共識(shí)算法或者h(yuǎn)ash算法)。
-
具有去中心化的智能合約。本質(zhì)上智能合約是執(zhí)行在鏈上的代碼。它能夠定義一個(gè)區(qū)塊鏈的應(yīng)用邏輯。
-
具有加密貨幣。
根據(jù)上面的特點(diǎn),我們可以使用以太坊來實(shí)現(xiàn)那個(gè)第三方。為了防止不真實(shí)報(bào)告,我們使用智能合約來檢測(cè)worker的工作/數(shù)據(jù)質(zhì)量。為了防止搭便車,我們讓R繳納押金(加密貨幣),只要W的數(shù)據(jù)質(zhì)量達(dá)到預(yù)設(shè)的要求,區(qū)塊鏈自動(dòng)把押金轉(zhuǎn)給W。但是,以太坊是公開透明的,這給“防止搭便車”增加了困難,因?yàn)橹灰獁orker將數(shù)據(jù)發(fā)到區(qū)塊鏈中,所有人(不單單是R)都能看到該數(shù)據(jù),無論該數(shù)據(jù)是否符合質(zhì)量要求。可是,該數(shù)據(jù)是R花錢“買”的,它屬于R的資產(chǎn),因此一般情況下R不希望其他人能夠免費(fèi)獲取到該數(shù)據(jù)。為了解決這個(gè)問題,我們使用Trusted Execution Environment (TEE)來實(shí)現(xiàn)數(shù)據(jù)的保密性。其中,英特爾的SGX實(shí)現(xiàn)了Trusted Execution Environment。
英特爾CPU從第六代酷睿開始增加了SGX特性,含有Intel Xeon版服務(wù)器級(jí)的CPU也包含了,比如Intel Xeon E3 v6。它是Software Gaurd Extensions的縮寫,目的是從硬件實(shí)現(xiàn)信息安全。簡(jiǎn)單來講就是英特爾通過硬件來實(shí)現(xiàn)一個(gè)安全的沙盒。這里一個(gè)電腦可以分為安全的沙盒和不安全的沙盒外部環(huán)境。沙盒外面的環(huán)境被認(rèn)為是有可能被黑客或者惡意者完全操控的,是不安全的。沙盒外面的代碼無法窺探或者修改沙盒內(nèi)部的代碼和數(shù)據(jù);沙盒內(nèi)部的代碼執(zhí)行也不會(huì)影響外部環(huán)境,沙盒有專門的“口子”,用于將數(shù)據(jù)從不安全的環(huán)境傳入沙盒或者從沙盒內(nèi)傳出到非安全的環(huán)境。這里我們把沙盒用TEE表示,它是Trusted Execution Environment的簡(jiǎn)稱,沙盒內(nèi)部的環(huán)境中的程序被稱為enclave程序,中文翻譯為飛地。
我們需要借用TEE來解決上面所述的搭便車的問題,讓worker得到保證:只要worker的數(shù)據(jù)質(zhì)量達(dá)到預(yù)設(shè)的要求,且worker得到了相應(yīng)的報(bào)酬,R才能夠獲取到該數(shù)據(jù)。
上圖展示的是系統(tǒng)架構(gòu)示意圖。其中有五個(gè)實(shí)體,除了已經(jīng)提到的worker,requester和公共區(qū)塊鏈,還有礦工和TEE。現(xiàn)在,每一個(gè)礦工都需要安裝TEE,用來檢測(cè)worker的數(shù)據(jù)的質(zhì)量。我們使用下圖來展示worker的數(shù)據(jù)的流動(dòng)過程。
?
1、首先worker將數(shù)據(jù)提交給區(qū)塊鏈的節(jié)點(diǎn),具體的,是區(qū)塊鏈安裝有TEE的節(jié)點(diǎn)或者礦工。當(dāng)然,因?yàn)閿?shù)據(jù)是在網(wǎng)絡(luò)中傳輸?shù)?#xff0c;在傳給TEE之前,worker需要和TEE執(zhí)行一個(gè)密鑰共享協(xié)議,使得兩個(gè)人都得到一個(gè)相同的密鑰。worker將該數(shù)據(jù)加密,再傳給TEE。
2、TEE從區(qū)塊鏈中獲取該worker的相關(guān)信息,檢查該worker是否已經(jīng)注冊(cè)了該任務(wù)等等。
3、TEE使用預(yù)定義好的函數(shù)eva(d)來檢測(cè)worker的數(shù)據(jù)d的質(zhì)量。如果數(shù)據(jù)質(zhì)量符合要求,區(qū)塊鏈便支付該worker預(yù)定義好的貨幣。如果質(zhì)量不符合要求,TEE不會(huì)將數(shù)據(jù)給requester。當(dāng)然,也不會(huì)支付worker報(bào)酬。
4、等到確認(rèn)該worker被成功付款了,TEE將該數(shù)據(jù)的密文存到區(qū)塊鏈中,將密鑰發(fā)給requester。如果考慮到區(qū)塊鏈的存儲(chǔ)有限,TEE可以將數(shù)據(jù)密文存儲(chǔ)到一個(gè)公共的數(shù)據(jù)庫中,比如IPFS或者一個(gè)公共的cloud中,然后將密鑰發(fā)給requester。只是,這會(huì)降低數(shù)據(jù)密文的availability。
從上圖的紅色箭頭路徑可以看出,worker的數(shù)據(jù)在最后worker收到報(bào)酬之后才會(huì)被公開給該requester,因此,這符合我們前面提到的“防止搭便車”的要求。
現(xiàn)實(shí)中,并不可能所有的礦工都會(huì)安裝TEE。一個(gè)礦工使用TEE來檢測(cè)worker的數(shù)據(jù)質(zhì)量,這是一份額外的工作,相比于正常的挖礦。因此,我們可以考慮給予這部分礦工額外的獎(jiǎng)勵(lì)。
詳細(xì)內(nèi)容請(qǐng)閱讀:Liang, Y., Li, Y., & Shin, B. S. (2020). Faircs—blockchain-based fair crowdsensing scheme using trusted execution environment.Sensors,20(11), 3172.
謝謝
總結(jié)
以上是生活随笔為你收集整理的区块链在众包中的应用,防止搭便车和避免不真实报告的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 排列数字问题
- 下一篇: 告别最好用的微软UWP应用OneNote