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.
- 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_RESOLVERS
with 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-requests
routing-max-providers
routing-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
FindPeer
won't return results for peers behind NAT which only have/p2p-circuit
multiaddrs 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-Blockcache
that is gated by theAuthorization
header 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
--version
output.
- 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-addrs
flag andRAINBOW_LIBP2P_LISTEN_ADDRS
environment 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.