├── .github └── workflows │ ├── build.yaml │ └── gh-pages.yaml ├── .gitignore ├── .nvmrc ├── CODING.md ├── README.md ├── babel.config.js ├── docs ├── bee │ ├── faq.md │ ├── installation │ │ ├── build-from-source.md │ │ ├── connectivity.md │ │ ├── docker.md │ │ ├── fund-your-node.md │ │ ├── getting-started.md │ │ ├── hive.md │ │ ├── package-manager.md │ │ ├── quick-start.md │ │ ├── set-target-neighborhood.md │ │ ├── shell-script.md │ │ └── verify.md │ └── working-with-bee │ │ ├── backups.md │ │ ├── bcrypt.md │ │ ├── bee-api.md │ │ ├── bee-tools.md │ │ ├── cashing-out.md │ │ ├── configuration.md │ │ ├── introduction.md │ │ ├── logs-and-files.md │ │ ├── monitoring.md │ │ ├── node-types.md │ │ ├── staking.md │ │ ├── swarm-cli.md │ │ ├── uninstalling-bee.md │ │ └── upgrade.md ├── concepts │ ├── DISC │ │ ├── DISC.mdx │ │ ├── erasure-coding.md │ │ ├── kademlia.mdx │ │ └── neighborhoods.md │ ├── access-control.md │ ├── incentives │ │ ├── bandwidth-incentives.md │ │ ├── overview.mdx │ │ ├── postage-stamps.md │ │ ├── price-oracle.md │ │ └── redistribution-game.md │ ├── introduction.md │ ├── pss.md │ └── what-is-swarm.mdx ├── desktop │ ├── access-content.md │ ├── backup-restore.md │ ├── configuration.md │ ├── install.md │ ├── introduction.md │ ├── postage-stamps.md │ ├── publish-a-website.md │ ├── start-a-blog.md │ └── upload-content.md ├── develop │ ├── access-the-swarm │ │ ├── buy-a-stamp-batch.md │ │ ├── erasure-coding.md │ │ ├── host-your-website.md │ │ ├── introduction.md │ │ ├── pinning.md │ │ ├── store-with-encryption.md │ │ ├── syncing.md │ │ ├── ultra-light-nodes.md │ │ └── upload-and-download.md │ ├── contribute │ │ ├── introduction.md │ │ └── protocols.md │ ├── introduction.md │ └── tools-and-features │ │ ├── access-control.md │ │ ├── bee-js.md │ │ ├── chunk-types.md │ │ ├── dev-mode.md │ │ ├── feeds.md │ │ ├── gateway-proxy.md │ │ ├── gsoc.md │ │ ├── introduction.md │ │ ├── pss.md │ │ └── starting-a-test-network.md └── references │ ├── awesome-list.mdx │ ├── community.md │ ├── fair-data-society.md │ ├── faq.md │ ├── glossary.md │ ├── smart-contracts.mdx │ └── tokens.md ├── docusaurus.config.js ├── openapi ├── Swarm.yaml └── SwarmCommon.yaml ├── package-lock.json ├── package.json ├── shell.nix ├── sidebars.js ├── src ├── components │ ├── AmountAndDepthCalc.js │ ├── AwesomeList.js │ ├── RedundancyCalc.js │ ├── VolumeAndDurationCalc.js │ ├── parities.js │ └── paritiesEncrypted.js ├── config │ └── globalVariables.js ├── css │ └── custom.css ├── pages │ ├── awesome-list.js │ ├── index.js │ └── styles.module.css └── theme │ └── SearchBar │ └── index.js └── static ├── .nojekyll ├── Andrena_nasonii._female.jpg ├── bee.jpg ├── fonts ├── IBMPlexMono-SemiBold-Latin1.woff ├── Inter-Black.ttf ├── Inter-Bold.ttf ├── Inter-ExtraBold.ttf ├── Inter-ExtraLight.ttf ├── Inter-Light.ttf ├── Inter-Medium.ttf ├── Inter-Regular.ttf ├── Inter-SemiBold.ttf └── Inter-Thin.ttf ├── img ├── access1.png ├── access2.png ├── access3.png ├── access4.png ├── arrow-down.svg ├── backup1.png ├── backup2.png ├── backup3.png ├── backup4.png ├── backup5.png ├── backup6.png ├── backup7.png ├── backup8.png ├── backup9.png ├── bashtop_01.png ├── bashtop_02.png ├── batches_01.png ├── batches_02.png ├── batches_03.png ├── batches_04.png ├── bee-dark.svg ├── bee-light.svg ├── bos_fig_1_1.jpg ├── bos_fig_2_3.jpg ├── bos_fig_2_7.jpg ├── clef_import_01.png ├── clef_import_02.png ├── config1.png ├── config10.png ├── config11.png ├── config2.png ├── config3.png ├── config4.png ├── config5.png ├── config6.png ├── config7.png ├── config8.png ├── config9.png ├── depths1.png ├── depths2.png ├── desktop-dark.svg ├── desktop-homepage-dl.png ├── desktop-install-downloading.png ├── desktop-light.svg ├── desktop-new-install.png ├── desktop-releases-dl.png ├── desktop.svg ├── develop-dark.svg ├── develop-light.svg ├── develop.svg ├── ens-1.png ├── ens-2.png ├── ens-3.png ├── ens-4.png ├── ens-5.png ├── ens-6.png ├── ens-7.png ├── etherjot1.png ├── etherjot10.png ├── etherjot11.png ├── etherjot12.png ├── etherjot13.png ├── etherjot14.png ├── etherjot15.png ├── etherjot16.png ├── etherjot17.png ├── etherjot18.png ├── etherjot19.png ├── etherjot2.png ├── etherjot20.png ├── etherjot21.png ├── etherjot22.png ├── etherjot23.png ├── etherjot24.png ├── etherjot25.png ├── etherjot26.png ├── etherjot27.png ├── etherjot3.png ├── etherjot4.png ├── etherjot5.png ├── etherjot6.png ├── etherjot7.png ├── etherjot8.png ├── etherjot9.png ├── favicon.ico ├── feed-upload.gif ├── get-address.png ├── identity-create.gif ├── learn-dark.svg ├── learn-light.svg ├── learn.svg ├── linkedin-header-b.png ├── linkedin_header_b.png ├── logo.png ├── logo.svg ├── node-types.png ├── operate.svg ├── preview-image.png ├── sbzz.png ├── sepolia-metamask.png ├── staking-swarmscan.png ├── stamp-buy.gif ├── stamps1.png ├── stamps10.png ├── stamps11.png ├── stamps2.png ├── stamps3.png ├── stamps4.png ├── stamps5.png ├── stamps6.png ├── stamps7.png ├── stamps8.png ├── stamps9.png ├── swarm-desktop-account-tab.png ├── swarm-desktop-files-tab.png ├── swarm-desktop-info-tab.png ├── swarm-desktop-settings-tab.png ├── swarm-desktop-status-tab.png ├── swarm-desktop.png ├── swarm-logo-2.svg ├── swarm-logo.svg ├── undraw_Around_the_world_re_n353.svg ├── undraw_Bitcoin_P2P_re_1xqa.svg ├── undraw_Master_plan_re_jvit.svg ├── upload-a-website1.gif ├── upload-a-website2.gif ├── upload-a-website3.gif ├── upload-a-website4.gif ├── upload.gif ├── upload1.png ├── upload2.png ├── upload3.png ├── upload4.png ├── upload5.png └── upload6.png ├── matomo.js ├── robots.txt ├── swarm-whitepaper.pdf ├── the-book-of-swarm-viktor-tron-v1.0-pre-release7.pdf └── the-book-of-swarm.pdf /.github/workflows/build.yaml: -------------------------------------------------------------------------------- 1 | name: build 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | pull_request: 8 | branches: 9 | - master 10 | 11 | jobs: 12 | build: 13 | 14 | runs-on: ubuntu-22.04 15 | 16 | steps: 17 | - uses: actions/checkout@v2 18 | with: 19 | fetch-depth: 0 20 | 21 | - uses: actions/setup-node@v1 22 | with: 23 | node-version: '18' 24 | 25 | - name: Build 26 | run: | 27 | npm ci 28 | npm run build 29 | -------------------------------------------------------------------------------- /.github/workflows/gh-pages.yaml: -------------------------------------------------------------------------------- 1 | name: github pages 2 | 3 | on: 4 | push: 5 | branches-ignore: 6 | - '**' 7 | tags: 8 | - 'v*.*.*' 9 | 10 | jobs: 11 | deploy: 12 | runs-on: ubuntu-22.04 13 | steps: 14 | - uses: actions/checkout@v2 15 | with: 16 | fetch-depth: 0 17 | 18 | - uses: actions/setup-node@v1 19 | with: 20 | node-version: '18' 21 | 22 | - name: Build for gh-pages 23 | run: | 24 | npm ci 25 | npm run-script build 26 | echo "docs.ethswarm.org" > ./build/CNAME 27 | rm ./build/.nojekyll 28 | 29 | - name: Deploy to gh-pages 30 | uses: peaceiris/actions-gh-pages@v3 31 | with: 32 | github_token: ${{ secrets.GITHUB_TOKEN }} 33 | publish_dir: ./build 34 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .docusaurus 2 | node_modules 3 | .DS_Store 4 | build 5 | public 6 | resources 7 | # Local Netlify folder 8 | .netlify -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 18 2 | -------------------------------------------------------------------------------- /CODING.md: -------------------------------------------------------------------------------- 1 | # Coding guide 2 | 3 | - Please wrap long lines using `newline` characters, so that the `git` 4 | line diffs result in fewer merge conflicts. 5 | 6 | - Don't change things unnecessarily (e.g. if you reindent an entire 7 | paragraph when you're fixing a single typo, then you unnecessarily 8 | increase the probability for merge conflicts). 9 | 10 | - Prefer `npm ci` instead of `npm install`, and only include the 11 | `package-lock.json` file in your commit when you know what you are 12 | doing. For further explanation see this 13 | [stackoverflow question](https://stackoverflow.com/questions/48524417/should-the-package-lock-json-file-be-added-to-gitignore). 14 | 15 | ## Swarm vs. swarm, and uppercasing in general 16 | 17 | `Swarm`, with a capital, refers to the project and the main network, 18 | e.g.: 19 | 20 | > Swarm uses the content hashes as addresses 21 | 22 | > As of today, the Swarm mainnet consists of `n` number of nodes 23 | 24 | `swarm`, in lower case, refers to a swarm of bee nodes. Note that the 25 | Bee client supports running/forming multiple Swarm swarms, i.e. you 26 | can even run your own! 27 | 28 | > when your node joins the designated swarm 29 | 30 | [`Bee`](https://github.com/ethersphere/bee), with a capital, refers to 31 | a specific bee client, written in the `go` programming language, while 32 | `bee`, in lower case, refers to any worker that can join a swarm 33 | (e.g. any client implementation that speaks the Swarm protocol). 34 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Bee Documentation Website 2 | 3 | Documentation for the [Swarm Bee Client](https://github.com/ethersphere/bee). View at [docs.ethswarm.org](https://docs.ethswarm.org). 4 | 5 | ## Contributing 6 | 7 | Pull Requests are welcome, but please read our [CODING](CODING.md) guide! 8 | 9 | ### Node Version 10 | 11 | You must use **node 18** or above. We recommend [nvm](https://github.com/nvm-sh/nvm). 12 | 13 | ### Installation 14 | 15 | After the initial cloning of the repo you need to run: 16 | 17 | ``` 18 | npm ci 19 | ``` 20 | 21 | to download the exact revisions of the dependencies captured in 22 | `package-lock.json`. 23 | 24 | If the dependencies are updated in `package.json`, or if you wish to 25 | test with the latest revisions of the dependencies, then you should 26 | run: 27 | 28 | ``` 29 | npm install 30 | ``` 31 | 32 | and then consider pushing the updated `package-lock.json` to the 33 | repository if everything works fine. 34 | 35 | ### Local Development 36 | 37 | ``` 38 | npm start 39 | ``` 40 | 41 | This command starts a local development server and opens up a browser 42 | window. Most changes are reflected live without having to restart the 43 | server. 44 | 45 | ### Build 46 | 47 | ``` 48 | npm run build 49 | ``` 50 | 51 | This command generates static content into the `build` directory and can be served using any static contents hosting service. 52 | 53 | 54 | ### Note about lunr search plugin 55 | 56 | The lunr search plugin relies on manual [swizzling](https://docusaurus.io/docs/next/swizzling), which ejects the SearchBar component from the theme to allow for customization. Upgrading the Docusaurus theme WILL NOT upgrade swizzled components. This means upgrading the theme could break the search bare. Therefore whenever you upgrade the theme, make sure to delete the old swizzleed SearchBar component at src/theme/SearchBar and swizzle it again using this command: 57 | 58 | ``` 59 | npm run swizzle docusaurus-lunr-search SearchBar -- --eject --danger 60 | ``` 61 | See the documentation for the above command and the plugin at its github repo [here](https://github.com/praveenn77/docusaurus-lunr-search). 62 | 63 | 64 | ## Bumping Version 65 | 66 | Don't forget to find and replace the version number for the whole of the docs folder. 67 | 68 | ## API Reference 69 | 70 | The OpenAPI reference docs are compiled at build time from the OpenAPI yaml files in the `/openapi` directory using the [redocusaurus plugin](https://www.npmjs.com/package/redocusaurus) for Docusaurus. They must be manually updated to stay up to date with the [OpenAPI specs in the Bee repo](https://github.com/ethersphere/bee/tree/master/openapi). -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [require.resolve('@docusaurus/core/lib/babel/preset')], 3 | plugins: ['babel-plugin-styled-components'] 4 | }; 5 | -------------------------------------------------------------------------------- /docs/bee/installation/build-from-source.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Build from Source 3 | id: build-from-source 4 | --- 5 | 6 | Bee is written using the [Go](https://golang.org) language. 7 | 8 | You may build the Bee client software directly from the [source](https://github.com/ethersphere/bee). 9 | 10 | Prerequisites for installing directly from source are: 11 | 12 | - **go** - download the latest release from [golang.org](https://golang.org/dl). 13 | - **git** - download from [git-scm.com](https://git-scm.com/). 14 | - **make** - [make](https://www.gnu.org/software/make/) is usually included by default in most UNIX operating systems, and can be installed and used on almost any other operating system where it is not included by default. 15 | 16 | ### Build from Source 17 | 18 | 1. Clone the repository: 19 | 20 | ```bash 21 | git clone https://github.com/ethersphere/bee 22 | cd bee 23 | ``` 24 | 25 | 2. Use `git` to find the latest release: 26 | 27 | ```bash 28 | git describe --tags 29 | ``` 30 | 31 | 3. Checkout the required version: 32 | 33 | ```bash 34 | git checkout v2.4.0 35 | ``` 36 | 37 | 4. Build the binary: 38 | 39 | ```bash 40 | make binary 41 | ``` 42 | 43 | 5. Check that you are able to run the `bee` command. Success can be verified by running: 44 | 45 | ```bash 46 | dist/bee version 47 | ``` 48 | 49 | ``` 50 | 2.4.0 51 | ``` 52 | 53 | 6. (optional) Additionally, you may also like to move the Bee binary to somewhere in your `$PATH` 54 | 55 | ```bash 56 | sudo cp dist/bee /usr/local/bin/bee 57 | ``` 58 | -------------------------------------------------------------------------------- /docs/bee/installation/fund-your-node.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Fund Your Node 3 | id: fund-your-node 4 | --- 5 | 6 | ## Overview 7 | Bee nodes require **xDAI** (for gas fees) and **xBZZ** (for storage and bandwidth) to function properly. The amount needed depends on your node type and use case. 8 | 9 | ### xDAI is Required For: 10 | - **Buying Postage Stamps** ([Uploading Data](/docs/develop/access-the-swarm/buy-a-stamp-batch)) 11 | - **Stake Management Transactions** ([Staking](/docs/bee/working-with-bee/staking/)) 12 | - **Storage Incentives Transactions** ([Redistribution Game](/docs/concepts/incentives/redistribution-game/) ) 13 | - **Chequebook Deployment** ([Bandwidth Payments](/docs/concepts/incentives/bandwidth-incentives/)) 14 | 15 | ### xBZZ is Required For: 16 | - **Buying Postage Stamps** (scales with data size and duration) 17 | - **Staking** (Minimum **10 xBZZ**, **20 xBZZ** for reserve doubling) 18 | - **Bandwidth Payments** (~**0.5 xBZZ per GB downloaded**) 19 | 20 | ## Token Amounts by Use Case 21 | 22 | | **Use Case** | **Node Type** | **xDAI Required** | **xBZZ Required** | 23 | |-------------|--------------|------------------|------------------| 24 | | Free tier downloads | Ultra-Light, Light, Full | None | None | 25 | | Downloading beyond free tier | Light, Full | None |Scales with volume—start with ~0.1 xBZZ, increase as needed | 26 | | Uploading | Light, Full | None | Scales with volume—start with ~0.1 xBZZ, increase as needed | 27 | | Purchasing Postage Stamp Batches| Light, Full | < 0.01 xDAI / tx | Scales with volume & duration. Can start with ~0.2 xBZZ for small uploads. | 28 | | Staking | Full | < 0.01 xDAI / tx | 10 xBZZ (minimum) | 29 | | Storage Incentives Transactions | Full | < 0.01 xDAI / tx - needs topups over time since these are reoccurring transactions | None | 30 | | Bandwidth Payments | Light, Full | None | Scales with bandwidth (~0.5 xBZZ/GB downloaded) | 31 | | Chequebook Deployment | Light, Full | < 0.001 xDAI | None | 32 | 33 | 34 | ## Getting Tokens 35 | 36 | ### How to Get xDAI 37 | - **Free xDAI Faucets**: You may try one of the [Gnosis Chain faucets](https://docs.gnosischain.com/tools/Faucets) listed in the official Gnosis Chain documentation, however the amount offered may not meet your needs. 38 | - **Purchasing xDAI**: You can also purchase xDAI from [various exchanges](https://docs.gnosischain.com/about/tokens/xdai) listed in the Gnosis Chain documentation. xDAI is also widely available on most major cryptocurrency exchanges. 39 | :::warning 40 | Make sure that you are withdrawing the Gnosis Chain version of xDAI, as xDAI has been bridged to several other chains as well. 41 | ::: 42 | - **Bridging From Ethereum**: If you already have xDAI on Ethereum, you can also consider using the [Gnosis Chain bridge](https://bridge.gnosischain.com/) to transfer it over to Gnosis Chain. 43 | 44 | 45 | 46 | ### How to Get xBZZ 47 | - **Buying xBZZ**: xBZZ can be purchased from a variety of [centralized and decentralized exchanges](https://www.ethswarm.org/get-bzz#how-to-get-bzz) listed on the official Ethswarm.org website. 48 | 49 | 50 | ### Getting Testnet Tokens (Sepolia ETH & sBZZ) 51 | - **Sepolia ETH**: Try [these faucets](https://faucetlink.to/sepolia). 52 | - **sBZZ**: Buy on [Uniswap](https://app.uniswap.org/swap?outputCurrency=0x543dDb01Ba47acB11de34891cD86B675F04840db&inputCurrency=ETH) (ensure **Sepolia testnet** is selected in MetaMask and **Testnet mode** is enabled in the Uniswap web app settings). 53 | 54 | 55 | ## Node Wallet & Chequebook 56 | - **Wallet Creation**: A Gnosis Chain wallet is auto-created when you install Bee. 57 | - **Chequebook Deployment**: A chequebook contract will be automatically deployed when a Bee node is configured to run as a light or full node and has been funded with sufficient xDAI to pay for the chequebook deployment transaction. Required for bandwidth payments. 58 | - **Wallet Access**: Located in `keys/` in Bee's `data-dir` (importable to MetaMask). Also requires a password which is specified through your node's configuration (either passed directly with the `password` option or as a password file specified with the `password-file` option). 59 | 60 | ## Funding Your Wallet 61 | 62 | In order to fund your wallet, first you need to identify your wallet address. The easiest way to do so is to first start your Bee node in ultra-light mode (Bee will start in ultra-light mode when started with the default settings) and then query the Bee API to find your address: 63 | 64 | ```bash 65 | curl -s localhost:1633/addresses | jq .ethereum 66 | ``` 67 | 68 | ```bash 69 | "0x9a73f283cd9212b99b5e263f9a81a0ddc847cd93" 70 | ``` 71 | 72 | Fund your node with the appropriate amount of xDAI and xBZZ based on the recommended amounts specified in [the chart above](/docs/bee/installation/fund-your-node#token-amounts-by-use-case). 73 | 74 | 75 | *For support, ask in the [Develop on Swarm](https://discord.com/channels/799027393297514537/811574542069137449) Discord channel.* 76 | 77 | -------------------------------------------------------------------------------- /docs/bee/installation/hive.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Hive 3 | id: hive 4 | --- 5 | 6 | Due to the mechanics of Swarm's [storage incentives](/docs/concepts/incentives/redistribution-game), node operators may wish to run multiple nodes in order to maximize earning potential. Read [The Book of Swarm](https://www.ethswarm.org/the-book-of-swarm-2.pdf) for more information on how the 7 | swarm comes together. 8 | 9 | ### Docker 10 | 11 | Up-to-date [Docker images for Bee](/docs/bee/installation/docker) are provided. 12 | 13 | ### Docker Compose 14 | 15 | Running multiple Bee nodes is easier with 16 | `docker-compose`. Check out the Docker compose section of the 17 | [Docker README](https://github.com/ethersphere/bee/tree/master/packaging/docker). 18 | 19 | ### Helm 20 | 21 | If you plan to run a large number of Bee nodes and you have experience using Kubernetes with Helm, you can have a look at how we manage our cluster under [Ethersphere/helm](https://github.com/ethersphere/helm/tree/master/charts/bee). 22 | 23 | ### Manual Setup 24 | 25 | If you just want to run a handful of Bee nodes, you can run multiple Bee nodes by creating separate configuration files. 26 | 27 | Create your first configuration file by running 28 | 29 | ```console 30 | bee printconfig &> bee-config-1.yaml 31 | ``` 32 | 33 | Make as many copies of bee-config-1.yaml as you want to run Bee nodes. Increment the number in the name (`bee-config-1` to `bee-config-2`) for each new configuration file. 34 | 35 | Configure your nodes as desired, but ensure that the values `api-addr`, `data-dir` and `p2p-addr` are unique for each configuration. 36 | 37 | ### Monitoring 38 | 39 | See the [logging section](/docs/bee/working-with-bee/logs-and-files) for more information on how to access your node's metrics. Share your community creations (such as [swarmMonitor](https://github.com/doristeo/SwarmMonitoring) - thanks doristeo!) in the [#node-operators](https://discord.gg/X3ph5yGRFU) channel of our Discord server so we can add you to our list of all things that are [awesome](https://github.com/ethersphere/awesome-swarm) and Swarm. 🧡 40 | -------------------------------------------------------------------------------- /docs/bee/installation/set-target-neighborhood.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Set Target Neighborhood 3 | id: set-target-neighborhood 4 | --- 5 | 6 | In older versions of Bee, [neighborhood](/docs/concepts/DISC/neighborhoods) assignment was random by default. However, we can maximize a node's chances of winning xBZZ and also strengthen the resiliency of the network by strategically assigning neighborhoods to new nodes (see the [staking section](/docs/bee/working-with-bee/staking) for more details). 7 | 8 | Therefore the default Bee configuration now includes the `neighborhood-suggester` option, which is set by default to use the Swarmscan neighborhood suggester (`https://api.swarmscan.io/v1/network/neighborhoods/suggestion`). You can use an alternative suggester URL, but it must return a JSON response in the following format: `{"neighborhood":"101000110101"}`. However, we currently recommend using only the default suggester. 9 | 10 | 11 | :::info 12 | The Swarmscan neighborhood selector prioritizes the least populated neighborhood. If a neighborhood contains imbalanced sub-neighborhoods, it will suggest the least populated sub-neighborhood instead. Furthermore, the suggester will temporarily de-prioritize previously suggested neighborhoods based on the assumption that a new node is being created in each suggested neighborhood so that multiple nodes do not simultaneously attempt to join the same neighborhood. 13 | ::: 14 | 15 | #### Setting Neighborhood Manually 16 | 17 | It's recommended to use the default `neighborhood-suggester` configuration for choosing your node's neighborhood, however you may also set your node's neighborhood manually using the `target-neighborhood` option. 18 | 19 | To use this option, it's first necessary to identify potential target neighborhoods. You can find underpopulated neighborhoods using the [Swarmscan website](https://swarmscan.io/neighborhoods). It ranks neighborhoods from least to most populated and displays their leading binary bits. Simply copy the leading bits from one of the least populated neighborhoods (for example, `0010100001`) and use it to set `target-neighborhood`. After doing so, an overlay address within that neighborhood will be generated when starting Bee for the first time. 20 | 21 | ```yaml 22 | ## bee.yaml 23 | target-neighborhood: "0010100001" 24 | ``` 25 | 26 | You can also use the [Swarmscan API endpoint](https://api.swarmscan.io/#tag/Network/paths/~1v1~1network~1neighborhoods~1suggestion/get) to programmatically retrieve a suggested neighborhood: 27 | 28 | ```bash 29 | curl https://api.swarmscan.io/v1/network/neighborhoods/suggestion 30 | ``` 31 | A suggested neighborhood will be returned: 32 | 33 | ```bash 34 | {"neighborhood":"1111110101"} 35 | ``` 36 | -------------------------------------------------------------------------------- /docs/bee/installation/verify.md: -------------------------------------------------------------------------------- 1 | verify.md 2 | 3 | https://github.com/ethersphere/bee/pull/1581 4 | -------------------------------------------------------------------------------- /docs/bee/working-with-bee/bcrypt.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Bcrypt hashing utility 3 | id: bcrypt 4 | --- 5 | 6 | In order to generate a valid admin password hash you can use any available bcrypt compatible tools, both [online](https://bcrypt-generator.com/) and offline (htpasswd). 7 | 8 | For convenience Bee also provides a method to generate and validate password hashes: 9 | 10 | ```sh 11 | $ bee bcrypt super$ecret 12 | $2a$10$eZP5YuhJq2k8DFmj9UJGWOIjDtXu6NcAQMrz7Zj1bgIVBcHA3bU5u 13 | $ bee bcrypt --check super$ecret '$2a$10$eZP5YuhJq2k8DFmj9UJGWOIjDtXu6NcAQMrz7Zj1bgIVBcHA3bU5u' 14 | OK: password hash matches provided plain text 15 | ``` 16 | 17 | :::info 18 | When validating a hash don't forget about quotes - the ($) hash prefix might interfere with your terminal. 19 | ::: 20 | -------------------------------------------------------------------------------- /docs/bee/working-with-bee/bee-tools.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Bee Dashboard 3 | id: bee-dashboard 4 | --- 5 | 6 | ### Bee Dashboard 7 | 8 | Our wonderful community (shout out to [matmertz25](https://github.com/matmertz25)!) has teamed up with our inimitable javascript team, the Bee Gees 🕺 , to create [Bee Dashboard](https://github.com/ethersphere/bee-dashboard) a graphical user interface for your Bee. 9 | 10 | Use this tool to make sure your Bee is functioning correctly, keep an 11 | eye on cheques as they accumulate, and cash them out, withdraw your 12 | earned xBZZ, and much more! 13 | 14 | Head over to the [Github repo](https://github.com/ethersphere/bee-dashboard) for more information on how to install and use _Bee Dashboard_. 15 | 16 | -------------------------------------------------------------------------------- /docs/bee/working-with-bee/introduction.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Introduction 3 | id: introduction 4 | --- 5 | 6 | In this section we cover everything a node operator needs to know about working with Bee: 7 | 8 | ## Configuration 9 | 10 | Learn how to [configure your node](/docs/bee/working-with-bee/configuration), and the details behind all the configuration options Bee provides. 11 | 12 | ## Bee API 13 | 14 | Access the HTTP API directly for [detailed information about your Bee](/docs/bee/working-with-bee/bee-api). 15 | 16 | ## Logs and Files 17 | 18 | Find out where Bee stores your [logs and files](/docs/bee/working-with-bee/logs-and-files). 19 | 20 | ## Bee Dashboard and Swarm CLI 21 | 22 | Try out the [Bee Dashboard app](/docs/bee/working-with-bee/bee-dashboard) which offers an easy to use graphical interface for your Bee node. 23 | 24 | You can use the [`swarm-cli`command line tool](/docs/bee/working-with-bee/swarm-cli) to monitor your Bee's status, cash out your cheques, upload data to the swarm and more! 25 | 26 | ## Cashing Out 27 | 28 | Get your cheques cashed and bank your xBZZ. [See this guide](/docs/bee/working-with-bee/cashing-out) to receiving payments from your peers. 29 | 30 | ## Monitoring and Metrics 31 | 32 | There is a lot going on inside Bee, we provide tools and metrics to help you [find out what's going on](/docs/bee/working-with-bee/monitoring). 33 | 34 | ## Backups 35 | 36 | [Keep your important data safe](/docs/bee/working-with-bee/backups), Bee stores important state and key information on your hardrive, make sure you keep a secure copy in case of disaster. 37 | 38 | ## Upgrading 39 | 40 | Find out how to [keep your Bee up to date](/docs/bee/working-with-bee/upgrading-bee) with the latest and greatest releases, and make sure you're tuned into our release announcements. 41 | 42 | ## Uninstalling Bee 43 | 44 | We hope you won't need to remove Bee. If you do, please let us know if you had issues so we can help resolve them for our beloved network. Here's the guide to [removing Bee from your system](/docs/bee/working-with-bee/uninstalling-bee). 45 | -------------------------------------------------------------------------------- /docs/bee/working-with-bee/monitoring.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Monitoring Your Node 3 | id: monitoring 4 | --- 5 | 6 | Your Bee node is equipped with tools to help you understand what your Bee has been up to! 7 | 8 | Navigate to `http://localhost:1633/metrics`. 9 | 10 | This is the current state of Bee's metrics as they stand at this moment. 11 | 12 | In order to use these metrics and view, we need to keep a record of these metrics over time. 13 | 14 | To do this we will use [Prometheus](https://prometheus.io/docs/introduction/overview/). Simply install, configure as follows, and restart! 15 | 16 | For Ubuntu and other Debian based Linux distributions install using `apt`: 17 | 18 | ```bash 19 | sudo apt install prometheus 20 | ``` 21 | 22 | And configure `localhost:1633` as a `target` in the `static_configs`. 23 | 24 | ```bash 25 | sudo vim /etc/prometheus/prometheus.yml 26 | ``` 27 | 28 | ```yaml 29 | static_configs: 30 | - targets: ["localhost:9090", "localhost:1633"] 31 | ``` 32 | 33 | Navigate to [http://localhost:9090](http://localhost:9090) to see the Prometheus user interface. 34 | 35 | Now that our metrics are being scraped into Prometheus' database, we can use it as a data source which is used by [Grafana](https://grafana.com/oss/grafana/) to display the metrics as a time series graph on the dashboard. 36 | 37 | Type `bee_` in the 'expression' or 'metrics' field in Prometheus or Grafana respectively to see the list of metrics available. Here's a few to get you started! 38 | 39 | ``` 40 | rate(bee_swap_cheques_received[1d]) 41 | rate(bee_swap_cheques_sent[1d]) 42 | rate(bee_swap_cheques_rejected[1d]) 43 | ``` 44 | 45 | Share your creations in the [#node-operators](https://discord.gg/X3ph5yGRFU) channel of our Discord server! 46 | -------------------------------------------------------------------------------- /docs/bee/working-with-bee/swarm-cli.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Swarm CLI 3 | id: swarm-cli 4 | --- 5 | 6 | Swarm CLI is a command line based application which simplifies interactions with the Bee API. It allows you to accomplish most common tasks using easy to understand commands. It also greatly simplifies certain more complex tasks, such as as the management of [feeds](/docs/develop/tools-and-features/feeds). 7 | 8 | For installation and usage instructions, [see the README](https://github.com/ethersphere/swarm-cli/blob/master/README.md). 9 | 10 | To check the latest version, see the Swarm CLI [releases page](https://github.com/ethersphere/swarm-cli/releases). 11 | 12 | For further support and information, [join the Swarm Discord server](https://discord.com/invite/GU22h2utj6). -------------------------------------------------------------------------------- /docs/bee/working-with-bee/uninstalling-bee.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Uninstalling Bee 3 | id: uninstalling-bee 4 | --- 5 | 6 | Choose the appropriate uninstallation method based on how Bee was installed: 7 | 8 | ## Package Manager 9 | 10 | This method can be used for package manager based [installs](/docs/bee/installation/package-manager-install) of the official Debian, RPM, and Homebrew packages. 11 | 12 | :::danger 13 | Uninstalling Bee will permanently delete your keyfiles and configuration. Ensure you have a [full backup](/docs/bee/working-with-bee/backups) before proceeding. 14 | ::: 15 | 16 | ### Debian 17 | 18 | To uninstall Bee and completely remove all associated files including keys and configuration, run: 19 | 20 | ```bash 21 | sudo apt-get purge bee 22 | ``` 23 | 24 | ### RPM 25 | 26 | ```bash 27 | sudo yum remove bee 28 | ``` 29 | 30 | 31 | ## Shell Script / Binary Install 32 | 33 | If Bee was installed using the [automated shell script](/docs/bee/installation/shell-script-install) or as a binary by [building from source](/docs/bee/installation/build-from-source), it can be uninstalled by manually removing the installed binary, configuration files, and data directories. 34 | 35 | ### Identify Data and Config Locations 36 | 37 | The shell script install method may result in slightly different default data and configuration locations based on your system. The easiest way to find these locations is to check the default configuration using the `bee printconfig` command: 38 | 39 | ```bash 40 | bee printconfig 41 | ``` 42 | 43 | The output from this command contains several dozen default configuration values, however we only include the two we need in the example output below, `config` and `data-dir`. These will reveal the default locations for the configuration files and data directory according to our specific system. 44 | 45 | Your output should look similar to this: 46 | 47 | ```bash 48 | # config file (default is $HOME/.bee.yaml) 49 | config: /home/noah/.bee.yaml 50 | # data directory 51 | data-dir: /home/noah/.bee 52 | ``` 53 | 54 | ## Remove Configuration Files 55 | 56 | Bee does not automatically generate a configuration file, but it looks for one at **`$HOME/.bee.yaml`** by default. 57 | 58 | ### Check for Configuration Files 59 | 60 | **Default location for shell script installs:** 61 | ```bash 62 | ls -l $HOME/.bee.yaml 63 | ``` 64 | 65 | ### Remove Configuration Files 66 | If the files exist, remove them: 67 | 68 | ```bash 69 | rm -f $HOME/.bee.yaml 70 | ``` 71 | 72 | 73 | ### Verify Removal 74 | Run the following commands to ensure the configuration files have been deleted: 75 | 76 | ```bash 77 | ls -l $HOME/.bee.yaml 78 | ``` 79 | 80 | If the command returns **"No such file or directory"**, the configuration file has been successfully removed. 81 | 82 | :::caution 83 | If you have generated a config file and saved it to a non default location which you specify when starting your node using a command line flag (`--config`) or environment variable (`BEE_CONFIG`), then it is up to you to keep track of where you saved it and remove it yourself. 84 | ::: 85 | 86 | ## Remove Data Files 87 | 88 | Bee stores its **node data, blockchain state, and other persistent files** in a data directory. If you want to fully remove Bee, this directory must be deleted. The data directory [default location](/docs/bee/working-with-bee/configuration#default-data-and-config-directories) differs based on install method and system type. 89 | 90 | 91 | ## Verify Uninstallation 92 | 93 | To confirm that Bee has been fully uninstalled, run: 94 | 95 | ```bash 96 | command -v bee 97 | ``` 98 | 99 | If Bee is still installed, this command will return the binary path (e.g., /usr/bin/bee). If it returns nothing, Bee has been successfully uninstalled. 100 | 101 | 102 | -------------------------------------------------------------------------------- /docs/bee/working-with-bee/upgrade.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Upgrading Bee 3 | id: upgrading-bee 4 | --- 5 | 6 | It's very important to keep Bee up to date to benefit from security updates and ensure you are able to properly interact with the Swarm network. The [#node-operators](https://discord.com/channels/799027393297514537/811553590170353685) channel is an excellent resource for any of your questions regarding node operation. 7 | 8 | :::warning 9 | Bee sure to [back up](/docs/bee/working-with-bee/backups) your keys and [cash out your cheques](/docs/bee/working-with-bee/cashing-out) to ensure your xBZZ is safe before applying updates. 10 | ::: 11 | 12 | :::warning 13 | Nodes should not be shut down or updated in the middle of a round they are playing in as it may cause them to lose out on winnings or become frozen. To see if your node is playing the current round, check if `lastPlayedRound` equals `round` in the output from the [`/redistributionstate` endpoint](/api/#tag/RedistributionState/paths/~1redistributionstate/get). See [staking section](/docs/bee/working-with-bee/staking/) for more information on staking and troubleshooting. 14 | ::: 15 | 16 | 17 | ### Ubuntu / Debian 18 | 19 | To upgrade Bee, first stop the Bee service: 20 | 21 | ```bash 22 | sudo systemctl stop bee 23 | ``` 24 | 25 | Next, upgrade the `bee` package: 26 | 27 | ```bash 28 | sudo apt-get update 29 | sudo apt-get upgrade bee 30 | ``` 31 | 32 | And will see output like this after a successful upgrade: 33 | ``` 34 | Reading package lists... Done 35 | Building dependency tree 36 | Reading state information... Done 37 | Calculating upgrade... Done 38 | The following packages will be upgraded: 39 | bee 40 | 1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 41 | Need to get 0 B/27.2 MB of archives. 42 | After this operation, 73.7 kB of additional disk space will be used. 43 | Do you want to continue? [Y/n] Y 44 | (Reading database ... 103686 files and directories currently installed.) 45 | Preparing to unpack .../archives/bee_2.0.0_amd64.deb ... 46 | Unpacking bee (2.0.0) over (1.17.3) ... 47 | Setting up bee (2.0.0) ... 48 | Installing new version of config file /etc/default/bee ... 49 | ``` 50 | 51 | Make sure to pay attention to any prompts, read them carefully, and respond to them with your preference. 52 | 53 | You may now start your node again: 54 | 55 | ```bash 56 | sudo systemctl start bee 57 | ``` 58 | 59 | ### Manual Installations 60 | 61 | To upgrade your manual installation, simply stop Bee, replace the Bee binary and restart. 62 | 63 | ### Docker 64 | 65 | To upgrade your Docker installation, simply increment the version number in your configuration and restart. 66 | 67 | -------------------------------------------------------------------------------- /docs/concepts/DISC/DISC.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: DISC 3 | id: disc 4 | --- 5 | 6 | import bos_fig_2_7 from '/static/img/bos_fig_2_7.jpg'; 7 | 8 | 9 | DISC (Distributed Immutable Storage of Chunks) is a storage solution developed by Swarm based on a modified implementation of a [Kademlia DHT](/docs/concepts/DISC/kademlia) which has been specialized for data storage. Swarm's implementation of a DHT differs significantly in that it stores the content in the DHT directly, rather than just storing a list of seeders who are able to serve the content. This approach allows for much faster and more efficient retrieval of data. 10 | 11 | ### Kademlia Topology and Routing 12 | 13 | [Kademlia](/docs/concepts/DISC/kademlia) is a distributed hash table (DHT) widely used in peer-to-peer networks such as Ethereum and Bittorent. It serves as the routing and topology foundation for communication between nodes in the Swarm network. It organizes nodes based on their overlay addresses and ensures that messages are relayed efficiently, even in a dynamic, decentralized environment. 14 | 15 | One of the advantages of using Kademlia as a model for network topology is that both the number of forwarding "hops" required to route a chunk to its destination and the number of peer connections required to maintain Kademlia topology are logarithmic to the size of the network (a minimum of two connections is required in order to maintain Kademlia topology in case of network churn - nodes dropping in and out of the network). This makes Swarm a highly scalable system which is efficient even at very large scales. 16 | 17 | ### Neighborhoods 18 | 19 | [Neighborhoods](/docs/concepts/DISC/neighborhoods) are groups of nodes which are responsible for sharing the same chunks. The chunks which each neighborhood is responsible for storing are defined by the proximity order of the nodes and the chunks. In other words, each node is responsible for storing chunks with which their overlay addresses share a certain number of prefix bits, and together with other nodes which share the same prefix bits, make up neighborhoods which share the responsibility for storing the same chunks. 20 | 21 | Neighborhoods play a key role in providing data redundancy for chunks stored on Swarm since each node in a neighborhood will keep copies of the same chunks. The optional [erasure coding](/docs/concepts/DISC/erasure-coding) feature can also be enabled for added redundancy and greater data protection. 22 | 23 | ### Chunks 24 | 25 | In the DISC model, chunks are the canonical unit of data. When a file is uploaded to Swarm, it gets broken down into 4kb pieces with attached metadata. The pieces then get distributed amongst nodes in the Swarm network based on their [overlay addresses](/docs/references/glossary#overlay). There are two fundamental chunk types: content-addressed chunks and single-owner chunks. 26 | 27 | #### Content-Addressed Chunks and Single-Owner Chunks 28 | 29 | Content-addressed chunks are chunks whose address is based on the hash digest of their data. Using a hash as the chunk address makes it possible to verify the integrity of chunk data. Swarm uses the BMT hash function based on a binary Merkle tree over small segments of the chunk data. A content-addressed chunk has an at most 4KB payload, and its address is calculated as the hash of the span (chunk metadata) and the Binary Merkle Tree hash of the payload. 30 | 31 |
32 | 33 |

