概述
IPFS-InterPlanetaryFileSystem星際文件系統,是一個點對點的分布式文件存儲系統,IPFS的愿景是構建一個全世界的分布式網絡,用來替代傳統中心化的服務器模式,所有的IPFS節點組成一個分布式網絡,每個節點都可以存儲文件,用戶可以從IPFS構建的網絡中以DHT(DistributedHashTable,分布式哈希表)的方式獲取文件,從而實現了新一代的完全去中心化的網絡,旨在取代現有的萬維網。IPFS功能很豐富,包括DHT組網,文件存儲,Bitswap文件交換等功能。本文主要介紹IPFS的文件存儲原理,文件上傳到IPFS節點存儲時,節點會將文件分塊后進行存儲,每個文件以MerkleDAG的格式組織,而MerkleDAG的根哈希則用來表示該文件。本文將對IPFS存儲進行詳解,所述的IPFS的版本為v0.6.0。
CID
在介紹IPFS存儲文件的遠離之前,先介紹一個重要的標識——CID,CID是IPFS中用來表示內容的標識,可以用來表示一個文件,也可以用來表示一個文件塊。如下所示,CID是一個字符串,它主要由Version、Codec和Multihash三部分構成,Version目前分為v0和v1版本,v0版本的CID可以由V0Builder生成,v0版本的CID以Qm字符串開頭,v1版本的CID可以由V1Builder生成,v1版本的CID主要包含三個部分Codec,MhType和MhLength,其中Codec是表示內容的編碼類型,例如DagProtobuf,DagCBOR等,MhType是哈希算法,例如SHA2_256(默認的哈希算法),SHA2_512,SHA3_256,SHA3_512等等,MhLength是生成哈希的長度,默認用-1表示根據哈希算法確定長度。
清華大學互聯網產業研究院召開研討會總結區塊鏈將會深度應用于鄉村振興:11月9日消息,區塊鏈賦能鄉村振興閉門研討會近日在清華大學互聯網產業研究院召開,共40余位來自政府、高校等相關行業的專家學者和企業家代表探討后認為未來區塊鏈將會更深度的應用于鄉村振興。目前,清華大學互聯網產業研究院產業區塊鏈研究中心已在道地藥材、畜牧業、種植業等行業進行了多種嘗試和研究,幫助農業資產上鏈。[2021/11/9 6:41:04]
IPFS組件介紹
IPFS用IpfsNode表示IPFS的節點,存儲相關組件的如下所示:
這些組件的關系如下圖所示,最上層是DAGService,它組合了BlockService組件,而BlockService組合了GCBlockstore組件,然后GCBlockstroe包含BaseBlocks和GCLocker兩個組件,最后BaseBlocks組合了最原始的blockstore組件。
BMEX與土豆社區達成深度戰略合作關系:據官方消息,目前BMEX與土豆社區達成深度戰略合作關系,旨在為合約交易者普及更多行業知識,提升區塊鏈交易生態整體質量。
土豆社區是一家專注于資本市場交易領域的服務機構,擁有一套完整的交易體系,從交易前到盈利后,任何一個操作指令在發出前都會經過系統的分析,同時通過沉淀區塊鏈知識普及、數字金融行情分析、策略指導等知識,為旗下團隊給到系統化運作賦能支持。
BMEX是一家數字資產綜合服務平臺,致力于為用戶提供安全、信賴的數字資產交易及資產管理服務。[2021/3/25 19:17:33]
接下來分別介紹這些組件的功能:
Pinning:固定CID的管理器,主要負責將文件或者文件塊的CID固定,固定CID的塊不會被GC掉。上傳的文件最后的文件的CID都會被固定住,防止被GC。
Blockstore:GCBlockstore類型,組合Blockstore和GCLocker兩個組件。
WBF已上線項目PCCD與華融基金深度達成戰略合作:據官方消息,新加坡WBF交易所已經上線的PCCD美業生態攜手華融基金深度達成戰略合作,第一階段銷毀尚未發行的9000萬枚決定永久銷毀(打入黑洞)減半計劃屆時PCCD進入絕對通縮的時代,將權利回饋給用戶、將權益交給玩家減半計劃將對PCCD社區建設和生態發現帶來積極響應。[2021/3/19 19:01:38]
BaseBlocks:原始的blockstore,提供了對Block的Get/Put/Has/DeleteBlock等操作。
GCLocker:用來鎖住blockstore,保護blockstore防止被GC影響。
Blocks:提供Block的服務,組合Blockstore組件,提供了GetBlock/GetBlocks、AddBlock/AddBlocks、DeleteBlock等操作。
HBTC霍比特與TRON波場達成深度合作:據HBTC霍比特(原BHEX)交易所官方消息,HBTC霍比特已與TRON波場達成深度合作,雙方將攜手共創DeFi和匿名生態的發展。目前,HBTC霍比特已上線TRX和BTT,并且在未來將陸續上線WIN、JST、USDJ。
HBTC霍比特交易所是100%持幣者共享的交易平臺,由火幣、OKEx等56家優質資本共同投資。經過近兩年時間的平穩運行,HBTC霍比特能夠為客戶提供幣幣、合約、期權等業務,并且平臺上主流幣及合約交易擁有行業頂級的流動性和深度。
波場TRON致力于為去中心化互聯網搭建基礎設施。旗下的TRON協議是全球最大的基于區塊鏈的去中心化應用操作系統協議之一,為協議上的去中心化應用運行提供高吞吐,高擴展,高可靠性的底層公鏈支持。波場TRON還通過創新的可插拔智能合約平臺為以太坊智能合約提供更好的兼容性。[2020/7/7]
DAG:IPFS的默克爾DAG的服務,組合BlockService組件,提供Get/GetMany,Add/AddMany,Remove/RemoveMany等操作。
數字錢包Dbank將與360繼續深度合作:360上周首次發布針對區塊鏈領域的安全解決方案,今日又發現了EOS史詩級安全漏洞。作為360在數字錢包領域的首家戰略合作方,Dbank表示將和360就安全和DAPP實現場景等領域繼續展開深度合作。雙方將結合360安全大腦,深度挖掘用戶在數字錢包領域的需求,加固核心代碼,同時拓展EOS超級節點安全解決方案和區塊鏈應用落地場景。
Dbank核心安全技術由360支持,具備包括包括“手機病檢測”、“數字證書安全”、“虛假合約地址識別”等10層安全防護。同時有便捷的“EOS一鍵映射”功能。[2018/5/29]
文件存儲流程
文件上傳時將文件添加到IPFS的倉庫中,上傳的流程可以如下圖所示,生成默克爾DAG的結構,生成的結構有兩種Layout:balanced和trickle的。這里介紹默認的balanced結構,首先生成root作為根節點,然后將文件分割,默認按照256KB大小讀取一個chunk,生成葉子節點,依次生成node1,node2,root節點會有Link指向掛在root節點的葉子節點node1和node2。root節點下面能夠Link的葉子節點數量是有限的,IPFS中默認設置的是174個。
如下圖所示,超過174個后則會新創建一個newroot節點,并Link到oldroot,新的chunk作為node3被newroot直接Link。
當繼續有新的chunk添加時,則會生成node34作為node3和node4的父節點,node34含有兩個Link分別鏈接到node3和node4。
IPFS在init的時候會生成.ipfs目錄,如下圖所示,其中blocks則為文件塊存儲的目錄,datastore為leveldb數據庫,其中存儲了文件系統的根哈希等,存儲相關的配置關聯在.ipfs目錄下面的config文件。
經過上面的步驟,文件已經切塊并轉化成MerkleDAG的結構,接下來詳細介紹每個塊是如何進行存儲的流程。
如下圖所示,一個Block存儲時,首先由dagService調用Add進行添加;之后由blockService調用AddBlock添加該Block;再調用arccache的Put,arccache是對存儲的Block做arc策略的緩存;再之后由VerifBS調用Put進行存儲,VerifyBS主要對CID的合法性進行校驗,合法則進行Put;接著blockstore調用Put進行存儲,Put函數中會對CID進行轉化,調用dshelp的CidToDsKey方法將CID轉化成存儲的Key;再接著調用keytransform.Datastore的Put,Put函數中會將前綴拼上,這時Key加上了前綴/blocks;然后調用measure的Put函數,measure是對mount的封裝;之后調用mount的Put函數,mount和IPFS的config配置文件中結構對應,根據key去查找對應的datastore,由于前綴是/blocks則可以找到對應的measure;調用該measure的Put函數;最后調用flatfs的Put函數,由Put函數調用doPut最終調用encode函數將完整的block寫入的目錄指定為/home/test/.ipfs/blocks/WD,其中WD來自于blocks/CIQFSQATUBIEIFDECKTNGHOKPOEE7WUPM5NNNSJCCDROMM6YHEKTWDY中的倒數第三第二個字符。這樣該Block則寫入了該目錄下面的文件中。
總結
IPFS文件存儲格式為默克爾DAG格式,每一層Links大小為174個,超過了則會重新調整。文件存儲過程中有多個Datastore進行了組合和封裝,每個Datastore功能比較單一,例如arccache只做Block的緩存,VerifBS只做CID的校驗,這樣做的好處是每個組件功能明確,不好的地方在于組合太多,調用深度太深,加上內部都是用interface,好幾個組件都實現了該interface,不便于閱讀。
IPFS的存儲模式面向互聯網用戶而設計,因為它的開放性,允許所有節點隨意接入,已接入IPFS網絡的節點可以自由查找內容,不適合直接用來作為企業的文件存儲服務。但其分布式存儲的特點,很容易進行存儲的動態擴容,可以通過結合節點認證機制和DHT查找內容的剝離,為企業的分布式存儲系統,另外配合區塊鏈技術,通過鏈上鏈下協同技術,很容易地解決鏈上存儲容量不足的問題。
了解IPFS和Filecoin資訊,參與Filecoin挖礦,可聯系IPFS研習社,微信號:XF2020IPFS
Tags:LOCKLOCBLOCBLOCKLendingblockQI BlockchainhiblocksBlockWarrior
本文由中幣研究院原創編輯下載全球領先的數字貨幣交易所中幣APP:www.zb.live/download前一天.
1900/1/1 0:00:008月13日晚上7點,比原鏈創始人長鋏做客幣看「大咖來了」欄目,圍繞著“DEX群雄并起,MOV何以突圍?”這個主題與社區進行交流.
1900/1/1 0:00:00親愛的BKEXer:?? ?? BKEXGlobal即將上線OGN,詳情如下:??上線交易對:OGN/USDT充值功能開放時間:已開放交易功能開放時間:2020年8月13日16:30提現功能開放.
1900/1/1 0:00:00尊敬的用戶: Hotbit即將上線SBREE(CBDAO)項目,并開放SBREE/ETH、SBREE/USDT交易對,時間安排如下:2020年8月14日14:00:開放SBREE充值.
1900/1/1 0:00:00尊敬的用戶: 為了提升社區用戶的合約保險使用權益,BMEX正式上線邀請獎勵保險額度機制。用戶通過邀請其他用戶在BMEX平臺進行實盤合約交易,即可根據比例獲得更多保險使用額度,具體詳情如下:邀請者.
1900/1/1 0:00:00北京時間8月12日凌晨4點-5點,Filecoin官方開啟了線上社區會議。本次會議主要提及了IPFS/Filecoin的一些生態應用、社區活動以及Filecoin礦工們最關心的太空競賽.
1900/1/1 0:00:00