Back to Kubo

Kubo changelog v0.16

docs/changelogs/v0.16.md

0.41.034.6 KB
Original Source

Kubo changelog v0.16

v0.16.0

Overview

Below is an outline of all that is in this release, so you get a sense of all that's included.

🔦 Highlights

<!-- TODO -->

🛣️ More configurable delegated routing system

Since Kubo v0.14.0 Reframe protocol has been supported as a new routing system.

Now, we allow to configure several routers working together, so you can have several reframe and dht routers making queries. You can use the special parallel and sequential routers to fill your needs.

Example configuration usage using the Filecoin Network Indexer and the DHT, making first a query to the indexer, and timing out after 3 seconds.

console
$ ipfs config Routing.Type --json '"custom"'

$ ipfs config Routing.Routers.CidContact --json '{
  "Type": "reframe",
  "Parameters": {
    "Endpoint": "https://cid.contact/reframe"
  }
}'

$ ipfs config Routing.Routers.WanDHT --json '{
  "Type": "dht",
  "Parameters": {
    "Mode": "auto",
    "PublicIPNetwork": true,
    "AcceleratedDHTClient": false
  }
}'

$ ipfs config Routing.Routers.ParallelHelper --json '{
  "Type": "parallel",
  "Parameters": {
    "Routers": [
        {
        "RouterName" : "CidContact",
        "IgnoreErrors" : true,
        "Timeout": "3s"
        },
        {
        "RouterName" : "WanDHT",
        "IgnoreErrors" : false,
        "Timeout": "5m",
        "ExecuteAfter": "2s"
        }
    ]
  }
}'

$ ipfs config Routing.Methods --json '{
      "find-peers": {
        "RouterName": "ParallelHelper"
      },
      "find-providers": {
        "RouterName": "ParallelHelper"
      },
      "get-ipns": {
        "RouterName": "ParallelHelper"
      },
      "provide": {
        "RouterName": "WanDHT"
      },
      "put-ipns": {
        "RouterName": "ParallelHelper"
      }
    }'

🌍 WebTransport new experimental Transport

A new feature of go-libp2p is WebTransport.

For now it is disabled by default and considered experimental. If you find issues running it please report them to us.

In the future Kubo will listen on WebTransport by default for anyone already listening on QUIC addresses.

WebTransport is a new transport protocol currently under development by the IETF and the W3C, and already implemented by Chrome. Conceptually, it’s like WebSocket run over QUIC instead of TCP. Most importantly, it allows browsers to establish (secure!) connections to WebTransport servers without the need for CA-signed certificates, thereby enabling any js-libp2p node running in a browser to connect to any kubo node, with zero manual configuration involved.

The previous alternative is websocket secure, which require installing a reverse proxy and TLS certificates manually.

How to enable WebTransport

Those steps are temporary and won't be needed once we make it enabled by default.

  1. Enable the WebTransport transport: ipfs config Swarm.Transports.Network.WebTransport --json true
  2. Add a listener address for WebTransport to your Addresses.Swarm key, for example:
    json
    [
      "/ip4/0.0.0.0/tcp/4001",
      "/ip4/0.0.0.0/udp/4001/quic",
      "/ip4/0.0.0.0/udp/4002/quic/webtransport"
    ]
    
  3. Restart your daemon to apply the config changes.

🗃️ Hardened IPNS record verification

Records that do not have a valid IPNS V2 signature, or exceed the max size limit, will no longer pass verification, and will be ignored by Kubo when resolving /ipns/{libp2p-key} content paths.

Kubo continues publishing backward-compatible V1+V2 records that can be resolved by V1-only (go-ipfs <0.9.0) clients.

More details can be found in Backward Compatibility, Record Creation, and Record Verification sections of the updated IPNS specification.

🌉 Web Gateways now support _redirects files

This feature enables support for redirects, single-page applications (SPA), custom 404 pages, and moving to IPFS-backed website hosting without breaking existing HTTP links.

It is limited to websites hosted in web contexts with unique Origins, such as subdomain and DNSLink gateways. Redirect logic is evaluated only if the requested path is not in the DAG.

See more details and usage examples see docs.ipfs.tech: Redirects, custom 404s, and SPA support.

😻 Add files to MFS with ipfs add --to-files

