All notable changes to this project will be documented in this file.
Note:
- The format is based on Keep a Changelog.
- This project adheres to Semantic Versioning.
The following emojis are used to highlight certain changes:
- 🛠 - BREAKING CHANGE. Action is required if you use this functionality.
- ✨ - Noteworthy change to be aware of.
- upgrade to Boxo v0.32.0
- New option
--http-retrieval-denylist. It can be used to avoid connecting to disallowed hosts.
- upgrade to Boxo v0.30.0
- upgrade go-ds-xxx packages to support
go-datastorev0.8.2 query API - updated go-libp2p to v0.41.1
- Fix exporting of routing http client metrics: the endpoint will now include
ipfs_routing_http_client_*metrics routing clients are used. See docs/metrics.md for more details.
- This release upgrades quic-go to v0.50.1. It contains a fix for a remote-triggered panic.
- HTTP block retrieval support: rainbow can now use Trustless HTTP Gateways to perform block retrievals in parallel to Bitswap.
- This takes advantage of peers with
/tls+/httpmultiaddrs (HTTPS is required). - You can enable HTTP retrievals with
--http-retrieval-enable, and limit it to urls of specific hostnames with--http-retrieval-allowlist <hostname>. - You can also ignore provider records from certain peer IDs with
--routing-ignore-providers <peerID>(for example to ignore peer IDs from bitswap endpoints of providers that offer HTTP). - NOTE: this feature works in the same way as Bitswap: known HTTP-peers receive optimistic block requests even for content that they are not announcing. See Boxo's CHANGELOG for more information.
- This takes advantage of peers with
- The default DNSLink resolver for
.ethTLD changed tohttps://dns.eth.limo/dns-queryand.cryptoone changed tohttps://resolver.unstoppable.io/dns-query#231 - Upgrade to Boxo v0.28.0
- Upgrade go-ds-pebble to v0.4.2 and pebble to v1.1.4
- updated go-libp2p to v0.40.0
- require minimum go version 1.24 in go.mod
- Add support for custom DNSLink resolvers (e.g. to support TLDs like
.eth,.crypto). It is possible to set custom DoH resolvers by settingRAINBOW_DNSLINK_RESOLVERSwith the same convention as Kubo'sDNS.Resolvers) #224
- boxo v0.26.0
- This has a number of significant updates including go-libp2p v0.38.1 and go-libp2p-kad-dht v0.28.1
- Upgrade to latest nopfs v0.14.0
- Added endpoints to show and purge connected peers #194
- Added flags to configure bitswap/routing tuning params:
routing-max-requestsrouting-max-providersrouting-max-timeout
- boxo v0.25.0
- go-libp2p-kad-dht v0.28.1
- passing headers that require authorization but are not authorized now results in an HTTP 401 instead of ignoring those headers
- Bitswap settings: Increased default content-discovery limits, with up to 100 in-flight requests.
- updated to boxo 0.24.2
- updated go-libp2p to v0.37.0
- require minimum go version 1.23.2 in go.mod
- boxo 0.24.1
- Support implicit protocol filters from IPIP-484 and customizing them via
--http-routers-filter-protocols. #173 - Dedicated tracing docs.
- Ability to specify the maximum blocksize that bitswap will replace WantHave with WantBlock responses, and to disable replacement when set to zero. #165
- Support use and configuration of pebble as datastore. Pebble provides a high-performance alternative to badger. Options are available to configure key tuning parameters (
pebble-*inrainbow --help).
- Updated Go in go.mod to 1.22
- Updated dependencies
- a bug whereby
FindPeerwon't return results for peers behind NAT which only have/p2p-circuitmultiaddrs go-libp2p-kad-dht#976
- Simple end-to-end test to check that trustless-gateway-domains are set correctly. #151 #157
- HTTP API to dynamically list logging subsystems and modify logging levels for subsystems. #156
- libp2p identify agentVersion correctly indicates rainbow version when shared host is not used
- Tracing per request with auth header (see
RAINBOW_TRACING_AUTH) or a fraction of requests (seeRAINBOW_SAMPLING_FRACTION) - Debugging with
Rainbow-No-Blockcachethat is gated by theAuthorizationheader and does not use the local block cache for the request
- go-libp2p 0.35
- boxo 0.21
- Added more buckets to the duration histogram metric to allow for tracking operations that take longer than 1 minute.
- Release version included in
--versionoutput.
- Now supports remote backends (using RAW block or CAR requests) via
--remote-backends(RAINBOW_REMOTE_BACKENDS). - Added configurable libp2p listen addresses for the Bitswap host via the
libp2p-listen-addrsflag andRAINBOW_LIBP2P_LISTEN_ADDRSenvironment variable
- Rainbow no longer initializes Bitswap server by default, restoring behavior from v1.0.0.
- Rainbow no longer provides announcements of blocks via Bitswap. This is not needed to provide blocks to peers with
RAINBOW_PEERING_SHARED_CACHE. - Rainbow no longer keeps track of other peer's Bitswap wantlists. It will only reply if they have the block at the moment. This should reduce the processing and memory usage.
- ✨ Now supports automatic peering with peers that have the same seed via
--seed-peering(RAINBOW_SEED_PEERING). You can further read how this works indocs/environment-variables.md.
- ✨ Now supports local cache sharing with peers provided via
--peering(RAINBOW_PEERING). You can further read how this works indocs/environment-variables.md.
Our first version. Check the README for all the information regarding 🌈 Rainbow.