├── .github ├── CODEOWNERS └── workflows │ └── codeowners.yml ├── .gitignore ├── .vscode ├── extensions.json ├── markdown.code-snippets └── settings.json ├── README.md ├── babel.config.js ├── docs.iml ├── docs ├── build │ ├── api │ │ ├── get_offerings │ │ │ └── get_offerings.md │ │ ├── manage_vms │ │ │ └── manage_vms.md │ │ ├── order_vm │ │ │ └── order_vm.md │ │ └── overview.md │ ├── balance │ │ ├── assets │ │ │ ├── amount.webp │ │ │ ├── cancel.webp │ │ │ ├── cancel_res.webp │ │ │ ├── complete_payment.webp │ │ │ ├── payment_page.webp │ │ │ ├── return_to_payment.webp │ │ │ └── top_up_button.webp │ │ └── balance.md │ ├── manage_vm │ │ ├── assets │ │ │ ├── billing_history.webp │ │ │ ├── terminated_vms_filtered.png │ │ │ ├── terminated_vms_general.png │ │ │ ├── vm_info.webp │ │ │ └── vm_manage.webp │ │ ├── manage_vm.md │ │ └── provider_vm_termination.md │ ├── overview.md │ ├── registration │ │ ├── assets │ │ │ └── registration.webp │ │ └── registration.md │ ├── settings │ │ ├── assets │ │ │ ├── advanced_settings.webp │ │ │ ├── api_keys.webp │ │ │ └── ssh_keys.webp │ │ └── settings.md │ └── vm_rent │ │ ├── assets │ │ ├── configuration.webp │ │ ├── location.webp │ │ ├── os_image.webp │ │ ├── ports.webp │ │ ├── public_ip.webp │ │ ├── server_type.webp │ │ ├── ssh.webp │ │ ├── storage.webp │ │ ├── summary.webp │ │ └── vm_name.webp │ │ └── vm_rent.md └── stake │ ├── assets │ └── staking_user_flow.png │ ├── bridge_guide │ ├── assets │ │ ├── blockscout_success_deposit.png │ │ ├── blockscout_withdraw_info.png │ │ ├── bridge_allow_spending.png │ │ ├── bridge_app_view.png │ │ ├── bridge_view_deposit_main.png │ │ ├── claimed_withdraw_view.png │ │ ├── confirm_withdrawal_claim.png │ │ ├── deposit_show_added_tokens.png │ │ ├── success_deposit_window.png │ │ ├── success_withdrawal_message.png │ │ ├── view_withdraw_history.png │ │ ├── wallet_initiate_bridging.png │ │ ├── withdraw_confirm_in_wallet.png │ │ └── withdraw_history_wrong_network.png │ └── bridge_guide.md │ ├── nft_guide │ ├── assets │ │ ├── collection_main_view.png │ │ ├── confirm_nft_transfer.png │ │ ├── confirm_purchase_view.png │ │ ├── confirm_sell_nft_wallet.png │ │ ├── for_sale_view.png │ │ ├── main_page_view.png │ │ ├── my_nfts_page.png │ │ ├── nft_approve_collection_wallet.png │ │ ├── nft_card_approve_collection.png │ │ ├── nft_card_for_purchase.png │ │ ├── nft_card_for_transfer_view.png │ │ ├── nft_delist_button.png │ │ └── owned_nft_card_view.png │ └── nft_guide.md │ ├── overview.md │ ├── staking_app_guide │ ├── assets │ │ ├── app_view_main.png │ │ ├── available_cc_card_extended.png │ │ ├── available_for_staking_collapsed_cards.png │ │ ├── available_for_staking_view.png │ │ ├── card_for_withdraw_view.png │ │ ├── cc_rewards_panel.png │ │ ├── cc_status_panel.png │ │ ├── panel_all_rewards_withdrawn.png │ │ ├── stake_button_active.png │ │ ├── stake_button_nft.png │ │ ├── stake_button_reserved.png │ │ ├── stake_button_unauth.png │ │ ├── stake_confirm_depo_app_view.png │ │ ├── stake_confirmed_depo_view.png │ │ ├── stake_sign_tx.png │ │ ├── stake_view_of_card_for_staking.png │ │ ├── staked_cc_card_extended.png │ │ ├── staked_cc_section_view.png │ │ ├── withdr_rew_all_confirm_app.png │ │ ├── withdr_rew_all_confirm_wallet.png │ │ ├── withdr_rew_all_success.png │ │ ├── withdraw_collateral_card_after_view.png │ │ ├── withdraw_collateral_cc_card_view.png │ │ ├── withdraw_collateral_confirm.png │ │ ├── withdraw_collateral_success.png │ │ ├── withdraw_rew_card_confirm_in_app.png │ │ ├── withdraw_rew_card_confirm_in_wallet.png │ │ ├── withdraw_rew_one_cards_success.png │ │ └── withdraw_rew_panel_view.png │ └── staking_app_guide.md │ └── wallets_guide │ ├── assets │ ├── fluence_on_chainlist_view.png │ ├── mainnet_page_view.png │ ├── mm_add_fluence_from_chainlist.png │ ├── mm_import_tokens.png │ ├── mm_mobile_add_network.PNG │ ├── mm_mobile_wallet_view.png │ ├── mm_settings_networks_list.png │ ├── mm_switch_network_fluence_chainlist.png │ ├── staking_app_choose_account_mm.png │ ├── staking_app_connected.png │ ├── staking_app_connected_wallet_details.png │ ├── staking_app_not_connected.png │ ├── staking_app_switch_network_mm.png │ ├── staking_app_wc.png │ ├── staking_app_window_choose_wallets.png │ ├── usdc_blockscout_add_auto.png │ └── usdc_import_tokens_mm.png │ └── wallets_guide.md ├── docusaurus.config.ts ├── package-lock.json ├── package.json ├── sidebars.js ├── src ├── css │ └── custom.scss ├── pages │ ├── index.module.scss │ └── index.tsx └── types.d.ts ├── static ├── .nojekyll └── img │ ├── favicon.ico │ └── logo_badge_black.svg ├── tsconfig.json └── vercel.json /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # about codeowners 2 | # https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners 3 | 4 | # default owner is Artem since he setup up docusaurus 5 | * @shamsartem 6 | 7 | .github/** @nahsi 8 | 9 | docs/stake/** @justchillinghere 10 | docs/build/** @Fedor4096 11 | -------------------------------------------------------------------------------- /.github/workflows/codeowners.yml: -------------------------------------------------------------------------------- 1 | name: codeowners 2 | 3 | on: 4 | pull_request: 5 | paths: 6 | - ".github/workflows/codeowners.yml" 7 | - ".github/CODEOWNERS" 8 | 9 | concurrency: 10 | group: "${{ github.workflow }}-${{ github.ref }}" 11 | cancel-in-progress: true 12 | 13 | jobs: 14 | validate: 15 | name: Validate CODEOWNERS 16 | runs-on: ubuntu-latest 17 | steps: 18 | - name: Checkout 19 | uses: actions/checkout@v4 20 | 21 | - name: Validate CODEOWNERS file 22 | uses: mszostok/codeowners-validator@v0.7.4 23 | with: 24 | checks: "files,owners,duppatterns,syntax" 25 | github_access_token: ${{ secrets.FLUENCEBOT_RELEASE_PLEASE_PAT }} 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Dependencies 2 | /node_modules 3 | 4 | # Production 5 | /build 6 | # Generated files 7 | .docusaurus 8 | .cache-loader 9 | .idea 10 | 11 | # Misc 12 | .DS_Store 13 | .env.local 14 | .env.development.local 15 | .env.test.local 16 | .env.production.local 17 | 18 | npm-debug.log* 19 | yarn-debug.log* 20 | yarn-error.log* 21 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "streetsidesoftware.code-spell-checker", 4 | "blackmist.LinkCheckMD" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /.vscode/markdown.code-snippets: -------------------------------------------------------------------------------- 1 | { 2 | "Tabs imports": { 3 | "prefix": "import-tabs", 4 | "body": [ 5 | "import Tabs from \"@theme/Tabs\";", 6 | "import TabItem from \"@theme/TabItem\";" 7 | ], 8 | "description": "Import tabs" 9 | }, 10 | "Tabs": { 11 | "prefix": "tabs", 12 | "body": [ 13 | "", 14 | "", 15 | "", 16 | "", 17 | "", 18 | "", 19 | "", 20 | "", 21 | "", 22 | "", 23 | "", 24 | "", 25 | ] 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cSpell.words": [ 3 | "acks", 4 | "appendable", 5 | "builtins", 6 | "bytearray", 7 | "canonicalization", 8 | "canonicalized", 9 | "codomain", 10 | "commoditized", 11 | "composability", 12 | "concat", 13 | "contravariance", 14 | "CRDT", 15 | "ctypes", 16 | "deallocate", 17 | "dockerized", 18 | "EVM", 19 | "featureful", 20 | "fldist", 21 | "fluence", 22 | "fluencelabs", 23 | "ftype", 24 | "gibibyte", 25 | "hostless", 26 | "incentivized", 27 | "instanceof", 28 | "ipfs", 29 | "kademlia", 30 | "kibibyte", 31 | "kibibytes", 32 | "koderhq", 33 | "kras", 34 | "libp2p", 35 | "mebibyte", 36 | "microservices", 37 | "MITM", 38 | "mrepl", 39 | "mtype", 40 | "multiaddr", 41 | "multiaddress", 42 | "multiaddresses", 43 | "overridable", 44 | "pebibyte", 45 | "permisisonless", 46 | "permissioned", 47 | "permissioning", 48 | "permissionless", 49 | "PITM", 50 | "pluggable", 51 | "preopened", 52 | "println", 53 | "pseudocode", 54 | "quickstart", 55 | "roundtrips", 56 | "runtimes", 57 | "rustup", 58 | "sandboxed", 59 | "specificator", 60 | "specificators", 61 | "struct", 62 | "structs", 63 | "subnetworks", 64 | "tebibyte", 65 | "Tendermint", 66 | "tetraplet", 67 | "tetraplets", 68 | "toolchains", 69 | "usize", 70 | "wasi", 71 | "wasmer" 72 | ], 73 | "cSpell.ignoreRegExpList": ["/dns4/[a-zA-Z0-9/\\-\\.]*", "12d[a-zA-Z0-9]*"], 74 | "markdown.updateLinksOnFileMove.enabled": "always", 75 | "markdown.validate.enabled": true, 76 | "markdown.validate.fileLinks.enabled": "error", 77 | "markdown.validate.fileLinks.markdownFragmentLinks": "error", 78 | "markdown.validate.fragmentLinks.enabled": "error", 79 | "markdown.validate.referenceLinks.enabled": "error", 80 | "cSpell.language": "en,en-US" 81 | } 82 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Fluence Docs 2 | 3 | Fluence Docs are built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator. 4 | 5 | ## Contributing 6 | 7 | - Generally docs hierarchy should be reflected in the file hierarchy, but ultimately the docs tree must be set up inside `sidebars.js` file. If you put a markdown file inside a directory - don't ever name it `index.md` - use the same name as the directory itself instead (e.g. [basic-concepts.md](./docs/stake/bridge_guide/bridge_guide.md)) 8 | - Currently the index page is redirected to `/docs/learn/overview`. This is because we don't have a design of what's best to place on the index page. The redirect is configured in the `vercel.json` file 9 | - Avoid adding a lot of images. Images are added using `![short description of an image](./path-to-an-image.png)` syntax. If you have to add an image - please put it inside the directory near the doc where it is used. Check out [basic-concepts.md](./docs/stake/bridge_guide/bridge_guide.md). Please use .png or even better - svg for diagrams and .jpg for photos, resize the image as small as you are comfortable and compress it using [tinypng.com](https://tinypng.com/) (or [svgomg](https://jakearchibald.github.io/svgomg/) for .svg). 10 | - When adding ANY github links please use [permalinks](https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/creating-a-permanent-link-to-a-code-snippet) - otherwise links will point to the wrong place eventually. I also added new experimental markdown related settings to .vscode/settings.json which help a lot with writing valid markdown. Also [this vscode extension](https://marketplace.visualstudio.com/items?itemName=blackmist.LinkCheckMD) can help you find broken external links as well 11 | - Please at least use spell checker inside your editor or maybe Grammarly and be attentive when writing docs - they are the face of the company in a sense 12 | - Use \`\`\`sh for something that you intend to type in a shell. Maybe don't put \$ signs and execution results right inside \`\`\`sh code-blocks for the following reasons: \$ signs and commands output mixed with all of it make it harder to copy and use the code from the docs and also some of the commands output will be changed by us and will have to be maintained in the docs as well which is very inconvenient. 13 | - Headings are not just a stylistic tool but also semantic one. Headings are used to give document a structure which is especially important for page navigation for certain people and also for generating valid quick navigation tree that is displayed on the right side of the docs. So basically the main rule is to not skip heading levels (e.g. don't do #Heading followed immediately by ###Heading - use ##Heading instead) 14 | 15 | ## Installation 16 | 17 | ```sh 18 | npm i 19 | ``` 20 | 21 | ## Local Development 22 | 23 | ```sh 24 | npm run dev 25 | ``` 26 | 27 | This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. 28 | 29 | ## Build 30 | 31 | ```sh 32 | npm run build 33 | ``` 34 | 35 | This command generates static content into the `build` directory and can be served using any static contents hosting service. 36 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [require.resolve('@docusaurus/core/lib/babel/preset')], 3 | }; 4 | -------------------------------------------------------------------------------- /docs.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /docs/build/api/get_offerings/get_offerings.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 2 3 | --- 4 | 5 | # Find compute resources on the marketplace 6 | 7 | The Fluence compute marketplace is a decentralized platform where you can find and rent compute resources from various providers worldwide. Each provider has offers with different geographies, configurations, and prices. The marketplace API helps you discover resources that meet your specific requirements. 8 | 9 | In this document, you'll learn: 10 | 11 | 1. The core concepts of the Fluence Marketplace 12 | 2. How to search for available compute offers 13 | 3. How to filter resources based on your requirements 14 | 4. How to estimate the cost of your deployment 15 | 16 | ## The core concepts 17 | 18 | Before exploring the Fluence Marketplace, let’s define five key terms: 19 | 20 | | Term | Description | 21 | | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 22 | | **Offer** | An on-chain listing from a provider that includes one or more compute Peers with identical specifications, located in the same datacenter, available at a set price. | 23 | | **Compute Peer** | A physical server that is referenced in an Offer. Each Peer has its own hardware resources and is the actual machine that will run your workloads. | 24 | | **Resource** | A distinct resource on a peer: vCPU, RAM, storage, or public IP. | 25 | | **Hardware specification** | Metadata that describes a resource (such as CPU architecture, memory generation, storage medium, etc.). | 26 | | **Epoch** | A time period used for billing purposes. Currently, the billing interval is set to 24 hours. All marketplace prices are quoted in USDC per epoch. | 27 | 28 | ### Attributes of a compute peer 29 | 30 | 1. **Hardware resources** – Each peer has it's own set of hardware resources and capacity. 31 | 2. **Hardware specifications** – Detailed metadata lets you target exactly the hardware you need (e.g. `manufacturer: "AMD"`, `storage.type: "NVMe"`). 32 | 3. **Price per epoch** – Cost depends on the hardware specification; more powerful peers cost more per 24-hour epoch. 33 | 4. **Location** – All peers in a single offer are located in the same datacenter. 34 | 5. **Availability** – Peers differ in how many VMs (of a given basic configuration) they can still host and how much additional resource (such as extra storage) remains unallocated. 35 | 36 | Once you've found suitable offers that match your requirements for CPU, RAM, storage, and location, you can proceed to deploy virtual machines on these peers. The marketplace API helps you first discover and evaluate options before committing to deployment. 37 | 38 | :::tip 39 | You can skip the exploration step and simply declare your VM deployment requirements, then the Marketplace algorithms will automatically match you with the best available Offer. For this, proceed to [Deploy virtual machines](../order_vm/order_vm.md) section. 40 | ::: 41 | 42 | ## Search for available offers 43 | 44 | The marketplace offers a powerful API endpoint that allows you to search for available compute resources with specific filters. Without filters, you will receive all compute providers' offers available on the marketplace. By applying different filters, you can find offers that match your specific requirements. To get the Marketplace offers, send a `POST` request to the following endpoint with a JSON body containing your filters: 45 | 46 | ```bash 47 | https://api.fluence.dev/marketplace/offers 48 | ``` 49 | 50 | ### Request parameters 51 | 52 | You can use the request body to filter offers based on your specific requirements. All filters are optional and in case you do not want to apply any filters, send an empty object `{}` in the body. 53 | 54 | **Example of a request body with all filters applied:** 55 | 56 | ```json 57 | { 58 | "basicConfiguration": "cpu-8-ram-16gb-storage-25gb", 59 | "additionalResources": { 60 | "storage": [ 61 | { 62 | "supply": 4, 63 | "units": "GiB", 64 | "type": "NVMe" 65 | } 66 | ] 67 | }, 68 | "hardware": { 69 | "cpu": [ 70 | { 71 | "manufacturer": "AMD", 72 | "architecture": "Zen" 73 | } 74 | ], 75 | "memory": [ 76 | { 77 | "type": "DDR", 78 | "generation": "5" 79 | } 80 | ], 81 | "storage": [ 82 | { 83 | "type": "NVMe" 84 | } 85 | ] 86 | }, 87 | "datacenter": { 88 | "countries": ["FR"] 89 | }, 90 | "maxTotalPricePerEpochUsd": "12.57426" 91 | } 92 | ``` 93 | 94 | Let's break down the request body parameters and their usage 95 | 96 | #### Basic configuration 97 | 98 | The `basicConfiguration` parameter allows you to specify a standardized resource profile using a predefined string format. This format follows the pattern `cpu-{cores}-ram-{memory}gb-storage-{size}gb`, where: 99 | 100 | - `{cores}` represents the number of vCPU cores 101 | - `{memory}` represents the RAM amount in GB 102 | - `{size}` represents the storage capacity in GB 103 | 104 | To get the list with names of all available basic configurations on the marketplace, you can use specific endpoint. Read more about it in the [Available Basic VM Configurations](#available-basic-vm-configurations) section. 105 | 106 | **Example:** 107 | 108 | ```json 109 | { 110 | "basicConfiguration": "cpu-8-ram-16gb-storage-25gb" 111 | } 112 | ``` 113 | 114 | #### Hardware specifications constraints 115 | 116 | If you need specific CPU architecture or storage type, you can filter based on hardware requirements. To get the list of all available hardware specifications on the marketplace, you can use specific endpoint, read more about it in the [Available Hardware Specifications](#available-hardware-specifications) section. 117 | 118 | - **`hardware`** 119 | 120 | - Specific hardware requirements for the compute resources. 121 | - Fields: 122 | - `cpu` 123 | - `manufacturer` : CPU manufacturer (e.g., `"AMD"`, `"Intel (R)"`) 124 | - `architecture` : CPU architecture (e.g., `"Zen"`, `"ICE LAKE"`) 125 | - `memory` 126 | - `type` : Memory type (e.g., `"DDR"`) 127 | - `generation` : Memory generation (e.g., `"4"`, `"5"`) 128 | - `storage` 129 | - `type` : Storage type - one of: `"HDD"`, `"SSD"`, or `"NVMe"` 130 | 131 | **Example:** 132 | 133 | ```json 134 | { 135 | "hardware": { 136 | "cpu": [ 137 | { 138 | "manufacturer": "AMD", 139 | "architecture": "Zen" 140 | } 141 | ], 142 | "memory": [ 143 | { 144 | "type": "DDR", 145 | "generation": "4" 146 | } 147 | ], 148 | "storage": [ 149 | { 150 | "type": "NVMe" 151 | } 152 | ] 153 | } 154 | } 155 | ``` 156 | 157 | #### Datacenter constraints 158 | 159 | API allows you to filter datacenters by country. To get the list of all available countries on the marketplace, you can use specific endpoint, read more about it in the [Available Datacenter Countries](#available-datacenter-countries) section. 160 | 161 | - **`datacenter`** 162 | 163 | - Geographic constraints for the compute resources. 164 | - Fields: 165 | - `countries`: An array of ISO country codes where you want your resources to be located (e.g., `["US", "PL"]` for United States and Poland). The filter works as an OR condition - offerings from any of the specified countries will be included in the results. 166 | 167 | **Example:** 168 | 169 | ```json 170 | { 171 | "datacenter": { 172 | "countries": ["US", "PL"] 173 | } 174 | } 175 | ``` 176 | 177 | #### Additional resources 178 | 179 | Additional resources are hardware resources that you can request beyond the basic configuration. You can specify them to find offers with sufficient extra capacity. Currently, only additional `storage` is supported. 180 | 181 | :::info 182 | Currently, `additionalResources` can be used only along with `hardware.storage` filter. 183 | ::: 184 | 185 | - **`additionalResources`** 186 | 187 | - Additional resources you need beyond the basic configuration. 188 | - Fields: 189 | - `storage` 190 | - `type` : Type of storage - one of: `"HDD"`, `"SSD"`, or `"NVMe"` 191 | - `units`: Units of measurement - currently only `"GiB"` (Gibibytes) is supported 192 | - `supply` : Required storage volume size in the specified units 193 | 194 | **Example:** 195 | 196 | ```json 197 | { 198 | "additionalResources": { 199 | "storage": [ 200 | { 201 | "supply": 20, 202 | "units": "GiB", 203 | "type": "NVMe" 204 | } 205 | ] 206 | } 207 | } 208 | ``` 209 | 210 | #### Maximum price per epoch constraint 211 | 212 | You can apply a filter for the max price per epoch (24 hours) in USDC that you're willing to pay for the resources you specify. 213 | 214 | - **`maxTotalPricePerEpochUsd`** - Expressed as a string to handle decimal precision (e.g. `"12.5"`) 215 | 216 | **Example:** 217 | 218 | ```json 219 | { 220 | "maxTotalPricePerEpochUsd": "12.5" 221 | } 222 | ``` 223 | 224 | ## Response structure 225 | 226 | When you send a request to `/marketplace/offers`, you'll receive a response containing an array of offers that match your criteria. Each non-empty offer represents a configuration available from a specific provider in a particular data center. The array consists of objects, with each object representing an offer from a provider for a specific basic configuration. _If no offers match your criteria, the response will contain an empty list._ 227 | 228 | :::note 229 | To view all available basic configurations, use the endpoint described in the [Available Basic VM Configurations](#available-basic-vm-configurations) section. 230 | ::: 231 | 232 | **General structure of the response for a single object:** 233 | 234 | ```json 235 | [ 236 | { 237 | "configuration": { 238 | "slug": string, 239 | "price": string 240 | }, 241 | "resources": [ 242 | { 243 | "type": string, 244 | "metadata": {...}, 245 | "price": string 246 | } 247 | ], 248 | "datacenter": { 249 | "countryCode": string, 250 | "cityCode": string, 251 | "cityIndex": number, 252 | "tier": number, 253 | "certifications": [string] 254 | }, 255 | "servers": [ 256 | { 257 | "availableBasicInstances": number, 258 | "additionalResources": [ 259 | { 260 | "supply": number, 261 | "perVmLimit": number | null, 262 | "type": string, 263 | "metadata": {...}, 264 | "price": string 265 | } 266 | ] 267 | } 268 | ], 269 | "maxAdditionalSupply": [ 270 | { 271 | "supply": number, 272 | "perVmLimit": number | null, 273 | } 274 | ] 275 | }, 276 | // More offers with different configurations and prices 277 | ] 278 | ``` 279 | 280 | Let's break down the key components of the response: 281 | 282 | ### Response fields of a single offering object 283 | 284 | #### Configuration 285 | 286 | The `configuration` object represents the basic configuration of the offer. It includes: 287 | 288 | - **`slug`**: The basic configuration identifier. Read more about basic configurations in the [Available Basic VM Configurations](#available-basic-vm-configurations) section. 289 | - **`price`**: Price for the quoted configuration (in USDC per epoch) 290 | 291 | **Example:** 292 | 293 | ```json 294 | { 295 | "configuration": { 296 | "slug": "cpu-2-ram-4gb-storage-25gb", 297 | "price": "0.30698" 298 | } 299 | } 300 | ``` 301 | 302 | #### Resources 303 | 304 | The `resources` array shows the resources that will be allocated to the VM, if matched to this offer. 305 | 306 | Each resource element in the array includes: 307 | 308 | - `type`: Resource type, can be one of the following: `VCPU`, `RAM`, `STORAGE`, `PUBLIC_IP` 309 | - `metadata`: Its type-specific metadata. You can find more details about the metadata for each hardware resource type in the [Available Hardware Specifications](#available-hardware-specifications) section. 310 | - `price`: The price for this resource per epoch 311 | 312 | **Example:** 313 | 314 | ```json 315 | { 316 | "resources": [ 317 | { 318 | "type": "VCPU", 319 | "metadata": { 320 | "manufacturer": "AMD", 321 | "brand": "EPYC", 322 | "architecture": "Zen", 323 | "generation": "2" 324 | }, 325 | "price": "0.005" 326 | }, 327 | { 328 | "type": "RAM", 329 | "metadata": { 330 | "type": "DDR", 331 | "generation": "4" 332 | }, 333 | "price": "0.002" 334 | } 335 | // Other resources (STORAGE, PUBLIC_IP) 336 | ] 337 | } 338 | ``` 339 | 340 | This example object contains the configuration, and associated pricing, for the basic configuration used in [the previous example](#configuration). 341 | 342 | #### Datacenter 343 | 344 | The `datacenter` object provides information about the geo-location of the compute resources as well as the datacenter certifications, e.g., SOC2, ISO27001, etc.. 345 | 346 | Each `datacenter` object includes fields: 347 | 348 | - **`countryCode`**: ISO country code 349 | - **`cityCode`**: LOCODE code for the city 350 | - **`cityIndex`**: Index if multiple datacenters exist in the same city 351 | - **`tier`**: Datacenter tier level (1-4, with 4 identifying data centers with the highest reliability rating) 352 | - **`certifications`**: Array of compliance certifications this datacenter holds 353 | 354 | **Example:** 355 | 356 | ```json 357 | { 358 | "datacenter": { 359 | "countryCode": "PL", 360 | "cityCode": "POZ", 361 | "cityIndex": 1, 362 | "tier": 4, 363 | "certifications": ["ISO 27001:2022", "SOC2", "PCI DSS"] 364 | } 365 | } 366 | ``` 367 | 368 | #### Servers 369 | 370 | The `servers` array provides information about the actual physical machines available to host your workloads that are available in an offer. Each element in this array represents a distinct physical server in the provider's infrastructure. 371 | 372 | Each `server` object includes: 373 | 374 | - **`availableBasicInstances`**: Number of instances with the basic configuration of the object that can be created on this set of resources 375 | - **`additionalResources`**: Extra resources this specific server can provide beyond the basic configuration. 376 | - `type`: Resource type (currently only `STORAGE` is supported) 377 | - `metadata`: Its type-specific metadata. You can find more details about the metadata for each hardware resource type in the [Available Hardware Specifications](#available-hardware-specifications) section. 378 | - `price`: Cost per unit of this resource per epoch (24 hours) 379 | - `supply`: Total amount of a resource available on the server. 380 | - `units`: Units of measurement (currently only `GiB` is supported) 381 | - `perVmLimit`: Limit for the amount of this resource that can be allocated to a single VM, set by the Protocol. 382 | 383 | **Example:** 384 | 385 | ```json 386 | { 387 | "servers": [ 388 | { 389 | "availableBasicInstances": 5, 390 | "additionalResources": [ 391 | { 392 | "type": "STORAGE", 393 | "metadata": { 394 | "type": "NVMe" 395 | }, 396 | "price": "0.00001", 397 | "supply": 100, 398 | "units": "GiB", 399 | "perVmLimit": 200 400 | } 401 | ] 402 | } 403 | // Other servers 404 | ] 405 | } 406 | ``` 407 | 408 | #### Maximum Additional Supply Available Per VM 409 | 410 | The `maxAdditionalSupply` array provides information about the maximum amount of additional resources you can purchase in addition to a VM with the basic configuration. 411 | Each element in this array represents a distinct resource type and has the following fields: 412 | 413 | - **`supply`**: Total available quantity of this resource type. 414 | - **`perVmLimit`**: Maximum amount of this resource that can be allocated to a single VM, set by the Protocol. 415 | - **`type`**: Resource type (currently only `STORAGE` is supported) 416 | - **`metadata`**: Resource-specific details 417 | - **`price`**: Cost per unit of this resource 418 | 419 | ```json 420 | { 421 | "maxAdditionalSupply": [ 422 | { 423 | "type": "STORAGE", 424 | "metadata": { 425 | "type": "NVMe" 426 | }, 427 | "price": "0.00001", 428 | "supply": 100, 429 | "units": "GiB", 430 | "perVmLimit": 200 431 | } 432 | ] 433 | } 434 | ``` 435 | 436 | ## Discovering Filter Parameters 437 | 438 | The Fluence Marketplace API provides several endpoints to help you discover valid values for filter parameters. These endpoints allow you to see what options are available for basic configurations, countries, and hardware specifications. 439 | 440 | ### Available Basic VM Configurations 441 | 442 | To retrieve all available basic configurations, send a `GET` request to the following endpoint: 443 | 444 | ```bash 445 | https://api.fluence.dev/marketplace/basic_configurations 446 | ``` 447 | 448 | The response will return all available basic configurations in the marketplace without specification of concrete hardware. The `basicConfiguration` parameter allows you to specify a standardized resource profile using a predefined string format. This format follows the pattern `cpu-{cores}-ram-{memory}gb-storage-{size}gb`, where: 449 | 450 | - `{cores}` represents the number of vCPU cores 451 | - `{memory}` represents the RAM amount in GB 452 | - `{size}` represents the storage capacity in GB 453 | 454 | #### Response 455 | 456 | The response returns an array of strings with names of all available basic configurations. 457 | 458 | For example: 459 | 460 | ```json 461 | [ 462 | "cpu-2-ram-4gb-storage-25gb", 463 | "cpu-4-ram-8gb-storage-25gb", 464 | "cpu-8-ram-16gb-storage-25gb" 465 | // Other basic configurations 466 | ] 467 | ``` 468 | 469 | ### Available Datacenter Countries 470 | 471 | To retrieve all available countries that have datacenters with available offers in the marketplace, send a `GET` request to the following endpoint: 472 | 473 | ```bash 474 | https://api.fluence.dev/marketplace/countries 475 | ``` 476 | 477 | The response returns all available countries ISO codes that have datacenters with available offers in the marketplace. 478 | 479 | For example: 480 | 481 | ```json 482 | ["DE", "FR", "GB", "LT", "PL", "US"] 483 | ``` 484 | 485 | Use these ISO country codes in the `datacenter.countries` array of your [search parameters](#search-for-available-offers) to filter results and show only offers from specific geographic locations. 486 | 487 | ### Available Hardware Specifications 488 | 489 | To retrieve all available hardware specifications on the marketplace, send a `GET` request to the following endpoint: 490 | 491 | ```bash 492 | https://api.fluence.dev/marketplace/hardware 493 | ``` 494 | 495 | The response returns all hardware specifications available across all providers in the marketplace. The response is an object with arrays of hardware specifications for each resource type. 496 | 497 | For example: 498 | 499 | ```json 500 | { 501 | "cpu": [ 502 | { 503 | "manufacturer": "AMD", 504 | "architecture": "Zen" 505 | }, 506 | { 507 | "manufacturer": "Intel (R)", 508 | "architecture": "ICE LAKE" 509 | } 510 | // More CPU options 511 | ], 512 | "memory": [ 513 | { 514 | "type": "DDR", 515 | "generation": "5" 516 | }, 517 | { 518 | "type": "DDR", 519 | "generation": "4" 520 | } 521 | ], 522 | "storage": [ 523 | { 524 | "type": "SSD" 525 | }, 526 | { 527 | "type": "NVMe" 528 | } 529 | ] 530 | } 531 | ``` 532 | 533 | Use these values in the `hardware` section of your [search parameters](#search-for-available-offers): 534 | 535 | - **CPU specifications**: Use `architecture` and `manufacturer` values to specify CPU requirements 536 | - **Memory specifications**: Use `type` and `generation` values to filter by RAM type 537 | - **Storage types**: Use the `type` value to filter by storage technology (`HDD`, `SSD`, or `NVMe`) 538 | 539 | For example, if you need high-performance storage, you might filter for offers with `NVMe` storage based on the values returned by this endpoint. 540 | 541 | ## Estimate price for a deployment 542 | 543 | Before committing to a deployment, you'll often want to know how much it will cost. The `/vms/v3/estimate` endpoint allows you to calculate the expected price for your deployment based on your configuration requirements and the number of instances you plan to deploy. 544 | 545 | ```bash 546 | POST /vms/v3/estimate 547 | ``` 548 | 549 | ### Request parameters 550 | 551 | The request body follows a similar structure to the `/marketplace/offers` endpoint, with the addition of an `instances` field to specify how many VMs you want to deploy. 552 | 553 | **Example of a request body with all filters specified:** 554 | 555 | ```json 556 | { 557 | "constraints": { 558 | "basicConfiguration": "cpu-2-ram-4gb-storage-25gb", 559 | "additionalResources": { 560 | "storage": [ 561 | { 562 | "type": "NVMe", 563 | "supply": 20, 564 | "units": "GiB" 565 | } 566 | ] 567 | }, 568 | "hardware": { 569 | "cpu": [ 570 | { 571 | "manufacturer": "AMD" 572 | } 573 | ], 574 | "storage": [ 575 | { 576 | "type": "NVMe" 577 | } 578 | ] 579 | }, 580 | "datacenter": { 581 | "countries": ["PL"] 582 | }, 583 | "maxTotalPricePerEpochUsd": "1.2" 584 | }, 585 | "instances": 3 586 | } 587 | ``` 588 | 589 | - **`constraints`**: Contains all your requirements for the deployment, identical to the filters used in the `/marketplace/offers` endpoint. 590 | 591 | - **`basicConfiguration`**: The predefined VM configuration you want (e.g., `"cpu-2-ram-4gb-storage-25gb"`) 592 | - **`additionalResources`**: Extra resources you need beyond the basic configuration 593 | - **`hardware`**: Specific hardware requirements (CPU manufacturer, storage type, etc.) 594 | - **`datacenter`**: Geographic constraints for your deployment 595 | - **`maxTotalPricePerEpochUsd`**: Maximum price per epoch (24 hours) you're willing to pay 596 | 597 | - **`instances`**: The number of VMs you want to deploy with this configuration 598 | 599 | ### Response structure 600 | 601 | The endpoint returns detailed pricing estimation for your proposed deployment. Example of a successful response: 602 | 603 | ```json 604 | { 605 | "depositAmountUsdc": "7.01532", // totalPricePerEpoch * depositEpochs 606 | "depositEpochs": 2, 607 | "totalPricePerEpoch": "3.50766", // total price for all instances per epoch 608 | "maxPricePerEpoch": "0.35793", // max price for a single instance per epoch 609 | "instances": 10 // number of instances 610 | } 611 | ``` 612 | 613 | In case no offers are found to satisfy the constraints, the endpoint will return an 422 error response with a message: 614 | 615 | ```json 616 | { 617 | "error": "Not enough offers found" 618 | } 619 | ``` 620 | 621 | #### Response fields 622 | 623 | - **`depositAmountUsdc`**: The total deposit amount required in USDC. This is calculated as `totalPricePerEpoch` × `depositEpochs`. 624 | - **`depositEpochs`**: The number of epochs (days) for which the deposit is calculated. This represents the initial commitment period. 625 | - **`instances`**: The number of VM instances you requested in your estimate. 626 | - **`maxPricePerEpoch`**: The maximum price per epoch (24 hours) for a single instance of your configuration. 627 | - **`totalPricePerEpoch`**: The total price per epoch for all instances combined. 628 | 629 | ## The next steps 630 | 631 | The Fluence compute marketplace API provides a powerful and flexible way to find and compare compute resources from various providers across the globe. By using the filtering capabilities and understanding the response structure, you can quickly find resources that match your specific requirements including price, location, and hardware specifications. 632 | 633 | In the next [section](../order_vm/order_vm.md), we'll cover how to use your selected offer to create and manage deployments on the Fluence platform. 634 | -------------------------------------------------------------------------------- /docs/build/api/manage_vms/manage_vms.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 3 3 | --- 4 | 5 | # Manage your deployments 6 | 7 | After deploying virtual machines on the Fluence marketplace, you can monitor and manage them throughout their lifecycle. This guide explains how to view your active VMs, understand their status, and perform management operations like deletion when needed. 8 | 9 | In this guide, you'll learn how to: 10 | 11 | 1. View your active VMs 12 | 2. Understand VM status and resource details 13 | 3. Delete VMs when they are no longer needed 14 | 15 | ## View your active VMs 16 | 17 | To view all your currently active virtual machines, use the following API endpoint: 18 | 19 | ```bash 20 | GET https://api.fluence.dev/vms/v3 21 | ``` 22 | 23 | ### Response structure 24 | 25 | The response contains an array of VM objects, each representing a virtual machine you have deployed. Each VM object includes detailed information about its configuration, status, and the resources allocated to it. 26 | 27 | **Example of a VM object in the response:** 28 | 29 | ```json 30 | { 31 | "id": "0x311edB209b61EaA8c3e67c6B96D03288DB5Bc020", 32 | "vmName": "vm-name", 33 | "status": "Active", 34 | "pricePerEpoch": "2.4352", 35 | "resources": [ 36 | { 37 | "type": "VCPU", 38 | "quantity": 2, 39 | "details": { 40 | "model": "7702p" 41 | }, 42 | "metadata": { 43 | "architecture": "Zen", 44 | "brand": "EPYC", 45 | "generation": "2", 46 | "manufacturer": "AMD" 47 | } 48 | }, 49 | { 50 | "type": "RAM", 51 | "supply": 4, 52 | "units": "GiB", 53 | "details": { 54 | "manufacturer": "Samsung", 55 | "model": "DGX", 56 | "speed": 3600 57 | }, 58 | "metadata": { 59 | "generation": "4", 60 | "type": "DDR" 61 | } 62 | }, 63 | { 64 | "type": "STORAGE", 65 | "supply": 25, 66 | "units": "GiB", 67 | "details": { 68 | "manufacturer": "WD", 69 | "sequentialWriteSpeed": 15000 70 | }, 71 | "metadata": { 72 | "type": "SSD" 73 | } 74 | }, 75 | { 76 | "type": "PUBLIC_IP", 77 | "quantity": 1, 78 | "details": {}, 79 | "metadata": { 80 | "version": "4" 81 | } 82 | } 83 | ], 84 | "createdAt": "2025-04-30T11:23:05Z", 85 | "nextBillingAt": "2025-04-30T11:55:09Z", 86 | "osImage": "https://cloud-images.ubuntu.com/releases/22.04/release/ubuntu-22.04-server-cloudimg-amd64.img", 87 | "datacenter": { 88 | "countryCode": "FR", 89 | "cityCode": "PAR", 90 | "cityIndex": 1, 91 | "tier": 4, 92 | "certifications": ["PCI DSS", "ISO 9001:2015", "ISO/IEC 27001:2022"] 93 | }, 94 | "publicIp": "154.42.3.159", 95 | "ports": [ 96 | { 97 | "port": 22, 98 | "protocol": "tcp" 99 | } 100 | ], 101 | "reservedBalance": "2.4352", 102 | "totalSpent": "2.4352" 103 | } 104 | ``` 105 | 106 | Let's break down the key components of each VM object: 107 | 108 | #### Basic VM information 109 | 110 | - **`id`**: The unique identifier for the VM on the Fluence network 111 | - **`vmName`**: The name you assigned to the VM when creating it 112 | - **`status`**: Current operational status of the VM. Statuses: 113 | - `Launching`: The VM is being launched and does not yet has a public IP address to accept connections 114 | - `Active`: The VM is running and operational 115 | - `SmallBalance`: VM does not have enough funds to pay for the next billing period 116 | - `InsufficientFunds`: VM balance is 0 117 | - `Terminated`: VM was terminated by the provider. The VM is inaccessible, and your workload is no longer running. For detailed information, please see the dedicated section on [Handling Provider-Terminated VMs](../../manage_vm/provider_vm_termination.md). 118 | - `Stopped`: VM was ended by user 119 | - **`pricePerEpoch`**: The cost of the VM per epoch (24 hours) in USDC (with 6 decimals) 120 | - **`createdAt`**: Timestamp indicating when the VM was created 121 | - **`nextBillingAt`**: Timestamp indicating when the next billing cycle will start 122 | - **`osImage`**: URL of the operating system image used for the VM 123 | - **`publicIp`**: The public IP address assigned to your VM. If a VM is not active, the `publicIp` field will be `null`. 124 | - **`reservedBalance`**: The amount of USDC (with 6 decimals) currently reserved for this VM's operation 125 | - **`totalSpent`**: The total amount of USDC (with 6 decimals) spent on this VM since creation 126 | 127 | #### Datacenter information 128 | 129 | The `datacenter` object provides detailed information about where your VM is physically hosted: 130 | 131 | ```json 132 | "datacenter": { 133 | "countryCode": "FR", 134 | "cityCode": "PAR", 135 | "cityIndex": 1, 136 | "tier": 4, 137 | "certifications": ["PCI DSS", "ISO 9001:2015", "ISO/IEC 27001:2022"] 138 | } 139 | ``` 140 | 141 | - **`id`**: Unique identifier for the datacenter 142 | - **`countryCode`**: ISO country code where the datacenter is located 143 | - **`cityCode`**: LOCODE code for the city 144 | - **`cityIndex`**: Index if multiple datacenters exist in the same city 145 | - **`tier`**: Datacenter tier level (1-4, with 4 being highest reliability) 146 | - **`certifications`**: Array of compliance certifications this datacenter holds 147 | 148 | #### Network configuration 149 | 150 | The **`ports`** array indicates which network ports are open on your VM. Each open port is represented by an object with the following fields: 151 | 152 | - `port`: The port number that is open 153 | - `protocol`: The network protocol for this port (e.g., "tcp", "udp") 154 | 155 | ```json 156 | "ports": [ 157 | { 158 | "port": 22, 159 | "protocol": "tcp" 160 | } 161 | ] 162 | ``` 163 | 164 | Open ports are essential for accessing services running on your VM. For example, port 22 is typically used for SSH access. 165 | 166 | #### Resources 167 | 168 | The **`resources`** array contains detailed information about all resources allocated to your VM. Each resource is represented by an object with the following fields: 169 | 170 | - `type`: The type of resource, which can be one of: 171 | - `VCPU`: Virtual CPU cores 172 | - `RAM`: Memory in MB 173 | - `STORAGE`: Disk space in MB 174 | - `PUBLIC_IP`: Public IP address 175 | - `quantity`: The amount of this resource allocated to the VM (units depend on the resource type) 176 | - `metadata`: Categorization and descriptive information about the resource. Corresponds to hardware resource characteristics from [Available Hardware Specifications](../get_offerings/get_offerings.md#available-hardware-specifications) 177 | - `details`: Additional technical specifications about the resource. This field is optional for compute providers and may be empty or contain arbitrary data. 178 | 179 | ## Update VM ports and name 180 | 181 | Fluence allows you to update certain VM properties after deployment, including the VM name and the network ports that are open to external connections. 182 | 183 | In this section, you'll learn how to: 184 | 185 | 1. Update your VM's name 186 | 2. Manage open network ports to control access to your services 187 | 188 | ### Request parameters 189 | 190 | To update your VM's configuration, use the following API endpoint: 191 | 192 | ```bash 193 | PATCH https://api.fluence.dev/vms/v3 194 | ``` 195 | 196 | This endpoint allows you to change the following properties: 197 | 198 | - The VM's display name 199 | - The network ports that are open on the VM 200 | 201 | Here's how to structure your request to update a VM: 202 | 203 | ```json 204 | { 205 | "updates": [ 206 | { 207 | "id": "0x730eB2c518c881AEB05299DDf38ca546F3513a93", 208 | "vmName": "new-vm-name", 209 | "openPorts": [ 210 | { 211 | "port": 22, 212 | "protocol": "tcp" 213 | }, 214 | { 215 | "port": 9000, 216 | "protocol": "tcp" 217 | } 218 | ] 219 | } 220 | ] 221 | } 222 | ``` 223 | 224 | - **`id`**: (Required) The unique identifier of the VM you want to modify 225 | - **`vmName`**: (Optional) A new name for your VM to help with organization and identification 226 | - **`openPorts`**: (Optional) An array of port objects that define which network ports should be open on the VM 227 | 228 | ### Managing open ports 229 | 230 | When updating the `openPorts` array, there are a few important things to understand: 231 | 232 | 1. When specifying `openPorts`, you must include **ALL** ports that should be open, not just new ones. Any ports not included in your update request will be closed. 233 | 2. Currently, port 10250 is reserved for service purposes and will be available for exposure in upcoming releases. 234 | 235 | For example, if your VM currently has port 5050 (TCP) open and you want to add port 9000 (TCP) for a web application, your `openPorts` array should include both: 236 | 237 | ```json 238 | "openPorts": [ 239 | { 240 | "port": 5050, 241 | "protocol": "tcp" 242 | }, 243 | { 244 | "port": 9000, 245 | "protocol": "tcp" 246 | } 247 | ] 248 | ``` 249 | 250 | If you were to only include port 9000 in your request, port 5050 would be closed, potentially locking you out of your VM. 251 | 252 | ### Example scenarios 253 | 254 | #### Scenario 1: Renaming a VM 255 | 256 | If you want to rename a VM without changing its port configuration: 257 | 258 | ```json 259 | { 260 | "id": "0x730eB2c518c881AEB05299DDf38ca546F3513a93", 261 | "vmName": "new-vm-name" 262 | } 263 | ``` 264 | 265 | #### Scenario 2: Opening Additional Ports 266 | 267 | If your VM has port 5050 open and you want to also open ports 80 and 443 for web traffic: 268 | 269 | ```json 270 | { 271 | "id": "0x730eB2c518c881AEB05299DDf38ca546F3513a93", 272 | "openPorts": [ 273 | { 274 | "port": 5050, 275 | "protocol": "tcp" 276 | }, 277 | { 278 | "port": 80, 279 | "protocol": "tcp" 280 | }, 281 | { 282 | "port": 443, 283 | "protocol": "tcp" 284 | } 285 | ] 286 | } 287 | ``` 288 | 289 | #### Scenario 3: Updating both name and ports 290 | 291 | You can update both properties in a single request: 292 | 293 | ```json 294 | { 295 | "id": "0x730eB2c518c881AEB05299DDf38ca546F3513a93", 296 | "vmName": "new-vm-name", 297 | "openPorts": [ 298 | { 299 | "port": 5050, 300 | "protocol": "tcp" 301 | }, 302 | { 303 | "port": 80, 304 | "protocol": "tcp" 305 | }, 306 | { 307 | "port": 443, 308 | "protocol": "tcp" 309 | } 310 | ] 311 | } 312 | ``` 313 | 314 | ### Response 315 | 316 | A successful update request will return a 204 status code. The changes will take effect immediately, and you'll see the updated configuration when you next retrieve your VM details. 317 | 318 | ## Delete your VM 319 | 320 | When you no longer need a VM, you can delete it to release the resources and stop incurring charges. To delete a VM, use the following API endpoint: 321 | 322 | ```bash 323 | DELETE https://api.fluence.dev/vms/v3 324 | ``` 325 | 326 | ### Request parameters 327 | 328 | You can delete one or multiple VMs at once by specifying their IDs in the request body: 329 | 330 | ```json 331 | { 332 | "vmIds": [ 333 | "0x311edB209b61EaA8c3e67c6B96D03288DB5Bc020", 334 | "0x79F7D3F8c1A2D7B4A890a1B5cE3EfCd8D6E7F8a9" 335 | ] 336 | } 337 | ``` 338 | 339 | Where: 340 | 341 | - **`vmIds`**: An array of unique identifiers of the VMs you want to delete (from the list of your active VMs) 342 | 343 | A successful deletion request will return a 200 status code. The VMs will be marked for deletion and will no longer appear in your list of active VMs once the deletion process is complete. 344 | 345 | :::info 346 | You will be billed for the resources for each epoch of utilization. This means that if an epoch changes at 5:55 PM UTC and you delete the VM at 6:00 PM UTC, you will be charged for work in epoch started at 5:55 PM UTC as well. 347 | ::: 348 | 349 | ## Manage SSH keys 350 | 351 | Fluence allows you to manage your SSH keys, which can be automatically deployed to your VMs. 352 | 353 | In this section, you'll learn how to: 354 | 355 | 1. List your registered SSH keys 356 | 2. Add new SSH keys to your account 357 | 3. Remove SSH keys when they're no longer needed 358 | 359 | :::warning 360 | Without any SSH keys registered, you won't be able to access your VMs. Please ensure you have at least one SSH key registered before creating a VM. 361 | ::: 362 | 363 | ### List SSH keys 364 | 365 | To view all SSH keys registered in your account, use the following API endpoint: 366 | 367 | ```bash 368 | GET https://api.fluence.dev/ssh_keys 369 | ``` 370 | 371 | This endpoint returns an array of SSH key objects representing all the keys you've registered. 372 | 373 | **Example response:** 374 | 375 | ```json 376 | [ 377 | { 378 | "name": "name-ed25519", 379 | "fingerprint": "SHA256:fingerprint", 380 | "algorithm": "ssh-ed25519", 381 | "comment": "comment", 382 | "publicKey": "ssh-ed25519 key", 383 | "active": true, 384 | "createdAt": "+002025-03-28T16:26:38.808750000Z" 385 | } 386 | ] 387 | ``` 388 | 389 | #### Response fields 390 | 391 | Each SSH key object includes the following information: 392 | 393 | - **`active`**: Indicates whether the key is currently active and can be used 394 | - **`algorithm`**: The cryptographic algorithm used for the key (e.g., `ssh-ed25519`, `ssh-rsa`) 395 | - **`comment`**: A comment included with the key, often indicating the user and machine that created it 396 | - **`createdAt`**: Timestamp when the key was added to your account 397 | - **`fingerprint`**: A unique identifier for the key, used when deleting keys 398 | - **`name`**: The friendly name you assigned to the key 399 | - **`publicKey`**: The full public key string 400 | 401 | ### Add an SSH key 402 | 403 | To add a new SSH key to your account, use the following API endpoint: 404 | 405 | ```bash 406 | POST https://api.fluence.dev/ssh_keys 407 | ``` 408 | 409 | #### Request parameters 410 | 411 | ```json 412 | { 413 | "name": "my-key", 414 | "publicKey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKgJIjnDg1DjqOOxINs78oU3f7PJXIyq9uiNocNVhXNx user@example.com" 415 | } 416 | ``` 417 | 418 | - **`name`**: A friendly name for identifying this key in your account 419 | - **`publicKey`**: The full SSH public key string, which typically includes the algorithm, the key itself, and optionally a comment 420 | 421 | :::tip 422 | Read how to [generate SSH keys](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) if you don't have them yet. 423 | ::: 424 | 425 | #### Response fields 426 | 427 | If the key already exists in your account, the endpoint returns a 200 status code with the existing key details: 428 | 429 | ```json 430 | [ 431 | { 432 | "active": true, 433 | "algorithm": "ssh-ed25519", 434 | "comment": "user@example.com", 435 | "createdAt": "+002025-03-01T00:00:000000000Z", 436 | "fingerprint": "SHA256:sINcLA/hlKG0nDpE9n233xEnXAgSISxq0/nVWbbx5A4", 437 | "name": "my-key", 438 | "public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKgJIjnDg1DjqOOxINs78oU3f7PJXIyq9uiNocNVhXNx user@example.com" 439 | } 440 | ] 441 | ``` 442 | 443 | If a new key is created, the endpoint returns a 201 status code with the newly created key details in the same format. 444 | 445 | ### Delete an SSH key 446 | 447 | When you no longer need an SSH key, you can remove it from your account using the following API endpoint: 448 | 449 | ```bash 450 | DELETE https://api.fluence.dev/ssh_keys 451 | ``` 452 | 453 | #### Request parameters 454 | 455 | To delete a key, specify its unique fingerprint in the request body: 456 | 457 | ```json 458 | { 459 | "fingerprint": "SHA256:sINcLA/hlKG0nDpE9n233xEnXAgSISxq0/nVWbbx5A4" 460 | } 461 | ``` 462 | 463 | - **`fingerprint`**: The unique fingerprint of the SSH key you want to delete 464 | 465 | A successful deletion request will return a 200 status code. 466 | -------------------------------------------------------------------------------- /docs/build/api/order_vm/order_vm.md: -------------------------------------------------------------------------------- 1 | # Deploy virtual machines 2 | 3 | After [finding available compute resources](../get_offerings/get_offerings.md) that match your requirements, the next step is to deploy your virtual machines (VMs). This guide walks you through the process of ordering and deploying VMs on the Fluence marketplace. 4 | 5 | In this guide, you'll learn how to: 6 | 7 | 1. Prepare your deployment configuration 8 | 2. Specify VM requirements and settings 9 | 3. Submit your VM deployment request 10 | 4. Understand the deployment response 11 | 12 | ## Create a VM deployment 13 | 14 | To deploy VMs on the Fluence marketplace, send a `POST` request to the following endpoint: 15 | 16 | ```bash 17 | https://api.fluence.dev/vms/v3 18 | ``` 19 | 20 | ### Request parameters 21 | 22 | Your deployment request has three key components: 23 | 24 | 1. **Resource constraints (optional)** - Constraints on the compute resources, location, and price if you have any specific requirements. For options that are not constrained, the system will automatically select the best available option for you. You can read more about filtering options in the ["Find compute resources on the marketplace"](../get_offerings/get_offerings.md) guide. 25 | 2. **Number of instances** - Number of VMs to deploy. 26 | 3. **VM configuration** - Settings for your VM deployment. 27 | 28 | **An example request body:** 29 | 30 | ```json 31 | { 32 | "constraints": { 33 | "basicConfiguration": "cpu-4-ram-8gb-storage-25gb", 34 | "additionalResources": { 35 | "storage": [ 36 | { 37 | "type": "NVMe", 38 | "supply": 20, 39 | "units": "GiB" 40 | } 41 | ] 42 | }, 43 | "hardware": null, 44 | "datacenter": null, 45 | "maxTotalPricePerEpochUsd": "1.5" 46 | }, 47 | "instances": 2, 48 | "vmConfiguration": { 49 | "name": "web-server", 50 | "openPorts": [ 51 | { 52 | "port": 80, 53 | "protocol": "tcp" 54 | }, 55 | { 56 | "port": 443, 57 | "protocol": "tcp" 58 | } 59 | ], 60 | "hostname": "my-vm", 61 | "osImage": "https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img", 62 | "sshKeys": ["ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCxV4JJjOCRCnPkvf9h..."] 63 | } 64 | } 65 | ``` 66 | 67 | Let's break down each component in detail: 68 | 69 | #### Resource constraints (optional) 70 | 71 | The `constraints` object specifies the compute resources you need for your VMs if you have any specific requirements. This field is optional. This uses the same parameters you learned about in the [Find compute resources on the marketplace](../get_offerings/get_offerings.md) guide: 72 | 73 | Fields: 74 | 75 | - **`basicConfiguration`**: A predefined resource profile. If no basic configuration is chosen, the system will automatically select the smallest available option. Read more about basic configurations in the [Basic Configurations section](../get_offerings/get_offerings.md#basic-configuration). 76 | - **`additionalResources`**: Extra resources beyond the basic configuration. Read more about additional resources in the [Additional Resources section](../get_offerings/get_offerings.md#additional-resources). 77 | :::warning 78 | Currently, `additionalResources` can be used only along with `hardware.storage` filter. 79 | ::: 80 | - **`hardware`**: Specific hardware requirements like CPU manufacturer or storage type. Read more about hardware specifications in the [Hardware Specifications section](../get_offerings/get_offerings.md#hardware-specifications-constraints). If you use this field, you must use all the fields of the added hardware type. 81 | - **`datacenter`**: Geographic constraints for your deployment. Read more about datacenter constraints in the [Datacenter Countries section](../get_offerings/get_offerings.md#datacenter-constraints). 82 | - **`maxTotalPricePerEpochUsd`**: Maximum price you're willing to pay per VM per epoch (24 hours). If no max price is chosen, the system will automatically select the cheapest available option. Read more about max price constraint in the [Maximum Price Per Epoch section](../get_offerings/get_offerings.md#maximum-price-per-epoch-constraint). 83 | 84 | :::info 85 | You only need to include the constraints that matter to you. For example, if you only care about the basic configuration and price, you can omit the other fields or set them to `null`. 86 | ::: 87 | 88 | #### Number of instances 89 | 90 | The `instances` field is straightforward - it specifies how many identical VMs you want to deploy: 91 | 92 | **Example:** 93 | 94 | ```json 95 | "instances": 2 96 | ``` 97 | 98 | This will create two VMs with identical configurations. 99 | 100 | #### VM configuration 101 | 102 | The `vmConfiguration` object defines the deployment details for your VMs: 103 | 104 | ```json 105 | "vmConfiguration": { 106 | "name": "my-vm", 107 | "openPorts": [ 108 | { 109 | "port": 80, 110 | "protocol": "tcp" 111 | }, 112 | { 113 | "port": 443, 114 | "protocol": "tcp" 115 | } 116 | ], 117 | "hostname": "my-vm", 118 | "osImage": "https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img", 119 | "sshKeys": [ 120 | "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCxV4JJjOCR..." 121 | ] 122 | } 123 | ``` 124 | 125 | - **`name`** : A human-readable name for your VM(s). Can contain only alphanumeric characters and hyphens. 126 | 127 | - **`openPorts`** : An array of port configurations that should be accessible from the internet: 128 | 129 | - `port`: The port number to open 130 | - `protocol`: The protocol for this port (either `tcp`, `udp`) 131 | 132 | :::warning 133 | Currently, port 10250 is reserved for service purposes and will be available for exposure in upcoming releases. 134 | ::: 135 | 136 | - **`hostname`**: The hostname for your VM(s) that will be shown in the VM console when you connect to it. If not specified, the hostname will be the same as the `name` field. 137 | 138 | - **`osImage`**: The URL for the OS image to use for your VM. Supported image formats are: 139 | 140 | - `.qcow2` 141 | - `.img` 142 | - `.raw` 143 | - `.raw.xz` 144 | - `.raw.gz` 145 | - `.img.xz` 146 | - `.img.gz` 147 | 148 | - **`sshKeys`**: An array of public SSH keys that will be authorized to access your VMs. These keys allow you to securely connect to your VMs via SSH. Read how to [generate SSH keys](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) if you don't have them yet. **Important:** Ensure that you add only your public SSH keys (usually with a `.pub` extension). Keep your private keys secure at all times. 149 | 150 | :::info 151 | By default, only 22 port (TCP) is open for SSH access. You must explicitly specify which ports you want to open for your application. 152 | ::: 153 | 154 | ### Response structure 155 | 156 | #### Successful response 157 | 158 | When you submit your deployment request, the API will respond with an array of objects, one for each VM being deployed: 159 | 160 | ```json 161 | [ 162 | { 163 | "vmId": "0xCbfC94101AE30f212790B6Da340fD071B5eee86D", 164 | "vmName": "my-vm" 165 | }, 166 | { 167 | "vmId": "0x79F7D3F8c1A2D7B4A890a1B5cE3EfCd8D6E7F8a9", 168 | "vmName": "my-vm" 169 | } 170 | ] 171 | ``` 172 | 173 | Each object in the response contains these important identifiers: 174 | 175 | - **`vmId`**: The unique identifier for your VM. 176 | - **`vmName`**: The name you assigned to the VM. 177 | 178 | Save these identifiers as they are essential for managing your deployment later. 179 | 180 | #### Error response 181 | 182 | In case if not enough offers match your requirements or no matching offers are found, you will receive an error response with 422 status code and an error message: 183 | 184 | - If there are no matching offers at all: 185 | 186 | ```json 187 | { 188 | "error": "No suitable offer found" 189 | } 190 | ``` 191 | 192 | - If not enough offers are found: 193 | 194 | ```json 195 | { 196 | "error": "Not enough offers found" 197 | } 198 | ``` 199 | 200 | :::info 201 | Please note payment for VMs occurs every day at **`5:55 PM UTC`** and is currently only possible for full days regardless of the rental start time. Thus, if you rent a VM at `5:45 PM UTC`, you will pay for a **FULL** day for the ten minutes of use. At `5:55 PM UTC`, the next full payment is due. This limitation is expected to be remedied in the very near future. 202 | ::: 203 | 204 | ## Get default OS images 205 | 206 | To list the urls of the available OS images, use the following endpoint: 207 | 208 | ```bash 209 | GET https://api.fluence.dev/vms/v3/default_images 210 | ``` 211 | 212 | ### Response structure 213 | 214 | The response contains an array available OS images. Use `downloadUrl` in your [deployment request](./order_vm.md#request-parameters) to specify one of the OS images available from Fluence. 215 | 216 | Example of a successful response: 217 | 218 | ```json 219 | [ 220 | { 221 | "id": "df6e9992f8694635a67baafadf5a1905", 222 | "name": "22.04 (LTS) x64", 223 | "distribution": "Ubuntu", 224 | "slug": "ubuntu-22-04-x64", 225 | "downloadUrl": "https://cloud-images.ubuntu.com/releases/22.04/release/ubuntu-22.04-server-cloudimg-amd64.img", 226 | "username": "ubuntu", 227 | "createdAt": "2025-05-06T14:29:39.382562Z", 228 | "updatedAt": "2025-05-06T14:29:39.382562Z" 229 | }, 230 | ... 231 | ] 232 | ``` 233 | 234 | ### Practical workflow 235 | 236 | Let's walk through a typical workflow for deploying VMs on the Fluence marketplace: 237 | 238 | 1. **Define your requirements**: 239 | 240 | - Determine the size and number of VMs you need 241 | - Decide which ports need to be accessible 242 | - Prepare your SSH public keys 243 | - Prepare your OS image download URL 244 | 245 | 2. **Create your deployment request**: 246 | 247 | - Specify your basic configuration and constraints 248 | - Get the url for the OS image from the [Get default OS images](#get-default-os-images) endpoint optional, you can use your own OS image) 249 | - Configure VM settings (name, ports, OS image download URL) 250 | - Add your SSH keys for secure access 251 | 252 | 3. **Submit your deployment**: 253 | 254 | ```bash 255 | curl -X POST https://api.fluence.dev/vms/v3 \ 256 | -H "Content-Type: application/json" \ 257 | -H "Authorization: Bearer $API_KEY" \ 258 | -d '{ 259 | "constraints": { 260 | "basicConfiguration": "cpu-4-ram-8gb-storage-25gb", 261 | "maxTotalPricePerEpochUsd": "1.5" 262 | }, 263 | "instances": 1, 264 | "vmConfiguration": { 265 | "name": "my-vm", 266 | "hostname": "my-vm", 267 | "openPorts": [ 268 | { 269 | "port": 8080, 270 | "protocol": "tcp" 271 | } 272 | ], 273 | "osImage": "https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img", 274 | "sshKeys": [ 275 | "ssh-rsa AAAAB3NzaC1yc2EAAA..." 276 | ] 277 | } 278 | }' 279 | ``` 280 | 281 | 4. **Connect to your VM**: 282 | Launching the VM will take a few minutes. Once the VM is launched, you can connect to it using SSH with the private key corresponding to your public key. To get the public IP address for the ssh connection, use the API, described in the nextsecion [Manage VMs](../manage_vms/manage_vms.md), or visit the Fluence Console[described here](../../manage_vm/manage_vm.md). 283 | 284 | ## Next steps 285 | 286 | After deploying your VMs, you might want to: 287 | 288 | 1. **View your deployments**: Get the list of your deployed VMs and their statuses 289 | 2. **Delete your deployments**: Terminate instances when no longer needed 290 | 291 | In the next guide, we'll cover how to [manage your running VMs](../manage_vms/manage_vms.md). 292 | -------------------------------------------------------------------------------- /docs/build/api/overview.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_position: 1 3 | --- 4 | 5 | # Introduction to the Fluence API 6 | 7 | The Fluence API provides programmatic access to the decentralized Fluence compute marketplace. With API you can find, rent, and manage compute resources without using the web interface. This document will help you understand how to integrate Fluence's decentralized compute capabilities into your applications and workflows. 8 | 9 | :::info 10 | All API endpoints are available at: 11 | 12 | ```bash 13 | https://api.fluence.dev/ 14 | ``` 15 | 16 | ::: 17 | 18 | ## API functionality 19 | 20 | The API enables you to: 21 | 22 | 1. **Search the marketplace** - Find compute resources matching specific requirements for CPU, memory, storage, location, and budget 23 | 2. **Deploy virtual machines** - Create and configure VMs with your choice of operating system and network settings 24 | 3. **Manage deployments** - View active VMs, modify their configuration, and remove them when no longer needed 25 | 4. **Manage SSH keys** - View, add, and remove your SSH public keys 26 | 27 | ## API requests 28 | 29 | ### Authentication 30 | 31 | All Fluence API endpoints require an API key sent as a Bearer token in the `Authorization` header. 32 | You can create and manage your keys in the [Fluence Console settings guide](../settings/settings.md). If you omit or supply an invalid key, you’ll get a 403 code error. 33 | 34 | ### Request and response format 35 | 36 | The Fluence API accepts and returns data in JSON format. When making POST requests, set the `Content-Type` header to `application/json`. 37 | 38 | #### Example request 39 | 40 | ```bash 41 | curl -i -X POST https://api.fluence.dev/marketplace/offers \ 42 | -H "Content-Type: application/json" \ 43 | -H "Authorization: Bearer " \ 44 | -d '{ 45 | "basicConfiguration": "cpu-4-ram-8gb-storage-25gb" 46 | }' 47 | ``` 48 | 49 | ### Response HTTP statuses 50 | 51 | Along with the HTTP methods that the API responds to, it will also return standard HTTP statuses, including error codes. 52 | 53 | - **Success:** If the status returned is in the 200 range, it indicates that the request was fulfilled successfully and that no error was encountered. 54 | - **Error:** In the event of a problem, the status will contain the error code: 55 | - **Client errors:** Return codes in the 400 range typically indicate that there was an issue with the request that was sent. For example, this could mean missing or invalid API key, that the object you are requesting does not exist, or that your request is malformed. 56 | - **Server errors:** If you receive a status in the 500 range, this generally indicates a server-side problem. This means that we are having an issue on our end and cannot fulfill your request currently. 57 | - **Error response body:** All 4xx/5xx responses return JSON with an `error` field with message providing additional information about the error. 58 | 59 | #### Example error response 60 | 61 | ```bash 62 | HTTP/1.1 403 Forbidden 63 | { 64 | "error": "Auth failed. No such API Key", 65 | } 66 | ``` 67 | 68 | ## Common API endpoints 69 | 70 | The API is organized around these main resource areas: 71 | 72 | | Endpoint | Description | 73 | | ---------------- | ------------------------------------------------------------------- | 74 | | `/marketplace/*` | Endpoints for searching and discovering available compute offerings | 75 | | `/vms/*` | Endpoints for deploying and managing virtual machines | 76 | | `/ssh_keys` | Endpoints for managing SSH keys | 77 | 78 | ## API documentation resources 79 | 80 | ### Swagger UI 81 | 82 | The Fluence API also provides an Swagger UI that allows you to explore and try the API endpoints directly in your browser: [https://api.fluence.dev/](https://api.fluence.dev/) 83 | 84 | ### API Reference 85 | 86 | The Fluence API also provides an API Reference that provides more technical details on how to use the API: [https://api.fluence.dev/docs](https://api.fluence.dev/docs) 87 | 88 | ## SSH keys and access to VMs 89 | 90 | To access your VMs, you need to have at least one SSH key registered. Please ensure you have at least one SSH key registered in your account before creating a VM. You can do it either via the [Account settings in Fluence Console](../settings/settings.md) or using the API endpoints described in the [Manage SSH keys](./manage_vms/manage_vms.md#manage-ssh-keys) guide. 91 | 92 | ## Next steps 93 | 94 | Now that you are familiar with the basics of the Fluence API, you can explore the following guides to learn more: 95 | 96 | 1. [Find compute resources on the Fluence marketplace](./get_offerings/get_offerings.md) - Learn how to search for and compare compute offerings that match your requirements 97 | 2. [Deploy virtual machines on the Fluence marketplace](./order_vm/order_vm.md) - Learn how to deploy and configure VMs 98 | 3. [Manage your virtual machines on Fluence](./manage_vms/manage_vms.md) - Learn how to view, monitor, and delete your VMs 99 | -------------------------------------------------------------------------------- /docs/build/balance/assets/amount.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/balance/assets/amount.webp -------------------------------------------------------------------------------- /docs/build/balance/assets/cancel.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/balance/assets/cancel.webp -------------------------------------------------------------------------------- /docs/build/balance/assets/cancel_res.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/balance/assets/cancel_res.webp -------------------------------------------------------------------------------- /docs/build/balance/assets/complete_payment.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/balance/assets/complete_payment.webp -------------------------------------------------------------------------------- /docs/build/balance/assets/payment_page.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/balance/assets/payment_page.webp -------------------------------------------------------------------------------- /docs/build/balance/assets/return_to_payment.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/balance/assets/return_to_payment.webp -------------------------------------------------------------------------------- /docs/build/balance/assets/top_up_button.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/balance/assets/top_up_button.webp -------------------------------------------------------------------------------- /docs/build/balance/balance.md: -------------------------------------------------------------------------------- 1 | # Payment And Balance Management 2 | 3 | In order to rent a VM from the Fluence marketplace, you need to provide funds to the marketplace which are used to pay for your rented resources. It is important to note that allocated funds are managed by smart contracts and based on your VM configuration and price, the smart contracts periodically charge the rent due to the compute provider. Throughout this document, we refer to the funds escrowed to these smart contracts as the Balance. 4 | 5 | 6 | The Fluence Console simplifies interacting with the blockchain by using [account abstraction](https://web3auth.io/docs/features/account-abstraction) to manage balances. As a result, topping up your balance is reflected as a transaction in the secure [Balance smart contract](https://blockscout.mainnet.fluence.dev/address/0xF0C308C622eeBA94aeEc2E3Fd67F34619f86761B) and not the Web3Auth wallet created during registration. Note that the Balance can only be used to rent resources from the Fluence network and that you cannot directly withdraw funds from the Balance contract. If a refund is required, please contact the Fluence team. 7 | 8 | :::info 9 | Fluence Console users **cannot** top up their Balance from the newly created Web3Auth or any other wallet you may own. This restriction is related to AML (Anti-Money Laundering) limitations. Instead, Fluence Console users need to go through whitelisted payment portals such as CopperX. 10 | ::: 11 | 12 | ## Topping up the Balance 13 | 14 | :::info 15 | Participants in the Alpha VM testing program receive 256 USDC in balance credits. This amount should easily get you through the testing period and it is doubtful that you will need to top up the Balance during the testing phase. 16 | ::: 17 | 18 | Currently, you fund your Balance using [CopperX](https://copperx.io/), which offers payment options for Ethereum (USDC) and Polygon (USDC.e). The Fluence Console integrates CopperX payment and event monitoring providing a seamless experience to establish payments to the Balance smark contracts. Once your CopperX payment is successfully executed, the Balance smart contract will reflect the transaction. 19 | 20 | To initiate a payment with CopperX, follow these steps: 21 | 22 | ### 1. Click the Top Up button 23 | 24 | Go to the **Billing page** and click the **“Top Up”** button. 25 | 26 | :::info 27 | You can check for pending payment sessions on the **Billing page**, in the **Payments History** section. Pending payment sessions have the status `Pending`. 28 | ::: 29 | ![top up button](./assets/top_up_button.webp) 30 | 31 | ### 2. Enter the amount you want to top up your Balance with 32 | 33 | :::info 34 | Currently, the minimum top up amount is **USDC 10.00**, while your total Balance amount cannot exceed **USDC 5000.00**. 35 | ::: 36 | ![enter amount](./assets/amount.webp) 37 | 38 | ### 3. Enter your details 39 | 40 | You will be redirected to the CopperX payment page. 41 | 42 | ![copperx payment page](./assets/payment_page.webp) 43 | 44 | #### Cancel payment 45 | :::info 46 | To cancel a payment, use the corresponding option in the CopperX interface. If a payment is not completed within 15 minutes, the payment will be automatically cancelled. 47 | ::: 48 | ![cancel payment](./assets/cancel.webp) 49 | ![cancel result](./assets/cancel_res.webp) 50 | 51 | :::info 52 | If you accidentally close the CopperX payment page, go back to the Fluence Console payment page. 53 | ::: 54 | ![return to payment page](./assets/return_to_payment.webp) 55 | 56 | ### 4. Choose one of the payment methods and complete the payment 57 | 58 | :::info 59 | If you encounter issues with the “Wallet” payment option, we recommend using the “Scan QR code” option. 60 | ::: 61 | ![complete payment](./assets/complete_payment.webp) 62 | 63 | ### 5. Return to the Fluence Console 64 | 65 | After a successful payment, you will be redirected back to the **Fluence Console** page. The payment will be in the `Pending` status for a bit. 66 | 67 | :::info 68 | You cannot have multiple `Pending` transactions. If you cannot complete a CopperX payment and don't want to wait 15 minutes, you need to [cancel to the payment](#cancel-payment). 69 | ::: 70 | 71 | ### 6. Wait for the "Completed" payment status 72 | 73 | Once the on-chain transactions are processed, the Balance smart contract will reflect your payment and the FLuence Console payment status updates to `Completed`. 74 | -------------------------------------------------------------------------------- /docs/build/manage_vm/assets/billing_history.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/manage_vm/assets/billing_history.webp -------------------------------------------------------------------------------- /docs/build/manage_vm/assets/terminated_vms_filtered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/manage_vm/assets/terminated_vms_filtered.png -------------------------------------------------------------------------------- /docs/build/manage_vm/assets/terminated_vms_general.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/manage_vm/assets/terminated_vms_general.png -------------------------------------------------------------------------------- /docs/build/manage_vm/assets/vm_info.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/manage_vm/assets/vm_info.webp -------------------------------------------------------------------------------- /docs/build/manage_vm/assets/vm_manage.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/manage_vm/assets/vm_manage.webp -------------------------------------------------------------------------------- /docs/build/manage_vm/manage_vm.md: -------------------------------------------------------------------------------- 1 | # CPU VM Info and Management 2 | 3 | After renting a VM, all the relevant information is accessible on the **Running Instances** page. 4 | 5 | ## VM Information 6 | 7 | For each VM, a corresponding card will appear on the **Running Instances** page, which can be expanded. More detailed information can be found in the `Hardware Specs` section. Note that extended server parameters are only visible if the specific infrastructure provider has provided the underlying information. 8 | 9 | ![VM information](./assets/vm_info.webp) 10 | 11 | The user can also see information about the next billing time (`Next billing time`) set at **5:55 PM UTC**. 12 | 13 | ## VM Management 14 | 15 | Currently, the only operation available to manage a (running) VM is `Terminate`, which terminates the VM and the rental agreement. The ability to Reboot, Reset and Rebuild from the Fluence Console will be added soon. 16 | 17 | ![VM management](./assets/vm_manage.webp) 18 | 19 | ## Billing History 20 | 21 | The history of your charges can be found on the **Billing page** in the **Billing History** section. 22 | 23 | ![Billing history](./assets/billing_history.webp) 24 | -------------------------------------------------------------------------------- /docs/build/manage_vm/provider_vm_termination.md: -------------------------------------------------------------------------------- 1 | # Handling Provider-Terminated VMs 2 | 3 | When a compute provider decides to terminate a VM that you are actively using, the VM is moved to "Terminated" status. 4 | Terminated VMs are no longer accessible, and data stored on the terminated VM is lost. 5 | It's important to note that even though a provider has terminated your VM, the VM's record will still appear in your list with its balance reserved. You need to perform a final step to remove this record, which releases the funds back to your main balance. This action is the same one you would take when willfully terminating a VM yourself. 6 | 7 | In this document, you'll learn: 8 | 9 | 1. Reasons for VM termination 10 | 2. Identification of terminated VMs 11 | 3. Finalization of VM termination in the Fluence Console (UI) or via the API 12 | 13 | ## Reasons for Termination 14 | 15 | The Fluence compute marketplace sources from established compute providers with high standards of security and reliability supported by high Tier 3 and 4 certifications. Termination is the last resort for providers when handling exceptions and usually are the result of a adverse user behavior such as: 16 | 17 | - Not paying for the VM (VM balance reached 0) 18 | - Violating the terms of service 19 | - Using the VM for illegal activities or running malicious workloads 20 | 21 | ## Identification of terminated VMs 22 | 23 | Currently, status updates about VM termination are only available in the Fluence Console (UI) on the "Running Instances" page or via the API when you request your active VM info using the [View your active VMs](../api/manage_vms/manage_vms.md#view-your-active-vms) endpoint. 24 | 25 | ### For Fluence Console (UI) Users 26 | 27 | **Banner Notification.** You will see an informational banner on the "Running Instances" page with the message: _"Certain virtual machines were stopped by the provider. View details"_. You can click the "View details" button on the banner to see the list of terminated VMs. 28 | 29 | **Status Display.** The VM will be clearly marked with a "Terminated" status. 30 | 31 | ![View of Running Instances page with a banner notification and a Terminated VM](./assets/terminated_vms_general.png) 32 | 33 | **Filtering.** You can use the status filter on the "Running Instances" page and select "Terminated" to view only these VMs. 34 | 35 | ![View of Running Instances page with a status filter](./assets/terminated_vms_filtered.png) 36 | 37 | ### For API Users 38 | 39 | - **Status Field**: In the response from the [View your active VMs](../api/manage_vms/manage_vms.md#view-your-active-vms) endpoint, the `status` field for the affected VM will be `"Terminated"`. 40 | - **Missing Information**: 41 | 42 | - The `publicIp` field will be `null`. 43 | - Location information within the `datacenter` object might be absent or marked as unavailable. 44 | 45 | Example snippet from the endpoint response for a terminated VM: 46 | 47 | ```json 48 | { 49 | "id": "0x68bd60079721AE2A04759d00Fc516148aCF479e4", 50 | "vmName": "apricot-wolf-5354", 51 | "status": "Terminated", 52 | "pricePerEpoch": "0.30697", 53 | "resources": [ 54 | ... 55 | ], 56 | "osImage": "...", 57 | "datacenter": null, 58 | "publicIp": null, 59 | "ports": [ 60 | { 61 | "port": 22, 62 | "protocol": "tcp" 63 | } 64 | ], 65 | "reservedBalance": ".30697", 66 | "totalSpent": "2.45576", 67 | "createdAt": "2025-05-07T16:20:43Z" 68 | } 69 | ``` 70 | 71 | ## Finalization of VM termination and reserved funds release 72 | 73 | After identifying VMs that have been terminated by a provider (as described in the section above), you'll need to finalize the termination to release the reserved funds: 74 | 75 | ### Fluence Console (UI) Users 76 | 77 | - Click "Terminate" on the VM with "Terminated" status to remove its record and release its reserved funds 78 | 79 | For details on this process, see the [VM Management section](./manage_vm.md#vm-management). 80 | 81 | ### API Users 82 | 83 | - Use the [Delete your VM](../api/manage_vms/manage_vms.md#delete-your-vm) endpoint with the `vmId` of the terminated VM to remove its record and release its reserved funds 84 | -------------------------------------------------------------------------------- /docs/build/overview.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Fluence Console** is the convenient way to rent and manage resources from the decentralized Fluence compute marketplace. It is a web-based application that allows you to control the complete lifecycle of your resources and services, including your payments and billing. 4 | 5 | ## Fluence Console UI Access 6 | 7 | :::info 8 | Access to Fluence Console is currently only available to participants of the Alpha VM testing program. 9 | ::: 10 | 11 | Access the Fluence Console: [console.fluence.network](https://console.fluence.network/) 12 | 13 | ## API Access 14 | 15 | In addition to the web interface, an API is available to programmatically: 16 | 17 | - Search for available compute resources on the marketplace 18 | - Deploy virtual machines with custom configurations 19 | - Manage active deployments 20 | 21 | The API is ideal for automation, integration with your existing workflows, or building custom tools on top of the Fluence platform. 22 | 23 | Learn more about using the API in our [API documentation](./api/overview.md). 24 | -------------------------------------------------------------------------------- /docs/build/registration/assets/registration.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/registration/assets/registration.webp -------------------------------------------------------------------------------- /docs/build/registration/registration.md: -------------------------------------------------------------------------------- 1 | # Registration 2 | 3 | ## Self-Custodial Wallet 4 | 5 | As a decentralized project, self-custody over your wallet is a critical requirement for you stay in control over your data and resources. Yet, managing crypto wallets not only comes with certain limitations and pitfalls but also decouple users from well-known processes when it comes to account registration and log-ins. 6 | 7 | To address these concerns while still providing you with the self-custodial powers, our registration and login system uses the [Web3Auth](https://web3auth.io/docs/how-web3auth-works) solution, which works as follows: after you register through **Fluence Console**, a unique (wallet) address is generated and only you have access to the private key. However, the private key is securely stored in parts on Web3Auth's [MPC](https://web3auth.io/docs/features/mpc) (Multi-Party Computation) network. As a result, you have a self-custodial wallet that eliminates catastrophic (loss) failures commonly encountered with traditional, self-managed and seed-based wallets. 8 | 9 | Of course, Fluence Console only has access to your wallet's public key. 10 | 11 | ## Registration Process 12 | 13 | :::warning 14 | Please note that during registration, you must use the email address you provided in your Alpha VM testing program application. 15 | ::: 16 | 17 | If you are using the Fluence Console for the first time, you need to register using one of the following methods: 18 | 1. [Email Passwordless Login](https://web3auth.io/docs/auth-provider-setup/social-providers/email-passwordless#helper-sdks-menu) 19 | 2. Google account 20 | 3. GitHub account 21 | 22 | :::warning 23 | If you register with the same email through Google and Email Passwordless, two different accounts will be created for you. 24 | ::: 25 | 26 | ![registration page](./assets/registration.webp) 27 | 28 | After successful registration, you have access to the Fluence Console. 29 | -------------------------------------------------------------------------------- /docs/build/settings/assets/advanced_settings.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/settings/assets/advanced_settings.webp -------------------------------------------------------------------------------- /docs/build/settings/assets/api_keys.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/settings/assets/api_keys.webp -------------------------------------------------------------------------------- /docs/build/settings/assets/ssh_keys.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/settings/assets/ssh_keys.webp -------------------------------------------------------------------------------- /docs/build/settings/settings.md: -------------------------------------------------------------------------------- 1 | # Fluence Console Settings 2 | 3 | Use the **Settings** page to manage your SSH and API keys and more. 4 | 5 | ## SSH Keys 6 | 7 | On the **SSH keys** page, you can: 8 | 1. Create a new key of any of the RSA, ECDSA or ED25519 format. 9 | 2. Delete existing keys. 10 | 11 | ![SSH keys page](./assets/ssh_keys.webp) 12 | 13 | ## API Keys 14 | 15 | Instead of using the **Fluence Console**, you can manage your resources also through our **Public API**. 16 | 17 | :::info 18 | In the first stage of the **Alpha VM testing**, you will not have access to the **Public API**. The Fluence team will notify you when this functionality becomes available. 19 | ::: 20 | 21 | On the API Keys page, users can: 22 | 1. Create a new API key. Currently, it is possible to specify `Permissions` and `Expiration time` separately. 23 | 2. Delete an API key. 24 | 25 | ![API keys page](./assets/api_keys.webp) 26 | 27 | ## Advanced Settings 28 | 29 | On the **Advanced Settings** page, users can get information about: 30 | 1. The **public address** of the wallet created through Web3Auth at the time of registration 31 | 2. The **address of the Balance smart contract** needed to track your Balance transactions 32 | 33 | ![Advanced settings page](./assets/advanced_settings.webp) 34 | -------------------------------------------------------------------------------- /docs/build/vm_rent/assets/configuration.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/vm_rent/assets/configuration.webp -------------------------------------------------------------------------------- /docs/build/vm_rent/assets/location.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/vm_rent/assets/location.webp -------------------------------------------------------------------------------- /docs/build/vm_rent/assets/os_image.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/vm_rent/assets/os_image.webp -------------------------------------------------------------------------------- /docs/build/vm_rent/assets/ports.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/vm_rent/assets/ports.webp -------------------------------------------------------------------------------- /docs/build/vm_rent/assets/public_ip.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/vm_rent/assets/public_ip.webp -------------------------------------------------------------------------------- /docs/build/vm_rent/assets/server_type.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/vm_rent/assets/server_type.webp -------------------------------------------------------------------------------- /docs/build/vm_rent/assets/ssh.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/vm_rent/assets/ssh.webp -------------------------------------------------------------------------------- /docs/build/vm_rent/assets/storage.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/vm_rent/assets/storage.webp -------------------------------------------------------------------------------- /docs/build/vm_rent/assets/summary.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/vm_rent/assets/summary.webp -------------------------------------------------------------------------------- /docs/build/vm_rent/assets/vm_name.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/build/vm_rent/assets/vm_name.webp -------------------------------------------------------------------------------- /docs/build/vm_rent/vm_rent.md: -------------------------------------------------------------------------------- 1 | # Renting a VM 2 | 3 | The Fluence marketplace is a decentralized broker of compute supply and demand governed by a set of smart contracts. To this end, the Fluence marketplace not only facilitates the renting process of VMs between you and the participating compute provider(s) but also the configuration and management of your VMs. 4 | 5 | Currently, there are a couple of limitations with respect renting VMs: 6 | 7 | 1. A VM can only be rented for a limited period of time. This limitation is due to the implementation specifics of the verification, i.e., capacity commitment, and security, i.e., staking, protocols. The exact maximum rental period for a VM can be seen in the Fluence Console. 8 | 9 | 2. When renting a VM, a prepayment amount equivalent to one day’s rent is deducted from your Balance to cover the next day’s rent. This amount is refunded to your Balance when the rental period ends, unless your available Balance amount is too low in which case the prepaid amount is used to cover that day's rent. You can check the amount of your Balance reserved as a “prepayment” on the **Billing** page in the Fluence Console. 10 | 11 | :::warning 12 | If your Balance does not have enough funds to pay for the next day's rent, the previously deducted prepayment will be used to cover the rent. After the reserved funds are exhausted and you fail to top up o Balance in time, the VM's rental agreement will be terminated and the VM will be automatically deleted. 13 | ::: 14 | 15 | ## Steps to Configure a VM 16 | 17 | The Fluence marketplace aggregates enterprise-grade compute resources from predominantly Tier-3 and Tier-4 data centers around the world. To rent a VM: 18 | 19 | ### 1. Choose a location 20 | 21 | Choose one of the available data center locations. 22 | 23 | ![choose location](./assets/location.webp) 24 | 25 | ### 2. Choose a configuration 26 | 27 | Choose your VM's configuration from the available options. Currently, compute resources can only be rented in multiples of a compute unit, which is 2 vCPUs and 4 GB of RAM. In the future, this limitation will be removed and compute resources can be added in a fine-grained manner for both vCPUs and RAM. 28 | 29 | ![choose configuration](./assets/configuration.webp) 30 | 31 | ### 3. Choose storage 32 | 33 | Choose the type and amount of storage desired. Currently, the minimum storage size for a VM is 25 GB. At this point, only DAS storage is available, which ensures better performance than shared network solutions, like NAS, but does not allow for dynamic resizing. 34 | 35 | ![choose storage](./assets/storage.webp) 36 | 37 | ### 4. Choose the server type 38 | 39 | Specify the server type for the VM. Since hardware within and across data centers may vary, pay close attention to the provided hardware specifications and price. Moreover, Fluence Console allows you to view a data center's geo location at the city level and other important details such as available certifications and you are encourage to utilize these resources. 40 | 41 | ![choose server type](./assets/server_type.webp) 42 | 43 | ### 5. Rent a Public IPv4 address 44 | 45 | Currently, you can only access yor VM via SSH over the public IPv4 allocated to the VM at instantiation. In the future, this requirement will be removed. 46 | 47 | ![rent public IPv4 address](./assets/public_ip.webp) 48 | 49 | You are now ready to configure your VM. 50 | 51 | ### 6. Specify the VM name 52 | 53 | Specify a **name for the VM**. Currently, the VM name must be unique within a your (user) account. 54 | 55 | ![specify VM name](./assets/vm_name.webp) 56 | 57 | ### 7. Specify the open ports 58 | 59 | By default, all ports except **port 22** are closed but you can assign up to 50 open ports for your VM and all open ports support **TCP** and **UDP**. 60 | 61 | ![specify ports](./assets/ports.webp) 62 | 63 | ### 8. Choose the OS image 64 | 65 | Choose the **OS image** for your VM. You can either choose a pre-defined OS image or provide a link to a **custom OS image**. Only use custom OS images available for download from a publicly accessible link and configured to run on remote instances. The Fluence team recommends choosing (custom) images with the `Generic Cloud` or `Cloud` tags. 66 | 67 | ![choose OS image](./assets/os_image.webp) 68 | 69 | ### 9. Provide the public SSH key 70 | 71 | Provide the public SSH key you want to use to connect to your VM. You need to provide at least one SSH key in either RSA, ECDSA or ED25519 format. 72 | 73 | ![provide SSH key](./assets/ssh.webp) 74 | 75 | ### 10. Review the summary 76 | 77 | After selecting all the VM parameters, check and review the instance summary and price in the Review section. 78 | 79 | ![review summary](./assets/summary.webp) 80 | 81 | ### 11. Launch the VM 82 | 83 | Click the “Launch” button to rent the VM after which you will be redirected to the **Running Instances** page. 84 | 85 | :::info 86 | Please note payment for VMs occurs every day at **`5:55 PM UTC`** and is currently only possible for full days regardless of the rental start time. Thus, if you rent a VM at `5:45 PM UTC`, you will pay for a **FULL** day for the ten minutes of use. At `5:55 PM UTC`, the next full payment is due. This limitation is expected to be remedied in the very near future. 87 | ::: 88 | -------------------------------------------------------------------------------- /docs/stake/assets/staking_user_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/assets/staking_user_flow.png -------------------------------------------------------------------------------- /docs/stake/bridge_guide/assets/blockscout_success_deposit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/bridge_guide/assets/blockscout_success_deposit.png -------------------------------------------------------------------------------- /docs/stake/bridge_guide/assets/blockscout_withdraw_info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/bridge_guide/assets/blockscout_withdraw_info.png -------------------------------------------------------------------------------- /docs/stake/bridge_guide/assets/bridge_allow_spending.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/bridge_guide/assets/bridge_allow_spending.png -------------------------------------------------------------------------------- /docs/stake/bridge_guide/assets/bridge_app_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/bridge_guide/assets/bridge_app_view.png -------------------------------------------------------------------------------- /docs/stake/bridge_guide/assets/bridge_view_deposit_main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/bridge_guide/assets/bridge_view_deposit_main.png -------------------------------------------------------------------------------- /docs/stake/bridge_guide/assets/claimed_withdraw_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/bridge_guide/assets/claimed_withdraw_view.png -------------------------------------------------------------------------------- /docs/stake/bridge_guide/assets/confirm_withdrawal_claim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/bridge_guide/assets/confirm_withdrawal_claim.png -------------------------------------------------------------------------------- /docs/stake/bridge_guide/assets/deposit_show_added_tokens.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/bridge_guide/assets/deposit_show_added_tokens.png -------------------------------------------------------------------------------- /docs/stake/bridge_guide/assets/success_deposit_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/bridge_guide/assets/success_deposit_window.png -------------------------------------------------------------------------------- /docs/stake/bridge_guide/assets/success_withdrawal_message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/bridge_guide/assets/success_withdrawal_message.png -------------------------------------------------------------------------------- /docs/stake/bridge_guide/assets/view_withdraw_history.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/bridge_guide/assets/view_withdraw_history.png -------------------------------------------------------------------------------- /docs/stake/bridge_guide/assets/wallet_initiate_bridging.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/bridge_guide/assets/wallet_initiate_bridging.png -------------------------------------------------------------------------------- /docs/stake/bridge_guide/assets/withdraw_confirm_in_wallet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/bridge_guide/assets/withdraw_confirm_in_wallet.png -------------------------------------------------------------------------------- /docs/stake/bridge_guide/assets/withdraw_history_wrong_network.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/bridge_guide/assets/withdraw_history_wrong_network.png -------------------------------------------------------------------------------- /docs/stake/bridge_guide/bridge_guide.md: -------------------------------------------------------------------------------- 1 | # Fluence Bridge Application User Guide 2 | 3 | ## Introduction 4 | 5 | Fluence is a Layer 2 (L2) network bridging to Ethereum. To participate in the Fluence Network, you must first transfer your funds from Ethereum to the Fluence Network, which is done with the Fluence blockchain Bridge Application. 6 | This guide will walk you through using the Application and show you how to move your assets between Ethereum and Fluence. 7 | 8 | ### Key concepts 9 | 10 | Fluence Network uses an Optimistic Rollup system: 11 | 12 | - **Optimistic Rollup**: A scaling solution that assumes all transactions are valid unless proven otherwise. This approach allows for faster processing but requires a security mechanism called "fraud proofs." 13 | - **Challenge Period**: When withdrawing funds from Fluence to Ethereum, there's a 7-day waiting period. This period allows enough time for any potentially fraudulent transactions to be identified and disputed. 14 | 15 | The transfer times vary for deposit and withdrawal operations: 16 | 17 | - **Deposits (Ethereum to Fluence)**: Take up to 15 minutes to provide the maximum security for your transactions. 18 | - **Withdrawals (Fluence to Ethereum)**: Take seven days due to the challenge period, ensuring maximum security for your funds. When the challenge period ends, you can _claim_ your funds in the Bridge App. 19 | 20 | ### Supported tokens 21 | 22 | Currently, the Fluence Bridge supports two types of ERC20 tokens: 23 | 24 | 1. **FLT (Fluence Token)**: The primary Fluence token, used to reward Providers and Stakers for Capacity Commitment Proofs and gas payments in the Fluence Network. 25 | 1. **USDC (USD Coin)**: Used as a payment token for renting compute resources from Compute Providers by users. 26 | 27 | ### Fee Structure for Cross-Chain Transfers 28 | 29 | You can transfer both tokens (FLT and USDC) between Ethereum and the Fluence Networks in either direction. However, it's essential to understand the fee structure for these transfers. 30 | 31 | #### Ethereum to Fluence Transfers 32 | 33 | When moving funds from Ethereum to Fluence, you'll need to pay transaction fees in two currencies _simultaneously_: 34 | 35 | - ETH: for the Ethereum network fees 36 | - FLT: for the transaction fees on the Fluence network 37 | 38 | #### Fluence to Ethereum Transfers 39 | 40 | When moving funds from Fluence to Ethereum, you'll need to pay transaction fees in two currencies _separately_: 41 | 42 | 1. FLT: for the Fluence Network fees when you initiate the withdrawal 43 | 1. ETH: for the Ethereum Network fees when you claim the withdrawal after the challenge period 44 | 45 | ### Prepare your wallet 46 | 47 | You'll first need to connect a compatible crypto wallet to use the Bridge Application. 48 | 49 | :::tip 50 | 51 | Read the comprehensive [guide](../wallets_guide/wallets_guide.md) on using crypto wallets with Fluence web applications. 52 | 53 | ::: 54 | 55 | To ensure your wallet is ready for the Bridge application, verify the following: 56 | 57 | 1. Your wallet is compatible with Fluence authentication methods 58 | 1. You've added the Fluence Network to your wallet's list of networks 59 | 1. You've imported the FLT token, and it's visible in your wallet's token list 60 | 61 | Once you've ensured that your wallet can interact with the Fluence Network and obtained tokens for bridging, you can use the Bridge application to deposit tokens from Ethereum to Fluence and withdraw tokens from Fluence to Ethereum. 62 | 63 | :::note 64 | 65 | MetaMask is used as the wallet for the examples and demonstrations, but the actions shown are similar to most crypto wallets. 66 | 67 | ::: 68 | 69 | ## The Bridge App guide 70 | 71 | ### Overview 72 | 73 | You can find the link to the Bridge in the navigation bar of the Staker application, "Bridge" section, or use the official [link](https://bridge.fluence.network): 74 | 75 | :::note 76 | 77 | Be cautious and use only the official Bridge Application at [https://bridge.fluence.network](https://bridge.fluence.network). Never share your private keys or seed phrases with anyone, and always double-check the URL before signing the transactions. 78 | 79 | ::: 80 | 81 | ![The main view of the Bridge Application](./assets/bridge_app_view.png) 82 | The view of the Bridge Application main page 83 | 84 | The Bridge application consists of the following parts: 85 | 86 | - Authentication button (top right corner): 87 | - For unauthenticated users: **"Connect"** button for logging in with a crypto wallet 88 | - For authenticated users: a panel displaying your wallet address and icons to log out 89 | - The main control panel (in the center) with two options: 90 | - Deposit tab: Transfer tokens from the Ethereum Network to the Fluence Network 91 | - Withdraw tab: Transfer tokens from the Fluence Network to the Ethereum Network 92 | - History (only for authenticated users): The time face icon to the left of the auth panel. Displays a record of your prior withdrawals from Fluence to Ethereum. Refer to the [Withdrawals history page](#withdrawals-history-page) section below for more details. 93 | 94 | To start using the Bridge application, you must first authenticate by connecting your crypto wallet to the application. To do so, press the button at the top right corner and select your preferred wallet. 95 | 96 | Let's start by exploring how to deposit tokens from Ethereum to Fluence — a quick and straightforward process. 97 | 98 | ### Depositing Tokens (Ethereum to Fluence) 99 | 100 | To bridge tokens from the Ethereum Network to the Fluence (L2) Network: 101 | 102 | 1. Select the **"Deposit"** tab in the main panel of the bridge application. 103 | 1. Choose the token (FLT or USDC) you want to bridge. In this example, we're bridging FLT tokens. 104 | 1. Enter the number of tokens you wish to bridge. 105 | 1. Verify that the correct amount is displayed in the bridge panel and that you have enough FLT tokens in your wallet to cover the transaction fee specified in the "Estimated fees" field. 106 | ![The view of the wallet window with the token amount to deposit](./assets/bridge_view_deposit_main.png) 107 | 1. Click the **"Bridge Funds"** button. 108 | 1. Your wallet application will ask you to sign several transactions: 109 | - Allow the bridge app to send the amount of tokens you specified. Ensure that the spending cap corresponds to the actual amount and confirm the transaction 110 | ![The view of the wallet window asking to allow the bridge app to spend the tokens](./assets/bridge_allow_spending.png) 111 | 112 | - To initiate bridging 113 | ![The view of the wallet window asking to initiate the bridging](./assets/wallet_initiate_bridging.png) 114 | 115 | 1. After the transaction is processed, you'll be redirected to the Bridge application, where you'll see a status message: 116 | ![The view of the application window with the success message](./assets/success_deposit_window.png) 117 | For successful transactions, you'll receive two important links: 118 | - A link to the L1 bridge transaction details on [Etherscan](https://etherscan.io/). 119 | - A link to the L2 network transaction details on [Blockscout](https://blockscout.mainnet.fluence.dev/), the Fluence network block explorer. 120 | 121 | :::note 122 | **Bridging** from the Ethereum Mainnet to the Fluence network **takes** approximately **15 minutes**, which is sufficient to ensure a high level of security. 123 | ::: 124 | 125 | 1. Once your tokens are bridged to the Fluence network, the token transfer transaction can be viewed on Blockscout. Simply enter your wallet address in the placeholder at the end of this URL: [https://blockscout.mainnet.fluence.dev/address/](https://blockscout.mainnet.fluence.dev/address/)`` 126 | ![The view of the block scanner with the successful transaction](./assets/blockscout_success_deposit.png) 127 | 128 | 1. The transferred tokens will be reflected in your wallet as well. To see the transferred tokens, you need to switch the network of your wallet to the Fluence Network and ensure that the FLT token was previously added to your wallet, or it won't be displayed (read more in the "Prepare your wallet" section). 129 | ![The view of the wallet window with the added tokens](./assets/deposit_show_added_tokens.png) 130 | 131 | Congratulations! You successfully and safely bridged your FLT tokens from the Ethereum Mainnet to the Fluence Mainnet network. Now, you can freely use your funds and stake your FLTs! 132 | 133 | :::tip 134 | 135 | If you encounter any issues while depositing or withdrawing tokens through the Bridge, please reach out for assistance. You can submit a support ticket through our official [Discord channel](https://discord.com/invite/5qSnPZKh7u), where our Fluence Customer Support team will help you resolve any problems. 136 | 137 | ::: 138 | 139 | ### Withdrawing Tokens (Fluence to Ethereum) 140 | 141 | :::note 142 | 143 | Token withdrawal from the Fluence Mainnet to the Ethereum Mainnet takes seven days. 144 | 145 | The Fluence L2 network uses Optimistic Rollups, which rely on a security mechanism called "fraud proofs." When a user initiates a withdrawal from the Fluence network to Ethereum, the protocol enters a challenge period (7 days) to ensure that no fraudulent transactions have occurred. 146 | 147 | ::: 148 | 149 | To bridge tokens from the Fluence Network to the Ethereum Network: 150 | 151 | 1. Choose the “withdraw” tab in the central panel of the bridge application 152 | 1. Choose the token you want to bridge. In this example, the FLT token is bridged 153 | 1. Enter the token amount you want to withdraw from Fluence to Ethereum using your connected account 154 | 1. Ensure that in the bridge panel, the correct amount is displayed 155 | 1. Press **“Withdraw Funds”** button 156 | 1. Your wallet application will ask you to sign a transaction of token withdrawal: 157 | ![The view of the wallet window asking to confirm the withdrawal](./assets/withdraw_confirm_in_wallet.png) 158 | 159 | 1. If the transaction to withdraw the tokens is successful, you will be redirected to the Bridge application and see the success message. Otherwise, you will see the transaction reversal error message. 160 | ![The view of the application window with the success message](./assets/success_withdrawal_message.png) 161 | 162 | 1. You can track your withdrawal status on the **Withdrawals history** page. To open it, press **“History”** button in the information message. Read more about **Withdrawals history** in the next [section](#withdrawals-history-page). 163 | 1. You can also visit the Fluence blockscanner and ensure that the withdrawal initialization transaction has appeared. For that, open the link with your wallet address put in the placeholder: [https://blockscout.mainnet.fluence.dev/address/](https://blockscout.mainnet.fluence.dev/address/)``. 164 | ![The view of the block scanner with the withdrawal transaction](./assets/blockscout_withdraw_info.png) 165 | 166 | ### Withdrawals history page 167 | 168 | The Withdrawals History page offers users an overview of your withdrawal transactions and respective statuses. To access this page, please connect the wallet you used to sign the transactions. 169 | 170 | To access the Withdrawals history page, users have two options: 171 | 172 | 1. After initiating a funds withdrawal, the **"History"** button appears in the confirmation message. Clicking this button provides immediate access to recent activity. 173 | 1. Alternatively, you can click the history button located in the top-right corner, next to the account information. 174 | 175 | It's important to note that the Withdrawals history is only visible when your wallet is connected to the Ethereum Mainnet. Otherwise, the **"Switch network"** button will appear, which, when clicked, will initiate the network change process in the user's wallet application. 176 | 177 | ![The view of the application window with the switch network message](./assets/withdraw_history_wrong_network.png) 178 | The view of the Withdrawals history page for wallets not connected to Ethereum 179 | 180 | The "History" page serves as a wallet-specific ledger, offering updates on the progress of withdrawal transactions. You can see all of your pending and completed transactions with transaction date, amount, status and hash. 181 | 182 | A withdrawal transaction may have one of the following statuses: 183 | 184 | - `Waiting`: The seven day challenge period hasn’t passed yet. 185 | - `Claim`: The funds are ready to be claimed. User can press the **“Claim”** button to withdraw the funds. Read more about the withdrawal process in the section below. 186 | - `Completed`: The funds has been withdrawn successfully. 187 | 188 | ![The view of the application window with the withdrawals history](./assets/view_withdraw_history.png) 189 | The view of the Withdrawals history page 190 | 191 | #### Funds withdrawal after the challenge period has passed 192 | 193 | Once the challenge period for your withdrawal transaction has expired (7 days), you will be able to safely withdraw your funds. You will see the **"Claim"** button in the **"Status"** field of the relevant withdrawal request. To withdraw the funds, follow these steps: 194 | 195 | 1. Press the **"Claim"** button to initialize the withdrawal of the funds to your wallet 196 | ![The view of the application window with the transaction history](./assets/view_withdraw_history.png) 197 | 198 | 1. Confirm the transaction in your wallet 199 | ![The view of the wallet window asking to confirm the withdrawal](./assets/confirm_withdrawal_claim.png) 200 | 201 | 1. The withdrawal status will change to **"Completed"** and the funds transferred will be added to your wallet balance 202 | ![The view of the application window with the claimed withdrawal](./assets/claimed_withdraw_view.png) 203 | -------------------------------------------------------------------------------- /docs/stake/nft_guide/assets/collection_main_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/nft_guide/assets/collection_main_view.png -------------------------------------------------------------------------------- /docs/stake/nft_guide/assets/confirm_nft_transfer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/nft_guide/assets/confirm_nft_transfer.png -------------------------------------------------------------------------------- /docs/stake/nft_guide/assets/confirm_purchase_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/nft_guide/assets/confirm_purchase_view.png -------------------------------------------------------------------------------- /docs/stake/nft_guide/assets/confirm_sell_nft_wallet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/nft_guide/assets/confirm_sell_nft_wallet.png -------------------------------------------------------------------------------- /docs/stake/nft_guide/assets/for_sale_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/nft_guide/assets/for_sale_view.png -------------------------------------------------------------------------------- /docs/stake/nft_guide/assets/main_page_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/nft_guide/assets/main_page_view.png -------------------------------------------------------------------------------- /docs/stake/nft_guide/assets/my_nfts_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/nft_guide/assets/my_nfts_page.png -------------------------------------------------------------------------------- /docs/stake/nft_guide/assets/nft_approve_collection_wallet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/nft_guide/assets/nft_approve_collection_wallet.png -------------------------------------------------------------------------------- /docs/stake/nft_guide/assets/nft_card_approve_collection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/nft_guide/assets/nft_card_approve_collection.png -------------------------------------------------------------------------------- /docs/stake/nft_guide/assets/nft_card_for_purchase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/nft_guide/assets/nft_card_for_purchase.png -------------------------------------------------------------------------------- /docs/stake/nft_guide/assets/nft_card_for_transfer_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/nft_guide/assets/nft_card_for_transfer_view.png -------------------------------------------------------------------------------- /docs/stake/nft_guide/assets/nft_delist_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/nft_guide/assets/nft_delist_button.png -------------------------------------------------------------------------------- /docs/stake/nft_guide/assets/owned_nft_card_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/nft_guide/assets/owned_nft_card_view.png -------------------------------------------------------------------------------- /docs/stake/nft_guide/nft_guide.md: -------------------------------------------------------------------------------- 1 | # Fluence NFT Marketplace User Guide 2 | 3 | ## About Fluence NFT Collection 4 | 5 | Fluence NFTs are your gateway to staking on the Fluence Network, enabling FLT token holders to participate in our mission of global decentralized computing. These NFTs were initially distributed to winners of the first [FLT Stake Race](https://race.fluence.network/), with more to be released in future campaigns. 6 | To participate in staking, you must either have been granted an NFT or purchased one from the newly launched [NFT Marketplace](https://nft.fluence.network/), where current NFT holders can list their tokens for sale. 7 | 8 | :::note 9 | 10 | Additional NFTs will be released to the winners of the next Stake Race campaign. 11 | 12 | ::: 13 | 14 | This guide will walk you through the Fluence NFT Marketplace, covering: 15 | 16 | - An overview of the Marketplace interface 17 | - Step-by-step instructions for buying an NFT 18 | - Procedures for selling or transferring an NFT if you're already an owner 19 | 20 | Whether you're looking to enter the Fluence ecosystem or manage your existing NFTs, this guide will provide you with the necessary information to navigate the Marketplace effectively. 21 | 22 | ### Prepare Your Wallet 23 | 24 | Before using the Marketplace, it's essential to properly set up your crypto wallet for the Fluence Network. This preparation is crucial for interacting with all Fluence Web Applications. Your wallet should meet the following criteria: 25 | 26 | 1. The Fluence Network is added to your wallet's list of networks. 27 | 2. The FLT token is imported and visible in your wallet's token list. 28 | 3. You have FLT tokens _on the Fluence Network_. Since Fluence is an L2 Network, you must first bridge your FLT tokens from Ethereum to Fluence using the official [Bridge](https://bridge.fluence.network/bridge/fluence). 29 | 30 | :::tip 31 | 32 | For detailed instructions on wallet setup and token bridging, please refer to our comprehensive [Wallet Guide](../wallets_guide/wallets_guide.md) and [Bridge Guide](../bridge_guide/bridge_guide.md). 33 | 34 | ::: 35 | 36 | Only after your wallet is properly configured and connected to the Fluence Network can you interact with the Fluence NFT Marketplace to buy or sell Fluence NFTs. 37 | 38 | ## The Marketplace interface overview 39 | 40 | ![The view of the Fluence NFT Marketplace main page.](./assets/main_page_view.png) 41 | The view of the Fluence NFT Marketplace main page 42 | 43 | :::note 44 | 45 | Be cautious and use only the official application at [https://nft.fluence.network/](https://nft.fluence.network/). Never share your private keys or seed phrases with anyone, and always double-check the URL before signing the transactions. 46 | 47 | ::: 48 | 49 | The main page of the Fluence NFT Marketplace features three key elements: 50 | 51 | - **Top right:** An authentication button to connect your wallet. For a detailed guide on using crypto wallets with Fluence web applications, read the official [guide](../wallets_guide/wallets_guide.md). 52 | - **Bottom left:** A link to the Fluence NFT collection page, where you can buy and sell NFTs and link to the user documentation. 53 | 54 | Now, let’s look at the Fluence NFT collection page. 55 | 56 | ### Fluence NFT collection page 57 | 58 | You can find all the minted Fluence NFTs on the main page of the NFT collection site. 59 | 60 | ![The view of the Fluence NFT Collection main page.](./assets/collection_main_view.png) 61 | The view of the Fluence NFT Collection main page 62 | 63 | You can apply the filters by pressing the buttons: 64 | 65 | - `All NFTs`: All NFTs on the Marketplace. 66 | - `For sale`: All NFTs currently sold on the Marketplace. 67 | - `My NFTs` (only for logged-in users): NFTs you own. 68 | 69 | ## How to buy an NFT 70 | 71 | You can buy an NFT from the Fluence NFT Collections in a few simple steps: 72 | 73 | 1. First, find NFTs sold on the marketplace by clicking the **“For Sale”** button. In the opened list, choose an NFT that meets your needs. 74 | ![The view of the For Sale NFTs page.](./assets/for_sale_view.png) 75 | 76 | 2. Click on the card of the NFT you want to purchase and press the **“Buy NFT"** button. 77 | ![The view of an NFT card for purchase.](./assets/nft_card_for_purchase.png) 78 | 79 | 3. Confirm the transaction in your wallet 80 | ![The view of the wallet window to confirm the purchase.](./assets/confirm_purchase_view.png) 81 | 82 | 4. Go to “My NFTs” and find your newly bought NFT by its name. Note that the purchased NFT is no longer available for purchase, as indicated by its “Not for sale” status. 83 | ![The view of the My NFTs page.](./assets/my_nfts_page.png) 84 | 85 | 5. Now you can stake for Capacity Commitments with the NFT you’ve purchased or keep it until you want to sell or transfer it. 86 | 87 | ## How to Sell or Transfer an NFT 88 | 89 | You can list your NFTs for sale at a price you set or transfer them to another address. 90 | 91 | First, open the card of the NFT you wish to sell or transfer by pressing the 'My NFTs' button and clicking on the target NFT. 92 | 93 | ![The view of the owned NFT card.](./assets/owned_nft_card_view.png) 94 | 95 | ### Transfer an NFT 96 | 97 | You can transfer your NFT regardless of its sale status. For that, open the NFT card to be transferred and follow these steps: 98 | 99 | 1. Enter the recipient's address. 100 | 2. Press the 'Transfer' button. 101 | ![The view of the owned NFT card prepared transfer button.](./assets/nft_card_for_transfer_view.png) 102 | 103 | 3. Confirm the transaction in your wallet. 104 | ![The view of the wallet window to confirm the NFT transfer.](./assets/confirm_nft_transfer.png) 105 | 106 | **Note:** NFTs are sold and transferred on the Fluence Network. To be able to view the NFT in their wallet, the recipient must first add the Fluence Network. Read more on preparing the wallet to work with Fluence Network in the corresponding [guide](../wallets_guide/wallets_guide.md). 107 | 108 | ### Set NFT for sale 109 | 110 | When you list an NFT for sale, and someone buys it, the funds are automatically transferred to your address. To sell an NFT, open the NFT card to be sold and follow these steps: 111 | 112 | 1. Approve the Marketplace to manage all your NFTs - to transfer them automatically to a buyer; if you haven’t done it before - press the “Approve collection” button. 113 | ![The view of the NFT card with the approve collection button.](./assets/nft_card_approve_collection.png) 114 | 115 | 2. Confirm the approval in your wallet. 116 | ![The view of the wallet window to confirm the NFT collection approval.](./assets/nft_approve_collection_wallet.png) 117 | 118 | 3. Set your desired selling price for the NFT. Press the "Set to Sell" button and confirm the transaction in your wallet. 119 | ![The view of the wallet window to confirm the NFT sale.](./assets/confirm_sell_nft_wallet.png) 120 | 121 | 4. Check that the listed NFT has the correct price. 122 | 5. Wait for the NFT to be sold to someone. Once sold, you'll automatically receive your tokens. 123 | 124 | :::note 125 | 126 | Even if your NFT is set for sale, you still can transfer it manually without changing the “for sale” status. To do so, open its card and follow the steps described above in the “Transfer NFT” section. 127 | 128 | ::: 129 | 130 | ### How to Change the price or Delist an NFT from a sale 131 | 132 | You can easily adjust the price or remove an NFT you've listed for sale. Click on the card of the NFT on sale and choose your action: 133 | 134 | - To remove the NFT from sale, press the "Delist" button and confirm the transaction in your wallet. 135 | - To change the price, enter the new amount, press the "Change price" button, and confirm the transaction in your wallet. 136 | 137 | ![The view of the NFT card with the delist button.](assets/nft_delist_button.png) 138 | -------------------------------------------------------------------------------- /docs/stake/overview.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Stakers, also known as Delegators, are crucial to the Fluence Network. They contribute FLT token collateral to ensure the Network's decentralization and reliability. In return for this role, stakers earn rewards in FLT tokens. 4 | 5 | Becoming a Staker on the Fluence Network is a straightforward process, though it varies based on your deposit size and the level of involvement. The general journey to becoming a staker is illustrated in the image below: 6 | 7 | ![The flow of becoming a staker in the Fluence Network.](./assets/staking_user_flow.png) 8 | The flow diagram showing how to become a staker in the Fluence Network 9 | 10 | The flow presented is a general overview of the staking process for **a token holder**. 11 | 12 | :::note 13 | 14 | The staker's path diverges at the final step - the method of staking - depending on the deposit size: 15 | 16 | - For deposits of USD 12,000 or more in FLT equivalent: Stake directly using the official [Staking App](https://staking.fluence.network/). 17 | - For smaller deposits: Join the [Staking Pool](https://www.parasail.network/delegate/fluence), powered by the re-staking protocol [Parasail](https://www.parasail.network). 18 | 19 | ::: 20 | 21 | ## Documentation structure 22 | 23 | Learn how to prepare your crypto wallet for interacting with Fluence [**Prepare Your Wallet**](./wallets_guide/wallets_guide.md) 24 | 25 | Once you're familiar with the essentials, follow these steps: 26 | 27 | - [**Bridge Your Funds to Fluence**](./bridge_guide/bridge_guide.md): Learn how to transfer your FLT and USDC tokens from Ethereum to the Fluence network using the [Fluence Bridge App](https://bridge.fluence.network). 28 | - [**Buy or Sell a Fluence NFT**](./nft_guide/nft_guide.md): Understand how to obtain or to sell a Fluence NFT, which enables access to staking, from the official Fluence [NFT Marketplace](https://nft.fluence.network/). 29 | - **Choose Your Staking Method**: Select based on your deposit size and desired level of involvement in the network: 30 | - [**The Fluence Staking App**](./staking_app_guide/staking_app_guide.md): For deposits > $12,000 USD in FLT equivalent. Learn to stake directly for Capacity Commitments using the official [Staking App](https://staking.fluence.network/). 31 | - [**The Staking Pool**](https://www.parasail.network/delegate/fluence): For smaller deposits, or for those who want to abstract most of the staking process. The Pool is created with the re-staking protocol [Parasail](https://www.parasail.network). 32 | 33 | Each section of this documentation provides detailed information and step-by-step instructions to guide you through your staking journey on the Fluence Network. 34 | 35 | ### The Fluence Network 36 | 37 | Fluence is a decentralized compute marketplace powered by blockchain economics. The network operates through several key components and processes: 38 | 39 | 1. **Compute Providers and Capacity**: Data centers, also known as compute providers, commit hardware resources (compute capacity) to the Fluence compute marketplace. This capacity is then available for developers to rent. 40 | 41 | - When customers rent the committed capacity, providers are paid in USDC. 42 | - If the hardware remains idle but ready for immediate use, providers become eligible for FLT rewards. 43 | 44 | 1. **Proof of Capacity (PoC) Mechanism**: The Fluence Network uses PoC to ensure compute providers can deliver their committed computational capacity to the Marketplace. Providers define their resources as compute Units (CUs), with each CU consisting of: 45 | 46 | - 1 core 47 | - 4 GB of RAM 48 | - Additional storage space 49 | 50 | 1. **Continuous Readiness and Rewards**: To demonstrate ongoing readiness to serve user applications, CUs send cryptographic proofs (PoC) to the blockchain. For each 24-hour epoch where capacity is provisioned but not utilized by user applications, these submitted proofs determine the reward paid in FLT tokens. 51 | 52 | 1. **Stakers**: Stakers provide FLT token collateral to activate providers' compute on Fluence e and ensure network reliability. They earn FLT rewards for their role in maintaining the network's security and decentralization. 53 | 54 | This system ensures a robust, decentralized marketplace where compute resources are efficiently allocated and providers are incentivized to maintain readiness, whether their resources are actively used or standing by for immediate deployment. 55 | 56 | ### The incentivization layer 57 | 58 | Collateral must be staked to allow the provision of providers' compute on Fluence and incentivize them to act wisely. If anyone acts dishonestly—for example, if Compute Units fail to submit capacity proofs — this collateral is partially slashed. 59 | 60 | This mechanism involves two parties: the **Compute Provider** with compute power, who earns from proof submission and renting compute power through the Marketplace, and the **Staker**, who earns rewards from providing the collateral. Only staked CUs are considered active in the Marketplace, which is a prerequisite for participating in the reward and user computing programs. 61 | 62 | It's in both parties' interests to act wisely. The compute Provider puts their reputation at risk — no one wants to stake for or rent from an untrustworthy provider. The continued failure of the CU to provide the expected proofs leads to penalties and partial slashing of the collateral. If the slashing threshold is reached, the staking agreement is canceled. 63 | 64 | ### Capacity commitments 65 | 66 | A Capacity Commitment is a formal declaration by a provider to offer a specific amount of compute capacity to the Fluence network for a set period. This commitment is made for each Compute Peer (physical server) that a provider wants to commit to the Fluence network. 67 | 68 | Each CC has its parameters, the ones important for stakers are: 69 | 70 | **CC parameters set by a Provider:** 71 | 72 | - **Duration:** The period during which the staked collateral is held—generally, longer durations yield higher rewards for stakers. 73 | - **Staking rate:** The share of rewards allocated to the staker—providers set this rate, but it's in the staker's interest to choose CCs with higher rates. 74 | - **Staker address** (Optional): The address to which CC's provider granted exclusive staking rights if it wanted. 75 | 76 | **CC parameters set by the Network:** 77 | 78 | - **Collateral:** The FLT tokens amount required to activate a Capacity Commitment (CC), calculated as: `collateralPerUnit` \* `UnitCount`. 79 | 80 | :::info **Important numbers** 81 | 82 | Current collateral per CU: USD 200 in **FLT** **equivalent** 83 | ::: 84 | 85 | Once a Capacity Commitment (CC) is chosen and staked, the Compute Peer tied to it must start generating proofs for capacity _starting the next epoch_ when it will be considered active. From the moment of activation, the Peer must submit the specified number of proofs for their capacity every epoch. The DAO determines the epoch length, which is currently set at 24 hours. 86 | 87 | ### Staker rewards 88 | 89 | #### Rewards from Capacity Commitment Proofs 90 | 91 | :::info **Important numbers** 92 | 93 | Current target revenue per CU: USD 0.33 per epoch in **FLT** equivalent 94 | 95 | ::: 96 | 97 | As previously explained, the collateral for the **Capacity Commitment** acts as a security measure. It incentivizes the Peer linked to the **Capacity Commitment** to consistently submit the required number of proofs for each **Compute Unit** (CU) within every epoch throughout the **Capacity Commitment's** duration. 98 | 99 | At the end of each epoch, the smart contract tallies the number of correct proofs submitted by a **Compute Unit**. If a CU meets or exceeds the required number of correct proofs, it receives rewards. However, if a CU fails to submit enough proofs in an epoch, it's penalized by having a portion of its collateral slashed. 100 | 101 | The reward for a Compute Unit in an epoch fluctuates around the target value. It's determined by the proportion of correct proofs submitted by the CU relative to the total number of correct proofs submitted by all providers in that epoch. This algorithm ensures that the rewards pool stays close to the target value in FLT, making smooth adjustments when necessary. 102 | 103 | _The rewards earned by a CU for submitting proofs are shared between the compute provider and the staker. This division is determined by the staking rate outlined in the Capacity Commitment terms set by the compute Provider who created it._ 104 | 105 | #### Rewards from Deals 106 | 107 | An active Capacity Commitment, in which Compute Units submit proofs that they're ready to serve users' workloads, can be rented by users (developers). Users publish their offer, specifying their compute requirements and the price they're willing to pay. 108 | The Compute Marketplace's smart contract automatically matches offers from providers and developers and verifies that both parties' requirements are met. As a result, a **Deal** is created. CUs then transition from the **Capacity Commitment Proofs submission** to the **Deal** service mode. 109 | 110 | For the time spent computing resources in a Deal, CC's Staker **continues to earn rewards in FLT** in the same amount as in the Capacity Commitment Proofs mode. 111 | 112 | This arrangement ensures that _stakers' rewards generate stable and predictable revenue_. 113 | 114 | #### Vesting 115 | 116 | :::info **Important numbers** 117 | 118 | **Duration of one vesting period:** 1 epoch (24 hours) 119 | 120 | **Total number of vesting periods:** 182 epochs (6 months) 121 | 122 | ::: 123 | 124 | **FLT** rewards earned each epoch are unlocked (vested) over time to encourage long-term commitment to the Network and consistent value contribution. 125 | 126 | Rewards unlock proportionally every epoch (24 hours) at a daily unlock amount of 1/182 of vested rewards for the six months period. 127 | 128 | Let's break this down with a simple example: 129 | 130 | 1. In the 5th epoch, you earn 182 FLT. 131 | 1. Starting from this moment, for the next 182 days (about 6 months): 132 | 133 | - Every day (which is one epoch), 1 FLT (1/182) from this reward becomes available. 134 | - This continues until all 182 FLT are unlocked. 135 | 136 | 1. Now, let's say in the 6th epoch, you earn another 182 FLT. 137 | 1. The same process starts again for this new reward: 138 | - Every day for the next 182 days, another 1 FLT from this second reward becomes available. 139 | 140 | This pattern continues for each epoch where you earn rewards. It's like having multiple timers running at once, each slowly releasing your earned FLT over time. 141 | 142 | #### Slashing 143 | 144 | :::info **Important numbers** 145 | 146 | Currently, the **slashing rate** for one failed epoch per compute Unit is set to **0 %** for the **first month** of the Mainnet. It will be increased in the future. 147 | 148 | ::: 149 | 150 | Slashing penalizes Capacity Commitments in which CUs fail to prove claimed capacity or act maliciously against the Network. Currently, it is set to zero. 151 | 152 | As previously explained, the collateral in the **Capacity Commitment** acts as a security measure. It ensures that the Peer linked to the **Capacity Commitment** consistently submits the necessary number of proofs for each **Compute Unit** (CU) within every epoch throughout the **Capacity Commitment's** lifetime. If a peer fails to send the required number of proofs for some CUs during an epoch, the CC collateral is slashed according to the slashing rate at the end of the epoch. 153 | 154 | The formula that determines how much collateral will be slashed in total: 155 | 156 | `totalSlashedCollateral` = `totalFailCount` \* `collateralPerUnit` \* `slashingRate` 157 | 158 | **Where:** 159 | 160 | - `totalFailCount`: The total number of CUs that failed to send the required proof amount during the overall CC activity time. 161 | - `collateralPerUnit`: The collateral for 1 Compute Unit set by the **DAO**. 162 | - `slashingRate`: The percentage of slashing for 1 compute Unit in 1 failed epoch. 163 | 164 | If the total slashed FLT amount exceeds the allowed threshold, the CC is marked as `FAILED`, and the Peer is removed from the Network, preventing further collateral slashing. Withdrawal of slashed collateral has a lock-in period of 30 days. 165 | 166 | :::note 167 | 168 | If a Capacity Commitment (CC) **fails**: 169 | 170 | 1. The accumulation of new rewards ceases. 171 | 1. The vesting process for existing rewards is halted. 172 | 1. All rewards that have completed vesting up to the failure epoch remain available for withdrawal. 173 | 1. Any rewards still in the vesting process at the time of failure become permanently locked and cannot be withdrawn. 174 | 175 | In essence, you retain access to fully vested rewards but forfeit any partially vested amounts when a CC fails. 176 | 177 | ::: 178 | 179 | ### Conclusion 180 | 181 | Now you're familiar with all the essentials for stakers and ready to stake your FLT effectively, earn rewards and become a part of the DePIN movement. 182 | -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/app_view_main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/app_view_main.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/available_cc_card_extended.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/available_cc_card_extended.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/available_for_staking_collapsed_cards.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/available_for_staking_collapsed_cards.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/available_for_staking_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/available_for_staking_view.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/card_for_withdraw_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/card_for_withdraw_view.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/cc_rewards_panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/cc_rewards_panel.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/cc_status_panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/cc_status_panel.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/panel_all_rewards_withdrawn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/panel_all_rewards_withdrawn.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/stake_button_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/stake_button_active.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/stake_button_nft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/stake_button_nft.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/stake_button_reserved.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/stake_button_reserved.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/stake_button_unauth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/stake_button_unauth.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/stake_confirm_depo_app_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/stake_confirm_depo_app_view.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/stake_confirmed_depo_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/stake_confirmed_depo_view.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/stake_sign_tx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/stake_sign_tx.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/stake_view_of_card_for_staking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/stake_view_of_card_for_staking.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/staked_cc_card_extended.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/staked_cc_card_extended.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/staked_cc_section_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/staked_cc_section_view.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/withdr_rew_all_confirm_app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/withdr_rew_all_confirm_app.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/withdr_rew_all_confirm_wallet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/withdr_rew_all_confirm_wallet.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/withdr_rew_all_success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/withdr_rew_all_success.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/withdraw_collateral_card_after_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/withdraw_collateral_card_after_view.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/withdraw_collateral_cc_card_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/withdraw_collateral_cc_card_view.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/withdraw_collateral_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/withdraw_collateral_confirm.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/withdraw_collateral_success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/withdraw_collateral_success.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/withdraw_rew_card_confirm_in_app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/withdraw_rew_card_confirm_in_app.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/withdraw_rew_card_confirm_in_wallet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/withdraw_rew_card_confirm_in_wallet.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/withdraw_rew_one_cards_success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/withdraw_rew_one_cards_success.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/assets/withdraw_rew_panel_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/staking_app_guide/assets/withdraw_rew_panel_view.png -------------------------------------------------------------------------------- /docs/stake/staking_app_guide/staking_app_guide.md: -------------------------------------------------------------------------------- 1 | # Fluence Staking Application User Guide 2 | 3 | ## Introduction 4 | 5 | This guide will walk you through the process of becoming a staker in the Fluence Protocol, allowing you to earn rewards by contributing to the decentralized physical infrastructure (DePIN). 6 | For that, you will use the Fluence Staking Application, a web application providing stakers with all the necessary resources to analyze available Capacity Commitments for staking and monitor active commitments' performance and rewards. 7 | 8 | First, you'll be introduced to the Staking application — the main control panel for analyzing staking opportunities and monitoring the metrics of staked assets. 9 | Then you will find a step-by-step guide on how to join the Fluence Network and stake your first Capacity Commitment. 10 | 11 | :::note 12 | Fluence is an L2 network, and to use your FLT and USDC tokens in the Fluence Network, you first have to bridge them from Ethereum. Read more on how to use the blockchain bridge in the [corresponding article](../bridge_guide/bridge_guide.md). 13 | ::: 14 | 15 | ## The staking application overview 16 | 17 | :::note 18 | Be cautious and use only the official application at [stake.fluence.network](https://stake.fluence.network). Never share your private keys or seed phrases with anyone, and always double-check the URL before signing the transactions. 19 | ::: 20 | 21 | ![The view of the main page of the Staking Application](./assets/app_view_main.png) 22 | The view of the main page of the Staking Application 23 | 24 | The Staking application consists of the following main parts: 25 | 26 | - Top center: The navigation bar with links to the blockchain Bridge Application and Fluence NFT Collection on the Fluence Marketplace 27 | - Top right: The button to connect your wallet to the application. Read more on how to connect your wallet to Fluence in this [article](../wallets_guide/wallets_guide.md) 28 | - Panels with a summary of the activated Capacity Commitment performance: 29 | - **"Capacity commitments"** - distribution of activated CCs by statuses 30 | - **"Rewards"** - summary of rewards earned by CCs so far 31 | - **Available for Staking:** List of Capacity Commitments available for staking 32 | - **Staked Capacity Commitments:** Real-time information on the performance of active Capacity Commitments. If you are logged in, then the section will change to "**Your Capacity Commitments**" 33 | 34 | :::info **The page layout differs for authenticated and unauthenticated users:** 35 | 36 | Depending on whether you have logged in by connecting your wallet, the list of Capacity Commitments available for staking will remain the same. 37 | 38 | But the information in the **Panels** and the **Staked Capacity Commitments** sections will be different: 39 | 40 | - Without a connected wallet, you'll see all Capacity Commitments listed, allowing you to track and analyze overall Network performance and rewards 41 | - When logged in with your wallet, you'll only see CCs you've activated, along with buttons to withdraw rewards and collateral 42 | 43 | ::: 44 | 45 | The following sections will guide you through the application interface, demonstrate how to stake for a Capacity Commitment for the first time, and then monitor its performance. 46 | 47 | ### Capacity commitments statuses panel 48 | 49 | ![The view of the Capacity Commitments statuses panel](./assets/cc_status_panel.png) 50 | The view of the Capacity Commitments statuses panel 51 | 52 | This panel displays current information about the number of CCs in different states: 53 | 54 | - `Funded`: CC is activated and awaits becoming active at the start of the next epoch 55 | - `Active`: CC is operational, and its CUs are either submitting CC proofs or participating in Deals 56 | - `Completed`: CC has successfully finished, but the staker hasn't yet withdrawn the collateral and rewards 57 | - `Failed`: CC has failed, but the staker hasn't yet withdrawn the collateral and rewards 58 | - `Removed`: Completed CCs from which the staker has withdrawn both collateral and rewards 59 | 60 | #### The CC Lifecycle 61 | 62 | After staking and activating a Capacity Commitment, it progresses through the following stages: 63 | 64 | - It initially enters the `Funded` status 65 | - In the subsequent epoch, the CC transitions to the `Active` status and begins participating in the Network 66 | - Upon completion or failure, the CC remains in either the `Completed` or `Failed` status until the staker withdraws the collateral. 67 | The CC's Provider can start the collateral withdrawal process before the staker. This happens when the Provider unregisters the compute resources from the ended CC. In this case, the collateral is transferred to the staker's wallet. 68 | - Finally, the CC transitions to the `Removed` status, when all rewards and collateral are withdrawn 69 | 70 | ### Capacity commitments rewards panel 71 | 72 | ![The view of the Capacity Commitments rewards panel](./assets/cc_rewards_panel.png) 73 | The view of the Capacity Commitments rewards panel 74 | 75 | This panel summarizes rewards earned in Capacity Commitments (CCs) across the Network or activated by the user. Rewards accumulate each epoch and vest over time. 76 | 77 | Rewards can have the following statuses: 78 | 79 | - `In vesting`: Earned rewards that are locked and will be vested later 80 | - `Available to claim`: Rewards that can be withdrawn immediately 81 | - `Claimed`: Rewards already withdrawn from the CC. Both the CC's Provider and staker can initiate the withdrawal process. If the Provider initiates withdrawal first, rewards will be automatically sent to the staker's wallet 82 | 83 | :::note 84 | 85 | For logged-in users, the panel displays a button to withdraw all available rewards from all CCs. 86 | 87 | ::: 88 | 89 | ### Available for the Staking section 90 | 91 | In this section, you'll find the list of Capacity Commitments available for staking. 92 | 93 | ![The view of the Available for staking section](./assets/available_for_staking_view.png) 94 | The view of the Available for staking section 95 | 96 | This section has the following components: 97 | 98 | - A list of CCs available for staking, with each CC displayed as an expandable card 99 | - Search bar: You can filter the list of Capacity Commitments by entering either: 100 | - Capacity Commitment ID 101 | - Provider name 102 | - For users with a connected wallet, an "only for me" toggle is available. This filter displays CCs where Providers have set your wallet address as the only possible staker 103 | 104 | #### Capacity Commitment cards list fields 105 | 106 | ![The view of the available for staking Capacity Commitment cards collapsed](./assets/available_for_staking_collapsed_cards.png) 107 | The view of the available for staking Capacity Commitment cards collapsed 108 | 109 | In the folded state, each CC card provides the following information: 110 | 111 | - `Capacity Commitment ID`: A unique identifier for the CC with a hyperlink to the Fluence Explorer, offering detailed information such as a list of CUs 112 | - `Provider name`: The name set by the Provider for public display. Use this to identify the Provider and find more details in both the Staking Application and [Fluence Explorer](https://explorer.fluence.dev/) 113 | - `Staking duration`: The maximum time your assets will be staked 114 | - `Required collateral`: The amount of FLT tokens needed to activate the CC 115 | - `Staking reward`: The staker's share of rewards for Capacity Commitment Proofs submission. For more details, refer to the "Key Concepts" section above 116 | - `Expected APR`: The projected annual percentage rate based on the target revenue per CU per epoch 117 | 118 | :::tip 119 | You can sort the list by clicking on any numeric field (following the provider name). This allows you to arrange the list in either descending or ascending order. 120 | 121 | ::: 122 | 123 | Example of the Stake page list of CCs information cards collapsed. 124 | 125 | #### Individual Capacity Commitment extended card fields 126 | 127 | ![The view of the available for staking Capacity Commitment card extended](./assets/available_cc_card_extended.png) 128 | The view of the available for staking Capacity Commitment card extended 129 | 130 | Clicking on an individual CC card expands it, revealing more detailed information about the Capacity Commitment and the Provider. This expanded view also allows you to stake for the CC. 131 | 132 | **Commitment Information:** 133 | 134 | - `Created at`: The date when the Provider created the CC 135 | - `Peer ID`: The identifier of the Peer you're staking for. Find more information about this Peer in the CC explorer: explorer.fluence.dev/peer/`` 136 | - `Compute Capacity`: The number of Compute Units participating in the CC. For more details on how Fluence measures compute resources, refer to the "Key concepts" section above 137 | 138 | **Provider Information:** 139 | 140 | - `Provider lifetime`: The duration since the Provider registered in the Network 141 | - `Total CCs over time`: The number of CCs the Provider has created to date. For detailed information about the Provider's published CCs and their status, visit the Provider's page in the Explorer: [https://explorer.fluence.dev/provider/](https://explorer.fluence.dev/provider/)``/capacity 142 | 143 | #### Stake button view 144 | 145 | The **"Stake"** button view depends on whether you have authenticated by connecting your wallet to the web application and have an NFT that grants you the right to stake tokens for Capacity Commitments: 146 | 147 | - If you haven't connected your wallet to the application yet, you'll see a **"Connect wallet"** button. 148 | ![The Stake button view for unauthenticated users](./assets/stake_button_unauth.png) 149 | 150 | - If you've connected your wallet but don't have a Fluence NFT, you'll see an "NFT required" button with an information message below it. Read more about Fluence NFTs and how to get one in the corresponding guide. 151 | ![The Stake button view for authenticated users without Fluence NFT](./assets/stake_button_nft.png) 152 | 153 | - If you've connected your wallet and have a Fluence NFT, you're free to stake to any CC you like. 154 | However, if a provider has set exclusive staking rights for another address, the "Stake" button will be inactive. In that case, you need to choose another CC for staking. 155 | ![The Stake button view for authenticated users with a Fluence NFT, who cannot stake because the CC's provider has set exclusive staking rights for another address](./assets/stake_button_reserved.png) 156 | 157 | - If you've connected your wallet and have a Fluence NFT, you're free to stake to any CC you like. In an individual CC card, a "Stake" button will be active. Read more about how to choose a CC for staking in the section below. 158 | ![The active Stake button view for authenticated users with Fluence NFT](./assets/stake_button_active.png) 159 | 160 | ### Staked Capacity Commitments section 161 | 162 | This section lists of Capacity Commitments (CCs) activated by the logged-in user or all users. CCs are displayed as expandable cards, providing various information about their performance. 163 | 164 | ![The view of the Staked Capacity Commitments section](./assets/staked_cc_section_view.png) 165 | The view of the Staked Capacity Commitments section 166 | 167 | You can filter the list by the Capacity Commitment status by clicking on the "Status" collapsable list and choosing the target status of CCs to show. 168 | 169 | :::info 170 | Depending on whether you have logged in by connecting your wallet, the CCs listed will be different: 171 | 172 | - Without a connected wallet, you'll see all Capacity Commitments listed, allowing you to track and analyze overall Network performance and rewards 173 | - When logged in with your wallet, you'll only see CCs you've activated, along with buttons to withdraw rewards and collateral 174 | 175 | ::: 176 | 177 | #### Individual CC card general information fields 178 | 179 | In the collapsed state, each card shows the following general information about a CC: 180 | 181 | - `Capacity Commitment ID`: A unique identifier for the CC, with a hyperlink to the Fluence Explorer. This link provides detailed information about the CC, including a list of its Compute Units (CUs) 182 | - `Provider name`: The name set by the Provider for public display. You can use this name to identify the Provider and find more information in both the Staking Application and [Fluence Explorer](https://explorer.fluence.dev/) 183 | - `Expiration`: The period during which the CC will remain active and earn rewards unless it fails earlier 184 | - `Staking reward`: The share of rewards the staker earns for Capacity Commitment activity 185 | - `Status`: The current status of the CC 186 | 187 | #### Individual CC card data fields 188 | 189 | By clicking on an individual CC card, you can expand it to view additional information about the CC's performance, collateral, and current rewards: 190 | 191 | ![The view of a staked Capacity Commitment card extended](./assets/staked_cc_card_extended.png) 192 | The view of a staked Capacity Commitment card extended 193 | 194 | **Statistics:** 195 | 196 | - `Total CPU cores`: Number of Compute Units (CU) in this Capacity Commitment (CC) 197 | - `Staked at`: The date when this Capacity Commitment was staked 198 | - `Expiration`: The date when this Capacity Commitment will end and stop earning rewards unless it fails earlier 199 | - `Missed proofs / Threshold`: How many times have this CC's CUs failed to submit Proofs; How many failures are allowed before it's considered failed. 200 | - `Average CC APR`: The estimated yearly return rate, based on the average of rewards earned so far 201 | 202 | **Collateral:** 203 | 204 | - `Staked collateral`: The amount of FLT staked for the CC 205 | - `Current collateral`: Present value of collateral to be returned to the staker; equals the staked amount if not slashed. **May be zero for already ended CCs with collateral withdrawn** 206 | 207 | **Rewards:** 208 | 209 | Current CC rewards information mirrors the fields in the total capacity commitments rewards panel. If you're logged in and have staked for the CC, you can withdraw available rewards. 210 | 211 | ## How to Stake for a Capacity Commitment with the Staking Application 212 | 213 | This section provides a step-by-step guide to staking for Capacity Commitments in the Fluence Staking Application. 214 | 215 | ### Prepare Your Wallet 216 | 217 | You'll first need to connect a compatible crypto wallet to use the Staking Application. This section will guide you through ensuring your wallet is ready for use with the Staking Application. 218 | 219 | :::tip 220 | 221 | Read the comprehensive [guide](../wallets_guide/wallets_guide.md) on using crypto wallets with Fluence web applications. 222 | 223 | ::: 224 | 225 | To ensure your wallet is ready for the Staking Application, verify the following: 226 | 227 | 1. Your wallet is compatible with Fluence authentication methods. 228 | 1. You've added the Fluence Network to your wallet's list of networks. 229 | 1. You've imported the FLT token, and it's visible in your wallet's token list. 230 | 1. You have FLT tokens _in the Fluence Network_. As Fluence is an L2 Network, you must first bridge your FLT tokens from Ethereum to Fluence using the official Bridge. Click "Bridge" in the top center navigation bar to access the Bridge. 231 | 1. You have a Fluence NFT that grants you the right to stake for Capacity Commitments. You can obtain an NFT on the official [Marketplace](https://nft.fluence.network/). 232 | 233 | Once your wallet is connected to Fluence, it's time to choose the Capacity Commitment to stake for! 234 | 235 | ### Find the CC that meets your requirements 236 | 237 | To find a CC that matches your requirements, let's review the most important criteria: 238 | 239 | - **Expected APR and staking rate:** These values determine your potential rewards. A low staking rate means the Provider shares fewer rewards, but this is relative. A high-performance Compute Peer with a low rate might still outperform a smaller peer with a high rate. 240 | - **Duration:** This is the period your funds will be staked for, if they do not fail earlier because the collateral slashing threshold has been reached. Shorter terms allow quicker fund retrieval and re-staking, while longer terms yield higher rewards. 241 | - **Provider reputation:** Use the Staking Application and Fluence Explorer to assess provider performance. 242 | 243 | ### Stake 244 | 245 | After you've found the CC(s) you want to stake on, it's time to delegate your FLT tokens: 246 | 247 | 1. Expand the target CC's card by clicking it 248 | 1. Ensure you're eligible to stake: your wallet is connected to the application, and you own a Fluence NFT in that wallet 249 | 1. Click the **"Stake"** button 250 | ![The view of a card of CC available for staking.](./assets/stake_view_of_card_for_staking.png) 251 | 252 | 1. Confirm that you agree with the staking terms in the popped-up window 253 | ![The view of a confirmation window for staking.](./assets/stake_confirm_depo_app_view.png) 254 | 255 | 1. Sign the transaction in your wallet 256 | ![The view of a transaction signing window in the wallet](./assets/stake_sign_tx.png) 257 | 258 | 1. A message informing about a successful staking will pop up. This message has the link to the transaction in the block explorer under the "Tx: …" text 259 | ![The view of a successful staking confirmation message](./assets/stake_confirmed_depo_view.png) 260 | 261 | 1. You can proceed to the "**Your Capacity Commitments**" section under the list of available for staking CCs section and monitor the status and performance of the staked CC, or stay on this page and choose other CCs for staking 262 | 263 | :::info 264 | 265 | If someone else has staked a CC before you while you were sending the transaction, or if the transaction has reverted, you will see a message informing you of this! 266 | 267 | ::: 268 | 269 | ## How to withdraw rewards 270 | 271 | :::info 272 | A Capacity Commitment provider is eligible to initiate the rewards withdrawal process before a staker. In this case, the rewards are automatically transferred to the staker wallet, and the process described below is skipped. 273 | ::: 274 | 275 | To withdraw rewards, log in to the application using the wallet address you used to activate Capacity Commitments. 276 | 277 | The Rewards panel will then display your rewards' current status. "Available to claim" shows the rewards that have been unlocked and are ready to be claimed. 278 | 279 | ![The view of the rewards panel with available rewards to withdraw](./assets/withdraw_rew_panel_view.png) 280 | 281 | ### Withdraw rewards from an individual CC 282 | 283 | If you want to withdraw rewards from a CC where they are available, do the following: 284 | 285 | 1. Find the CC in the list and click its card to expand it 286 | ![The view of a card of a CC available for rewards withdrawal](./assets/card_for_withdraw_view.png) 287 | 288 | 1. Click the **"withdraw rewards"** button 289 | 1. Confirm the withdrawal in the popped-up window 290 | ![The view of a confirmation window for rewards withdrawal](./assets/withdraw_rew_card_confirm_in_app.png) 291 | 292 | 1. Confirm the transaction in your wallet. Notice that the information window in the Staking Application contains the ID of commitment you are withdrawing from 293 | ![The view of a transaction signing window in the wallet](./assets/withdraw_rew_card_confirm_in_wallet.png) 294 | 295 | 1. An information message confirming the successful withdrawal will pop up 296 | ![The view of a successful rewards withdrawal confirmation message](./assets/withdraw_rew_one_cards_success.png) 297 | 298 | 1. Ensure that the correct amount of rewards has been transferred to your account and that in the individual CC card: 299 | - The amount of rewards available to claim has reduced (to zero or a smaller positive value if, during the withdrawal, a new reward was vested) 300 | - The total claimed value has increased by the amount of rewards withdrawn. 301 | 302 | ### Withdraw all available rewards 303 | 304 | If you want to withdraw rewards from only one CC where they are available, do the following: 305 | 306 | 1. Click the **"Withdraw available rewards"** button in the top right panel "Rewards." 307 | 1. Confirm the withdrawal in the popped-up window 308 | ![The view of a confirmation window for rewards withdrawal](./assets/withdr_rew_all_confirm_app.png) 309 | 310 | 1. Confirm the transaction in your wallet. Notice that the information window in the Staking Application contains the number of commitments you are withdrawing from 311 | ![The view of a transaction signing window in the wallet](./assets/withdr_rew_all_confirm_wallet.png) 312 | 313 | 1. An information message confirming the successful withdrawal will pop up 314 | ![The view of a successful rewards withdrawal confirmation message](./assets/withdr_rew_all_success.png) 315 | 316 | 1. Ensure that the correct amount of rewards has been transferred to your account and that in the rewards panel: 317 | 318 | - The amount of rewards available to claim has reduced (to zero or a smaller positive value if, during the withdrawal, a new reward was vested) 319 | - The total claimed amount value has increased by the amount of rewards withdrawn 320 | ![The view of a panel with all rewards withdrawn](./assets/panel_all_rewards_withdrawn.png) 321 | 322 | ### How to withdraw collateral 323 | 324 | :::info 325 | The Capacity Commitment provider is eligible to initiate the collateral withdrawal process before the staker removes its Compute Units from the ended CC. In this case, the collateral is automatically transferred to the staker's wallet, and the process described below is skipped. 326 | ::: 327 | 328 | A staker can withdraw their collateral from a CC once it has completed or failed. The process for withdrawing collateral is essentially the same for completed and failed Capacity Commitments. 329 | 330 | However, there's one crucial difference: _Failed CCs have a cooldown period_, during which stakers cannot withdraw collateral. In such cases, the withdrawal button won't appear in the interface until the cooldown period has passed. 331 | 332 | :::note **Important numbers** 333 | 334 | The cooldown period for withdrawing collateral from a **Failed CC** **now** is **0 epochs** - instant withdrawal is available. 335 | In the **future**, it will be set to **30 days**, during which stakers cannot withdraw collateral. 336 | 337 | ::: 338 | 339 | To withdraw collateral from a Capacity Commitment, do the following: 340 | 341 | 1. Find the CC in the list and click its card to expand it 342 | ![The view of a card of a CC available for collateral withdrawal](./assets/withdraw_collateral_cc_card_view.png) 343 | 1. Click the **"withdraw collateral"** button 344 | 1. Confirm the withdrawal in the popped-up window 345 | ![The view of a confirmation window for collateral withdrawal](./assets/withdraw_collateral_confirm.png) 346 | 1. Confirm the transaction in your wallet 347 | 1. An information message confirming the successful withdrawal will pop up 348 | ![The view of a successful collateral withdrawal confirmation message](./assets/withdraw_collateral_success.png) 349 | 1. Ensure that the correct amount of tokens has been transferred to your account and that in the individual CC card: 350 | 351 | - The current collateral field now has 0 tokens available. 352 | - The "withdraw collateral" button is replaced with an "already withdrawn" caption. 353 | - The status field in the card now displays "withdrawn". 354 | ![The view of a card of a CC after collateral withdrawal](./assets/withdraw_collateral_card_after_view.png) 355 | -------------------------------------------------------------------------------- /docs/stake/wallets_guide/assets/fluence_on_chainlist_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/wallets_guide/assets/fluence_on_chainlist_view.png -------------------------------------------------------------------------------- /docs/stake/wallets_guide/assets/mainnet_page_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/wallets_guide/assets/mainnet_page_view.png -------------------------------------------------------------------------------- /docs/stake/wallets_guide/assets/mm_add_fluence_from_chainlist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/wallets_guide/assets/mm_add_fluence_from_chainlist.png -------------------------------------------------------------------------------- /docs/stake/wallets_guide/assets/mm_import_tokens.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/wallets_guide/assets/mm_import_tokens.png -------------------------------------------------------------------------------- /docs/stake/wallets_guide/assets/mm_mobile_add_network.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/wallets_guide/assets/mm_mobile_add_network.PNG -------------------------------------------------------------------------------- /docs/stake/wallets_guide/assets/mm_mobile_wallet_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/wallets_guide/assets/mm_mobile_wallet_view.png -------------------------------------------------------------------------------- /docs/stake/wallets_guide/assets/mm_settings_networks_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/wallets_guide/assets/mm_settings_networks_list.png -------------------------------------------------------------------------------- /docs/stake/wallets_guide/assets/mm_switch_network_fluence_chainlist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/wallets_guide/assets/mm_switch_network_fluence_chainlist.png -------------------------------------------------------------------------------- /docs/stake/wallets_guide/assets/staking_app_choose_account_mm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/wallets_guide/assets/staking_app_choose_account_mm.png -------------------------------------------------------------------------------- /docs/stake/wallets_guide/assets/staking_app_connected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/wallets_guide/assets/staking_app_connected.png -------------------------------------------------------------------------------- /docs/stake/wallets_guide/assets/staking_app_connected_wallet_details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/wallets_guide/assets/staking_app_connected_wallet_details.png -------------------------------------------------------------------------------- /docs/stake/wallets_guide/assets/staking_app_not_connected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/wallets_guide/assets/staking_app_not_connected.png -------------------------------------------------------------------------------- /docs/stake/wallets_guide/assets/staking_app_switch_network_mm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/wallets_guide/assets/staking_app_switch_network_mm.png -------------------------------------------------------------------------------- /docs/stake/wallets_guide/assets/staking_app_wc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/wallets_guide/assets/staking_app_wc.png -------------------------------------------------------------------------------- /docs/stake/wallets_guide/assets/staking_app_window_choose_wallets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/wallets_guide/assets/staking_app_window_choose_wallets.png -------------------------------------------------------------------------------- /docs/stake/wallets_guide/assets/usdc_blockscout_add_auto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/wallets_guide/assets/usdc_blockscout_add_auto.png -------------------------------------------------------------------------------- /docs/stake/wallets_guide/assets/usdc_import_tokens_mm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/docs/stake/wallets_guide/assets/usdc_import_tokens_mm.png -------------------------------------------------------------------------------- /docs/stake/wallets_guide/wallets_guide.md: -------------------------------------------------------------------------------- 1 | # Using wallets with Fluence web applications 2 | 3 | ## Introduction 4 | 5 | In the Web3 world, authentication relies on a private/public key scheme—a more secure method than traditional password-based approaches. Web3 wallets offer a convenient way to manage these keys and prove identity when logging in or signing transactions. 6 | 7 | Fluence applications, like most Web3 services, use wallet-based authentication. We've added support for most wallets on desktop and mobile platforms, so you can use your preferred crypto wallet with our services. 8 | 9 | This guide will walk you through setting up your wallet and connecting to the Fluence Network. 10 | 11 | We'll then explain how to connect to Fluence web applications using your chosen wallet. 12 | 13 | All Fluence web services employ the same authentication method. While the examples in this guide focus on the Fluence Bridge application, the user experience is similar across other Fluence applications. 14 | 15 | ## Prepare your wallet 16 | 17 | Before using Fluence web services, you must set up a compatible cryptocurrency wallet. This section will guide you through connecting your wallet to a Fluence web application and outline the supported wallet options. 18 | 19 | You can connect with either desktop or mobile wallets — choose whichever you prefer! 20 | 21 | :::tip 22 | 23 | You should already have a cryptocurrency wallet. If you don't, we recommend creating one using [MetaMask's beginner guide](https://support.metamask.io/getting-started/getting-started-with-metamask/) 24 | 25 | ::: 26 | 27 | ### Supported wallets 28 | 29 | Fluence authentication supports various wallet options through either direct app integration or WalletConnect. WalletConnect, an open-source protocol, enables a wide range of wallets to connect with decentralized applications (dApps) via QR codes or deep links. 30 | 31 | #### Direct Connection Options 32 | 33 | The following wallet applications are available to connect to Fluence services directly: 34 | 35 | - Metamask 36 | - Rainbow 37 | - Coinbase Wallet 38 | 39 | #### WalletConnect 40 | 41 | If your preferred wallet isn't directly supported, you can use WalletConnect. 42 | 43 | Through WalletConnect, you can use: 44 | 45 | - All the wallets listed above 46 | - Many other popular wallets, including Ledger, Binance Wallet, and Phantom 47 | 48 | For a comprehensive list of supported wallets, visit the [WalletConnect Explorer](https://explorer.walletconnect.com/?type=wallet) 49 | 50 | :::note 51 | 52 | Further, Metamask is used as the examples' main wallet, but the actions shown are mostly the same for the other wallets. 53 | 54 | ::: 55 | 56 | ### Import FLT tokens to your Ethereum wallet 57 | 58 | :::note 59 | 60 | You can skip this part if you have already added FLT tokens to your wallet, and they are displayed in the list of available assets. 61 | 62 | ::: 63 | 64 | Initially, FLT tokens are not displayed in your wallet connected to the Ethereum network and must be added. 65 | 66 | To display FLT tokens in your assets list (Metamask example is shown below): 67 | 68 | 1. User the address of the FLT token contract address: [0x236501327e701692a281934230AF0b6BE8Df3353](https://etherscan.io/token/0x236501327e701692a281934230AF0b6BE8Df3353) 69 | 1. Copy this string and open your wallet, find the **“Import tokens”** button, and press it 70 | 1. In the opened window, paste the token address to the input field and wait till the token symbol and the token decimal are loaded 71 | 1. Confirm the token addition and proceed 72 | 1. The token should appear in the list of your assets 73 | 74 | :::note 75 | 76 | To resolve any issues on the Metamask side, check the official [documentation](https://support.metamask.io/managing-my-tokens/custom-tokens/how-to-display-tokens-in-metamask/) 77 | 78 | ::: 79 | 80 | ![How to add the FLT token in MetaMask](./assets/mm_import_tokens.png) 81 | How to add the FLT token in MetaMask 82 | 83 | ### Add Fluence Network to your wallet 84 | 85 | By default, your wallet does not include the Fluence network and token configuration. This section will show you how to add Fluence Network to your wallet with Chainlist or manually in your wallet. 86 | 87 | #### Using Chainlist 88 | 89 | You can add Fluence Network with Chainlist: 90 | 91 | 1. Fluence can be found on Chainlist by this [link](https://chainlist.org/chain/9999999). Proceed to the site. 92 | 1. Press **“Connect Wallet”** button. 93 | ![Fluence Network on Chainlist](./assets/fluence_on_chainlist_view.png) 94 | Fluence Network listing on Chainlist 95 | 1. In the opened window of your wallet, approve adding Fluence Network to your wallet. Confirm the action by pressing the **"Approve"** button. 96 | ![Adding Fluence Network to MetaMask](./assets/mm_add_fluence_from_chainlist.png) 97 | Approving the addition of Fluence Network in MetaMask 98 | 1. The wallet will then prompt you to switch the current network to the Fluence network. Confirm the switch by pressing the **"Switch network"** button. 99 | ![Switching to Fluence Network in MetaMask](./assets/mm_switch_network_fluence_chainlist.png) 100 | Switching to Fluence Network in MetaMask 101 | 102 | #### Manually 103 | 104 | To add Fluence Network manually: 105 | 106 | 1. Open the setting of your wallet app and find the **“Networks”** section or something similar 107 | ![Switching to Fluence Network in MetaMask](./assets/mm_settings_networks_list.png) 108 | 1. Click the **“Add a Network”** button or similar 109 | 1. Fill the fields as follows: 110 | - **Network:** Fluence 111 | - **Network URL/ RPC URL:** [https://rpc.mainnet.fluence.dev](https://rpc.mainnet.fluence.dev) 112 | - **Chain ID:** 9999999 113 | - **Currency symbol:** FLT 114 | - **Block explorer URL:** [https://blockscout.mainnet.fluence.dev](https://blockscout.mainnet.fluence.dev/) 115 | 1. Click the **“Save”** button 116 | 1. Go to the list of your networks and ensure that Fluence is found in the list 117 | 1. Switch to Fluence Network 118 | 119 | Now you have Fluence Network on your wallet's list of available networks and are ready to connect to Fluence services. 120 | 121 | ### (Optional) Import USDC tokens in the Fluence Network to your wallet 122 | 123 | :::note 124 | 125 | You can skip this part if you have already added USDC tokens to your wallet in the Fluence Network and they are displayed in the list of available assets, or if you don't plan to use USDC in the Fluence Network to create Deals. 126 | 127 | ::: 128 | 129 | To display USDC tokens in your assets list in the Fluence Network (Metamask example is shown below): 130 | 131 | 1. Open the Fluence Mainnet [page](https://mainnet.fluence.dev/) and press the **“USDC”** button. 132 | 1. In the opened [Blockscout page](https://blockscout.mainnet.fluence.dev/token/0x2eC84f93e4F26465c38Fa8165A8927522290A138), you can see the USDC token contract address in the Fluence Network. 133 | ![Mainnet page view on fluence.dev](./assets/mainnet_page_view.png) 134 | 1. **Add automatically**: You can add the token automatically by pressing the button with the Metamask wallet icon and confirming the action in the wallet 135 | ![View the USDC contract page on Blockscout and automatically import it to the wallet](./assets/usdc_blockscout_add_auto.png) 136 | 1. **Add manually**: 137 | - Copy the address of the FLT token contract address from Blockscout or this string: `0x2eC84f93e4F26465c38Fa8165A8927522290A138` 138 | - Copy this string and open your wallet, find the **“Import tokens”** button, and press it 139 | - In the opened window, paste the token address to the input field and wait till the token symbol and the token decimal are loaded or input them manually (you can find this information on the Blockscout page) 140 | - Confirm the token addition and proceed 141 | - The token should appear in the list of your assets 142 | 143 | ![How to add the USDC token in MetaMask](./assets/usdc_import_tokens_mm.png) 144 | How to add the USDC token in the Fluence Network in MetaMask 145 | 146 | ## Connect your wallet 147 | 148 | Now, when you are ready to use your wallet, let’s authenticate by connecting it to the application. This guide shows you how to use Metamask as a direct wallet and Trust Wallet mobile with WalletConnect to log in to Fluence services like the Fluence Staking App. 149 | 150 | First, press the **“Connect Wallet”** button in the top right corner. 151 | 152 | ![Fluence Staking App view without the wallet connected](./assets/staking_app_not_connected.png) 153 | Fluence App top part view without the user's wallet connected 154 | 155 | ### Connect with direct app 156 | 157 | 1. Choose a wallet to connect from the list of available ones 158 | ![Example of choosing a wallet in the staking app](./assets/staking_app_window_choose_wallets.png) 159 | 1. In the open wallet window, select the account for connection and confirm the action. 160 | ![Example of choosing an account to connect](./assets/staking_app_choose_account_mm.png) 161 | 1. **Optional step:** If your wallet is connected to a different network, you will need to switch to the Fluence Mainnet first. The application will prompt you to switch the network. Confirm the switch. 162 | ![Example of switching the network](./assets/staking_app_switch_network_mm.png) 163 | 1. When the wallet is connected, the “Connect” button in the top right corner will be replaced with new buttons: one with the network name and one with the connected wallet address on it. 164 | ![Staking app view with user's wallet connected](./assets/staking_app_connected.png) 165 | 1. You can press the button with the wallet address to see the connected wallet details and log out. 166 | ![Staking app view with user's wallet connected](./assets/staking_app_connected_wallet_details.png) 167 | 168 | ### Connect with WalletConnect 169 | 170 | If your preferred wallet isn't directly supported, you can use WalletConnect to link it to the Fluence Bridge. The actions are similar to the direct connection, but the process starts with a QR code scan. 171 | 172 | 1. Select WalletConnect from the list of available wallets. 173 | 1. A QR code will appear on your screen. 174 | ![Example of WalletConnect QR code](./assets/staking_app_wc.png) 175 | 1. Choose the app for authentication: 176 | 177 | - For mobile: open your preferred wallet app on the phone and scan the QR code displayed 178 | - For desktop: press the “Open” button under the QR. Choose the desktop app for authentication you prefer 179 | 180 | In this guide, **Metamask mobile app** is used as an example. 181 | 182 | 1. Open your mobile wallet app and look for a scan or WalletConnect option (usually in the settings or the main menu). 183 | 1. Use your wallet app to scan the QR code displayed on the Fluence Bridge website. 184 | 1. Your wallet app will ask for confirmation to connect. Approve the connection. 185 | 1. **Optional step:** If your wallet is connected to a different network, you will need to switch to the Fluence Mainnet first. The application will prompt you to switch the network. Confirm the switch. 186 | 187 | ![How to connect to a Fluence Application through WalletConnect and a mobile application](./assets/mm_mobile_wallet_view.png) 188 | How to connect to a Fluence Application through WalletConnect and a mobile application 189 | 190 | Now that you've connected your wallet to a Fluence Application, you're all set to start using it and participate in the Fluence Network. 191 | -------------------------------------------------------------------------------- /docusaurus.config.ts: -------------------------------------------------------------------------------- 1 | import type { Config } from "@docusaurus/types"; 2 | import type * as Preset from "@docusaurus/preset-classic"; 3 | import remarkMath from "remark-math"; 4 | import rehypeKatex from "rehype-katex"; 5 | 6 | const config: Config = { 7 | title: "Fluence Docs", 8 | tagline: "Decentralized Serverless Platform", 9 | url: "https://fluence.dev", 10 | baseUrl: "/", 11 | onBrokenLinks: "warn", 12 | onBrokenMarkdownLinks: "warn", 13 | favicon: "img/favicon.ico", 14 | i18n: { 15 | defaultLocale: "en", 16 | locales: ["en"], 17 | }, 18 | themes: ["@docusaurus/theme-mermaid"], 19 | markdown: { mermaid: true }, 20 | presets: [ 21 | [ 22 | "@docusaurus/preset-classic", 23 | { 24 | docs: { 25 | sidebarPath: require.resolve("./sidebars.js"), 26 | editUrl: "https://github.com/fluencelabs/docs/tree/main", 27 | remarkPlugins: [remarkMath], 28 | rehypePlugins: [rehypeKatex], 29 | }, 30 | theme: { 31 | customCss: require.resolve("./src/css/custom.scss"), 32 | }, 33 | gtag: { 34 | trackingID: "G-Z28T4R4T7P", 35 | anonymizeIP: true, 36 | }, 37 | } satisfies Preset.Options, 38 | ], 39 | ], 40 | stylesheets: [ 41 | { 42 | href: "https://cdn.jsdelivr.net/npm/katex@0.13.24/dist/katex.min.css", 43 | type: "text/css", 44 | integrity: 45 | "sha384-odtC+0UGzzFL/6PNoE8rX/SPcQDXBJ+uRepguP4QkPCm2LBxH3FA3y+fKSiJ+AmM", 46 | crossorigin: "anonymous", 47 | }, 48 | ], 49 | themeConfig: { 50 | algolia: { 51 | appId: "LDLCNV5Z6K", 52 | apiKey: "8536d4a05a0bddd56f5345c1519ae8ec", 53 | indexName: "fluence", 54 | }, 55 | navbar: { 56 | title: "Fluence", 57 | logo: { 58 | alt: "Fluence Logo", 59 | src: "img/logo_badge_black.svg", 60 | }, 61 | items: [ 62 | { 63 | type: "doc", 64 | position: "left", 65 | docId: "build/overview", 66 | label: "Build", 67 | }, 68 | { 69 | type: "doc", 70 | position: "left", 71 | docId: "stake/overview", 72 | label: "Stake", 73 | }, 74 | { 75 | href: "https://github.com/fluencelabs", 76 | label: "GitHub", 77 | position: "right", 78 | }, 79 | ], 80 | }, 81 | footer: { 82 | style: "dark", 83 | links: [ 84 | { 85 | title: "Docs", 86 | items: [ 87 | { 88 | label: "Build", 89 | to: "/docs/build/overview", 90 | }, 91 | { 92 | label: "Stake", 93 | to: "/docs/stake/overview", 94 | }, 95 | ], 96 | }, 97 | { 98 | title: "Community", 99 | items: [ 100 | { 101 | label: "Telegram", 102 | href: "https://t.me/fluence_project", 103 | }, 104 | { 105 | label: "Discord", 106 | href: "https://discord.com/invite/5qSnPZKh7u", 107 | }, 108 | { 109 | label: "Youtube", 110 | href: "https://www.youtube.com/channel/UC3b5eFyKRFlEMwSJ1BTjpbw", 111 | }, 112 | { 113 | label: "Telegram (ru)", 114 | href: "https://t.me/fluenceru", 115 | }, 116 | ], 117 | }, 118 | { 119 | title: "More", 120 | items: [ 121 | { 122 | label: "GitHub", 123 | href: "https://github.com/fluencelabs", 124 | }, 125 | { 126 | label: "Telegram Updates", 127 | href: "https://t.me/fluencedev", 128 | }, 129 | ], 130 | }, 131 | ], 132 | copyright: `Copyright © ${new Date().getFullYear()} Cloudless Labs`, 133 | }, 134 | } satisfies Preset.ThemeConfig, 135 | plugins: ["docusaurus-plugin-sass"], 136 | }; 137 | 138 | export default config; 139 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fluence-docs", 3 | "version": "0.0.0", 4 | "private": true, 5 | "scripts": { 6 | "docusaurus": "docusaurus", 7 | "dev": "docusaurus start", 8 | "build": "docusaurus build", 9 | "swizzle": "docusaurus swizzle", 10 | "deploy": "docusaurus deploy", 11 | "clear": "docusaurus clear", 12 | "serve": "docusaurus serve", 13 | "write-translations": "docusaurus write-translations", 14 | "write-heading-ids": "docusaurus write-heading-ids", 15 | "typecheck": "tsc" 16 | }, 17 | "dependencies": { 18 | "@docusaurus/core": "^3.7.0", 19 | "@docusaurus/plugin-google-gtag": "^3.7.0", 20 | "@docusaurus/preset-classic": "^3.7.0", 21 | "@docusaurus/theme-mermaid": "^3.7.0", 22 | "@mdx-js/react": "^3.1.0", 23 | "clsx": "^2.1.1", 24 | "docusaurus-plugin-sass": "^0.2.6", 25 | "mermaid": "^11.4.1", 26 | "react": "^18.3.1", 27 | "react-dom": "^18.3.1", 28 | "react-player": "^2.16.0", 29 | "rehype-katex": "^7.0.1", 30 | "remark-math": "^6.0.0", 31 | "sass": "^1.85.0" 32 | }, 33 | "devDependencies": { 34 | "@docusaurus/module-type-aliases": "^3.7.0", 35 | "@docusaurus/tsconfig": "^3.7.0", 36 | "@types/react": "^18.3.1", 37 | "typescript": "~5.7.3" 38 | }, 39 | "browserslist": { 40 | "production": [ 41 | ">0.5%", 42 | "not dead", 43 | "not op_mini all" 44 | ], 45 | "development": [ 46 | "last 1 chrome version", 47 | "last 1 firefox version", 48 | "last 1 safari version" 49 | ] 50 | }, 51 | "engines": { 52 | "node": ">=18.0" 53 | }, 54 | "prettier": {} 55 | } 56 | -------------------------------------------------------------------------------- /sidebars.js: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | 3 | /** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ 4 | const sidebars = { 5 | stake: [ 6 | "stake/overview", 7 | "stake/wallets_guide/wallets_guide", 8 | "stake/bridge_guide/bridge_guide", 9 | "stake/nft_guide/nft_guide", 10 | "stake/staking_app_guide/staking_app_guide", 11 | ], 12 | build: [ 13 | "build/overview", 14 | "build/registration/registration", 15 | "build/balance/balance", 16 | "build/vm_rent/vm_rent", 17 | { 18 | type: "category", 19 | label: "VM Management", 20 | items: [ 21 | "build/manage_vm/manage_vm", 22 | "build/manage_vm/provider_vm_termination", 23 | ], 24 | }, 25 | "build/settings/settings", 26 | { 27 | type: "category", 28 | label: "API", 29 | items: [ 30 | "build/api/overview", 31 | "build/api/get_offerings/get_offerings", 32 | "build/api/order_vm/order_vm", 33 | "build/api/manage_vms/manage_vms", 34 | ], 35 | collapsed: true, 36 | }, 37 | ], 38 | }; 39 | 40 | module.exports = sidebars; 41 | -------------------------------------------------------------------------------- /src/css/custom.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Any CSS included here will be global. The classic template 3 | * bundles Infima by default. Infima is a CSS framework designed to 4 | * work well for content-centric websites. 5 | */ 6 | 7 | /* You can override the default Infima variables here. */ 8 | :root { 9 | --ifm-color-primary: #000; 10 | --ifm-color-primary-dark: #000; 11 | --ifm-color-primary-darker: #000; 12 | --ifm-color-primary-darkest: #000; 13 | --ifm-color-primary-light: #000; 14 | --ifm-color-primary-lighter: #000; 15 | --ifm-color-primary-lightest: #000; 16 | --ifm-code-font-size: 95%; 17 | --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); 18 | --ifm-menu-color: #232529; 19 | --ifm-toc-link-color: #232529; 20 | 21 | &[data-theme="dark"] { 22 | --ifm-color-primary: #fff; 23 | --ifm-color-primary-dark: #fff; 24 | --ifm-color-primary-darker: #fff; 25 | --ifm-color-primary-darkest: #fff; 26 | --ifm-color-primary-light: #fff; 27 | --ifm-color-primary-lighter: #fff; 28 | --ifm-color-primary-lightest: #fff; 29 | --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); 30 | --ifm-menu-color: #dadde1; 31 | --ifm-toc-link-color: #dadde1; 32 | } 33 | } 34 | 35 | .footer--dark { 36 | --ifm-footer-background-color: #16181c; 37 | 38 | [data-theme="dark"] & { 39 | --ifm-footer-background-color: #0a0a0a; 40 | } 41 | } 42 | 43 | .footer__link-item:hover { 44 | color: inherit; 45 | } 46 | 47 | .table-of-contents__link:hover { 48 | text-decoration: var(--ifm-link-hover-decoration); 49 | } 50 | 51 | .table-of-contents__link--active { 52 | text-decoration: var(--ifm-link-hover-decoration); 53 | } 54 | 55 | .table-of-contents__link--active:hover { 56 | text-decoration: var(--ifm-link-hover-decoration); 57 | } 58 | 59 | .code-container { 60 | max-height: 60vh; 61 | } 62 | 63 | .markdown img { 64 | display: block; 65 | margin: auto; 66 | } 67 | 68 | @media (min-width: 577px) { 69 | .markdown img { 70 | max-width: 80%; 71 | } 72 | } 73 | 74 | .markdown p:has(img) { 75 | text-align: center; 76 | } 77 | 78 | .markdown li img { 79 | margin: 1rem 0 0 0; 80 | } 81 | 82 | .markdown li p:has(img) { 83 | text-align: inherit; 84 | } 85 | 86 | .markdown a { 87 | text-decoration: var(--ifm-link-hover-decoration); 88 | } 89 | 90 | .navbar__link--active { 91 | background-color: var(--ifm-menu-color-background-active); 92 | border-radius: 0.25rem; 93 | } 94 | -------------------------------------------------------------------------------- /src/pages/index.module.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * CSS files with the .module.css suffix will be treated as CSS modules 3 | * and scoped locally. 4 | */ 5 | 6 | .heroBanner { 7 | padding: 4rem 0; 8 | text-align: center; 9 | position: relative; 10 | overflow: hidden; 11 | min-height: calc(100vh - var(--ifm-navbar-height)); 12 | background-image: radial-gradient( 13 | circle, 14 | rgb(86, 150, 216) 0%, 15 | rgb(64, 120, 224) 6%, 16 | rgb(64, 120, 224) 9%, 17 | rgb(95, 156, 211) 13%, 18 | rgb(103, 155, 205) 15%, 19 | rgb(78, 110, 190) 29%, 20 | rgba(74, 102, 185, 0) 41%, 21 | rgba(0, 212, 255, 0) 100% 22 | ); 23 | background-size: 600vw 100vh; 24 | background-repeat: no-repeat; 25 | background-position: center; 26 | @media screen and (max-width: 996px) { 27 | padding: 2rem; 28 | } 29 | } 30 | 31 | .button { 32 | border-radius: 30px; 33 | padding: 15px 25px; 34 | line-height: 1.4; 35 | color: #ffffff; 36 | font-size: 15px; 37 | font-weight: 700; 38 | transition: all 0.2s ease; 39 | background: rgba(0, 0, 0, 0.8); 40 | padding: 16px 51px; 41 | &:hover { 42 | text-decoration: none; 43 | color: #ffffff; 44 | } 45 | } 46 | 47 | .heroSubtitle { 48 | max-width: 600px; 49 | margin: 35px auto 48px; 50 | } 51 | -------------------------------------------------------------------------------- /src/pages/index.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import clsx from "clsx"; 3 | import Link from "@docusaurus/Link"; 4 | import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; 5 | import Layout from "@theme/Layout"; 6 | 7 | import styles from "./index.module.scss"; 8 | 9 | export default function Home() { 10 | const { siteConfig } = useDocusaurusContext(); 11 | 12 | return ( 13 | 17 |
18 |
19 |

