您好,登錄后才能下訂單哦!
本篇內容主要講解“Filecoin中的存儲和檢索交易的用法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Filecoin中的存儲和檢索交易的用法”吧!
Filecoin網絡由分布在全球各地的數百個存儲提供者組成。內容尋址和加密存儲證明驗證了數據在礦工的硬件上長期正確安全地存儲,從而創造了一個強大可靠的服務。
本文闡述了Filecoin中兩種交易類型,存儲交易 和 檢索交易 運作的各個階段,并詳解其生命周期。并解釋了密碼學證明是如何用于驗證系統中的參與者是否按照承諾履行職責的。
Filecoin 上的數據
在Filecoin上存儲文件,用戶必須首先在其本地Filecoin節點中導入文件。這一步會產生一個數據CID ——即內容標識符,描述該內容的唯一ID。之后,數據被傳給礦工。
將數據導入本地的Filecoin節點,可以通過lotus client import命令來完成。要記住所產生的數據CID(之后在本地節點上也可獲取),因為以后從礦工那里檢索數據時會用到。
將數據導入本地節點后,用戶需發起交易。這步通過lotus client deal命令來完成。該命令將一個數據CID作為輸入,產生一個 Filecoin Piece ,并交互式引導用戶完成存儲交易流程。
Filecoin Piece 是用戶在Filecoin網絡上存儲數據的主要協商單位。Filecoin Piece 并沒有特定的大小,而是以扇區大小為上限,受網絡參數控制。如果一個 Filecoin Piece 大于礦工支持的扇區大小,它必須被分割成更多的碎片,以便每個碎片都適合一個扇區。
Filecoin Piece
每個 Filecoin Piece 是一個 CAR 文件,包含一個IPLD DAG,有對應的數據CID和piece CID。
CAR 即 內容可尋址檔案,每個 CAR 文件是一個 IPLD DAG 的序列化表示,即將其數據塊串起來,再加上描述DAG圖的頭部信息(還有根CID )。
當用戶要在Filecoin網絡中存儲文件時,首先要用UnixFS制作文件的 IPLD DAG (這就是lotus client import命令的作用)。代表DAG根節點的哈希是一個IPFS風格的CID,稱為 數據 CID 。
UnixFS是一種基于protobuf的格式,用于描述IPFS中的文件、目錄和軟鏈接。在Filecoin中,UnixFS是文件格式標準,文件以此格式提交給Filecoin網絡。
所產生的 CAR 文件用額外的零位來補齊,以便使文件寫為二叉merkle樹。
存儲交易流程
用戶在 Filecoin 網絡中通過交易存取數據。網絡的參與者,包括礦工(供給方)和用戶(需求方),通過存儲交易和檢索交易來與對方交互。
存儲交易的生命周期如下:
1. 發現
用戶先確定礦工及其定價,即礦工為了接受交易而希望收到的每epoch(30秒)每GiB的價格,單位為attoFIL。目前,Filecoin中一筆交易的最短期限為180天。
您可以通過 JSON RPC API 查詢已同步的節點,列出所有當前活躍的礦工,使用 Filecoin.StateListMiners 方法。您可以根據礦工在網絡中的信譽和能力進行選擇。礦工的信譽指標還未進入 Filecoin 協議。
當您選好礦工之后,可以用諸如 Filecoin.StateMinerInfo 方法來獲取礦工的 PeerID ,用于在 libp2p 協議中來與對方建立安全連接。
接下來,您可以用 Filecoin.ClientQueryAsk 方法獲取一個帶簽名的 StorageAsk 。
結果包括該礦工愿意接受的交易細節,如接納的 Filecoin Piece 大小的范圍和每GiB每epoch的價格。需要注意的是,提出與礦工的存儲要求相匹配的存儲交易,只是一個前提條件,但并不足以確保交易被接受 - 存儲提供者可能會在之后運行自己的決策邏輯。
2. 議價和數據發送
在這一階段,雙方就交易條款達成協議,如交易成本、交易期限、交易起始時間等。
然后,數據從用戶發至礦工。
3. 發布
通過 PublishStorageDeals 消息在鏈上發布交易,使存儲提供方對交易公開負責。
4. 完成
交易一旦在鏈上發布,就會被交給挖礦子系統 ,打包成扇區,隨后封裝 ,再不斷地被證明可用。
存儲挖礦子系統
存儲挖礦子系統確保 Filecoin 網絡的數據由礦工有效保存,并且:
參與 Filecoin 存儲市場 ,承接用戶數據,參與存儲交易。
參與 Filecoin 存儲算力共識 ,驗證和產出區塊,讓 Filecoin 區塊鏈增長,并獲得區塊獎勵。
該系統監督以下進程:
承諾新存儲和注冊新扇區
為了在Filecoin中注冊一個扇區,礦工必須對該扇區進行 封裝 。_封裝_過程需要大量計算,以證明的形式產生數據的唯一表示,即復制證明或 PoRep 。一旦證明生成,礦工會對其進行壓縮,并將結果提交給區塊鏈。這就證明礦工確實復制了他們同意存儲的數據副本。
證明存儲持續可用,所有存儲礦工需要持續提交鏈上證明,以驗證扇區被完整存儲。
宣布存儲故障和從故障中恢復,如果扇區所需的上述證明如果未成功提交,將導致故障,礦工會受到處罰。
存儲礦工和用戶的考量,如上文所述,存儲交易是在鏈上發布后,才會被激活和封裝。這一點很重要,因為發布交易會將用戶的資金鎖定在鏈上托管。只有如此,在封存數據進扇區之后,礦工的收益才有保障。
可以將在鏈上發布交易視為簽署合同,將封裝和激活交易視為開始做承諾的工作。
從用戶的角度來看,想要用 Filecoin 存儲數據,交易大致經過以下幾個階段:
交易入金,用戶將資金鎖入代管中
向礦工提出 交易提議
檢查意向來接受交易
數據傳輸給礦工來進行交易 ,這是通過GraphSync協議完成的。GraphSync是節點之間同步IPLD圖的協議。該協議允許本地節點向遠程節點發出請求,以獲取在遠程節點的IPLD圖上按選擇器搜索所得的結果。Lotus使用的是GraphSync協議的實現ipfs/go-graphsync。
檢查是否接受 - 確保礦工已經接受了交易并在鏈上發布。
封裝 - 交易已在鏈上,礦工正在封裝包含交易的扇區。
激活 - 交易已被封存并處于活躍狀態。從這里開始,存儲提供商/礦工應定期證明他們繼續存儲數據。
從礦工的角度來看,通過存儲用戶的數據來提供服務,交易大致經過以下幾個階段:
驗證交易 - 收到交易提議,并檢查其參數(大小、價格等)。
檢查是否有鎖定資金 - 確保用戶有鎖定資金,可以支付交易。
等待數據 - 接收客戶提供的交易數據。
為交易提供抵押 用于鏈上交易。
在鏈上發布交易上鏈。
封裝扇區激活交易,存儲提供者(礦工)定期提交WindowPoSt,證明他們在持續存儲數據。
檢索交易流程
檢索交易與存儲交易不同,使用支付通道,主要在鏈下完成。數據傳輸是按量計價的,用戶在數據傳輸的過程中逐步向礦工支付費用。整個過程中,只有創建支付通道、兌換憑證,是涉及與 Filecoin 區塊鏈交互的。
整體流程如下:
發現 - 用戶找出擁有其所需數據的礦工,并向其索取檢索報價詳情 - 每字節價格、解封價格、付款間隔。
設立支付通道 - 用戶需要和礦工之間設立一個支付通道(如果還不存在的話)。
數據傳輸與支付 - 礦工向用戶發送數據,直到需要支付。當達到一定的閾值時,會要求進行支付處理,之后繼續進行數據傳輸。根據礦工是否在他們的 區塊存儲 中擁有數據,他們可能需要首先 解封 數據 - 這是一個非常規和非瞬時的操作,這是存儲交易一節中描述的 封裝 的反向操作。
此時用戶還未獲取完整數據。
時空證明
上面的章節快速列舉了許多使 Filecoin 獨一無二的細節,在概率上對用戶數據提供了保證。本節介紹了 Filecoin 使用的兩種證明,并解釋了它們是如何成為協議的一部分,以及它們所解決的問題。
時空證明(PoSt)是礦工向 Filecoin 網絡提交的證明,證明其正在繼續為網絡存儲數據的唯一副本。
目前,時空證明在 Filecoin 中以兩種類型存在:
WindowPoSt
WinningPoSt
WinningPoSt
WinningPoSt是獎勵存儲礦工對 Filecoin網絡貢獻的機制。在每個epoch開始時,一小部分存儲礦工被選出來,每個礦工挖出一個新的區塊。具體要求是,這些礦工提交指定扇區的壓縮存儲證明。每個成功創建區塊的當選礦工都會獲得FIL(區塊獎勵),以及向其他想在區塊中包含信息的 Filecoin 參與者收取費用的機會。
存儲礦工如果在必要的時間窗口內沒按要求做到,將失去生產區塊的機會,但不會因為沒產出區塊而受到其他懲罰。
WindowPoSt
WindowPoSt是 Filecoin 區塊鏈對存儲礦工做出的承諾進行審核的機制。
每個存儲礦工都應該維護他們的承諾扇區。這些扇區包含與用戶達成的交易,或也可能為空。后者被稱為承諾容量,也就是說,礦工可以做出容量承諾,用任意數據填充一個扇區,而非用戶數據。維護這些扇區可以讓存儲礦工證明他們在代網絡預留空間。
每一天分成若干 時間窗口 ,目前48個時間窗口,每個持續時間為30分鐘(60個epoch,因為1個epoch等于30秒)。
每個礦工的承諾扇區分成若干組,每組對應一個時間窗口。
在一個時間窗(30分鐘)內,每個存儲礦工必須為其該時間窗中的每個扇區提交一份時空證明。這需要隨時訪問該時間窗輪到的每個扇區,并生成 zk-SNARK 證明加入區塊發布到 Filecoin 區塊鏈上。這樣,每個承諾存儲的扇區在每24小時內至少會被審核一次,并保留一個永久的、可驗證的、公開的記錄,證明每個存儲礦工保守承諾。
在上圖例子中,您能看到一個礦工應該在 deadline 0(> 16TB)、deadline 1(< 8TB) 和 deadline 2 (< 8TB) 提交窗口時空證明,其中大部分扇區都在 deadline 0 。每個礦工的 deadline 是隨機的,對于這個特定的礦工來說,分別從 epoch 1635、epoch 1695和epoch 1755 開始。你可以在SpaceGap工具上檢查這些 deadline 和更多關于礦工的細節。
Filecoin 網絡期望所存儲的數據持續可用。未能為一個扇區提交WindowPoSt將導致一個 故障 ,而供應該扇區的存儲礦工將被 懲罰 。這激勵存儲礦工健康運轉。
故障
當因為網絡連接丟失、存儲故障或惡意行為導致證明未在期限內被納入Filecoin區塊鏈時,故障就發生了。
當一個扇區被登記為故障時,Filecoin 網絡將對本應存儲該扇區的存儲礦工進行懲罰;也就是說,將對礦工未能持續存儲的行為進行處罰評估(從礦工預付的抵押品中支付)。
扇區故障費分為三類:
扇區故障費 :需由每個處于故障狀態的扇區每天支付。該費用的大小略高于該扇區每天預計獲得的區塊獎勵額。如果一個扇區連續2周以上處于故障狀態,該扇區將支付終止費,并從區塊鏈狀態中移除。
扇區故障檢測費:這是一次性支付的費用,如果該故障是由鏈上機制檢測發現而非礦工誠實上報時收取。考慮到時空證明檢查的概率性,該收費額設為對應扇區在若干天時間中的區塊獎勵。
扇區終止費:一個扇區可能因為故障或礦工主動而在到期日之前終止。收取的終止費原則上相當于一個扇區當前所產生的收益,且不超過一個限額,以免阻礙長時扇區。
結論
本文描述了關于存儲和檢索 Filecoin 上數據的一些概念、用戶和礦工為存取數據使用的協議以及這些流程中所涉的各類證明和保證。
從用戶和礦工的視角,詳細介紹存儲交易和檢索交易的流程;以及在某一方出現惡意行為時, Filecoin 協議對其的懲罰措施。
到此,相信大家對“Filecoin中的存儲和檢索交易的用法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。