请选择 进入手机版 | 继续访问电脑版
开启辅助访问
链路首页链路财经目前收录 币种 : 4908 交易所 : 310钱包 : 17 24H 交易量 : $43,403,137,051 总市值 : $245,388,183,835
2019
06/13
09:10
分享
评论
  • 本文由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 生态的健康发展。







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

主题帖 475 关注 0 粉丝 0
情感指数

链路大数据分析置信度 61.29 %

TA的主题帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表