【IPFS相关】go-ipfs 0.4.21发布

本文由IPFS原力区收集译制,版权所属原作者 关键缺陷修复、实验TLS1.3支持、减少内存使用、base32 CIDv1 CIDs、更多其他!

正文:

https://github.com/ipfs/go-ipfs/releases/tag/v0.4.21

亮点 我们很高兴宣布0.4.21版本的go-ipfs发布了。此版本有一些关键的错误修复和一些新功能, 因此每个用户都应该升级。 关键错误修复:

  • 打开的文件描述符太多/对等方太多 (#6237)。

  • 同时添加多个文件不起作用 (#6254)。

  • CPU 利用率峰值太高, 然后保持在 100% (#5613)。

主要特点:
  • 实验 TLS1.3 支持 (最终取代 secio)。

  • SECIO 握手的 OpenSSL 支持 (性能改进)。

重要事项此版本修复了我们安全传输中的一个错误, 该错误可能会从通道中删除数据。 注意此问题既不会影响与第三方攻击者相关的数据的隐私, 也不会影响其完整性。只有向我们发送数据的对等才会触发此 bug。 所有的用户都必须升级 我们打算引入一个功能, 不幸的是, 它触发了此 bug.为了避免对网络进行分区, 我们决定将此功能推迟一两个版本。https://github.com/libp2p/go-libp2p/issues/644 具体来说, 我们将提供至少一个月的升级期。之后, 我们将开始测试部署建议更改的影响。 如果你正在构建一个单独的应用程序或在一个分叉的 IPFS 上工作, 请确保将 github. com/libp2p/go-libp2p-secio 升级到至少v0.0.3。 Bug修复和增强 此版本包括相当多的关键错误修复和性能/可靠性增强。

添加多个文件时出错

最后一个版本打破了原来简单的命令 ipfs add file1 file2, 我们缺乏这方面的测试案例。这两个问题 (bug 和缺少测试用例) 现在都已修复。 SECIO 如上所述, 我们修复了一个错误, 该错误可能会导致数据在读取时从 SECIO 连接中删除。具体来说, 在以下情况下会发生这种情况:

1. 读取缓冲区的容量大于长度。

2. 远程对等方发送的长度超过平均长度, 但小于单个 secio “帧” 中的容量。

在这种情况下, 我们会将读取缓冲区填充到它的容量, 而不是它的长度。

打开的文件太多, 对等太多, 等等

Go-ipfs 累积过多连接时, 它会自动关闭最不有用的连接。不幸的是, 一些中继的连接在Close()中阻塞, 从而停止了整个过程。 许多用户注意到此版本的 CPU 使用情况失控。这被证明是 DHT 如何处理提供程序记录 (记录哪些对等方具有哪些内容) 的长期问题:

1. 在完全清空提供程序集之前, 它不会删除内容的提供程序记录。

2. 每当我们更新提供程序集时, 它都会将每个提供程序记录加载到内存中。

综合起来, 这两个问题正在破坏提供程序记录缓存, 迫使 DHT 重复加载和丢弃提供程序记录。

更可靠的连接管理

Go-ipfs 有一个名为 “连接管理器” 的子系统, 可在 goipfs 资源不足时关闭最不有用的连接。 遗憾的是, 其他 IPFS 子系统可能会连接管理器之前了解连接。以前, 如果某些 IPFS 子系统试图在连接管理器了解连接之前将其标记为有用, 则连接管理器将放弃此信息。我们认为这造成 #6271

改进交换连接管理

Bitswont 现在使用连接管理器将所有对等方下载块标记为重要 (在下载时)。以前, 它只标记从其下载块的对等方。

内存使用

此版本中最明显的内存减少来自修复连接关闭。但是, 我们还做了一些其他改进
  • Bit交易量交换的 “工作队列” 不再记得它无限期地看到的每一个对等

  • 对等节点现在试用协议名。

  • 每个同伴的goroutine计数已经减少。

  • DHT现在通过将缓冲写入合用并在不主动使用它们时将它们返回到池中,从而减少了对空闲对等点的内存浪费。

增加了文件描述符限制

默认文件描述符限制已提高到 8192 (从2048年开始)。不幸的是, 当它用完文件描述符时, go-ipfs 的行为很糟糕, 并且它使用大量文件描述符。 幸运的是, 大多数现代内核可以毫无困难地处理数千个文件描述符。

连接握手延迟减少

Libp2p 现在在启动连接时, 在远程对等响应初始握手消息之前, 通过启动协议协商来摆脱几次往返行程。 在最佳情况下 (当目标对等方使用我们的首选协议时), 这将握手往返次数从6次减少到 4次 (包括 TCP 握手)。 此版本不会带来新的命令, 但确实会引入一些更改、错误修复和增强功能。此部分几乎不完整, 但它列出了最明显的变化。

请注意此版本还引入了一些重大更改。

[精益求精]已弃用的 URLStore 命令

实验性的ipfs urlstore命令现在已弃用。请使用ipfs add –nocopy URL

[破门而入]DHT 命令基64编码值

当响应ipfs dht get命令时, 守护程序现在使用 base64 对返回值进行编码。ipfs命令将在将此值返回给用户之前自动解码, 因此此更改应只影响那些使用 HTTP api 的用户。 遗憾的是, 此更改是必需的, 因为 DHT 记录是任意的二进制 blobs, 不能直接存储在 JSON 字符串中。

[破门而入]默认情况下的基本编码 v1 CIDs

现在js-ipfs 和 go-ipfs 现在都使用 base32 (而不是 base32) 对 CIDv1 Cids 进行编码。遗憾的是base58 区分大小写, 不能很好地使用浏览器 (请参阅#4143)。

人类可读数字

ipfs bitswap stat  ipfs object stat 命令现在支持一个–humanize标志, 用人类可读的单位 (gib、mib 等) 设置数字格式。

改进的错误

此版本改进了两种类型的错误:
  1. 采取 paths/multiaddrs 的命令现在包括 path/multiaddr 在错误消息中, 当它无法分析

  2. ipfs swarm connect现在返回一个详细的错误, 描述哪些地址已尝试, 以及拨号失败的原因。

Ping 改进

Ping 命令已收到一些小的改进和修复:
  1. 它现在在失败时退出时处于非零退出状态。

  2. 如果我们有一个僵死的但是与被ping的对等点的非功能性连接,那么它将不再在没有成功ping的情况下成功(#6298)

  3. 现在, 当使用^C (如 unix ping命令) 取消时, 它将输出平均延迟。

改进的帮助文本

Go-ipfs 现在智能地帮助文本包装, 以便于阅读。在80个字符宽的终端上 之前  

 

特点

这个版本主要是一个bug修复版本,但它仍然包含libp2p的两个不错的特性。 实验TLS1.3支持 Go-ipfs 现在有实验性的 TLS1.3 支持。目前, libp2p (IPFS 的网络库) 使用我们称之为 SECIO 的类似 tls 的自定义协议。然而, 关于定制安全运输的传统智慧是 “只是不”, 所以我们正在努力用 TLS1.3 取代它。 要在默认情况下选择此协议, 请设置Experimental.PreferTLS
> ipfs config --bool Experimental.PreferTLS true
为什么是 TLS1.3 而不是 X (noise等)?

1. Libp2p 允许协商传输, 因此没有理由不添加noise支持 libp2p。

2. TLS 具有广泛的语言支持, 这应该会使新语言实现 libp2p 简单得多。

现在可以使用 OpenSSL 支持构建 Go-ipfs, 以便在建立连接时提高性能。这对于每秒接收多个入站连接的节点非常有用。 要启用 opensl 支持, 请使用以下方法重建 go-ipfs:

> make build GOFLAGS=-tags=openssl

CoreAPI

CoreAPI重构仍在进行中,我们在实现一个可用的ipfs-as-a-library构造函数方面取得了重大进展。具体来说,我们已经集成了fx依赖注入系统,现在正在清理初始化逻辑。这将使向go-ipfs进程注入新服务变得更容易,而不会破坏核心内部结构。

构建GOCC环境变量

构建系统现在使用GOCC环境变量,允许在构建期间使用特定的go版本。

非常感谢大家让这个版本成为可能

向参与此次发布的所有贡献者(包括对ipld、libp2p和multiformats的贡献)大声感谢:

 

 

想贡献?

 

您是否愿意为IPFS项目做出贡献而不知道如何做?你可以从以下几个地方开始

  • 使用go-ipfs repo中的help wanted标签检查问题

  • 加入IPFS All Hands,介绍您自己,并让我们知道您想在哪里做出贡献—https://github.com/ipfs/teammgmt/# weekly-ipfs-all-hands

  • 黑客与IPFS,让我们看看你做了什么All Hands call也是演示的完美场所,加入并向我们展示您所构建的

  • 请访问http://discuss.ipfs加入讨论。并帮助用户找到他们的答案

  • 加入的核心开发团队每周同步成为行动的一部分!

 

疑问?

关于IPFS、它是如何工作的以及您可以使用它做什么,最好的提问地点是discussion . IPFS .io。我们也可以在Freenode上的#ipfs频道找到。

本文由IPFS原力区编译,原文链接:https://blog.ipfs.io/93-go-ipfs-0.4.21

IPFS原力区

Slogan:让存储更安全、更高效、更开放、更经济 价值观:价值 共建 共享 荣耀

总部位于上海,聚集基于分布式网络&存储的众多技术大咖和爱好者,深耕基于 IPFS 的商业生态建设和社区发展。

每周二举办“分布式存储网络”主题沙龙,聚集了众多技术大咖和 IPFS 爱好者,通过持续输出全面、精细、优质的 IPFS 咨询和技术支持,将生态中的爱好者转化为 IPFS支持者和参与者,共建 IPFS 生态的健康发展。

  阅读原文,协议学院活动  快速了解

原创文章,作者:IPFSforce,如若转载,请注明出处:http://ipfser.org/2019/06/13/go-ipfs-0-4-21fabu/

发表评论

登录后才能评论

联系我们

在线咨询:点击这里给我发消息

邮件:ipfsforce@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code