Truebit:為可驗證計算開闢市場
去中心化應用程序向我們描繪了美好的未來圖景。它們透明度高且具有防篡改性,永不停歇地運行著,在全球範圍內釋放激勵並解決協調性問題。
一級標題
一級標題
難題:去中心化的計算
使用Solidity 編寫的代碼會在EVM(以太坊虛擬機)中編譯為字節碼,然後打包到區塊鏈中。自此之後,每一筆向存儲著字節碼的合約地址發送的交易都會觸發代碼的運行。由此可以看出,區塊鏈共識機制在設計上存在冗餘:所有的礦工進行一樣的計算,然後對結果達成共識。
計算被量化,相應地費用也是視代碼執行的複雜程度決定的。區塊鏈虛擬機指令集中的每個操作都被標好價格(稱之為“Gas”),交易的發送者每執行一個指令,都會根據計算量來支付費用。
但凡複雜的業務邏輯,總會帶來高昂的成本。
不止如此,在網絡上進行的計算總量會受Gas 上限的影響。 Gas 上限是指在一個區塊中所有交易能消耗的Gas 總量。不幸的是,由於存在驗證者困境的問題,我們不能單純地增加Gas 上限;礦工一旦接收到一個剛剛形成的區塊,就需要先驗證這個區塊是否有效,才能開始尋找下一個區塊,但是這樣的驗證是免費的勞動。受利益驅動的礦工處在了一個兩難的境地:驗證這個區塊還是直接跳過它。而當區塊的Gas 上限增加時,這種困境的影響也隨之變大了。
所以說計算是昂貴且受限制的。
一級標題
一級標題
解決方案:鏈下的可驗證計算
當一個dApp(去中心化應用程序)想要運行昂貴或是超過Gas 上限的計算時,與其直接在以太坊上運行計算,不如交給Truebit 協議。
Truebit 合約
和Truebit 協議進行交互的API 十分簡單:它僅僅是Truebit 智能合約上的一個叫做createTask 的函數。
dApp 調用createTask 函數的過程需發送以下內容:
程序:程序代碼。 Turebit 使用的是WebAssembly 虛擬機技術,所以dApp 能直接將程序代碼的字節碼發送給WebAssembly 虛擬機,或者發送該程序代碼在IPFS 或其他基於內容尋址的系統上的哈希值。
圖片描述
圖片描述
一個dApp 創建了一個Truebit 任務
為了進一步說明這個流程,下面我們來看兩個例子。
Livepeer 是一個去中心化計算平台,它需要檢查轉碼器是否正常工作。於是它調用了createTask函數,將FFmpeg 作為程序、一段視頻作為輸入值發送給了該函數。
Aragon 是一個匿名組織的平台,它想進行計票的工作。在鏈上循環進行大批量的投票工作是十分昂貴的,而且如果計票的數量太多,Gas 上限就會阻礙這項工作的進行。於是Aragon 調用了Truebit 的createTask 函數,將計票函數作為程序、票數數組作為輸入值發送給了該函數。
這個函數會在Truebit 合約中生成一個新的任務。
Truebit 網絡
Truebit 是一個計算任務市場。
圖片描述
圖片描述
Truebit 礦工監聽計算任務
圖片描述
圖片描述
二級標題
二級標題
二級標題
圖片描述
二級標題
圖片描述
圖片描述
二級標題
二級標題
圖片描述
圖片描述
一個簡單的C 程序(圖左)及其編譯後的WebAssembly 文本形式(圖右)
挑戰者發起了驗證遊戲。
圖片描述
圖片描述
圖片描述
圖片描述
圖片描述
圖片描述
任務處理人和挑戰者進行驗證遊戲
現在輪到挑戰者在本地計算己方狀態的默克爾樹根,並且將結果和任務處理人的結果進行比較。
圖片描述
圖片描述
圖片描述
圖片描述
挑戰者詢問集合內第二個中點的狀態根
圖片描述
圖片描述
挑戰者查詢第三個中點的狀態根
圖片描述
圖片描述
圖片描述
圖片描述
鏈上WebAssembly 解釋器運行有爭議的指令
如果該狀態的默克爾根計算出來和任務處理人提供的狀態根不同,後者的押金就會被沒收。
整個過程就是這樣!
一級標題
一級標題
加密經濟學
Truebit 的激勵包括任務獎勵、押金、任務處理人和挑戰者之間的挑戰機制以及計算市場的經濟設計。
最近我們公佈了Truebit 代幣的升級計劃,以下是目前考慮使用的兩種解決方案:
激勵層一:強制出錯& 累積獎池
仔細地研究這個協議,一些敏銳的讀者可能會發現一個問題。
任務處理人明白自己的計算結果會受到檢查,而且如果出錯,會被沒收押金,因此不會作弊。長此以往,驗證者極難發現錯誤,無法獲得收入,最終在計算市場中消失。在驗證者消失之後,任務處理人就會開始作弊了。然後,驗證者會再度出現,把錯誤揪出來。
這個系統並不處在一種穩定的平衡之中,而是經常上下翻轉的。
為了解決這個問題,Truebit 在白皮書中提出了一種強制出錯(forced error)和累積獎池(jackpot)的概念。 Truebit 協議會在一定概率下強制任務處理人提供錯誤的計算結果。凡是發現這類錯誤並挑戰成功的驗證者都將自動收到一份累積獎金。這筆意外之財的獎額是從所有任務的獎勵中抽取的,因此十分巨大,為驗證者提供了可觀的預期收益。即使任務處理人總是提供正確的計算結果,驗證任務也是有利可圖的。
激勵層二:多個任務處理人和結對驗證挑戰
另一個替代方案來源於具體實施過程。任務處理人和驗證者總是做著一樣的工作:他們下載相同的程序,在本地運行,然後得到計算結果。那麼與其按照時序規則來規定一個任務處理人和多個挑戰者,為什麼不改變協議,允許每個人在同一時刻提交自己的計算結果呢?
智能合約會檢查所有的計算結果是否一致。如果一致,就認為結果是正確的。如果不一致,且產生了幾類計算結果的話,智能合約會組織不同類的任務處理人進行結對驗證。
一級標題
一級標題
圖片描述
圖片描述
Trubit 的模塊化架構
計算層:即WebAssembly 虛擬機(或者說是一個有限狀態機,就像我們在使用交互式scrypt 設計Doge-Ethereum 轉換橋中所用到的那樣)它需要鏈上和鏈下雙重的建設。
Truebit 的WebAssembly 解釋器具有確定性和可計量性,能夠生成內部狀態的默克爾樹。
爭議解決層: 這是一個兩方間的交互式驗證遊戲,包括任務處理人和驗證者之間多次的交互式問答。
結語
結語
結語
我們的工程方向目前聚焦於計算和爭議解決層。我們的調研主要針對激勵層和代幣機制。
最近我們公佈了針對Scrypt 驗證的Truebit 解決方案,它在Doge-Ethereum 轉換橋中得到了應用。
可以點擊這裡觀看我們的demo 視頻,或者在Github 上查閱我們的代碼。
我們的下一版視線中就會支持WebAssembly VM。
敬請期待!
原文鏈接: https://medium.com/truebit/truebit-the-marketplace-for-verifiable-computation-f51d1726798f
作者: Sina Habibian
翻譯&校對: 安仔Clint & 閔敏