{siteConfig.title}

20 |

21 | {siteConfig.tagline} 22 |

23 | 24 | Get started 25 | 26 |
27 |
28 |
29 | ); 30 | } 31 | -------------------------------------------------------------------------------- /src/types.d.ts: -------------------------------------------------------------------------------- 1 | declare module "*.scss" { 2 | const content: Record; 3 | export default content; 4 | } 5 | -------------------------------------------------------------------------------- /static/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/static/.nojekyll -------------------------------------------------------------------------------- /static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fluencelabs/docs/aa28539c7b7d7f6abdfd94b3da11344480cb7655/static/img/favicon.ico -------------------------------------------------------------------------------- /static/img/logo_badge_black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@docusaurus/tsconfig", 3 | "compilerOptions": { 4 | "baseUrl": "." 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "redirects": [ 3 | { 4 | "source": "/", 5 | "destination": "/docs/build/overview", 6 | "permanent": true 7 | }, 8 | { 9 | "source": "/docs", 10 | "destination": "/", 11 | "permanent": true 12 | }, 13 | { 14 | "source": "/docs/", 15 | "destination": "/", 16 | "permanent": true 17 | }, 18 | { 19 | "source": "/docs/learn/overview", 20 | "destination": "/", 21 | "permanent": true 22 | } 23 | ] 24 | } 25 | --------------------------------------------------------------------------------