Releases: ethersphere/bee
v1.14.1
v1.14.1
This one is a patch release to fix the innacurate the number of reported active nodes in the swarm scanner.
With this change, light nodes attempting to connect to a peer with a full topology bin won't get rejected.
For questions, comments, and feedback, reach out on discord.
v1.14.0
v1.14.0
Bee v1.14.0
is here!
We've been working hard to bring retrieval protocol improvements, a brand new debugging protocol, increased visibility of the network, and a long list of hardenings.
We've introduced a new skip-list mechanism in retrieval protocol so that on retry attempts, requests reach a wider range of peers to improve the success rate of retrieved chunks.
The release features a brand new protocol that acquires from connected peers important information like their storage radius and reserve size. This will bring new visibility to the network and lays the foundation for future features.
The health ping and chainsync requests are now less frequent to reduce network stream count.
The team has also identified and fixed the issue of failing stewardship checks of encryped content.
For fresh nodes, the intensitivity of the initial syncing phase has been reduced by delaying the syncing of "out of depth" peers to 24 hours after running.
The minimum funds (xDAI) required to participate in the storage incentives has been raised to combat the recent increasing number of pending transactions. The minumum amount can be found on-demand using the existing /redistributionstate
API.
IMPORTANT NOTE:
The handshake protocol has been bumped as there has bee a new redistribution contract release. It's important that all node operators upgrade to the new version. All bootnodes will be upgraded to the new version on 14:00 CET, April 11.
For questions, comments, and feedback, reach out on discord.
Breaking changes
- The handshake protocol has been bumped as there is a new redistribution contract release.
New Features
- Added a new global "sticky" skiplist to the retrieval protocol, similar to the pushsync, so that different peers across the network can be requested on retries (#3921)
- Added a new debugging "status" protocol which acquires all connected peers' storage radius, reserve size, and other information. Can be requested on-demand using the new debug
/status
and/status/peers
endpoints.
Hardening
- Added new retrieval metrics. (#3904)
- Made the pullsync and the puller more resillient to errors. (#3926 #3988)
- Increase the mimumum required funds for a node to participate in the storage incentives. (#3940)
- Persist the state of the storage incentives phases to statestore to make the agent resilient to restarts. (#3943)
- Added extra checks like zero and invalid length address checks to the retrieval protocol before handling the request. (#3954 #3987)
- Improved the receipt check of the pusher for full nodes so that shallow receipts below the storage radius are rejected. (#3994)
Bugfixes
- The traversal package was broken as we did not handle encrypted references. Encrypted reference handling is now fixed. As a side effect, the issue of failing stewardship checks on encrypted references is now resolved. (#3991)
Perfomance Improvements
- The health ping and chainsync requests fire less regurlary to reduce the rate of opened streams. (#3872)
For a full PR rundown please consult the v1.14.0
diff.
v1.13.0
v1.12.0
The Bee team is excited to announce the latest release!
The main focus of the team for past few weeks has been tightening loose ends surrounding chunk syncing.
The release also features a new API endpoint that returns the status of the node related to the storage incentives, like total reward won and the last round the node has participated and won.
Hardening
- The puller also does syncing of proximity order bin with peers outside of the neighborhood and the pushync protocol uses the storage radius for chunk replication . (#3703)
- Rewrote the retrieval protocol to improve readability and maintainability. (#3671)
- Increased the size of the batch of chunks pulled per a single pullsync request. (#3754)
- Removed some stale config options, like block hash and transaction. (#3765)
- Lowered accounting package logging level to two. (#3771)
- Peers that timeout for historical pullsync requests are blocklisted for some time. (#3774)
New features
- Added a new API endpoint (/redistributionstate) that responds with the storage incentives state of node. (#3683)
Bug Fixes
- The depthmonitor resets the storage radius to the reserve radius only for fresh nodes. (#3757)
- The pusher does stamp validation of chunks in the queue just before pushing the chunk, not when entering the queue. (#3760)
For a full PR rundown please consult the v1.12.0
milestone.
v1.11.1
This release is a patch release to fix an issue seen during the latest migration done on upgrade to v1.11.0
. This causes the node to fail on boot up and hence node operators are advised to update to v1.11.1
directly if they haven't updated to v1.11.0
.
Bugfixes
- Ignore errors that are not fatal on the residual migration. (#3715)
v1.11.0
The Bee team is excited to announce the latest release which mostly consists of minor fixes to chunk syncing and improved uploading experience.
The important news is uploads with mutable batches (which are the most common type of batches) are no longer terminated when max utilization of the batch is reached, whereby newer chunks that belong to the batch will simply replace older chunks in the network.
Hardening
- The node is interruptible while it's waiting for the NAT initialization. (#3688)
- Batch synchronization can now be gracefully suspended on interrupt signal. (#3671)
- Removed old overlay mining logic from the codebase. (#3684)
- Added deferred header to allowed CORs headers. (#3669)
New features
- Uploads with mutable batches are not stopped when max utilization is reached. (#3685)
Bug Fixes
- Fixed the depthmonitor to track active syncing background jobs instead of chunks per second when choosing to reduce the syncing/storage radius. (#3680)
- Lowered the minimum required reserve size to maintain a stable storage radius from 50% of the capacity to 40%. (#3682)
For a full PR rundown please consult the v1.11.0
milestone.
v1.10.0
The last release was one of the most substantial upgrades to the Swarm network since the mainnet launch. With the storage incentives, nodes could stake BZZ and take part in the schelling game. This was disabled by default as we were testing the entire system integration on the testnet.
To prepare the network for the storage incentives, we have been testing all of our changes in the public testnet and in private networks operated internally by the team. We found a number of issues with our local storage and syncing protocols, and have made major improvements to chunk syncing and localstore with the end goal that the individual reserves of the bee node matches the collective reserve of its neighborhood to be able to succesfully participate in the schelling game/storage incentives.
One protocol that went under major overhaul has been pullsync. The protocol is now overall more resiliant to errors which should improve the syncing of data and as a result the retrievability of data in the network.
Due to the changes in pullsync protocol, this release will be a breaking release for full nodes who take part in syncing as there will be a protocol version bump. This release also includes new contracts, so it will include a bump in the handshake protocol.
A myriad of bug fixes and simplifications have been made to the localstore, specificially to improve reserve evictions and garbage collection. As a side effect of these changes, disk usage has improved so fewer db nukes is expected. We've also found inconsistencies in the internal state of the bee's local data, and as part of deploying the new version, a migration will automatically run during bootup to address this.
We also bring the new EIP-1559 transaction type for all blockchain transactions from the Bee side to improve the rate of transactions going through reliably on time.
Couple of issues in the smart contracts have been fixed and we have updated the contract addresses used in the testnet and mainnet.
There are a bunch of other changes related to observability, so new metrics! There are some API changes and so please check the API docs for more information.
Breaking changes
- Rewrite of the puller and pullsync package. This was done to make syncing more resilient to errors and also conform with the new incentives workflow. (#3437, #3456, #3501, #3515, #3520, #3555, #3625)
- The localstore package was heavily refactored. This includes some changes to how the node stores indexes related to the reserve and cache storage of the node. We also identified few incorrect entries that the localstore maintains and the nodes will perform a migration to get rid of these. (#3447, #3566, #3579, #3584, #3585, #3591, #3595, #3614, #3627, #3629)
- For the wallet endpoint, fields now have better names, and features a new wallet address field. (#3571)
- The default value of the initial deposit changed to
0
. (#3489) - The staking API endpoints have changed a bit to be more consistent. (#3472)
- Handshake protocol version bump due to new contracts. (#3659)
Hardening
- Simplify parsing and validation of HTTP endpoints. (#3344)
- Added more metrics around the storage incentives features. (#3449, #3474, #3587, #3628)
- Enabled the parallel tests linter and fixed some of the tests to conform to it. The unit tests now run much faster. (#3432, 3436)
- Remove the hacky config usage in kademlia package. (#3360)
- API errors are now more meaningful. (#3450)
- Bootnodes will no longer participate in Pushsync protocol. (#3616)
New features
- Bee now uses the new EIP-1559 transactions. (#3504, #3502, #3559, #3562, #3617)
- All blockchain transactional APIs now include the transaction hash in the response. (#3573)
- A new API was added which allows nodes to withdraw their stakes if the contract is paused. (#3662)
Bugfixes
- An issue causing a redirect loop in the browser on the
/bzz
endpoint was fixed. (#3457) - A bunch of issues were fixed in the smart contracts. This include a corresponding bee change to update the new addresses. (#3666)
For a full PR rundown please consult the v1.10.0
milestone.
v1.9.0
The Bee team is excited to announce the latest release which includes the second phase of the storage incentives! The release also includes a myriad of hardenings and bug fixes that can be found below.
The storage incentives can be previewed on the testnet, but as a feature it is not enabled on the mainnet.
Breaking changes
- Deprecated the gateway mode. #3265
Hardening
- Mined or new overlays are preserved on db nuke. #3384
- Enabled more linting rules on the codebase. (#3304, #3305, #3299)
- A lot of the unit tests are now refactored to conform with the new linters. (eg #3293 #3332 #3342 and more)
- Increased the retry count for chunk retrievals. #3419
- Removed the lower bound for the storage radius monitored by depthmonitor. #3382
New features
- Exposed readiness and health endpoints. #3248
- Users can now configure the gas limit for contract related APIs using HTTP headers. #3352
- Storage incentives
- Added a new feature flag to enable the feature in testnet. #3358
- Implemented the api and the the contracts calls to the staking contract. #3341
- Implemented the agent for monitoring incentives phases. #3347
- Openapi docs for staking endpoint
- Implemented the contracts calls to the incentives smart contract. #3355
- Added metrics for the agent. #3369
- Implemented the reserve commitment sampler which produces a special hash of the reserve to be reported to the incentives contract by the agent. #3335
Bugfixes
- Fixed an invalid memory address bug by making chain-backend available before the technical debug is mounted. #3261
- Fixed a small sharky leak when context is canceled. #3274
- On start up, correct
expired
field is set based on if the batch exists in the batchstore. #3289 #3269 - Added not implemented error for topup and dilute APIs in devnode. #3131
- Make wallet endpoint avaiable only when swap-enabled is set to true. #3271
- Reserve size to only include chunks with proximity order greater than or equal to storage radius. #3322
- Fixed a bug where the API now sends the correct response if there is a slash in website index document. #3229
- Fixed a bug where a fethcing a newly purchaged batch returns an error. #3370
For a full PR rundown please consult the v1.9.0
milestone.
v1.8.2
This small release includes a new accurate reserve size calculation method for the depthmonitor which helps the storage/eviction radius decrease to a more accurate value. The depthmonitor change affects the neighborhood size of the pullsync protocol so it is important that node operators upgrade to this version as soon as possible.
Bugfixes
- Reserve size to only consider chunks with promixity order greater than or equal to storage radius for the depthmonitor. (#3322)
v1.8.1
This release is a patch release to fix the postage stamp smart contract issues observed on the mainnet. Node operators will need to upgrade as soon as possible.
On reboot, nodes will do a full reset of the batchstore and resync batches from the new contract.