本月協議實驗室連續發布了go-ipfs 0.4.18,js-libp2p 0.24.0和js-ipfs 0.33.0,重要更新如下。
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打洞。
go-ipfs支持了基於gossip的pubsub(訂閱發布)。和之前floodsub相比,gossipsub可以降低對帶寬的需要,同時可以fallback回floodsub。 gossipsub 的規範[1]:floodsub在節點連接時會查詢對方是否支持floodsub,如果支持會給對方發一個hello message。floodsub會把所有收到的消息都會轉給本節點連接的所有節點。這種簡單粗暴的方式會造成消息洪水。gossipsub希望找到一個平衡點:較快的廣播metadata的同時通過可控的路由做數據傳輸。
用戶可以用下面命令打開gossipsub :
ipfs config Pubsub.Router gossipsub。代碼實現在[2]。
IPFS官方認為改進後的WebUI比之前好了100倍,下圖是筆者在日常開發分支編譯的ipfs節點截圖。 節點啟動五分鐘後,可以看到節點數量最多的依次是美國,德國和中國。
在節點頁可以看到基於地理位置的分布,主要在北美,亞洲和歐洲:
用文件傳輸功能上傳Filecoin白皮書:
使用Filecoin的CID(QmRWx2YMoaJvsVu6v3oBvNwF9Pfcx2VdGEpLuWcBnkVwLR)查看
Filecoin的白皮書659k,ipfs默認的chunk大小是256k,所以有三個chunk(分別是256k, 256k, 147k),對應上圖從root分出的三個點。
詳細技術細節請參考公眾號文章:IPFS數據之旅(二):名正才能傳順
支持指定路由的內容和節點尋址:這樣用戶可以更好的控制自己的DHT。例如libp2p-delegated-content-routing包,可以通過DelegatedContentRouing指定路由。Relay默認打開。最近libp2p社區邊重構邊開發,已經合入了auto relay。auto relay可能會被Filecoin和以太坊使用。
2018年Q4的計劃重構全部規範(已完成)unixfs v2的規範操作(正在進行)完成js-ipld接口的重構(正在進行)社區在討論2019年的計劃: https://github.com/ipld/roadmap/issues/2,Stebalien 和 mikeal 在IPLD能否直接提供加密數據存儲能力有些爭議。
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