Skip to content

Latest commit

 

History

History
133 lines (94 loc) · 6.59 KB

v0.30.md

File metadata and controls

133 lines (94 loc) · 6.59 KB

Kubo changelog v0.30

v0.30.0

Overview

🔦 Highlights

WebRTC-Direct Transport enabled by default

Kubo now ships with /udp/4001/webrtc-direct listener enabled by default.

WebRTC Direct complements existing /wss (Secure WebSockets) and /webtransport transports. Unlike /wss, which requires a domain name and a CA-issued TLS certificate, WebRTC Direct works with IPs and can be enabled by default on all Kubo nodes.

Learn more: Swarm.Transports.Network.WebRTCDirect

Note

Kubo 0.30 includes a migration for existing users that adds /webrtc-direct listener on the same UDP port as /udp/{port}/quic-v1. This supports the WebRTC-Direct rollout by reusing preexisting UDP firewall settings and port mappings created for QUIC.

AutoNAT V2 Service Introduced Alongside V1

The AutoNAT service enables nodes to determine their public reachability on the internet. AutoNAT V2 enhances this protocol with improved features. In this release, Kubo will offer both V1 and V2 services to other peers, although it will continue to use only V1 when acting as a client. Future releases will phase out V1, transitioning clients to utilize V2 exclusively.

For more details, see the Deployment Plan for AutoNAT V2 and AutoNAT configuration options.

Automated ipfs version check

Kubo now performs privacy-preserving version checks using the libp2p identify protocol on peers detected by the Amino DHT client. If more than 5% of Kubo peers seen by your node are running a newer version, you will receive a log message notification.

  • For manual checks, refer to ipfs version check --help for details.
  • To disable automated checks, set Version.SwarmCheckEnabled to false.

Version Suffix Configuration

Defining the optional agent version suffix is now simpler. The Version.AgentSuffix value from the Kubo config takes precedence over any value provided via ipfs daemon --agent-version-suffix (which is still supported).

Note

Setting a custom version suffix helps with ecosystem analysis, such as Amino DHT reports published at https://stats.ipfs.network

/unix/ socket support in Addresses.API

This release fixes a bug which blocked users from using Unix domain sockets for Kubo's RPC (instead of a local HTTP port).

$ ipfs config Addresses.API "/unix/tmp/kubo.socket"
$ ipfs daemon # start with rpc socket
...
RPC API server listening on /unix/tmp/kubo.socket

$ # cli client, in different terminal can find socket via /api file
$ cat $IPFS_PATH/api
/unix/tmp/kubo.socket

$ # or have it pased via --api
$ ipfs --api=/unix/tmp/kubo.socket id

Cleaned Up ipfs daemon Startup Log

The ipfs daemon startup output has been streamlined to enhance clarity and usability:

$ ipfs daemon
Initializing daemon...
Kubo version: 0.30.0
Repo version: 16
System version: amd64/linux
Golang version: go1.22.5
PeerID: 12D3KooWQ73s1CQsm4jWwQvdCAtc5w8LatyQt7QLQARk5xdhK9CE
Swarm listening on 127.0.0.1:4001 (TCP+UDP)
Swarm listening on 192.0.2.10:4001 (TCP+UDP)
Swarm listening on [::1]:4001 (TCP+UDP)
Swarm listening on [2001:0db8::10]:4001 (TCP+UDP)
Run 'ipfs id' to inspect announced and discovered multiaddrs of this node.
RPC API server listening on /ip4/127.0.0.1/tcp/5001
WebUI: http://127.0.0.1:5001/webui
Gateway server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready

The previous lengthy listing of all listener and announced multiaddrs has been removed due to its complexity, especially with modern libp2p nodes sharing multiple transports and long lists of /webtransport and /webrtc-direct certhashes. The output now features a simplified list of swarm listeners, displayed in the format host:port (TCP+UDP), which provides essential information for debugging connectivity issues, particularly related to port forwarding. Announced libp2p addresses are no longer printed on startup, because libp2p may change or augument them based on AutoNAT, relay, and UPnP state. Instead, users are prompted to run ipfs id to obtain up-to-date list of listeners and announced multiaddrs in libp2p format.

UnixFS 1.5: Mode and Modification Time Support

Kubo now allows users to opt-in to store mode and modification time for files, directories, and symbolic links. By default, if you do not opt-in, the old behavior remains unchanged, and the same CIDs will be generated as before.

The ipfs add CLI options --preserve-mode and --preserve-mtime can be used to store the original mode and last modified time of the file being added, and ipfs files stat /ipfs/CID can be used for inspecting these optional attributes:

$ touch ./file
$ chmod 654 ./file
$ ipfs add --preserve-mode --preserve-mtime -Q ./file
QmczQr4XS1rRnWVopyg5Chr9EQ7JKpbhgnrjpb5kTQ1DKQ

$ ipfs files stat /ipfs/QmczQr4XS1rRnWVopyg5Chr9EQ7JKpbhgnrjpb5kTQ1DKQ
QmczQr4XS1rRnWVopyg5Chr9EQ7JKpbhgnrjpb5kTQ1DKQ
Size: 0
CumulativeSize: 22
ChildBlocks: 0
Type: file
Mode: -rw-r-xr-- (0654)
Mtime: 13 Aug 2024, 21:15:31 UTC

The CLI and HTTP RPC options --mode, --mtime and --mtime-nsecs can be used to set them to arbitrary values.

Opt-in support for mode and mtime was also added to MFS (ipfs files --help). For more information see --help text of ipfs files touch|stat|chmod commands.

Note

Storing mode and mtime requires root block to be dag-pb and disabled raw-leaves setting to create envelope for storing the metadata.

📝 Changelog

👨‍👩‍👧‍👦 Contributors