34 | Source: The Book of Swarm - Figure 2.7 - "Content addressed chunk" 35 |

36 |
37 | 38 | 39 | For single-owner chunks on the other hand, the address is calculated as the hash of a unique id and the owner's overlay address. The content consists of an arbitrary data payload along with required headers. Unlike a content-addressed chunk, the contents of a single-owner chunk may be updated while the address remains unchanged. Single owner chunks form the basis for feeds, which are data structures that allow for mutable content with a static address. 40 | 41 | ### Push-Sync, Pull-Sync, and Retrieval Protocols 42 | 43 | When a file is first uploaded to Swarm, it gets broken down by the uploading Bee node chunks which are then distributed amongst other Bee nodes in the Swarm network. Chunks get distributed to the target neighborhood by the ***push-sync*** protocol. Once a chunk reaches its destination, it will then be duplicated and synced to other nodes in order to achieve data redundancy through the ***pull-sync*** protocol. The pull-sync protocol operates continuously as nodes enter or exit the network – ensuring that data redundancy is always maintained. When a client node requests a file for download, its request gets forwarded by the ***retrieval-protocol*** to all the nodes storing the relevant chunks, and then those chunks get returned to the requesting node and the file gets reconstructed from its constituent chunks. 44 | 45 | -------------------------------------------------------------------------------- /docs/concepts/DISC/kademlia.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Kademlia 3 | id: kademlia 4 | --- 5 | 6 | import bos_fig_2_3 from '/static/img/bos_fig_2_3.jpg'; 7 | 8 | Kademlia is a distributed hash table (DHT) algorithm used in peer-to-peer networks to efficiently store and retrieve data without relying on centralized servers. It organizes nodes into an overlay network that ensures efficient routing using a binary tree structure. 9 | 10 | ## Kademlia Key Concepts 11 | 12 | ### **XOR Distance Metric** 13 | Kademlia uses a distance metric based on the XOR (exclusive OR) between any addresses. This allows nodes to calculate "distance" from each other. Lookups are made by recursively querying nodes that are progressively closer to the target. 14 | 15 | ### **Routing Table** 16 | Each node in a Kademlia network maintains a routing table containing information about other nodes, organized by the XOR distance between node IDs. 17 | 18 | ## Kademlia Advantages 19 | 20 | ### **Efficient Lookups** 21 | 22 | To retrieve a specific chunk, a node uses Kademlia's lookup process to find and fetch the chunk from a node in the neighborhood where it is stored. The number of hops required for a chunk to be retrieved is logarithmic to the number of nodes in the network, meaning lookups remain efficient even as the network grows larger and larger. 23 | 24 | 25 | ### **Fault Tolerance** 26 | 27 | Because nodes' peer lists are regularly refreshed through lookups and interactions, and because redundant copies of data are replicated within the network, the network remains functional even when individual nodes leave or fail. 28 | 29 | ### **Scalability** 30 | 31 | Kademlia's design allows it to scale to large networks, as each node only needs to keep track of a small subset of the total nodes in the network. The required set of connected peers grows logarithmically with the number of nodes, making it efficient even in large networks. 32 | 33 | 34 | ## Kademlia in Swarm 35 | 36 | As mentioned above, Swarm's version of Kademlia differs from commonly used implementations of Kademlia in several important ways: 37 | 38 | ### Proximity Order & Neighborhoods 39 | 40 | Swarm introduces the concept of [proximity order (PO)](/docs/references/glossary#proximity-order-po) as a discrete measure of node relatedness between two addresses. In contrast with Kademlia distance which is an exact measure of relatedness, PO is used to measure the relatedness between two addresses on a discrete scale based on the number of shared leading bits. Since this metric ignores all the bits after the shared leading bits, it is not an exact measure of distance between any two addresses. 41 | 42 | In Swarm's version of Kademlia, nodes are grouped into [neighborhoods](/docs/concepts/DISC/neighborhoods) of nodes based on PO (ie., neighborhood are composed of nodes which all share the same leading binary prefix bits). Each neighborhood of nodes is responsible for storing the same set of chunks. 43 | 44 | Neighborhoods are important for ensuring data redundancy, and they also play a role in the incentives system which guarantees nodes are rewarded for contributing resources to the network. 45 | 46 | ### Forwarding Kademlia 47 | 48 | Kademlia comes in two flavors, iterative and forwarding. In iterative Kademlia, the requesting node directly queries each node it contacts for nodes that are progressively closer to the target until the node with the requested chunk is found. The chunk is then sent directly from the storer node to the node which initiated the request. 49 | 50 | In contrast, Swarm makes use of forwarding Kademlia. Here each node forwards the query to the next closest node in the network, and this process continues until a node with the requested chunk is found. Once the chunk is found, it is sent back along the same chain of nodes rather than sent directly to the initiator of the request. 51 | 52 | The main advantage of forwarding Kademlia is that it maintains the anonymity of the node which initiated the request. 53 | 54 |
55 | 56 |

