bee

Bee is a Swarm client implemented in Go. It’s the basic building block for the Swarm network: a private; decentralized; and self-sustaining network for permissionless publishing and access to your (application) data.

BSD-3-CLAUSE License

Stars
1.5K
Committers
65

Bot releases are visible (Hide)

bee - v1.14.0

Published by github-actions[bot] over 1 year ago

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.

bee - v1.13.0

Published by github-actions[bot] over 1 year ago

Bee v1.13.0 is here!

Hardening

  • Skip the redistribution game on insufficient funds (#3829)

Bugfixes

  • Redistribution endpoint panic (#3811)
  • Disallow unknown parameters in config (#3782)

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

bee - v1.12.0

Published by istae over 1 year ago

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.

bee - v1.11.1

Published by github-actions[bot] almost 2 years ago

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)
bee - v1.11.0

Published by istae almost 2 years ago

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.

bee - v1.10.0

Published by github-actions[bot] almost 2 years ago

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.

bee - v1.9.0

Published by github-actions[bot] about 2 years ago

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.

bee - v1.8.2

Published by github-actions[bot] about 2 years ago

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)
bee - v1.8.1

Published by github-actions[bot] about 2 years ago

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.

Bugfixes

  • Postage stamp contract address update and batchstore reset. (#3290)
  • Set the stamp expired field to false if batch exists in batchstore. (#3289)
bee - v1.8.0

Published by github-actions[bot] about 2 years ago

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.

bee - v1.7.0

Published by github-actions[bot] about 2 years ago

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.

bee - v1.6.3

Published by github-actions[bot] over 2 years ago

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.

bee - v1.6.2

Published by github-actions[bot] over 2 years ago

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.

bee - v1.6.1

Published by github-actions[bot] over 2 years ago

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.

bee - v1.6.0

Published by github-actions[bot] over 2 years ago

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.

bee - v1.5.1

Published by github-actions[bot] over 2 years ago

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.

bee - v1.5.0

Published by github-actions[bot] over 2 years ago

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

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

New features

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

Bugfixes

  • dcc07c4f 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.

bee - v1.4.3

Published by github-actions[bot] over 2 years ago

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

  • dc65b535 fix(chainsync): stream leak (#2802)

Hardening

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

You can find the PR rundown here

bee - v1.4.2

Published by github-actions[bot] over 2 years ago

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.

bee - v1.4.1

Published by github-actions[bot] almost 3 years ago

Dear community and friends, the Bee team is proud to announce the latest release v1.4.1.

Don't let the meager semver patch bump mislead you; this version comes packed with a ton of goodies to simmer in and absorb in the upcoming holiday season!

Apart from further improvements to the overall network experience, we've been working on a lot of protocol hardenings and performance improvements, as well as new role-based API usage policies, direct uploads (more below) and support for Ethereum V3 keys. Some changes to time-based settlements have been made targeting light nodes, so that their usage allowance is congruent with the current observed performance of the mainnet.

You might recognise that the Bee repository's approachability has improved in several aspects. The team has been working on aligning and publishing a concrete style guide to communicate how we write Go code. This should allow for easier developer onboarding and reduce PR friction in the future. There's also been significant tooling contributions with new linters and a further alignment of linter settings to the style guide. We've also published versioning policies for Bee and Bee's APIs.

As always we would like to cordially thank our amazing community and the various teams that have been involved in this release!

Breaking changes

  • Time-based settlements now enforce 10% of the observed mainnet performance for light nodes. This means that for a better performance, light nodes will have to issue cheques earlier than full nodes (please note the breaking configuration flag rename from payment-tolerance to payment-tolerance-percent and payment-early to payment-early-percent!) (#2651, #2629, #2639, #2621, #2650)
  • The Bee node will now create an Eth V3 compatible key by default (applies to new keys only!) (#2711)

Hardening

  • Kademlia balancing has been improved (#2677)
  • Push-sync protocol will now attempt a preemptive retry based on mainnet observed performance (#2680, #2707)
  • Push-sync storer node forwarder replication won't be retried on stamp error (#2694)
  • Push-sync forwarding persistence has been changed to be non-blocking. This circumvents protocol latencies induced by local storage latencies on forwarders (#2664)

New features

  • We've introduced a restricted API feature to allow for security policies and security best practices to emerge for node operators and dapp developers. Since the Bee node controls real-world tokens, we've added this extra security layer to allow users to enforce different levels of allowed access to node functionality. While this is an experimental feature and we expect its design might change, we encourage users to start experimenting with it and giving us feedback about the matter at hand, due to the fact that this layer of extra security is not only crucial for user safety, but also for the emergence of new services that could utilise the different APIs in innovative ways. Our long term ambitions are that this becomes the default way of using the Bee API suite, and the both the normal and Debug API would be fused into just one API, in which different access levels are given to different API consumers (and can be revoked easily). A blog post including a tutorial will be published on our Medium account in the upcoming days, stay tuned! (#2400, #2659, #2660)
  • The Bee node now supports loading Ethereum V3 key files (#2710)
  • The API now supports direct uploads. This means you can have direct feedback for your uploads with backpressure on the HTTP upload by simply adding a new header to the request (Swarm-Deferred-Upload: false). When specifying this header, your upload will be synced to the network by the time you receive the HTTP response containing the content-addressed hash from the API. In this way, you are able to directly monitor the upload and does not necessitate polling any tag object as of such (#2703, #2620)
  • Added a new /node endpoint to the debug API, so that API consumers could know the operation mode of the node concretely instead of guessing (#2649)

Bugfixes

  • Don't greylist own overlay on self verification (#2688)
  • Fixed CORS not passing User-Agent (#2684)
  • Added a retry for transaction receipt with delay due to a very tight loop (#2667)
  • Fixed a bug where a tag was unintentionally created when the stamp provided was wrong or unusable in /bytes upload (#2673)

Performance improvements

  • Retrievals now execute a faster preemptive retry according to a 90th percentile of successful results we've been seeing on the mainnet (#2719)
  • The postage listener will sync postage stamps in larger batches, which will significantly decrease the blockchain backend call burden (#2641)
  • Netstore will now write the chunks asynchronously to disk. This means that chunks would be propagated faster to the callers (joiner, API) (#2665)
  • Puller deletes old cursors on disconnect (#2630)

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

Docker images

  • docker pull ethersphere/bee:1
  • docker pull ethersphere/bee:1.4
  • docker pull ethersphere/bee:1.4.1
  • docker pull ethersphere/bee:stable
  • docker pull quay.io/ethersphere/bee:1
  • docker pull quay.io/ethersphere/bee:1.4
  • docker pull quay.io/ethersphere/bee:1.4.1
  • docker pull quay.io/ethersphere/bee:stable
  • docker pull ethersphere/bee:1-slim
  • docker pull ethersphere/bee:1.4-slim
  • docker pull ethersphere/bee:1.4.1-slim
  • docker pull ethersphere/bee:latest-slim
  • docker pull ethersphere/bee:stable-slim
  • docker pull quay.io/ethersphere/bee:1-slim
  • docker pull quay.io/ethersphere/bee:1.4-slim
  • docker pull quay.io/ethersphere/bee:1.4.1-slim
  • docker pull quay.io/ethersphere/bee:latest-slim
  • docker pull quay.io/ethersphere/bee:stable-slim