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 refactoredipfs 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: