Skip to content

v0.16.0

Compare
Choose a tag to compare
@galargh galargh released this 04 Oct 11:34
· 1564 commits to master since this release
v0.16.0
38117db

🗣 Discuss

If you have comments, questions, or feedback on this release, please post here.

If you experienced any bugs with the release, please post an issue.

🔦 Highlights

🛣️ 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.

$ 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

Thoses steps are temporary and wont 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:
    [
      "/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):

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

$ 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):

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

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

Changelog

Full Changelog

Contributors

Contributor Commits Lines ± Files Changed
Marten Seemann 236 +12637/-24326 1152
Raúl Kripalani 118 +11626/-4136 422
vyzo 144 +10129/-3665 230
galargh 9 +5293/-5298 26
Marco Munizaga 83 +7502/-3080 147
Antonio Navarro Perez 33 +4074/-1240 78
Steven Allen 98 +1974/-1693 202
Cole Brown 57 +2169/-1338 95
Rod Vagg 21 +2588/-768 56
Gus Eggert 16 +2011/-1226 36
Yusef Napora 6 +2738/-187 43
Raúl Kripalani 2 +1000/-889 18
Łukasz Magiera 26 +1312/-500 54
Will 2 +1593/-200 18
Jorropo 31 +924/-712 204
Juan Batiz-Benet 2 +1531/-9 21
Jeromy 14 +691/-468 51
Petar Maymounkov 4 +469/-285 25
Jeromy Johnson 24 +474/-204 116
Justin Johnson 1 +582/-93 7
Aarsh Shah 24 +377/-105 34
web3-bot 18 +246/-228 93
Masih H. Derkani 2 +197/-213 21
Marcin Rataj 9 +211/-176 16
adam 4 +235/-49 9
Jakub Sztandera 9 +203/-73 13
Guilhem Fanton 1 +216/-48 5
Lucas Molas 1 +219/-9 3
Peter Argue 1 +166/-36 3
Vibhav Pant 4 +186/-12 7
Adrian Lanzafame 3 +180/-16 5
Lars Gierth 5 +151/-41 25
João Oliveirinha 1 +124/-38 11
dignifiedquire 3 +122/-33 6
Chinmay Kousik 2 +128/-4 7
Toby 1 +89/-36 4
Oleg Jukovec 3 +111/-14 8
Whyrusleeping 2 +120/-0 6
KevinZønda 1 +81/-20 2
wzp 2 +86/-3 2
Benedikt Spies 1 +75/-12 8
nisainan 1 +33/-43 12
Tshaka Eric Lekholoane 1 +57/-19 6
cpuchip 1 +65/-6 2
Roman Proskuryakov 2 +69/-0 2
Arceliar 2 +36/-28 2
Maxim Merzhanov 1 +29/-24 1
Richard Ramos 1 +51/-0 2
Dave Collins 1 +25/-25 4
Leo Balduf 2 +37/-10 3
David Aronchick 1 +42/-0 3
Didrik Nordström 1 +35/-6 1
Vasco Santos 1 +20/-20 7
Jesse Bouwman 1 +19/-21 1
Ivan Schasny 2 +22/-14 4
MGMCN 1 +9/-24 2
Brian Meek 1 +14/-17 4
Ian Davis 3 +21/-9 5
Mars Zuo 1 +7/-18 1
RubenKelevra 1 +10/-10 1
mojatter 1 +9/-8 1
Cory Schwartz 1 +0/-17 1
Steve Loeppky 6 +7/-6 6
Matt Joiner 2 +10/-3 2
Winterhuman 2 +7/-5 2
Dmitry Yu Okunev 1 +5/-7 5
corverroos 1 +7/-4 2
Marcel Gregoriadis 1 +9/-0 1
Ignacio Hagopian 2 +7/-2 2
Julien Muret 1 +4/-4 2
Eclésio Junior 1 +8/-0 1
Stephan Eberle 1 +4/-3 1
muXxer 1 +3/-3 1
eth-limo 1 +3/-3 2
Russell Dempsey 2 +4/-2 2
Sergey 1 +1/-3 1
Jun10ng 2 +2/-2 2
Jorik Schellekens 1 +2/-2 1
Eli Wang 1 +2/-2 1
Andreas Linde 1 +4/-0 1
whyrusleeping 1 +2/-1 1
xiabin 1 +1/-1 1
star 1 +0/-2 1
fanweixiao 1 +1/-1 1
dbadoy4874 1 +1/-1 1
bigs 1 +1/-1 1
Tarun Bansal 1 +1/-1 1
Mikerah 1 +1/-1 1
Mike Goelzer 1 +2/-0 1
Max Inden 1 +1/-1 1
Kevin Mai-Husan Chia 1 +1/-1 1
John B Nelson 1 +1/-1 1
Eli Bailey 1 +1/-1 1
Bryan Stenson 1 +1/-1 1
Alex Stokes 1 +1/-1 1
Abirdcfly 1 +1/-1 1