IPFS技術進展:js-ipfs 0.44.0釋出

買賣虛擬貨幣

亮點

可取消的請求和新的瀏覽器資料儲存 [email protected]已經推出,支援取消請求,為瀏覽器提供更精簡、更有效的資料儲存!

可取消的請求

使用者應該能夠取消長期存在的非同步 API 操作。例如,如果您要從網路中獲取 CID 的內容,並且該 CID 無法解析,則您應該能夠為請求設定超時值,此後將不再尋找該內容並返回控制權錯誤程式碼,描述發生了什麼。

這並不像JavaScript中那樣簡單明瞭,因為從API呼叫返回了一個Promise來解析一段內容,並且Promises規範不包含任何有關取消Promise的內容。

但是,瀏覽器訪存 API 具有 AbortSignal 的概念,可用於中止 Web 請求。它們透過 AbortController 進行互動:

我們採用了這種方法並將其整合到每個 API 呼叫中,因此您現在可以使用 AbortControllers 取消請求!我們還使用了這種機制來timeout為每個 API 呼叫新增一個選項,該 API 內部使用 AbortSignal 來停止請求,並在指定的時間後丟擲 TimeoutError:

您也可以自己滾動:

AbortSignal 一直從呼叫堆疊一直傳遞到支援 IPFS 的 libp2p 和 ipld 元件。在此初始發行版中,IPFS 層支援超時,而在以後的發行版中,libp2p 和 ipld 還將使用 AbortSignal 釋放資源,並執行任何其他必要的清理,如果請求成功完成,則會執行這些清理。

新的瀏覽器資料儲存

[email protected]將新的資料儲存區帶到瀏覽器。在瀏覽器中,所有塊和其他回購資料當前都儲存在IndexedDB中,因為這是在寫入時持久和查詢大量使用者資料的唯一方法。

在 node 和 go-ipfs 中,LevelDB 一直是應用程式資料的首選資料儲存(儘管塊已儲存在檔案系統中),並且 go-IPFS 移至 Badger。

在這個擴充套件的介面資料儲存中,這是一種用於儲存由 IPFS 使用的資料儲存實現的鍵/值對的規範。在瀏覽器中,這是由 level-js 支援的資料儲存級別,而後者由 IndexedDB 支援。

為了在此處刪除幾層,我們建立了 datastore-idb 來實現介面資料儲存規範,該規範由 IndexedDB 支援,而無需經過級別。

這是什麼意思?

新的資料儲存區更小,更快,並且升級是無縫的,因為它仍然處於 IndexedDB 的幕後:

新功能

  • 可取消的 API 呼叫(#2993)(2b24f59),關閉#3015

  • ipfs.block.put現在接受pin符合 go-ipfs#3015 的引數

修正錯誤

  • 修復瀏覽器指令碼標籤示例(#3034)(ee8b769),關閉#3027

  • 不再在瀏覽器中生成具有所有 IPLD 格式的瀏覽器捆綁包(#3025)(e6079c1)

  • typeof 將超時傳遞給 dag.get 的錯誤(#3035)(026a542)

  • 刪除對節點全域性變數和內建外掛的使用,以為我們為瀏覽器捆綁程式自動停止包含它們 而做的準備#2932

  • 源地圖不再包含在生產版本ipfs / aegir#549中

接下來是什麼?

檢視 js-ipfs 專案路線圖,其中包含按我們希望其著陸順序排列的標題功能。

路線圖中只標註了較大的功能,期望在路線圖專案之間釋出許多小的錯誤修正!

非常感謝所有能夠釋出此版本的人

  • @ 5310(2條評論)

  • @achingbrain(55次提交,17個PR,3個問題,33條評論)

  • @alanshaw(1問題,3評論)

  • @aphelionz(2條評論)

  • @AuHau(1條評論)

  • @autonome(1條評論)

  • @bertrandfalguiere(1條評論)

  • @betamos(1個PR,1個問題,7條評論)

  • @bluelovers(1 PR,1條評論)

  • @carsonfarmer(1次提交)

  • @ codecov-io(1條評論)

  • @corporatepiyush(1期)

  • @dapplion(2條評論)

  • @dirkmc(2次提交)

  • @Gozala(5個問題,15條評論)

  • @hugomrdias(11提交,4 PR,1問題,17評論)

  • @jacobheun(8提交,2 PR,1問題,8評論)

  • @jakehemmerle(3條評論)

  • @koivunej(1條評論)

  • @lidel(1次提交,2條評論)

  • @mdtanrikulu(1問題,1條評論)

  • @mistakia(1個公關)

  • @npfoss(1次提交,1個PR,1個問題)

  • @ obo20(1次提交,1個PR,1條評論)

  • @oed(1條評論)

  • @RobertFischer(1條評論)

  • @robertkiel(1條評論)

  • @rvagg(1個PR,1條評論)

  • @ spasimir21(1問題,3評論)

  • @stensonb(1次提交,13個PR)

  • @thattommyhall(1 PR,3條評論)

  • @ typhu-xyz(1條評論)

  • @ vasco-santos(14次提交,15個PR,2個問題,16條評論)

  • @vmx(5提交,1 PR,2評論)

  • @welcome(19條評論)

  • @wemeetagain(2次提交,1個PR,3條評論)

參與貢獻

您想為IPFS專案做貢獻,又不知道如何做嗎?好吧,有幾個地方可以開始使用:

  • 檢查 js-ipfs 儲存庫中help wanted標籤的問題

  • 加入 IPFS 的“全力以赴”,自我介紹,並讓我們知道您想在哪裡做出貢獻: https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands

  • 破解 IPFS,向我們展示您的成就!All Hands 呼叫也是進行演示的理想場所,請加入並向我們展示您建立的內容

  • 透過 https://discuss.ipfs.io/ 加入討論,並幫助使用者找到答案。

  • 加入 IPFS 核心實施每週同步,並參與其中!

你有問題嗎?

最好的地方要問你關於IPFS的問題,它是如何工作的,以及你可以用它做的是在 discuss.ipfs.io。我們也可以在#ipfs Freenode 上的頻道上找到。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;