github ethersphere/bee v2.0.0

17 days ago

v2.0.0

The Bee team is elated to announce the official v2.0.0 release. 🎉

In this release we introduce a brand new mechanism of data redundancy in Swarm with erasure coding, which, under the hood, makes use of Reed-Solomon erasure coding and dispersed replicas. This brings a whole new level of protection against potential data loss.

Erasure Coding

A new header Swarm-Redundancy-Level: n can be passed to upload requests to turn on erasure coding where n is [0, 4]. Refer to the table below for different levels of redundancy and chunk loss tolerance.

Redundancy Level Pseudonym Chunk Retrieval Failure Tolerance
0 None 0%
1 Medium 1%
2 Strong 5%
3 Insane 10%
4 Paranoid 50%

Testnet

With this milestone release, the Swarm Testnet is now officially running on the Sepolia blockchain.

Apply the configuration changes below to a fresh node to be able connect to the Sepolia Testnet.

bootnode:
- /dnsaddr/sepolia.testnet.ethswarm.org
blockchain-rpc-endpoint: {a-sepolia-rpc-endpoint}

For questions, comments, and feedback, reach out on Discord.

Features

  • Uploads may now be equipped with erasure coding which brings a new level of data redundancy to Swarm. ( #4491 ).
  • Added a new API endpoint to obtain the content type and length of uploads using the /bzz endpoint with the Head request type. ( #4588 )
  • Re-added livesyncing to chunk syncing in the puller service. ( #4554 )
  • Default testnet setting are now configured for the Sepolia blockchain. ( #4491 )
  • Added a new db command that verifies the integrity of the pinned content. ( #4565 )
  • The pinned content integrity verification can also be done using the API, namely with the new pins/check endpoint. ( #4573 )
  • Added the ability for fresh nodes to use an external neighborhood suggester through the config options for mining the overlay address into a specific neighborhood. By default, the Swarmscanner's least populated/most optimal neighborhood suggester API is used. ( #4580 )

Bug fixes

  • Localstore fixes
    • Fixed a bug where deleting a pin reference that has been pinned more than once was not removing the chunks from the localstore. ( #4558 )
    • Fixed a race condition in the cachestore that was causing refCnt inconsistencies. ( #4525 )
    • Fixed a bug in the cachestore that would not deference already cached chunks after a reserve eviction. ( #4567 )
    • Fixed a cache size bug that would undercount the number of chunks removed from the cache, leading to a cache leak until the next restart of the node. ( #4571 )
    • Fixed a leak in the upload store where the metadata of the individual chunks persists in the localstore long after the chunks have been successfully uploaded to the network. ( #4562 )
    • Fixed the storage radius metric being set incorrectly. ( #4518 )
    • Fixed a bug where the storage radius does not decrease even though the true reserve size is lower than the threshold. ( #4514 )
  • Fixed a vulnerability in the encryption of uploaded data. ( #4604 )

Hardening

  • Updated the btcd crypto library version. ( #4516 )
  • ReserveSizeWithRadius field, which is the count of chunks in the reserve that falls under the responsibility of the node has been added to the status protocol. ( #4585 )
  • Stamper changes
    • The rules for how chunks are stamped before uploading have been changed: regardless of batch type (immutable or mutable), if a chunk has been stamped before, the chunk is restamped using the old batch index and a new timestamp. ( #4556 )
    • Regardless of batch type, the reserve now overwrites chunks that have the same batch index with the higher timestamp. ( #4559 )

For a full PR rundown, please consult the v2.0.0 diff.

Don't miss a new bee release

NewReleases is sending notifications on new releases.