IPFS技術進展:js-IPFS 0.51.0新增了型別定義並刪除了SECIO

買賣虛擬貨幣

[email protected]已經從 launchpad 起步,並且正在被傳送到您的 node_modules 資料夾,它支援 TypeScript、自定義 DAG 格式和一種新的、更輕便的模組使用方式。

型別

TypeScript 已經席捲了 JS 世界,它允許開發者在他們編碼的介面不是他們期望的時候得到提醒,並支援大量有用的工具,比如精確的程式碼完成和內聯文件檢視。

已經有幾個社羣領導了為js-IPFS提供型別資訊的工作,但是由於專案進展如此之快,要保持與每個版本中出現的變化的相容性是一項艱鉅的任務。

[email protected]中,型別現在是程式碼庫中的一等公民。這個專案還沒有轉換成 TypeScript,我們不希望 TypeScript 知識成為貢獻js-IPFS開發的先決條件,相反,所有型別都是使用 JSDoc 註釋定義的,並在開發和持續整合期間構建和驗證。

所有的新程式碼都需要有型別,所以為了幫助貢獻者,aegir 最近為 JSDoc 註釋新增了更嚴格的 linting,我們還在js-IPFS中新增了 typecheck github 動作,這樣任何錯誤或缺少的型別都很容易在 PR 中發現。

SECIO 刪除

過時的安全傳輸 SECIO 最終在[email protected]中被刪除。它的繼任者 Noise 最初是在[email protected]中釋出的,現在是 libp2p 使用的預設安全傳輸。

[email protected]最近也刪除了 SECIO 支援,因為[email protected]中引入了 Noise,這意味著[email protected][email protected]只能與執行[email protected][email protected]或更高版本的其他節點通訊。

如果您正在執行 IPFS 節點與各種各樣的版本需要升級它們[email protected][email protected]至少,否則你將會失去連通性與其它網路 SECIO 不再是得到同行的支援。

自定義 DAG 格式

IPFS 的核心是檔案,這意味著 UnixFS,而 IPLD 格式則意味著 dag-pb和ipld-raw。

IPFS 使您可以訪問所有底層元件,從而允許您使用 dag-cbor 將資料結構連線在一起,並使它們可以透過 libp2p 在 Internet 上進行訪問和分發。

但是,如果這些編解碼器不符合您的要求,又想開發新的編解碼器或使用不太常見的編解碼器(如dag-jose)怎麼辦?

我們並沒有將每個可用的編解碼器與預設的js-IPFS安裝捆綁在一起,因為其中一些會引入很大的依賴樹,這將不必要地降低不打算使用它們的人的安裝速度。

以前,您可以將自定義 IPLD 格式與ipfs-http-client一起使用,也可以在將IPFS作為應用程式的一部分作為程序內節點執行時使用,但現在您也可以在執行的守護程序中使用它們。

有關如何設定它的更多資訊,請參閱js-IPFSrepo 中的新的 custom-ipld-formats 示例。

提供新的更輕便的 IPFS

當您使用npm install ipfs時,您將獲得核心 ipfs 節點以及用於執行守護程序、HTTP API 伺服器和CLI的工具。如果您是在命令列上全域性安裝它,以便與 IPFS 桌面一起使用,或者只是為了讓一個節點在網路上執行,那麼這非常好,因為您希望額外的工具能夠與您的節點通訊。

安裝這些工具需要時間,並且會佔用硬碟空間,如果您在 js-IPFS 上構建應用程式,則不一定需要它們。

現在可以透過npm install ipfs-core來獲得執行程序內節點所需的 IPFS 堆疊部分。由於沒有安裝所有不需要的額外依賴項,這使得js-IPFS的安裝大小減少了一半。

你可以像以前一樣使用這個模組,你所需要做的就是更改依賴項名稱/版本和更新要求名稱:

const IPFS = require()asyncfunction () {  const node = await IPFS.create()  node.add(...)  await node.stop()}

對此:

const IPFS = require()asyncfunction () {  const node = await IPFS.create()  node.add(...)  await node.stop()}

一切就緒!這是嘗試使程式碼庫更加模組化,並允許交換元件,並且可能不會一直提取所有內容,從而使高階使用者可以建立僅包含所需功能的最小節點。

預設情況下 CORS 是禁用的

跨源資源共享是一種瀏覽器安全措施,可以防止執行在 web 上被破壞的站點上的惡意 JavaScript 對 api 的未經授權訪問。

在0.51.0之前的js-IPFS版本有一個非常寬鬆的 CORS 設定,允許來自任何地方的請求,儘管這使得針對 API 的開發非常簡單,但在安全性方面還有一些不足之處。

從0.51.0開始,CORS 在預設情況下是禁用的,所以如果您計劃對 HTTP RPC API 進行請求,那麼在啟動它之前,您需要將相關的來源和您將使用的方法新增到節點配置中。

