Content Addressing
Content Routing
微討論
centralized
p2p
需要處理的問題很多
今天討論
(Cryptographic Hash Function)
超多種可能
只有那幾個
任意長度的 data
某個 bucket
hash
碰撞
如果用 hash 值來做為 id
拿到檔案後 就可以自己 hash 看看
看 hash 值一不一樣
一樣的話 嗯就是這個了
會包含 content 的 hash
抓資料的時候用 CID 來找
CID 是根據內容而定
(Content Addressing)
有 CID,要怎麼拿到 data
要想辦法知道哪些人可以提供
這些資訊 很難每個人都有完整一份
要找某項資訊的時候該怎麼辦
問專門負責存這些資訊的 server
把問題廣播出去看有沒有人知道
問問距離那項資訊最近的人
有點中心化、那台掛掉怎辦
訊息爆炸、而且很沒效率
最靠近的那些人要負責把資訊存下來
0
peerX
peerA
peerC
peerZ
peerB
peerY
record key
假設我想要問誰可以提供 hash 為 H 的檔案
0
peerX
peerA
peerC
peerZ
peerB
peerY
H
用 SHA256 映射到這個空間
最近的好像是 peerC 跟 peerZ
他們應該要負責存這個資料
就可以問問看他們
SHA256(H)
SHA256
這個資訊的 record key 是 H
如果要找某個檔案
反過來說 如果要告訴大家自己可以提供某個檔案
也是要告訴距離 SHA256(H) 最近的那幾個 peers
這樣他們就知道你可以提供了
除了「誰可以提供這個檔案」之外
還有一些其他資訊也是透過這個機制來查詢
例如「某個 peer 的地址」
或是
「哪些 peers 最靠近這個點」
IPFS 協定有規定 離自己比較近的範圍
需要存比較多其他 peers 的資訊
所以愈靠近那個點的 peers
愈知道有哪些 peers 離那個點最近
也就是說你往那個點附近去問就對了
這個抽象空間裡定義的距離 和實際的距離不一樣