IPFS/libp2p進展更新

2021-01-18 IPFS存儲

本月協議實驗室連續發布了go-ipfs 0.4.18,js-libp2p 0.24.0和js-ipfs 0.33.0,重要更新如下。

QUIC

go-ipfs終於合入了原計劃Q3完成的QUIC(之前是go-libp2p已經合入了,卡在go-ipfs)。QUIC是一個基於UDP的協議,對於IPFS來說,使用QUIC的好處有:

所有QUIC連接可以共享一個file descriptor,這樣可以更快的dial。由於節省了資源,也可以同時打開更多連接。QUIC支持的fully encrypted, authenticated, and multiplexed connection,理論上可以改善DHT的時延。這對於IPFS訪問大量數據時尤其有用。QUIC可以更好的支持NAT打洞。

gossipsub

go-ipfs支持了基於gossip的pubsub(訂閱發布)。和之前floodsub相比,gossipsub可以降低對帶寬的需要,同時可以fallback回floodsub。 gossipsub 的規範[1]:floodsub在節點連接時會查詢對方是否支持floodsub,如果支持會給對方發一個hello message。floodsub會把所有收到的消息都會轉給本節點連接的所有節點。這種簡單粗暴的方式會造成消息洪水。gossipsub希望找到一個平衡點:較快的廣播metadata的同時通過可控的路由做數據傳輸。

用戶可以用下面命令打開gossipsub :

ipfs config Pubsub.Router gossipsub。代碼實現在[2]。

WebUI

IPFS官方認為改進後的WebUI比之前好了100倍,下圖是筆者在日常開發分支編譯的ipfs節點截圖。 節點啟動五分鐘後,可以看到節點數量最多的依次是美國,德國和中國。

在節點頁可以看到基於地理位置的分布,主要在北美,亞洲和歐洲:

用文件傳輸功能上傳Filecoin白皮書:

使用Filecoin的CID(QmRWx2YMoaJvsVu6v3oBvNwF9Pfcx2VdGEpLuWcBnkVwLR)查看

Filecoin的白皮書659k,ipfs默認的chunk大小是256k,所以有三個chunk(分別是256k, 256k, 147k),對應上圖從root分出的三個點。

詳細技術細節請參考公眾號文章:IPFS數據之旅(二):名正才能傳順

js-libp2p進展

支持指定路由的內容和節點尋址:這樣用戶可以更好的控制自己的DHT。例如libp2p-delegated-content-routing包,可以通過DelegatedContentRouing指定路由。Relay默認打開。最近libp2p社區邊重構邊開發,已經合入了auto relay。auto relay可能會被Filecoin和以太坊使用。

IPLD roadmap

2018年Q4的計劃重構全部規範(已完成)unixfs v2的規範操作(正在進行)完成js-ipld接口的重構(正在進行)社區在討論2019年的計劃: https://github.com/ipld/roadmap/issues/2,Stebalien 和 mikeal 在IPLD能否直接提供加密數據存儲能力有些爭議。

IPFS學習資料

This single-page web app can edititself [3]:從如何使用js IPFS api建立IPFS節點開始,使用IPNS查詢內容更新並顯示在網頁上。Tutorial: Host your own IPFS node and help the next generation of web[4], 描述了如何搭建ipfs public gateway。

參考連結:

[1]https://github.com/libp2p/specs/tree/master/pubsub/gossipsub

[2]https://github.com/libp2p/go-libp2p-pubsub/blob/master/gossipsub.go

[3]medium.com/textileio/this-single-page-web-app-can-edit-itself-62734dac2700

[4]https://blog.florence.chat/tutorial-host-your-own-ipfs-node-and-help-the-next-generation-of-web-2860eb59e45e