有關完整的概述,請參見自述檔案的 CORS 部分。

新功能

  • 型別檢查並從 jsdoc(#3281)(bbcaf34)生成 defs

  • 啟用 dag put 和 get 的自定義格式(#3347)(3250ff4)

  • 支援 Node.js 15(#3339)(66f2081)

  • 在 message-port-client 上實現 ipfs.ls(#3322)(f642f1d)

  • webui v2.11.4(#3317)(7f32f7f)

突發的變化

  • 對 SECIO 的支援已經被刪除(#3295)(5f5ef7e)

  • 預設禁用 CORS(#3275)(3ff833d)

  • 從 ipfs-core(#3348)刪除緩衝區匯出(5cc6dfe)

Bug 修復

  • 檔案 ls 應該返回字串(#3352)(16ecc74)

  • 修復了“interface-ipfs-core”連結(#3334)(3e7e222)

  • 嘗試匯出未定義的緩衝區(#3312)(5cc6dfe)

  • HTTP 客戶端工廠:React Navtive 中的無效 URL(#3331)(4eb196c)

  • 在 cli pin add/rm(#3306)中觸發無效版本錯誤(69757f3)

  • 在 worker 中載入 ipfs-js 包失敗,ReferenceError:視窗未定義(#2349)(3f72e50)

接下來是什麼?

檢視 js-IPFS 專案路線圖,其中包含按我們希望的順序組織的主要特性。

路線圖中只有大的特性被呼叫,預計在路線圖項之間會有很多小的 bug 修復釋出!

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

  • @achingbrain(52次提交,33個PR,2個問題,78條評論)

  • @ acolytec3(1次提交,1個PR)

  • @acostalima(2個問題,5條評論)

  • @adamprocter(1個問題,1條評論)

  • @andrew(1條評論)

  • @aphelionz(1個問題,3條評論)

  • @aschmahmann(1條評論)

  • @AuHau(2個問題,4評論)

  • @autonome(1個問題,1條評論)

  • @bconnorwhite(1次提交,1個PR)

  • @bellbind(1個問題,1條評論)

  • @BlackGlory(1條評論)

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

  • @chafey(2個問題,1條評論)

  • @chebyte(2條評論)

  • @cindywu(1次提交,1個PR)

  • @ codecov-commenter(2條評論)

  • @ codecov-io(1條評論)

  • @ conr2d(1次提交,1個PR)

  • @daviddias(1條評論)

  • @ DougAnderson444(1條評論)

  • @ duc811997(1個問題)

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

  • @gcohler(1個PR,1個問題,2條評論)

  • @georgyo(2個問題)

  • @Gozala(12次提交,15個PR,6個問題,33條評論)

  • @hugomrdias(1條評論)

  • @icidasset(3條評論)

  • @imestin(1次提交,1個PR,1個問題,3條評論)

  • @jacobheun(20次提交,6個PR,4個問題,29條評論)

  • @jakehemmerle(1條評論)

  • @Jonybang(1個問題,1評論)

  • @kottackalsulvin(3個問題,9評論)

  • @lidel(2次提交,3個PR,7條評論)

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

  • @mcclure(3問題,3評論)

  • @ mh-cbon(2問題,1條評論)

  • @mikeal(1次提交,1個問題,5條評論)

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

  • @negamaxi(2條評論)

  • @ obo20(1條評論)

  • @oed(1個問題,1條評論)

  • @olizilla(1個問題)

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

  • @pepoospina(3條評論)

  • @ rafaelramalho19(1個問題)

  • @RobertFischer(1條評論)

  • @rvagg(5條評論)

  • @rysiekpl(3條評論)

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

  • @stale(9條評論)

  • @StationedInTheField(1個問題,3條評論)

  • @straiforos(1個問題,2條評論)

  • @tabcat(1次提交,1個問題,6條評論)

  • @Tcll(1個問題,4評論)

  • @tniessen(1條評論)

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

  • @ubernaut(1個問題,1條評論)

  • @ vasco-santos(30提交,25 PR,6個問題,42評論)

  • @vmx(11次提交,1個PR,8條評論)

  • @Weedshaker(1條評論)

  • @welcome(17條評論)

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

  • @woss(6條評論)

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

  • @ Xplorer123(1個問題)

  • @ yfs-2000(1個問題,1條評論)

  • @zebateira(1條評論)

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

想貢獻?

你是否願意為 IPFS 專案做貢獻,但又不知道如何做?嗯,有幾個地方你可以開始:

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

  • 加入 IPFS 全員大會,介紹你自己並讓我們知道你想在哪裡做出貢獻:https://github.com/ipfs/teammgmt/#weekly-ipfs-all-Hands

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

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

  • 加入 ipfs 核心實現每週同步,成為行動的一部分!

免責聲明:

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

推荐阅读

;