讓Filecoin脫穎而出的那些“法寶”……

和其它大型技術創新一樣,區塊鏈是我們已經使用和信任了幾十年的幾種成熟技術的結合體。“共識機制”自上世紀70年代開始研究,並在90年代發展成為一種打擊垃圾郵件的工具,它讓分佈式系統中的用戶無需中央仲裁者就能達成協議。

Filecoin是建立在空間證明變化上的。它還與權益證明相關,因為權益關係不只是將通證作為權益關係,而是以已證明的存儲量存在,它決定了礦工出塊的概率。在構建分佈式存儲網絡時,我們著手構建一個證明結構。在這個結構中,共識是通過產生數據存儲來實現的。隨著testnet的發佈,我們將推出一組新的基於存儲的證明系統,以實現去中心化的共識。

讓Filecoin脫穎而出的那些“法寶”……


當我們在2017年宣佈Filecoin的時候,我們開始著手創建一個建立在強大的去中心化市場上的去中心化存儲網絡。為了培育這個市場,分散市場職能,鼓勵早期礦工的參與,我們創建了一個加密通證,這是Filecoin共識的副產品。此通證是在有用的工作(即有用的複製證明和時空證明)的基礎上生成的。

Juan Benet最近在Zero Knowledge播客的採訪中探索了Filecoin證明結構的歷史。以下是這次採訪的摘錄:

Filecoin以多種不同的方式推動區塊鏈的發展。

複製證明是一個證明系統,用來驗證存儲礦工確實擁有他們所存儲的內容,並且沒有作弊。但你如何向網絡證明,你確實在存儲一些東西,而不是撒謊?

Filecoin還試圖解決其它一些有趣的問題,包括更高的吞吐量一致性和可互操作、內容可尋址的鏈接數據結構等。

說到底,這一切都是為了利用地球上所有未使用的存儲空間,用激勵措施來組織它們,建立最強大的計算存儲網絡,並壓低這種存儲的價格。

讓Filecoin脫穎而出的那些“法寶”……


Filecoin對複製的證明既是對存儲的證明,也是對空間的證明,兩者略有不同。在Filecoin中,數據單元存儲在所謂的扇區中。你會以緩慢的編碼過程將磁盤上扇區中的特定數據密封起來,並將驗證提交給區塊鏈。密封是一項耗費大量精力的工作。想要偽造這樣的證明,你必須使用客戶端存儲在Filecoin上的原始數據來完成特定的工作。

證明系統是一種密碼協議,其中有證明者和驗證者——證明者將向驗證者證明一些東西。例如,在PoW中,證明者需要做了一些計算,或者花費了一些計算週期。他們的典型證明就是哈希。

讓Filecoin脫穎而出的那些“法寶”……


存儲證明(Proofs of Storage)是證明我擁有某些數據的簡單證明系統。比如:我可以向你證明我有數據X,不需要顯示數據X,或者數據是幾個GB大,而是以更簡潔的方式。

數據可恢復證明(Proof of Retrievability),我不僅要證明我有X,而且這些證明可以用來恢復X,以防我有惡意,想要隱瞞X。

空間證明(Proofs of Space)是另一種類型——我可以向你們保證我花費了一定的存儲空間。如果我存了1gb,然後生成一個隨機的GB,那麼我就可以證明我存儲了這個隨機的GB,而不是在存儲其它東西。這讓礦工可以使用存儲空間作為工作的證明。

讓Filecoin脫穎而出的那些“法寶”……


有趣的部分是將空間證明與數據持有的普通證明結合起來——我希望X是有用的,而不僅僅是一個隨機字符串。最難的部分是創建一個空間證明,它也被用來存儲有用的數據。這就是Filecoin網絡的密碼協議中的複製證明——作為基本原語。

其它存儲證明是為了創建更值得信任的雲,因為它們可以向你證明它們正在備份你的數據。但是它們在正常的中心化雲環境中完全沒有使用,因為信任是契約式的。現在它們被用於整個去中心化領域,因為這是我們使用激勵結構來保證事情而不是合同協議。

我們還使用SNARKs來證明一些複製的實際證明,這些證明產生了大量的輸出。我們想在這些複製證明上做很多挑戰,把它們聚合起來這樣它們就能以一種非常小、緊湊的方式進行鏈式反應。SNARKs是一個很好的方法,它給了你一種方法去證明你的正確性,然後你就可以把這個SNARK證明放在鏈上。接著,各方現在可以自己驗證一些極少的輸入,以及實際的SNARK證明,並知道證明已經正確生成。