相關焦點

  • js-ipfs, go-libp2p和js-libp2p的新版本
    訂閱英文原版IPFS周報 :https://blog.ipfs.io/weekly-114/歡迎來到IPFS周報以下是自上期IPFS周報以來的一些亮點js-ipfs,go-libp2p和js-libp2p的新版本是時候進行一些更新了!
  • IPFS世界的物流系統:libp2p
    目前libp2p主要支持以下幾種地址格式:/ip4/123.11.22.33/tcp/4001/ipfs/QmNodeID: 這種格式跟傳統的TCP網絡裡是一樣的,直接可以解析出對應的IPv4地址和埠號;/ipfs/QmNodeID: 這種只有節點ID的地址,需要節點路由模塊找到節點對應的IP位址,然後再進行連接;/dns4/ipfs.ipfsbit.com/tcp/443/wss/
  • js-libp2p 0.26.0上線
    Promisify當我們遷移到async/ wait時,我們承諾使用Libp2p公共方法。一些較低級別的庫目前正在利用libp2p進行測試。通過宣傳libp2p API,他們向完全異步/等待的過渡將有很大幫助。一旦async / await更改被傳播,我們將在未來的更新中刪除Promisify以及回調支持,因為那時libp2p將擁有完全的異步/等待支持。
  • IPFS 0.6.0正式發布快來了解新功能
    此遷移將:在引導程序列表中規範多地址,以使用多地址/p2p/Qm...語法而不是/ipfs/Qm...語法。根據需要為默認的引導程序添加 QUIC 地址。如果您已從引導程序配置中刪除了默認引導程序,則遷移過程不會將其重新添加回去。添加 QUIC 偵聽器地址以鏡像配置中存在的任何 TCP 地址。
  • IPFS官方技術進展:將刪除對SECIO安全傳輸的支持
    您可以通過更新到最新版本來減輕對節點的影響。刪除支持後,較新的節點不應發生任何重大變化,但是較舊的節點將開始出現性能下降。什麼是安全傳輸?安全傳輸是libp2p的組件,可在通過網絡發送數據時對數據進行加密。
  • IPFS官方技術進展:將刪除對SECIO安全傳輸的支持
    官方正在刪除IPFS和libp2p中對SECIO安全傳輸的支持。您可以通過更新到最新版本來減輕對節點的影響。刪除支持後,較新的節點不應發生任何重大變化,但是較舊的節點將開始出現性能下降。什麼是安全傳輸?
  • IPFS 2019年Q3季度回顧:大量項目上線,感謝所有貢獻者!
    js-ipfs 0.37.0和0.38.0上線0.37.0版本提供了一個新的構造函數、更好的DNSLink支持和委託路由,0.38.0版本增加了對垃圾收集、Gossipsub和IPNS對「ipfs解析」的支持!js-libp2p 0.26.0上線8月初,js-libp2p也得到了Gossipsub的支持,並有望實現libp2p API。
  • IPFS技術進展:js-IPFS 0.51.0添加了類型定義並刪除了SECIO
    它的繼任者 Noise 最初是在js-IPFS@0.47.0中發布的,現在是 libp2p 使用的默認安全傳輸。go-IPFS@0.7.0最近也刪除了 SECIO 支持,因為go-IPFS@0.6.0中引入了 Noise,這意味著js-IPFS@0.51.0和go-IPFS@0.7.0隻能與運行go-IPFS@0.6.0或js-IPFS@0.47.0或更高版本的其他節點通信。
  • libp2p-rs開源項目的落地實現
    libp2p是一個為p2p網絡構建的基礎模塊,源於開源項目IPFS。IPFS團隊將點對點(peer-to-peer)網絡的網絡層從IPFS工程裡面分離出來,形成一個獨立的項目,這就是libp2p。從本質上說,libp2p是一個模塊化和可拓展的網絡堆棧,專注於傳輸不可知論,模塊化和可移植編碼,最終實現無論設備所處的環境、運行的協議如何,libp2p都能讓設備的互聯成為現實。
  • js-IPFS@0.50.0 支持在多個瀏覽器選項卡之間共享
    幫助以 ipfs-message-port-client 和 ipfs-message-port-server 的形式存在,它們允許您在 SharedWorker 中運行 IPFS 節點,並在應用程式中的多個選項卡之間共享該節點。
  • IPFS技術進展:js-IPFS 0.50.0在共享的webworker中運行
    幫助以 ipfs-message-port-client 和 ipfs-message-port-server 的形式存在,它們允許您在 SharedWorker 中運行 IPFS 節點,並在應用程式中的多個選項卡之間共享該節點。不久將在此主題上發表更深入的文章,但與此同時,請查看 browser-sharing-node-across-tabs 示例以了解如何使用它!
  • libp2p-rs 0.1.0 已經發布
    如果大家經常關注IPFS的動態,那對libp2p應該會有所了解。libp2p是一個為p2p網絡構建的基礎模塊,源於開源項目IPFS。IPFS團隊將點對點(peer-to-peer)網絡的網絡層從IPFS工程裡面分離出來,形成一個獨立的項目,這就是libp2p。
  • 見證 | IPFS 0.7.0 SECIO退役版
    原文連結:https://blog.ipfs.io/2020-09-24-go-ipfs-0-7-0/8月,我們宣布SECIO安全傳輸已棄用。在此版本默認情況下我們禁用了SECIO,這將對網絡上的舊節點產生影響。減輕此更改影響的最佳方法是儘快升級IPFS節點!升級不僅可以確保您使用最新的安全傳輸,還可以訪問我們今年在內容路由方面所做的所有性能改進。
  • 認識Libp2p功能
    libp2p是IPFS協議工程實現中最為重要的模塊。libp2p負責PFS數據的網絡通信、路由、交換等功能。208年7月,協議實驗室在全球PFS開發者大會上將libp2p提升為一級項目,與IPFS和 Filecoin比肩。
  • IPFS周報第105期:發布 js-ipfs 0.50.0
    https://docs.ipfs.io/concepts/case-study-fleek/#overview發布js-ipfs 0.50.0本周初,js-ipfs正式達到了0.50.0版本,增加了在多個瀏覽器選項卡之間共享節點的功能,並大大提高了固定性能。
  • 大陸節點|IPFS 官方:人們正在使用IPFS構建最酷的東西
    IPFS+Filecoin的最新進展js-IPFS 0.51.0支持TypeScript由於許多社區的支持,types現在是js-IPFS代碼庫中的重要成員!但是真正的重點應該是安裝ipfs-core可以將js-IPFS的安裝時間減半。詳情請參閱公告全文:https://blog.ipfs.io/2020-10-29-js-ipfs-0-50/?
  • 乾貨|更通用的P2P網絡協議棧——Libp2p
    Libp2p是什麼?Libp2p是用於構建P2P網絡的模塊化網絡堆棧和庫,源自開源項目IPFS,模塊化設計使它能夠用來構建各種去中心化應用的P2P網絡層。目前,知名區塊鏈項目Ethereum 2.0、Pokdot、BitXHub都選擇基於Libp2p庫搭建系統網絡層。