Releases: ethersphere/bee
v1.4.1
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
topayment-tolerance-percent
andpayment-early
topayment-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
v1.4.0
Bee v1.4.0
is finally here and it includes a major change to protocol behavior that will significantly improve the network resilience. From now on, your nodes will have to be accessible from public CIDRs for them to participate in our core protocols. We've introduced new visibility metrics through the topology endpoint to allow node operators to determine their connectivity state and make the necessary steps to rectify any NAT reachability problems. We've also improved node resilience on blockchain errors. Our bootnodes will flip to the new version on 9AM CET, 25th of November 2021. You are expected to follow with the new version thereafter. Please stay tuned for another release which will follow shortly!
Breaking changes
- Starting from
v1.4.0
, only nodes which are reachable from the public CIDRs are used for core protocols. Old nodes are not interoperable with the new version due to a handshake protocol version bump (#2565, #2676) - The
/stamps
endpoints on the normal API which have been deprecated three months ago have been finally removed in favor of the whole postage suite which is available on the debug API. Please see the OpenAPI specifications for more info (#2632)
Hardening
- The bee node will now wait up to ten minutes before forcing a restart due to a stalled blockchain backend (#2626)
New features
- The node will now display information about the eth backend client on startup (#2618)
- OpenAPI versions has been added to the health endpoint, so that clients could easily determine which features are supported by the node (#2638)
Bugfixes
- Fixed a panic on stewardship endpoints in dev mode (#2640)
- Fixed a panic in kademlia metrics (#2636)
- Fixed a bug where futile attempts to sync chunks with invalid postage stamps were made (#2637)
Performance improvements
- Kademlia buildups should now be faster due to prioritization of previously connected peers and non blocking attempts in topology buildups (#2613, #2627)
For a full PR rundown please consult the v1.4.0
milestone.
Docker images
docker pull ethersphere/bee:1
docker pull ethersphere/bee:1.4
docker pull ethersphere/bee:1.4.0
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.0
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.0-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.0-slim
docker pull quay.io/ethersphere/bee:latest-slim
docker pull quay.io/ethersphere/bee:stable-slim
v1.3.0
Release notes Bee v1.3.0
The Bee team is happy to announce that v1.3.0
has safely landed!
As outlined recently over several public channels, this release introduces breaking changes in the chainsync
protocol behavior while addressing some
bugs and other minor refinements. Nodes which run an outdated version (lower than v1.2.0
) will be ostracized out of the network.
The next release of bee v1.4.0
is expected to take place W45-W46 21'
.
Please make sure to keep yourself up-to-date through Twitter, Medium and GitHub as more details about the upcoming releases will be duly communicated.
We hope you enjoy this release and welcome your feedback!
Breaking changes
- The
chainsync
protocol will now block peers that don't agree on the same block hash of a certain block height. If you're running a node with version< 1.2.0
you will lose connection to the main Swarm network. Please update your clients immediately! (#2585, #2622, #2619) - Removed support for QUIC protocol. We will reinstate this feature in a future point where we can fully support and make use of QUIC (#2597)
Deprecations
- Removed dead code from the
bitvector
package (#2601)
Hardening
- Kademlia will only do quick pruning on net errors (#2599)
- Batches with very low value (with value <= price per block) are no longer considered valid (#2610)
- Transaction monitor consistency improvements (#2496)
New features
- Added a
db nuke
command to clean the node storage up and start afresh, with an option to forget the overlay too (#2577, #2594)
Bugfixes
- Fixed a panic in the pushsync protocol while forwarding chunks with invalid stamps (#2608)
For a full PR-rundown please consult the v1.3.0
milestone.
Docker images
docker pull ethersphere/bee:1
docker pull ethersphere/bee:1.3
docker pull ethersphere/bee:1.3.0
docker pull ethersphere/bee:stable
docker pull quay.io/ethersphere/bee:1
docker pull quay.io/ethersphere/bee:1.3
docker pull quay.io/ethersphere/bee:1.3.0
docker pull quay.io/ethersphere/bee:stable
docker pull ethersphere/bee:1-slim
docker pull ethersphere/bee:1.3-slim
docker pull ethersphere/bee:1.3.0-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.3-slim
docker pull quay.io/ethersphere/bee:1.3.0-slim
docker pull quay.io/ethersphere/bee:latest-slim
docker pull quay.io/ethersphere/bee:stable-slim
v1.2.0
Release notes Bee v1.2.0
The bee
team is proud to announce the latest v1.2.0
release!
We've been working hard to address a lot of security concerns, protocol improvements and mainnet visibility issues.
Our efforts in the past month have mainly been to add instrumentation in order to improve our protocol/component behavior visibility and we've managed to produce quite a bit of improvements as a result of a very tight feedback loop that relies on gathering and evaluation of empiric measurements of the network.
We've also added more plumbing to ensure peer blockchain synchronization and peer service level by responding to period latency checks. You can expect to see more changes in this domain with the next release as we're working hard on hardening the Swarm DHT so that service level to users is maintained.
We hope you enjoy this release!
Hardening
- Avoid advertising private CIDR underlays to the public network (#2538)
- Kademlia will now periodically ping all connected peers and will blocklist peers that consistently don't answer (#2543, #2522)
- Pushsync will continue forwarding if replication fails (#2524)
- Pullsync context cancellation has been improved peer isolation for context cancellation (#2562)
- Pushsync will store more chunks when replication requests are received (#2526)
- Malformed recursive file joiner reads are no longer possible (#2481)
- Manifest filepath handling has been improved for better security and consistency (#2489)
- Switched to each peer iterator for pushsync replication to improve replication (#2529)
- Warn on underlay mismatch on handshake (#2464)
- Verify own transaction used for overlay calculation on startup to mitigate user input error (#2422)
- Postage stamp is no longer usable when postage stamp expires (#2390)
- Prune oversaturated bins when depth increases (#2412)
- P2P disconnect and blocklist now have a
reason
to improve code branching observability when inspecting logs (#2471)
New features
- Added a
--resync
flag to force your node to resync all postage contract data on startup and more pprof profiles (#2405) - Allow transaction from another sender for identity tx so that user onboarding can be improved (#2409)
- Added the new
chainsync
challenge-response protocol to verify that all connected peers are connected to a working blockchain backend (#2475) - Added new postage endpoits for batch topup and dilution (#2410, #2401)
- Kademlia now measures peer latencies periodically using the ping-pong protocol and reports measurements using the topology endpoint and prometheus metrics (#2522)
- Kademlia can now have static nodes which are protected from kicking behavior (relevant for bootnode behavior) (#2512)
- Our libp2p abstraction adds a custom user agent and logs it on connection for better version propagation visibility on the mainnet (#2462, #2482)
- Increased targetMaxLength for PSS message mining (#2406)
Bugfixes
- Added pss target input validation (#2463)
- Chunks stamped with an already expired stamp will be skipped for syncing and eventually deleted(#2392)
- Add missing ticker stop on tag wait to avoid timer leak (#2433)
- Added CORS expose swarm-tag header for bzz dir upload (#2450)
- Improved peer announcement context handling (#2539)
- Fixed broken ENS resolution due to an external package API change (#2458)
- Local storage push index dangling item caused item pushing to grind to a halt (#2534)
- Tag UID generation improved across node restarts using a different seed (#2425)
- Improve nonce check on tx cancelled (#2395)
- Persist postage stamps when added for better reliability (#2546)
- Kademlia displayed wrong bootnode connection direction (#2570)
- Pusher tag errors are no longer fatal (#2569)
- Puller will never store max uint as topmost (#2566)
- Wait for confirmations in WaitBlock when deploying a chequebook to improve reorg safety (#2416)
Performance improvements
- Skip validation if peer is known to reduce blockchain backend calls (#2491)
- Prevent goroutine pileup on peer validation with a timeout (#2444)
- Flush kademlia metrics in separate goroutine (#2424)
- Kademlia PSlice data structure rewrite to reduce number of allocations (#2453)
- Add peer to cache if found in addressbook to reduce number of backend calls (#2511)
- Only flush dirty kademlia metrics (#2418)
- Allow dirty kademlia metrics shutdown on timeout (#2428)
- Improve inefficient kademlia metrics saving (#2452)
- Handshake handle checks with kademlia pick before overlay verification to reduce backend calls (#2541)
Misc
- Dependency management and updates (go, go-ethereum, libp2p) (#2503, #2407, #2461, #2472, #2500, #2545, #2495, #2480, #2421
- Added and improved a ton of metrics (#2487, #2490, #2502, #2498, #2513, #2520, #2509, #2484, #2497, #2508, #2514
- Cleanups and refactorings (#2429, #2437, #2469, #2451, #2439, #2333, #2468, #2527, #2548, #2444, #2427)
- Include all DNS protocol prefixes when
Discover
ing (#2571)
Known Issues
- A local storage leak has been observed on nodes that have intensive upload activity. This is due to a storage space optimization put in place due to the postage stamp storage incentives. We are working on deploying a fix and will update you on a migration path as soon as possible!
For the full PR rundown please consult the v1.2.0
milestone
Docker images
docker pull ethersphere/bee:1
docker pull ethersphere/bee:1.2
docker pull ethersphere/bee:1.2.0
docker pull ethersphere/bee:stable
docker pull quay.io/ethersphere/bee:1
docker pull quay.io/ethersphere/bee:1.2
docker pull quay.io/ethersphere/bee:1.2.0
docker pull quay.io/ethersphere/bee:stable
docker pull ethersphere/bee:1-slim
docker pull ethersphere/bee:1.2-slim
docker pull ethersphere/bee:1.2.0-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.2-slim
docker pull quay.io/ethersphere/bee:1.2.0-slim
docker pull quay.io/ethersphere/bee:latest-slim
docker pull quay.io/ethersphere/bee:stable-slim
v1.1.0
Bee v1.1.0 release notes
Hello bees!
These last couple of months have been paved with a lot of learnings for the bee team. We've been meticulously implementing your recommendations, trying to improve the bee developer experience so that you could build faster on Swarm, as well as inspecting the production network behavior, ironing out all sorts of kinks, bugs and performance issues.
IMPORTANT NOTE: the xDai chain is going to implement the London hardfork. Please stay informed and update your infrastructure accordingly as OpenEthereum clients are still not guaranteed to be supported after the hardfork!
Breaking changes
- We renamed log field traceid to traceID (#2324)
- Standalone mode has been phased out (in favor of dev mode, see below) (#2331)
Deprecations
- PATCH under the
/bzz
endpoint has been moved to thestewardship
endpoint. Please use that instead (#2356) - The stamps API has moved to the debug API (#2171)
New features
- Add estimation of expected lifetime of batches (#2336)
- Add possibility to cancel transactions (#2212)
- Allow node to start in dev mode which does not require a blockchain backend. All storage is done in memory and backend behavior is mocked, so that you could develop your apps on Swarm even faster! Run
./bee dev
and give it a try (#2347) - Add chunk upload endpoint that allows to stream chunks via websockets (#2230)
Hardening
- Improve pushsync skiplist logic (#2348)
- Improve pushsync replication in neighborhood logic, as it would sometimes replicate to peers which are not in the neighborhood (#2237)
- Replicate with peers further from the chunk (#2293)
- Discovery announce to lightnodes was not in place, which could under certain conditions impair their connectivity (#2351)
- Disable bootnode active dialing (#2169)
- Update dependency versions (libp2p, prometheus, among others) (#2316)
- Peers are now checked for reachability before being persisted in the addressbook (#2319)
- Bump base docker image (#2315)
- Continue processing pullsync batch on unverifiable stamp. Previously, the whole batch would error and other chunks potentially discarded (#2228)
- Prevent sending transaction if we don't have sufficient balance (#2337)
- Cache on forwarding in retrievals (#2234)
- Rate limit hive broadcast calls (#2235)
- Disable forwarding node stamp verification, this is to mitigate nodes which are not properly synced to the chain from interrupting the syncing process (#2233)
- Verify signer result chain ID conform to node configuration (#2214)
- Postage stamp usable flag now indicates also if the batch was already expired (#2390)
- When uploading content which is stamped using an already expired postage stamp, the node will not attempt to sync the content. You are advised to use longer-lived postage stamps and encrypt your content to work around this. It is not possible to reupload unencrypted content which was stamped using an expired postage stamp. We're working on improving on this (#2392)
Bugfixes
- Fixed wrong timestamp usage in time settlements (#2358)
- Fixed correct blocktime for xdai (#2340)
- Fixed possible gcSizeChange inconsistency (#2296)
- Fixed deadlocks on context done in pushsync and retrieval protocols. This caused goroutine leaks and elevated memory consumption (#2327)
- Fixed a mantaray lookup bug where files that have shared prefix aren't found correctly (#2380)
- Limit concurrent access to some parts of the api resources to improve API consistency, since bee does not support parallel on-chain operations (#2379)
- Query header instead of block (resolves london hardfork related issues) (#2372)
- Fixed a bug in kademlia that caused choosing a sanctioned peer closest to a chunk. Oops! (#2374)
- Fixed a bug in the cancelled transactions nonce check (#2395)
- Fixed excruciatingly long shutdown by allowing metrics to flush dirty (#2428)
- Fixed unnecessary flushing of metrics that haven't changed in kademlia (#2418)
Performance improvements
Misc
- Updated go-ethereum version (#2342, #2408)
- Bump clef in dockercompose (#2366)
- Added batchstore checksums (#2227)
- Expose the transaction API early (#2210)
- Add endpoint that emits information about collisions within all buckets of a batch (#2321)
- Kademlia metrics flush in a separate goroutine in a way that doesn't affect connection management due to long flush times (#2424)
Docker images
docker pull ethersphere/bee:1
docker pull ethersphere/bee:1.1
docker pull ethersphere/bee:1.1.0
docker pull ethersphere/bee:stable
docker pull quay.io/ethersphere/bee:1
docker pull quay.io/ethersphere/bee:1.1
docker pull quay.io/ethersphere/bee:1.1.0
docker pull quay.io/ethersphere/bee:stable
docker pull ethersphere/bee:1-slim
docker pull ethersphere/bee:1.1-slim
docker pull ethersphere/bee:1.1.0-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.1-slim
docker pull quay.io/ethersphere/bee:1.1.0-slim
docker pull quay.io/ethersphere/bee:latest-slim
docker pull quay.io/ethersphere/bee:stable-slim
v1.0.0
Release notes Bee v1.0.0
Hello world, bee 🐝
-
The mainnet will become operational soon. Please follow Swarm's twitter (@ethswarm) to be among the first Bee's that run on mainnet.
-
The Goerli testnet (network id 10) will be reset today - June 21, 2359 CET.
-
The BZZ token addresses are:
- BZZ (Ethereum main chain): 0x19062190b1925b5b6689d7073fdfc8c2976ef8cb
- xBZZ (Bridged BZZ on xDAI): 0xdBF3Ea6F5beE45c02255B2c26a16F300502F68da
-
The following system contracts are deployed on xDAI Ethereum sidechain, to facilitate the economics of the Swarm:
- Chequebook factory: 0xc2d5a532cf69aa9a1378737d8ccdef884b6e7420
- Postage stamp: 0x6a1a21eca3ab28be85c7ba22b2d6eae5907c900e
- Bandwidth price oracle: 0x0FDc5429C50e2a39066D8A94F3e2D2476fcc3b85
-
Bridge your BZZ to xDAI, using xDAI's omni bridge
-
Run your own xDAI node or utilize a public RPC endpoint such as getblock.io
Breaking changes
- The testnet networkID has changed to
10
, making place for the mainnet to take networkID1
. In case you need to specify a custom network ID - please update the networkID in your configuration file. - Your node will start by default in testnet configuration. If you'd like to use
bee
on the mainnet please specify the--mainnet
flag. These default configurations make sure that your nodes has the right network ID and the right bootnode settings. - Introduce non-minable overlay addresses, which makes it much harder and costly for node operators to choose their overlay, thereby improving the security of the Swarm network (#2108)
Improvements
- Add a disclaimer on startup and in our README (#2147)
- Increase the likelyhood that all chunks fall in their natural location by retrying the upload of those chunks from which we suspect they did not land in their natural location (#2049)
- Making the push-sync protocol resilient against closest-peer malfunctioning (#2066)
- Replicate chunks in the nearest neighborhood if our node is the closest to a chunk (#2115))
- Protect the user against using a stamp too soon, by not allowing the usage of a postage batch for 10 blocks after it was purchased (#2063)
- Change the global refreshment rate to 45% of the current refresh rate (#2142)
- Improve the useability of postage stamps and content-management by adding additional information to the
GET /stamps
endpoint (#2051) - Optimize the storage space utilization (#2071)
- Prevent the loss of postage batches, by reading information on postage batch creation from the chain (#2080)
- Allow nodes to connect to other nodes that did not deploy a chequebook, thereby paving the way for zero-eth, zero-bzz and zero-xDAI entry to the network (#2102)
- Ensure that the proper gas-limits are passed on xDAI by hard-coding the gas limits for that chain (#2102)
- Improve the handling of blockchain-transactions (#1469)
- Protect against overissuance of postage stamps and allow the transfer of part of the stamps under a postage batch (#1625)
- Allow the price for bandwidth to fluctuate and deduct an initial amount from the first-received cheque from a peer (#1925)
- Increase the resilience against churn by:
- Ensure the profitability and security of forwarder nodes by only letting originator nodes pay with cheques (#1870)
- Several bug fixes and cleanups
v0.6.2
Release notes Bee v0.6.2 🐝
Dear node operators,
After a week of observing our cluster, testing and flying with Bee v0.6.* in the wild, we present you the v0.6.2 release.
Thank you all for your patience and helping us with the real-life testing!
For questions and support, please join our Discord
Notable improvements over v0.6.0
- Fix a panic that can happen when the statestore is closed (#1807)
- Correctly decode and interpret the
transaction
configuration parameter (1810) - add gas price setting for deployment and initial deposit (#1812)
- Be able to handle incorrect protocol messages in pullsync (#1851)
- Revert updating to go 1.16 because one of our dependencies can't handle the newest Go version. Use go 1.15 instead #1855)
- Disable the pull sync as a light node (#1883). Please note that this means that a light node cannot receive PSS message.
- Limit number of light nodes that a full node accepts (#1898)
- Shutdown the node when the connection with Infura times out (#1868)
- Several performance optimizations across our protocols. Interested people can look up the git-log
Release notes Bee v0.6.0 🐝
The long-awaited v0.6.0 release is out. This release contains many new features and improvements, all focused on hardening your Bee node and the network.
Users should be aware that updating your node includes a migration path to ensure that there is no content stored by your node that does not have postage stamps. Users who pin content need to manually migrate their data.
The release also features a brand-new documentation and will soon be followed by releases of bee-js and the swarm-cli and bee-dashboard
New features
⚠️ The light node feature enables you to use Swarm while requiring minimal resource consumption of your system. A light node can be used to upload and download content or receive PSS messages. It does not store chunks or forward traffic (#1458). Please take note that the default configuration of a node is to be a light node if you want to be a full node, you will have to explicitly mention this by configuring your node with thefull-node
flag.⚠️ Postage stamps enable the persistence of content based on a costly signal on the blockchain. By doing so, maximizing the utilization of the DISC (#1562). Please take note that adding a postage stamp is now compulsory on each upload. Migrating to v0.6.0 will remove all un-pinned chunks without stamps. If you are pinning content, please ensure this is backed up and unpin all content before updating. Instead of unpinning all content, you can also manually erase the<path_to_data-dir>/localstore
. As part of this change, thedb-capacity
flag was changed tocache-capacity
. Lastly, there exists a known issue that may cause the loss of locally pinned chunks when a node is not properly shut down- Bee nodes now give each other a limited amount of bandwidth allowance per time for free! This means that downloading from Swarm is possible without on-chain interaction if you stay within this limit. The current, monetary way, of settling bandwidth debt is provided for those nodes that want to use more bandwidth than is provided for free (#1711)
- You can now instruct your Bee node to re-upload previously-pinned content by using the
PATCH /bzz/{address}
endpoint (#1705) - A brand-new ASCII-art Bee in the logs and README (thanks asciiart.eu) (#1761)
Hardening
⚠️ Reduce the possibility of launching a DDOS attack on the network by requiring at least one interaction with Ethereum. This change was needed because thefree bandwidth allowance
feature now allows starting a node without a chequebook. Please take note that nodes which deployed their chequebook with beev0.5.0
will have to be started with the--transaction TXHASH
flag where TXHASH is any Ethereum transaction on goerli network sent from the bee node's Ethereum address. The hash of the chequebook deployment transaction can be used for this and can be looked up on etherscan. For nodes which first started withv0.5.1
or higher no action is necessary, as their chequebook deployment transaction will be automatically picked-up by the Bee node. (#1655)- To improve the reliability of receipts to know whether an upload was successful, each storer node now signs the storage receipts of chunks that belong to their neighborhood. The signed receipt is passed back and validated by all forwarder nodes and the uploader (#1431).
- Make it more likely that nodes share the same view on who belongs to a neighborhood by redefining how Swarm calculates the depth--not allowing unsaturated bins outside the depth (#1553).
- Prevent SWAP imbalances by defining a separate context for push-sync replication within the neighborhood (#1567).
- Change the maximum depth of the network to 32, allowing 2^32 neighborhoods. (#1593)
- Disconnect from peers that have a payment threshold that is too low. (#1635)
- Apply rate limiting on peer gossiping. #1654
- Bootnodes kick out old nodes when reaching a certain threshold, ensuring a reasonable resource consumption by the bootnodes (#1715)
- No longer use the slock.it RPC endpoint by default. Instead, instruct the user to run their node or create an API endpoint with Infura (#1731).
Improvements to existing features
⚠️ Removal of/files
and/dirs
endpoints. Individual files can now be uploaded on the/bzz
endpoint (#1501).⚠️ /cashout
endpoint updated to make it easier to manage uncashed cheques. If you programatically manage your uncashed cheques, be sure to update it (#1402).- The pinning API has been completely rewritten to expose basic operations over pinned content (#1566)
- Improved handling of blockchain transactions (#1484), (#1487), (#1465)
- The checksums are now signed by our GPG key. To validate the authenticity of your node: download the checksums, validate the signature and compare against the checksums of your version (#1581)
- Allow the handling of non-standard, bee-specific headers via the browser through CORS preflight requests. (#1597)
- Use the correct HTTP response code when creating a new resource (#1611)
- Log welcome message on incoming connections (#1590)
- Close the NAT manager on node shutdown. (#1622)
- Update to go 1.16 (#1657)
- The
/topolgy
endpoint in the debugAPI now exposes metrics, allowing you to know more about your peer connections (#1658) - Change the default initial deposit to 10000000000000000 PLUR (1BZZ) (#1657)
- Improvements to feed-lookup algorithm (#1548)
- Increase the default bin size to 8 (#1729)
Bugs
- Improve consistency of addressbook by adding additional libp2p verifications. ([#1696])(#1696)
- Several improvements to push sync to ensure a chunk is pushed to the neighborhood, even in face of errors via some routes (#1662)
- Fix overflow bug in pull sync (#1609)
- Print
bee version
to stdout instead of stderr. (#1660)
Efficiency improvements
- Unneeded pull syncing in the network is reduced by only syncing within the nearest-neighborhood (#1537)
- Improve localstore lock contention when putting single chunks that already exist in the store. This prevents acquiring the lock for already existing chunks (#1568)
- Reduced the cost to deploy a chequebook by a factor of 10, by utilizing a proxy pattern. This change requires
bee-clef
to bev0.4.12
or higher if you don't have a chequebook deployed yet (#1539). - Build up a healthy topology faster by establishing connections concurrently. [(#1647)]...
v0.6.1
Release notes Bee v0.6.1 🐝
Release notes Bee v0.6.0 🐝
The long-awaited v0.6.0 release is out. This release contains many new features and improvements, all focused on hardening your Bee node and the network.
Users should be aware that updating your node includes a migration path to ensure that there is no content stored by your node that does not have postage stamps. Users who pin content need to manually migrate their data.
The release also features a brand-new documentation and will soon be followed by releases of bee-js and the swarm-cli and bee-dashboard
New features
⚠️ The light node feature enables you to use Swarm while requiring minimal resource consumption of your system. A light node can be used to upload and download content or receive PSS messages. It does not store chunks or forward traffic (#1458). Please take note that the default configuration of a node is to be a light node if you want to be a full node, you will have to explicitly mention this by configuring your node with thefull-node
flag.⚠️ Postage stamps enable the persistence of content based on a costly signal on the blockchain. By doing so, maximizing the utilization of the DISC (#1562). Please take note that adding a postage stamp is now compulsory on each upload. Migrating to v0.6.0 will remove all un-pinned chunks without stamps. If you are pinning content, please ensure this is backed up and unpin all content before updating. Instead of unpinning all content, you can also manually erase the<path_to_data-dir>/localstore
. As part of this change, thedb-capacity
flag was changed tocache-capacity
. Lastly, there exists a known issue that may cause the loss of locally pinned chunks when a node is not properly shut down- Bee nodes now give each other a limited amount of bandwidth allowance per time for free! This means that downloading from Swarm is possible without on-chain interaction if you stay within this limit. The current, monetary way, of settling bandwidth debt is provided for those nodes that want to use more bandwidth than is provided for free (#1711)
- You can now instruct your Bee node to re-upload previously-pinned content by using the
PATCH /bzz/{address}
endpoint (#1705) - A brand-new ASCII-art Bee in the logs and README (thanks asciiart.eu) (#1761)
Hardening
⚠️ Reduce the possibility of launching a DDOS attack on the network by requiring at least one interaction with Ethereum. This change was needed because thefree bandwidth allowance
feature now allows starting a node without a chequebook. Please take note that nodes which deployed their chequebook with beev0.5.0
will have to be started with the--transaction TXHASH
flag where TXHASH is any Ethereum transaction on goerli network sent from the bee node's Ethereum address. The hash of the chequebook deployment transaction can be used for this and can be looked up on etherscan. For nodes which first started withv0.5.1
or higher no action is necessary, as their chequebook deployment transaction will be automatically picked-up by the Bee node. (#1655)- To improve the reliability of receipts to know whether an upload was successful, each storer node now signs the storage receipts of chunks that belong to their neighborhood. The signed receipt is passed back and validated by all forwarder nodes and the uploader (#1431).
- Make it more likely that nodes share the same view on who belongs to a neighborhood by redefining how Swarm calculates the depth--not allowing unsaturated bins outside the depth (#1553).
- Prevent SWAP imbalances by defining a separate context for push-sync replication within the neighborhood (#1567).
- Change the maximum depth of the network to 32, allowing 2^32 neighborhoods. (#1593)
- Disconnect from peers that have a payment threshold that is too low. (#1635)
- Apply rate limiting on peer gossiping. #1654
- Bootnodes kick out old nodes when reaching a certain threshold, ensuring a reasonable resource consumption by the bootnodes (#1715)
- No longer use the slock.it RPC endpoint by default. Instead, instruct the user to run their node or create an API endpoint with Infura (#1731).
Improvements to existing features
⚠️ Removal of/files
and/dirs
endpoints. Individual files can now be uploaded on the/bzz
endpoint (#1501).⚠️ /cashout
endpoint updated to make it easier to manage uncashed cheques. If you programatically manage your uncashed cheques, be sure to update it (#1402).- The pinning API has been completely rewritten to expose basic operations over pinned content (#1566)
- Improved handling of blockchain transactions (#1484), (#1487), (#1465)
- The checksums are now signed by our GPG key. To validate the authenticity of your node: download the checksums, validate the signature and compare against the checksums of your version (#1581)
- Allow the handling of non-standard, bee-specific headers via the browser through CORS preflight requests. (#1597)
- Use the correct HTTP response code when creating a new resource (#1611)
- Log welcome message on incoming connections (#1590)
- Close the NAT manager on node shutdown. (#1622)
- Update to go 1.16 (#1657)
- The
/topolgy
endpoint in the debugAPI now exposes metrics, allowing you to know more about your peer connections (#1658) - Change the default initial deposit to 10000000000000000 PLUR (1BZZ) (#1657)
- Improvements to feed-lookup algorithm (#1548)
- Increase the default bin size to 8 (#1729)
Bugs
- Improve consistency of addressbook by adding additional libp2p verifications. ([#1696])(#1696)
- Several improvements to push sync to ensure a chunk is pushed to the neighborhood, even in face of errors via some routes (#1662)
- Fix overflow bug in pull sync (#1609)
- Print
bee version
to stdout instead of stderr. (#1660)
Efficiency improvements
- Unneeded pull syncing in the network is reduced by only syncing within the nearest-neighborhood (#1537)
- Improve localstore lock contention when putting single chunks that already exist in the store. This prevents acquiring the lock for already existing chunks (#1568)
- Reduced the cost to deploy a chequebook by a factor of 10, by utilizing a proxy pattern. This change requires
bee-clef
to bev0.4.12
or higher if you don't have a chequebook deployed yet (#1539). - Build up a healthy topology faster by establishing connections concurrently. (#1647)
- Reduce resource consumption (IO/CPU/memory) on live pull syncing with multiple peers (#1683)
- Improve the efficiency of retrieval and push sync by doing settlement asynchronously (#1578)
Misc
- Database export/import functionalities are now available to facilitate integration testing and enable a smooth future migration path (#1580)
- Allow configuration of how many Ethereum calls are done by exposing the
block-time
configuration parameter. Adjustment of this parameter is not advised on the Goerli network (1697)
Docker images
docker pull ethersphere/bee:0
docker pull ethersphere/bee:0.6
docker pull ethersphere/bee:0.6.1
docker pull ethersphere/bee:latest
docker pull ethersphere/bee:beta
docker pull quay.io/ethersphere/bee:0
docker pull quay.io/ethersphere/bee:0.6
docker pull quay.io/ethersphere/bee:0.6.1
docker pull quay.io/ethersphere/bee:latest
docker pull quay.io/ethersphere/bee:beta
v0.6.0
Release notes Bee v0.6.0 🐝
The long-awaited v0.6.0 release is out. This release contains many new features and improvements, all focused on hardening your Bee node and the network.
Users should be aware that updating your node includes a migration path to ensure that there is no content stored by your node that does not have postage stamps. Users who pin content need to manually migrate their data.
The release also features a brand-new documentation and will soon be followed by releases of bee-js and the swarm-cli and bee-dashboard
New features
⚠️ The light node feature enables you to use Swarm while requiring minimal resource consumption of your system. A light node can be used to upload and download content or receive PSS messages. It does not store chunks or forward traffic (#1458). Please take note that the default configuration of a node is to be a light node if you want to be a full node, you will have to explicitly mention this by configuring your node with thefull-node
flag.⚠️ Postage stamps enable the persistence of content based on a costly signal on the blockchain. By doing so, maximizing the utilization of the DISC (#1562). Please take note that adding a postage stamp is now compulsory on each upload. Migrating to v0.6.0 will remove all un-pinned chunks without stamps. If you are pinning content, please ensure this is backed up and unpin all content before updating. Instead of unpinning all content, you can also manually erase the<path_to_data-dir>/localstore
. As part of this change, thedb-capacity
flag was changed tocache-capacity
. Lastly, there exists a known issue that may cause the loss of locally pinned chunks when a node is not properly shut down- Bee nodes now give each other a limited amount of bandwidth allowance per time for free! This means that downloading from Swarm is possible without on-chain interaction if you stay within this limit. The current, monetary way, of settling bandwidth debt is provided for those nodes that want to use more bandwidth than is provided for free (#1711)
- You can now instruct your Bee node to re-upload previously-pinned content by using the
PATCH /bzz/{address}
endpoint (#1705) - A brand-new ASCII-art Bee in the logs and README (thanks asciiart.eu) (#1761)
Hardening
⚠️ Reduce the possibility of launching a DDOS attack on the network by requiring at least one interaction with Ethereum. This change was needed because thefree bandwidth allowance
feature now allows starting a node without a chequebook. Please take note that nodes which deployed their chequebook with beev0.5.0
will have to be started with the--transaction TXHASH
flag where TXHASH is any Ethereum transaction on goerli network sent from the bee node's Ethereum address. The hash of the chequebook deployment transaction can be used for this and can be looked up on etherscan. For nodes which first started withv0.5.1
or higher no action is necessary, as their chequebook deployment transaction will be automatically picked-up by the Bee node. (#1655)- To improve the reliability of receipts to know whether an upload was successful, each storer node now signs the storage receipts of chunks that belong to their neighborhood. The signed receipt is passed back and validated by all forwarder nodes and the uploader (#1431).
- Make it more likely that nodes share the same view on who belongs to a neighborhood by redefining how Swarm calculates the depth--not allowing unsaturated bins outside the depth (#1553).
- Prevent SWAP imbalances by defining a separate context for push-sync replication within the neighborhood (#1567).
- Change the maximum depth of the network to 32, allowing 2^32 neighborhoods. (#1593)
- Disconnect from peers that have a payment threshold that is too low. (#1635)
- Apply rate limiting on peer gossiping. #1654
- Bootnodes kick out old nodes when reaching a certain threshold, ensuring a reasonable resource consumption by the bootnodes (#1715)
- No longer use the slock.it RPC endpoint by default. Instead, instruct the user to run their node or create an API endpoint with Infura (#1731).
Improvements to existing features
⚠️ Removal of/files
and/dirs
endpoints. Individual files can now be uploaded on the/bzz
endpoint (#1501).⚠️ /cashout
endpoint updated to make it easier to manage uncashed cheques. If you programatically manage your uncashed cheques, be sure to update it (#1402).- The pinning API has been completely rewritten to expose basic operations over pinned content (#1566)
- Improved handling of blockchain transactions (#1484), (#1487), (#1465)
- The checksums are now signed by our GPG key. To validate the authenticity of your node: download the checksums, validate the signature and compare against the checksums of your version (#1581)
- Allow the handling of non-standard, bee-specific headers via the browser through CORS preflight requests. (#1597)
- Use the correct HTTP response code when creating a new resource (#1611)
- Log welcome message on incoming connections (#1590)
- Close the NAT manager on node shutdown. (#1622)
- Update to go 1.16 (#1657)
- The
/topolgy
endpoint in the debugAPI now exposes metrics, allowing you to know more about your peer connections (#1658) - Change the default initial deposit to 10000000000000000 PLUR (1BZZ) (#1657)
- Improvements to feed-lookup algorithm (#1548)
- Increase the default bin size to 8 (#1729)
Bugs
- Improve consistency of addressbook by adding additional libp2p verifications. ([#1696])(#1696)
- Several improvements to push sync to ensure a chunk is pushed to the neighborhood, even in face of errors via some routes (#1662)
- Fix overflow bug in pull sync (#1609)
- Print
bee version
to stdout instead of stderr. (#1660)
Efficiency improvements
- Unneeded pull syncing in the network is reduced by only syncing within the nearest-neighborhood (#1537)
- Improve localstore lock contention when putting single chunks that already exist in the store. This prevents acquiring the lock for already existing chunks (#1568)
- Reduced the cost to deploy a chequebook by a factor of 10, by utilizing a proxy pattern. This change requires
bee-clef
to bev0.4.12
or higher if you don't have a chequebook deployed yet (#1539). - Build up a healthy topology faster by establishing connections concurrently. (#1647)
- Reduce resource consumption (IO/CPU/memory) on live pull syncing with multiple peers (#1683)
- Improve the efficiency of retrieval and push sync by doing settlement asynchronously (#1578)
Misc
- Database export/import functionalities are now available to facilitate integration testing and enable a smooth future migration path (#1580)
- Allow configuration of how many Ethereum calls are done by exposing the
block-time
configuration parameter. Adjustment of this parameter is not advised on the Goerli network (1697)
Docker images
docker pull ethersphere/bee:0
docker pull ethersphere/bee:0.6
docker pull ethersphere/bee:0.6.0
docker pull ethersphere/bee:latest
docker pull ethersphere/bee:beta
docker pull quay.io/ethersphere/bee:0
docker pull quay.io/ethersphere/bee:0.6
docker pull quay.io/ethersphere/bee:0.6.0
docker pull quay.io/ethersphere/bee:latest
docker pull quay.io/ethersphere/bee:beta
v0.5.3
Release notes v0.5.3
Dear Swarm supporters and Bee users, over the past few weeks we've been looking into various issues that have been reported by the community in an effort to improve the user experience and resource usage of bee. This release has plenty of improvements to performance, node configurability, metrics as well as the usual refactorings and cleanups. We'd like to thank all of you for your significant contributions, be they with bug reports, PRs of all sorts, debugging profiles and just test driving version candidates on our Discord channels! We're humbled by your engagement and we hope you enjoy this latest release <3
Notes
We've exposed some of the underlying leveldb configuration parameters through new CLI flags of bee. You can now tweak your setup without having to rebuild the image every time you'd like to adjust a parameter. Important to note: since the Swarm working set is over 20 gigabytes of data, leveldb has to have enough open file limit allowance for it not to be overburdened by continuous opening and closing of file handles to retrieve blocks.
We therefore recommend node operators to set the number of open file limit to at least 7200 open files. We did not set this value by default as this might be out of bound for certain setups and operating systems, resulting in a setup which is broken by default, however you are highly encouraged to set this number anywhere between 7200-12000.
If you experience high I/O you can also toggle the disable seeks compaction option. Block cache and write buffer are also adjustable, and you are free to experiment with them and see what works best for your setup.
Features:
- Allow specifying an account for clef, enabling one clef instance to control multiple bee instances (#1313)
- Prevent users from starting with a different overlay address (#1377)
- Bootstrap Debug API in two phases to allow health checks response while node is still starting (#1358, #1370)
- Expose levelDB configuration parameters through CLI flags (#1454)
- Increase default cashout gas limit to 300K and allow gas price and gas limit to be specified through the cash debug API with headers (#1455)
Performance improvements
- Limit the number of kademlia connections per bin to 16 outside of depth (#1352) and (#1399)
- Coalesce pull sync writes to localstore (#1386)
- Improve context handling in push sync (#1416)
- Increase batch size for garbage collection (#1424)
- Reduce number of pusher concurrent jobs (#1430)
- Improved localstore lock contention by reducing GC critical section (#1435):
- Utilize falling edge detection to await notifying subscriptions when there is a write to the database (#1484)
- Balanced bins in Kademlia (#1207, #1453)
General improvements
- Improvements to logging (#1360, #1379)
- Don't accept incoming connections before the node is online (#1390)
- Add expiration to connection attempt to bootnode (#1407)
- Fix a security issue with CORS headers (#1421)
- Fix panic by returning previously swallowed error (#1426)
- Fix typo in bee-get-addr for homebrew (#1460)
- Refactor content-addressed chunks and single-owner chunks (#1363) (#1394)
- Remove abigen-generated bindings (#1361, #1360, #1362)
- Added metrics to a bunch of places and fixed how we collect metrics at some (#1373, #1410, #1417, #1427, #1446, #1373)