Skip to content

Releases: ethersphere/bee

v1.8.0

13 Sep 14:21
Compare
Choose a tag to compare

The Bee team is excited to announce the latest release which brings the storage incentives a step closer. The first phase of the implementation brings the need to upgrade the postage stamp contract. This is going to be a breaking release, meaning that the previous versions of Bee will not be able to connect to the new version of Bee, so node operators will need to upgrade as soon as possible.

One note of caution is that due to the overlay address calculation change, during the initial bootup after the upgrade, old full nodes will go through an overlay migration process, preventing the node from becoming available for some while.

Breaking changes

  • Postage contract update. The new postage contract will make the postage batches redistributable. (#3159)
  • Overlay address calculation change. (#3159)
  • Depth Monitor service to dynamically adjust storage depth of node based on utilization. (#3061)
  • Asynchoronous refreshments to allow non-blocking protocol interactions. (#2965)
  • Handshake version update to prevent nodes running older version from connecting with the new ones. (#3159)

Hardening

  • Restrict the transaction endpoint. (#3121)
  • Cleanups related to API, extra information on errors. (#3170, #3148)

New features

  • Introduce structural logging. Users can now enable/disable logging subsystems using the HTTP API. Please check the OpenAPI spec for details. (#2975, #3147)
  • Background syncing of postage events for light node. This allows the node to serve other APIs immediately. (#3127)
  • Added new expired property to the stamps queried on the stamps endpoint. This can be used to distinguish between stamps that were just created and the stamps that have expired. (#3162)

Bugfixes

  • Fixed an out of memory error during GC. This is a rare case which could happen on large batch expirations. (#3247)
  • Handle malformed manifest contents. (#3238)

For a full PR rundown please consult the v1.8.0 milestone.

v1.7.0

24 Jul 21:55
bbf1301
Compare
Choose a tag to compare

Due to an unanticipated behavior of library updates that were done in the last release, we are rolling back some of the changes, alongside some significant bug fixes for the retrieval protocol which has resulted in a protocol logic change that has necessitated a protocol version bump as to prevent possible downturn of the mixed logic in the network. Node operators are requested to update to the latest version as soon as possible. Nodes which are not updated will not be able to retrieve data from the network.

Hardening

  • Improve postage snapshot bootstrapper reliability. (#3081)

New features

  • Add support for OPTIONS method on the API endpoints. (#3089)

Bugfixes

  • Revert the go1.18 and libp2p updates. (#3111)
  • Fix the closest peer selection logic in retrieval protocol. (#3108)
  • Determine the request originator correctly on forwarding in retrieval. (#3106)

Performance improvements

  • Reinstate the naive next slot allocation in sharky. (#3105)

For a full PR rundown please consult the v1.7.0 milestone.

v1.6.3

20 Jul 08:16
90de205
Compare
Choose a tag to compare

This release is mostly a patch release to fix some issues observed on the mainnet related to high CPU consumption of Bee nodes. Bee client now uses go1.18. There are a couple of other fixes also included, please go through the changelog for more information.

Hardening

  • Update to go 1.18 (#2941, #3102)
  • Bump geth to v1.10.18. (#2998)
  • Retry push sync when overdraft peer might be closest one. (#3052)
  • Reduce the protocols warmup time to 5 mins. This is based on new observations on the mainnet. (#3059)
  • Combine the chain-enable and swap-endpoint flags. If user provides a swap-endpoint, a separate flag to enable chain is not required. (#3066)
  • Don't use encoding for default dev admin password. (#3076)
  • Add sanity checks to ethereum gas prices. (#3077)
  • Don't create new metrics snapshot on evaluating peer reachability. (#3091)

Bugfixes

  • Timeout stuck upload on bytes endpoint. (#3041)
  • Multipart upload is no longer supported on the /bytes endpoint. (#3044)
  • Allow streaming chunk uploads for long running connections. (#3047)
  • Add missing batch store for dev mode initialization. (#3063)
  • Revert to old behavior and open the API listener after postage syncing is done. (#3065)
  • Don't allow upload with expired stamp. (#3073)
  • Fixed a panic in ultra light mode. (#3093)

For a full PR rundown please consult the v1.6.3 milestone.

v1.6.2

29 Jun 11:12
Compare
Choose a tag to compare

With the summer solstice behind us, the Bee team is excited to announce the latest release v1.6.2. This release consists of some new features, performance recalibrations and also some bug fixes.

Hardening

  • Improve kademlia saturation peers count calculation. (#2996)
  • Increase kademlia bit suffix length to improve bin population. This should improve overall connectivity of the node. (#2971)
  • Make postage snapshot bootstrapper more resilient with retries on failure. (#2997)

New features

  • Enable /chainstate endpoint on debug API. This will allow users to query chainstate endpoint during bootstrapping phase to get status of the process. (#3012)
  • Merge debug API endpoints into main API service. Going ahead we have decided to have only one HTTP API for bee. With this release all debug API endpoints will be available on regular API. However the debug API is still there for now. (#2846)
  • Subdomain support for bee. Users can now use a secure browser context for accessing the data using subdomains. Essentially, users can now access the references from /bzz endpoint as http://<CID or ENS>.swarm.localhost:<port>/{path}. This change also adds support for CID resolution to bee. (#2970)
  • Enable HEAD requests on the /bytes endpoint. Users can use the HEAD request to get content-length of a swarm reference. (#3027)

Bugfixes

  • Improve shutdown sequence to be more resilient. (#3022)
  • Handle SOC chunk in traversal. Users can now unpin SOC chunks. (#3006)
  • Maintain stampissuers on db nuke. This allows the nodes to maintain stamissuer data and hence prevent restamping of same chunks on upload of the same data. (#3011)
  • Configure debugAPI for devmode. (#3001)
  • Move readiness endpoint to technical debug. (#3007)

Performance improvements

For a full PR rundown please consult the v1.6.2 milestone.

v1.6.1

01 Jun 21:01
364bf92
Compare
Choose a tag to compare

The Bee team is happy to announce the latest release v1.6.1. The release contains a myriad of bug fixes, codebase hardenings, and a few new features. A particular highlight is the segment inclusion Merkle proofs we've now added that paves the ground for more exciting features coming up in the future.

Hardening

  • Logging is reduced on startup during bootstrapping (#2981)
  • Peer connection attempt from kademlia is skipped if peer is already block-listed (#2976)
  • Added new reservestate total batch commitment metric (#2984)
  • Added new accouting metrics (#2966)
  • Added new stream handler error reset metrics (#2978)
  • Updated package post install messages (#2967)
  • On empty directory uploads, bad request response type is returned instead of internal server error (#2960)

New features

  • Added segment inclusion Merkle proofs in bmt package (#2952)
  • To improve the developer's experience the dev mode has a default admin password when ran in restricted mode (#2947)

Bugfixes

  • Fixed a memory leak in pusher package related to shallow receipt attempts tracking (#2974)
  • Fixed a context related bug in pullsync (#2979)
  • Fixed a nil pointer error on node shutdown (#2968)
  • Fixed /wallet endpoint response object properties in openapi (#2969)
  • Nested paths for multipart uploads now work properly (#2951)
  • Fixed a node shutdown deadlock issue (#2944)

Performance improvements

For a full PR rundown please consult the v1.6.1 milestone.

v1.6.0

13 May 02:25
6ceadd3
Compare
Choose a tag to compare

This latest release is an accumulation of a lot of work done in the last couple of months by the team. We've improved and refactored substantial amount of components and areas of the codebase as well as fixed a few critical bugs. After deploying this version your node will be forced into a blockchain resync, so please allow it time to sync and in case you're updating several nodes at the same time - make sure to shelf the update in a way that does not cause a lot of them to go offline at the same time due to the long restart time caused by chain syncing.

Breaking changes

  • Global pinning has been discontinued from bee. We're looking for ways to enable this sort of solution as an L2 solution on Swarm (#2906, #2869)
  • Nodes will now try to connect to the mainnet by default. In order to connect to the testnet you must specify --mainnet=false (#2859)

Hardening

  • Chain syncing errors will again result in 24h blocking (#2922)
  • We've improved resilience on hibernation and network failure (#2887)
  • Added a missing stream reset stream on add context header fail (#2885)

New features

  • Added a new db indices command to debug database indices (#2924)
  • Added a wallet endpoint to display wallet information for various purposes (#2900)
  • Exposed current block height from chain backend for the chainstate endpoint so that chain syncing status can be displayed (#2893)
  • The node will now log its own overlay address on startup (#2930)
  • Print required funds for gas and respect deployment gas price (#2861)
  • The node has now an option to bootstrap the postage information partially from a snapshot stored on Swarm(!). This saves on the initial syncing time significantly, and reduces the amount of chain calls you would need to do (#2814, #2910)

Bugfixes

  • Added fallback content length check in middleware (#2907)
  • Fixed a bug where unpinning of encrypted references resulted in an error (#2896)
  • Fixed a panic for the stewardship endpoint in dev mode (#2889)
  • CORS are now allowed in dev mode (#2866)
  • Fixed a deadly deadlock in sharky that was caused when a context was cancelled on a Read call (#2932, #2948)
  • Fixed a bug where an error on shutdown would cause issues when reloading stamp issuers on startup (#2914)
  • Fixed a bug where the wrong amount was displayed when purchasing a postage stamp in dev mode (#2945)
  • Removed the free slot optimization from sharky to circumvent shard leakage (#2953)

Performance improvements

  • The postage package has been rewritten and has significant simplifications that should result in a smoother and more correct operation (#2810, #2890, #2895)

For a full PR rundown please consult the v1.6.0 milestone.

v1.5.1

07 Apr 13:49
Compare
Choose a tag to compare

This is a hotfix release over v1.5.0 version, which was released a few weeks back. While testing the release we fixed a few critical issues. A combination of these fixes, the sharky changes and the way we run some of our automated tests, we found an interesting corner case which led to a data race while downloading files from the node. This particular problem will be seen if we overutilise a postage stamp for uploading data and the nodes could parallely be serving data while new data is being uploaded with the same stamp. This has been fixed now and all users are urged to upgrade to the latest version as soon as possible.

Bugfixes

e0d56b4 Add extra validation in netstore while retrieving chunks locally. Fallback to retrieving from network if data is not valid.
0b8d10b Ensure correctnes of chunk data from localstore for parallel get/put operations.

For a full PR rundown please consult the v1.5.1 milestone.

v1.5.0

21 Mar 11:49
dda5606
Compare
Choose a tag to compare

The Bee team is happy to announce the latest release v1.5.0. This release comes with major changes to the way the bee node stores data locally.

We are proud to announce the introduction of sharky. Nodes upgrading from the older version will have to perform a migration to the new storage format. With sharky, the bee node will store chunks and indexes in separate storages. The indexes will be stored in levelDB and the chunks will be stored in sharky. Due to the drastic reduction in the size of levelDB, the database operations on indexes will be significantly faster. Also, with sharky, retrieving chunks will be optimized and hence we should see improvement in the overall performance and usability of the node. This change is not backward-compatible, so after the migration, the local storage will only work with v1.5.0 and up.

Along with the changes in storage, we are also including some other small features and bugfixes.

Hardening

  • cc80f74 Allow duplicate handshakes (#2794)
  • e46af6c Use testing.TempDir to create temporary test directories (#2790)
  • 4ce3f7d Stamps endpoint amount value OpenAPI specification (#2817)
  • 046c5e8 Introduce timeout for all make and beekeeper runs (#2811)
  • d21bf5b Add test to validate max input stream behaviour in libp2p (#2809)

New features

  • ebe988e Sharky store for fix-length blobs (#2685)
  • 66f0799 Start bee node without a connected chain backend. This feature is still experimental and it will be completed by the next release. (#2783)
  • 7849e33 bcrypt command to generate or validate bcrypt hashes (#2788)
  • 0b77fa6 Security role inheritance (#2808)

Bugfixes

  • dcc07c4 Fix to return an empty array instead of null in API responses (#2821)

For a full PR rundown please consult the v1.5.0 milestone.

v1.4.3

08 Feb 19:06
9546fed
Compare
Choose a tag to compare

This is a hotfix release over the last v1.4.2 release. We've identified certain issues relating to libp2p configuration in addition to a protocol stream leak and have therefore deployed a quick fix to alleviate the issues. You are strongly advised to update your nodes as soon as possible.

Bugfixes

Hardening

  • 5d1bcf2 fix: revert libp2p update and increase config limits (#2799)

You can find the PR rundown here

v1.4.2

08 Feb 01:59
2a4574a
Compare
Choose a tag to compare

This latest release is our first release for this year. We've been working on solving problems observed on the mainnet and we've shipped plenty of bugfixes with this version. Stay tuned for our upcoming releases as we pick up the pace of regular updates.

Hardening

  • increase kademlia minimum neighborhood size (#2772)
  • avoid peer pruning while peer is blocklisted. this caused peers to disappear from the known peers list prematurely (#2780)
  • refine chainsyncer logic to be less aggressive (#2773)
  • bump base docker image (#2745)
  • don't pullsync on bootnodes (#2733)
  • skip push to peer even if the trace was successful (#2731)

New features

  • diplay total network upper bound commitment towards batches in the reserve state endpoint (#2767)
  • allow swap without chequebook - you can now start your node with no chequebook using the chequebook-enable flag. while you will be able to receive cheques, you'll only have time-based settlements at your disposal for node throughput limits (#2236, #2732)

Bugfixes

  • fix a severe bookkeeping bug in localstore that resulted in a corrupt reserve size (#2735)
  • eager gc candidate collection in localstore fixes an edge case where the last batch would never be done due to insufficient amount of candidates collected (#2779)
  • remove sync.Once on reachability status in kademlia since libp2p apparently takes multiple status updates to zero in on the correct connectivity status (#2774)
  • update libp2p version (#2775)
  • don't share statestore iterator slice (#2747)
  • fix a possible edge case involving naked write in retrieval protocol (#2729)
  • expose Decompressed-Content-Length header (#2786)

For a full PR rundown please consult the github milestone.