.ipfs 為節(jié)點的存儲目錄
| 目錄 | 存儲內(nèi)容 | 備注 |
|---|---|---|
| blocks | 文件塊內(nèi)容 | hash.data |
| datastore | 存儲本地數(shù)據(jù) | ipns 等 |
| keystore | 存儲公私鑰對 | |
| config | 配置文件 | |
| version | 版本信息 | |
| datastore_spec |
datastore的存儲:https://github.com/ipfs/go-datastore
IPFS是一個分布式文件系統(tǒng),它綜合了以前的對等系統(tǒng)的成功想法,包括DHT,BitTorrent,Git和SFS。 IPFS的貢獻(xiàn)是簡化,發(fā)展和將成熟的技術(shù)連接成一個單一的內(nèi)聚系統(tǒng),大于其部分的總和。 IPFS提供了編寫和部署應(yīng)用程序的新平臺,以及一個新的分發(fā)系統(tǒng)版本化大數(shù)據(jù)。 IPFS甚至可以演進網(wǎng)絡(luò)本身。
IPFS是點對點的;沒有節(jié)點是特權(quán)的。 IPFS節(jié)點將IPFS對象存儲在本地存儲中。節(jié)點彼此連接并傳輸對象。這些對象表示文件和其他數(shù)據(jù)結(jié)構(gòu)。 IPFS協(xié)議分為一組負(fù)責(zé)不同功能的子協(xié)議:
1.身份 - 管理節(jié)點身份生成和驗證。描述在3.1節(jié)。
2.網(wǎng)絡(luò) - 管理與其他對等體的連接,使用各種底層網(wǎng)絡(luò)協(xié)議??膳渲玫?。詳見3.2節(jié)。
3.路由 - 維護信息以定位特定的對等體和對象。響應(yīng)本地和遠(yuǎn)程查詢。默認(rèn)為DH??T,但可更換。在3.3節(jié)描述。
4.交換 - 一種支持有效塊分配的新型塊交換協(xié)議(BitSwap)。模擬市場,弱化數(shù)據(jù)復(fù)制。貿(mào)易策略可替換。
5.對象 - 具有鏈接的內(nèi)容尋址不可更改對象的Merkle DAG。用于表示任意數(shù)據(jù)結(jié)構(gòu),例如文件層次和通信系統(tǒng)。詳見第3.5節(jié)。
6.文件 - 由Git啟發(fā)的版本化文件系統(tǒng)層次結(jié)構(gòu).
7.命名 - 自我認(rèn)證的可變名稱系統(tǒng).
分布式散列表(DHT)被廣泛用于協(xié)調(diào)和維護關(guān)于對等系統(tǒng)的元數(shù)據(jù)。比如,MainlineDHT 是一個去中心化哈希表,他可追蹤查找所有的對等節(jié)點。
Block:一個可變大小的數(shù)據(jù)塊
DHT和BitSwap允許IPFS構(gòu)造一個龐大的點對點系統(tǒng)用來快速穩(wěn)定的分發(fā)和存儲。最主要的是,IPFS建造了一個Merkle DAG,一個無回路有向圖,對象之間的links都是hash加密嵌入在源目標(biāo)中。這是Git數(shù)據(jù)結(jié)構(gòu)的一種推廣。Merkle DAGS給IPFS提供了很多有用的屬性,包括:
1.內(nèi)容可尋址:所有內(nèi)容都是被多重hash校驗和來唯一識別的,包括links。
2.防止篡改:所有的內(nèi)容都用它的校驗和來驗證。如果數(shù)據(jù)被篡改或損壞,IPFS會檢測到。
3.重復(fù)數(shù)據(jù)刪除:所有的對象都擁有相同的內(nèi)容并只存儲一次。這對于索引對象非常有用,比如git的tree和commits,或者數(shù)據(jù)的公共部分。