前言:按照計(jì)劃Filecoin將于12月11日測(cè)試網(wǎng)上線,而在2020年3月主網(wǎng)上線。作為去中心化存儲(chǔ)的項(xiàng)目,F(xiàn)ilecoin通過構(gòu)建存儲(chǔ)和檢索市場(chǎng),類似于存儲(chǔ)市場(chǎng)的去中心化的Airbnb,它能對(duì)中心化的存儲(chǔ)市場(chǎng)帶來沖擊和顛覆嗎?從技術(shù)上,它到底是什么?如何來解讀?
自2009年開啟去中心化的革新以來,涌現(xiàn)了很多有前途的項(xiàng)目,并且改變我們看待世界的看法和生活方式。其中之一是Protocol Labs,它催生了讓人驚嘆的項(xiàng)目如IPFS。
IPFS缺少可以幫助其實(shí)現(xiàn)大規(guī)模采用的激勵(lì)層,它的最終極目標(biāo)是取代HTTP。
這就是Filecoin的來歷。自發(fā)布以來,F(xiàn)ilecoin在社區(qū)中贏得了很多關(guān)注。但由于它的代幣經(jīng)濟(jì)(眾籌和投資策略),它失去了不少支持者。顯然,有些人似乎對(duì)它的計(jì)劃不滿。
網(wǎng)絡(luò)上有很多關(guān)于它的技術(shù)和代幣經(jīng)濟(jì)的信息,有些讓人困惑且不知所措。這里我們將在一個(gè)地方解決問題,告訴你什么是Filecoin。所以,現(xiàn)在系好安全帶,然后來一杯咖啡,這會(huì)是個(gè)很長(zhǎng)的歷程。
在我們深入分析其核心技術(shù)之前,我們先分析下當(dāng)前文件存儲(chǔ)市場(chǎng)的狀況。
文件存儲(chǔ)市場(chǎng)現(xiàn)狀
如今,Amazon S3是互聯(lián)網(wǎng)上文件存儲(chǔ)的巨頭。原因有很多:
· 非常便宜:每GB存儲(chǔ)0.023美元,每10,000次讀取請(qǐng)求0.04美分;
· 非???/p>
· 可靠:確實(shí),它發(fā)生過幾次大的宕機(jī),并導(dǎo)致互聯(lián)網(wǎng)的很大部分離線。但它仍然有99.9%的正常運(yùn)行時(shí)間。
· 高度可擴(kuò)展
提供很棒的開發(fā)者體驗(yàn)。它可輕松地與其他Amazon服務(wù)套件集成,以實(shí)現(xiàn)擴(kuò)展(例如CloudFront)
這個(gè)世界上,我們已經(jīng)擁有了如此出色的云存儲(chǔ)服務(wù),任何競(jìng)爭(zhēng)者都必須有更優(yōu)秀的服務(wù),或者至少達(dá)到同等的水平。就小規(guī)模的情況而言,去中心化網(wǎng)絡(luò)做得不出色。
但是,如果IPFS被大規(guī)模采用(比BitTorrent有更大規(guī)模的采用),那么,這可能會(huì)被證明是更好的互聯(lián)網(wǎng)版本,而且還將開啟全新的經(jīng)濟(jì)。
技術(shù)概述
有四個(gè)部分:
· Filecoin網(wǎng)絡(luò)如何運(yùn)作?
· Filecoin協(xié)議的深入研究
· 其他問題(白皮書上未涉及的)
· Filecoin協(xié)議的可能改進(jìn)
Filecoin網(wǎng)絡(luò)如何運(yùn)作?
在Filecoin中有3組用戶:客戶、存儲(chǔ)礦工以及檢索礦工。
客戶為存儲(chǔ)和檢索數(shù)據(jù)的服務(wù)付費(fèi)。他們可以從可用的服務(wù)提供商中進(jìn)行選擇。如果他們想存儲(chǔ)隱私數(shù)據(jù),他們需要先對(duì)其進(jìn)行加密,然后再提交給服務(wù)提供商。
存儲(chǔ)礦工存儲(chǔ)客戶的數(shù)據(jù)以獲得獎(jiǎng)勵(lì)。他們自行決定為存儲(chǔ)提供多少空間。在客戶和存儲(chǔ)礦工達(dá)成協(xié)議之后,礦工有義務(wù)持續(xù)提供其存儲(chǔ)數(shù)據(jù)的證明。每個(gè)人都可以查看該證明,并確保存儲(chǔ)礦工是可靠的。
檢索礦工根據(jù)客戶的請(qǐng)求給他們提供數(shù)據(jù)。他們可以從客戶或存儲(chǔ)礦工那里獲取數(shù)據(jù)。檢索礦工和客戶使用小額支付來交換數(shù)據(jù)和代幣:數(shù)據(jù)被切分成碎片,客戶為每個(gè)碎片支付少量代幣。檢索礦工也可以同時(shí)充當(dāng)存儲(chǔ)礦工。
最后,網(wǎng)絡(luò)代表了驗(yàn)證客戶和礦工行為的所有完整節(jié)點(diǎn)。這些節(jié)點(diǎn)對(duì)可用存儲(chǔ)進(jìn)行計(jì)數(shù)、檢查存儲(chǔ)證明、以及修復(fù)數(shù)據(jù)錯(cuò)誤。
本文中的一些術(shù)語:
碎片:碎片是指客戶存儲(chǔ)在去中心化存儲(chǔ)網(wǎng)絡(luò)中的數(shù)據(jù)的一部分。例如,可以將數(shù)據(jù)(可能是一張貓的圖片)有意地切分成許多碎片,且每個(gè)碎片可以被存儲(chǔ)進(jìn)入不同的存儲(chǔ)礦工中。
扇區(qū):扇區(qū)是存儲(chǔ)礦工向網(wǎng)絡(luò)提供的一些磁盤空間(可以認(rèn)為是唯一ID,它跟特定存儲(chǔ)礦工的磁盤空間的特定部分相關(guān)聯(lián))。礦工在他們的扇區(qū)中存儲(chǔ)客戶的數(shù)據(jù)碎片,并為其服務(wù)賺取代幣。為了存儲(chǔ)碎片,存儲(chǔ)礦工必須向網(wǎng)絡(luò)保證其扇區(qū)。
分配表:分配表是一種數(shù)據(jù)結(jié)構(gòu),它持續(xù)跟蹤碎片及其分配的扇區(qū)。分配表在分類賬上的每個(gè)區(qū)塊都會(huì)更新,其Merkle root會(huì)存儲(chǔ)在最新的區(qū)塊中。在實(shí)踐中,分配表用于保持DSN的狀態(tài),以便于在驗(yàn)證證明時(shí)快速查找。
訂單:訂單是請(qǐng)求或提供服務(wù)的聲明??蛻粝蚴袌?chǎng)提交買盤訂單以請(qǐng)求服務(wù)(其中包括在存儲(chǔ)市場(chǎng)請(qǐng)求數(shù)據(jù)存儲(chǔ),在檢索市場(chǎng)請(qǐng)求數(shù)據(jù)檢索),礦工則提交賣盤訂單以提供服務(wù)。
訂單簿:訂單簿是訂單集。Filecoin為存儲(chǔ)市場(chǎng)和檢索市場(chǎng)維持單獨(dú)的訂單。
保證:保證是向網(wǎng)絡(luò)提供存儲(chǔ)(尤其是扇區(qū))的承諾。存儲(chǔ)礦工必須向賬本(filecoin區(qū)塊鏈)提交他們的保證,以在存儲(chǔ)市場(chǎng)中接受訂單。保證包括包括扇區(qū)大小的保證以及其存入的質(zhì)押代幣。
用戶通過下訂單來表達(dá)其意向??蛻籼峤毁I盤訂單,并指定其想支付的價(jià)格。礦工提交賣盤訂單,并指定其想收取的價(jià)格。當(dāng)買盤和賣盤訂單匹配,客戶和礦工雙方簽署交易訂單協(xié)議并將其提交至區(qū)塊鏈。
買盤和賣盤訂單一起形成存儲(chǔ)市場(chǎng)(文件存儲(chǔ)的市場(chǎng))和檢索市場(chǎng)(文件檢索的市場(chǎng))。我們可以深入研究這些市場(chǎng),看看它們?nèi)绾芜\(yùn)作。
存儲(chǔ)市場(chǎng)
它是由網(wǎng)絡(luò)運(yùn)行的去中心化交易所,其中所有的賣盤和買盤都存在區(qū)塊鏈上,用于在Filecoin網(wǎng)絡(luò)上存儲(chǔ)數(shù)據(jù)。
客戶使用PUT協(xié)議向存儲(chǔ)訂單簿提交買盤訂單。客戶必須在指定的訂單中存入代幣,并指定他們想要存儲(chǔ)的復(fù)制數(shù)量??蛻艨梢蕴峤欢鄠€(gè)訂單,也可以在一個(gè)訂單中指定復(fù)制數(shù)量。更高的冗余度(藍(lán)狐筆記注:此處指更多的復(fù)制數(shù)量)能產(chǎn)生更高的存儲(chǔ)故障的容錯(cuò)性。
存儲(chǔ)礦工通過存入質(zhì)押代幣向網(wǎng)絡(luò)保證其存儲(chǔ),其保證通過Manage.PledgeSector在區(qū)塊鏈中進(jìn)行保證交易。質(zhì)押代幣會(huì)在存儲(chǔ)礦工愿意提供服務(wù)的期間內(nèi)存入質(zhì)押,如果礦工生成他們所承諾的數(shù)據(jù)存儲(chǔ)證明,代幣會(huì)被返回。
如果某些存儲(chǔ)證明失敗,存儲(chǔ)礦工則會(huì)損失與之成比例的抵押代幣。
一旦保證交易出現(xiàn)在區(qū)塊鏈上(因此在分配表中),礦工便可以在存儲(chǔ)市場(chǎng)中提供其存儲(chǔ):他們?cè)O(shè)置價(jià)格并通過Put.AddOrders向市場(chǎng)訂單簿提交賣盤訂單。
當(dāng)賣單和買單匹配(通過Put.MatchOrders),客戶將數(shù)據(jù)碎片發(fā)給礦工。
當(dāng)接收到碎片,礦工運(yùn)行Put.ReceivePiece。接收到數(shù)據(jù)之后,礦工和客戶都簽署交易訂單并將其提交到區(qū)塊鏈上(在存儲(chǔ)市場(chǎng)訂單簿)。
存儲(chǔ)礦工的存儲(chǔ)被劃分為多個(gè)扇區(qū),每個(gè)扇區(qū)包含分配給礦工的碎片。網(wǎng)絡(luò)通過分配表持續(xù)跟蹤每個(gè)存儲(chǔ)礦工的扇區(qū)。此時(shí)(當(dāng)交易訂單協(xié)議簽署),網(wǎng)絡(luò)將數(shù)據(jù)分配給礦工,并在分配表上留下一條記錄。
當(dāng)存儲(chǔ)礦工扇區(qū)充滿,該扇區(qū)密封。密封是緩慢和有序操作,它將扇區(qū)中的數(shù)據(jù)轉(zhuǎn)換為副本,該副本是跟存儲(chǔ)礦工的公鑰相關(guān)聯(lián)的數(shù)據(jù)的唯一物理副本。在復(fù)制證明(Proof-of-Replication)期間,密封是必要的操作。
當(dāng)為存儲(chǔ)礦工分配數(shù)據(jù)時(shí),他們必須重復(fù)生成復(fù)制證明以確保他們?cè)诖鎯?chǔ)數(shù)據(jù)。證明會(huì)發(fā)布到區(qū)塊鏈上,并由網(wǎng)絡(luò)對(duì)其進(jìn)行驗(yàn)證。
所有存儲(chǔ)分配對(duì)網(wǎng)絡(luò)中的所有參與者公開。每個(gè)區(qū)塊,網(wǎng)絡(luò)會(huì)檢查對(duì)每個(gè)分配任務(wù)所要求的證明是否存在,檢查它們是否有效,并采取對(duì)應(yīng)措施:
· 如果任何證明缺失或無效,網(wǎng)絡(luò)會(huì)拿走礦工的部分抵押代幣,以示懲罰;
· 如果大量的證明缺失或無效(由系統(tǒng)參數(shù)Δfault定義),網(wǎng)絡(luò)會(huì)認(rèn)為存儲(chǔ)礦工有故障,將訂單結(jié)算為失敗,然后重新將數(shù)據(jù)碎片作為新訂單引入市場(chǎng);
· 如果每個(gè)存儲(chǔ)礦工存儲(chǔ)該碎片都有故障,則該碎片會(huì)丟失,客戶會(huì)收到退款。
檢索市場(chǎng)
這是鏈外的點(diǎn)對(duì)點(diǎn)交易市場(chǎng),客戶和檢索礦工相互發(fā)現(xiàn)彼此。一旦客戶和礦工同意價(jià)格,他們便開始通過小額支付逐筆交易數(shù)據(jù)和代幣。
讓我們看看它是如何運(yùn)作的。
檢索礦工通過他們?cè)诰W(wǎng)絡(luò)中發(fā)布其賣盤訂單來聲明服務(wù):他們?cè)O(shè)置價(jià)格,并向市場(chǎng)的訂單簿添加賣盤訂單。
一旦訂單匹配,檢索礦工向客戶發(fā)送碎片(礦工發(fā)送部分?jǐn)?shù)據(jù),而客戶發(fā)送部分支付代幣,根據(jù)碎片進(jìn)行)。當(dāng)碎片收到,礦工和客戶會(huì)簽署協(xié)議訂單,并提交到區(qū)塊鏈上。
總結(jié)
下圖顯示發(fā)生在網(wǎng)絡(luò)上的所有活動(dòng)
對(duì)Filecoin協(xié)議的深入研究
Filecoin引入去中心化存儲(chǔ)網(wǎng)絡(luò)(DSN)的概念。DSN是一種描述獨(dú)立客戶和存儲(chǔ)提供商網(wǎng)絡(luò)的方案。DSN聚合由多個(gè)獨(dú)立存儲(chǔ)提供商提供的存儲(chǔ),并進(jìn)行自我協(xié)調(diào),以為客戶提供數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)檢索的服務(wù)。
協(xié)調(diào)是去中心化的,且不需要可信的第三方:這些系統(tǒng)的安全操作是通過協(xié)議達(dá)成的,這些協(xié)議可以協(xié)調(diào)和驗(yàn)證各方參與者的操作。(藍(lán)狐筆記注:跟Airbnb通過中心化公司的調(diào)度不同,它是無需信任第三方的)
DSN可以根據(jù)系統(tǒng)要求采用不同的策略進(jìn)行協(xié)調(diào),包括拜占庭協(xié)議、八卦協(xié)議、或CRDT。
DSN涉及3個(gè)功能的實(shí)現(xiàn):存入、獲取和管理?!按嫒搿痹试S客戶在唯一標(biāo)識(shí)符下存儲(chǔ)數(shù)據(jù)?!矮@取”允許客戶使用唯一標(biāo)識(shí)符檢索數(shù)據(jù)?!肮芾怼笔菍?duì)去中心化存儲(chǔ)市場(chǎng)網(wǎng)絡(luò)的管理,它測(cè)量可供出租的空間、審核存儲(chǔ)提供商、以及修復(fù)可能的數(shù)據(jù)故障。管理協(xié)議通常由存儲(chǔ)提供商和客戶或網(wǎng)絡(luò)的審核者一起運(yùn)行。
DSN有幾個(gè)屬性。前兩個(gè)是必須的。
· 數(shù)據(jù)完整性意味著客戶總是可以收到其存入的相同數(shù)據(jù),而存儲(chǔ)提供商如果提供錯(cuò)誤數(shù)據(jù),則無法讓客戶放心。
· 可檢索性則意味著客戶可以隨時(shí)間推移檢索其數(shù)據(jù)。
DSN的其他屬性:
公開可驗(yàn)證性,它則允許網(wǎng)絡(luò)中的任何人在無需知道數(shù)據(jù)的情況下驗(yàn)證數(shù)據(jù)是否被存儲(chǔ)。
可審核性,它允許驗(yàn)證數(shù)據(jù)是否在正確的時(shí)間段內(nèi)被存儲(chǔ)。
激勵(lì)兼容,它旨在獎(jiǎng)勵(lì)好的服務(wù)提供商,懲罰差的提供商。
實(shí)現(xiàn)機(jī)密性:它希望對(duì)其數(shù)據(jù)進(jìn)行私密存儲(chǔ)的客戶在其提交到網(wǎng)絡(luò)之前必須加密其數(shù)據(jù)。
容錯(cuò)能力
DSN應(yīng)該對(duì)兩種類型的可能錯(cuò)誤進(jìn)行容錯(cuò):
· 管理容錯(cuò)
這是在管理協(xié)議中由參與者(存儲(chǔ)提供商,客戶&審核員)導(dǎo)致的拜占庭容錯(cuò)。DSN機(jī)制依賴于它管理協(xié)議的容錯(cuò)。違反管理錯(cuò)誤的容錯(cuò)假設(shè)可能會(huì)損害系統(tǒng)的活性和安全。
例如,考慮一下DSB機(jī)制,其中的管理協(xié)議要求拜占庭協(xié)議(由于節(jié)點(diǎn)可以向?qū)徍苏咧e報(bào))來審核存儲(chǔ)提供商(如果他們根據(jù)約定的條件存儲(chǔ)應(yīng)存的所有數(shù)據(jù))。
在這樣的協(xié)議中,網(wǎng)絡(luò)從存儲(chǔ)提供商那里收取存儲(chǔ)證明,并運(yùn)行拜占庭協(xié)議來驗(yàn)證這些證明的有效性。如果拜占庭協(xié)議在總共n個(gè)節(jié)點(diǎn)中最多可以容忍f個(gè)錯(cuò)誤,那么,我們的DSN可以容忍f《 n/2個(gè)錯(cuò)誤節(jié)點(diǎn)。在違反這些假設(shè)的情況下,審核就會(huì)受到影響,從而導(dǎo)致系統(tǒng)變得無用。
· 存儲(chǔ)容錯(cuò)
存儲(chǔ)容錯(cuò)也是拜占庭容錯(cuò),它們會(huì)阻止客戶檢索數(shù)據(jù):即是說,存儲(chǔ)礦工丟失了數(shù)據(jù)碎片,檢索礦工停止提供服務(wù)。如果將其“存入”數(shù)據(jù)存儲(chǔ)在m個(gè)獨(dú)立的存儲(chǔ)提供商(總共n個(gè)),且它能容錯(cuò)最多f個(gè)拜占庭提供商,那么,成功的“存入”執(zhí)行是(f,m)-容錯(cuò)。參數(shù)f和m取決于協(xié)議的實(shí)現(xiàn);協(xié)議設(shè)計(jì)者可以修復(fù)f和m或者讓用戶作出選擇,而將Put(data)擴(kuò)展為Put(data,f,m)。
如果錯(cuò)誤的存儲(chǔ)提供商少于f個(gè),則對(duì)存儲(chǔ)數(shù)據(jù)的“獲取”執(zhí)行成功。例如,考慮下簡(jiǎn)單的方案,其中,將“存入”協(xié)議設(shè)計(jì)為每個(gè)存儲(chǔ)提供商都存儲(chǔ)所有數(shù)據(jù)。在這個(gè)方案中,m=n,且f=m-1。
那么,總是會(huì)f=m-1嗎?不是的。一些方案可以設(shè)計(jì)為使用糾刪碼,其中每個(gè)存儲(chǔ)提供商存儲(chǔ)特定部分的數(shù)據(jù),這樣在總共m個(gè)存儲(chǔ)提供商中需要x個(gè)來檢索數(shù)據(jù);在這種情況下,f=m-x。
共識(shí)算法
Filecoin的DSN協(xié)議可以在任何共識(shí)協(xié)議基礎(chǔ)上執(zhí)行,它允許驗(yàn)證Filecoin的證明。工作量證明機(jī)制通常需要解決謎題,它的答案無法重用或要求耗費(fèi)大量計(jì)算來尋找。(藍(lán)狐筆記注:也就是無記憶性,每次都重新開始)
· 不可重用的工作
大多數(shù)無須許可的區(qū)塊鏈要求礦工解決棘手的計(jì)算謎題,例如逆向哈希函數(shù)。通常,這些難題的答案都是毫無用處的,且沒有其他內(nèi)在價(jià)值,除了為網(wǎng)絡(luò)提供安全之外。一些區(qū)塊鏈,例如以太坊(執(zhí)行智能合約邏輯)和Primecoin(尋找新質(zhì)數(shù))試圖使用部分算力來完成有用的工作。
· 浪費(fèi)的工作
解決謎題可能在機(jī)器和能源消耗成本方面非常昂貴,尤其是,如果這些謎題僅僅依賴于算力。當(dāng)挖礦算法令人尷尬地并行時(shí),解決謎題的主要因素是計(jì)算能力。
· 嘗試減少浪費(fèi)
理想情況下,網(wǎng)絡(luò)的大部分資源應(yīng)該花費(fèi)在有用的工作上。一些努力也在嘗試要求礦工使用更加節(jié)能的解決方案。例如,Spacemint要求礦工用專用的磁盤空間而不是計(jì)算。盡管更加節(jié)能,這些磁盤依然是“浪費(fèi)”的,因?yàn)樗鼈兂錆M的是隨機(jī)的數(shù)據(jù)。
其他努力還包括使用基于PoS的傳統(tǒng)拜占庭協(xié)議來替代解決謎題的方法。其中,代幣質(zhì)押的利益相關(guān)者在系統(tǒng)中根據(jù)其成比例的代幣占比進(jìn)行下一個(gè)區(qū)塊的投票。
Filecoin礦工的工作,不是進(jìn)行浪費(fèi)的PoW證明計(jì)算,他們生成PoST(Proof-of-Spacetime),以參與共識(shí)。
· 有用的工作
我們認(rèn)為,如果除保護(hù)區(qū)塊鏈的安全之外,計(jì)算結(jié)果也對(duì)網(wǎng)絡(luò)有價(jià)值,那么,在共識(shí)協(xié)議中礦工做的工作是有用的。
Filecoin提出一種有用的工作共識(shí)協(xié)議,其中網(wǎng)絡(luò)選舉礦工生成新區(qū)塊的概率跟他們當(dāng)前在網(wǎng)絡(luò)中的存儲(chǔ)空間比例成正比。Filecoin協(xié)議的設(shè)計(jì)使得礦工寧愿投資于存儲(chǔ),而不是投資平行挖礦的算力。礦工提供存儲(chǔ),并重用計(jì)算,以證明數(shù)據(jù)正被存儲(chǔ),以參與共識(shí)。
建模挖礦能力
· 權(quán)力故障容錯(cuò)
權(quán)力故障容錯(cuò)是一種抽象形式,它根據(jù)參與者對(duì)協(xié)議結(jié)果的影響力來重構(gòu)拜占庭容錯(cuò)。
每個(gè)參與者控制一些權(quán)力,其中n是網(wǎng)絡(luò)中的總權(quán)力,f是部分權(quán)力,由錯(cuò)誤方或惡意行為者控制。
· Filecoin中的權(quán)力
在Filecoin中,礦工M在時(shí)間t的權(quán)力p是M的存儲(chǔ)分配的總和。M的影響力I是M的權(quán)力占整個(gè)網(wǎng)絡(luò)全部權(quán)力的比例。在Filecoin中,權(quán)力具有如下屬性:
· 公開
網(wǎng)絡(luò)中當(dāng)前在用的存儲(chǔ)總量是公開的。通過讀取區(qū)塊鏈,任何人都能計(jì)算每個(gè)礦工的存儲(chǔ)分配,因此,任何人都可以在任何時(shí)間點(diǎn)計(jì)算每個(gè)礦工的權(quán)力和網(wǎng)絡(luò)中的總權(quán)力。(藍(lán)狐筆記注:這里的權(quán)力,類似于其網(wǎng)絡(luò)中的影響力,能直接用于選舉生成區(qū)塊的礦工。)
· 可公開驗(yàn)證
對(duì)于每個(gè)存儲(chǔ)分配,礦工要求生成PoST時(shí)空證明(Proof-of-Spacetime),證明其正在提供的服務(wù)。通過讀取區(qū)塊鏈,任何人都可以驗(yàn)證一個(gè)礦工聲稱的權(quán)力是否正確。
· 變量
在任何時(shí)間點(diǎn),通過承諾新的扇區(qū)并填充扇區(qū),礦工可以向網(wǎng)絡(luò)增加新的存儲(chǔ)。通過這種方式,礦工可以隨著時(shí)間改變其擁有的權(quán)力比例。
我們還需要一種機(jī)制來防止三種類型的攻擊,惡意的礦工能夠利用他們并無真實(shí)提供的存儲(chǔ)來獲得獎(jiǎng)勵(lì):女巫攻擊(Sybil Attack)、外包攻擊(Outsourcing Attack)、生成攻擊(Generation Attack)。
· 女巫攻擊
通過創(chuàng)建多個(gè)女巫身份,惡意礦工可以假裝其存儲(chǔ)比實(shí)際更多的副本(并由此獲得報(bào)酬),但實(shí)際上只存儲(chǔ)數(shù)據(jù)一次。
· 外包攻擊
通過依賴于從其他存儲(chǔ)提供商那里快速獲取數(shù)據(jù),惡意礦工承諾存儲(chǔ)超出其實(shí)際存儲(chǔ)能力的數(shù)據(jù)。
· 生成攻擊
惡意礦工可以聲稱存儲(chǔ)了大量的數(shù)據(jù),而他們卻使用一個(gè)小程序按需求高效地生成了這些數(shù)據(jù)。如果程序小于所聲稱的存儲(chǔ)數(shù)據(jù),這會(huì)增加惡意礦工在Filecoin中贏得區(qū)塊獎(jiǎng)勵(lì)的概率,這個(gè)可能性與礦工當(dāng)前使用中的存儲(chǔ)成正比。
存儲(chǔ)提供商必須說服他們的客戶,他們已經(jīng)存儲(chǔ)了他們付費(fèi)存儲(chǔ)的數(shù)據(jù)。實(shí)際上,存儲(chǔ)提供商會(huì)生成存儲(chǔ)證明(PoS),以供區(qū)塊鏈網(wǎng)絡(luò)或客戶自己進(jìn)行驗(yàn)證。
為了讓存儲(chǔ)行為公開可驗(yàn)證,F(xiàn)ilecoin引入了兩種共識(shí)算法:Proof-of-Replication(PoRep)和Proof-of-Spacetime(PoSt),也就是復(fù)制證明和時(shí)空證明。
復(fù)制證明(PoRep)是一種新穎的存儲(chǔ)證明,它允許服務(wù)器(證明者P)說服用戶(驗(yàn)證者V)某些數(shù)據(jù)D已經(jīng)被復(fù)制到其自己的唯一專用物理存儲(chǔ)中。
我們的機(jī)制是交互式的協(xié)議,其中證明方P:
(a)承諾存儲(chǔ)某些數(shù)據(jù)D的n個(gè)不同副本(物理上獨(dú)立的副本)
(b)說服驗(yàn)證者V相信,P確實(shí)通過質(zhì)詢/響應(yīng)協(xié)議存儲(chǔ)了每個(gè)副本。PoRep改進(jìn)了PoR和PDP機(jī)制,防止女巫攻擊、外包攻擊以及生成攻擊。
Proof-of-Spacetime(時(shí)空證明):PoS(存儲(chǔ)證明)機(jī)制允許用戶檢查存儲(chǔ)提供商是否在質(zhì)詢期間存儲(chǔ)外包數(shù)據(jù)。我們?nèi)绾问褂肞oS(存儲(chǔ)證明)機(jī)制來證明某些數(shù)據(jù)在一段時(shí)間內(nèi)被存儲(chǔ)了呢?
這個(gè)問題的自然答案是要求用戶反復(fù)地(例如每分鐘)向存儲(chǔ)提供商發(fā)送質(zhì)詢。然而,每次交互所要求的通信復(fù)雜度可能會(huì)是成為像Filecoin這樣系統(tǒng)的瓶頸,其中存儲(chǔ)提供商需要將其證明提交到區(qū)塊鏈上。
為了解決這個(gè)問題,我們引入新的證明Proof-of-Spacetime,也就是時(shí)空證明,其中驗(yàn)證者可以檢查證明者是否在一段時(shí)間內(nèi)存儲(chǔ)她/他的外包數(shù)據(jù)。
直覺是要求證明者
· 生成有次序的存儲(chǔ)證明(Filecoin中是復(fù)制證明),作為確定時(shí)間的方式。
· 遞歸組合執(zhí)行以生成簡(jiǎn)短證明
證明者從驗(yàn)證者那里收到隨機(jī)質(zhì)詢(c)),并為指定迭代次數(shù)t使用證明的輸出作為另一個(gè)的輸入,依次生成復(fù)制證明。因此,確保完成的所有工作都是可重用的(如上所述)。
PoSt & PoRep使用zk-SNARKS,使得證明很簡(jiǎn)潔且易于驗(yàn)證。
智能合約
智能合約支持Filecoin用戶編寫有狀態(tài)的程序,這些程序可以花費(fèi)代幣、在市場(chǎng)中請(qǐng)求數(shù)據(jù)的存儲(chǔ)/檢索、驗(yàn)證存儲(chǔ)證明。用戶可以通過發(fā)送交易到分類賬與智能合約進(jìn)行交互,這些交易可以觸發(fā)合約中的功能調(diào)用。我們擴(kuò)展了智能合約系統(tǒng),以支持Filecoin的特定操作,例如市場(chǎng)操作、證明驗(yàn)證。
Filecoin支持特定的數(shù)據(jù)存儲(chǔ)合約,以及更通用的智能合約。
· 文件合約
我們?cè)试S用戶對(duì)他們提供存儲(chǔ)服務(wù)的條件進(jìn)行編程。有幾個(gè)例子值得一提:
· 與礦工簽約
客戶可提前指定提供服務(wù)的礦工,而無需參與市場(chǎng)。
· 付款策略
客戶可以為礦工設(shè)計(jì)不同的獎(jiǎng)勵(lì)策略,例如合約可以設(shè)置為隨著時(shí)間推移向礦工支付越來越高的費(fèi)用,或者合約可以設(shè)置可信預(yù)言機(jī)告知的存儲(chǔ)價(jià)格。
· 票證服務(wù)
合約可以允許礦工存放代幣,以代表其用戶支付存儲(chǔ)/檢索的費(fèi)用。
· 更多復(fù)雜的操作
客戶可以創(chuàng)建允許數(shù)據(jù)升級(jí)的合約。
· 智能合約
用戶可以將程序與其交易相關(guān)聯(lián),就像其他的系統(tǒng)(如以太坊)那樣,這些系統(tǒng)不直接依賴于存儲(chǔ)的使用。我們可以預(yù)見到這些應(yīng)用:DNS(藍(lán)狐筆記注:去中心化的域名系統(tǒng))、資產(chǎn)跟蹤以及眾籌平臺(tái)。
跨鏈交互
橋梁是旨在連接不同區(qū)塊鏈的工具。我們計(jì)劃支持跨鏈交互,以將Filecoin存儲(chǔ)引入其他基于區(qū)塊鏈的平臺(tái),并將其他平臺(tái)的功能引入Filecoin。
· 其他平臺(tái)上的Filecoin:其他區(qū)塊鏈系統(tǒng),如比特幣、Zcash、尤其是以太坊和Tezos,允許開發(fā)者編寫智能合約;然而,這些平臺(tái)提供很少的存儲(chǔ)能力,且成本極高。
我們計(jì)劃提供一個(gè)橋梁,為這些平臺(tái)提供存儲(chǔ)和檢索的支持。我們注意到IPFS已經(jīng)被好幾個(gè)智能合約使用,作為引用和分發(fā)內(nèi)容的一種方式。增加對(duì)Filecoin的支持將允許這些系統(tǒng)可以保證存儲(chǔ)IPFS內(nèi)容,以交換Filecoin代幣。
· Filecoin中的其他平臺(tái):我們計(jì)劃提供橋梁,以將其他區(qū)塊鏈服務(wù)與Filecoin連接起來。例如,與zcash集成將允許發(fā)送存儲(chǔ)隱私數(shù)據(jù)的請(qǐng)求。
其他一些問題
這里我們列出一些白皮書上沒有充分討論的潛在問題:
· 檢索市場(chǎng)的可擴(kuò)展性
小額支付系統(tǒng)(檢索市場(chǎng))在檢索協(xié)議上產(chǎn)生了許多開銷。為了達(dá)到與如今中心化基礎(chǔ)設(shè)施相匹配的檢索速度,F(xiàn)ilecoin和IPFS需要大量的采用,以創(chuàng)建密集的狀態(tài)通道網(wǎng)絡(luò)。(藍(lán)狐筆記注:如果檢索市場(chǎng)規(guī)模很大,那么其小額支付需要較高的吞吐量支持)
· 審查制度(非法內(nèi)容)
正如我們過去在Napster和the Priate Bay(海盜灣)所看到的一樣,缺乏審查將最終導(dǎo)致網(wǎng)絡(luò)上產(chǎn)生非法內(nèi)容,將暗網(wǎng)帶到明面上??赡艿慕鉀Q方案是,基于AI驅(qū)動(dòng)的協(xié)議能夠隨著時(shí)間推移進(jìn)行學(xué)習(xí),且能自動(dòng)檢測(cè)非法內(nèi)容,并采取必要的行動(dòng)。
但為了讓網(wǎng)絡(luò)成為共同治理的網(wǎng)絡(luò),該協(xié)議需要由用戶自己來管理(引入拜占庭行為),以決定該內(nèi)容是否需要被采取措施。
· 開源?
從上述問題推斷,也有可能剛開始時(shí)為了保護(hù)網(wǎng)絡(luò)免遭非法內(nèi)容侵?jǐn)_,它可能由Protocol Labs管理。這可能意味著是一個(gè)封閉的軟件,可以免費(fèi)使用,但不能公開用于修改。
但即便他們這么做,也可能無濟(jì)于事。因?yàn)槿藗兛梢栽谄渖厦孢\(yùn)行未經(jīng)審查的版本(通過修改原始軟件)。
· 代幣波動(dòng)
考慮到Filecoin將會(huì)在交易所上市這一點(diǎn),在這種市場(chǎng)中,到底小額支付系統(tǒng)(存儲(chǔ)和檢索會(huì)設(shè)計(jì)小額支付)有多大可行性?(藍(lán)狐筆記注:作者的意思是說,F(xiàn)ilecoin代幣在市場(chǎng)上是波動(dòng)的,很難作為小額支付的貨幣,需要穩(wěn)定幣才行)。
從當(dāng)前的市場(chǎng)成熟度和去中心化領(lǐng)域來看,代幣更像是投資工具,而不是效用工具。這也是我們今天沒有看到基于代幣的項(xiàng)目被太多采用的最大原因之一。
Filecoin協(xié)議改進(jìn)的可能性
這里我們列出Filecoin協(xié)議中可能的改進(jìn)。
· Tahor-LAFS加密方案
當(dāng)增加價(jià)值時(shí),客戶首先將其加密(用對(duì)稱密鑰),然后將其分成可管理大小的份,之后Erasure Code以實(shí)現(xiàn)冗余。(藍(lán)狐筆記注:EC編碼,也稱為糾刪碼,它可以將n份原始數(shù)據(jù),增加m份數(shù)據(jù),并能通過n+m份中的任意n份數(shù)據(jù),還原為原始數(shù)據(jù))。
因此,例如,“3份中的2份”糾刪碼意味著總共有3份,其中任何2份都足以重建原始數(shù)據(jù)。這些份可以成為共享,存儲(chǔ)在特定的存儲(chǔ)節(jié)點(diǎn)上。存儲(chǔ)節(jié)點(diǎn)是共享的數(shù)據(jù)庫(kù);用戶不依賴于它們來保證數(shù)據(jù)的完整性或機(jī)密性。
最終,加密密鑰和一些有助于發(fā)現(xiàn)正確存儲(chǔ)節(jié)點(diǎn)的信息成為“功能字符串”的部分。重要的是,功能字符串對(duì)于從Grid中檢索值既是必須的又是足夠的。如果太多的節(jié)點(diǎn)變得不可用或離線,你無法獲得檢索足夠的共享,這種情況下它會(huì)失敗。
· 有寫入、讀取以及驗(yàn)證能力
可以離線使用一種“權(quán)威性較低”的能力,也就是說,具有寫入能力的人可以將其轉(zhuǎn)換為讀取能力(無需與服務(wù)器交互)。
驗(yàn)證能力可以確認(rèn)值的存在和完整性,但不能解密內(nèi)容。可以將可變和不可變的值都放入Grid中。當(dāng)然,不可變的值是不可能有寫入功能的。
來源: 藍(lán)狐筆記?
評(píng)論