Users no longer need to call ipfs files cp after ipfs add to create a reference in MFS, or deal with low level pins if they do not wish to do so. It is now possible to pass MFS path in an optional --to-files to add data directly to MFS, without creating a low level pin.

Before (Kubo <0.16.0):

console
$ ipfs add cat.jpg
QmCID
$ ipfs files cp /ipfs/QmCID /mfs-cats/cat.jpg
$ ipfs pin rm QmCID # removing low level pin, since MFS is protecting from gc

Kubo 0.16.0 collapses the above steps into one:

console
$ ipfs add --pin=false cat.jpg --to-files /mfs-cats/

A recursive add to MFS works too (below line will create /lots-of-cats/ directory in MFS):

console
$ ipfs add -r ./lots-of-cats/ --to-files /

For more information, see ipfs add --help and ipfs files --help.

Changelog

<details> <summary>Full Changelog</summary> </details>

Contributors

ContributorCommitsLines ±Files Changed
Marten Seemann236+12637/-243261152
Raúl Kripalani118+11626/-4136422
vyzo144+10129/-3665230
galargh9+5293/-529826
Marco Munizaga83+7502/-3080147
Antonio Navarro Perez33+4074/-124078
Steven Allen98+1974/-1693202
Cole Brown57+2169/-133895
Rod Vagg21+2588/-76856
Gus Eggert16+2011/-122636
Yusef Napora6+2738/-18743
Raúl Kripalani2+1000/-88918
Łukasz Magiera26+1312/-50054
Will2+1593/-20018
Jorropo31+924/-712204
Juan Batiz-Benet2+1531/-921
Jeromy14+691/-46851
Petar Maymounkov4+469/-28525
Jeromy Johnson24+474/-204116
Justin Johnson1+582/-937
Aarsh Shah24+377/-10534
web3-bot18+246/-22893
Masih H. Derkani2+197/-21321
Marcin Rataj9+211/-17616
adam4+235/-499
Jakub Sztandera9+203/-7313
Guilhem Fanton1+216/-485
Lucas Molas1+219/-93
Peter Argue1+166/-363
Vibhav Pant4+186/-127
Adrian Lanzafame3+180/-165
Lars Gierth5+151/-4125
João Oliveirinha1+124/-3811
dignifiedquire3+122/-336
Chinmay Kousik2+128/-47
Toby1+89/-364
Oleg Jukovec3+111/-148
Whyrusleeping2+120/-06
KevinZønda1+81/-202
wzp2+86/-32
Benedikt Spies1+75/-128
nisainan1+33/-4312
Tshaka Eric Lekholoane1+57/-196
cpuchip1+65/-62
Roman Proskuryakov2+69/-02
Arceliar2+36/-282
Maxim Merzhanov1+29/-241
Richard Ramos1+51/-02
Dave Collins1+25/-254
Leo Balduf2+37/-103
David Aronchick1+42/-03
Didrik Nordström1+35/-61
Vasco Santos1+20/-207
Jesse Bouwman1+19/-211
Ivan Schasny2+22/-144
MGMCN1+9/-242
Brian Meek1+14/-174
Ian Davis3+21/-95
Mars Zuo1+7/-181
RubenKelevra1+10/-101
mojatter1+9/-81
Cory Schwartz1+0/-171
Steve Loeppky6+7/-66
Matt Joiner2+10/-32
Winterhuman2+7/-52
Dmitry Yu Okunev1+5/-75
corverroos1+7/-42
Marcel Gregoriadis1+9/-01
Ignacio Hagopian2+7/-22
Julien Muret1+4/-42
Eclésio Junior1+8/-01
Stephan Eberle1+4/-31
muXxer1+3/-31
eth-limo1+3/-32
Russell Dempsey2+4/-22
Sergey1+1/-31
Jun10ng2+2/-22
Jorik Schellekens1+2/-21
Eli Wang1+2/-21
Andreas Linde1+4/-01
whyrusleeping1+2/-11
xiabin1+1/-11
star1+0/-21
fanweixiao1+1/-11
dbadoy48741+1/-11
bigs1+1/-11
Tarun Bansal1+1/-11
Mikerah1+1/-11
Mike Goelzer1+2/-01
Max Inden1+1/-11
Kevin Mai-Husan Chia1+1/-11
John B Nelson1+1/-11
Eli Bailey1+1/-11
Bryan Stenson1+1/-11
Alex Stokes1+1/-11
Abirdcfly1+1/-11