加密貨幣交易所 加密貨幣交易所
Ctrl+D 加密貨幣交易所
ads

深度解析IPFS怎樣實現文件存儲_LOCK:BLO

Author:

Time:1900/1/1 0:00:00

概述

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表示根據哈希算法確定長度。

OKX與SignalPlus達成深度合作:5月11日消息,據OKX官方公告,OKX與 SignalPlus正式達成深度合作,SignalPlus將為OKX全球用戶提供高級期權交易工具,并帶來更優期權交易體驗。SignalPlus 是一家期權交易技術服務商,旨在為用戶免費提供高級加密資產期權交易工具。

OKX 首席商務官 Lennix表示,很高興通過與SignalPlus合作將世界級的交易分析工具帶給全球用戶。加密期權交易市場在不斷發展,OKX希望通過擴展期權交易工具和產品套件為全球用戶提供更優交易體驗。[2023/5/11 14:57:49]

IPFS組件介紹

IPFS用IpfsNode表示IPFS的節點,存儲相關組件的如下所示:

這些組件的關系如下圖所示,最上層是DAGService,它組合了BlockService組件,而BlockService組合了GCBlockstore組件,然后GCBlockstroe包含BaseBlocks和GCLocker兩個組件,最后BaseBlocks組合了最原始的blockstore組件。

ChainUP與日本孵化器BINARYSTAR達成深度戰略合作:今日,日本孵化器BINARYSTAR正式加入ChainUP全球超級節點合作伙伴,雙方達成深度戰略合作,共同助力日本企業區塊鏈技術應用與產業升級。

BINARYSTAR是日本一家以區塊鏈為核心的孵化器,坐落在東京市中心銀座。BINARYSTAR在日本、臺灣及東南亞地區有多個分部,推廣區塊鏈行業應用,同時作為專業運營咨詢機構,扶持區塊鏈初創企業品牌和業務發展。

作為全球領先的區塊鏈技術服務提供商,ChainUP實行集團化和全球化戰略,擁有多家子公司及獨立品牌,其中包含錢包技術服務品牌HiCoin、交易所流動性服務提供商BitWind、區塊鏈金融衍生品技術服務平臺EXUP。ChainUP在全球化進程中除新加坡總部之外已建立日本分公司、香港分公司,將全球區塊鏈技術經驗和產品進一步應用于本地化發展,為更多優質企業提供區塊鏈技術服務與支持。[2020/3/20]

接下來分別介紹這些組件的功能:

聲音 | 劉煜:江西將推動區塊鏈等新興技術和制造業深度融合:江西正加速推進智能制造,促進該省制造業轉型升級。江西省工業和信息化廳副廳長劉煜表示,江西將圍繞有色、電子信息、裝備、石化、建材、紡織、食品等“2+6+N”重點產業,樹立和培育一批智能制造標桿企業;推動5G、AI、VR及區塊鏈等新興技術和制造業深度融合等。(中國新聞網)[2019/12/20]

Pinning:固定CID的管理器,主要負責將文件或者文件塊的CID固定,固定CID的塊不會被GC掉。上傳的文件最后的文件的CID都會被固定住,防止被GC。

Blockstore:GCBlockstore類型,組合Blockstore和GCLocker兩個組件。

BaseBlocks:原始的blockstore,提供了對Block的Get/Put/Has/DeleteBlock等操作。

GCLocker:用來鎖住blockstore,保護blockstore防止被GC影響。

聲音 | 阿里巴巴合伙人彭翼捷:只有深度運用區塊鏈等技術,智慧城市的成熟階段才會到來:據新浪科技消息,近日,阿里巴巴合伙人彭翼捷接受采訪時表示,從目前來看,智慧城市的建設仍處于初級階段。“只有一座城市的每個行業都深度運用了區塊鏈、人工智能等技術,那么智慧城市的成熟階段才會到來。”[2019/8/16]

Blocks:提供Block的服務,組合Blockstore組件,提供了GetBlock/GetBlocks、AddBlock/AddBlocks、DeleteBlock等操作。

DAG:IPFS的默克爾DAG的服務,組合BlockService組件,提供Get/GetMany,Add/AddMany,Remove/RemoveMany等操作。

文件存儲流程

文件上傳時將文件添加到IPFS的倉庫中,上傳的流程可以如下圖所示,生成默克爾DAG的結構,生成的結構有兩種Layout:balanced和trickle的。這里介紹默認的balanced結構,首先生成root作為根節點,然后將文件分割,默認按照256KB大小讀取一個chunk,生成葉子節點,依次生成node1,node2,root節點會有Link指向掛在root節點的葉子節點node1和node2。root節點下面能夠Link的葉子節點數量是有限的,IPFS中默認設置的是174個。

動態 | 最高法:推動區塊鏈等現代科技與司法工作深度融合:據中國新聞網報道,全國法院貫徹落實政法領域全面深化改革推進會精神專題會議20日在四川成都召開。會議提出,要以強化信息技術深度應用為支撐,推動大數據、人工智能、區塊鏈等現代科技與司法工作深度融合,以電子卷宗為基礎全面推進智能化輔助辦案,大力推進跨域立案改革,全面探索在線訴訟模式,推廣應用刑事案件智能輔助辦案系統。[2019/7/21]

如下圖所示,超過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:LOCKLOCBLOBLOCKBLOCKSarcblockbloc幣幣幣情agriblock

火必下載
趨勢解幣:8/14BTC大漲大跌后晚間如何布局?_BTC:區塊鏈

大家好,誠信立本,德行天下,用心研判趨勢和分析,傳遞有價值的投資理念!希望價有所值,值有所得!交易沒有一個固定的方向,牛市來了也并不是只漲不跌,熊市來了也不是只跌不漲.

1900/1/1 0:00:00
幣圈小蝶:幣圈投資交易法,學會盈利翻倉不只是夢想_BITG:比特幣

?下面我們從三個方面來講解何為投機交易法: 第一、投機法則 投機法則是一切短線交易的基本法則。短線交易就是投機交易,做投機交易的過程就是尋找機會,并交易機會的過程.

1900/1/1 0:00:00
關于上線SPA及其交易的公告_ERA:SPE

尊敬的EXX用戶:? ????您好!根據市場的情況及用戶的建議,EXX將于香港時間2020年8月14日12:00開放SPA的充提業務.

1900/1/1 0:00:00
關于上線ANT(Aragon)的公告(0813)_BIKI:AGO

尊敬的用戶: BiKi平臺即將上線ANT,并開放ANT/USDT、ANT/ETH交易對,具體詳情如下: 1、充值:已開放 2、開放交易時間:8月13日18:00(GMT8) 3、開放提現時間:待.

1900/1/1 0:00:00
Gate.io 關于YAM后續遷移規劃的說明_YAM:Gate.io

YAM的智能合約Rebase調倉機制出現問題之后,官方經過投票和修復提案的方式緊急拯救均沒能成功,Gate.io持續關注和披露事件進展,并且在大家的支持下為提案提供了相當比例的投票.

1900/1/1 0:00:00
OKEx全球首發Curve (CRV) 的公告_okex:InfiniityDeFi

尊敬的OKEx用戶: OKEx上線Curve(CRV),具體時間如下:CRV充值–8月14日11:00(HKT);CRV/USDT的市場交易:8月14日12:00(HKT);CRV/ETH、CR.

1900/1/1 0:00:00
ads