深度研究可以分析去中心化存儲項目一定會存在的問題尼夺。
FileCoin是一種協(xié)議代幣康二。
- 區(qū)塊被存儲數(shù)據(jù)的礦工所挖
- 區(qū)塊鏈運行在“時空證明”的機制上
- FileCoin不依賴于單個存儲服務商
- 提供存儲服務和數(shù)據(jù)檢索服務
FileCoin的使用方式
- 用戶為數(shù)據(jù)存儲和檢索支付代幣
- 存儲礦工通過提供存儲空間賺取代幣
- 檢索礦工通過提供數(shù)據(jù)服務賺取代幣
FileCoin協(xié)議的四個組件
- 去中心化存儲網(wǎng)絡
- 新型的存儲證明
- 可驗證市場
- 有效的工作量證明
協(xié)議概述
構(gòu)建于區(qū)塊鏈擁有原生代幣的去中心化存儲網(wǎng)絡
網(wǎng)絡的構(gòu)建需要有協(xié)議的存在莫换,這樣才能完成數(shù)據(jù)的傳輸瘦馍。中心化存儲模式中洞豁,需要依賴HTTP協(xié)議通過存儲市場和檢索市場來完成客戶請求
現(xiàn)在所有的人都在想著挖IPFS的代幣來賺錢犀变,可是誰會來存儲數(shù)據(jù)呢?這有點像幣乎的羊毛黨罗标。
時空證明和復制證明來確保數(shù)據(jù)被正確存儲
礦工參與到新區(qū)塊的鍛造庸队,礦工對區(qū)塊鏈的影響與他們在當前網(wǎng)絡中的存儲使用量成正比
去中心化存儲網(wǎng)絡
- 多個獨立存儲提供商提供存儲
- 自我協(xié)調(diào)的提供存儲數(shù)據(jù)和檢索數(shù)據(jù)服務
- 擁有不同的協(xié)調(diào)策略
DSN方案包括:PUT,GET,MANAGE。DSN方案(Π)必須保證數(shù)據(jù)的完整性和可恢復性闯割。
管理故障定義為管理協(xié)議的參與者引起的拜占庭故障彻消。一個DSN方案依賴于它的基礎管理協(xié)議的故障容錯。管理故障會影響系統(tǒng)的活躍度和安全性宙拉。
DSN的兩個屬性:數(shù)據(jù)完整性和可恢復性宾尚。
數(shù)據(jù)完整性:在存儲數(shù)據(jù)之后,你將獲得一個key鼓黔,通過key可以提取你的數(shù)據(jù)央勒,在提取的過程中,其他人不可能實現(xiàn)對數(shù)據(jù)的篡改澳化。
可恢復性:可以通過key恢復你存儲的數(shù)據(jù)崔步。
DSN的其他屬性:公開可驗證性、可審查性缎谷、激勵兼容性井濒。
公開可驗證性:系統(tǒng)中會有專門負責驗證數(shù)據(jù)有效性的驗證者,這些驗證者會從數(shù)據(jù)存儲服務商手中獲得一份證明列林,通過這份證明可以判斷數(shù)據(jù)存儲服務商存儲的數(shù)據(jù)是否完整瑞你、有效。
可審查性:審查是否在某個時間存儲過數(shù)據(jù)希痴。
激勵兼容性:有效完成存儲和檢索服務的節(jié)點可以獲得獎勵者甲,對系統(tǒng)有害的節(jié)點將受到懲罰。
復制證明與時空證明砌创。
通過復制證明和時空證明虏缸,可以讓存儲數(shù)據(jù)的人相信自己的數(shù)據(jù)已經(jīng)被存儲。
為什么需要設置復制證明和時空證明嫩实?
在數(shù)據(jù)存儲中刽辙,有一種方案叫存儲證明[POS],可以讓存儲數(shù)據(jù)的客戶做兩件事情:
- 隨時驗證自己的數(shù)據(jù)是否依然被存儲
- 隨時驗證自己數(shù)據(jù)的完整性
但是上面的方案無法避免以下三種攻擊:
女巫攻擊:作惡礦工可能通過創(chuàng)建多個女巫身份假裝物理存儲很多副本(從中獲取獎勵),但實際上只存儲一次甲献。
外包攻擊:依賴于可以快速從其他存儲提供商獲取數(shù)據(jù)宰缤,作惡礦工可能承諾能存儲比他們實際物理存儲容量更大的數(shù)據(jù)。
代攻擊:作惡礦工可能宣稱要存儲大量的數(shù)據(jù)晃洒,相反的他們使用小程序有效地生成請求慨灭。如果這個小程序小于所宣稱要存儲的數(shù)據(jù),則作惡礦工在Filecoin獲取區(qū)塊獎勵的可能性增加了球及,因為這是和礦工當前使用量成正比的缘挑。
代攻擊就是為了獲得更多的獎勵,欺騙系統(tǒng)說自己存儲了大量數(shù)據(jù)在系統(tǒng)中桶略,但實際上存儲的數(shù)據(jù)要少很多语淘。例如攻擊者告訴系統(tǒng)存儲了100G的數(shù)據(jù)在系統(tǒng)中,但是實際只存儲了1G數(shù)據(jù)际歼,這樣挖礦就可以用很少的存儲空間惶翻,獲得更多的獎勵。
復制證明重點在于存儲副本鹅心,時空證明重點在于證明是否有存儲數(shù)據(jù)吕粗。
FileCoin DSN的構(gòu)建。
環(huán)境:參與者+網(wǎng)絡N+賬本+市場
參與者分為:客戶+存儲礦工+檢索礦工
- 客戶在網(wǎng)絡中進行數(shù)據(jù)存儲和檢索時旭愧,需要向礦工支付費用颅筋。
- 存儲礦工為網(wǎng)絡提供數(shù)據(jù)存儲宙暇。存儲礦工通過“時空證明”來證明已經(jīng)存儲好了數(shù)據(jù)。作為存儲礦工需要提交抵押品议泵,當存儲礦工作出有害系統(tǒng)的事情時占贫,抵押品將會被沒收或者部分沒收。
- 檢索礦工為網(wǎng)絡提供數(shù)據(jù)檢索服務先口。檢索礦工可以直接從客戶或者從檢索市場賺取收益型奥。
網(wǎng)絡N:運行FileCoin全節(jié)點的用戶細化為一個抽象實體:網(wǎng)絡。這些網(wǎng)絡將作為運行管理協(xié)議的中介碉京。這些眾多的網(wǎng)絡整體被稱作網(wǎng)絡N厢汹。
賬本:FileCoin的協(xié)議適用于基于賬本的貨幣。
市場:存儲市場和檢索市場谐宙。這是兩個去中心化的交易市場烫葬,當客戶提交的訂單與礦工提交的訂單相匹配的時候,網(wǎng)絡中的管理協(xié)議將幫助雙方自動完成交易凡蜻。
數(shù)據(jù)結(jié)構(gòu):碎片+扇區(qū)+分配表+訂單+訂單簿+抵押
- 碎片:假設你是客戶厘灼,你在網(wǎng)絡中存儲的數(shù)據(jù)將會被分成不同的片段。這些片段在系統(tǒng)中被稱作碎片咽瓷。
- 扇區(qū):礦工向系統(tǒng)提供的磁盤空間设凹。
- 分配表:可以跟蹤碎片和其分配的扇區(qū)。你的數(shù)據(jù)是在哪里存儲的茅姜,可以通過分配表快速的找到闪朱,這就像是一個關(guān)系映射表。
- 訂單:客戶為了存儲和檢索數(shù)據(jù)提交的請求钻洒,礦工們?yōu)榱颂峁┓仗峤坏膱髢r請求奋姿。
- 訂單簿:訂單的集合。
- 抵押:為了保證服務可靠可信素标,礦工必須在系統(tǒng)中提供抵押品称诗。
協(xié)議:客戶生命周期+挖礦周期+網(wǎng)絡周期
- 客戶生命周期:存儲數(shù)據(jù)+檢索數(shù)據(jù)。存儲數(shù)據(jù)時头遭,客戶可以選擇存儲數(shù)據(jù)的物理副本的數(shù)量寓免,副本越多存儲的安全性越高。檢索數(shù)據(jù)時计维,當檢索市場有滿足要求的訂單袜香,客戶會收到來自礦工的碎片,之后雙方進行簽名鲫惶,提交到區(qū)塊鏈蜈首,進行交易確認。
- 挖礦周期
存儲礦工
抵押->接收訂單->密封->證明
檢索礦工
收到訂單->發(fā)送
- 網(wǎng)絡周期:分配
當出現(xiàn)問題時,系統(tǒng)會嘗試修復或者重新分配欢策。當?shù)V工的證明丟失或者失效將會扣除抵押品吆寨;大量證明丟失或失效,會認定訂單失效踩寇,網(wǎng)絡會重新創(chuàng)建訂單啄清;如果接受該訂單的所有數(shù)據(jù)存儲礦工都出現(xiàn)錯誤,則認定數(shù)據(jù)丟失姑荷,訂單取消,客戶將收到退款缩擂。
擔保和要求
完整性:客戶存儲完數(shù)據(jù)之后鼠冕,會獲得一個哈希值,我們可以把它看作是一把鑰匙胯盯,通過這把鑰匙我們可以找到自己的數(shù)據(jù)懈费,當從礦工那里收到返回來的數(shù)據(jù)時,也可以通過這把鑰匙來驗證數(shù)據(jù)的完整性博脑。
可恢復性:當你在FileCoin中存儲數(shù)據(jù)時憎乙,你的數(shù)據(jù)將會擁有多個副本。如果有礦工下線或者消失叉趣,會有部分副本丟失泞边,但是依然在網(wǎng)絡中的副本,將會保證你的數(shù)據(jù)依然可以完整的恢復疗杉。
公開可驗證和可審核性:當需要審核存儲的數(shù)據(jù)是否依然有效時阵谚,你可以單獨的完成審核過程,并不需要下載你的數(shù)據(jù)烟具。審核依賴的是礦工提交的存儲證明梢什,這些證明存儲在區(qū)塊鏈中,所有操作痕跡都公開可查朝聋。
激勵兼容性:礦工按照協(xié)議完成存儲和檢索將會得到獎勵嗡午,如果做出對系統(tǒng)有害的事情,將會受到懲罰冀痕。
保密性:當你存儲的數(shù)據(jù)需要實現(xiàn)隱私時荔睹,必須自己在存儲之前進行加密。
FileCoin的存儲和檢索市場
- 驗證市場
為什么需要驗證市場言蛇?
去中心化的參與者必須能夠在買家和賣家間驗證交易应媚。去中心化模式下,沒有人來管理交易市場猜极,訂單的匹配中姜、結(jié)算、有效性,通過驗證市場可以自動完成丢胚,并得到保障翩瓜。
- 存儲市場
需求
鏈式訂單簿:訂單會被添加到FileCoin區(qū)塊鏈。這樣做有兩個好處:
1.存儲礦工的訂單全部公開携龟,最便宜的訂單會被更多的人知道兔跌,客戶可以做出最好的選擇;
2.客戶訂單提交給網(wǎng)絡峡蟋,當客戶的要求被滿足的時候坟桅,市場會根據(jù)新的交易價格,做出新的調(diào)整蕊蝗。
參與者投入資源:存儲礦工需要提供與其上報的存儲容量相對應的抵押品仅乓,在礦工做出違反系統(tǒng)規(guī)則的時候,會扣除抵押品作為懲罰蓬戚】溟梗客戶需要提前充值一定數(shù)量的資金,從而保證在結(jié)算時的資金子漩。
故障自處理:訂單會在確認礦工提供的證明有效的情況下豫喧,完成訂單的結(jié)算。
數(shù)據(jù)結(jié)構(gòu)
put訂單:有三種類型的訂單:存儲礦工創(chuàng)建詢價訂單幢泼,客戶創(chuàng)建出價訂單紧显,當雙發(fā)達成一致時,共同創(chuàng)建交易訂單缕棵。
put訂單簿:存儲市場的訂單簿是目前有效和開放的詢價鸟妙、出價、交易訂單的集合挥吵。
存儲市場協(xié)議
訂單匹配:客戶和存儲礦工提交交易訂單到訂單簿重父,完成匹配之后,客戶將數(shù)據(jù)碎片發(fā)送給礦工忽匈,雙方完成交易之后房午,將交易簽名并提交到訂單簿。
結(jié)算:存儲礦工的扇區(qū)用完之后丹允,要進行密封郭厌,后續(xù)會不間斷的向網(wǎng)絡提交存儲證明,證明存儲的數(shù)據(jù)依然存在并有效雕蔽,網(wǎng)絡會根據(jù)存儲證明進行驗證或者故障修復折柠。
檢索市場
檢索市場允許客戶端請求檢索特定的數(shù)據(jù),由檢索礦工提供這個服務批狐。
鏈下訂單簿:客戶為了檢索所提供的訂單扇售,會采用非區(qū)塊鏈的方式來實現(xiàn)前塔,因為區(qū)塊鏈的使用會導致檢索瓶頸的出現(xiàn)。
無信任方檢索:在沒有信任的環(huán)境中承冰,客戶想要完成數(shù)據(jù)的檢索华弓,礦工想要收到付款,是不太可能的困乒,因為可能出現(xiàn)欺詐行為寂屏。為了解決這個問題,當客戶檢索到自己想要的數(shù)據(jù)時娜搂,礦工會以碎片的形式依次將完整的數(shù)據(jù)發(fā)送給客戶迁霎,客戶會在收到碎片的過程中逐步的向礦工付款,當中途發(fā)生意外時百宇,交易將會被終止考廉。
支付通道:檢索礦工只有在收到付款的時候,才開始向客戶發(fā)送數(shù)據(jù)恳谎,但是區(qū)塊鏈上的支付會產(chǎn)生瓶頸芝此,所以快速有效的鏈下支付是唯一的選擇憋肖。當出現(xiàn)糾紛時因痛,可能會用到區(qū)塊鏈。
數(shù)據(jù)結(jié)構(gòu)
獲取訂單:客戶端創(chuàng)建的出價單岸更,檢索礦工創(chuàng)建的詢價單鸵膏,存儲礦工和客戶端達成的交易訂單。
獲取訂單簿:是有效的和公開出價訂單怎炊、詢價訂單谭企、交易訂單的集合。每個用戶的訂單視圖是不一樣的评肆,因為每個用戶只關(guān)心自己想要的數(shù)據(jù)债查。
檢索市場協(xié)議:訂單匹配+結(jié)算
訂單匹配:客戶端和檢索礦工通過廣播的方式,將訂單提交給訂單簿瓜挽,
結(jié)算:檢索礦工在向客戶逐步發(fā)送碎片的時候盹廷,每一個碎片的成功交付,檢索礦工都會收到一個收據(jù)久橙,礦工向區(qū)塊鏈出示收據(jù)俄占,從而獲得獎勵。
有用工作共識
常見的共識機制淆衷,例如pow缸榄,存在著大量的能量浪費,所做的工作并不能重復使用祝拯。有用的工作共識旨在解決計算浪費甚带,將之前所做工作進行重復使用。
FileCoin共識
公開:網(wǎng)絡中當前正在使用的存儲總量是公開的。
可公開驗證:每個存儲任務欲低,礦工都需要生成“時空證明”辕宏,從而可以驗證其是否可以持續(xù)提供服務。
變量:礦工可以增加存儲空間或者補充的抵押品來增加自己的功率砾莱。
功率會計和時空證明
全節(jié)點驗證:全節(jié)點可以驗證礦工生成的每一個時空證明瑞筐。
簡單存儲驗證
使用功率達成共識
預計將會在現(xiàn)有的權(quán)益證明共識機制上進行擴展,讓FileCoin的共識策略更加的多樣化腊瑟,權(quán)益證明共識機制中的權(quán)益將會替換為分配的存儲聚假。FileCoin中的共識機制暫時可以叫做預期共識,每個礦工在選舉中獲勝的概率和他們提供的存儲成正比例闰非。
FileCoin智能合約
FileCoin中增加了智能合約來支持特定的操作膘格。
與其他系統(tǒng)集成