diff --git a/config.js b/config.js index a131a195..1ee4fdd2 100644 --- a/config.js +++ b/config.js @@ -30,8 +30,16 @@ module.exports = { to: '/references/introduction/' }, { - from: '/tutorials/wallets/', - to: '/concepts/wallets/' + from: '/concepts/wallets/', + to: '/tutorials/wallets/' + }, + { + from: '/tutorials/get-ether-and-ocean-tokens/', + to: '/concepts/get-ether-and-ocean-tokens/' + }, + { + from: '/tutorials/connect-to-networks/', + to: '/concepts/connect-to-networks/' } ] } diff --git a/content/concepts/connect-to-networks.md b/content/concepts/connect-to-networks.md new file mode 100644 index 00000000..b7976f89 --- /dev/null +++ b/content/concepts/connect-to-networks.md @@ -0,0 +1,22 @@ +--- +title: Connect Wallets to Networks +description: +--- + +## Connect to Ethereum mainnet + +Ocean's on Ethereum mainnet, for production usage. + +Metamask and other ERC20 wallets default to Ethereum mainnet. Therefore your wallet is almost certainly pointing to Ethereum by default. + +## Connect to public testnets + +`Rinkeby` and `Ropsten` are prominent Ethereum testnets. Ocean is deployed to both. + +In MetaMask, click on the network name dropdown, then select `Rinkeby` or `Ropsten`. That's it. + +## Connect to local Ganache testnet + +In MetaMask, click on the network name then click on `Custom RPC` in the drop-down list. Scroll down to the `New Network` section. Enter the above RPC URL. You don't need to add a port number to the end of the RPC URL. Enter the ChainID, Symbol and Nickname if you like. See the [MetaMask docs about how it uses the ChainID](https://metamask.github.io/metamask-docs/Main_Concepts/Sending_Transactions). + + diff --git a/content/concepts/contributing.md b/content/concepts/contributing.md index 92d90a3f..fc0396c4 100644 --- a/content/concepts/contributing.md +++ b/content/concepts/contributing.md @@ -31,4 +31,4 @@ These docs can always be improved. Here's the repo. ### Other ways to get involved -Please go to the [Ocean Community Page](www.oceanprotocol.com/community) for more ideas on how to get involved. +Please go to the [Ocean Community Page](https://www.oceanprotocol.com/community) for more ideas on how to get involved. diff --git a/content/concepts/get-ether-and-ocean-tokens.md b/content/concepts/get-ether-and-ocean-tokens.md new file mode 100644 index 00000000..2ccbefa3 --- /dev/null +++ b/content/concepts/get-ether-and-ocean-tokens.md @@ -0,0 +1,41 @@ +--- +title: Get ETH and OCEAN Tokens +description: How to get tokens for each network +--- + +## Overview + +In each network, you'll need ETH to pay for gas, and OCEAN for certain Ocean actions. + +Ethereum mainnet is a network for production settings. Accordingly, ETH and OCEAN tokens have _real_ value. + +Other networks are test networks. The ETH and OCEAN tokens in each of these networks don't have real value. The tokens are simply stand-ins to be able to test. They have "faucets" to dole out ETH and OCEAN. + +## Ethereum mainnet + +- **ETH** [Exchanges to purchase ETH](https://www.coingecko.com/en/coins/ethereum#markets). + +- **OCEAN** [Official exchanges to purchase OCEAN](https://oceanprotocol.com/token#get). + + +## Rinkeby testnet + +- **ETH** [ETH faucet for Rinkeby](https://faucet.rinkeby.io/). You may find others by [searching](https://www.google.com/search?q=rinkeby+ether+faucet&oq=rinkeby+ether+faucet). + +- **OCEAN** [OCEAN faucet for Rinkeby](https://faucet.rinkeby.oceanprotocol.com). + +## Ropsten testnet + +Ropsten has a faucet to dole out ETH, and another for OCEAN. + +- **ETH** [ETH faucet for Ropsten](https://faucet.dimensions.network/). You may find others by [searching](https://www.google.com/search?q=ropsten+ether+faucet&oq=ropsten+ether+faucet). + +- **OCEAN** [OCEAN faucet for Rinkeby](https://faucet.ropsten.oceanprotocol.com). + +## Local network + +Ganache is a local test network. + +- **ETH.** By default, Ganache creates several Ethereum accounts at launch, gives each some ETH, and makes their private keys available in the logs. You can also instruct Ganache to give ETH to specific Ethereum addresses. + +- **OCEAN.** You can deploy an ERC20 token with label OCEAN. You'll see examples in the quickstarts for the Ocean JavaScript and Python drivers. diff --git a/content/concepts/network-ethmainnet.md b/content/concepts/network-ethmainnet.md index 80db4e66..6643c856 100644 --- a/content/concepts/network-ethmainnet.md +++ b/content/concepts/network-ethmainnet.md @@ -1,9 +1,13 @@ --- -title: Network - Ethereum Mainnet -description: Tools for development on Ethereum Mainnet +title: Ethereum Mainnet +description: Details of Ethereum deployment & services --- -Ocean is deployed to Ethereum mainnet. This network is for your app's production deployment. Here are tools related to this deployment. [Here](https://github.com/oceanprotocol/contracts/blob/master/docs/deployments/mainnet.md) are the addresses of the deployed contracts. +## Smart Contracts + +Ocean contracts are deployed to Ethereum mainnet at **[these addresses](https://github.com/oceanprotocol/contracts/blob/master/docs/deployments/mainnet.md)**. + +## Mainnet-Related Services | What | URL | | ----------------------- | ------------------------------------------ | diff --git a/content/concepts/network-local.md b/content/concepts/network-local.md index 3531ff20..2feefb48 100644 --- a/content/concepts/network-local.md +++ b/content/concepts/network-local.md @@ -1,14 +1,16 @@ --- -title: Network - Local / Barge -description: Tools for development on a local Ethereum network +title: Ganache Local Testnet +description: Details of Ganache deployment & services --- -You can deploy Ocean onto [Ganache](https://www.trufflesuite.com/ganache) - a local Ethereum "network" that you run on your machine for fast iterations while developing your app. You can easily do that with Barge. +## Smart Contracts -**Barge** is a shell script to help run Ocean components (Provider, Aquarius), which runs Ganache by default. +[Ganache](https://www.trufflesuite.com/ganache) is a local Ethereum "network" that you run on your machine for fast iterations while developing your app. - +The most straighforward case for local development is to use Ocean [Barge](https://www.github.com/oceanprotocol/barge). It runs Ganache in addition to Aquarius and Provider. -Barge launches Docker and Docker Compose, to run Ganache with Ocean smart contracts on top, along with Provider and Aquarius metadata cache. It's used extensively by the Ocean core devs (with Ganache or Rinkeby). +Alternatively, you can run Ganache independently. Install it according to [the Ganache docs](https://www.trufflesuite.com/ganache). Then deploy Ocean contracts onto Ganache following [docs in Ocean contracts repo](https://www.github.com/oceanprotocol/contracts). -The [Connect-to-Networks](/tutorials/connect-to-networks/) tutorial has more information about connecting your wallet / app to Ganache. +Ganache is at the RPC URL [http://localhost:8545](http://localhost:8545). + +To connect from Metamask: in Metamask, connect to the network called "Localhost 8545". diff --git a/content/concepts/network-rinkeby.md b/content/concepts/network-rinkeby.md index b586e281..62432d3f 100644 --- a/content/concepts/network-rinkeby.md +++ b/content/concepts/network-rinkeby.md @@ -1,17 +1,17 @@ --- -title: Network - Rinkeby / Barge -description: Tools for development on Ethereum Rinkeby testnet +title: Rinkeby Testnet +description: Details of Rinkeby deployment & services --- -Ocean is deployed to Rinkeby network. Rinkeby is useful for testing your app's deployment before final production deployment. [Here](https://github.com/oceanprotocol/contracts/blob/master/docs/deployments/rinkeby.md) are the addresses of the deployed contracts. +## Smart Contracts -**Barge** can be run with Rinkeby as well. This is a useful configuration for development flows. +Ocean contracts are deployed to Rinkeby network at &&[these addresses](https://github.com/oceanprotocol/contracts/blob/master/docs/deployments/rinkeby.md)**. -Here are tools related to Rinkeby deployment. +## Rinkeby-Related Services | What | URL | | ----------------------- | ------------------------------------------------------------------------------------------- | | Etherscan explorer | https://rinkeby.etherscan.io/ | -| Ocean Market | Point wallet to Rinkeby network, at usual Ocean Market url https://market.oceanprotocol.com | +| Ocean Market | Point wallet to Rinkeby network, at usual Ocean Market url: https://market.oceanprotocol.com | | Ocean Market - Provider | https://provider.rinkeby.oceanprotocol.com | | Ocean Market - Aquarius | https://aquarius.rinkeby.oceanprotocol.com | diff --git a/content/concepts/network-ropsten.md b/content/concepts/network-ropsten.md new file mode 100644 index 00000000..a1cd15e6 --- /dev/null +++ b/content/concepts/network-ropsten.md @@ -0,0 +1,17 @@ +--- +title: Ropsten Testnet +description: Details of Ropsten deployment & services +--- + +## Smart Contracts + +Ocean contracts are deployed to Ropsten network at **[these addresses](https://github.com/oceanprotocol/contracts/blob/master/docs/deployments/ropsten.md)**. + +## Ropsten-Related Services + +| What | URL | +| ----------------------- | ------------------------------------------------------------------------------------------- | +| Etherscan explorer | https://ropsten.etherscan.io/ | +| Ocean Market | Point wallet to Ropsten network, at usual Ocean Market url: https://market.oceanprotocol.com | +| Ocean Market - Provider | https://provider.ropsten.oceanprotocol.com | +| Ocean Market - Aquarius | https://aquarius.ropsten.oceanprotocol.com | diff --git a/content/concepts/networks-overview.md b/content/concepts/networks-overview.md new file mode 100644 index 00000000..522c42e1 --- /dev/null +++ b/content/concepts/networks-overview.md @@ -0,0 +1,28 @@ +--- +title: Supported Networks +description: +--- + +## Summary + +Ocean is deployed to these public networks: + +- [Ethereum mainnet](/concepts/network-ethmainnet/) - production +- [Rinkeby](/concepts/network-rinkeby/) - testnet +- [Ropsten](/concepts/network-ropsten) - testnet + +You can also run your own local testnet: + +- [Ganache](/concepts/network-local) - local testnet + +## Chain ids + +Some apps may need `network_id` and `chain_id`. Here's a [list of values for major Ethereum networks](https://medium.com/@piyopiyo/list-of-ethereums-major-network-and-chain-ids-2bc58e928508). + +## Barge + +**Barge** is a shell script to help developers run Ocean Provider (data service) and Ocean Aquarius (metadata cache). It points to Ganache by default. + +Barge is used used extensively by the Ocean core devs (with Ganache or Rinkeby). + + diff --git a/content/concepts/ocean-tokens.md b/content/concepts/ocean-tokens.md deleted file mode 100644 index 9f19c3a7..00000000 --- a/content/concepts/ocean-tokens.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Ocean Tokens -description: Information about OCEAN ---- - -Please go to https://oceanprotocol.com/token. diff --git a/content/concepts/resources.md b/content/concepts/resources.md deleted file mode 100644 index 80e80871..00000000 --- a/content/concepts/resources.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Resources -description: ---- - -Here are a few places for more information. - -- [Ocean homepage](https://www.oceanprotocol.com) -- [Ocean blog](https://blog.oceanprotocol.com) -- [Ocean whitepaper](https://oceanprotocol.com/tech-whitepaper.pdf) diff --git a/content/concepts/wallets.md b/content/concepts/wallets.md deleted file mode 100644 index 5c4461fe..00000000 --- a/content/concepts/wallets.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Wallet Basics -description: Ocean users need a wallet to manage their Ocean Tokens and Ether. This page explains the basics of wallets. ---- - -To get and manage Ocean Tokens or Ether, you need a _cryptocurrency wallet_, _crypto wallet_ or just "wallet." More generally, you need a wallet to store your private keys (explained below). - -## Recommendations - -- **Easiest:** Use [MetaMask][1]. See the tutorial about [how to set up MetaMask](/tutorials/metamask-setup/). OR -- **Still easy, but more secure:** Get a [TREZOR][2] or [Ledger][3] wallet, and use [MetaMask][1] to interact with it. - -## The Meaning of "Wallet" - -A **wallet** usually means "a thing that stores private keys (and maybe signs transactions)" (explained below). Examples include [MetaMask][1], [TREZOR][2] wallets and a [Ledger][3] wallets. - -A wallet can sometimes mean (web3) _software_ for interacting with a thing that stores private keys. Examples include [MetaMask][1], [MyEtherWallet][4], and [MyCrypto][5]. - -Note how MetaMask is in both lists! - -You can also have a _chain_ of software which ultimately connects to the thing that stores the private keys. An example would be [Commons](/concepts/components/#commons) connecting to MetaMask connecting to a TREZOR wallet. - -## Related Terminology - -When you set up a new wallet, it might generate a **seed phrase** for you. Store that seed phrase somewhere secure and non-digital (e.g. on paper in a safe). It's extremely secret and sensitive. Anyone with your wallet's seed phrase could spend all the Ether and Ocean Tokens in all the accounts in your wallet. - -Once your wallet is set up, it will have one or more **accounts**. - -Each account has several **balances**, e.g. an Ether balance, an Ocean Token balance, and maybe other balances. All balances start at zero. - -An account's Ether balance might be 7.1 ETH in the Ethereum Mainnet, 2.39 ETH in Ropsten testnet. You can move ETH from one network to another only with a specially setup exchange or bridge. The same is true of Ocean Token balances. - -Each account has one **private key**, one **public key** and one **address**. The public key and address can be calculated from the private key. You must keep the private key secret because it's what's needed to spend/transfer Ether and Ocean Tokens (or to sign transactions of any kind). You can share the address with others. In fact, if you want someone to send some Ether or Ocean Tokens to an account, you give them the account's address. - -Note that unlike traditional pocket wallets, crypto wallets don't actually store tokens or Ether. They store private keys. - -## Tutorials - -See the [tutorials about using wallets with Ocean Protocol](/tutorials/introduction/). - -[1]: https://metamask.io/ -[2]: https://trezor.io/ -[3]: https://www.ledger.com/ -[4]: https://www.myetherwallet.com/ -[5]: https://www.mycrypto.com/ diff --git a/content/tutorials/compute-to-data.md b/content/tutorials/compute-to-data.md index 1c1ce6be..93b621d0 100644 --- a/content/tutorials/compute-to-data.md +++ b/content/tutorials/compute-to-data.md @@ -1,6 +1,6 @@ --- title: Set Up a Compute-to-Data Environment -description: Set Up a Compute-to-Data environment. +description: --- ## Requirements diff --git a/content/tutorials/connect-to-networks.md b/content/tutorials/connect-to-networks.md deleted file mode 100644 index 4f787824..00000000 --- a/content/tutorials/connect-to-networks.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Connect to Ocean-Related Networks -description: On connecting to Ethereum, Rinkeby and Your Local Network. ---- - -## Connect to Ethereum mainnet - -Metamask and other ERC20 wallets default to Ethereum mainnet. Therefore your wallet is almost certainly pointing to Ethereum by default. - -Some apps may need `network_id` and `chain_id`. The values are both `1` for Ethereum mainnet. `Symbol` and `nickname` can be whatever value you like. - -## Connect to Rinkeby testnet - -In MetaMask, click on the network name dropdown, then select `Rinkeby`. - -Its `network_id` is 3 and `chain_id` is 3. - -## Connect to local Ganache network - -**Metamask.** In MetaMask, click on the network name then click on `Custom RPC` in the drop-down list. Scroll down to the `New Network` section. Enter the above RPC URL. You don't need to add a port number to the end of the RPC URL. Enter the ChainID, Symbol and Nickname if you like. See the [MetaMask docs about how it uses the ChainID](https://metamask.github.io/metamask-docs/Main_Concepts/Sending_Transactions). - -**Barge.** If you're using Ocean [Barge](https://github.com/oceanprotocol/barge) to help run a local network, you can connect to that local node at RPC URL [http://localhost:8545](http://localhost:8545) (called "Localhost 8545" in MetaMask). You can configure that local node by editing the files in the `barge/networks/pacific/config/` directory. - -## More info - -- [List of Ethereum's Major Networks and Chain ids](https://medium.com/@piyopiyo/list-of-ethereums-major-network-and-chain-ids-2bc58e928508). - -- [Ganache documentation](https://www.trufflesuite.com/ganache) - - diff --git a/content/tutorials/get-ether-and-ocean-tokens.md b/content/tutorials/get-ether-and-ocean-tokens.md deleted file mode 100644 index 6f9cf8d5..00000000 --- a/content/tutorials/get-ether-and-ocean-tokens.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Get ETH and OCEAN Tokens -description: How to get tokens for each network deployment ---- - -### Overview - -In each network, you'll need ETH to pay for gas. Certain Ocean actions will need OCEAN tokens. - -The ETH and OCEAN in Rinkeby and local networks are not "real" ETH or OCEAN tokens of any value. They're simply stand-ins to be able to test. - -### Ethereum mainnet - -- **ETH.** [Here are exchanges](https://www.coingecko.com/en/coins/ethereum#markets) to purchase ETH. - -- **OCEAN.** [Here are exchanges](https://www.coingecko.com/en/coins/ocean-protocol#markets) to purchase OCEAN. - - -### Rinkeby testnet - -Testnets like Rinkeby have faucets to dole out ETH and OCEAN. - -- **ETH.** [Here's an ETH faucet](https://faucet.rinkeby.io/) for Rinkeby. You may find others by [searching](https://www.google.com/search?q=rinkeby+ether+faucet&oq=rinkeby+ether+faucet). - -- **OCEAN.** [Here's an OCEAN faucet](https://faucet.rinkeby.oceanprotocol.com) for Rinkeby. - -### Local network - -Ganache is the local network. Ocean Barge is a tool to help use it. - -- **ETH.** By default, Ganache creates several Ethereum accounts at launch, gives each some ETH, and makes their private keys available in the logs. You can also instruct Ganache to give ETH to specific Ethereum addresses. - -- **OCEAN.** You can deploy an ERC20 token with label OCEAN. You'll see examples in the quickstarts for the Ocean JavaScript and Python drivers. diff --git a/content/tutorials/introduction.md b/content/tutorials/introduction.md index 660ec242..228e00fa 100644 --- a/content/tutorials/introduction.md +++ b/content/tutorials/introduction.md @@ -3,10 +3,9 @@ title: Overview of Tutorials description: --- -These tutorials go beyond the Quickstarts to cover: +These tutorials cover: - Using Web3 wallets with Ocean -- Getting ETH and OCEAN on Ethereum mainnet, and Rinkeby testnet - Set up a marketplace - Run a compute-to-data environment - Storage setup - Azure, AWS or local diff --git a/content/tutorials/wallets-and-ocean-tokens.md b/content/tutorials/wallets-and-ocean-tokens.md index 74b793dc..ff8c0f0f 100644 --- a/content/tutorials/wallets-and-ocean-tokens.md +++ b/content/tutorials/wallets-and-ocean-tokens.md @@ -11,7 +11,9 @@ Almost all ERC-20 wallets require these values for adding a custom token: - Contract Address: `0x967da4048cD07aB37855c090aAF366e4ce1b9F48` - Symbol: `OCEAN` -- Number of precision: `18` +- Decimals: `18` + +The [OCEAN Token page](https://oceanprotocol.com/token) at oceanprotocol.com has further details. ## MetaMask diff --git a/content/tutorials/wallets.md b/content/tutorials/wallets.md new file mode 100644 index 00000000..deb556e4 --- /dev/null +++ b/content/tutorials/wallets.md @@ -0,0 +1,34 @@ +--- +title: Wallet Basics +description: +--- + +Ocean users need an ERC-20 compatible wallet to manage their ETH and OCEAN tokens. + +## Recommendations + +- **Easiest:** Use [MetaMask](https://metamask.io/) browser plug-in. +- **Still easy, but more secure:** Get a [Trezor](https://trezor.io/) or [Ledger](https://www.ledger.com/) hardware wallet, and use MetaMask to interact with it. +- The [OCEAN Token page](https://oceanprotocol.com/token) at oceanprotocol.com lists some other possible wallets. + +## The Meaning of "Wallet" + +A wallet usually means "a thing that stores private keys (and maybe signs transactions)" (explained below). Examples include MetaMask, Trezor, and Ledger wallets. + +A wallet can sometimes mean (web3) _software_ for interacting with a thing that stores private keys. Examples include MetaMask, [MyEtherWallet](https://www.myetherwallet.com/), and [MyCrypto](https://www.mycrypto.com/). + +Note how MetaMask is in both lists! + +## Related Terminology + +When you set up a new wallet, it might generate a **seed phrase** for you. Store that seed phrase somewhere secure and non-digital (e.g. on paper in a safe). It's extremely secret and sensitive. Anyone with your wallet's seed phrase could spend all the Ether and Ocean Tokens in all the accounts in your wallet. + +Once your wallet is set up, it will have one or more **accounts**. + +Each account has several **balances**, e.g. an Ether balance, an Ocean Token balance, and maybe other balances. All balances start at zero. + +An account's Ether balance might be 7.1 ETH in the Ethereum Mainnet, 2.39 ETH in Ropsten testnet. You can move ETH from one network to another only with a specially setup exchange or bridge. The same is true of OCEAN token balances. + +Each account has one **private key** and one **address**. The address can be calculated from the private key. You must keep the private key secret because it's what's needed to spend/transfer ETH and OCEAN (or to sign transactions of any kind). You can share the address with others. In fact, if you want someone to send some ETH or OCEAN to an account, you give them the account's address. + +Note that unlike traditional pocket wallets, crypto wallets don't actually store ETH or OCEAN. They store private keys. diff --git a/data/sidebars/concepts.yml b/data/sidebars/concepts.yml index 6bcd77d7..151c7750 100644 --- a/data/sidebars/concepts.yml +++ b/data/sidebars/concepts.yml @@ -6,18 +6,32 @@ link: /concepts/quickstart/ - title: Architecture Overview link: /concepts/architecture/ - - title: Compute-to-Data - link: /concepts/compute-to-data/ -- group: Networks +- group: Networks & Tokens items: - - title: Network - Ethereum Mainnet + - title: Supported Networks + link: /concepts/networks-overview/ + - title: Connect Wallets to Networks + link: /concepts/connect-to-networks/ + - title: Get ETH and OCEAN Tokens + link: /concepts/get-ether-and-ocean-tokens/ + +- group: Specific Network Info + items: + - title: Ethereum Mainnet link: /concepts/network-ethmainnet/ - - title: Network - Rinkeby + - title: Rinkeby Testnet link: /concepts/network-rinkeby/ - - title: Network - Local / Barge + - title: Ropsten Testnet + link: /concepts/network-ropsten/ + - title: Ganache Local Testnet link: /concepts/network-local/ +- group: Compute-to-Data + items: + - title: Compute-to-Data Overview + link: /concepts/compute-to-data/ + - group: Contribute items: - title: Ways to Contribute @@ -30,10 +44,3 @@ link: /concepts/legal-reqs/ - title: Code of Conduct link: /concepts/code-of-conduct/ - -- group: Extras - items: - - title: Wallet Basics - link: /concepts/wallets/ - - title: Resources - link: /concepts/resources/ diff --git a/data/sidebars/setup.yml b/data/sidebars/setup.yml deleted file mode 100644 index 1eecbe34..00000000 --- a/data/sidebars/setup.yml +++ /dev/null @@ -1,9 +0,0 @@ -- group: Marketplaces - items: - - title: Set Up a Marketplace - link: /setup/marketplace/ - -- group: Compute-to-Data - items: - - title: Run a Compute-to-Data Environment - link: /setup/compute-to-data/ diff --git a/data/sidebars/tutorials.yml b/data/sidebars/tutorials.yml index 78306a52..e07049ef 100644 --- a/data/sidebars/tutorials.yml +++ b/data/sidebars/tutorials.yml @@ -3,16 +3,14 @@ - title: Introduction link: /tutorials/introduction/ -- group: Wallets & Ocean Protocol +- group: Wallets items: + - title: Wallet Basics + link: /tutorials/wallets/ - title: Set Up MetaMask Wallet link: /tutorials/metamask-setup/ - title: Use Your Wallet to Manage OCEAN Tokens link: /tutorials/wallets-and-ocean-tokens/ - - title: Get ETH and OCEAN Tokens - link: /tutorials/get-ether-and-ocean-tokens/ - - title: Connect to Ocean-Related Networks - link: /tutorials/connect-to-networks/ - group: Marketplaces items: