IPFS技术火币网招聘2020进展 | js-IPFS 0.51.0添加类型定义
原文链接:
https://blog.ipfs.io/2020-10-29-js-ipfs-0-50/
js-IPFS@0.51.0已经从 launchpad 起步,并且正在被传送到您的 node_modules 文件夹,它支持 TypeScript、自定义 DAG 格式和一种新的、更轻便的模块使用方式。
类型
TypeScript 已经席卷了 JS 世界,它允许开发者在他们编码的界面不是他们期望的时候得到提醒,并支持大量有用的工具,比如精确的代码完成和内联文档查看。
已经有几个社区领导了为js-IPFS提供类型信息的工作,但是由于项目进展如此之快,要保持与每个版本中出现的变化的兼容性是一项艰巨的任务。
在js-IPFS@0.51.0中,类型现在是代码库中的一等公民。这个项目还没有转换成 TypeScript,我们不希望 TypeScript 知识成为贡献js-IPFS开发的先决条件,相反,所有类型都是使用 JSDoc 注释定义的,并在开发和持续集成期间构建和验证。
所有的新代码都需要有类型,所以为了帮助贡献者,aegir 最近为 JSDoc 注释添加了更严格的 linting,我们还在js-IPFS中添加了 typecheck github 动作,这样任何错误或缺少的类型都很容易在 PR 中发现。
SECIO 删除
过时的安全传输 SECIO 最终在js-IPFS@0.51.0中被删除。它的继任者 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或更高版本的其他节点通信。
如果您正在运行 IPFS 节点与各种各样的版本需要升级它们go-IPFS@0.6.0和js-IPFS@0.47.0至少,否则你将会失去连通性与其它网络 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('ipfs')
asyncfunction () { const node = await IPFS.create()
node.add(...)
await node.stop()}
对此:
const IPFS = require('ipfs-core')
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 核心实现每周同步,成为行动的一部分!
你有问题吗?
关于 IPFS 的问题、它是如何工作的,以及您可以用它做些什么,最好的地方是在 discuss.ipfs.io。
我们也可以在#ipfsFreenode 上的频道上找到。
作者:IPFS星际联盟,来源:星际联盟Filecoin