Go IPFS v0.4.18 Release Notes

Release Date: 2018-10-26 // over 5 years ago
  • ๐Ÿš€ This is probably one of the largest go-ipfs releases in recent history, 3 months in the making.

    ๐Ÿ”‹ Features

    ๐Ÿš€ The headline features this release are experimental QUIC support, the gossipsub ๐Ÿ”จ pubsub routing algorithm, pubsub message signing, and a refactored ipfs p2p command. However, that's just scratching the surface.

    QUIC

    ๐Ÿš€ First up, on the networking front, this release has also introduced experimental ๐Ÿ‘Œ support for the QUIC protocol. QUIC is a new UDP-based network transport that solves many of the long standing issues with TCP.

    For us, this means (eventually):

    • Fewer local resources. TCP requires a file-descriptor per connection while QUIC (and most UDP based transports) can share a single file descriptor between all connections. This should allow us to dial faster and keep more connections open.
    • Faster connection establishment. When client authentication is included, QUIC has a three-way handshake like TCP. However, unlike TCP, this handshake brings us from all the way from 0 to a fully encrypted, authenticated, and multiplexed connection. In theory (not yet in practice), this should significantly reduce the latency of DHT queries.
    • ๐Ÿ‘ Behaves better on lossy networks. When multiplexing multiple requests over a single TCP connection, a single dropped packet will bring the entire connection to a halt while the packet is re-transmitted. However, because QUIC handles multiplexing internally, dropping a single packets affects only the related stream.
    • ๐Ÿ‘ Better NAT traversal. TL;DR: NAT hole-punching is significantly easier and, in many cases, more reliable with UDP than with TCP.

    โœ… However, we still have a long way to go. While we encourage users to test this, the IETF QUIC protocol is still being actively developed and will change. You can find instructions for enabling it ๐Ÿ“„ here.

    Pubsub

    ๐Ÿ‘ In terms of pubsub, go-ipfs now supports the gossipsub routing algorithm and message signing.

    The gossipsub routing algorithm is significantly more efficient than the ๐Ÿ‘ current floodsub routing algorithm. Even better, it's fully backwards compatible so you can enable it and still talk to nodes using the floodsub algorithm. You can find instructions to enable gossipsub in go-ipfs ๐Ÿ“„ here.

    Messages are now signed by their authors. While signing has now been enabled by 0๏ธโƒฃ default, strict signature verification has not been and will not be for at least ๐Ÿš€ one release (probably multiple) to avoid breaking existing applications. You can ๐Ÿ”ง read about how to configure this feature ๐Ÿ“„ here.

    Commands

    ๐Ÿš€ In terms of new toys, this release introduces a new ipfs cid subcommand for ๐Ÿ”จ working with CIDs, a completely refactored ipfs p2p command, streaming name ๐Ÿ‘ resolution, and complete inline block support.

    The new ipfs cid command allows users to both inspect CIDs and convert them between various formats and versions. For example: