IPFS協議棧詳解 身份層

2021-09-05 11:27:03 字數 1282 閱讀 1709

當我們剛安裝好ipfs,第一次使用的時候,我們首先得輸入:

ipfs init
這個命令的作用我們之前講過,就是建立乙個ipfs節點,我們可以在當前目錄看到乙個.ipfs的資料夾,就是節點資料夾。我們可以檢視該資料夾下config檔案,看到節點的id和秘鑰,以及節點的大小等預設屬性。或者也可以通過命令:

ipfs id
來檢視節點的id和公鑰,這個節點的id(nodeid)就像我們的身份證號碼,是全網唯一的,是節點的身份標誌,用來唯一的代表乙個節點。

那麼這個節點id是如何產生的?這就是身份層幹的事,身份層給予節點唯一的身份,我們詳細來了解。

身份層(identity)

我們先來看,乙個節點由什麼組成。看原始碼就非常清楚:

type nodeid multihash  //自描述加密雜湊摘要(也有稱「多重雜湊」)

type multihash byte

type publickey byte

type privatekey byte

type node struct

每乙個節點在ipfs網路中由node這個結構體來表示,該結構體包含nodeid以及乙個公私鑰對。其中nodeid是個亮點,它是乙個自描述的加密雜湊摘要,什麼叫「自描述」呢?就是你看到這個id,你就知道它採用了什麼hash演算法,擷取了結果的那一部分用來表示,它自帶描述資訊,詳細的我們後面再講。 這種加密方式有兩個優勢:
所有節點在ipfs網路中都要乙個唯一的nodeid進行標識,它其實就是公鑰的雜湊,然而為了增加攻擊者的成本,ipfs使用了s/kademlia中提到的演算法增加建立新身份的成本,原始碼定義如下:

difficulty = n = node{} 

do

while (p

身份層的主要作用是標識ipfs網路中的每乙個節點,有點像使用者資訊的生成。在節點建立首次連線時,節點間將交換公鑰,並檢查:

hash(other.publickey)是否等於other.nodeid,相當於校驗使用者資訊,如果校驗結果不相等,則使用者資訊不匹配,節點連線立即終止。

如果你也中意區塊鏈,可以加:

qq群:71789361

也可以掃碼加入我的星球,我們一起親密的玩耍

LINUX協議棧詳解 ARP協議

arp協議負責從ip位址到物理mac位址的轉換。arp格式 this structure defines an ethernet arpheader.struct arphdr 接收arp的函式是arp rcv,在跑完nfproto arp鉤子後,呼叫arp process處理arp請求,簡單考慮,...

七層協議詳解

tcp ip是乙個協議族,是因為tcp ip協議包括tcp ip udp icmp rip telnetftp smtp arp tftp等許多協議,這些協議一起稱為tcp ip協議。以下我們對協議族中一些常用協議英文名稱和用途作一介紹 tcp transport control protocol ...

TCP IP詳解 協議 網路層

搜尋路由表,尋找能與目的網路號相匹配的表目 搜尋路由表,尋找標為 預設 default 的表目 特殊情況的ip位址 ifconfig命令一般在引導時執行,以配置主機上的每個介面。由於撥號介面可能會經常接通和結束通話 如slip鏈路 每次線路接通和結束通話時,ifconfig都必須 以某種方法 執行 ...