57 | Source: The Book of Swarm - Figure 2.3 - "Iterative and Forwarding Kademlia routing" 58 |

59 |
60 | 61 | 62 | ### Neighborhood Based Storage Incentives 63 | 64 | Swarm introduces a storage incentives layer on top of its Kademlia implementation in order to reward nodes for continuing to provide resources to the network. Neighborhoods play a key role in the storage incentives mechanism. Storage incentives take the role of a "game" in which nodes play to win a reward for storing the correct data. Each round in the game, one neighborhood is chosen to play, and all nodes within the same neighborhood participate as a group. The nodes each compare the data they are storing with each other to make sure they are all storing the data they are responsible for, and one node is chosen to win from among the group. You can read more about how storage incentives work in the dedicated page for storage incentives. -------------------------------------------------------------------------------- /docs/concepts/access-control.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Access Control 3 | id: access-control 4 | --- 5 | 6 | The Access Control Trie (ACT) implements the operation of encryption at the chunk level, with the presence of a decryption/encryption key being the only distinction between accessing private and public data. 7 | 8 | :::info 9 | This article describes the high level concepts and functionalities of ACT. If you're ready to try it out for yourself, please refer to this [hands on usage guide with specific details](/docs/develop/tools-and-features/act). 10 | ::: 11 | 12 | In decentralized public data storage systems like Swarm, data is distributed across multiple nodes. Ensuring 13 | confidentiality, integrity, and availability becomes paramount. The Access Control Trie (ACT) addresses these challenges 14 | by managing access control information for Swarm nodes. 15 | 16 | ## Key Concepts 17 | 18 | From the perspective of access controlled content, we can identify two main roles: 19 | 20 | | Role | Rights & responsibilities | 21 | |------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------| 22 | | **Content Publisher** | | 23 | | **Grantee (Content Viewer)** | | 24 | 25 | The control is defined by a process to obtain the full (decrypted) reference to the protected content uploaded by the 26 | publisher, which makes granted access possible. 27 | 28 | For the management of access by multiple grantees (viewers), an additional layer is introduced to derive the access key 29 | from their specific session key. This data structure, the lookup table for ACT, is implemented as key-value store in a 30 | Swarm manifest format. The publisher is able to add and remove grantees from this ACT. 31 | 32 | ### Session 33 | 34 | For each grantee, their public key is used as the session key. Using Diffie-Hellman key derivation, two additional keys 35 | will be derived from the session key: a lookup key and an access key decryption key (used for symmetric encryption of 36 | the access key). This means each grantee will have the content's access key specifically encrypted for them, and only 37 | they will be able to decrypt this, thus gain access to the content. 38 | 39 | ### ACT lookup table 40 | 41 | The ACT lookup table is a key-value store implemented over a Swarm manifest. It holds lookup keys and encrypted access 42 | keys prepared for the grantees when they are added to the ACT (granting access to the content). 43 | 44 | ### History 45 | 46 | The history of the ACT is maintained as well. This allows to retrieve a historical version of the ACT based on the 47 | timestamp attached to it. This also ensures that grantees will be able to retrieve the content version they were 48 | granted access to (using the relevant timestamp), even if their access to newer versions were revoked. 49 | 50 | ### Encryption 51 | 52 | It is important to emphasise that all elements of the process will undergo encryption. Including the grantee list 53 | itself, which is encrypted using the publisher’s own lookup key, as well as the grantee list’s content reference. This 54 | ensures that the security of the process and the data is always maintained. -------------------------------------------------------------------------------- /docs/concepts/incentives/bandwidth-incentives.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Bandwidth Incentives (SWAP) 3 | id: bandwidth-incentives 4 | --- 5 | 6 | The Swarm Accounting Protocol (SWAP) is a protocol used to manage the exchange of bandwidth resources between nodes. SWAP ensures that node operators collaborate in routing messages and data while protecting the network against frivolous use of bandwidth. The protocol combines off-chain peer-to-peer based accounting with on-chain settlement through the chequebook contract. 7 | 8 | As nodes relay requests and responses, they keep track of their bandwidth usage with each of their peers. Peers engage in a service-for-service exchange, where they provide resources to each other based on their relative usage. 9 | 10 | Once a node's relative debt with one of their peers crosses a certain threshold, the party in debt can either send a xBZZ payment in the form of a "cheque" (an off chain commitment to pay their debt), or can continue to provide bandwidth services in kind until their debt is paid off. Each node can set their own threshold for the level of relative debt they accept. Freeloader nodes which do not pay their debts are at risk of being blacklisted by other nodes. 11 | 12 | ## Chequebook Contract 13 | 14 | The [chequebook contract](https://github.com/ethersphere/swap-swear-and-swindle/blob/master/contracts/ERC20SimpleSwap.sol) is a smart contract used in the SWAP protocol to manage cheques that are sent between nodes on the network. It acts as a wallet which nodes can fund with xBZZ which can be used to issue payments when presented with a valid cheque. The contract is also responsible for ensuring that cheques are valid and are cashed out correctly. 15 | 16 | When a node sends a cheque to one of its peers, it includes a signed message that specifies the amount of xBZZ tokens being transferred and the recipient's address. The chequebook contract receives this message and verifies that it is valid by checking the signature and ensuring that the sender has enough funds to cover the transfer. 17 | 18 | If the cheque is valid, the contract updates the balances of both nodes accordingly. The recipient can then cash out their xBZZ tokens by sending a transaction to the blockchain that invokes a function in the chequebook contract. This function transfers the specified amount of xBZZ tokens from the sender's account to the recipient's account. 19 | 20 | ## Opportunistic Caching 21 | 22 | When a node serves a chunk, the chunk is saved in the nodes' cache. Popular chunks which are frequently requested are kept in the cache so that they can be served again without the need to re-download the chunks from the network. This allows nodes to maximise their earnings by retaining popular chunks. This mechanism also contributes to Swarm's scalability, as popular chunks are always readily available for download as a result of opportunistic caching. 23 | 24 | To learn in more detail about how bandwidth incentives work, refer to sections 3.1 and 3.2 from [The Book of Swarm](https://papers.ethswarm.org/p/book-of-swarm/). -------------------------------------------------------------------------------- /docs/concepts/incentives/overview.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Incentives Overview 3 | id: overview 4 | --- 5 | 6 | import { globalVariables } from '/src/config/globalVariables' 7 | 8 | A key challenge in decentralized data networks is incentivizing users to store and transmit data. Swarm addresses this with two incentive mechanisms: **storage incentives**, which reward nodes for storing data, and **bandwidth incentives**, which reward nodes for relaying data. Together, these mechanisms establish a self-sustaining economic system where nodes are compensated for contributing resources honestly. 9 | 10 | Swarm's storage incentives are detailed in the [Future Proof Storage](https://www.ethswarm.org/swarm-storage-incentives.pdf) paper and [The Book of Swarm](https://papers.ethswarm.org/p/book-of-swarm/). 11 | 12 | ## Storage Incentives 13 | 14 | Storage incentives reward node operators for providing disk space and reliably storing data. The system is governed by three interconnected smart contracts: 15 | 16 | - **Postage Stamp Contract** – Handles payments for uploading data by way of purchasing "postage stamp batches". 17 | - **Redistribution Contract** – Distributes payments for postage stamps to nodes that store data. 18 | - **Price Oracle Contract** – Uses network redundancy data to determine postage stamp prices. 19 | 20 | If you want to dig into the code, check out the [incentives contracts repo](https://github.com/ethersphere/storage-incentives) 21 | You can find the on-chain address for each contract within the docs [here](/docs/references/smart-contracts#storage-incentives-contracts), however since the contracts there are updated manually, they may at times fall slightly behind the most recent changes. For the most up to date address for each storage incentives contract refer to the [storage incentives ABI repo](https://github.com/ethersphere/go-storage-incentives-abi/commits/master/abi/abi_mainnet.go), and you can also find past addresses of older versions of the incentives contracts by reviewing previous commits. 22 | 23 | ### Postage Stamps 24 | 25 | Postage stamps are required to upload data to Swarm, similar to how real-world postage stamps prepay for mail delivery. Instead of being purchased individually, they are bought in batches using xBZZ through the postage stamp smart contract. 26 | 27 | The xBZZ used to buy postage stamps is later redistributed as storage incentives. The **price oracle contract** adjusts postage stamp pricing based on network redundancy to ensure a sustainable level of storage. You can find more details about postage stamps [here](/docs/concepts/incentives/postage-stamps). 28 | 29 | ### Redistribution Game 30 | 31 | The redistribution game determines how xBZZ from postage stamp purchases is distributed among full staking nodes that store data. The system is designed so that **honestly storing assigned data** is the most profitable strategy. Rules for this process are encoded in the [redistribution smart contract](https://github.com/ethersphere/storage-incentives). 32 | 33 | Additionally, the game generates a **utilization signal**, which the price oracle uses to regulate postage stamp prices. Read more [here](/docs/concepts/incentives/redistribution-game). 34 | 35 | ### Price Oracle 36 | 37 | The price oracle contract dynamically adjusts postage stamp prices based on network utilization data from the redistribution contract. This mechanism ensures optimal redundancy by increasing or decreasing the price of storage as needed. [Read more](/docs/concepts/incentives/price-oracle). 38 | 39 | ## Bandwidth Incentives 40 | 41 | Nodes in Swarm not only store data but relay data across the network. **Bandwidth incentives** compensate nodes for these services. 42 | 43 | The **Swarm Accounting Protocol (SWAP)** facilitates bandwidth payments between nodes, which can be settled either **in-kind** (data exchange) or via **cheques** processed through a **chequebook contract** on Gnosis Chain. Only full nodes can participate in SWAP. 44 | 45 | Read more [here](/docs/concepts/incentives/bandwidth-incentives). 46 | 47 | -------------------------------------------------------------------------------- /docs/concepts/incentives/price-oracle.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Price Oracle 3 | id: price-oracle 4 | --- 5 | 6 | The job of the [oracle contract](https://github.com/ethersphere/storage-incentives/blob/master/src/PriceOracle.sol) is to set the price of postage stamps. The oracle contract uses data from the [redistribution contract](https://github.com/ethersphere/storage-incentives/blob/master/src/Redistribution.sol) in order to set the appropriate price for postage stamps through the [postage stamp contract](https://github.com/ethersphere/storage-incentives/blob/master/src/PostageStamp.sol). The data from the redistribution contract is used to calculate a "utilisation signal". This signal is an indicator of how much the Swarm network’s data storage capacity is being utilized. Specifically, the signal is a measure of data redundancy on the network. Redundancy is a measure of how many copies of each piece of data can be stored by the network. The protocol targets a fourfold level of data redundancy as a safe minimum. 7 | 8 | For example, if there is an increase in postage stamps being purchased while the number of nodes remains constant, the data redundancy level will begin to fall as data storers’ available space begins to become reserved. If too many postage stamps are purchased without an equivalent increase in storage providers, the redundancy level may fall below four. In this case, the oracle will increase the price of postage stamps so that it becomes more expensive to store data on Swarm. The higher cost of storage will then lead to less postage stamps being purchased, and will push the redundancy level back up towards four. 9 | 10 | Conversely, if the amount of Stamps being purchased decreases while the number of storage provider nodes remains constant, the redundancy level will increase as there are fewer chunks of data to be distributed amongst the same number of nodes. In this case, the oracle will decrease the Postage Stamp price in order to promote more data storers to store their data on Swarm. The lower cost of storage will then lead to more Postage Stamps being purchased and push the redundancy level back down towards four. 11 | 12 | -------------------------------------------------------------------------------- /docs/concepts/incentives/redistribution-game.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Redistribution Game 3 | id: redistribution-game 4 | --- 5 | 6 | The redistribution game distributes xBZZ collected from [postage stamp](/docs/concepts/incentives/postage-stamps) purchases, rewarding nodes for providing storage. Redistribution rewards incentivize nodes to continue providing storage to the network. The game is designed so that the most profitable strategy for participants is to store their assigned data honestly. 7 | 8 | ### Redistribution Game Details 9 | 10 | Uploading data to Swarm requires purchasing postage stamp batches with xBZZ. The collected xBZZ is later redistributed as rewards to storage nodes. Every 152 Gnosis Chain blocks ***a single [neighborhood](/docs/concepts/DISC/neighborhoods)*** is selected to play the redistribution game. For each round of the game, one node from the selected neighborhood will have the chance to win a reward which is paid out from the accumulated xBZZ. 11 | 12 | The game has 3 phases, `commit`, `reveal`, and `claim`. In the `reveal` phase of a previous game, an "anchor" address is randomly generated and used to determine the neighborhood for the current round. 13 | 14 | In the `commit` phase, nodes issue an on-chain transaction including an encrypted hash of the data they are storing (the unencrypted hash is known as the "reserve commitment") along with the [depth](/docs/references/glossary#2-area-of-responsibility-related-depths) for which they are reporting. This serves as an attestation of the data they are storing without revealing any other information. 15 | 16 | In the `reveal` phase, each node reveals the decryption key for their encrypted hashes thereby publishing the hash. The winner is chosen at random among the honest nodes, but it is weighted in proportion to each node's stake density. Stake density is calculated as so: 17 | 18 | $$ 19 | \text{stake density} = \text{stake(xBZZ)} \times {2}^\text{storage depth} 20 | $$ 21 | 22 | 23 | ### Penalties 24 | 25 | During the `reveal` phase if a nodes' revealed hash does not match the honest nodes' hash, that node will be temporarily frozen and will not be able to participate in a number of upcoming rounds. Currently the freeze period is defined in the [redistribution smart contract](https://github.com/ethersphere/storage-incentives/blob/master/src/Redistribution.sol#L536C1-L536C100) as: 26 | 27 | 28 | $$ 29 | 152 \times 2^\text{storage radius} \text{ blocks (at 5s per block)} 30 | $$ 31 | 32 | So for example at a storage radius of 10: 33 | 34 | $$ 35 | 152 \times 2^{10} \text{ blocks (at 5s per block)} ≈ \text{ 9 days} 36 | $$ 37 | 38 | 39 | -------------------------------------------------------------------------------- /docs/concepts/introduction.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Introduction 3 | id: introduction 4 | --- 5 | 6 | 7 | Swarm is a peer-to-peer network of Bee nodes that collectively provide censorship-resistant decentralised storage and communication services. Swarm's mission is to enable a self-sovereign global society and permissionless open markets by providing scalable decentralized storage infrastructure for Web3. Its incentive system is enforced through smart contracts on the Gnosis Chain blockchain and powered by the xBZZ token, making it economically self-sustaining. 8 | 9 | ## Bee Client 10 | 11 | Bee is a Swarm client implemented in Go and serves as the foundation of the Swarm network. Bee nodes form a private, decentralized, and self-sustaining network for permissionless publishing and data storage. You can learn more about how Bee clients work by reading about the [concepts and protocols](/docs/concepts/what-is-swarm/) which underpin the Swarm network. To get hands on experience working with Swarm, you can start by learning how to [install and operate a Bee node](/docs/bee/installation/getting-started). 12 | 13 | 14 | ## Swarm Foundation 15 | 16 | The [Swarm Foundation](https://www.ethswarm.org/foundation) is dedicated to advancing open-source technology for decentralized data storage and exchange. It fosters a sustainable, independent ecosystem by supporting the development of free and open-source software (FLOSS) and empowering a community built around crypto-economic incentives for processing, distributing, and storing data. 17 | 18 | Its mission is to champion digital freedom by promoting the Swarm network as the foundational layer of the fair data economy, while nurturing the community that sustains it. 19 | 20 | To achieve this, the foundation provides financial grants and other forms of support, evaluated on a case-by-case basis. -------------------------------------------------------------------------------- /docs/concepts/pss.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: PSS 3 | id: pss 4 | --- 5 | 6 | PSS, or Postal Service over Swarm, is a messaging protocol that enables users to send and receive messages over Swarm. It is an essential component of Swarm's infrastructure, providing secure, private, and efficient communication between nodes. 7 | 8 | PSS is designed to be secure by encrypting messages for the intended recipient and wrapping them with a topic in a content-addressed chunk. The chunk is crafted in such a way that its content address falls into the recipient's neighborhood, ensuring that delivery is naturally taken care of by the push-sync protocol. This ensures that messages are delivered only to the intended recipient's neighborhood and cannot be intercepted or read by unauthorized parties. While the chunk will be delivered to all members of the recipient's neighborhood, only the recipient will be able to decrypt the message using their private key. 9 | 10 | PSS also provides privacy by allowing users to receive messages from previously unknown identities. This makes it an ideal communication primitive for sending anonymous messages to public identities such as registrations or initial contact to start a thread by setting up secure communication. 11 | 12 | Efficiency is another key feature of PSS. It uses direct node-to-node messaging in Swarm, which means that messages are delivered directly from one node to another without the need for intermediaries. This reduces latency and ensures that messages are delivered quickly and reliably. 13 | 14 | PSS also supports mailboxing, which allows users to deposit messages for download if the recipient is not online. This ensures that messages are not lost if the recipient is offline when they are sent. 15 | -------------------------------------------------------------------------------- /docs/concepts/what-is-swarm.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: What is Swarm? 3 | id: what-is-swarm 4 | --- 5 | 6 | import bos_fig_1_1 from '/static/img/bos_fig_1_1.jpg'; 7 | 8 | # What is Swarm? 9 | 10 | The complete vision of Swarm is described in detail in [The Book of Swarm](https://papers.ethswarm.org/p/book-of-swarm/) written by Swarm founder Viktor Tron, with further high level details described in the [whitepaper](https://papers.ethswarm.org/p/whitepaper/). More in depth low level implementation details can be found in the [Swarm Specification paper](https://papers.ethswarm.org/p/swarm-specification/). The latest research and technical papers from Swarm can be found on the ["Papers" section](https://papers.ethswarm.org/) of the Ethswarm homepage. 11 | 12 | Swarm is peer-to-peer network of nodes which work together to provide decentralised storage and communication infrastructure. 13 | 14 | Swarm can be divided into four main parts: 15 | 16 | 1. Underlay Network - A peer-to-peer network protocol to serve as underlay transport. Swarm's underlay network is built with [libp2p](https://libp2p.io/). 17 | 2. Overlay Network - An overlay network with protocols powering a distributed immutable storage of chunks (fixed size data blocks). 18 | 3. Data Access Layer - A component providing high-level data access and defining APIs for base-layer features. 19 | 4. Application Layer - An application layer defining standards and outlining best practices for more elaborate use cases. 20 | 21 |
22 | 23 |

24 | Source: The Book of Swarm - Figure 1.1 - "Swarm’s Layered Design" 25 |