在複製證明的過程中,我們使用,比如32GB,並應用非常慢的編碼,從而在一個節點可能是32字節段的層中生成類似於網格的圖。生成一個圖需要一個連續的過程,並對每個節點進行連續哈希。因為哈希函數,它必須一個接一個地完成。

讓Filecoin脫穎而出的那些“法寶”……


一種生成的圖是DRG(深度——半徑——圖),它們與這些擴展圖相連,形成一個複雜的晶格結構。最後,我們將原始數據編碼為我們所稱的副本,並將其提交為一個值。你可以獲取相同的源數據,並可以對其進行多次編碼,最終你將得到多個不同的、唯一編碼的副本。

現在我們已經做到了,為了證明我們已經正確地進行了編碼,我們可以只取樣幾個挑戰來證明我們已經存儲了這個。假設我們在整個證明中隨機抽取了1000個挑戰,然後在SNARK中進行計算。我們取源編碼的數據,然後解碼,然後顯示它一直回到我們承諾的根。這就是我們想要簡潔的證明。否則它就是一個32字節的“葉子”,整個Merkle鏈一直回到根將會是一個相當大的數據量,然後乘以1000。如果用100KB或MB來生成一個證明,我們可以用SNARK壓縮它,我想大概是200B左右。

關於所有這些工作的一個偉大的故事就是我們所說的證明過山車。隨著時間的推移,你最終會創建大量不同的結構,所有這些不同的參數服務於所有這些不同的用例。

這個參數的選擇,在Filecoin中證明的選擇是我們花了這麼長時間來發布所有這些東西的最大原因。因為你選擇了一個結構,它有特定的形狀,產生了特定大小的artifacts ,也許這很好,然後你調整一些參數,這使得其它一些參數必須改變。

很快你就進入了一個很大的、有很多不同變量的參數空間,一旦你在這裡調整一個東西,就會還有很多其它的東西也必須跟著改變。因為很多算法都在優化,做複雜性管理是非常困難的。因為很多這樣的結構、緩慢的編碼,你想用足夠慢的速度來證明它,但又要足夠快讓它不是很貴。進行撥號以使其恰到好處是一個非常困難的挑戰,然後釘上特殊的SNARK結構,以確保你可以高效、簡潔地完成此操作。

讓Filecoin脫穎而出的那些“法寶”……


所有這些參數優化可能是如此緊張和困難,以至於我們實際上不得不編寫軟件來處理這些問題。我們有一個約束求解器來處理約束優化問題,即選擇Filecoin中的證明結構和參數。這是一個出乎意料的結果,其他團體現在可以用它來讓他們的生活更容易,但是我們必須寫這個。

我們使用了一個叫做Orient的工具,它在Github上,所有東西都是開源的(見Filecoin在Orient和Ubercalc中的參數)。它有一種特殊的語言,你可以在其中定義特定的算法和它們生成的artifacts ,然後將它們組合成更大的算法,並使用所有這些變量和參數。

讓Filecoin脫穎而出的那些“法寶”……


然後你可以做實驗結果,比如某個哈希函數需要多長時間,把數據代入一些參數然後計算出其它一些參數。例如,基於此哈希函數以及在SNARK內部或外部花費的時間,這就是你想要使用的特殊的構造,因為它可以將時間最小化或將鏈上足跡最小化,而所有這些東西都是通過此求解器計算出來的。

製造區塊鏈技術,因為它的結構是如此的複雜——無論是單獨的原語還是它們是如何被編織成鏈的,所以我們需要這個軟件來幫助我們寫軟件。就像芯片製造一樣,芯片製造一直很順利,直到達到一定的密度,然後他們就不能手工生產芯片了。他們不得不開始使用軟件來佈置芯片。我認為我們已經在區塊鏈上達到了這一點,我們正在做的一些結構,就需要軟件來幫助我們設計。

讓Filecoin脫穎而出的那些“法寶”……


我認為沒有其它網絡使用複製證明,這是我們的一個優勢,我們創造了這個領域,這是一個區分因素。

這種結構意味著要根據一個要求和出價結構進行優化,在這種結構下,礦工和客戶能夠一起對價格進行推理,然後據此達成交易。

我認為,我們也是唯一以有效的存儲為後盾達成共識的。對於其它的網絡,這可能是一種共識,並得到了空間證明的支持,但在我們的例子中,它是有用的。這是Filecoin最大的三個區別因素。

然後是通過libp2p與IPFS的緊密集成,以及其他一些已經在IPFS上大量使用的東西。將所有這些數據直接備份到Filecoin中會很容易。值得一提的是,IPFS是一個開放的網絡,我們已經看到其它網絡開始增加對它的支持,這也很酷。因為這個原因,它意味著要成為分離層。


分享到:


相關文章: