Java IPFS implementation (Nabu), block metadata db, versioned S3 buckets.
This is an exciting new release that means we finally control our whole stack as we switch to a Java implementation of IPFS (that we wrote). We introduce a blockmetadata store that stores for each cid the size, links and BATs. This massively speeds up GC, space usage updates, and read authorizations.
Features:
- Switch from Golang based ipfs-nucleus to Java based Nabu
- Support versioned S3 buckets
- Introduce block metadata db to massively speed up many operations
- infini filter (infinitely expandable bloom filter)
- only use authWrites for raw blocks, and send the BATs for these
- store BATs in block metadata store
Privacy improvements
- don't broadcast block retrievals to DHT or bitswap
- don't provide blocks to DHT unless we are running a mirror (also reduces CPU and bandwidth)
Optimisations:
- 10x less bandwidth usage when idle
- faster peer dials to get blocks
- less CPU and RAM usage
- inline p2p block get authorization
- block repeated block get attempts with invalid auth
- huge speed up to cacheless delete (e.g. in incognito mode)
- use owner to lookup peer to retrieve block from in the common case
- improve sign up oplog from 10 pointer updates and 29 blocks to, 2 pointer updates and 10 blocks
- upgrade HTTP client in JavaPoster
Fixes:
- timezone issue in BAT verification
- fix handling of writable secret links
- Bulk delete on B2 (which is not S3 compliant)
- CAS exception making social post
- support Ed25519 PKI peer id
- event loading in calendar
Release commit:
web-ui/59c4fa5820dd7964a70d992c7bec97ff252e98ea