26 |
27 | 28 | 29 | 30 | Of these four main parts, parts 2 and 3 form the core of Swarm. 31 | 32 | ### 1. Underlay Network 33 | 34 | The first part of Swarm is a peer-to-peer network protocol that serves as the underlay transport. The underlay transport layer is responsible for establishing connections between nodes in the network and routing data between them. It provides a low-level communication channel that enables nodes to communicate with each other directly, without relying on any centralised infrastructure. 35 | 36 | Swarm is designed to be agnostic of the particular underlay transport used, as long as it satisfies certain requirements described in The Book of Swarm. 37 | 38 | As the [libp2p](https://libp2p.io/) library meets all these requirements it has been used to build the Swarm underlay network. 39 | 40 | 41 | ### 2. Overlay Network 42 | 43 | The second part of Swarm is an overlay network with protocols powering the [Distributed Immutable Store of Chunks (DISC)](/docs/concepts/DISC/). This layer is responsible for storing and retrieving data in a decentralised and secure manner. 44 | 45 | Swarm's overlay network is built on top of the underlay transport layer and uses [Kademlia](/docs/concepts/DISC/kademlia) overlay routing to enable efficient and scalable communication between nodes. Kademlia is a distributed hash table (DHT) algorithm that allows nodes to locate each other in the network based on their unique identifier or hash. 46 | 47 | Swarm's DISC is an implementation of a Kademlia DHT optimized for storage. While the use of DHTs in distributed data storage protocols is common, for many implementations DHTs are used only for indexing file references. Swarm's DISC distinguishes itself from other implementations by instead breaking files into chunks and storing the chunks themselves directly within the DHT. 48 | 49 | Each chunk has a fixed size of 4kb and is distributed across the network using the DISC model. Each chunk has a unique address taken from the same namespace as the network node addresses that allows it to be located and retrieved by other nodes in the network. 50 | 51 | Swarm's distributed immutable storage provides several benefits, including data redundancy, tamper-proofing, and fault tolerance. Because data is stored across multiple nodes in the network, it can be retrieved even if some nodes fail or go offline. 52 | 53 | Built on top of the overlay network is also an [incentives layer](/docs/concepts/incentives/overview) which guarantees that node operators which share their resources with the network are fairly rewarded for their services. 54 | 55 | ### 3. Data Access Layer 56 | 57 | The third part of Swarm is a component that provides high-level data access and defines APIs for base-layer features. This layer is responsible for providing an easy-to-use interface for developers to interact with Swarm's underlying storage and communication infrastructure. 58 | 59 | Swarm's high-level data access component provides [APIs that allow developers to perform various operations](/api/) on the network, including [uploading and downloading data](/docs/develop/access-the-swarm/upload-and-download) and searching for content. These APIs are designed to be simple and intuitive, making it easy for developers to build decentralised applications on top of Swarm. 60 | 61 | ### 4. Application Layer 62 | 63 | The fourth part of Swarm is an application layer that defines standards and outlines best practices for more elaborate use cases. This layer is responsible for providing guidance to developers on [how to build complex applications](/docs/develop/introduction) on top of Swarm's underlying infrastructure. 64 | 65 | -------------------------------------------------------------------------------- /docs/desktop/access-content.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Access Content 3 | id: access-content 4 | --- 5 | 6 | Accessing content on Swarm using Swarm Desktop is easy. All you need to get started is the Swarm hash for the content you wish to access. Whenever content is [uploaded to Swarm](/docs/desktop/upload-content) a Swarm hash is generated as a reference to that content. 7 | 8 | To access content on Swarm go to the ***Files*** tab and click ***Download***: 9 | 10 | ![](/img/access1.png) 11 | 12 | From there, paste the Swarm hash for the content you want to access, and click ***Find***. We'll use the hash for a Swarm blog post explaining how to upload a website to Swarm: 13 | 14 | `6843d3be17364ea0620011430e4db2a26ff781da478493a02d6eb5aae886b8ae` 15 | 16 | ![](/img/access2.png) 17 | 18 | On the following screen you will see the data associated with the Swarm hash and see options for downloading (or browsing if it is a hash for a website): 19 | 20 | ![](/img/access3.png) 21 | 22 | Click ***View Website*** to see the site in your browser, or ***Download*** to download the files: 23 | 24 | ![](/img/access4.png) 25 | 26 | -------------------------------------------------------------------------------- /docs/desktop/backup-restore.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Backup and Restore 3 | id: backup-restore 4 | --- 5 | 6 | ## Create a Backup 7 | 8 | To create a backup of your Bee node in Swarm Desktop, start by shutting down your node. 9 | 10 | Right click the Bee icon in the System tray and select `Stop Bee` and then `Quit` to close and exit from Swarm Desktop: 11 | 12 | ![](/img/backup2.png) 13 | 14 | 15 | Next navigate to the `Settings` tab in the app and copy the location of the data directory as indicated in the `Data DIR` field: 16 | 17 | ![](/img/backup1.png) 18 | 19 | Navigate to the directory you just copied and create copies of all the files in that directory (`\data-dir`), including `localstore`, `statestore`, `stamperstore`, `kademlia-metrics` and `keys` folders and store them in a secure and private location. 20 | 21 | ![](/img/backup7.png) 22 | 23 | In addition to the data folders, you will also need the password found in the `config.yaml` file in order to restore a Bee node from backup. Move up one directory from `Data DIR` to the `Data` directory, and create a copy of the `config.yaml` file and save it along with the other folders you just backed up: 24 | 25 | ![](/img/backup4.png) 26 | 27 | Alternatively you may open the `config.yaml` and save the password as a text file along with the rest of your backup files: 28 | 29 | ![](/img/backup5.png) 30 | 31 | Your completed backup should contain all the files from your data directory as well as your password (either in your `config.yaml` file or as a separate file or written down.) 32 | 33 | ![](/img/backup8.png) 34 | 35 | ### Back-up Gnosis Chain Key Only 36 | 37 | If you only wish to back-up your Gnosis Chain key, navigate to the `\data-dir\keys` directory, and copy the `swarm.key` to a safe location: 38 | 39 | ![](/img/backup9.png) 40 | 41 | 42 | You also need the password found in the `config.yaml` file in order to access your Gnosis Chain account. Move up one directory from `Data DIR` to the `Data` directory, and create a copy of the `config.yaml` file and save it along with the other folders you just backed up: 43 | 44 | ![](/img/backup4.png) 45 | 46 | Alternatively you may open the `config.yaml` and save the password as a text file along with the rest of your backup files: 47 | 48 | ![](/img/backup5.png) 49 | 50 | ## Restore from Backup 51 | 52 | To restore from backup, begin with a [new install](/docs/desktop/install) of Swarm Desktop. Once the installation process is finished, navigate to the `Settings` tab in the app and copy the install file directory as indicated in the `Data DIR` field: 53 | 54 | ![](/img/backup1.png) 55 | 56 | Before navigating to the directory you just copied, right click the Bee icon in the System tray and select `Stop Bee` and then `Quit` to close and exit from Swarm Desktop: 57 | 58 | ![](/img/backup2.png) 59 | 60 | Next open your file explorer and navigate to the directory you just copied. Delete any files present in the directory, and replace them with your own backup copies (excluding the `config.yaml` / password file): 61 | 62 | ![](/img/backup7.png) 63 | 64 | Move up one directory from `Data DIR` to `Data`, and replace delete the `config.yaml` file and replace it with the `config.yaml` file from your backup. 65 | 66 | Alternatively if you have saved just the password and not the entire config file, open the default `config.yaml` file in a text editor such as VS Code or a plain text editor: 67 | 68 | ![](/img/backup4.png) 69 | 70 | ![](/img/backup5.png) 71 | 72 | Replace the `password` string with your own password which you saved from the `config.yaml` backup. 73 | 74 | Restart Swarm Desktop and check to see if the backup was restored successfully: 75 | 76 | ![](/img/backup6.png) 77 | 78 | ### Restore Gnosis Chain Account 79 | 80 | If you only wish to access your Gnosis Chain account, you can [follow these instructions](/docs/bee/working-with-bee/backups#metamask-import) for exporting to Metamask in order to access your account. -------------------------------------------------------------------------------- /docs/desktop/configuration.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Configuration 3 | id: configuration 4 | --- 5 | 6 | 7 | ## Setting RPC Endpoint 8 | 9 | In order to interact with the Gnosis Chain to buy stamps, participate in staking, and manage assets such as xBZZ, Bee nodes require a valid Gnosis Chain RPC endpoint. By default the RPC endpoint is set to https://xdai.fairdatasociety.org, however any valid Gnosis Chain RPC endpoint may be used. 10 | 11 | To modify the RPC endpoint, first navigate to the ***Settings*** tab: 12 | 13 | ![](/img/config1.png) 14 | 15 | From the ***Settings*** tab, expand the API Settings section and click the pen button next to Blockchain RPC URL to edit the default RPC. You can choose any valid Gnosis Chain RPC, either from your own Gnosis node or a service provider. You can find a list of paid and free RPC options from the [Gnosis Chain docs](https://docs.gnosischain.com/tools/RPC%20Providers/). For this example we will use the free endpoint - *https://xdai.fairdatasociety.org*. 16 | 17 | :::warning 18 | Other ***free public RPC endpoints are discouraged,*** since they may enforce rate limiting or may not store the historical smart contract data required by Bee nodes. [Read more](/docs/bee/working-with-bee/configuration#setting-blockchain-rpc-endpoint). 19 | ::: 20 | 21 | 22 | ![](/img/config2.png) 23 | 24 | Click ***Save and Restart*** to finish changing the RPC endpoint. 25 | 26 | ## Upgrading from an Ultra-light to a Light Node 27 | 28 | Bee ultra-light nodes are limited to only downloading small amounts of data from Swarm. In order to download greater amounts of data or to upload data to Swarm you must upgrade to a light node. To do this we need to first fund our Swarm Desktop Bee node with some xDAI (DAI bridged from Ethereum to Gnosis Chain which serves as Gnosis Chain's native token for paying transaction fees) in order to pay for the Gnosis Chain transactions required for setting up a light node. 29 | 30 | 31 | ### Bridging Ethereum DAI to Gnosis Chain as xDAI 32 | 33 | If you already have some xDAI on a Gnosis Chain address, skip to the next step ***Funding Node with xDAI***. If you have DAI on Ethereum and need to swap it for xDAI, you can use one of the [Gnosis Chain Bridge](https://bridge.gnosischain.com/) 34 | 35 | Five to ten xDAI is plenty to get started. 36 | 37 | ### Funding Node with xDAI 38 | 39 | Once you have a few xDAI in your Gnosis Chain address, to fund your Bee node you need to send it from your wallet to your Swarm Desktop wallet. You can find your address from the ***Account*** tab of the app. 40 | 41 | ![](/img/config3.png) 42 | 43 | 44 | Next simply send your xDAI to that address. Before sending, make sure you have set your wallet to use the Gnosis Chain network and not the Ethereum mainnet. If Gnosis Chain is not included as default selectable network in your wallet, you may need to add the network manually. You can use this configuration to add Gnosis Chain: 45 | 46 | | Field | Value | 47 | |--------------|-----------| 48 | |**Network name:**|Gnosis| 49 | | **New RPC URL:** | https://xdai.fairdatasociety.org | 50 | | **Chain ID:**| 100 | 51 | | **Symbol:**| xDai | 52 | | **Block Explorer URL (Optional):**| https://blockscout.com/xdai/mainnet | 53 | 54 | ![](/img/config4.png) 55 | 56 | The transaction should be confirmed in under a minute. We can check on the ***Account*** page to see when the xDAI has been received: 57 | 58 | ![](/img/config5.png) 59 | 60 | 61 | ### Set Up Wallet 62 | 63 | Now with some xDAI in the Swarm Desktop wallet, we can upgrade our Bee node from ultra-light to a light node. Completing the setup process will swap xDAI for some xBZZ at the current price, and will issue the transactions needed to set up the chequebook contract. 64 | 65 | To get started, navigate to the ***Info*** tab and click the ***Setup wallet*** button. 66 | ![](/img/config10.png) 67 | Click ***Use xDAI***. 68 | ![](/img/config6.png) 69 | Confirm that you have sufficient xDAI balance and click ***Proceed***. 70 | ![](/img/config7.png) 71 | Click ***Swap Now and Upgrade***. 72 | ![](/img/config8.png) 73 | Wait for the upgrade to complete. 74 | ![](/img/config9.png) 75 | After the upgrade is complete, you will see several new sections within the ***Account*** tab: ***Chequebook***, ***Stamps***, and ***Feeds***. 76 | 77 | ## Fund Chequebook 78 | 79 | After setting up your wallet you will have access to the ***Chequebook*** section from the ***Accounts*** tab. From here you can manage your chequebook for your Swarm Desktop Bee node. 80 | 81 | 82 | 83 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /docs/desktop/install.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Install 3 | id: install 4 | --- 5 | 6 | ## Download and Install Swarm Desktop 7 | 8 | Installing the Swarm Desktop app takes only a few clicks. To get started, simply download and install the Swarm Desktop app for your operating system. Installers are available for Windows, Linux, and OSX. You can find download links for Swarm Desktop at the Swarm [homepage](https://www.ethswarm.org/build/desktop) and you can find installers for specific operating systems at the [releases page](https://github.com/ethersphere/swarm-desktop/releases) of the Swarm Desktop GitHub repo. 9 | 10 | :::caution 11 | Swarm Desktop is in Beta and currently includes the Sentry application monitoring and bug reporting software which automatically collects data in order to help improve the software. 12 | ::: 13 | 14 | :::caution 15 | This project is in beta state. There might (and most probably will) be changes in the future to its API and working. Also, no guarantees can be made about its stability, efficiency, and security at this stage. 16 | ::: 17 | 18 | 19 | [![](/img/desktop-homepage-dl.png)](https://www.ethswarm.org/build/desktop) 20 | *Ethswarm.org Swarm Desktop Page* 21 | 22 | [![](/img/desktop-releases-dl.png)](https://github.com/ethersphere/swarm-desktop/releases) 23 | *Swarm Desktop GitHub Releases Page* 24 | 25 | After running the installer, a window will pop up and display the installation status: 26 | 27 | 28 | ![](/img/desktop-install-downloading.png) 29 | 30 | Once the installation is complete, Swarm Desktop will open up in your default browser in a new window to the "Info" tab of the app: 31 | 32 | ![](/img/desktop-new-install.png) 33 | 34 | If the installation went smoothly, you should see the message "Your node is connected" above the "Access Content" button along with a status message of "Node OK". 35 | 36 | #### What Just Happened? 37 | 38 | Running the Swarm Desktop app for the first time set up a new Bee node on your system. The installation process generated and saved private keys for your node in the Swarm Desktop's data directory. Those keys were used to start up a new Bee node in ultra-light mode. 39 | 40 | :::warning 41 | If your Swarm Desktop files are accidentally deleted or become corrupted you will lose access to any assets or data which are secured using those keys. Make sure to [backup your keys](/docs/desktop/backup-restore). 42 | ::: 43 | 44 | ### "Ultra-light" and "Light" Nodes 45 | 46 | Swarm Desktop by default starts up a node in "ultra-light" mode. When running in ultra-light mode Swarm Desktop limited to only downloading data from Swarm. Moreover, it's limited to downloading only within the free threshold allowed by other nodes. For instructions on switching to light mode see the [configuration section](/docs/desktop/configuration). 47 | 48 | ## Tour of Swarm Desktop 49 | 50 | ### Info Tab 51 | 52 | The "Info" tab gives you a quick view of your Swarm Desktop's status. From here we can quickly see if the node is connected to Swarm, whether the node is funded, and whether its chequebook contract is set up. On a new install of Swarm Desktop, the node should be connected, but the wallet and chequebook will not have been set up yet. 53 | 54 | ![](/img/swarm-desktop-info-tab.png) 55 | 56 | ### Files Tab 57 | 58 | From "Files" tab you can input a Swarm hash in order to download the file associated with the hash. See this full [guide for downloading](/docs/desktop/access-content) using Swarm Desktop. 59 | 60 | ![](/img/swarm-desktop-files-tab.png) 61 | 62 | ### Account Tab 63 | 64 | From the "Account" tab you can view your Swarm Desktop node's Gnosis Chain address and associated xBZZ and xDAI balances. 65 | 66 | ![](/img/swarm-desktop-account-tab.png) 67 | 68 | ### Settings Tab 69 | 70 | From the "Settings" tab you can view important settings values. Note that the Blockchain RPC URL and ENS resolver URL are already filled in, and only the Blockchain RPC URL is modifiable through this tab. If you wish to modify other settings see the [ configuration page](/docs/desktop/configuration) for detailed instructions. 71 | 72 | ![](/img/swarm-desktop-settings-tab.png) 73 | 74 | ### Status Tab 75 | 76 | From the "Status" tab you can see a quick overview of the health of your Swarm Desktop's Bee node. 77 | 78 | ![](/img/swarm-desktop-status-tab.png) 79 | -------------------------------------------------------------------------------- /docs/desktop/introduction.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Introduction 3 | id: introduction 4 | --- 5 | 6 | ![](/img/swarm-desktop.png) 7 | 8 | While running Bee from the terminal is a powerful and flexible approach for developers and node operators, it may not be the best option for more simple use cases. 9 | 10 | The Swarm Desktop app is an alternative which provides an easy-to-use graphical user interface for running a Bee node and interacting seamlessly with the Swarm network. 11 | 12 | The Swarm Desktop App was designed to simplify the Swarm onboarding process so that anyone can benefit from decentralized storage while maintaining privacy and control over their data. Available for Windows, Mac, and Linux operating systems, the Swarm Desktop App serves as a personal gateway to the Swarm network. 13 | -------------------------------------------------------------------------------- /docs/desktop/postage-stamps.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Postage Stamps 3 | id: postage-stamps 4 | --- 5 | 6 | 7 | :::info 8 | Swarm Desktop must be configured as a light node in order to access stamp related features. If you have not already upgraded from the default ultra-light configuration, complete the upgrade by following the ***[instructions here](/docs/desktop/configuration#upgrading-from-an-ultra-light-to-a-light-node)***. 9 | ::: 10 | 11 | Postage stamps are required in order to upload data to Swarm. Postage stamps are purchased by interacting with the Swarm postage stamp smart contract on Gnosis Chain. Postage stamps are not purchased one by one, rather they are purchased in batches only. 12 | 13 | 14 | ## How to Buy a Postage Stamp Batch 15 | 16 | Stamps can be purchased by selecting ***Stamps*** from the ***Account*** tab: 17 | 18 | ![](/img/stamps1.png) 19 | 20 | And then clicking the ***Buy New Postage Stamp*** button: 21 | 22 | ![](/img/stamps2.png) 23 | 24 | ### Depth and Amount 25 | 26 | Batch [depth and amount](/docs/concepts/incentives/postage-stamps) are the two required parameters which must be set when purchasing a postage stamp batch. Depth determines how many chunks can be stamped with a batch while amount determines how much xBZZ is assigned per chunk. 27 | 28 | ![](/img/stamps3.png) 29 | 30 | Inputting a value for depth allows you to preview the upper limit of data which can be uploaded for that depth. 31 | 32 | 33 | 34 | Inputting a value for amount and depth together will allow you to also preview the total cost of the postage stamp batch as well as the TTL (time to live - how long the batch can store data on Swarm). Click the ***Buy New Stamp*** button to purchase the stamp batch. 35 | 36 | ![](/img/stamps4.png) 37 | 38 | After purchasing stamps you can view stamp details from the ***Postage Stamps*** drop down menu: 39 | 40 | ![](/img/stamps5.png) 41 | 42 | 43 | ## Managing Postage Batches 44 | 45 | After purchasing a postage batch, it is important to monitor the usage and TTL (time to live) of your batch. 46 | 47 | TTL is shown next to the "Expired in" label in the screenshot below. 48 | 49 | ![](/img/stamps6.png) 50 | 51 | For this stamp batch, it has only 6 hours left. Once the TTL has run out completely, the content uploaded using that batch will no longer be kept on Swarm, and will be lost forever. To prevent this from happening, you can "top up" your batch by adding more xBZZ to the batch balance to increase the batch TTL. 52 | 53 | ## Top-up a Batch 54 | 55 | To get started, click on the "Topup and Dilute" button. 56 | 57 | ![](/img/stamps7.png) 58 | 59 | From the "Action" dropdown menu, make sure that you have "Topup" selected and then fill in the `amount` by which you wish to top up the batch. Note that the number entered here is in PLUR (1e-16 xBZZ), and it is the same `amount`` parameter described in the [section above](/docs/desktop/postage-stamps#depth-and-amount) on purchasing postage stamp batches, it is NOT equal to the total amount of xBZZ spent for this top up transaction. 60 | 61 | After inputting the `amount`, click "Topup" to submit the transaction. 62 | 63 | After a few moments, you will see a notice that the transaction was successful in a green alert box. A few moments after that, you will see the updated TTL in the stamp details window. 64 | 65 | ![](/img/stamps8.png) 66 | 67 | ## Dilute a Batch 68 | 69 | If our batch begins to come close to becoming fully utilised, we can choose to increase the `depth` of the batch to increase the amount of data it can store. This is referred to as "dilution", since by increasing the `depth` without updating the `amount`, we dilute the amount of xBZZ which is assigned to each chunk. In other words, the dilute transaction will increase the amount which can be uploaded by a batch while also ***decreasing*** the TTL. Therefore it is important to both top up and also dilute your stamp batch if you wish to increase the amount stored by the batch without decreasing its TTL. 70 | 71 | To get started, click on the "Topup and Dilute" button. Make sure to select "Dilute" from the "Action" dropdown menu. 72 | 73 | ![](/img/stamps9.png) 74 | 75 | From here, we can select the new `depth` value for our postage stamp batch. In this instance, we will increase it from 20 to 21. 76 | 77 | ![](/img/stamps10.png) 78 | 79 | After a few moments the transaction will be completed and you should see the updated Depth, Capacity, and TTL. 80 | 81 | ![](/img/stamps10.png) 82 | 83 | Note that both the Depth and Capacity have increased while the TTL has decreased. -------------------------------------------------------------------------------- /docs/desktop/publish-a-website.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Publish a Website 3 | id: publish-a-website 4 | --- 5 | 6 | ## Step by Step Guide 7 | 8 | 9 | ### Install Swarm Desktop and Deposit Funds 10 | 11 | First, download and [install the Swarm Desktop App](/docs/desktop/install). Next, add xDAI (transaction fees) to your Node Wallet address. If you possess xBZZ (storage fees), you can deposit it alongside the xDAI. Otherwise, you can exchange your xDAI for xBZZ using the Swarm Desktop app. 12 | 13 | Follow these steps to deposit funds: 14 | 15 | 1. Launch the Swarm Desktop App and go to the Account section in the left menu. 16 | 2. Transfer xDAI to your node wallet address. For safety, we suggest sending no more than 5 to 10 xDAI. 17 | 3. After funding your wallet, click the Top Up Wallet button on the right side of the screen. 18 | 4. Select the Use xDAI option. 19 | 5. Verify your xDAI balance and click Proceed. 20 | 6. Specify the amount of xDAI to convert to xBZZ and click Swap Now. 21 | 7. Your Node Wallet address will be credited with xBZZ. 22 | 23 | ![](/img/upload-a-website1.gif) 24 | 25 | ### Setup Chequebook 26 | 27 | Your node address is now funded with xDAI and xBZZ. However, to upload data on Swarm, you will need to transfer your funds to the Chequebook contract address. 28 | 29 | Follow these steps: 30 | 31 | 1. Go to the Account section in the left menu. 32 | 2. Select the Chequebook tab in the top menu. 33 | 3. Click the Deposit button. 34 | 4. Specify the amount of xBZZ to deposit into your Chequebook, which will be used for storage costs. 35 | 36 | 37 | ### Publish Website 38 | 39 | To publish your website on Swarm, follow these steps: 40 | 41 | 1. Navigate to the Files tab. 42 | 2. Click the Add Website button. 43 | 3. Select your website folder. NOTE: The index.html file should be in the root folder. 44 | 4. Purchase a Postage Stamp to publish your page. NOTE: Postage stamps cover storage costs for a specified duration. 45 | 5. Upload the website. 46 | 47 | ![](/img/upload-a-website2.gif) 48 | 49 | [https://api.gateway.ethswarm.org/bzz/6843d3be17364ea0620011430e4db2a26ff781da478493a02d6eb5aae886b8ae/](https://api.gateway.ethswarm.org/bzz/6843d3be17364ea0620011430e4db2a26ff781da478493a02d6eb5aae886b8ae/) 50 | 51 | ### Connecting an ENS Domain to Your Website 52 | 53 | Associating your ENS domain with a Swarm hash generates a memorable, user-friendly identifier for your website, allowing users to easily locate and access your website without having to recall a lengthy, complex Swarm hash. 54 | 55 | Initially, you’ll need to register your domain name. To register and manage your ENS domain, you can use the ENS Domains Dapp along with the MetaMask browser extension. 56 | 57 | After registering your name and connecting MetaMask to the relevant Ethereum account, set the resolver to use the public ENS if you haven’t already. 58 | 59 | 1. Navigate to My Names and select the name you want to link to your Swarm content. 60 | 2. Click on ADD/EDIT RECORD. 61 | 3. From the "add record" dropdown menu, select Content. 62 | 4. Enter your Swarm Hash, beginning with "bzz://" and click "Save." 63 | 64 | ![](/img/upload-a-website3.gif) 65 | 66 | Your website is now available on: 67 | 68 | [https://api.gateway.ethswarm.org/bzz/swarm-devrel.eth/](https://api.gateway.ethswarm.org/bzz/swarm-devrel.eth/) 69 | 70 | ### Update the Website: Set up and update a feed 71 | 72 | Swarm feeds allow you to easily create a permanent address for your content stored on Swarm that you can update at any time. 73 | 74 | If you plan to update your website in the future, it’s recommended that you set up a “Feed” before uploading your website to Swarm. This way, the Swarm Hash connected to your ENS domain will stay the same, even as you change the content behind that hash. This will enable you to update your website’s content without changing the Swarm Hash and incurring Ethereum transaction costs each time you do so. 75 | 76 | #### Set up a Feed: 77 | 78 | 1. Navigate to to Account 79 | 2. Click on Feeds in the top menu 80 | 3. Click on Create New Feed 81 | 4. Define Identity name 82 | 5. And click Create Feed. 83 | 84 | #### Upload Website on Swarm and connect it to the Feed: 85 | 86 | 1. Navigate to to Account 87 | 2. Click on Feeds in the top menu 88 | 3. Choose the Feed you want to update 89 | 4. Click View Feed Page 90 | 5. Click the Add Website button. 91 | 6. Select your website folder. NOTE: The index.html file should be in the root folder. 92 | 7. Add Postage Stamp to publish your page. NOTE: Postage stamps cover storage costs for a specified duration. 93 | 8. Upload the website to your Node. 94 | 9. Connect Feed hash to ENS domain as described above. 95 | 96 | ![](/img/upload-a-website4.gif) 97 | 98 | By following these instructions, you can now leverage the benefits of decentralised storage, maintain a censorship-resistant website, and create a user-friendly experience by connecting your site to an ENS domain. -------------------------------------------------------------------------------- /docs/desktop/upload-content.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Upload Content 3 | id: upload-content 4 | --- 5 | 6 | After [purchasing a batch of postage stamps](/docs/desktop/postage-stamps) you will be able to upload files. First go to the “Files” tab. Here you can choose between three options, depending on what you want to upload: a single file, a folder or a website. After choosing your option you’ll need to add a postage stamp. 7 | 8 | ![](/img/upload1.png) 9 | 10 | Click “Add postage stamp” and choose a postage stamp. 11 | 12 | ![](/img/upload2.png) 13 | 14 | ![](/img/upload3.png) 15 | 16 | Click “Proceed with the selected stamp” and upload your data. 17 | 18 | ![](/img/upload4.png) 19 | 20 | ![](/img/upload5.png) 21 | 22 | ![](/img/upload6.png) 23 | 24 | Once your file is uploaded a Swarm hash and Swarm Gateway link will be displayed (which you can use to share the file with others) along with other pertinent information. 25 | -------------------------------------------------------------------------------- /docs/develop/access-the-swarm/host-your-website.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Host Your Website on Swarm 3 | id: host-your-website 4 | --- 5 | 6 | Bee treats ENS as a first class citizen, wherever you can use a Swarm reference, you can also use an ENS domain where the `content` ENS Resolver record is set to be a `bzz://` reference. 7 | 8 | :::info 9 | You may substitute ENS names for Swarm references in any of the [API methods](/api/) where you would normally use a Swarm reference. 10 | ::: 11 | 12 | ### Enable ENS on Your Node 13 | 14 | In order to resolve ENS names using your API endpoints, you must specify a valid ENS resolver endpoint when starting your Bee node. We recommend that users run their own Geth node, which can be trusted absolutely, however service providers such as [https://cloudflare-eth.com](https://cloudflare-eth.com) or [Infura](https://infura.io) may suffice. Public gateways such as [gateway.ethswarm.org](https://gateway.ethswarm.org) will also usually provide ENS resolution. 15 | 16 | ```bash 17 | bee start --resolver-options "https://cloudflare-eth.com" 18 | ``` 19 | 20 | If specifying using your `bee.yaml` configuration file, the syntax is as follows: 21 | 22 | ```bash 23 | resolver-options: [ "https://cloudflare-eth.com" ] 24 | ``` 25 | 26 | Once you have restarted your node, you should be able to see the Swarm homepage at: 27 | 28 | [http://localhost:1633/bzz/swarm.eth/](http://localhost:1633/bzz/swarm.eth/) 29 | 30 | :::info 31 | Use the `resolver-options` flag to point the Bee resolver to any ENS compatible smart-contract on any EVM compatible chain 32 | ::: 33 | 34 | :::warning 35 | Make sure you trust the gateway you are interacting with! To ensure that you are retrieving the correct content, run your own ENS resolver and Bee node. 36 | ::: 37 | 38 | ### Link an ENS domain to a website. 39 | 40 | First we will need to upload the website assets to Swarm in order to 41 | get its Swarm reference hash, see 42 | [uploading a directory](/docs/develop/access-the-swarm/upload-and-download) 43 | for more information. 44 | 45 | This time we will also include the `Swarm-Index-Document` header set to the `index.html`. This will cause Bee to serve each directories `index.html` file as default when browsing to the directory root `/` url. We will also provide a custom error page, using the `Swarm-Error-Document` header. 46 | 47 | In the case that your website is a single page app, where you would like to direct to the JavaScript history API powered router, you may provide the `index.html` page for both settings. 48 | 49 | ```bash 50 | curl -X POST -H "Content-Type: application/x-tar" -H "swarm-postage-batch-id: 81c4520b47a434738d14fd38053a32c20aaf1a36d7f35f0d86ef25c70403d7a8" -H "Swarm-Index-Document: index.html" -H "Swarm-Error-Document: index.html" --data-binary @website.tar http://localhost:1633/bzz 51 | ``` 52 | 53 | ```json 54 | { 55 | "reference": "b25c89a401d9f26811680476619a1eb4a4e189e614bc6161cbfd8b343214917b" 56 | } 57 | ``` 58 | 59 | Next, we add a `Content` record to your ENS domain's resolver contract. 60 | 61 | We recommend the excellent [ENS Domains Dapp](https://app.ens.domains/) used 62 | with the [MetaMask](https://metamask.io/) browser extension for registering and 63 | administrating your ENS domain. 64 | 65 | Once you have registered your name, and have connected MetaMask with the 66 | relevant Ethereum account, you must first set the resolver to use the public ENS 67 | if you have not already done so. 68 | 69 | First, navigate to 'My Names', and select the name you would like to link your Swarm content to. 70 | 71 | Press 'Set' next to your resolver record. 72 | 73 | ![alt text](/img/ens-1.png "Press set resolver.") 74 | 75 | Select 'Use Public Resolver'. 76 | 77 | ![alt text](/img/ens-2.png "Use Public Resolver.") 78 | 79 | Select '+' to add a record. 80 | 81 | ![alt text](/img/ens-3.png "Press add a record.") 82 | 83 | Choose the 'Content' record type from the drop down menu. 84 | 85 | ![alt text](/img/ens-4.png "Choose the content record type from the drop down menu.") 86 | 87 | Add the Swarm reference you created earlier and press 'Save'. 88 | 89 | ![alt text](/img/ens-5.png "Add the Swarm reference you created earlier and press 'Save'.") 90 | 91 | Verify the Content Record has been created! 92 | 93 | ![alt text](/img/ens-6.png "Verify the Content Record has been created.") 94 | 95 | Done! 👏 96 | 97 | Now you will be able to see your website hosted using the ENS name instead of the Swarm Reference! 98 | 99 | ![alt text](/img/ens-7.png "View your website using the ENS name.") 100 | -------------------------------------------------------------------------------- /docs/develop/access-the-swarm/introduction.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Introduction 3 | id: introduction 4 | --- 5 | 6 | As well as earning xBZZ and supporting the network, Bee is our 7 | entrypoint to Swarm's unstoppable data storage and distribution 8 | system. Swarm is a distributed system designed to work together with 9 | smart contracts, powering the infrastructure that enables the development of full 10 | service applications running entirely on the decentralised web. 11 | 12 | Here's just a few of the amazing things you can do with Bee! 13 | 14 | ### Decentralise Your Files 15 | 16 | Bee provides several convenient ways to [upload your data into the Swarm](/docs/develop/access-the-swarm/upload-and-download). Once your data has been uploaded, it will be distributed, stored and retrievable by a worldwide network of p2p nodes, and made available from Swarm's [web gateway](https://gateway.ethswarm.org). 17 | 18 | ### Upload Whole Directories 19 | 20 | Find out how to [upload whole directories](/docs/develop/access-the-swarm/upload-and-download) at once using Bee's HTTP API. 21 | 22 | ### Host Your Website on the Decentralised Web 23 | 24 | Swarm is a distributed international network of nodes that provides hosting for your unstoppable websites. See this guide to [hosting your website on swarm](/docs/develop/access-the-swarm/host-your-website). 25 | 26 | ### Sync With the Network 27 | 28 | Watch as your uploaded data is [synced with the network](/docs/develop/access-the-swarm/syncing) of thousands of nodes worldwide! 29 | 30 | ### Keep Your Data Alive 31 | 32 | Learn how to assign xBZZ to your data using postage stamps so that it remains [live on the Swarm network](/docs/develop/access-the-swarm/buy-a-stamp-batch). 33 | 34 | ### Pinning 35 | 36 | Learn how to [pin your data](/docs/develop/access-the-swarm/pinning) so that it always remains available locally on your Bee node. 37 | 38 | ### Node Types 39 | 40 | Bee nodes can be operated in [three different modes](/docs/bee/working-with-bee/node-types): full, light, and ultra-light. Each mode of operation offers access to different Swarm features. 41 | -------------------------------------------------------------------------------- /docs/develop/access-the-swarm/pinning.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Pinning 3 | id: pinning 4 | --- 5 | 6 | Each Bee node is configured to reserve a certain amount of memory on your computer's hard drive to store and serve chunks within their _neighborhood of responsibility_ for other nodes in the Swarm network. Once this alloted space has been filled, each Bee node deletes older chunks to make way for newer ones as they are uploaded by the network. 7 | 8 | Each time a chunk is accessed, it is moved back to the end of the deletion queue, so that regularly accessed content stays alive in the network and is not deleted by a node's garbage collection routine. 9 | 10 | Bee nodes provide a facility to **pin** important content so that it is not deleted by the node's garbage collection routine. Chunks can be _pinned_ either during upload, or retrospectively using the Swarm reference. 11 | 12 | 13 | ## Pin During Upload 14 | 15 | To store content so that it will persist even when Bee's garbage collection routine is deleting old chunks, we simply pass the `Swarm-Pin` header set to `true` when uploading. 16 | 17 | ```bash 18 | curl -H "Swarm-Pin: true" -H "Swarm-Postage-Batch-Id: 78a26be9b42317fe6f0cbea3e47cbd0cf34f533db4e9c91cf92be40eb2968264" --data-binary @bee.mp4 localhost:1633/bzz\?bee.mp4 19 | ``` 20 | 21 | ```json 22 | { 23 | "reference": "1bfe7c3ce4100ae7f02b62e38d3e8d4c3a86ea368349614a87827402f20cbb30" 24 | } 25 | ``` 26 | 27 | ## Administer Pinned Content 28 | 29 | To check what content is currently pinned on your node, query the `pins` endpoint of your Bee API: 30 | 31 | ```bash 32 | curl localhost:1633/pins 33 | ``` 34 | 35 | ```json 36 | { 37 | "references": [ 38 | "1bfe7c3ce4100ae7f02b62e38d3e8d4c3a86ea368349614a87827402f20cbb30" 39 | ] 40 | } 41 | ``` 42 | 43 | or, to check for specific references: 44 | 45 | ```bash 46 | curl localhost:1633/pins/1bfe7c3ce4100ae7f02b62e38d3e8d4c3a86ea368349614a87827402f20cbb30 47 | ``` 48 | 49 | A `404` response indicates the content is not available. 50 | 51 | ### Unpinning Content 52 | 53 | We can unpin content by sending a `DELETE` request to the pinning endpoint using the same reference: 54 | 55 | ````bash 56 | curl -XDELETE http://localhost:1633/pins/1bfe7c3ce4100ae7f02b62e38d3e8d4c3a86ea368349614a87827402f20cbb30 57 | `` 58 | 59 | ```json 60 | {"message":"OK","code":200} 61 | ```` 62 | 63 | Now, when check again, we will get a `404` error as the content is no longer pinned. 64 | 65 | ```bash 66 | curl localhost:1633/pins/1bfe7c3ce4100ae7f02b62e38d3e8d4c3a86ea368349614a87827402f20cbb30 67 | ``` 68 | 69 | ```json 70 | { "message": "Not Found", "code": 404 } 71 | ``` 72 | 73 | :::info 74 | Pinning and unpinning is possible for files (as in the example) and also the chunks, directories, and bytes endpoints. See the [API](/api/) documentation for more details. 75 | ::: 76 | 77 | ### Pinning Already Uploaded Content 78 | 79 | The previous example showed how we can pin content upon upload. It is also possible to pin content that is already uploaded and present in the Swarm. 80 | 81 | To do so, we can send a `POST` request including the swarm reference to the files pinning endpoint. 82 | 83 | ```bash 84 | curl -X POST http://localhost:1633/pins/7b344ea68c699b0eca8bb4cfb3a77eb24f5e4e8ab50d38165e0fb48368350e8f 85 | ``` 86 | 87 | ```json 88 | { "message": "OK", "code": 200 } 89 | ``` 90 | 91 | The `pins` operation will attempt to fetch the content from the network if it is not available on the local node. 92 | 93 | Now, if we query our files pinning endpoint again, the swarm reference will be returned. 94 | 95 | ```bash 96 | curl http://localhost:1633/pins/7b344ea68c699b0eca8bb4cfb3a77eb24f5e4e8ab50d38165e0fb48368350e8f 97 | ``` 98 | 99 | ```json 100 | { 101 | "reference": "7b344ea68c699b0eca8bb4cfb3a77eb24f5e4e8ab50d38165e0fb48368350e8f" 102 | } 103 | ``` 104 | 105 | :::warning 106 | While the pin operation will attempt to fetch content from the network if it is not available locally, we advise you to ensure that the content is available locally before calling the pin operation. If the content, for whatever reason, is only fetched partially from the network, the pin operation only partly succeeds and leaves the internal administration of pinning in an inconsistent state. 107 | ::: 108 | -------------------------------------------------------------------------------- /docs/develop/access-the-swarm/store-with-encryption.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Store with Encryption 3 | id: store-with-encryption 4 | --- 5 | 6 | In Swarm, all data is _public_ by default. To protect sensitive content, it must be encrypted so that only authorised users are able to decrypt and then view the plaintext content. 7 | 8 | The Bee client provides a facility to encrypt files and directories while uploading which are only able to be read by users with access to the corresponding decryption key. 9 | 10 | # Encrypt and Upload a File 11 | 12 | To encrypt a file simply include the `Swarm-Encrypt: true` header with your HTTP request. 13 | 14 | ```bash 15 | curl -F file=@bee.jpg -H "Swarm-Postage-Batch-Id: 78a26be9b42317fe6f0cbea3e47cbd0cf34f533db4e9c91cf92be40eb2968264" -H "Swarm-Encrypt: true" http://localhost:1633/bzz 16 | ``` 17 | 18 | When successful, the Bee client will return a 64 byte reference, instead of the usual 32 bytes. 19 | 20 | More information on how to buy a postage stamp batch and get its batch id can be found [here](/docs/develop/access-the-swarm/buy-a-stamp-batch). 21 | 22 | ```json 23 | { 24 | "reference": "f7b1a45b70ee91d3dbfd98a2a692387f24db7279a9c96c447409e9205cf265baef29bf6aa294264762e33f6a18318562c86383dd8bfea2cec14fae08a8039bf3" 25 | } 26 | ``` 27 | 28 | Here we see that, when using the Bee node's encryption function, the reference hash that is returned is 128 hex characters long. The first 64 characters of this is the familiar Swarm address - the reference that allows us to retrieve the data from the swarm. This is the same reference we would get uploading unencrypted files using Bee, so it is safe to share. 29 | 30 | The second part of the reference is a 64 character decryption key which is required to decrypt the referenced content and view the original data in the clear. This is sensitive key material and must be kept private. 31 | 32 | It is important that this data not be sent in requests to a public gateway as this would mean that gateway would be able to decrypt your data. However, if you are running a node on your local machine, you may safely use the API bound to `localhost`. The key material is never exposed to the network so your data remains safe. 33 | 34 | :::info 35 | Encryption is disabled by default on all Swarm Gateways to keep your data safe. [Install Bee on your computer](/docs/bee/installation/getting-started) to use the encryption feature. 36 | ::: 37 | 38 | # Download and Decrypt a File 39 | 40 | To retrieve your file, simply supply the full 64 byte string to the files endpoint, and the Bee client will download and decrypt all the relevant chunks and restore them to their original format. 41 | 42 | ```bash 43 | curl -OJ http://localhost:1633/bzz/f7b1a45b70ee91d3dbfd98a2a692387f24db7279a9c96c447409e9205cf265baef29bf6aa294264762e33f6a18318562c86383dd8bfea2cec14fae08a8039bf3 44 | ``` 45 | 46 | :::danger 47 | Never use public gateways when requesting full encrypted references. The hash contains sensitive key information which should be kept private. Run [your own node](/docs/bee/installation/getting-started) to use Bee's encryption features. 48 | ::: 49 | -------------------------------------------------------------------------------- /docs/develop/access-the-swarm/syncing.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Track Upload Status 3 | id: syncing 4 | --- 5 | 6 | When you are uploading data to Swarm, it can take some time until this is completed. In order to help you validate whether the upload is completed or to estimate how long it will take, you can use the `tags` feature. 7 | 8 | 9 | ### Generate the tag 10 | 11 | While the automatically-generated tag is convenient, with big uploads it might take a while until the Bee API returns the headers. What you want to do in this case is to pre-generate the tag and pass this tag along with the upload command. 12 | 13 | Generate a tag: 14 | 15 | ```bash 16 | curl -X POST http://localhost:1633/tags 17 | ``` 18 | 19 | The `uid` value is your tag: 20 | 21 | ```json 22 | { 23 | "split": 0, 24 | "seen": 0, 25 | "stored": 0, 26 | "sent": 0, 27 | "synced": 0, 28 | "uid": 5, 29 | "address": "", 30 | "startedAt": "2023-08-31T06:46:41.574003454Z" 31 | } 32 | ``` 33 | 34 | :::info 35 | Before you progress to the next step, you must buy stamps so you can pay for uploads! See this guide on how to [purchase an appropriate batch of stamps](/docs/develop/access-the-swarm/buy-a-stamp-batch). 36 | ::: 37 | 38 | Pass the tag along with the upload: 39 | 40 | ```bash 41 | curl --data-binary @bee.jpg \ 42 | -H "Swarm-Postage-Batch-Id: 78a26be9b42317fe6f0cbea3e47cbd0cf34f533db4e9c91cf92be40eb2968264" \ 43 | -H "Swarm-Tag: 5" \ 44 | "http://localhost:1633/bzz?name=bee.jpg" 45 | ``` 46 | 47 | ### Ask for the Current Status 48 | 49 | To get the current status of an upload, send a GET request to the `tag/` API endpoint. 50 | 51 | ```bash 52 | curl http://localhost:1633/tags/5 | jq 53 | ``` 54 | 55 | The response contains all the information that you need to follow the status of your file as it is synced with the network. 56 | 57 | :::info 58 | The numbers that the `tags` endpoint returns under `total`, `processed` and `synced` are denominated in [*chunks*](/docs/concepts/DISC/#chunks), i.e. Swarm's 4kb data units. 59 | ::: 60 | -------------------------------------------------------------------------------- /docs/develop/access-the-swarm/ultra-light-nodes.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Ultra Light Nodes 3 | id: ultra-light-nodes 4 | --- 5 | 6 | :::danger 7 | When running without a blockchain connections, bandwidth incentive payments (SWAP) cannot be made so there is a risk of getting blocklisted by other peers for unpaid services. 8 | ::: 9 | 10 | #### Configuration 11 | 12 | To run Bee as an ultra-light node `full-node` and `swap-enable` must both be set to `false`, and the `blockchain-rpc-endpoint` value should be set to an empty string `""` or commented out in the [configuration](/docs/bee/working-with-bee/configuration). 13 | 14 | #### Mode of Operation 15 | 16 | The target audience for this mode of operations are users who want to try out running a node but don't 17 | want to go through the hassle of blockchain onboarding. Ultra-light nodes will be able to download data as long as the data consumed does not exceed the payment threshold (`payment-threshold` in [configuration](/docs/bee/working-with-bee/configuration)) set by peers they connect to. 18 | 19 | Running Bee without a connected blockchain backend, however, imposes some limitations: 20 | 21 | - Can't do overlay verification 22 | - Can't do SWAP settlements 23 | 24 | Since we can't buy postage stamps: 25 | 26 | - Can't send PSS messages 27 | - Can't upload data to the network 28 | 29 | -------------------------------------------------------------------------------- /docs/develop/contribute/introduction.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Introduction 3 | id: introduction 4 | --- 5 | 6 | # Contribute to Bee Development 7 | 8 | Welcome to the Dev area! We love PR's! 🐝 9 | 10 | We would would love you to get involved with our [Github repo](https://github.com/ethersphere/bee). 11 | 12 | Connect with other Bee developers over at the official [Discord Server](https://discord.gg/wdghaQsGq5). Sign up and get involved with our buzzing hive of daily dev chat. 13 | 14 | - If you would like to contribute, please read the [coding guidelines](https://github.com/ethersphere/bee/blob/master/CODING.md) before you get started. 15 | 16 | - Installation from source is described in the [Installation](/docs/bee/installation/build-from-source). 17 | 18 | - Contribute to Swarm’s evolution by proposing your own Swarm Improvement Proposal (SWIP) [here](https://github.com/ethersphere/SWIPs). 19 | 20 | ## Testing a connection with PingPong protocol 21 | 22 | To check if two nodes are connected and to see the round trip time for message exchange between them, get the overlay address from one node, for example local node 2: 23 | 24 | ```bash 25 | curl localhost:1833/addresses 26 | ``` 27 | 28 | Make sure addresses are configured as in examples above. 29 | 30 | And use that address in the API call on another node, for example, local node 1: 31 | 32 | ```bash 33 | curl -X POST localhost:1735/pingpong/d4440baf2d79e481c3c6fd93a2014d2e6fe0386418829439f26d13a8253d04f1 34 | ``` 35 | 36 | ## Generating protobuf 37 | 38 | To process protocol buffer files and generate the Go code from it two tools are needed: 39 | 40 | - [protoc](https://github.com/protocolbuffers/protobuf/releases) 41 | - [protoc-gen-gogofaster](https://github.com/gogo/protobuf) 42 | 43 | Makefile rule `protobuf` can be used to automate `protoc-gen-gogofaster` installation and code generation: 44 | 45 | ```bash 46 | make protobuf 47 | ``` 48 | -------------------------------------------------------------------------------- /docs/develop/introduction.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Introduction 3 | id: introduction 4 | --- 5 | # Develop on Swarm 6 | 7 | ## Learn How to [Access the Swarm](/docs/develop/access-the-swarm/introduction) 8 | 9 | Learn more about how to [upload and download](/docs/develop/access-the-swarm/upload-and-download) data from Swarm, [host a website](/docs/develop/access-the-swarm/host-your-website), secure your data's privacy with [encryption](/docs/develop/access-the-swarm/store-with-encryption), guarantee your data's persistence with [erasure coding](/docs/develop/access-the-swarm/erasure-coding), manage [postage stamp batches](/docs/develop/access-the-swarm/buy-a-stamp-batch) and more. 10 | 11 | ## Explore [Tools and Features](/docs/develop/tools-and-features/introduction) 12 | 13 | Explore the tools and features available to help in your Swarm development journey. Learn more about [chunk types](/docs/develop/tools-and-features/chunk-types), the [bee-js Javascript library](/docs/develop/tools-and-features/bee-js) for Bee, prototyping with [bee dev mode](/docs/develop/tools-and-features/bee-dev-mode) and [test networks](/docs/develop/tools-and-features/starting-a-test-network), use [the Gateway Proxy tool](/docs/develop/tools-and-features/gateway-proxy) to make your decentralised applications available to anyone with an internet connection, and more. 14 | 15 | ## Review the [API Reference Docs](/api/) 16 | 17 | Find detailed information on all the endpoints available in the [API reference documentation](/api/). 18 | 19 | ## [Contribute](/docs/develop/contribute/introduction) to the Development of the Bee Client 20 | 21 | Join our efforts! Are you up to the challenge of helping to create Bee and the other incredible technologies that are being built on top of it? You are invited to contribute code to the Bee client or any of the other projects in Swarm's [Ethersphere](https://github.com/ethersphere). 22 | 23 | Help shape the future of Swarm by contributing to our development efforts or by proposing a Swarm Improvement Proposal (SWIP). Whether you're inside or outside the organization, your ideas can drive the platform forward. Learn how to submit a SWIP [here](https://github.com/ethersphere/SWIPs). 24 | 25 | 26 | ## Community 27 | 28 | There is a vibrant and buzzing community behind Swarm - get involved 29 | in one of our group channels: 30 | 31 | - [Swarm](http://ethswarm.org) 32 | - [Discord](https://discord.gg/wdghaQsGq5) 33 | - [Twitter @ethswarm](https://twitter.com/ethswarm) 34 | - [reddit channel](https://www.reddit.com/r/ethswarm/) 35 | - [Blog](https://blog.ethswarm.org) 36 | 37 | -------------------------------------------------------------------------------- /docs/develop/tools-and-features/access-control.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Access Control 3 | id: act 4 | --- 5 | 6 | :::info 7 | This is guide contains a detailed explanation of how to use the ACT feature, but does not cover its higher level concepts. To better understand how ACT works and why to use it, read [the ACT page in the "Concepts" section](/docs/concepts/access-control). 8 | ::: 9 | 10 | 11 | In this section we'll provide information on how to use the **swarm-cli** to upload, download data with ACT or update the grantee list. 12 | 13 | ### Upload 14 | 15 | Uploading data without ACT to the network remains unchanged. 16 | 17 | To upload with ACT use the **act** and **act-history-address** flags following the **upload** command: 18 | ```bash 19 | swarm-cli upload test.txt --act --stamp $stamp_id --act-history-address $swarm_history_address 20 | ``` 21 | 22 | Here **act** indicates that the file provided shall be uploaded using ACT. 23 | The **act-history-address** flag is the reference of the historical version of the ACT. It can be omitted, in which case the data is uploaded to a new history. If provided, then the data will be uploaded to that history as the latest version. In both cases the timestamp of the upload is taken as the key of the history entry. 24 | If the provided **act-history-address** is invalid then the request will fail with a not found error. 25 | 26 | The response returns the newly created reference encrypted with ACT and the header contains history reference. 27 | 28 | ### Download 29 | 30 | Downloading data which was uploaded without ACT from the network remains unchanged. 31 | 32 | To download with ACT use the **act**, **act-publisher**, **act-timestamp** and **act-history-address** flags following the **download** command: 33 | ```bash 34 | swarm-cli download $swarm_hash test.txt --act --act-history-address $swarm_history_address --act-publisher $public_key --timestamp $timestamp 35 | ``` 36 | Here **act** indicates that the **swarm_hash** shall be decrypted using the content publisher's public key as **act-publisher** and the lookup table mentioned above. The **act-history-address** flag is the reference of the historical version of the ACT based on the timestamp provided, however the **act-timestamp** flag can be omitted in which case the current timestamp is used. 37 | 38 | If the **act-history-address** or **act-publisher** flags are omitted then the request is treated as a "usual" download. 39 | If the data was uploaded with ACT and we try to download it without the ACT flags then the request will fail with a not found error. 40 | 41 | ### Grantee management 42 | 43 | Updating a grantee list literally means patching a json file containing the list of grantee swarm public keys. 44 | 45 | #### Create 46 | 47 | A brand new grantee list can be created using the following command: 48 | ```bash 49 | swarm-cli grantee create grantees.json --stamp $stamp_id 50 | ``` 51 | where **grantees.json** shall contain the key **grantees** with the list of public keys: 52 | ```json 53 | { 54 | "grantees": [ 55 | "03ec55e9fb2aefb8600f69142abaad79311516c232b28919d66efb4d41bce15bfa", 56 | "03fdcab22b455ce08a481d929a4cb9f447752545818eded1ad1785c51581e822c6" 57 | ] 58 | } 59 | ``` 60 | The response returns the newly created and encrypted grantee list and the history reference. Only the publisher can decrypt and therefore access the list. 61 | If **act-history-address** is provided then the grantee list is uploaded as the newest version under that history. 62 | 63 | #### Patch 64 | 65 | ```bash 66 | swarm-cli grantee patch grantees-patch.json --reference $grantee_reference --history $grantee_history_reference --stamp $stamp_id 67 | ``` 68 | where **grantees.json** shall contain the keys **add** and **revoke** with the list of public keys for granting and revoking access, respectively: 69 | ```json 70 | { 71 | "add": ["03fdcab22b455ce08a481d929a4cb9f447752545818eded1ad1785c51581e822c6"], 72 | "revoke": [ 73 | "03ec55e9fb2aefb8600f69142abaad79311516c232b28919d66efb4d41bce15bfa" 74 | ] 75 | } 76 | ``` 77 | The **reference** flag indicates the already existing encrypted grantee list reference that needs to be updated. 78 | The **grantee_history_reference** indicates the reference of historical version of the list, where the encrypted list reference is added as a metadata to the history entry with the key **"encryptedglref"** 79 | 80 | **Limitation**: If an update is called again within a second from the latest upload/update of a grantee list, then mantaray save fails with an invalid input error, because the key (timestamp) already exists, hence a new fork is not created. 81 | 82 | #### Get 83 | 84 | As stated above, only the publisher can decrypt and therefore access the list with the following command: 85 | ```bash 86 | swarm-cli grantee get $grantee_reference 87 | ``` 88 | which simply returns the latest version of the list. 89 | 90 | Non-authorized access causes the request to fail with a not found error. 91 | For each of the above operations, if the provided **act-history-address** or **reference** is invalid then the request will fail with a not found error. -------------------------------------------------------------------------------- /docs/develop/tools-and-features/bee-js.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Bee JS 3 | id: bee-js 4 | --- 5 | 6 | Bee-js is Bee's complementary JavaScript library. It is the technology underpinning the [swarm-cli](/docs/bee/working-with-bee/swarm-cli) and [bee-dashboard](/docs/bee/working-with-bee/bee-dashboard) tools and is a powerful tool for building completely decentralised apps. 7 | 8 | See the [bee-js](https://bee-js.ethswarm.org/) documentation for detailed information on using and installing the library. 9 | 10 | 25 | -------------------------------------------------------------------------------- /docs/develop/tools-and-features/chunk-types.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Chunk Types 3 | id: chunk-types 4 | --- 5 | 6 | Swarm is home to many types of chunks, but these can be categoried 7 | into 4 broad categories. Read [The Book of Swarm](https://www.ethswarm.org/the-book-of-swarm-2.pdf) for 8 | more information on how swarm comes together. 9 | 10 | ## Content Addressed Chunks 11 | 12 | Content addressed chunks are chunks whose addresses are determined by the BMT hashing algorithm. This means you can be sure that all content addressed chunks content is already verified - no more need to check md5 hashes of your downloaded data! 13 | 14 | :::warning 15 | To be able trust your data, you must run your own Bee node that automatically verifies data, using gateways puts your trust in the gateway operators. 16 | ::: 17 | 18 | ## Trojan Chunks 19 | 20 | Trojan chunks are a special version of content addressed chunks that have been 'mined' so that their natural home is in a particular area of the Swarm. If the destination node is in the right neighborhood, it will be able to receive and decrypt the message. See [PSS](/docs/develop/tools-and-features/pss) for more information, or check out the [bee-js](https://bee-js.ethswarm.org/docs/api/classes/Bee/#psssend) bindings. 21 | 22 | ## Single Owner Chunks 23 | 24 | Single Owner Chunks are distinct from Trojan and Content Addressed 25 | Chunks and are the only other type of chunk which is allowed in 26 | Swarm. These chunks represent part of Swarm's address space which is 27 | reserved just for your personal Ethereum key pair! Here you can write 28 | whatever you'd please. Single Owner Chunks are the technology that 29 | powers Swarm's [feeds](/docs/develop/tools-and-features/feeds), but they are 30 | capable of much more! Look out for more chats about this soon, and for 31 | more info read [The Book of Swarm](https://www.ethswarm.org/the-book-of-swarm-2.pdf). 32 | 33 | ## Custom Chunk Types 34 | 35 | Although all chunks must satisfy the constraints of either being addressed by the BMT hash of their payload, or assigned by the owner of an Ethereum private key pair, so much more is possible. How else can you use the DISC to distribute and store your data? We're excited to see what you come up with! 💡 36 | 37 | Share your creations in the [#develop-on-swarm](https://discord.gg/C6dgqpxZkU) channel of our [Discord Server](https://discord.gg/wdghaQsGq5). 38 | -------------------------------------------------------------------------------- /docs/develop/tools-and-features/dev-mode.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Developer mode 3 | id: bee-dev-mode 4 | --- 5 | 6 | You can start the bee in `dev` mode by running the command: 7 | 8 | ```bash 9 | bee dev 10 | ``` 11 | 12 | It will start an instance with volatile persistence all back-ends mocked. 13 | 14 | As a developer you interact with all the usual HTTP endpoints, for instance you can buy postage stamps and use them to upload files, which will be saved to memory. 15 | 16 | ## Configuration options 17 | 18 | It accepts the same configuration options as a normal bee but it will ignore the ones that are not relevant (accounting, networking, blockchain etc). 19 | -------------------------------------------------------------------------------- /docs/develop/tools-and-features/feeds.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Feeds 3 | id: feeds 4 | --- 5 | 6 | Swarm feeds cleverly combine 7 | [single owner chunks](/docs/develop/tools-and-features/chunk-types) 8 | into a data structure which enables you to have static addresses for 9 | your mutable content. This means that you can signpost your data for 10 | other Bees, and then update it at will. 11 | 12 | :::info 13 | Although it's possible to interact with feeds directly, it can involve 14 | a little data juggling and crypto magic. For the easiest route, see 15 | [the bee-js feeds functionality](/docs/develop/tools-and-features/bee-js) and 16 | [swarm-cli](/docs/bee/working-with-bee/swarm-cli), or for the super 1337, 17 | share your implementations in other languages in the 18 | [#develop-on-swarm](https://discord.gg/C6dgqpxZkU) channel of our 19 | [Discord Server](https://discord.gg/wdghaQsGq5). 20 | ::: 21 | 22 | ### What are Feeds? 23 | 24 | A feed is a collection of Single Owner Chunks with predicatable addresses. This enables creators to upload pointers to data so that consumers of the feed are able to find the data in Swarm using only an _Ethereum address_ and _Topic ID_. 25 | 26 | ### Creating and Updating a Feed 27 | 28 | In order to edit a feed, you will need to sign your chunks using an 29 | Ethereum keypair. For the intrepid, check out the [The Book of Swarm](https://www.ethswarm.org/the-book-of-swarm-2.pdf) on precise details on how to do 30 | this. For the rest of us, both [bee-js](/docs/develop/tools-and-features/bee-js) 31 | and [swarm-cli](/docs/bee/working-with-bee/swarm-cli) provide facilities 32 | to achieve this using JavaScript and a node-js powered command line 33 | tool respectively. 34 | 35 | ### No More ENS Transaction Charges 36 | 37 | Swarm's feeds provide the ability to update your immutable content in a mutable world. Simply reference your feed's `manifest address` as the `content hash` in your ENS domain's resolver, and Bee will automatically provide the latest version of your website. 38 | 39 | ### Use Cases for Feeds 40 | 41 | Feeds are a hugely versatile data structure. 42 | 43 | #### Key Value Store 44 | 45 | Use [bee-js](/docs/develop/tools-and-features/bee-js) to use feeds to store values as a simple key value store in your JavaScript application. No more need for servers and databases! 46 | 47 | #### Store the History of a File 48 | 49 | Use [swarm-cli](/docs/bee/working-with-bee/swarm-cli) to store a file at the same location, and update whenever you like without changing the address. 50 | -------------------------------------------------------------------------------- /docs/develop/tools-and-features/gateway-proxy.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Gateway Proxy 3 | id: gateway-proxy 4 | --- 5 | 6 | The [Gateway Proxy tool](https://github.com/ethersphere/gateway-proxy) is more than just a proxy, it offers a range of useful functionalities for node operators and Swarm developers. For more in depth documentation of its features, refer to its [README doc](https://github.com/ethersphere/gateway-proxy/blob/master/README.md) on GitHub. 7 | 8 | ### Public Gateway 9 | 10 | The tool can be used to set up a public gateway which can be used to host public facing applications or websites to users on the web who aren't running Bee nodes. 11 | 12 | ### Stamp Management 13 | 14 | In addition to acting as a proxy, it also includes convenient features for managing stamps such as automatically buying new stamps or automatically extending the life of existing stamps. 15 | 16 | ### Security 17 | 18 | Authentication can also be enabled so that only authorized requests are fulfilled. This is a useful feature for protecting your node if its API endpoint is publicly exposed. 19 | 20 | -------------------------------------------------------------------------------- /docs/develop/tools-and-features/introduction.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Introduction 3 | id: introduction 4 | --- 5 | 6 | # Hosting Your Dapps & Storing Their Data 7 | 8 | Swarm is hugely versatile, but at a very basic level you can think of 9 | it as storage for your dapps data that is too big for blockchain, but 10 | still needs to live in our totally decentralised universe. Swarm is 11 | perfect for storing your NFT meta-data and images in a web3 way that 12 | won't break the bank and can live forever! 13 | 14 | ## Tools and Features 15 | 16 | Swarm is designed with decentralised applications in mind, and much time has been devoted to designing tools and features to support their prototyping and development. 17 | 18 | ### Bee JS 19 | 20 | Our maverick JavaScript team, the Bee-Gees (🕺), have been working hard in the last few months to build some impressive tools for all you budding dapp developer Bees to get stuck into! Find out how to use the [bee-js](/docs/develop/tools-and-features/bee-js) JavaScript library to start creating your own that live and work on Swarm! 21 | 22 | ### Chunk Types 23 | 24 | Swarm contains 3 types of chunks which enable us to build novel 25 | structures of how data can be stored in the swarm - in a completely 26 | decentralised way. Learn more about 27 | [chunk types](/docs/develop/tools-and-features/chunk-types) 28 | to change the way you deal with data in your dapps forever! 29 | 30 | ### Feeds 31 | 32 | Swarm's single owner chunks have been cleverly combined to create user 33 | generated [feeds](/docs/develop/tools-and-features/feeds) in the swarm, see this 34 | example of how chunks are combined into a useful data structure you 35 | can use to build amazing applications. 36 | 37 | ### PSS 38 | 39 | Hey there! Pss! 🤫 Swarm's trojan chunks are implemented in Bee to 40 | deliver [Postal Service on Swarm](/docs/develop/tools-and-features/pss) - a 41 | pub-sub system that provides a totally leak-proof messaging system 42 | over the swarm. 43 | 44 | 45 | ### Gateway Proxy 46 | 47 | If you want your users to be able to access Swarm without running 48 | their own Bee node, for the time being you will need to make use of the [Gateway Proxy tool](https://github.com/ethersphere/gateway-proxy). Join us in the 49 | [#develop-on-swarm](https://discord.gg/C6dgqpxZkU) room in our 50 | [Discord Server](https://discord.gg/wdghaQsGq5) for more information on how to make your Swarm based applications accessible to everyone. 51 | 52 | 53 | 54 | ### Bee Dev Mode 55 | 56 | If you want to test out Swarm based applications without needing to spend real xBZZ, Bee dev mode is an invaluable tool. Learn how to set up Bee in [dev mode](/docs/develop/tools-and-features/bee-dev-mode) to begin prototyping your applications. 57 | 58 | 59 | ### Starting a Test Network 60 | 61 | While bee dev mode allows you to simulate running a single Bee node, setting up a [test network](/docs/develop/tools-and-features/starting-a-test-network) will allow you to better simulate interactions between multiple nodes. 62 | 63 | -------------------------------------------------------------------------------- /docs/references/awesome-list.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Awesome Swarm 3 | id: awesome-list 4 | --- 5 | 6 | import AwesomeList from '@site/src/components/AwesomeList'; 7 | 8 | *Contribute to the Awesome Swarm list on [GitHub](https://github.com/ethersphere/awesome-swarm).* 9 | 10 | 11 | -------------------------------------------------------------------------------- /docs/references/community.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Community 3 | id: community 4 | --- 5 | 6 | 7 | ## Official Links 8 | 9 | [Twitter](https://twitter.com/ethswarm) 10 | [Discord server](https://discord.gg/wdghaQsGq5) 11 | [Reddit](https://www.reddit.com/r/ethswarm/) 12 | [GitHub](https://github.com/ethersphere) 13 | [Blog](https://blog.ethswarm.org) 14 | [Homepage](https://www.ethswarm.org/) 15 | 16 | ## Awesome Swarm 17 | 18 | An [awesome list](https://awesome.re) on anything awesome related to the Swarm platform. 🐝 🐝 🐝 19 | 20 | To see the most up to date list or submit an addition to it, make sure to check the [awesome-swarm repo](https://github.com/ethersphere/awesome-swarm). 21 | 22 | ## Grants and Bounties 23 | 24 | Swarm grants support many interesting projects that are already building their products on top of Swarm. Swarm bounties extend the ecosystem with tooling and infrastructure. 25 | 26 | If you have an idea for a project which uses Swarm's technology we welcome you to [apply for a grant](https://grants.ethswarm.org). 27 | 28 | Learn more about grants for building on Swarm at the [EthSwarm homepage](https://www.ethswarm.org/grants). 29 | 30 | ## Fellowships 31 | 32 | [Swarm fellows](https://www.ethswarm.org/fellowships) work on items identified as needs for the Swarm network to evolve and grow but are not part of core Swarm development. Fellows are expected to pursue the goals supported by the fellowship in the long term as part of their career path. A fellowship helps them achieve results to a certain degree, but afterwards, the project should be sustainable and able to continue on its own. 33 | 34 | Current Swarm fellows include both [Datafund](https://datafund.io/) and [Solar Punk](https://solarpunk.buzz/). -------------------------------------------------------------------------------- /docs/references/fair-data-society.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Fair Data Society 3 | id: fair-data-society 4 | --- 5 | 6 | The [Fair Data Society (FDS)](https://fairdatasociety.org/) is a coordinated network developing infrastructure and dApps for a fairer data economy and promoting human rights through digital sovereignty. It is a movement and vision aimed at promoting a decentralized, equitable, and sustainable digital ecosystem that respects individual privacy and data ownership. Its core goal is to empower individuals with control over their data, ensuring that data is used ethically and transparently, while fostering a more balanced relationship between individuals, organizations, and governments. 7 | 8 | While FDS is an independent organization, it shares Swarm's vision for the future of data and the decentralized web. FDS uses Swarm's technology as the foundation for the software it develops and incubates for the purpose of realizing its goals. 9 | 10 | The suite of Swarm based FDS software provides a wide range of functionalities for a variety of users and use cases. The suite currently consists of: 11 | 12 | :::caution 13 | FDS's software is currently in beta or earlier and has no guarantees of file integrity, persistence, or security. 14 | ::: 15 | 16 | 1. [The Fair Data Protocol (FDP)](https://fdp.fairdatasociety.org/) - A data interoperability protocol for dApps that use personal data. 17 | 1. [Fairdrive](https://fairdrive.fairdatasociety.org/) - Decentralised storage on Swarm. 18 | 1. [Fairdrop](https://fairdrop.fairdatasociety.org/) - An easy and secure way to send your files. No central server. No tracking. No backdoors. 19 | 1. [FairOS](https://docs.fairos.fairdatasociety.org/docs/) - The operating system for the decentralised web. 20 | 1. [Galileo](https://app.galileo.fairdatasociety.org/) - An open source project that allows you to use, create and modify maps of various participants. 21 | 22 | ## Links 23 | 24 | * [FDS YouTube](https://www.youtube.com/@fairdatasociety8412) 25 | * [FDS Homepage](https://fairdatasociety.org/) 26 | * [FDS Discord](https://discord.com/invite/vw3PmWf2rE) 27 | * [FDS Twitter](https://twitter.com/fairdatasociety) 28 | * [FDS GitHub](https://github.com/fairDataSociety) -------------------------------------------------------------------------------- /docs/references/faq.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: FAQ 3 | id: faq 4 | --- 5 | 6 | 7 | # Swarm FAQ 8 | 9 | ## Community 10 | 11 | ### What are the Swarm Foundation's official channels? 12 | 13 | - Website: [https://ethswarm.org/](https://ethswarm.org/) 14 | - Blog:[https://blog.ethswarm.org/](https://blog.ethswarm.org/) 15 | - Github: [https://github.com/ethersphere](https://github.com/ethersphere) 16 | - e-mail: info@ethswarm.org 17 | - Discord: [https://discord.ethswarm.org/](https://discord.ethswarm.org/) 18 | - Twitter: [https://twitter.com/ethswarm](https://twitter.com/ethswarm) 19 | - Reddit: [https://www.reddit.com/r/ethswarm](https://www.reddit.com/r/ethswarm) 20 | - Youtube: [https://www.youtube.com/channel/UCu6ywn9MTqdREuE6xuRkskA](https://www.youtube.com/channel/UCu6ywn9MTqdREuE6xuRkskA) 21 | 22 | ### Where can I find technical support and get answers to my other questions? 23 | 24 | The Swarm community is centered around our Discord server where you will find many people willing and able to help with your every need! [https://discord.ethswarm.org/](https://discord.ethswarm.org/) 25 | 26 | ### Where can I find support for running Bee node on Dappnode? 27 | 28 | You can find support for running Bee on Dappnode on the Dappnode Discord server: [https://discord.gg/dRd5CrjF](https://discord.gg/dRd5CrjF) 29 | 30 | ### Who can I contact for other inquiries? 31 | 32 | For any other inquiries, you can contact us at [info@ethswarm.org](mailto:info@ethswarm.org) 33 | 34 | ### What's the relationship between Swarm and Ethereum? 35 | 36 | Swarm started in the first days of Ethereum as part of the original "world computer" vision, consisting of Ethereum (the processor), Whisper (messaging) and Swarm (storage). The project is the result of years of research and work by the Ethereum Foundation, the Swarm Foundation, teams, individuals across the ecosystem and the community. 37 | 38 | The conceptual idea for Swarm was started in the Ethereum team at the beginning, and the Ethereum Foundation incubated Swarm. After five years of research, Swarm and Ethereum are now two separate entities. 39 | 40 | ## BZZ Token 41 | 42 | ### What is BZZ Token? 43 | 44 | Swarm's native token BZZ, was initially issued on Ethereum. It has been bridged over to Gnosis where it is referred to as xBZZ for differentiation, and serves as a means of accessing the platform's data relay and storage services, while also providing compensation for node operators who provide these services. 45 | 46 | ### What is PLUR? 47 | 48 | 1 PLUR is the atomic unit of xBZZ, where xBZZ then has 16 decimals (ie. 1 PLUR = 1e-16 xBZZ) 49 | 50 | ### Where can I buy BZZ tokens? 51 | 52 | There are many ways to acquire BZZ tokens, either on custodial centralised exchanges where you can trade traditional currencies and cryptocurrency or through decentralised exchanges and protocols where you can trade between cryptocurrencies. For more information please visit the [Get BZZ](https://www.ethswarm.org/get-bzz) page on the Ethswarm.org homepage. 53 | 54 | *Note that for use on Swarm for staking or purchasing postage stamps, you need the Gnosis Chain version of BZZ, commonly referred to as xBZZ.* 55 | 56 | ### What is the BZZ token address? 57 | 58 | See [this page](/docs/references/smart-contracts) for a list of relevant token addresses. 59 | 60 | ### What is the BZZ token supply? 61 | 62 | With the [shutdown of the bonding curve](https://blog.ethswarm.org/foundation/2024/bonding-curve-shutdown/) as a result of a [community vote](https://blog.ethswarm.org/foundation/2024/announcing-the-outcome-of-swarms-bonding-curve-vote/), the BZZ supply is now fixed at [63,149,437](https://etherscan.io/token/0x19062190b1925b5b6689d7073fdfc8c2976ef8cb). 63 | 64 | ### BZZ token tokenomics 65 | 66 | More about BZZ token tokenomics: https://blog.ethswarm.org/hive/2021/bzz-tokenomics/ 67 | 68 | ### What is the bonding curve? 69 | 70 | A bonding curve is a mathematical function in the form of y=f(x) that determines the price of a single token, depending on the number of tokens currently in existence, or the market supply. The key difference is that with a traditional exchange platform market makers are required to provide liquidity to the market, whereas a bonding curve takes over the role of providing liquidity, negating the need for market makers. 71 | 72 | ### What is the "Bzzaar" bonding curve? 73 | 74 | During the first several years of the life of the BZZ token, the bonding curve mechanism played a critical role in maintaining liquidity and setting a transparent pricing model for BZZ tokens. 75 | 76 | On May 4th of 2024, as a result of a [community vote](https://blog.ethswarm.org/foundation/2024/announcing-the-outcome-of-swarms-bonding-curve-vote/), the bonding curve was [shut down](https://blog.ethswarm.org/foundation/2024/bonding-curve-shutdown/) and the BZZ supply is now fixed at [63,149,437](https://etherscan.io/token/0x19062190b1925b5b6689d7073fdfc8c2976ef8cb). 77 | 78 | -------------------------------------------------------------------------------- /docs/references/smart-contracts.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Smart Contracts 3 | id: smart-contracts 4 | --- 5 | import { globalVariables } from '/src/config/globalVariables'; 6 | 7 | ### Token Contracts 8 | |Contract|Blockchain | Address | 9 | | ---------------------- | ------------------------------- |--------- | 10 | |BZZ token| Ethereum | [`0x19062190b1925b5b6689d7073fdfc8c2976ef8cb`](https://ethplorer.io/address/0x19062190b1925b5b6689d7073fdfc8c2976ef8cb) | 11 | |xBZZ token | Gnosis Chain | [`0xdBF3Ea6F5beE45c02255B2c26a16F300502F68da`](https://gnosisscan.io/token/0xdbf3ea6f5bee45c02255b2c26a16f300502f68da) | 12 | |sBZZ token| Sepolia (Ethereum testnet) | [`0x543dDb01Ba47acB11de34891cD86B675F04840db`](https://sepolia.etherscan.io/address/0x543dDb01Ba47acB11de34891cD86B675F04840db) | 13 | 14 | ### Storage Incentives Contracts 15 | 16 | You can find the Solidity source code for each contract in the [storage incentives Github repo](https://github.com/ethersphere/storage-incentives 17 | ). 18 | 19 | For a list of the current smart contract addresses, see the [storage incentives ABI repo](https://github.com/ethersphere/go-storage-incentives-abi). 20 | 21 | For a history of smart contract addresses, see the [storage incentives ABI repo history](https://github.com/ethersphere/go-storage-incentives-abi/commits/master/abi/abi_mainnet.go). 22 | 23 | | Contract | Blockchain | Address | 24 | | --------------- | ------------ | -------------------------------------------------------------------------------------------------------------- | 25 | | Postage Stamp | Gnosis Chain | {globalVariables.postageStampContract} | 26 | | Staking | Gnosis Chain | {globalVariables.stakingContract} | 27 | | Redistribution | Gnosis Chain | {globalVariables.redistributionContract} | 28 | | Price Oracle | Gnosis Chain | {globalVariables.priceOracleContract} | 29 | -------------------------------------------------------------------------------- /docs/references/tokens.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Tokens 3 | id: tokens 4 | --- 5 | 6 | 7 | ## Swarm Ecosystem Tokens 8 | 9 | ### BZZ 10 | 11 | :::info 12 | On May 4th of 2024, as a result of a [community vote](https://blog.ethswarm.org/foundation/2024/announcing-the-outcome-of-swarms-bonding-curve-vote/), the bonding curve was [shut down](https://blog.ethswarm.org/foundation/2024/bonding-curve-shutdown/) and the BZZ supply is now fixed at [63,149,437](https://etherscan.io/token/0x19062190b1925b5b6689d7073fdfc8c2976ef8cb). 13 | ::: 14 | 15 | BZZ is the original token issued from the [Ethswarm Bonding Curve contract](https://etherscan.io/address/0x4f32ab778e85c4ad0cead54f8f82f5ee74d46904) on the Ethereum blockchain. 16 | 17 | BZZ Ethereum address: [0x19062190b1925b5b6689d7073fdfc8c2976ef8cb]( 18 | https://etherscan.io/address/0x19062190b1925b5b6689d7073fdfc8c2976ef8cb) 19 | 20 | PLUR is the smallest denomination of BZZ. 1 PLUR is equal to 1e-16 BZZ. 21 | 22 | ### xBZZ 23 | 24 | "xBZZ" is the term used to indicate BZZ on Gnosis Chain. It is the bridged version of the original Ethereum BZZ token issued on Gnosis Chain. xBZZ is the token used for staking and to pay for storage fees on Swarm. 25 | 26 | xBZZ Gnosis Chain address: [0xdBF3Ea6F5beE45c02255B2c26a16F300502F68da](https://gnosisscan.io/address/0xdBF3Ea6F5beE45c02255B2c26a16F300502F68da) 27 | 28 | :::info 29 | Note that the ticker symbol is the same BZZ for both Gnosis Chain and Ethereum versions of the token. xBZZ is term of convenience used to differentiate the tokens within the Swarm community. 30 | ::: 31 | 32 | As with BZZ, PLUR is the smallest denomination of xBZZ. 1 PLUR is equal to 1e-16 xBZZ. 33 | 34 | ### sBZZ 35 | 36 | sBZZ is the testnet version of BZZ on the Sepolia Ethereum testnet. 37 | 38 | Sepolia testnet address: [0x543dDb01Ba47acB11de34891cD86B675F04840db](https://sepolia.etherscan.io/address/0x543dDb01Ba47acB11de34891cD86B675F04840db) 39 | 40 | ### DAI 41 | 42 | DAI is the popular decentralized stablecoin from [MakerDAO](https://makerdao.com/en/). 43 | 44 | ### xDAI 45 | 46 | xDAI is the bridged version of DAI on Gnosis Chain and also serves as the native gas token for Gnosis Chain and is used to pay transaction fees on Gnosis Chain in the same way ETH is used to pay for transactions on Ethereum. It is required by Bee nodes to pay for transaction fees when interacting with Swarm smart contracts on Gnosis Chain. 47 | 48 | 49 | ### Getting BZZ / xBZZ 50 | 51 | The Swarm official website has a page with [a list of resources for getting BZZ tokens](https://www.ethswarm.org/get-bzz). Be careful to check whether it is BZZ on Ethereum or Gnosis Chain. 52 | 53 | 54 | ### Bridging BZZ to xBZZ or DAI to xDAI 55 | 56 | If you already have DAI or BZZ on Ethereum then you can use the [Gnosis Chain Bridge](https://bridge.gnosischain.com/) for swapping between DAI and xDAI or BZZ and xBZZ. 57 | 58 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bee-docs", 3 | "version": "0.0.0", 4 | "private": true, 5 | "scripts": { 6 | "docusaurus": "docusaurus", 7 | "start": "docusaurus start", 8 | "build": "docusaurus build", 9 | "swizzle": "docusaurus swizzle", 10 | "deploy": "docusaurus deploy", 11 | "serve": "docusaurus serve" 12 | }, 13 | "dependencies": { 14 | "@cookbookdev/docsbot": "^4.24.12", 15 | "@docsearch/js": "^3.8.3", 16 | "@docusaurus/core": "^3.7.0", 17 | "@docusaurus/plugin-client-redirects": "^3.7.0", 18 | "@docusaurus/preset-classic": "^3.7.0", 19 | "@docusaurus/theme-mermaid": "^3.7.0", 20 | "@mdx-js/react": "^3.1.0", 21 | "@saucelabs/theme-github-codeblock": "^0.3.0", 22 | "babel-plugin-styled-components": "^2.1.4", 23 | "clsx": "^2.1.1", 24 | "docusaurus-lunr-search": "^3.6.0", 25 | "docusaurus-plugin-matomo": "^0.0.8", 26 | "hast-util-is-element": "^3.0.0", 27 | "plugin-image-zoom": "github:flexanalytics/plugin-image-zoom", 28 | "react": "^18.3.1", 29 | "react-dom": "^18.3.1", 30 | "react-markdown": "^9.0.3", 31 | "redocusaurus": "^2.2.1", 32 | "rehype-katex": "^7.0.1", 33 | "remark-math": "^6.0.0" 34 | }, 35 | "browserslist": { 36 | "production": [ 37 | ">0.2%", 38 | "not dead", 39 | "not op_mini all" 40 | ], 41 | "development": [ 42 | "last 1 chrome version", 43 | "last 1 firefox version", 44 | "last 1 safari version" 45 | ] 46 | }, 47 | "engines": { 48 | "node": ">=18.0.0", 49 | "npm": ">=6.0.0" 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /shell.nix: -------------------------------------------------------------------------------- 1 | # This is a descriptor for the Nix package manager. 2 | # Invoke nix-shell in this directory to enter an environment where 3 | # everything gets downloaded and made available for development. 4 | # With the shellHook enabled it will even start up a local 5 | # HTTP server serving the docs. 6 | 7 | { pkgs ? import {} }: 8 | 9 | pkgs.mkShell { 10 | buildInputs = with pkgs; [ 11 | coreutils diffutils 12 | bash-completion less 13 | gitFull 14 | nodejs-14_x 15 | 16 | # keep this line if you use bash 17 | bashInteractive 18 | ]; 19 | 20 | buildCommand = '' 21 | npm run build 22 | ''; 23 | 24 | shellHook = 25 | '' 26 | # ideally, npm ci should be here, and it should run fast when it has nothing to do... 27 | # npm ci 28 | npm start 29 | ''; 30 | } 31 | -------------------------------------------------------------------------------- /sidebars.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | concepts: [ 3 | 'concepts/introduction', 4 | 'concepts/what-is-swarm', 5 | { 6 | type: 'category', 7 | label: 'DISC Storage', 8 | items: [ 9 | 'concepts/DISC/disc', 10 | 'concepts/DISC/kademlia', 11 | 'concepts/DISC/neighborhoods', 12 | 'concepts/DISC/erasure-coding', 13 | ], 14 | collapsed: false 15 | }, 16 | { 17 | type: 'category', 18 | label: 'Incentives', 19 | items: [ 20 | 'concepts/incentives/overview', 21 | 'concepts/incentives/redistribution-game', 22 | 'concepts/incentives/postage-stamps', 23 | 'concepts/incentives/bandwidth-incentives', 24 | 'concepts/incentives/price-oracle', 25 | 26 | ], 27 | collapsed: false 28 | }, 29 | 'concepts/pss', 30 | 'concepts/access-control', 31 | 32 | 33 | ], 34 | desktop: [ 35 | 'desktop/introduction', 36 | 'desktop/install', 37 | 'desktop/configuration', 38 | 'desktop/access-content', 39 | 'desktop/postage-stamps', 40 | 'desktop/upload-content', 41 | 'desktop/backup-restore', 42 | 'desktop/publish-a-website', 43 | 'desktop/start-a-blog', 44 | ], 45 | bee: [ 46 | { 47 | type: 'category', 48 | label: 'Installation', 49 | items: [ 50 | 'bee/installation/getting-started', 51 | 'bee/installation/quick-start', 52 | 'bee/installation/shell-script-install', 53 | 'bee/installation/docker', 54 | 'bee/installation/package-manager-install', 55 | 'bee/installation/build-from-source', 56 | 'bee/installation/set-target-neighborhood', 57 | 'bee/installation/hive', 58 | 'bee/installation/connectivity', 59 | 'bee/installation/fund-your-node', 60 | ], 61 | collapsed: false 62 | }, 63 | { 64 | type: 'category', 65 | label: 'Working With Bee', 66 | items: [ 67 | 'bee/working-with-bee/introduction', 68 | 'bee/working-with-bee/configuration', 69 | 'bee/working-with-bee/node-types', 70 | 'bee/working-with-bee/bee-api', 71 | 'bee/working-with-bee/logs-and-files', 72 | 'bee/working-with-bee/bee-dashboard', 73 | 'bee/working-with-bee/swarm-cli', 74 | 'bee/working-with-bee/staking', 75 | 'bee/working-with-bee/cashing-out', 76 | 'bee/working-with-bee/monitoring', 77 | 'bee/working-with-bee/backups', 78 | 'bee/working-with-bee/upgrading-bee', 79 | 'bee/working-with-bee/uninstalling-bee', 80 | 81 | ], 82 | collapsed: false 83 | }, 84 | 'bee/bee-faq', 85 | ], 86 | develop: [ 87 | { 88 | type: 'category', 89 | label: 'Develop', 90 | items: [ 91 | 'develop/introduction', 92 | ], 93 | collapsed: false 94 | }, 95 | { 96 | type: 'category', 97 | label: 'Access the Swarm', 98 | items: [ 99 | 'develop/access-the-swarm/introduction', 100 | 'develop/access-the-swarm/buy-a-stamp-batch', 101 | 'develop/access-the-swarm/upload-and-download', 102 | 'develop/access-the-swarm/erasure-coding', 103 | 'develop/access-the-swarm/store-with-encryption', 104 | 'develop/access-the-swarm/host-your-website', 105 | 'develop/access-the-swarm/syncing', 106 | 'develop/access-the-swarm/pinning', 107 | ], 108 | collapsed: false 109 | }, 110 | { 111 | type: 'category', 112 | label: 'Tools and Features', 113 | items: [ 114 | 'develop/tools-and-features/introduction', 115 | 'develop/tools-and-features/bee-js', 116 | 'develop/tools-and-features/gateway-proxy', 117 | 'develop/tools-and-features/chunk-types', 118 | 'develop/tools-and-features/feeds', 119 | 'develop/tools-and-features/pss', 120 | 'develop/tools-and-features/gsoc', 121 | 'develop/tools-and-features/bee-dev-mode', 122 | 'develop/tools-and-features/starting-a-test-network', 123 | 'develop/tools-and-features/act' 124 | ], 125 | collapsed: false 126 | }, 127 | { 128 | type: 'category', 129 | label: 'Contribute', 130 | items: [ 131 | 'develop/contribute/introduction', 132 | 'develop/contribute/protocols', 133 | ], 134 | collapsed: false 135 | }, 136 | 137 | ], 138 | References: [ 139 | 'references/smart-contracts', 140 | 'references/tokens', 141 | 'references/glossary', 142 | 'references/community', 143 | 'references/fair-data-society', 144 | 'references/faq', 145 | 'references/awesome-list', 146 | ], 147 | }; 148 | -------------------------------------------------------------------------------- /src/components/AwesomeList.js: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react'; 2 | import Markdown from 'react-markdown'; 3 | 4 | const AwesomeList = () => { 5 | const [content, setContent] = useState(''); 6 | const [loading, setLoading] = useState(true); 7 | const [error, setError] = useState(false); 8 | 9 | useEffect(() => { 10 | fetch('https://raw.githubusercontent.com/ethersphere/awesome-swarm/refs/heads/master/README.md') 11 | .then((res) => { 12 | if (!res.ok) { 13 | throw new Error('Network response was not ok'); 14 | } 15 | return res.text(); 16 | }) 17 | .then((text) => { 18 | setContent(text); 19 | setLoading(false); 20 | }) 21 | .catch((err) => { 22 | console.error('Error fetching Awesome Swarm list:', err); 23 | setError(true); 24 | setLoading(false); 25 | }); 26 | }, []); 27 | 28 | if (loading) { 29 | return

