v2.0.0
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 theHead
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 )