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