Loading Awesome Swarm list...

; 30 | } 31 | 32 | if (error) { 33 | return

Failed to retrieve Awesome Swarm list contents

; 34 | } 35 | 36 | return {content}; 37 | }; 38 | 39 | export default AwesomeList; 40 | -------------------------------------------------------------------------------- /src/components/parities.js: -------------------------------------------------------------------------------- 1 | 2 | let parities = [ 3 | // Medium 4 | [ 5 | 2, // For chunk 1 6 | 3, 3, 3, 3, // For chunks 2-5 7 | 4, 4, 4, 4, 4, 4, 4, 4, 4, // For chunks 6-14 8 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, // For chunks 15-28 9 | 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, // For chunks 29-46 10 | 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // For chunks 47-68 11 | 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, // For chunks 69-94 12 | 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 // For chunks 95-119 13 | ], 14 | // Strong 15 | [ 16 | 4, // For chunk 1 17 | 5, 5, // For chunks 2-3 18 | 6, 6, 6, // For chunks 4-6 19 | 7, 7, 7, 7, // For chunks 7-10 20 | 8, 8, 8, 8, 8, // For chunks 11-15 21 | 9, 9, 9, 9, 9, // For chunks 16-20 22 | 10, 10, 10, 10, 10, 10, // For chunks 21-26 23 | 11, 11, 11, 11, 11, 11, // For chunks 27-32 24 | 12, 12, 12, 12, 12, 12, 12, // For chunks 33-39 25 | 13, 13, 13, 13, 13, 13, 13, // For chunks 40-46 26 | 14, 14, 14, 14, 14, 14, 14, // For chunks 47-53 27 | 15, 15, 15, 15, 15, 15, 15, 15, // For chunks 54-61 28 | 16, 16, 16, 16, 16, 16, 16, 16, // For chunks 62-69 29 | 17, 17, 17, 17, 17, 17, 17, 17, // For chunks 70-77 30 | 18, 18, 18, 18, 18, 18, 18, 18, 18, // For chunks 78-86 31 | 19, 19, 19, 19, 19, 19, 19, 19, 19, // For chunks 87-95 32 | 20, 20, 20, 20, 20, 20, 20, 20, 20, // For chunks 96-104 33 | 21, 21, 21, // For chunks 105-107 34 | ], 35 | // Insane 36 | [ 37 | 5, // For chunk 1 38 | 6, // For chunk 2 39 | 7, // For chunk 3 40 | 8, 8, // For chunks 4-5 41 | 9, 9, 9, // For chunks 6-8 42 | 10, 10, // For chunks 9-10 43 | 11, 11, 11, // For chunks 11-13 44 | 12, 12, 12, // For chunks 14-16 45 | 13, 13, 13, // For chunks 17-19 46 | 14, 14, 14, // For chunks 20-22 47 | 15, 15, 15, 15, // For chunks 23-26 48 | 16, 16, 16, // For chunks 27-29 49 | 17, 17, 17, 17, // For chunks 30-33 50 | 18, 18, 18, 18, // For chunks 34-37 51 | 19, 19, 19, 19, // For chunks 38-41 52 | 20, 20, 20, 20, // For chunks 42-45 53 | 21, 21, 21, 21, 21, // For chunks 46-50 54 | 22, 22, 22, 22, // For chunks 51-54 55 | 23, 23, 23, 23, 23, // For chunks 55-59 56 | 24, 24, 24, 24, // For chunks 60-63 57 | 25, 25, 25, 25, 25, // For chunks 64-68 58 | 26, 26, 26, 26, 26, // For chunks 69-73 59 | 27, 27, 27, 27, // For chunks 74-77 60 | 28, 28, 28, 28, 28, // For chunks 78-82 61 | 29, 29, 29, 29, 29, // For chunks 83-87 62 | 30, 30, 30, 30, 30, // For chunks 88-92 63 | 31, 31, 31, 31, 31 // For chunks 93-97 64 | ], 65 | // Paranoid 66 | [ 67 | 19, // For chunk 1 68 | 23, // For chunk 2 69 | 26, // For chunk 3 70 | 29, // For chunk 4 71 | 31, // For chunk 5 72 | 34, // For chunk 6 73 | 36, // For chunk 7 74 | 38, // For chunk 8 75 | 40, // For chunk 9 76 | 43, // For chunk 10 77 | 45, // For chunk 11 78 | 47, // For chunk 12 79 | 48, // For chunk 13 80 | 50, // For chunk 14 81 | 52, // For chunk 15 82 | 54, // For chunk 16 83 | 56, // For chunk 17 84 | 58, // For chunk 18 85 | 59, // For chunk 19 86 | 61, // For chunk 20 87 | 63, // For chunk 21 88 | 65, // For chunk 22 89 | 66, // For chunk 23 90 | 68, // For chunk 24 91 | 70, // For chunk 25 92 | 71, // For chunk 26 93 | 73, // For chunk 27 94 | 75, // For chunk 28 95 | 76, // For chunk 29 96 | 78, // For chunk 30 97 | 80, // For chunk 31 98 | 81, // For chunk 32 99 | 83, // For chunk 33 100 | 84, // For chunk 34 101 | 86, // For chunk 35 102 | 87, // For chunk 36 103 | 89, // For chunk 37 104 | 90 // For chunk 38 105 | ] 106 | 107 | ] 108 | 109 | export default parities -------------------------------------------------------------------------------- /src/components/paritiesEncrypted.js: -------------------------------------------------------------------------------- 1 | 2 | let parities = [ 3 | // Medium 4 | [ 5 | 3, 3, // For chunks 1-2 6 | 4, 4, 4, 4, 4, // For chunks 3-7 7 | 5, 5, 5, 5, 5, 5, 5, // For chunks 8-14 8 | 6, 6, 6, 6, 6, 6, 6, 6, 6, // For chunks 15-23 9 | 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // For chunks 24-34 10 | 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, // For chunks 35-47 11 | 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, // For chunks 48-59 12 | ], 13 | // Strong 14 | [ 15 | 5, // For chunk 1 16 | 6, 6, // For chunks 2-3 17 | 7, 7, // For chunks 4-5 18 | 8, 8, // For chunks 6-7 19 | 9, 9, 9, // For chunks 8-10 20 | 10, 10, 10, // For chunks 11-13 21 | 11, 11, 11, // For chunks 14-16 22 | 12, 12, 12, // For chunks 17-19 23 | 13, 13, 13, 13, // For chunks 20-23 24 | 14, 14, 14, // For chunks 24-26 25 | 15, 15, 15, 15, // For chunks 27-30 26 | 16, 16, 16, 16, // For chunks 31-34 27 | 17, 17, 17, 17, // For chunks 35-38 28 | 18, 18, 18, 18, 18, // For chunks 39-43 29 | 19, 19, 19, 19, // For chunks 44-47 30 | 20, 20, 20, 20, 20, // For chunks 48-52 31 | 21 // For chunk 53 32 | ], 33 | // Insane 34 | [ 35 | 6, // For chunk 1 36 | 8, // For chunk 2 37 | 9, 9, // For chunks 3-4 38 | 10, // For chunk 5 39 | 11, // For chunk 6 40 | 12, 12, // For chunks 7-8 41 | 13, // For chunk 9 42 | 14, 14, // For chunks 10-11 43 | 15, 15, // For chunks 12-13 44 | 16, // For chunk 14 45 | 17, 17, // For chunks 15-16 46 | 18, 18, // For chunks 17-18 47 | 19, 19, // For chunks 19-20 48 | 20, 20, // For chunks 21-22 49 | 21, 21, 21, // For chunks 23-25 50 | 22, 22, // For chunks 26-27 51 | 23, 23, // For chunks 28-29 52 | 24, 24, // For chunks 30-31 53 | 25, 25, 25, // For chunks 32-34 54 | 26, 26, // For chunks 35-36 55 | 27, 27, // For chunks 37-38 56 | 28, 28, 28, // For chunks 39-41 57 | 29, 29, // For chunks 42-43 58 | 30, 30, 30, // For chunks 44-46 59 | 31, 31 // For chunks 47-48 60 | ], 61 | // Paranoid 62 | [ 63 | 23, // For chunk 1 64 | 29, // For chunk 2 65 | 34, // For chunk 3 66 | 38, // For chunk 4 67 | 43, // For chunk 5 68 | 47, // For chunk 6 69 | 50, // For chunk 7 70 | 54, // For chunk 8 71 | 58, // For chunk 9 72 | 61, // For chunk 10 73 | 65, // For chunk 11 74 | 68, // For chunk 12 75 | 71, // For chunk 13 76 | 75, // For chunk 14 77 | 78, // For chunk 15 78 | 81, // For chunk 16 79 | 84, // For chunk 17 80 | 87, // For chunk 18 81 | 90 // For chunk 19 82 | ] 83 | ] 84 | 85 | export default parities 86 | -------------------------------------------------------------------------------- /src/config/globalVariables.js: -------------------------------------------------------------------------------- 1 | export const globalVariables = { 2 | postageStampContract: '0x45a1502382541Cd610CC9068e88727426b696293', 3 | stakingContract: '0x445B848e16730988F871c4a09aB74526d27c2Ce8', 4 | redistributionContract: '0xFfF73fd14537277B3F3807e1AB0F85E17c0ABea5', 5 | priceOracleContract: '0x47EeF336e7fE5bED98499A4696bce8f28c1B0a8b' 6 | }; 7 | -------------------------------------------------------------------------------- /src/pages/awesome-list.js: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react'; 2 | import Markdown from 'react-markdown'; 3 | 4 | export default function AwesomeList() { 5 | const [content, setContent] = useState(''); 6 | 7 | useEffect(() => { 8 | fetch('https://raw.githubusercontent.com/ethersphere/awesome-swarm/refs/heads/master/README.md') 9 | .then((res) => res.text()) 10 | .then((text) => setContent(text)); 11 | }, []); 12 | 13 | return ( 14 |
15 | {content} 16 |
17 | ); 18 | } 19 | -------------------------------------------------------------------------------- /src/pages/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import clsx from 'clsx'; 3 | import Layout from '@theme/Layout'; 4 | import Head from '@docusaurus/Head'; 5 | import Link from '@docusaurus/Link'; 6 | import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; 7 | import useBaseUrl from '@docusaurus/useBaseUrl'; 8 | import styles from './styles.module.css'; 9 | import {Redirect} from '@docusaurus/router'; 10 | 11 | function Home() { 12 | const context = useDocusaurusContext(); 13 | const {siteConfig = {}} = context; 14 | return ( 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 |

Swarm Documentation

28 |

Official documentation of the decentralised data storage and distribution protocol built to power the next generation of censorship-resistant, unstoppable, serverless dapps.

29 |
30 |
31 | 32 |
33 | 34 | 35 |

Learn about Swarm

36 |

Get to know more about the Swarm's decentralised data storage and distribution technology.

37 |
38 |
39 | 40 |
41 | 42 | 43 |

Use Swarm Desktop

44 |

Install the Swarm Desktop client to quickly spin up a Bee node and start interacting with the Swarm network.

45 |
46 |
47 | 48 |
49 | 50 | 51 |

Run a Bee Node

52 |

Operate a Bee node to connect with other peers all over the world to become part of Swarm network.

53 |
54 |
55 | 56 |
57 | 58 | 59 |

Develop on Swarm

60 |

Swarm empowers developers to create and host decentralised dapps, NFT meta-data, media files, and much more!

61 |
62 |
63 |
64 |
65 | ); 66 | } 67 | 68 | export default Home; 69 | -------------------------------------------------------------------------------- /src/pages/styles.module.css: -------------------------------------------------------------------------------- 1 | /* stylelint-disable docusaurus/copyright-header */ 2 | 3 | /** 4 | * CSS files with the .module.css suffix will be treated as CSS modules 5 | * and scoped locally. 6 | */ 7 | 8 | 9 | 10 | 11 | * { 12 | font-family: 'Inter'; 13 | } 14 | 15 | .inter { 16 | font-family: 'Inter'; 17 | } 18 | .buttons 19 | 20 | .heroBanner { 21 | padding: 4rem 0; 22 | text-align: center; 23 | position: relative; 24 | overflow: hidden; 25 | } 26 | 27 | .mainTitle { 28 | text-align: center; 29 | } 30 | 31 | .subTitle { 32 | max-width: 50%; 33 | margin: auto; 34 | text-align: center; 35 | } 36 | 37 | .titleContainer { 38 | padding-top: 40px; 39 | } 40 | 41 | @media screen and (max-width: 1000px) { 42 | .heroBanner { 43 | padding: 2rem; 44 | } 45 | } 46 | 47 | .buttons { 48 | display: flex; 49 | align-items: center; 50 | justify-content: center; 51 | 52 | } 53 | 54 | .features { 55 | display: flex; 56 | align-items: center; 57 | padding: 2rem 0; 58 | width: 100%; 59 | } 60 | 61 | .featureImage { 62 | height: 200px; 63 | width: 200px; 64 | } 65 | 66 | .sectionButton { 67 | width: 270px; 68 | text-align: center; 69 | color: #F6F7F9; 70 | display: inline-block; 71 | position: relative; 72 | z-index: 0; 73 | } 74 | 75 | [data-theme='dark'] .sectionButtonInner { 76 | padding: 20px; 77 | color: #F6F7F9; 78 | } 79 | 80 | [data-theme='light'] .sectionButtonInner { 81 | padding: 20px; 82 | color: #242424; 83 | } 84 | 85 | .sectionButton:before { 86 | opacity: 0; 87 | content: ""; 88 | position: absolute; 89 | z-index: -1; 90 | inset: 0; 91 | padding: 3px; 92 | border-radius: 15px; 93 | background: linear-gradient(#FF7900, #FF5143); 94 | -webkit-mask: 95 | linear-gradient(#fff 0 0) content-box, 96 | linear-gradient(#fff 0 0); 97 | mask: 98 | linear-gradient(#fff 0 0) content-box, 99 | linear-gradient(#fff 0 0); 100 | -webkit-mask-composite: xor; 101 | mask-composite: exclude; 102 | -webkit-transition: all 0.2s linear; 103 | -moz-transition: all 0.2s linear; 104 | -ms-transition: all 0.2s linear; 105 | -o-transition: all 0.2s linear; 106 | transition: all 0.2s linear; 107 | } 108 | 109 | .sectionButton:hover:before { 110 | opacity: 1; 111 | } 112 | 113 | 114 | [data-theme='light'] .sectionButton { 115 | color: #242424; 116 | border-color: rgb(28, 30, 33); 117 | border: solid 2px rgba(0,0,0,0); 118 | 119 | } 120 | 121 | [data-theme='dark'] .sectionButton:hover { 122 | color: #F6F7F9; 123 | } 124 | 125 | 126 | 127 | .sectionImageLearnDark, .sectionImageLearnLight { 128 | height: 90px; 129 | display: inline-block; 130 | } 131 | [data-theme='light'] .sectionImageLearnLight { 132 | height: 90px; 133 | display: none; 134 | } 135 | [data-theme='dark'] .sectionImageLearnDark { 136 | height: 90px; 137 | display: none; 138 | } 139 | 140 | .sectionImageDesktopDark, .sectionImageDesktopLight { 141 | height: 90px; 142 | display: inline-block; 143 | } 144 | [data-theme='light'] .sectionImageDesktopLight { 145 | height: 90px; 146 | display: none; 147 | } 148 | [data-theme='dark'] .sectionImageDesktopDark { 149 | height: 90px; 150 | display: none; 151 | } 152 | 153 | .sectionImageDevelopDark, .sectionImageDevelopLight { 154 | height: 90px; 155 | display: inline-block; 156 | } 157 | [data-theme='light'] .sectionImageDevelopLight { 158 | height: 90px; 159 | display: none; 160 | } 161 | [data-theme='dark'] .sectionImageDevelopDark { 162 | height: 90px; 163 | display: none; 164 | } 165 | 166 | .sectionImageBeeDark, .sectionImageBeeLight { 167 | height: 90px; 168 | display: inline-block; 169 | } 170 | [data-theme='light'] .sectionImageBeeLight { 171 | height: 90px; 172 | display: none; 173 | } 174 | [data-theme='dark'] .sectionImageBeeDark { 175 | height: 90px; 176 | display: none; 177 | } 178 | 179 | .ctaButton { 180 | border: solid 2px rgba(0,0,0,0.75); 181 | border-radius: 5px; 182 | display: inline-block; 183 | padding: 2px 6px; 184 | } 185 | .description { 186 | font-size: 14px; 187 | line-height: 1.5rem; 188 | } 189 | 190 | .container { 191 | display: grid; 192 | grid-template-columns: 1fr 1fr 1fr 1fr; 193 | grid-template-rows: 1fr; 194 | grid-auto-columns: 1fr; 195 | gap: 0px 1.6rem; 196 | grid-auto-flow: row; 197 | margin: auto; 198 | padding: 5rem 2rem; 199 | overflow: hidden; 200 | } 201 | 202 | a.panel { 203 | color: inherit; 204 | } 205 | 206 | @media (max-width: 1000px) { 207 | .container { 208 | display: flex; 209 | flex-direction: column; 210 | } 211 | .sectionButton { 212 | padding: 26px 20px; 213 | height: 100%; 214 | } 215 | .sectionButton:before { 216 | opacity: 1; 217 | margin-bottom: 40px; 218 | } 219 | } 220 | 221 | 222 | .sectionImageDesktop { 223 | height: 90px; 224 | padding: 10px; 225 | } 226 | 227 | .sectionImageOperate { 228 | height: 90px; 229 | margin-bottom: 5px; 230 | } 231 | 232 | .buttonTitle { 233 | font-size: 1.5rem; 234 | margin-top: 16px; 235 | } -------------------------------------------------------------------------------- /src/theme/SearchBar/index.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import SearchBar from "@theme-original/SearchBar"; 3 | import AskCookbook from "@cookbookdev/docsbot/react"; 4 | import BrowserOnly from "@docusaurus/BrowserOnly"; 5 | 6 | /** It's a public API key, so it's safe to expose it here */ 7 | const COOKBOOK_PUBLIC_API_KEY = 8 | "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2NmY1YWNhZjIxODNjMDQxZWNhN2Q3ZmIiLCJpYXQiOjE3MjczNzY1NTksImV4cCI6MjA0Mjk1MjU1OX0.oSqppcwE2Hln6_mTjmXy-Roz6znZ-KchgjfP9oM3m24"; 9 | 10 | export default function SearchBarWrapper(props) { 11 | return ( 12 | <> 13 | 14 | 15 | {() => } 16 | 17 | 18 | ); 19 | } 20 | -------------------------------------------------------------------------------- /static/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/.nojekyll -------------------------------------------------------------------------------- /static/Andrena_nasonii._female.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/Andrena_nasonii._female.jpg -------------------------------------------------------------------------------- /static/bee.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/bee.jpg -------------------------------------------------------------------------------- /static/fonts/IBMPlexMono-SemiBold-Latin1.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/fonts/IBMPlexMono-SemiBold-Latin1.woff -------------------------------------------------------------------------------- /static/fonts/Inter-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/fonts/Inter-Black.ttf -------------------------------------------------------------------------------- /static/fonts/Inter-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/fonts/Inter-Bold.ttf -------------------------------------------------------------------------------- /static/fonts/Inter-ExtraBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/fonts/Inter-ExtraBold.ttf -------------------------------------------------------------------------------- /static/fonts/Inter-ExtraLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/fonts/Inter-ExtraLight.ttf -------------------------------------------------------------------------------- /static/fonts/Inter-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/fonts/Inter-Light.ttf -------------------------------------------------------------------------------- /static/fonts/Inter-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/fonts/Inter-Medium.ttf -------------------------------------------------------------------------------- /static/fonts/Inter-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/fonts/Inter-Regular.ttf -------------------------------------------------------------------------------- /static/fonts/Inter-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/fonts/Inter-SemiBold.ttf -------------------------------------------------------------------------------- /static/fonts/Inter-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/fonts/Inter-Thin.ttf -------------------------------------------------------------------------------- /static/img/access1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/access1.png -------------------------------------------------------------------------------- /static/img/access2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/access2.png -------------------------------------------------------------------------------- /static/img/access3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/access3.png -------------------------------------------------------------------------------- /static/img/access4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/access4.png -------------------------------------------------------------------------------- /static/img/arrow-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/img/backup1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/backup1.png -------------------------------------------------------------------------------- /static/img/backup2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/backup2.png -------------------------------------------------------------------------------- /static/img/backup3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/backup3.png -------------------------------------------------------------------------------- /static/img/backup4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/backup4.png -------------------------------------------------------------------------------- /static/img/backup5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/backup5.png -------------------------------------------------------------------------------- /static/img/backup6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/backup6.png -------------------------------------------------------------------------------- /static/img/backup7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/backup7.png -------------------------------------------------------------------------------- /static/img/backup8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/backup8.png -------------------------------------------------------------------------------- /static/img/backup9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/backup9.png -------------------------------------------------------------------------------- /static/img/bashtop_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/bashtop_01.png -------------------------------------------------------------------------------- /static/img/bashtop_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/bashtop_02.png -------------------------------------------------------------------------------- /static/img/batches_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/batches_01.png -------------------------------------------------------------------------------- /static/img/batches_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/batches_02.png -------------------------------------------------------------------------------- /static/img/batches_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/batches_03.png -------------------------------------------------------------------------------- /static/img/batches_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/batches_04.png -------------------------------------------------------------------------------- /static/img/bee-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/img/bee-light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/img/bos_fig_1_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/bos_fig_1_1.jpg -------------------------------------------------------------------------------- /static/img/bos_fig_2_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/bos_fig_2_3.jpg -------------------------------------------------------------------------------- /static/img/bos_fig_2_7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/bos_fig_2_7.jpg -------------------------------------------------------------------------------- /static/img/clef_import_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/clef_import_01.png -------------------------------------------------------------------------------- /static/img/clef_import_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/clef_import_02.png -------------------------------------------------------------------------------- /static/img/config1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/config1.png -------------------------------------------------------------------------------- /static/img/config10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/config10.png -------------------------------------------------------------------------------- /static/img/config11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/config11.png -------------------------------------------------------------------------------- /static/img/config2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/config2.png -------------------------------------------------------------------------------- /static/img/config3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/config3.png -------------------------------------------------------------------------------- /static/img/config4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/config4.png -------------------------------------------------------------------------------- /static/img/config5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/config5.png -------------------------------------------------------------------------------- /static/img/config6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/config6.png -------------------------------------------------------------------------------- /static/img/config7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/config7.png -------------------------------------------------------------------------------- /static/img/config8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/config8.png -------------------------------------------------------------------------------- /static/img/config9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/config9.png -------------------------------------------------------------------------------- /static/img/depths1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/depths1.png -------------------------------------------------------------------------------- /static/img/depths2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/depths2.png -------------------------------------------------------------------------------- /static/img/desktop-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/img/desktop-homepage-dl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/desktop-homepage-dl.png -------------------------------------------------------------------------------- /static/img/desktop-install-downloading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/desktop-install-downloading.png -------------------------------------------------------------------------------- /static/img/desktop-light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/img/desktop-new-install.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/desktop-new-install.png -------------------------------------------------------------------------------- /static/img/desktop-releases-dl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/desktop-releases-dl.png -------------------------------------------------------------------------------- /static/img/develop-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/img/develop-light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/img/ens-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/ens-1.png -------------------------------------------------------------------------------- /static/img/ens-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/ens-2.png -------------------------------------------------------------------------------- /static/img/ens-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/ens-3.png -------------------------------------------------------------------------------- /static/img/ens-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/ens-4.png -------------------------------------------------------------------------------- /static/img/ens-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/ens-5.png -------------------------------------------------------------------------------- /static/img/ens-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/ens-6.png -------------------------------------------------------------------------------- /static/img/ens-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/ens-7.png -------------------------------------------------------------------------------- /static/img/etherjot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot1.png -------------------------------------------------------------------------------- /static/img/etherjot10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot10.png -------------------------------------------------------------------------------- /static/img/etherjot11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot11.png -------------------------------------------------------------------------------- /static/img/etherjot12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot12.png -------------------------------------------------------------------------------- /static/img/etherjot13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot13.png -------------------------------------------------------------------------------- /static/img/etherjot14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot14.png -------------------------------------------------------------------------------- /static/img/etherjot15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot15.png -------------------------------------------------------------------------------- /static/img/etherjot16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot16.png -------------------------------------------------------------------------------- /static/img/etherjot17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot17.png -------------------------------------------------------------------------------- /static/img/etherjot18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot18.png -------------------------------------------------------------------------------- /static/img/etherjot19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot19.png -------------------------------------------------------------------------------- /static/img/etherjot2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot2.png -------------------------------------------------------------------------------- /static/img/etherjot20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot20.png -------------------------------------------------------------------------------- /static/img/etherjot21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot21.png -------------------------------------------------------------------------------- /static/img/etherjot22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot22.png -------------------------------------------------------------------------------- /static/img/etherjot23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot23.png -------------------------------------------------------------------------------- /static/img/etherjot24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot24.png -------------------------------------------------------------------------------- /static/img/etherjot25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot25.png -------------------------------------------------------------------------------- /static/img/etherjot26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot26.png -------------------------------------------------------------------------------- /static/img/etherjot27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot27.png -------------------------------------------------------------------------------- /static/img/etherjot3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot3.png -------------------------------------------------------------------------------- /static/img/etherjot4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot4.png -------------------------------------------------------------------------------- /static/img/etherjot5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot5.png -------------------------------------------------------------------------------- /static/img/etherjot6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot6.png -------------------------------------------------------------------------------- /static/img/etherjot7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot7.png -------------------------------------------------------------------------------- /static/img/etherjot8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot8.png -------------------------------------------------------------------------------- /static/img/etherjot9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/etherjot9.png -------------------------------------------------------------------------------- /static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/favicon.ico -------------------------------------------------------------------------------- /static/img/feed-upload.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/feed-upload.gif -------------------------------------------------------------------------------- /static/img/get-address.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/get-address.png -------------------------------------------------------------------------------- /static/img/identity-create.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/identity-create.gif -------------------------------------------------------------------------------- /static/img/learn-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /static/img/learn-light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /static/img/linkedin-header-b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/linkedin-header-b.png -------------------------------------------------------------------------------- /static/img/linkedin_header_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/linkedin_header_b.png -------------------------------------------------------------------------------- /static/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/logo.png -------------------------------------------------------------------------------- /static/img/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 30 | 51 | 55 | 59 | 62 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /static/img/node-types.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/node-types.png -------------------------------------------------------------------------------- /static/img/preview-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/preview-image.png -------------------------------------------------------------------------------- /static/img/sbzz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/sbzz.png -------------------------------------------------------------------------------- /static/img/sepolia-metamask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/sepolia-metamask.png -------------------------------------------------------------------------------- /static/img/staking-swarmscan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/staking-swarmscan.png -------------------------------------------------------------------------------- /static/img/stamp-buy.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/stamp-buy.gif -------------------------------------------------------------------------------- /static/img/stamps1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/stamps1.png -------------------------------------------------------------------------------- /static/img/stamps10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/stamps10.png -------------------------------------------------------------------------------- /static/img/stamps11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/stamps11.png -------------------------------------------------------------------------------- /static/img/stamps2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/stamps2.png -------------------------------------------------------------------------------- /static/img/stamps3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/stamps3.png -------------------------------------------------------------------------------- /static/img/stamps4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/stamps4.png -------------------------------------------------------------------------------- /static/img/stamps5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/stamps5.png -------------------------------------------------------------------------------- /static/img/stamps6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/stamps6.png -------------------------------------------------------------------------------- /static/img/stamps7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/stamps7.png -------------------------------------------------------------------------------- /static/img/stamps8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/stamps8.png -------------------------------------------------------------------------------- /static/img/stamps9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/stamps9.png -------------------------------------------------------------------------------- /static/img/swarm-desktop-account-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/swarm-desktop-account-tab.png -------------------------------------------------------------------------------- /static/img/swarm-desktop-files-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/swarm-desktop-files-tab.png -------------------------------------------------------------------------------- /static/img/swarm-desktop-info-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/swarm-desktop-info-tab.png -------------------------------------------------------------------------------- /static/img/swarm-desktop-settings-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/swarm-desktop-settings-tab.png -------------------------------------------------------------------------------- /static/img/swarm-desktop-status-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/swarm-desktop-status-tab.png -------------------------------------------------------------------------------- /static/img/swarm-desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/swarm-desktop.png -------------------------------------------------------------------------------- /static/img/swarm-logo-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | Swarm Logo 1 ○_3 10 | 11 | 12 | 13 | 14 | 15 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /static/img/swarm-logo.svg: -------------------------------------------------------------------------------- 1 | swarm-logo -------------------------------------------------------------------------------- /static/img/upload-a-website1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/upload-a-website1.gif -------------------------------------------------------------------------------- /static/img/upload-a-website2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/upload-a-website2.gif -------------------------------------------------------------------------------- /static/img/upload-a-website3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/upload-a-website3.gif -------------------------------------------------------------------------------- /static/img/upload-a-website4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/upload-a-website4.gif -------------------------------------------------------------------------------- /static/img/upload.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/upload.gif -------------------------------------------------------------------------------- /static/img/upload1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/upload1.png -------------------------------------------------------------------------------- /static/img/upload2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/upload2.png -------------------------------------------------------------------------------- /static/img/upload3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/upload3.png -------------------------------------------------------------------------------- /static/img/upload4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/upload4.png -------------------------------------------------------------------------------- /static/img/upload5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/upload5.png -------------------------------------------------------------------------------- /static/img/upload6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/img/upload6.png -------------------------------------------------------------------------------- /static/matomo.js: -------------------------------------------------------------------------------- 1 | var _paq = window._paq = window._paq || []; 2 | /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ 3 | _paq.push(['trackPageView']); 4 | _paq.push(['enableLinkTracking']); 5 | (function() { 6 | var u="https://mtm.swarm.foundation/"; 7 | _paq.push(['setTrackerUrl', u+'matomo.php']); 8 | _paq.push(['setSiteId', '16']); 9 | var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; 10 | g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); 11 | })(); 12 | -------------------------------------------------------------------------------- /static/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: -------------------------------------------------------------------------------- /static/swarm-whitepaper.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/swarm-whitepaper.pdf -------------------------------------------------------------------------------- /static/the-book-of-swarm-viktor-tron-v1.0-pre-release7.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/the-book-of-swarm-viktor-tron-v1.0-pre-release7.pdf -------------------------------------------------------------------------------- /static/the-book-of-swarm.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethersphere/bee-docs/8849400d502c0440010a473f3186cebf11540539/static/the-book-of-swarm.pdf --------------------------------------------------------------------------------