From a35d2d6093d776d61e90fa91e4bef8a55567e25b Mon Sep 17 00:00:00 2001 From: Dmitry K Date: Mon, 16 Dec 2024 13:24:49 -0800 Subject: [PATCH 01/11] add validator cheatsheet --- .../quickstart/validator_cheatsheet.md | 163 ++++++++++++++++-- 1 file changed, 150 insertions(+), 13 deletions(-) diff --git a/docusaurus/docs/operate/quickstart/validator_cheatsheet.md b/docusaurus/docs/operate/quickstart/validator_cheatsheet.md index f12ffe560..07601444f 100644 --- a/docusaurus/docs/operate/quickstart/validator_cheatsheet.md +++ b/docusaurus/docs/operate/quickstart/validator_cheatsheet.md @@ -3,28 +3,165 @@ title: Validator Cheat Sheet sidebar_position: 4 --- -## Validator Cheat Sheet +This cheat sheet provides quick copy-pasta instructions for staking and running a Validator node on Pocket Network. - +- [Prerequisites](#prerequisites) +- [Account Setup](#account-setup) + - [Create and Fund the Validator Account](#create-and-fund-the-validator-account) +- [Get the Validator's PubKey](#get-the-validators-pubkey) +- [Create the Validator JSON File](#create-the-validator-json-file) +- [Create the Validator](#create-the-validator) +- [Verify the Validator Status](#verify-the-validator-status) +- [Additional Commands](#additional-commands) +- [Notes](#notes) -This cheat sheet provides quick copy-pasta like instructions for installing and -running a Validator using an automated script. +## Prerequisites + +1. **Run a Full Node**: Make sure you have followed the [Full Node Cheat Sheet](./full_node_cheatsheet.md) to install and run a Full Node first. + +2. **Install `poktrolld` CLI**: Make sure `poktrolld` is installed and accessible from your command line. + +## Account Setup :::tip -If you're interested in understanding everything, or having full control of every -step, check out the [Validator Walkthrough](../run_a_node/validator_walkthrough.md). +if you're running a full node using the [Full Node Cheat Sheet](./full_node_cheatsheet.md), you can can switch to +the user you created in the full node setup to get access to the `poktrolld` CLI. Like this: + +```bash +su - poktroll +``` ::: -- [Introduction](#introduction) - - [Pre-Requisites](#pre-requisites) +### Create and Fund the Validator Account + +Create a new key pair for the validator: + +```bash +poktrolld keys add validator +``` + +This will generate a new address and mnemonic. **Save the mnemonic securely**. + +Set the validator address in an environment variable for convenience: + +```bash +export VALIDATOR_ADDR=$(poktrolld keys show validator -a) +``` + +Fund the validator account using the TestNet faucet or by transferring tokens from another account. + +Check the balance: + +```bash +poktrolld query bank balances $VALIDATOR_ADDR +``` + +## Get the Validator's PubKey + +To get the validator's public key, run: + +```bash +poktrolld comet show-validator +``` + +This will output something like: + +```json +{"@type":"/cosmos.crypto.ed25519.PubKey","key":"YdlQyhjtrq9pk7afmz6oQ275L4FElzjzEJvB1fj3e1w="} +``` + +Copy the entire output; you will need it in the next step. + +## Create the Validator JSON File + +Create a JSON file named `validator.json` with the following content: + +```json +{ + "pubkey": {"@type":"/cosmos.crypto.ed25519.PubKey","key":"YdlQyhjtrq9pk7afmz6oQ275L4FElzjzEJvB1fj3e1w="}, + "amount": "1000000upokt", + "moniker": "YourValidatorName", + "identity": "", + "website": "", + "security": "", + "details": "", + "commission-rate": "0.100000000000000000", + "commission-max-rate": "0.200000000000000000", + "commission-max-change-rate": "0.010000000000000000", + "min-self-delegation": "1" +} +``` + +- Replace the `"pubkey"` value with the output from `poktrolld comet show-validator`. +- Update the `"amount"` field with the amount you wish to stake (e.g., `"1000000upokt"`). +- Set the `"moniker"` to your validator's name. +- You can optionally fill in `"identity"`, `"website"`, `"security"`, and `"details"`. -## Introduction +## Create the Validator -This guide will help you install a Validator on Pocket Network, -**using helpers that abstract out some of the underlying complexity.** +Run the following command to create the validator: -### Pre-Requisites +```bash +poktrolld tx staking create-validator ~/validator.json --from validator --chain-id pocket-beta --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt --yes +``` -1. **Run a Full Node**: Make sure you have followed the [Full Node Cheat Sheet](../quickstart/full_node_cheatsheet.md) to install and run a Full Node first +This command uses the `validator.json` file to submit the `create-validator` transaction. + +**Example**: + +```bash +poktrolld tx staking create-validator ~/validator.json --from validator --chain-id=pocket-beta --gas=auto --gas-prices=1upokt --gas-adjustment=1.5 --yes +``` + +## Verify the Validator Status + +You can verify the status of your validator by running: + +```bash +poktrolld query staking validator $VALIDATOR_ADDR +``` + +This will display information about your validator, including its status and delegation. + +## Additional Commands + +- **Delegate additional tokens to your validator**: + + ```bash + poktrolld tx staking delegate $VALIDATOR_ADDR 1000000upokt --from your_account --chain-id pocket-beta --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt --yes + ``` + +- **Unbond (undelegate) tokens from your validator**: + + ```bash + poktrolld tx staking unbond $VALIDATOR_ADDR 500000upokt --from your_account --chain-id pocket-beta --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt --yes + ``` + +- **Withdraw rewards**: + + ```bash + poktrolld tx distribution withdraw-rewards $VALIDATOR_ADDR --commission --from validator --chain-id pocket-beta --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt --yes + ``` + +- **Check validator's commission and rewards**: + + ```bash + poktrolld query distribution commission $VALIDATOR_ADDR + poktrolld query distribution rewards $VALIDATOR_ADDR + ``` + +## Notes + +- Ensure your node is fully synced before attempting to create the validator. +- Keep your mnemonic and private keys secure. +- Adjust the `"amount"` in `validator.json` and delegation amounts according to your available balance. +- The `commission-rate`, `commission-max-rate`, and `commission-max-change-rate` are expressed as decimal numbers (e.g., `0.1` for 10%). + +:::tip + +If you're interested in understanding everything, or having full control of every +step, check out the [Validator Walkthrough](../run_a_node/validator_walkthrough.md). + +::: From 273b352901cbb3aca7221cb7c2347d3e192b8903 Mon Sep 17 00:00:00 2001 From: Dmitry K Date: Mon, 16 Dec 2024 14:54:03 -0800 Subject: [PATCH 02/11] add walkthrough --- .../quickstart/validator_cheatsheet.md | 20 +- .../run_a_node/validator_walkthrough.md | 240 +++++++++++++++++- 2 files changed, 238 insertions(+), 22 deletions(-) diff --git a/docusaurus/docs/operate/quickstart/validator_cheatsheet.md b/docusaurus/docs/operate/quickstart/validator_cheatsheet.md index 07601444f..1c69c8044 100644 --- a/docusaurus/docs/operate/quickstart/validator_cheatsheet.md +++ b/docusaurus/docs/operate/quickstart/validator_cheatsheet.md @@ -17,9 +17,7 @@ This cheat sheet provides quick copy-pasta instructions for staking and running ## Prerequisites -1. **Run a Full Node**: Make sure you have followed the [Full Node Cheat Sheet](./full_node_cheatsheet.md) to install and run a Full Node first. - -2. **Install `poktrolld` CLI**: Make sure `poktrolld` is installed and accessible from your command line. +**Run a Full Node**: Make sure you have followed the [Full Node Cheat Sheet](./full_node_cheatsheet.md) to install and run a Full Node first. ## Account Setup @@ -29,7 +27,7 @@ if you're running a full node using the [Full Node Cheat Sheet](./full_node_chea the user you created in the full node setup to get access to the `poktrolld` CLI. Like this: ```bash -su - poktroll +su - poktroll # or a different user if you used a different name ``` ::: @@ -50,7 +48,7 @@ Set the validator address in an environment variable for convenience: export VALIDATOR_ADDR=$(poktrolld keys show validator -a) ``` -Fund the validator account using the TestNet faucet or by transferring tokens from another account. +Fund the validator account using [the faucet](../../explore/tools.md) or by transferring tokens from another account. Check the balance: @@ -104,7 +102,7 @@ Create a JSON file named `validator.json` with the following content: Run the following command to create the validator: ```bash -poktrolld tx staking create-validator ~/validator.json --from validator --chain-id pocket-beta --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt --yes +poktrolld tx staking create-validator ./validator.json --from=validator --chain-id=pocket-beta --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt ``` This command uses the `validator.json` file to submit the `create-validator` transaction. @@ -112,7 +110,7 @@ This command uses the `validator.json` file to submit the `create-validator` tra **Example**: ```bash -poktrolld tx staking create-validator ~/validator.json --from validator --chain-id=pocket-beta --gas=auto --gas-prices=1upokt --gas-adjustment=1.5 --yes +poktrolld tx staking create-validator ./validator.json --from=validator --chain-id=pocket-beta --gas=auto --gas-prices=1upokt --gas-adjustment=1.5 ``` ## Verify the Validator Status @@ -130,19 +128,19 @@ This will display information about your validator, including its status and del - **Delegate additional tokens to your validator**: ```bash - poktrolld tx staking delegate $VALIDATOR_ADDR 1000000upokt --from your_account --chain-id pocket-beta --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt --yes + poktrolld tx staking delegate $VALIDATOR_ADDR 1000000upokt --from your_account --chain-id=pocket-beta --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt ``` - **Unbond (undelegate) tokens from your validator**: ```bash - poktrolld tx staking unbond $VALIDATOR_ADDR 500000upokt --from your_account --chain-id pocket-beta --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt --yes + poktrolld tx staking unbond $VALIDATOR_ADDR 500000upokt --from your_account --chain-id=pocket-beta --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt ``` - **Withdraw rewards**: ```bash - poktrolld tx distribution withdraw-rewards $VALIDATOR_ADDR --commission --from validator --chain-id pocket-beta --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt --yes + poktrolld tx distribution withdraw-rewards $VALIDATOR_ADDR --commission --from validator --chain-id=pocket-beta --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt ``` - **Check validator's commission and rewards**: @@ -161,7 +159,7 @@ This will display information about your validator, including its status and del :::tip -If you're interested in understanding everything, or having full control of every +If you're interested in understanding everything validator related, or having full control of every step, check out the [Validator Walkthrough](../run_a_node/validator_walkthrough.md). ::: diff --git a/docusaurus/docs/operate/run_a_node/validator_walkthrough.md b/docusaurus/docs/operate/run_a_node/validator_walkthrough.md index 6c8842f52..cca1fd6fc 100644 --- a/docusaurus/docs/operate/run_a_node/validator_walkthrough.md +++ b/docusaurus/docs/operate/run_a_node/validator_walkthrough.md @@ -3,27 +3,245 @@ title: Validator Walkthrough sidebar_position: 4 --- -## Validator Walkthrough +This walkthrough provides detailed step-by-step instructions to stake and run a Validator node on Pocket Network. - - -This walkthrough provides a detailed step-by-step instructions to run a validator node for Pocket Network. + :::tip -If you're comfortable using an automated scripts, or simply want to _copy-pasta_ a -few commands to get started, check out the [Validator Cheat Sheet](../quickstart/validator_cheatsheet.md). +If you're interested in a simple guide with _copy-pasta_ of a few commands to get started, check out the [Validator Cheat Sheet](../quickstart/validator_cheatsheet.md) instead. ::: - [Introduction](#introduction) -- [Pre-Requisites](#pre-requisites) +- [Prerequisites](#prerequisites) +- [1. Run a Full Node](#1-run-a-full-node) +- [2. Account Setup](#2-account-setup) + - [2.1. Create and Fund the Validator Account](#21-create-and-fund-the-validator-account) +- [3. Get the Validator's Public Key](#3-get-the-validators-public-key) +- [4. Create the Validator JSON File](#4-create-the-validator-json-file) +- [5. Create the Validator](#5-create-the-validator) +- [6. Verify the Validator Status](#6-verify-the-validator-status) +- [7. Additional Commands](#7-additional-commands) +- [Notes](#notes) ## Introduction -This guide will help you install a Validator on Pocket Network, from scratch, manually, -**giving you control over each step of the process**. +This guide will help you stake and run a Validator node on Pocket Network, from scratch, manually, **giving you control over each step of the process**. + +As a Validator, you'll be participating in the consensus of the network, validating transactions, and securing the blockchain. + +## Prerequisites + +**Run a Full Node**: Ensure you have followed the [Full Node Walkthrough](./full_node_walkthrough.md) to install and run a Full Node. Your node must be fully synced with the network before proceeding. + +## 1. Run a Full Node + +Before becoming a Validator, you need to run a Full Node. If you haven't set up a Full Node yet, please follow the [Full Node Walkthrough](./full_node_walkthrough.md) to install and configure your node. + +:::tip + +if you're already running a full node using the [Full Node Walkthrough](./full_node_walkthrough.md), you can can switch to +the user you created in the full node setup to get access to the `poktrolld` CLI. Like this: + +```bash +su - poktroll # or a different user if you used a different name +``` + +::: + +Ensure your node is running and fully synchronized with the network. You can check the synchronization status by running: + +```bash +poktrolld status +``` + +## 2. Account Setup + +To become a Validator, you need a Validator account with sufficient funds to stake. + +### 2.1. Create and Fund the Validator Account + +Create a new key pair for your Validator account: + +```bash +poktrolld keys add validator +``` + +- This command generates a new key pair and stores it in your local keyring. +- You will see output containing your new address and a mnemonic seed phrase. +- **Important**: Securely save the mnemonic phrase in a safe place. If you lose it, you won't be able to recover your account. + +Set the Validator address as an environment variable for convenience: + +```bash +export VALIDATOR_ADDR=$(poktrolld keys show validator -a) +``` + +You can verify your Validator address by displaying the environment variable: + +```bash +echo $VALIDATOR_ADDR +``` + +Next, fund your Validator account. You need to send tokens to your Validator address to cover staking and transaction fees. + +- On **testnet**, you can use the [faucet](../../explore/tools.md) to obtain tokens. +- On **mainnet**, you'll need to acquire tokens from an exchange or another account. + +Check the balance of your Validator account: + +```bash +poktrolld query bank balances $VALIDATOR_ADDR +``` + +## 3. Get the Validator's Public Key + +Your node has a unique public key associated with it, which is required for creating the Validator. + +To retrieve your node's public key, run: + +```bash +poktrolld comet show-validator +``` + +This command outputs your node's public key in JSON format: + +```json +{"@type":"/cosmos.crypto.ed25519.PubKey","key":"YourPublicKeyHere"} +``` + +- Copy the entire output (including `"@type"` and `"key"`), as you'll need it for the next step. + +## 4. Create the Validator JSON File + +Create a JSON file named `validator.json` in your home directory (or any convenient location), which contains the information required to create your Validator. + +```bash +nano ~/validator.json +``` + +Paste the following content into `validator.json`, replacing placeholders with your information: + +```json +{ + "pubkey": {"@type":"/cosmos.crypto.ed25519.PubKey","key":"YourPublicKeyHere"}, + "amount": "1000000upokt", + "moniker": "YourValidatorName", + "identity": "", + "website": "", + "security": "", + "details": "", + "commission-rate": "0.10", + "commission-max-rate": "0.20", + "commission-max-change-rate": "0.01", + "min-self-delegation": "1" +} +``` -## Pre-Requisites +- **Replace** `"YourPublicKeyHere"` with the `"key"` value from `poktrolld comet show-validator`. +- **Update** `"amount"` with the amount you wish to stake (e.g., `"1000000upokt"`). Ensure this amount is less than or equal to your account balance. +- **Set** `"moniker"` to your desired Validator name. This is how your Validator will appear to others. +- **Optional**: Fill in `"identity"`, `"website"`, `"security"`, and `"details"` if you wish to provide additional information about your Validator. + +Save and close the file. + +## 5. Create the Validator + +Now, you are ready to create your Validator on the network. + +Run the following command: + +```bash +poktrolld tx staking create-validator ~/validator.json --from=validator --chain-id= --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt +``` + +- **Parameters**: + - `~/validator.json`: The path to your validator JSON file. + - `--from=validator`: Specifies the local key to sign the transaction. + - `--chain-id=`: Replace `` with the chain ID of the network you are joining (e.g., `pocket-beta` for testnet). + - `--gas=auto`: Automatically estimate gas required for the transaction. + - `--gas-adjustment=1.5`: Adjust the estimated gas by a factor (can help prevent out-of-gas errors). + - `--gas-prices=1upokt`: Set the gas price; adjust as needed based on network conditions. + +**Example**: + +```bash +poktrolld tx staking create-validator ~/validator.json --from=validator --chain-id=pocket-beta --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt +``` + +After running the command, you should see a transaction confirmation with an output hash. + +## 6. Verify the Validator Status + +To verify that your Validator has been successfully created, run: + +```bash +poktrolld query staking validator $VALIDATOR_ADDR +``` + +This command displays information about your Validator, including status, tokens staked, commission rates, and more. + +Ensure that the `status` field indicates that your Validator is active. + +## 7. Additional Commands + +Here are some useful commands for managing your Validator: + +- **Delegate additional tokens to your Validator**: + + If you wish to increase your self-delegation or others want to delegate to your Validator, use: + + ```bash + poktrolld tx staking delegate $VALIDATOR_ADDR --from --chain-id= --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt + ``` + + Replace `` with the amount to delegate (e.g., `1000000upokt`) and `` with the name of the key in your keyring. + +- **Unbond (undelegate) tokens from your Validator**: + + To unbond a portion of your staked tokens: + + ```bash + poktrolld tx staking unbond $VALIDATOR_ADDR --from --chain-id= --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt + ``` + + Note that unbonding tokens initiates an unbonding period during which the tokens are locked and not earning rewards. The unbonding period duration depends on the network configuration. + +- **Withdraw rewards**: + + To withdraw accumulated rewards from your Validator: + + ```bash + poktrolld tx distribution withdraw-rewards $VALIDATOR_ADDR --commission --from validator --chain-id= --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt + ``` + + The `--commission` flag indicates that you are withdrawing both your commission and rewards. + +- **Check Validator's commission and rewards**: + + To view your Validator's commission: + + ```bash + poktrolld query distribution commission $VALIDATOR_ADDR + ``` + + To view rewards: + + ```bash + poktrolld query distribution rewards $VALIDATOR_ADDR + ``` + +## Notes + +- **Node Synchronization**: Your Full Node must be fully synchronized with the network before creating the Validator. Use `poktrolld status` to check synchronization status. + +- **Security**: Keep your mnemonic phrases and private keys secure. Do not share them or store them in insecure locations. + +- **Monitoring**: Regularly monitor your Validator's status to ensure it remains active and does not get jailed due to downtime or misbehavior. + +- **Upgrades**: Keep your node software up-to-date. Follow upgrade notifications in Pocket Network's [Discord](https://discord.com/invite/pocket-network) and ensure your node is running the [latest recommended version](../../protocol/upgrades/upgrade_list.md). + +--- -1. **Run a Full Node**: Make sure you have followed the [Full Node Walkthrough](../run_a_node/full_node_walkthrough.md) to install and run a Full Node first +Congratulations! You have successfully set up and run a Validator on Pocket Network. Remember to stay engaged with the community and keep your node running smoothly to contribute to the network's security and decentralization. From a7f309b09c35f656fba243df8f078584dac08651 Mon Sep 17 00:00:00 2001 From: Daniel Olshansky Date: Tue, 17 Dec 2024 20:41:03 -0800 Subject: [PATCH 03/11] Review --- .../operate/quickstart/gateway_cheatsheet.md | 7 +- .../operate/quickstart/supplier_cheatsheet.md | 10 +- .../quickstart/validator_cheatsheet.md | 146 ++++++++++++------ 3 files changed, 107 insertions(+), 56 deletions(-) diff --git a/docusaurus/docs/operate/quickstart/gateway_cheatsheet.md b/docusaurus/docs/operate/quickstart/gateway_cheatsheet.md index 741966d13..03ee87cdd 100644 --- a/docusaurus/docs/operate/quickstart/gateway_cheatsheet.md +++ b/docusaurus/docs/operate/quickstart/gateway_cheatsheet.md @@ -22,9 +22,10 @@ streamline development and reduce friction for any new potential contributor. - [Pre-Requisites](#pre-requisites) - [Account Setup](#account-setup) - - [Create and fund the `Gateway` and `Application` accounts](#create-and-fund-the-gateway-and-application-accounts) + - [Create the Gateway and Application accounts](#create-the-gateway-and-application-accounts) - [Prepare your environment](#prepare-your-environment) - [Fund the Gateway and Application accounts](#fund-the-gateway-and-application-accounts) +- [Gateway and Application Configurations](#gateway-and-application-configurations) - [Stake the `Gateway`](#stake-the-gateway) - [Stake the delegating `Application`](#stake-the-delegating-application) - [Delegate the `Application` to the `Gateway`](#delegate-the-application-to-the-gateway) @@ -54,7 +55,7 @@ This is not recommended but provided for convenience for NON PRODUCTION USE ONLY ## Account Setup -### Create and fund the `Gateway` and `Application` accounts +### Create the Gateway and Application accounts Create a new key pair for the delegating `Application`: @@ -116,6 +117,8 @@ You can find all the explorers, faucets and tools at the [tools page](../../expl ::: +## Gateway and Application Configurations + ### Stake the `Gateway` Create a Gateway stake configuration file: diff --git a/docusaurus/docs/operate/quickstart/supplier_cheatsheet.md b/docusaurus/docs/operate/quickstart/supplier_cheatsheet.md index 0b5f7115b..77a0f69e9 100644 --- a/docusaurus/docs/operate/quickstart/supplier_cheatsheet.md +++ b/docusaurus/docs/operate/quickstart/supplier_cheatsheet.md @@ -23,10 +23,10 @@ streamline development and reduce friction for any new potential contributor. - [Pre-Requisites](#pre-requisites) - [Context](#context) - [Account Setup](#account-setup) - - [Create and fund the `Supplier` account](#create-and-fund-the-supplier-account) + - [Create the `Supplier` account](#create-the-supplier-account) - [Prepare your environment](#prepare-your-environment) -- [Supplier Configuration](#supplier-configuration) - [Fund the Supplier account](#fund-the-supplier-account) +- [Supplier Configuration](#supplier-configuration) - [Stake the Supplier](#stake-the-supplier) - [RelayMiner Configuration](#relayminer-configuration) - [Configure the RelayMiner](#configure-the-relayminer) @@ -66,7 +66,7 @@ By the end of it, you should be able to serve Relays off-chain, and claim on-cha ## Account Setup -### Create and fund the `Supplier` account +### Create the `Supplier` account Create a new key pair for the `Supplier` @@ -96,8 +96,6 @@ your `~/.profile` (or `~/.bashrc`) file for a cleaner organization. ::: -## Supplier Configuration - ### Fund the Supplier account Run the following command to get the `Supplier`: @@ -121,6 +119,8 @@ You can find all the explorers, faucets and tools at the [tools page](../../expl ::: +## Supplier Configuration + ### Stake the Supplier :::info diff --git a/docusaurus/docs/operate/quickstart/validator_cheatsheet.md b/docusaurus/docs/operate/quickstart/validator_cheatsheet.md index 1c69c8044..832a8d16a 100644 --- a/docusaurus/docs/operate/quickstart/validator_cheatsheet.md +++ b/docusaurus/docs/operate/quickstart/validator_cheatsheet.md @@ -5,19 +5,34 @@ sidebar_position: 4 This cheat sheet provides quick copy-pasta instructions for staking and running a Validator node on Pocket Network. +:::info + +If you're interested in understanding everything validator related, or having full control of every +step, check out the [Validator Walkthrough](../run_a_node/validator_walkthrough.md). + +::: + - [Prerequisites](#prerequisites) - [Account Setup](#account-setup) - - [Create and Fund the Validator Account](#create-and-fund-the-validator-account) -- [Get the Validator's PubKey](#get-the-validators-pubkey) -- [Create the Validator JSON File](#create-the-validator-json-file) -- [Create the Validator](#create-the-validator) -- [Verify the Validator Status](#verify-the-validator-status) -- [Additional Commands](#additional-commands) -- [Notes](#notes) + - [Create the Validator Account](#create-the-validator-account) + - [Prepare your environment](#prepare-your-environment) + - [Fund the Validator account](#fund-the-validator-account) +- [Configure the Validator](#configure-the-validator) + - [Get the Validator's PubKey](#get-the-validators-pubkey) + - [Create the Validator JSON File](#create-the-validator-json-file) + - [Create the Validator](#create-the-validator) + - [Verify the Validator Status](#verify-the-validator-status) +- [Validator FAQ](#validator-faq) + - [How do I delegate additional tokens to my validator?](#how-do-i-delegate-additional-tokens-to-my-validator) + - [How do I unbond (undelegate) tokens from my validator?](#how-do-i-unbond-undelegate-tokens-from-my-validator) + - [How do I withdraw my validator rewards?](#how-do-i-withdraw-my-validator-rewards) + - [How do I check my validator's commission and rewards?](#how-do-i-check-my-validators-commission-and-rewards) +- [Troubleshooting and Critical Notes](#troubleshooting-and-critical-notes) ## Prerequisites -**Run a Full Node**: Make sure you have followed the [Full Node Cheat Sheet](./full_node_cheatsheet.md) to install and run a Full Node first. +1. **CLI**: Make sure to [install the `poktrolld` CLI](../user_guide/install.md). +2. **Full Node**: Make sure you have followed the [Full Node Cheat Sheet](./full_node_cheatsheet.md) to install and run a Full Node first. ## Account Setup @@ -32,7 +47,7 @@ su - poktroll # or a different user if you used a different name ::: -### Create and Fund the Validator Account +### Create the Validator Account Create a new key pair for the validator: @@ -42,21 +57,53 @@ poktrolld keys add validator This will generate a new address and mnemonic. **Save the mnemonic securely**. -Set the validator address in an environment variable for convenience: +### Prepare your environment + +For convenience, we're setting several environment variables to streamline +the process of interacting with the Shannon network: + +We recommend you put these in your `~/.bashrc` file: ```bash +export NODE="https://shannon-testnet-grove-rpc.beta.poktroll.com" +export NODE_FLAGS="--node=https://shannon-testnet-grove-rpc.beta.poktroll.com" +export TX_PARAM_FLAGS="--gas=auto --gas-prices=1upokt --gas-adjustment=1.5 --chain-id=pocket-beta --yes" export VALIDATOR_ADDR=$(poktrolld keys show validator -a) ``` -Fund the validator account using [the faucet](../../explore/tools.md) or by transferring tokens from another account. +:::tip -Check the balance: +As an alternative to appending directly to `~/.bashrc`, you can put the above +in a special `~/.poktrollrc` and add `source ~/.poktrollrc` to +your `~/.profile` (or `~/.bashrc`) file for a cleaner organization. + +::: + +### Fund the Validator account + +Run the following command to get the `Validator`: + +```bash +echo "Validator address: $VALIDATOR_ADDR" +``` + +Then use the [Shannon Beta TestNet faucet](https://faucet.beta.testnet.pokt.network/) to fund the validator account. + +Afterwards, you can query the balance using the following command: ```bash -poktrolld query bank balances $VALIDATOR_ADDR +poktrolld query bank balances $VALIDATOR_ADDR $NODE_FLAGS ``` -## Get the Validator's PubKey +:::tip + +You can find all the explorers, faucets and tools at the [tools page](../../explore/tools.md). + +::: + +## Configure the Validator + +### Get the Validator's PubKey To get the validator's public key, run: @@ -67,18 +114,24 @@ poktrolld comet show-validator This will output something like: ```json -{"@type":"/cosmos.crypto.ed25519.PubKey","key":"YdlQyhjtrq9pk7afmz6oQ275L4FElzjzEJvB1fj3e1w="} +{ + "@type": "/cosmos.crypto.ed25519.PubKey", + "key": "YdlQyhjtrq9pk7afmz6oQ275L4FElzjzEJvB1fj3e1w=" +} ``` -Copy the entire output; you will need it in the next step. +**Copy the entire output; you will need it in the next step.** -## Create the Validator JSON File +### Create the Validator JSON File Create a JSON file named `validator.json` with the following content: ```json { - "pubkey": {"@type":"/cosmos.crypto.ed25519.PubKey","key":"YdlQyhjtrq9pk7afmz6oQ275L4FElzjzEJvB1fj3e1w="}, + "pubkey": { + "@type": "/cosmos.crypto.ed25519.PubKey", + "key": "YdlQyhjtrq9pk7afmz6oQ275L4FElzjzEJvB1fj3e1w=" + }, "amount": "1000000upokt", "moniker": "YourValidatorName", "identity": "", @@ -92,28 +145,30 @@ Create a JSON file named `validator.json` with the following content: } ``` +Make the following changes: + - Replace the `"pubkey"` value with the output from `poktrolld comet show-validator`. - Update the `"amount"` field with the amount you wish to stake (e.g., `"1000000upokt"`). - Set the `"moniker"` to your validator's name. - You can optionally fill in `"identity"`, `"website"`, `"security"`, and `"details"`. -## Create the Validator +### Create the Validator Run the following command to create the validator: ```bash -poktrolld tx staking create-validator ./validator.json --from=validator --chain-id=pocket-beta --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt +poktrolld tx staking create-validator ./validator.json --from=validator $TX_PARAM_FLAGS $NODE_FLAGS ``` This command uses the `validator.json` file to submit the `create-validator` transaction. -**Example**: +For example: ```bash -poktrolld tx staking create-validator ./validator.json --from=validator --chain-id=pocket-beta --gas=auto --gas-prices=1upokt --gas-adjustment=1.5 +poktrolld tx staking create-validator ./validator.json --from=validator $TX_PARAM_FLAGS $NODE_FLAGS ``` -## Verify the Validator Status +### Verify the Validator Status You can verify the status of your validator by running: @@ -123,43 +178,36 @@ poktrolld query staking validator $VALIDATOR_ADDR This will display information about your validator, including its status and delegation. -## Additional Commands +## Validator FAQ -- **Delegate additional tokens to your validator**: +### How do I delegate additional tokens to my validator? - ```bash - poktrolld tx staking delegate $VALIDATOR_ADDR 1000000upokt --from your_account --chain-id=pocket-beta --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt - ``` +```bash +poktrolld tx staking delegate $VALIDATOR_ADDR 1000000upokt --from your_account --chain-id=pocket-beta --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt +``` -- **Unbond (undelegate) tokens from your validator**: +### How do I unbond (undelegate) tokens from my validator? - ```bash - poktrolld tx staking unbond $VALIDATOR_ADDR 500000upokt --from your_account --chain-id=pocket-beta --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt - ``` +```bash +poktrolld tx staking unbond $VALIDATOR_ADDR 500000upokt --from your_account --chain-id=pocket-beta --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt +``` -- **Withdraw rewards**: +### How do I withdraw my validator rewards? - ```bash - poktrolld tx distribution withdraw-rewards $VALIDATOR_ADDR --commission --from validator --chain-id=pocket-beta --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt - ``` +```bash +poktrolld tx distribution withdraw-rewards $VALIDATOR_ADDR --commission --from validator --chain-id=pocket-beta --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt +``` -- **Check validator's commission and rewards**: +### How do I check my validator's commission and rewards? - ```bash - poktrolld query distribution commission $VALIDATOR_ADDR - poktrolld query distribution rewards $VALIDATOR_ADDR - ``` +```bash +poktrolld query distribution commission $VALIDATOR_ADDR +poktrolld query distribution rewards $VALIDATOR_ADDR +``` -## Notes +## Troubleshooting and Critical Notes - Ensure your node is fully synced before attempting to create the validator. - Keep your mnemonic and private keys secure. - Adjust the `"amount"` in `validator.json` and delegation amounts according to your available balance. - The `commission-rate`, `commission-max-rate`, and `commission-max-change-rate` are expressed as decimal numbers (e.g., `0.1` for 10%). - -:::tip - -If you're interested in understanding everything validator related, or having full control of every -step, check out the [Validator Walkthrough](../run_a_node/validator_walkthrough.md). - -::: From 3e6e000b514809ef9c58a606f8230b57bf229ce1 Mon Sep 17 00:00:00 2001 From: Dmitry K Date: Fri, 20 Dec 2024 13:46:31 -0800 Subject: [PATCH 04/11] requested changes --- .../quickstart/validator_cheatsheet.md | 15 ---- .../run_a_node/validator_walkthrough.md | 73 ++++++++----------- 2 files changed, 30 insertions(+), 58 deletions(-) diff --git a/docusaurus/docs/operate/quickstart/validator_cheatsheet.md b/docusaurus/docs/operate/quickstart/validator_cheatsheet.md index 832a8d16a..28a10052d 100644 --- a/docusaurus/docs/operate/quickstart/validator_cheatsheet.md +++ b/docusaurus/docs/operate/quickstart/validator_cheatsheet.md @@ -25,8 +25,6 @@ step, check out the [Validator Walkthrough](../run_a_node/validator_walkthrough. - [Validator FAQ](#validator-faq) - [How do I delegate additional tokens to my validator?](#how-do-i-delegate-additional-tokens-to-my-validator) - [How do I unbond (undelegate) tokens from my validator?](#how-do-i-unbond-undelegate-tokens-from-my-validator) - - [How do I withdraw my validator rewards?](#how-do-i-withdraw-my-validator-rewards) - - [How do I check my validator's commission and rewards?](#how-do-i-check-my-validators-commission-and-rewards) - [Troubleshooting and Critical Notes](#troubleshooting-and-critical-notes) ## Prerequisites @@ -192,19 +190,6 @@ poktrolld tx staking delegate $VALIDATOR_ADDR 1000000upokt --from your_account - poktrolld tx staking unbond $VALIDATOR_ADDR 500000upokt --from your_account --chain-id=pocket-beta --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt ``` -### How do I withdraw my validator rewards? - -```bash -poktrolld tx distribution withdraw-rewards $VALIDATOR_ADDR --commission --from validator --chain-id=pocket-beta --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt -``` - -### How do I check my validator's commission and rewards? - -```bash -poktrolld query distribution commission $VALIDATOR_ADDR -poktrolld query distribution rewards $VALIDATOR_ADDR -``` - ## Troubleshooting and Critical Notes - Ensure your node is fully synced before attempting to create the validator. diff --git a/docusaurus/docs/operate/run_a_node/validator_walkthrough.md b/docusaurus/docs/operate/run_a_node/validator_walkthrough.md index cca1fd6fc..ea93da23b 100644 --- a/docusaurus/docs/operate/run_a_node/validator_walkthrough.md +++ b/docusaurus/docs/operate/run_a_node/validator_walkthrough.md @@ -5,8 +5,6 @@ sidebar_position: 4 This walkthrough provides detailed step-by-step instructions to stake and run a Validator node on Pocket Network. - - :::tip If you're interested in a simple guide with _copy-pasta_ of a few commands to get started, check out the [Validator Cheat Sheet](../quickstart/validator_cheatsheet.md) instead. @@ -17,7 +15,9 @@ If you're interested in a simple guide with _copy-pasta_ of a few commands to ge - [Prerequisites](#prerequisites) - [1. Run a Full Node](#1-run-a-full-node) - [2. Account Setup](#2-account-setup) - - [2.1. Create and Fund the Validator Account](#21-create-and-fund-the-validator-account) + - [2.1. Create the Validator Account](#21-create-the-validator-account) + - [2.2. Prepare your environment](#22-prepare-your-environment) + - [2.3. Fund the Validator Account](#23-fund-the-validator-account) - [3. Get the Validator's Public Key](#3-get-the-validators-public-key) - [4. Create the Validator JSON File](#4-create-the-validator-json-file) - [5. Create the Validator](#5-create-the-validator) @@ -60,7 +60,7 @@ poktrolld status To become a Validator, you need a Validator account with sufficient funds to stake. -### 2.1. Create and Fund the Validator Account +### 2.1. Create the Validator Account Create a new key pair for your Validator account: @@ -68,33 +68,44 @@ Create a new key pair for your Validator account: poktrolld keys add validator ``` -- This command generates a new key pair and stores it in your local keyring. -- You will see output containing your new address and a mnemonic seed phrase. -- **Important**: Securely save the mnemonic phrase in a safe place. If you lose it, you won't be able to recover your account. +### 2.2. Prepare your environment -Set the Validator address as an environment variable for convenience: +For convenience, we're setting several environment variables to streamline +the process of interacting with the network: ```bash +export NODE="https://shannon-testnet-grove-rpc.beta.poktroll.com" +export NODE_FLAGS="--node=https://shannon-testnet-grove-rpc.beta.poktroll.com" +export TX_PARAM_FLAGS="--gas=auto --gas-prices=1upokt --gas-adjustment=1.5 --chain-id=pocket-beta --yes" export VALIDATOR_ADDR=$(poktrolld keys show validator -a) ``` -You can verify your Validator address by displaying the environment variable: +:::tip +As an alternative to appending directly to `~/.bashrc`, you can put the above +in a special `~/.poktrollrc` and add `source ~/.poktrollrc` to +your `~/.profile` (or `~/.bashrc`) file for a cleaner organization. +::: + +### 2.3. Fund the Validator Account + +Run the following command to get the `Validator`: ```bash -echo $VALIDATOR_ADDR +echo "Validator address: $VALIDATOR_ADDR" ``` -Next, fund your Validator account. You need to send tokens to your Validator address to cover staking and transaction fees. - -- On **testnet**, you can use the [faucet](../../explore/tools.md) to obtain tokens. -- On **mainnet**, you'll need to acquire tokens from an exchange or another account. +Then use the [Shannon Beta TestNet faucet](https://faucet.beta.testnet.pokt.network/) to fund the validator account. Check the balance of your Validator account: ```bash -poktrolld query bank balances $VALIDATOR_ADDR +poktrolld query bank balances $VALIDATOR_ADDR $NODE_FLAGS ``` +:::tip +You can find all the explorers, faucets and tools at the [tools page](../../explore/tools.md). +::: + ## 3. Get the Validator's Public Key Your node has a unique public key associated with it, which is required for creating the Validator. @@ -153,7 +164,7 @@ Now, you are ready to create your Validator on the network. Run the following command: ```bash -poktrolld tx staking create-validator ~/validator.json --from=validator --chain-id= --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt +poktrolld tx staking create-validator ~/validator.json --from=validator $TX_PARAM_FLAGS $NODE_FLAGS ``` - **Parameters**: @@ -193,7 +204,7 @@ Here are some useful commands for managing your Validator: If you wish to increase your self-delegation or others want to delegate to your Validator, use: ```bash - poktrolld tx staking delegate $VALIDATOR_ADDR --from --chain-id= --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt + poktrolld tx staking delegate $VALIDATOR_ADDR --from $TX_PARAM_FLAGS $NODE_FLAGS ``` Replace `` with the amount to delegate (e.g., `1000000upokt`) and `` with the name of the key in your keyring. @@ -203,34 +214,10 @@ Here are some useful commands for managing your Validator: To unbond a portion of your staked tokens: ```bash - poktrolld tx staking unbond $VALIDATOR_ADDR --from --chain-id= --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt - ``` - - Note that unbonding tokens initiates an unbonding period during which the tokens are locked and not earning rewards. The unbonding period duration depends on the network configuration. - -- **Withdraw rewards**: - - To withdraw accumulated rewards from your Validator: - - ```bash - poktrolld tx distribution withdraw-rewards $VALIDATOR_ADDR --commission --from validator --chain-id= --gas=auto --gas-adjustment=1.5 --gas-prices=1upokt - ``` - - The `--commission` flag indicates that you are withdrawing both your commission and rewards. - -- **Check Validator's commission and rewards**: - - To view your Validator's commission: - - ```bash - poktrolld query distribution commission $VALIDATOR_ADDR + poktrolld tx staking unbond $VALIDATOR_ADDR --from $TX_PARAM_FLAGS $NODE_FLAGS ``` - To view rewards: - - ```bash - poktrolld query distribution rewards $VALIDATOR_ADDR - ``` + Note that unbonding tokens initiates an unbonding period during which the tokens are locked. The unbonding period duration depends on the network configuration. ## Notes From 2ed896306d0545cc1b2585f60e166f1136ba2a89 Mon Sep 17 00:00:00 2001 From: Dmitry K Date: Thu, 30 Jan 2025 15:02:11 -0800 Subject: [PATCH 05/11] change link --- docusaurus/docs/operate/quickstart/validator_cheatsheet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docusaurus/docs/operate/quickstart/validator_cheatsheet.md b/docusaurus/docs/operate/quickstart/validator_cheatsheet.md index 28a10052d..9135736b8 100644 --- a/docusaurus/docs/operate/quickstart/validator_cheatsheet.md +++ b/docusaurus/docs/operate/quickstart/validator_cheatsheet.md @@ -29,7 +29,7 @@ step, check out the [Validator Walkthrough](../run_a_node/validator_walkthrough. ## Prerequisites -1. **CLI**: Make sure to [install the `poktrolld` CLI](../user_guide/install.md). +1. **CLI**: Make sure to [install the `poktrolld` CLI](../user_guide/poktrolld_cli.md). 2. **Full Node**: Make sure you have followed the [Full Node Cheat Sheet](./full_node_cheatsheet.md) to install and run a Full Node first. ## Account Setup From 2e49d7c642efcff6ea1164a7d50e0305fcc815ce Mon Sep 17 00:00:00 2001 From: Daniel Olshansky Date: Wed, 5 Feb 2025 19:03:23 -0800 Subject: [PATCH 06/11] WIP --- README.md | 54 ++--------- docusaurus/docs/README.md | 83 +++++++++++------ .../develop/developer_guide/walkthrough.md | 6 +- .../infrastructure/_category_.json | 0 .../access_dashboard_on_service.png | Bin .../infrastructure/devnet.md | 0 .../infrastructure/gcp_workloads.png | Bin .../infrastructure/grafana_explore_logs.png | Bin .../infrastructure/grafana_save_dashboard.png | Bin .../infrastructure/localnet.md | 0 .../infrastructure/private_testnet.md | 0 .../infrastructure/repositories.md | 0 .../infrastructure/testnet.md | 0 .../testing/_category_.json | 0 .../testing/load_testing.md | 0 .../testing/load_testing_devnet.md | 0 .../testing/load_testing_plan_1.md | 0 .../testing/load_testing_testnet.md | 0 docusaurus/docs/explore/roadmap.md | 64 ------------- .../docs/operate/cheat_sheets/_category_.json | 8 ++ .../docker_compose_debian_cheatsheet.md | 2 +- .../docker_compose_walkthrough.md | 6 +- .../full_node_cheatsheet.md | 42 ++++----- .../gateway_cheatsheet.md | 10 +-- .../service_cheatsheet.md | 6 +- .../supplier_cheatsheet.md | 10 +-- .../validator_cheatsheet.md | 6 +- .../hardware_requirements.md | 0 .../docs/operate/quickstart/_category_.json | 8 -- .../docs/operate/run_a_node/_category_.json | 8 -- .../docs/operate/walkthroughs/_category_.json | 8 ++ .../full_node_docker.md | 4 +- .../full_node_walkthrough.md | 4 +- .../gateway_walkthrough.md | 2 +- .../supplier_walkthrough.md | 2 +- .../validator_walkthrough.md | 4 +- .../protocol/upgrades/protocol_upgrades.md | 2 +- .../docs/protocol/upgrades/release_process.md | 2 +- .../protocol/upgrades/upgrade_procedure.md | 4 +- .../docs/{explore => tools}/_category_.json | 0 docusaurus/docs/{explore => tools}/genesis.md | 0 docusaurus/docs/{explore => tools}/rpc.md | 0 docusaurus/docs/{explore => tools}/tools.md | 0 .../user_guide/_category_.json | 0 .../user_guide/app-transfer.md | 0 .../user_guide/check-balance.md | 0 .../user_guide/create-new-wallet.md | 0 .../user_guide/poktrolld_cli.md | 0 .../user_guide/recover-with-mnemonic.md | 0 .../user_guide/send-tokens.md | 0 docusaurus/docusaurus.config.js | 21 +++-- docusaurus/sidebars.js | 4 +- docusaurus/static/img/logo-large-white.png | Bin 0 -> 14066 bytes docusaurus/static/img/logo-large.png | Bin 0 -> 13149 bytes .../static/img/logo-monochrome-black.png | Bin 0 -> 12694 bytes .../static/img/logo-monochrome-white.png | Bin 0 -> 11750 bytes docusaurus/static/img/logo.png | Bin 3889 -> 14066 bytes tools/installer/full-node.sh | 84 +++++++++++------- 58 files changed, 200 insertions(+), 254 deletions(-) rename docusaurus/docs/{operate => develop}/infrastructure/_category_.json (100%) rename docusaurus/docs/{operate => develop}/infrastructure/access_dashboard_on_service.png (100%) rename docusaurus/docs/{operate => develop}/infrastructure/devnet.md (100%) rename docusaurus/docs/{operate => develop}/infrastructure/gcp_workloads.png (100%) rename docusaurus/docs/{operate => develop}/infrastructure/grafana_explore_logs.png (100%) rename docusaurus/docs/{operate => develop}/infrastructure/grafana_save_dashboard.png (100%) rename docusaurus/docs/{operate => develop}/infrastructure/localnet.md (100%) rename docusaurus/docs/{operate => develop}/infrastructure/private_testnet.md (100%) rename docusaurus/docs/{operate => develop}/infrastructure/repositories.md (100%) rename docusaurus/docs/{operate => develop}/infrastructure/testnet.md (100%) rename docusaurus/docs/{operate => develop}/testing/_category_.json (100%) rename docusaurus/docs/{operate => develop}/testing/load_testing.md (100%) rename docusaurus/docs/{operate => develop}/testing/load_testing_devnet.md (100%) rename docusaurus/docs/{operate => develop}/testing/load_testing_plan_1.md (100%) rename docusaurus/docs/{operate => develop}/testing/load_testing_testnet.md (100%) delete mode 100644 docusaurus/docs/explore/roadmap.md create mode 100644 docusaurus/docs/operate/cheat_sheets/_category_.json rename docusaurus/docs/operate/{quickstart => cheat_sheets}/docker_compose_debian_cheatsheet.md (99%) rename docusaurus/docs/operate/{quickstart => cheat_sheets}/docker_compose_walkthrough.md (99%) rename docusaurus/docs/operate/{quickstart => cheat_sheets}/full_node_cheatsheet.md (85%) rename docusaurus/docs/operate/{quickstart => cheat_sheets}/gateway_cheatsheet.md (96%) rename docusaurus/docs/operate/{quickstart => cheat_sheets}/service_cheatsheet.md (94%) rename docusaurus/docs/operate/{quickstart => cheat_sheets}/supplier_cheatsheet.md (96%) rename docusaurus/docs/operate/{quickstart => cheat_sheets}/validator_cheatsheet.md (77%) rename docusaurus/docs/operate/{run_a_node => configs}/hardware_requirements.md (100%) delete mode 100644 docusaurus/docs/operate/quickstart/_category_.json delete mode 100644 docusaurus/docs/operate/run_a_node/_category_.json create mode 100644 docusaurus/docs/operate/walkthroughs/_category_.json rename docusaurus/docs/operate/{run_a_node => walkthroughs}/full_node_docker.md (92%) rename docusaurus/docs/operate/{run_a_node => walkthroughs}/full_node_walkthrough.md (98%) rename docusaurus/docs/operate/{run_a_node => walkthroughs}/gateway_walkthrough.md (94%) rename docusaurus/docs/operate/{run_a_node => walkthroughs}/supplier_walkthrough.md (94%) rename docusaurus/docs/operate/{run_a_node => walkthroughs}/validator_walkthrough.md (84%) rename docusaurus/docs/{explore => tools}/_category_.json (100%) rename docusaurus/docs/{explore => tools}/genesis.md (100%) rename docusaurus/docs/{explore => tools}/rpc.md (100%) rename docusaurus/docs/{explore => tools}/tools.md (100%) rename docusaurus/docs/{operate => tools}/user_guide/_category_.json (100%) rename docusaurus/docs/{operate => tools}/user_guide/app-transfer.md (100%) rename docusaurus/docs/{operate => tools}/user_guide/check-balance.md (100%) rename docusaurus/docs/{operate => tools}/user_guide/create-new-wallet.md (100%) rename docusaurus/docs/{operate => tools}/user_guide/poktrolld_cli.md (100%) rename docusaurus/docs/{operate => tools}/user_guide/recover-with-mnemonic.md (100%) rename docusaurus/docs/{operate => tools}/user_guide/send-tokens.md (100%) create mode 100644 docusaurus/static/img/logo-large-white.png create mode 100644 docusaurus/static/img/logo-large.png create mode 100644 docusaurus/static/img/logo-monochrome-black.png create mode 100644 docusaurus/static/img/logo-monochrome-white.png diff --git a/README.md b/README.md index cfb6f41e3..f15551f70 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,9 @@ + + + @@ -22,52 +25,13 @@ # poktroll -**poktroll** is built using the [Cosmos SDK](https://docs.cosmos.network) and -[CometBFT](https://cometbft.com/), created with [Ignite CLI](https://ignite.com/cli) -for the Shannon upgrade of the [Pocket Network](https://pokt.network) blockchain. - -- [Learn about Pocket Network](#learn-about-pocket-network) -- [Developer Documentation](#developer-documentation) -- [Roadmap](#roadmap) -- [Quickstart](#quickstart) -- [Godoc](#godoc) -- [Have questions? Ask An PNYX](#have-questions-ask-an-pnyx) -- [License](#license) - -## Learn about Pocket Network - -User friendly documentation of the Shannon upgrade is still a WIP, but there are -a handful of (potentially outdated) resources you can reference in the meantime -to build a better understanding of Pocket Network: - -- [Pocket Network official documentation](https://docs.pokt.network) -- [[Live] Pocket Network Morse; aka v0](https://github.com/pokt-network/pocket-core) -- [[Outdated] Pocket Network Protocol](https://github.com/pokt-network/pocket-network-protocol) -- [[Deprecated]Pocket Network V1](https://github.com/pokt-network/pocket) - -## Developer Documentation - -The developer documentation is available at [dev.poktroll.com](https://dev.poktroll.com). - -## Roadmap - -You can view the Shannon Roadmap on [Github](https://github.com/orgs/pokt-network/projects/144?query=is%3Aopen+sort%3Aupdated-desc) - -## Quickstart - -The best way to get involved is by following the [quickstart instructions](https://dev.poktroll.com/develop/developer_guide/quickstart). - -## Godoc - -The Godoc for the source code in this can be found at [pkg.go.dev/github.com/pokt-network/poktroll](https://pkg.go.dev/github.com/pokt-network/poktroll). - -## Have questions? Ask An PNYX +**poktroll** is the source code for [Pocket Network's](https://pokt.network/) +[Shannon upgrade](https://docs.pokt.network/pokt-protocol/the-shannon-upgrade). -You can use [PNYX](https://migration.pnyxai.com/), an AI-powered search engine that has been -trained and indexed on the Pocket Network documentation, community calls, forums -and much more! +For technical documentation, visit [dev.poktroll.com](https://dev.poktroll.com). ---- +Documentation is maintained in the [docusaurus repo](./docusaurus) and is +automatically deployed to the link above. ## License diff --git a/docusaurus/docs/README.md b/docusaurus/docs/README.md index 1de7ee4d7..bc3b04b94 100644 --- a/docusaurus/docs/README.md +++ b/docusaurus/docs/README.md @@ -5,12 +5,23 @@ id: home-doc slug: / --- + + + +:::note Pocket Network Project Documentation + +This is the living technical documentation for the protocol design, implementation, +and operation. If you're looking for general documentation related to Pocket Network, +please visit [docs.pokt.network](https://docs.pokt.network). + +::: +
@@ -27,47 +38,63 @@ slug: /
-# poktroll +## Pocket Network Shannon Technical Docs (aka poktroll) + +**poktroll** is the source code and core implementation of the [Shannon upgrade](https://docs.pokt.network/pokt-protocol/the-shannon-upgrade) for [Pocket Network](https://pokt.network/). + +`poktroll` is built using the [Cosmos SDK](https://docs.cosmos.network), [CometBFT](https://cometbft.com/) and [Ignite CLI](https://ignite.com/cli). + +## What is Pocket Network? + +:::note 🚧 Under Construction 🚧 -**poktroll** is built using the [Cosmos SDK](https://docs.cosmos.network) and -[CometBFT](https://cometbft.com/), created with [Ignite CLI](https://ignite.com/cli) -for the Shannon upgrade of the [Pocket Network](https://pokt.network) blockchain. +This documentation is not intended to answer this question as of 02/2025 -- [Learn about Pocket Network](#learn-about-pocket-network) -- [Roadmap](#roadmap) -- [Quickstart](#quickstart) -- [Godoc](#godoc) -- [Have questions? Ask An PNYC](#have-questions-ask-an-pnyc) +Consider reading [this post from 02/2025](https://medium.com/decentralized-infrastructure/an-update-from-grove-on-shannon-beta-testnet-path-the-past-the-future-5bf7ec2a9acf) by @olshansk +to get some understanding of why you need Pocket & Grove. + +::: + +--- + +## Table of Contents + +- [Where do I start?](#where-do-i-start) +- [Shannon Roadmap](#shannon-roadmap) +- [PATH for Gateways](#path-for-gateways) +- [GoDoc Documentation](#godoc-documentation) - [License](#license) -## Learn about Pocket Network +## Where do I start? -User friendly documentation of the Shannon upgrade is still a WIP, but there are -a handful of (potentially outdated) resources you can reference in the meantime -to build a better understanding of Pocket Network: +1. [Guides & Deployment](./operate/): Deployment cheat sheets and config overviews for node runners, infrastructure operators and CLI users. +2. [Tools & Explorers](tools): Explorers, wallets, faucets and other resources to interact with the network. +3. [Core Developers](./develop/): Guides & walkthroughs for core or external developers looking to contribute to the core protocol or SDK. +4. [Protocol Design](./protocol/): Learn more about tokenomics design & protocol architecture. -- [Pocket Network official documentation](https://docs.pokt.network) -- [[Live] Pocket Network Morse; aka v0](https://github.com/pokt-network/pocket-core) -- [[Outdated] Pocket Network Protocol](https://github.com/pokt-network/pocket-network-protocol) -- [[Deprecated]Pocket Network V1](https://github.com/pokt-network/pocket) +:::note 🚧 Under Construction 🚧 -## Roadmap +As of 02/2025, this documentation is under construction and does not have a clear +user journey. Different parts are intended to serve as references one can link to +or jump to/from to when needed. -You can view the Shannon Roadmap on [Github](https://github.com/orgs/pokt-network/projects/144?query=is%3Aopen+sort%3Aupdated-desc) +::: -## Quickstart +## Shannon Roadmap -The best way to get involved is by following the [quickstart instructions](develop/developer_guide/walkthrough.md). +The Shannon Roadmap, along with all past, active and future work is tracked via [this Github project](https://github.com/orgs/pokt-network/projects/144). -## Godoc +## PATH for Gateways -The Godoc for the source code in this can be found at [pkg.go.dev/github.com/pokt-network/poktroll](https://pkg.go.dev/github.com/pokt-network/poktroll). +[Grove](https://grove.city/) is developing [PATH](https://path.grove.city/) for +anyone who aims to deploy a Pocket Network gateway. Visit the [docs](https://path.grove.city/) +to get started. -## Have questions? Ask An PNYC +The PATH Roadmap, along with all past, active and future work is tracked via [this Github project](https://github.com/orgs/buildwithgrove/projects/1). -You can use [PNYX](https://pnyxai.com/), an AI-powered search engine that has been -trained and indexed on the Pocket Network documentation, community calls, forums -and much more! +## GoDoc Documentation + +The Godoc for the source code in this can be found at [pkg.go.dev/github.com/pokt-network/poktroll](https://pkg.go.dev/github.com/pokt-network/poktroll). --- diff --git a/docusaurus/docs/develop/developer_guide/walkthrough.md b/docusaurus/docs/develop/developer_guide/walkthrough.md index da5f30ed3..34f292d5a 100644 --- a/docusaurus/docs/develop/developer_guide/walkthrough.md +++ b/docusaurus/docs/develop/developer_guide/walkthrough.md @@ -95,7 +95,7 @@ Install the following dependencies: 6. [Tilt](https://docs.tilt.dev/install.html) - k8s local development tool & environment manager :::note -If you've followed the [LocalNet instructions](../../operate/infrastructure/localnet.md), +If you've followed the [LocalNet instructions](../infrastructure/localnet.md), you may already have them installed. ::: @@ -106,7 +106,7 @@ and inspect it so you have an idea of what's going on! We'll be manually configuring a few actors to run in your shell for the sake of the tutorial so you have visibility into the types of onchain and offchain -actors. In practice, you should be using [localnet](../../operate/infrastructure/localnet.md) +actors. In practice, you should be using [localnet](../infrastructure/localnet.md) to dynamically scale your actors. To learn more about the different actors type, see the docs [here](../../protocol/actors/actors.md). @@ -653,7 +653,7 @@ We went through a flow of steps above just so you can get a feel for how things That said, you can dynamically scale the number of any actors in LocalNet by ony changing one line! -Go to our [localnet tutorial](../../operate/infrastructure/localnet.md) to learn more. +Go to our [localnet tutorial](../infrastructure/localnet.md) to learn more. ## 7. Explore the tools diff --git a/docusaurus/docs/operate/infrastructure/_category_.json b/docusaurus/docs/develop/infrastructure/_category_.json similarity index 100% rename from docusaurus/docs/operate/infrastructure/_category_.json rename to docusaurus/docs/develop/infrastructure/_category_.json diff --git a/docusaurus/docs/operate/infrastructure/access_dashboard_on_service.png b/docusaurus/docs/develop/infrastructure/access_dashboard_on_service.png similarity index 100% rename from docusaurus/docs/operate/infrastructure/access_dashboard_on_service.png rename to docusaurus/docs/develop/infrastructure/access_dashboard_on_service.png diff --git a/docusaurus/docs/operate/infrastructure/devnet.md b/docusaurus/docs/develop/infrastructure/devnet.md similarity index 100% rename from docusaurus/docs/operate/infrastructure/devnet.md rename to docusaurus/docs/develop/infrastructure/devnet.md diff --git a/docusaurus/docs/operate/infrastructure/gcp_workloads.png b/docusaurus/docs/develop/infrastructure/gcp_workloads.png similarity index 100% rename from docusaurus/docs/operate/infrastructure/gcp_workloads.png rename to docusaurus/docs/develop/infrastructure/gcp_workloads.png diff --git a/docusaurus/docs/operate/infrastructure/grafana_explore_logs.png b/docusaurus/docs/develop/infrastructure/grafana_explore_logs.png similarity index 100% rename from docusaurus/docs/operate/infrastructure/grafana_explore_logs.png rename to docusaurus/docs/develop/infrastructure/grafana_explore_logs.png diff --git a/docusaurus/docs/operate/infrastructure/grafana_save_dashboard.png b/docusaurus/docs/develop/infrastructure/grafana_save_dashboard.png similarity index 100% rename from docusaurus/docs/operate/infrastructure/grafana_save_dashboard.png rename to docusaurus/docs/develop/infrastructure/grafana_save_dashboard.png diff --git a/docusaurus/docs/operate/infrastructure/localnet.md b/docusaurus/docs/develop/infrastructure/localnet.md similarity index 100% rename from docusaurus/docs/operate/infrastructure/localnet.md rename to docusaurus/docs/develop/infrastructure/localnet.md diff --git a/docusaurus/docs/operate/infrastructure/private_testnet.md b/docusaurus/docs/develop/infrastructure/private_testnet.md similarity index 100% rename from docusaurus/docs/operate/infrastructure/private_testnet.md rename to docusaurus/docs/develop/infrastructure/private_testnet.md diff --git a/docusaurus/docs/operate/infrastructure/repositories.md b/docusaurus/docs/develop/infrastructure/repositories.md similarity index 100% rename from docusaurus/docs/operate/infrastructure/repositories.md rename to docusaurus/docs/develop/infrastructure/repositories.md diff --git a/docusaurus/docs/operate/infrastructure/testnet.md b/docusaurus/docs/develop/infrastructure/testnet.md similarity index 100% rename from docusaurus/docs/operate/infrastructure/testnet.md rename to docusaurus/docs/develop/infrastructure/testnet.md diff --git a/docusaurus/docs/operate/testing/_category_.json b/docusaurus/docs/develop/testing/_category_.json similarity index 100% rename from docusaurus/docs/operate/testing/_category_.json rename to docusaurus/docs/develop/testing/_category_.json diff --git a/docusaurus/docs/operate/testing/load_testing.md b/docusaurus/docs/develop/testing/load_testing.md similarity index 100% rename from docusaurus/docs/operate/testing/load_testing.md rename to docusaurus/docs/develop/testing/load_testing.md diff --git a/docusaurus/docs/operate/testing/load_testing_devnet.md b/docusaurus/docs/develop/testing/load_testing_devnet.md similarity index 100% rename from docusaurus/docs/operate/testing/load_testing_devnet.md rename to docusaurus/docs/develop/testing/load_testing_devnet.md diff --git a/docusaurus/docs/operate/testing/load_testing_plan_1.md b/docusaurus/docs/develop/testing/load_testing_plan_1.md similarity index 100% rename from docusaurus/docs/operate/testing/load_testing_plan_1.md rename to docusaurus/docs/develop/testing/load_testing_plan_1.md diff --git a/docusaurus/docs/operate/testing/load_testing_testnet.md b/docusaurus/docs/develop/testing/load_testing_testnet.md similarity index 100% rename from docusaurus/docs/operate/testing/load_testing_testnet.md rename to docusaurus/docs/develop/testing/load_testing_testnet.md diff --git a/docusaurus/docs/explore/roadmap.md b/docusaurus/docs/explore/roadmap.md deleted file mode 100644 index 75fc518a9..000000000 --- a/docusaurus/docs/explore/roadmap.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Roadmap -sidebar_position: 2 ---- - -## Blogs & Updates - -- TODO_BETA(@olshansk): Pocket Network Shannon Update - Beta TestNet #1 Announcement -- [Pocket Network Shannon Update - Alpha TestNet #3 Announcement](https://medium.com/decentralized-infrastructure/pocket-network-shannon-update-alpha-testnet-3-eca539a9e111) - -## Alpha TestNet Roadmap - -See the Alpha TestNet #3 Announcement [here](https://medium.com/decentralized-infrastructure/pocket-network-shannon-update-alpha-testnet-3-eca539a9e111). - -```mermaid -timeline - title Shannon Roadmap - section Morse - Alpha TestNet(s)
(Q3/Q4): - βœ… Shannon Foundation: - βœ… Shannon SDK: - βœ… Relay Mining: - βœ… Morse Utility Parity: - βœ… Token Logic Modules: - βš™οΈ Governance: - βš™οΈ PATH Integration: - βš™οΈ Observability: - βš™οΈ Scalability Testing - Beta TestNet (Q4/Q1): - βš™οΈ E2E Permissionless Load Testing: - βš™οΈ POKTScan Explorer: - βš™οΈ TODOs & Optimizations: - βš™οΈ Streamline Upgrades: - IBC Integrations: - EVM Interoperability: - Migration module R&D: - Start wPOKT migration: - Auditing & Hardening - section Morse & Shannon - Shadow Migration
(Q1): - Shadow MainNet Launch: - Turn OFF Shannon inflation: - Bugs, Hardening & TECHDEBT: - Governance Parameter Eval: - Mirror Morse MainNet Traffic: - Tooling & Documentation Improvements: - Genesis File Preparation - Public Migration
(Q1): - Public MainNet Launch: - Morse POKT "Airdrop": - Gateway Migration: - Supplier Migration: - Bridge Migration: - Onboard Morse Validators: - CEX Support: - DEX Support - section Shannon - Launch & Deprecate
(Q2): - Turn ON Shannon inflation: - Enable New Incntives: - Deprecate Morse: - MainNet IBC and EVM Interoperability: - Kickoff Post-MainNet R&D -``` diff --git a/docusaurus/docs/operate/cheat_sheets/_category_.json b/docusaurus/docs/operate/cheat_sheets/_category_.json new file mode 100644 index 000000000..119111e91 --- /dev/null +++ b/docusaurus/docs/operate/cheat_sheets/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Stake & Deploy Cheat Sheets", + "position": 1, + "link": { + "type": "generated-index", + "description": "Cheat sheets for staking and operating Pocket Network actors." + } +} diff --git a/docusaurus/docs/operate/quickstart/docker_compose_debian_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/docker_compose_debian_cheatsheet.md similarity index 99% rename from docusaurus/docs/operate/quickstart/docker_compose_debian_cheatsheet.md rename to docusaurus/docs/operate/cheat_sheets/docker_compose_debian_cheatsheet.md index eb8fd7f6c..138a67c59 100644 --- a/docusaurus/docs/operate/quickstart/docker_compose_debian_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/docker_compose_debian_cheatsheet.md @@ -1,5 +1,5 @@ --- -sidebar_position: 2 +sidebar_position: 6 title: Docker Compose Cheat Sheet --- diff --git a/docusaurus/docs/operate/quickstart/docker_compose_walkthrough.md b/docusaurus/docs/operate/cheat_sheets/docker_compose_walkthrough.md similarity index 99% rename from docusaurus/docs/operate/quickstart/docker_compose_walkthrough.md rename to docusaurus/docs/operate/cheat_sheets/docker_compose_walkthrough.md index 6123e5ce8..85288a862 100644 --- a/docusaurus/docs/operate/quickstart/docker_compose_walkthrough.md +++ b/docusaurus/docs/operate/cheat_sheets/docker_compose_walkthrough.md @@ -1,5 +1,5 @@ --- -sidebar_position: 1 +sidebar_position: 7 title: Docker Compose Walkthrough --- @@ -132,7 +132,7 @@ Make sure to replace `olshansky` with your username. You can generally do everything as the `root` user, but it's recommended to create a new user and give it sudo permissions. -This is necessary, in particular, if you want to use [homebrew](https://brew.sh/) [to install `poktrolld`](../user_guide/poktrolld_cli.md). +This is necessary, in particular, if you want to use [homebrew](https://brew.sh/) [to install `poktrolld`](../../tools/user_guide/poktrolld_cli.md). ```bash adduser poktroll @@ -190,7 +190,7 @@ sed -i -e s/NODE_HOSTNAME=/NODE_HOSTNAME=69.42.690.420/g .env You can generally do everything as the `root` user, but it's recommended to create a new user and give it sudo permissions. -This is necessary, in particular, if you want to use [homebrew](https://brew.sh/) [to install `poktrolld`](../user_guide/poktrolld_cli.md). +This is necessary, in particular, if you want to use [homebrew](https://brew.sh/) [to install `poktrolld`](../../tools/user_guide/poktrolld_cli.md). You can create a new user (e.g. poktroll), provide sudo permissions and switch users like so: diff --git a/docusaurus/docs/operate/quickstart/full_node_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/full_node_cheatsheet.md similarity index 85% rename from docusaurus/docs/operate/quickstart/full_node_cheatsheet.md rename to docusaurus/docs/operate/cheat_sheets/full_node_cheatsheet.md index 58161381a..a6d884481 100644 --- a/docusaurus/docs/operate/quickstart/full_node_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/full_node_cheatsheet.md @@ -1,21 +1,21 @@ --- title: Full Node Cheat Sheet -sidebar_position: 3 +sidebar_position: 1 --- -## Full Node Cheat Sheet Using Systemd & Cosmovisor +**πŸ–¨ 🍝 instructions to get you up and running with a `Full Node` on Pocket Network using `Systemd` and `Cosmovisor` βœ…** -This cheat sheet provides quick copy-pasta like instructions for installing and -running a Full Node using an automated script. +:::warning There is lots of scripting and some details are abstracted away -:::tip - -If you're interested in understanding the underlying details, or having full control over every -step of the process, check out the [Full Node Walkthrough](../run_a_node/full_node_walkthrough.md). +See the [Full Node Walkthrough](../walkthroughs/full_node_walkthrough.md) if you want to understand what's happening under the hood. ::: -- [Introduction](#introduction) +--- + +## Table of Contents + +- [Introduction - why run a Full Node?](#introduction---why-run-a-full-node) - [Pre-Requisites](#pre-requisites) - [Install and Run a Full Node using Cosmovisor](#install-and-run-a-full-node-using-cosmovisor) - [Automatic Upgrades Out of the Box](#automatic-upgrades-out-of-the-box) @@ -23,20 +23,20 @@ step of the process, check out the [Full Node Walkthrough](../run_a_node/full_no - [FAQ \& Troubleshooting](#faq--troubleshooting) - [\[OPTIONAL\] Do you care to know what just happened?](#optional-do-you-care-to-know-what-just-happened) -### Introduction +## Introduction - why run a Full Node? -This guide will help you install a Full Node for Pocket Network, -**using helper that abstract out some of the underlying complexity.** +This guide will help you install a Full Node for Pocket Network +**using helpers that abstract out some of the underlying complexity.** Running a Full Node is the first step toward becoming a Validator, Supplier, or Gateway. -### Pre-Requisites +## Pre-Requisites -1. **Linux-based System**: Ensure you have a Debian-based Linux distribution (other distributions may work but are not fully supported). +1. **Linux-based System**: Ensure you have a Debian-based Linux distribution. 2. **Root or Sudo Access**: You need administrative privileges to run the installation script. -3. **Dedicated Server or Virtual Machine**: Any provider should work (Vultr and Hetzner have been tested). +3. **Dedicated Server or Virtual Machine**: Any provider should work (e.g. Vultr). -### Install and Run a Full Node using Cosmovisor +## Install and Run a Full Node using Cosmovisor :::info This section script will handle the installation of dependencies, user creation, @@ -65,7 +65,7 @@ Follow the instructions below to **quickly** install and set up a Full Node: - **Confirm Seeds and Genesis File**: The script fetches seeds and the genesis file automatically. - **External IP Address**: The script detects your external IP address. Confirm or input manually if incorrect. -#### Automatic Upgrades Out of the Box +### Automatic Upgrades Out of the Box Your node is configured to handle chain upgrades automatically through Cosmovisor. No manual intervention is required for standard upgrades. @@ -76,7 +76,7 @@ When a chain upgrade is proposed and approved: 3. Cosmovisor will switch to the new binary 4. The node will restart automatically -#### Verify successful installation (curl latest block) +### Verify successful installation (curl latest block) You can verify the installation was successful by querying the latest block (i.e. checking the node height). @@ -156,12 +156,12 @@ Should provide a response in this form: } ``` -### FAQ & Troubleshooting +## FAQ & Troubleshooting -See the [FAQ & Troubleshooting section in the Full Node Walkthrough](../run_a_node/full_node_walkthrough.md#faq--troubleshooting) +See the [FAQ & Troubleshooting section in the Full Node Walkthrough](../walkthroughs/full_node_walkthrough.md#faq--troubleshooting) for examples of useful commands, common debugging instructions and other advanced usage. -### [OPTIONAL] Do you care to know what just happened? +## [OPTIONAL] Do you care to know what just happened? :::info This section is optional and for informational purposes only. diff --git a/docusaurus/docs/operate/quickstart/gateway_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/gateway_cheatsheet.md similarity index 96% rename from docusaurus/docs/operate/quickstart/gateway_cheatsheet.md rename to docusaurus/docs/operate/cheat_sheets/gateway_cheatsheet.md index 861c2b06a..cca899b14 100644 --- a/docusaurus/docs/operate/quickstart/gateway_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/gateway_cheatsheet.md @@ -1,5 +1,5 @@ --- -sidebar_position: 7 +sidebar_position: 4 title: Gateway Cheat Sheet --- @@ -9,7 +9,7 @@ This guide provides quick reference commands for setting up and running a **Gate on Pocket Network. For detailed instructions, troubleshooting, and observability setup, see the -[Gateway Walkthrough](./../run_a_node/gateway_walkthrough.md). +[Gateway Walkthrough](../walkthroughs/gateway_walkthrough.md). :::note @@ -38,8 +38,8 @@ streamline development and reduce friction for any new potential contributor. ## Pre-Requisites -1. Make sure to [install the `poktrolld` CLI](../user_guide/poktrolld_cli.md). -2. Make sure you know how to [create and fund a new account](../user_guide/create-new-wallet.md). +1. Make sure to [install the `poktrolld` CLI](../../tools/user_guide/poktrolld_cli.md). +2. Make sure you know how to [create and fund a new account](../../tools/user_guide/create-new-wallet.md). :::warning @@ -112,7 +112,7 @@ poktrolld query bank balances $APP_ADDR $NODE_FLAGS :::tip -You can find all the explorers, faucets and tools at the [tools page](../../explore/tools.md). +You can find all the explorers, faucets and tools at the [tools page](../../tools/tools.md). ::: diff --git a/docusaurus/docs/operate/quickstart/service_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/service_cheatsheet.md similarity index 94% rename from docusaurus/docs/operate/quickstart/service_cheatsheet.md rename to docusaurus/docs/operate/cheat_sheets/service_cheatsheet.md index eda5d4af5..564fcedbf 100644 --- a/docusaurus/docs/operate/quickstart/service_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/service_cheatsheet.md @@ -1,5 +1,5 @@ --- -sidebar_position: 5 +sidebar_position: 2 title: Service Cheat Sheet --- @@ -14,8 +14,8 @@ title: Service Cheat Sheet ### Pre-Requisites -1. Make sure to [install the `poktrolld` CLI](../user_guide/poktrolld_cli.md). -2. Make sure you know how to [create and fund a new account](../user_guide/create-new-wallet.md). +1. Make sure to [install the `poktrolld` CLI](../../tools/user_guide/poktrolld_cli.md). +2. Make sure you know how to [create and fund a new account](../../tools/user_guide/create-new-wallet.md). ### How do I query for all existing onchain Services? diff --git a/docusaurus/docs/operate/quickstart/supplier_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/supplier_cheatsheet.md similarity index 96% rename from docusaurus/docs/operate/quickstart/supplier_cheatsheet.md rename to docusaurus/docs/operate/cheat_sheets/supplier_cheatsheet.md index 32446be7a..05a85efed 100644 --- a/docusaurus/docs/operate/quickstart/supplier_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/supplier_cheatsheet.md @@ -1,5 +1,5 @@ --- -sidebar_position: 6 +sidebar_position: 3 title: Supplier (RelayMiner) Cheat Sheet --- @@ -9,7 +9,7 @@ This guide provides quick reference commands for setting up a **Supplier** and running a **RelayMiner** on Pocket Network. For detailed instructions, troubleshooting, and observability setup, see the -[Supplier Walkthrough](./../run_a_node/supplier_walkthrough.md). +[Supplier Walkthrough](../walkthroughs/supplier_walkthrough.md). :::note @@ -39,8 +39,8 @@ streamline development and reduce friction for any new potential contributor. ## Pre-Requisites -1. Make sure to [install the `poktrolld` CLI](../user_guide/poktrolld_cli.md). -2. Make sure you know how to [create and fund a new account](../user_guide/create-new-wallet.md). +1. Make sure to [install the `poktrolld` CLI](../../tools/user_guide/poktrolld_cli.md). +2. Make sure you know how to [create and fund a new account](../../tools/user_guide/create-new-wallet.md). 3. You have either [staked a new `service` or found an existing one](./service_cheatsheet.md). 4. `[Optional]` You can run things locally or have dedicated long-running hardware. See the [Docker Compose Cheat Sheet](./docker_compose_debian_cheatsheet#deploy-your-server) if you're interested in the latter. @@ -117,7 +117,7 @@ poktrolld query bank balances $SUPPLIER_ADDR $NODE_FLAGS :::tip -You can find all the explorers, faucets and tools at the [tools page](../../explore/tools.md). +You can find all the explorers, faucets and tools at the [tools page](../../tools/tools.md). ::: diff --git a/docusaurus/docs/operate/quickstart/validator_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/validator_cheatsheet.md similarity index 77% rename from docusaurus/docs/operate/quickstart/validator_cheatsheet.md rename to docusaurus/docs/operate/cheat_sheets/validator_cheatsheet.md index f12ffe560..f1e87fb15 100644 --- a/docusaurus/docs/operate/quickstart/validator_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/validator_cheatsheet.md @@ -1,6 +1,6 @@ --- title: Validator Cheat Sheet -sidebar_position: 4 +sidebar_position: 6 --- ## Validator Cheat Sheet @@ -13,7 +13,7 @@ running a Validator using an automated script. :::tip If you're interested in understanding everything, or having full control of every -step, check out the [Validator Walkthrough](../run_a_node/validator_walkthrough.md). +step, check out the [Validator Walkthrough](../walkthroughs/validator_walkthrough.md). ::: @@ -27,4 +27,4 @@ This guide will help you install a Validator on Pocket Network, ### Pre-Requisites -1. **Run a Full Node**: Make sure you have followed the [Full Node Cheat Sheet](../quickstart/full_node_cheatsheet.md) to install and run a Full Node first +1. **Run a Full Node**: Make sure you have followed the [Full Node Cheat Sheet](full_node_cheatsheet.md) to install and run a Full Node first diff --git a/docusaurus/docs/operate/run_a_node/hardware_requirements.md b/docusaurus/docs/operate/configs/hardware_requirements.md similarity index 100% rename from docusaurus/docs/operate/run_a_node/hardware_requirements.md rename to docusaurus/docs/operate/configs/hardware_requirements.md diff --git a/docusaurus/docs/operate/quickstart/_category_.json b/docusaurus/docs/operate/quickstart/_category_.json deleted file mode 100644 index 4a8928e1d..000000000 --- a/docusaurus/docs/operate/quickstart/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "Quickstart", - "position": 1, - "link": { - "type": "generated-index", - "description": "Quickstart documentation to start deploying on Shannon." - } -} diff --git a/docusaurus/docs/operate/run_a_node/_category_.json b/docusaurus/docs/operate/run_a_node/_category_.json deleted file mode 100644 index ea46ef992..000000000 --- a/docusaurus/docs/operate/run_a_node/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "Run a Node Walkthroughs", - "position": 3, - "link": { - "type": "generated-index", - "description": "Guides on how to deploy and operated various type of Pocket Network nodes." - } -} diff --git a/docusaurus/docs/operate/walkthroughs/_category_.json b/docusaurus/docs/operate/walkthroughs/_category_.json new file mode 100644 index 000000000..e2c2e3336 --- /dev/null +++ b/docusaurus/docs/operate/walkthroughs/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Stake & Deploy Walkthroughs", + "position": 2, + "link": { + "type": "generated-index", + "description": "Walkthroughs for staking and operating Pocket Network actors." + } +} diff --git a/docusaurus/docs/operate/run_a_node/full_node_docker.md b/docusaurus/docs/operate/walkthroughs/full_node_docker.md similarity index 92% rename from docusaurus/docs/operate/run_a_node/full_node_docker.md rename to docusaurus/docs/operate/walkthroughs/full_node_docker.md index 5f70de6ce..8dbbf03dd 100644 --- a/docusaurus/docs/operate/run_a_node/full_node_docker.md +++ b/docusaurus/docs/operate/walkthroughs/full_node_docker.md @@ -52,11 +52,11 @@ This guide outlines how to configure, deploy and maintain Full Nodes. ## Hardware requirements -Please see the [Hardware Requirements](./hardware_requirements.md#validator--full-node) page. +Please see the [Hardware Requirements](../configs/hardware_requirements.md#validator--full-node) page. ## Docker Compose Example -Please refer to the `Deploying a Full Node` section in [Docker Compose Walkthrough](../quickstart/docker_compose_walkthrough.md) +Please refer to the `Deploying a Full Node` section in [Docker Compose Walkthrough](../cheat_sheet/docker_compose_walkthrough.md) on how to deploy a Full Node using `docker-compose`. ## Kubernetes Example diff --git a/docusaurus/docs/operate/run_a_node/full_node_walkthrough.md b/docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md similarity index 98% rename from docusaurus/docs/operate/run_a_node/full_node_walkthrough.md rename to docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md index 44ab1e221..f5985ee88 100644 --- a/docusaurus/docs/operate/run_a_node/full_node_walkthrough.md +++ b/docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md @@ -11,7 +11,7 @@ configure a Pocket Network Full Node from scratch. :::tip If you're comfortable using an automated scripts, or simply want to _copy-pasta_ a -few commands to get started, check out the [Full Node Cheat Sheet](../quickstart/full_node_cheatsheet.md). +few commands to get started, check out the [Full Node Cheat Sheet](../cheat_sheet/full_node_cheatsheet.md). ::: @@ -130,7 +130,7 @@ source ~/.profile ### 5. Install `poktrolld` -Follow the instructions in the [CLI Installation Guide](../user_guide/poktrolld_cli.md) page to install `poktrolld`. +Follow the instructions in the [CLI Installation Guide](../../tools/user_guide/poktrolld_cli.md) page to install `poktrolld`. Create a symlink of the binary so Comosvisor knows where to find it: diff --git a/docusaurus/docs/operate/run_a_node/gateway_walkthrough.md b/docusaurus/docs/operate/walkthroughs/gateway_walkthrough.md similarity index 94% rename from docusaurus/docs/operate/run_a_node/gateway_walkthrough.md rename to docusaurus/docs/operate/walkthroughs/gateway_walkthrough.md index 209feb137..232f6a069 100644 --- a/docusaurus/docs/operate/run_a_node/gateway_walkthrough.md +++ b/docusaurus/docs/operate/walkthroughs/gateway_walkthrough.md @@ -32,7 +32,7 @@ This ensures the necessary infrastructure for blockchain communication is in pla ## Hardware requirements -Please see the [Hardware Requirements](./hardware_requirements.md#path-gateway) page. +Please see the [Hardware Requirements](../configs/hardware_requirements.md#path-gateway) page. ## Docker Compose Example diff --git a/docusaurus/docs/operate/run_a_node/supplier_walkthrough.md b/docusaurus/docs/operate/walkthroughs/supplier_walkthrough.md similarity index 94% rename from docusaurus/docs/operate/run_a_node/supplier_walkthrough.md rename to docusaurus/docs/operate/walkthroughs/supplier_walkthrough.md index ea46f5749..f384f3b97 100644 --- a/docusaurus/docs/operate/run_a_node/supplier_walkthrough.md +++ b/docusaurus/docs/operate/walkthroughs/supplier_walkthrough.md @@ -33,7 +33,7 @@ This ensures the necessary infrastructure for blockchain communication is in pla ## Hardware requirements -Please see the [Hardware Requirements](./hardware_requirements.md#relayminer) page. +Please see the [Hardware Requirements](../configs/hardware_requirements.md#relayminer) page. ## Docker Compose Example diff --git a/docusaurus/docs/operate/run_a_node/validator_walkthrough.md b/docusaurus/docs/operate/walkthroughs/validator_walkthrough.md similarity index 84% rename from docusaurus/docs/operate/run_a_node/validator_walkthrough.md rename to docusaurus/docs/operate/walkthroughs/validator_walkthrough.md index 6c8842f52..e30969bbf 100644 --- a/docusaurus/docs/operate/run_a_node/validator_walkthrough.md +++ b/docusaurus/docs/operate/walkthroughs/validator_walkthrough.md @@ -12,7 +12,7 @@ This walkthrough provides a detailed step-by-step instructions to run a validato :::tip If you're comfortable using an automated scripts, or simply want to _copy-pasta_ a -few commands to get started, check out the [Validator Cheat Sheet](../quickstart/validator_cheatsheet.md). +few commands to get started, check out the [Validator Cheat Sheet](../cheat_sheet/validator_cheatsheet.md). ::: @@ -26,4 +26,4 @@ This guide will help you install a Validator on Pocket Network, from scratch, ma ## Pre-Requisites -1. **Run a Full Node**: Make sure you have followed the [Full Node Walkthrough](../run_a_node/full_node_walkthrough.md) to install and run a Full Node first +1. **Run a Full Node**: Make sure you have followed the [Full Node Walkthrough](full_node_walkthrough.md) to install and run a Full Node first diff --git a/docusaurus/docs/protocol/upgrades/protocol_upgrades.md b/docusaurus/docs/protocol/upgrades/protocol_upgrades.md index 684bc8e7a..b61e699c5 100644 --- a/docusaurus/docs/protocol/upgrades/protocol_upgrades.md +++ b/docusaurus/docs/protocol/upgrades/protocol_upgrades.md @@ -5,7 +5,7 @@ sidebar_position: 1 # Protocol Upgrades -Pocket Network is continuously evolving through regular protocol upgrades. We implement software upgrades via a DAO process, allowing validator nodes to incorporate consensus-breaking changes. These upgrades can be automatically applied when using [Cosmovisor](../../operate/run_a_node/full_node_walkthrough.md), or manually if not using `cosmovisor`. +Pocket Network is continuously evolving through regular protocol upgrades. We implement software upgrades via a DAO process, allowing validator nodes to incorporate consensus-breaking changes. These upgrades can be automatically applied when using [Cosmovisor](../../operate/walkthroughs/full_node_walkthrough.md), or manually if not using `cosmovisor`. - [What is a Protocol Upgrade?](#what-is-a-protocol-upgrade) - [List of Upgrades](#list-of-upgrades) diff --git a/docusaurus/docs/protocol/upgrades/release_process.md b/docusaurus/docs/protocol/upgrades/release_process.md index 398d56c05..dd0701574 100644 --- a/docusaurus/docs/protocol/upgrades/release_process.md +++ b/docusaurus/docs/protocol/upgrades/release_process.md @@ -28,7 +28,7 @@ TODO(#791): The process of adding the `consensus-breaking` label is still not fo If any exist, assume the release will require an upgrade. [Here is a link](https://github.com/pokt-network/poktroll/pulls?q=sort%3Aupdated-desc+is%3Apr+is%3Amerged+label%3Aconsensus-breaking) for convenience. -- **Verify a Full Node**: Deploy a Full Node on TestNet and allow it to sync and operate for a few days to verify that no accidentally introduced consensus-breaking changes affect the ability to sync. See the instructions in the [Quickstart Guide](../../operate/quickstart/docker_compose_debian_cheatsheet.md) for deploying a Full Node. +- **Verify a Full Node**: Deploy a Full Node on TestNet and allow it to sync and operate for a few days to verify that no accidentally introduced consensus-breaking changes affect the ability to sync. See the instructions in the [Quickstart Guide](../../operate/cheat_sheet/docker_compose_debian_cheatsheet.md) for deploying a Full Node. - **Update Upgrade List**: If the new release includes an upgrade transaction for automatic upgrades, add the new release to the table in the [Upgrades List](./upgrade_list.md). diff --git a/docusaurus/docs/protocol/upgrades/upgrade_procedure.md b/docusaurus/docs/protocol/upgrades/upgrade_procedure.md index 91dfc12bf..855f0ae0e 100644 --- a/docusaurus/docs/protocol/upgrades/upgrade_procedure.md +++ b/docusaurus/docs/protocol/upgrades/upgrade_procedure.md @@ -37,7 +37,7 @@ This process involves several key steps: 2. **Implementation**: The proposed changes are implemented in the codebase. 3. **Testing**: Thorough testing of the proposed changes is conducted in devnet and testnet environments before mainnet deployment. 4. **Announcement**: Upon successful testing, we announce the upgrade through our social media channels and community forums. -5. **Deployment**: An upgrade transaction is sent to the network, allowing node operators using [Cosmovisor](../../operate/run_a_node/full_node_walkthrough.md) to automatically upgrade their nodes at the specified block height. +5. **Deployment**: An upgrade transaction is sent to the network, allowing node operators using [Cosmovisor](../../operate/walkthroughs/full_node_walkthrough.md) to automatically upgrade their nodes at the specified block height. 6. **Monitoring**: Post-deployment, we closely monitor the network to ensure everything functions as expected. ## When is an Upgrade Warranted? @@ -259,7 +259,7 @@ We use Kubernetes to manage software versions, including validators. Introducing ### TestNet Upgrades -We currently deploy TestNet validators using Kubernetes with helm charts, which prevents us from managing the validator with `cosmovisor`. We do not control what other TestNet participants are running. However, if participants have deployed their nodes using the [cosmovisor guide](../../operate/run_a_node/full_node_walkthrough.md), their nodes will upgrade automatically. +We currently deploy TestNet validators using Kubernetes with helm charts, which prevents us from managing the validator with `cosmovisor`. We do not control what other TestNet participants are running. However, if participants have deployed their nodes using the [cosmovisor guide](../../operate/walkthroughs/full_node_walkthrough.md), their nodes will upgrade automatically. Until we transition to [cosmos-operator](https://github.com/strangelove-ventures/cosmos-operator), which supports scheduled upgrades (although not fully automatic like `cosmovisor`), we need to manually manage the process: diff --git a/docusaurus/docs/explore/_category_.json b/docusaurus/docs/tools/_category_.json similarity index 100% rename from docusaurus/docs/explore/_category_.json rename to docusaurus/docs/tools/_category_.json diff --git a/docusaurus/docs/explore/genesis.md b/docusaurus/docs/tools/genesis.md similarity index 100% rename from docusaurus/docs/explore/genesis.md rename to docusaurus/docs/tools/genesis.md diff --git a/docusaurus/docs/explore/rpc.md b/docusaurus/docs/tools/rpc.md similarity index 100% rename from docusaurus/docs/explore/rpc.md rename to docusaurus/docs/tools/rpc.md diff --git a/docusaurus/docs/explore/tools.md b/docusaurus/docs/tools/tools.md similarity index 100% rename from docusaurus/docs/explore/tools.md rename to docusaurus/docs/tools/tools.md diff --git a/docusaurus/docs/operate/user_guide/_category_.json b/docusaurus/docs/tools/user_guide/_category_.json similarity index 100% rename from docusaurus/docs/operate/user_guide/_category_.json rename to docusaurus/docs/tools/user_guide/_category_.json diff --git a/docusaurus/docs/operate/user_guide/app-transfer.md b/docusaurus/docs/tools/user_guide/app-transfer.md similarity index 100% rename from docusaurus/docs/operate/user_guide/app-transfer.md rename to docusaurus/docs/tools/user_guide/app-transfer.md diff --git a/docusaurus/docs/operate/user_guide/check-balance.md b/docusaurus/docs/tools/user_guide/check-balance.md similarity index 100% rename from docusaurus/docs/operate/user_guide/check-balance.md rename to docusaurus/docs/tools/user_guide/check-balance.md diff --git a/docusaurus/docs/operate/user_guide/create-new-wallet.md b/docusaurus/docs/tools/user_guide/create-new-wallet.md similarity index 100% rename from docusaurus/docs/operate/user_guide/create-new-wallet.md rename to docusaurus/docs/tools/user_guide/create-new-wallet.md diff --git a/docusaurus/docs/operate/user_guide/poktrolld_cli.md b/docusaurus/docs/tools/user_guide/poktrolld_cli.md similarity index 100% rename from docusaurus/docs/operate/user_guide/poktrolld_cli.md rename to docusaurus/docs/tools/user_guide/poktrolld_cli.md diff --git a/docusaurus/docs/operate/user_guide/recover-with-mnemonic.md b/docusaurus/docs/tools/user_guide/recover-with-mnemonic.md similarity index 100% rename from docusaurus/docs/operate/user_guide/recover-with-mnemonic.md rename to docusaurus/docs/tools/user_guide/recover-with-mnemonic.md diff --git a/docusaurus/docs/operate/user_guide/send-tokens.md b/docusaurus/docs/tools/user_guide/send-tokens.md similarity index 100% rename from docusaurus/docs/operate/user_guide/send-tokens.md rename to docusaurus/docs/tools/user_guide/send-tokens.md diff --git a/docusaurus/docusaurus.config.js b/docusaurus/docusaurus.config.js index 288e013b8..89c43ab15 100644 --- a/docusaurus/docusaurus.config.js +++ b/docusaurus/docusaurus.config.js @@ -83,14 +83,13 @@ const config = { ({ docs: { sidebar: { - hideable: false, - autoCollapseCategories: false, + hideable: true, + autoCollapseCategories: true, }, }, - // image: "img/docusaurus-social-card.jpg", style: "dark", navbar: { - title: "Pocket Network", + // title: "Pocket Network", logo: { alt: "Pocket Network Logo", src: "img/logo.png", @@ -100,25 +99,25 @@ const config = { type: "docSidebar", position: "left", sidebarId: "operateSidebar", - label: "βš™οΈ Operate", + label: "βš™οΈ Guides & Deployment", }, { type: "docSidebar", position: "left", - sidebarId: "developSidebar", - label: "πŸ’» Develop", + sidebarId: "toolsSidebar", + label: "πŸ—Ί Tools & Explorers", }, { type: "docSidebar", position: "left", - sidebarId: "protocolSidebar", - label: "🧠 Protocol", + sidebarId: "developSidebar", + label: "πŸ§‘β€πŸ’»οΈ Core Developers", }, { type: "docSidebar", position: "left", - sidebarId: "exploreSidebar", - label: "πŸ—Ί Explore", + sidebarId: "protocolSidebar", + label: "🧠 Protocol Specification", }, ], }, diff --git a/docusaurus/sidebars.js b/docusaurus/sidebars.js index 1984be244..3090a3837 100644 --- a/docusaurus/sidebars.js +++ b/docusaurus/sidebars.js @@ -20,10 +20,10 @@ const sidebars = { dirName: "protocol", }, ], - exploreSidebar: [ + toolsSidebar: [ { type: "autogenerated", - dirName: "explore", + dirName: "tools", }, ], }; diff --git a/docusaurus/static/img/logo-large-white.png b/docusaurus/static/img/logo-large-white.png new file mode 100644 index 0000000000000000000000000000000000000000..c59c8f885180e7eea0dc71040e616dfea915dccf GIT binary patch literal 14066 zcmX|odmz*Q_y64Qw~#y0yHM_uR$miZ$cKRB8C)EeLeJ;);c-V_Y$D?(QS$sU*3r&EdZyZdO*k z#uc9LnG-Dn5vpSm;wRNGmpc%T#Lw9$4_KT(C8n_-BJxM>ZXB;*nI&khG}*+GE|`0T z7F^=?=7YreowyLGn|DEXAKNp3&Pa+%Uhm=y>3F|W@HS72tz&p!cgnD-F)QwgLg`RUSXRG$Ws?W9kdV;RnRds5SmmR90pisljPV-oQsAffMk&7?YJz4oE zWUAbh`%mBeXS>?)Uvjtj*=8kJi~&Y&u(80x)3>ewyjYxj9mGK+eB4_4%sl%M zK})@2oW<_AmCMv*F#3)dAqU8>P;k(~qoMFg<+OjT=MI(@`Xy{y(MAEJs=O4cyySxI z69hyb+o%yeC?D#9w|`o1rDE*|U9d}z#U|z>{= zHn)yxyO`)2s3bq30e`b}kwG_TD5ncI^-f?i;aZprVR-puh?p6}Ji1E)M`M#uP~`j* zosdOX-Qj4G-+YWbLtD}It6g>e_@}|%b-hO7=qTMMY7WX z)#rNM>E2PBR?Fbsy4@R2(G@2HCe9u{>xIu%WcYUwprjT`l7&kWR4 zs+VSH*j4Egem~dCgSp-t$*;B6MT5`&#Tf`RLMeZB99(xX`Fv1S5bhr~P7q zh0lJg-->>2&78>ylGjHM_>RW>bllUvhmA-4Cv4;yHNZ4Xy+%1H|K6sQb&DAmKHRBv zJIPUpm&%aL_slj zO3X~s8hFkZ&BicVc1*ePmhr1#FZNmN>DeHrv869DLJaQx-WYD#eYx)!LAE)QjoZ_U z5@1AvS`#~zevtnrPiuVU^q4Gj9ns6YNqSl>9iUYGsA;YVss2g28QXCs_DR}z2hKe^ z1%pJ8-8$T&9(L?kz?+!FByt+x?R~jlS^IJdC}heyjpaRV@WI(>O<6$*aX@UgD<0d- zuuXnWX_uVGabgSleWmJvjG?sm=|t`YE9Ug9G%FvktX(&WaimoC)OaGbc|tRq8{bL|CI%h~uB?eb*c1IN+c_m4WY9v*0)Wmpr)BWdo9 zq-uo0Bs?_=&_lSpL5i-L<%Qk#ENh9q)*>$W=WQ|LOghEb|1XEv5u0=|^k>YKjK5gn zq2lH&hEq%EZ`oNCNIjX99sDjw3Kf`>m`V|_VGppA?ZJ5-I!ANUQgG0Y^UkIJx`cKN zzHS>Vt7*8Dh>@%C?}nAyEilrVr1lnNpzhrDZiE4#QI%nt?)}=M$jVe&%p9Ix=|x#_ z*+L9_eEoxhc$<{*fd>S5G2+WEU`?U?F+z&*Cza$?L+@Zf033N+aVv5$n`qCy;|4#h z>ei(%sLT|J{Xazus!EmMH&OO6;U`@%-VR z)*GkZRMj8#<%((z5A3752;A&{PaltCVMP7pOdw;untSD8vF~Z&9b1ox_V4u*wgubAt7i<(6zy5(q z@pAHBhXT(3@8v0|VUx$zKP8a8JBfdAG*OV8?HAJ_(Nx<0oqb5Q;cF@&PK}KIhRM$LOqDD&uPAHly!3b1QpQ$bZ ztAP#lUWRWaC*_a8`3UNVO<$^0=7siF-!9xk;9elu{CgBNg^e<{PNvM8ttndE(=$7= z4?#XT#slI6$tNq4X)xsbohS~I*~87xfquKE%UUkc?VM*1wavrbp2Rb?K#eVMXg@+| z7Vl3rM}FoY9JGE1$E?4(m@?maig_l?6pJYX}?N$Hgs3WYRU`$Bh+JrekDI9b+#1 zb0p!jB15l#He$!?EsA1c=d&^i%_=9z6!(b}{~^c}P9a*XUcCEAK1N8g`$U)VUb`}- zp+!n{VBV!(?jo8kTa>^zjEuzZ#y1S1PvJY~x#n%@8k$kNnZb=a*?*K1HwV?-Tw*(7 z1nQbPb0&Y6m`x>+B9f!j4bmFnA{n)@(tqaoj@DlqH+xt*|JcLnr^l&Dk#g-n>E?y< z3MD&$B*m#9jT+X~<6wcUJs5E{^{@HQ1 zjGvir+E_3hY-mC_a%ruXFp&ZG1@R}()BCLBX&Bc~^)lkVA%#FdSDaYBr za0YoxEVqPm;|e$BMpz3yL74_vkTjU6urZ7lNN{j${xz=n{GkaUOFwFQDIir3sk$r zKX?Mjyt5L9*M-4Q6FzbvHB{-Z!>GUIQb~8}9~j5S%C4S3C2z~|N`jl!dZBf#T#cX~ z`2H3_aCao%>DWYmkNbi7v+`$Wv!)qM+Hrsf=TbD|>XakuSsE`EfDvNj>Q9UL~} zlTu(kA4=p#N<|oZNlsk=^#?MJ_A_UkcR|7u*xJzBSXfHmQfp{|y{kRsDN&MF5X{le z6R~1~nM|%hoe{7S2BSxH+G3M=5X_gphe^1y0iPu&0>0hgbEL4kWO4f2xw?UUjI}3d zVK2(|&i3?tiViGurNk?CptHPeFEle9Uw$m^HBebM*T1v!t6^oVm6-n{cIzyfDprX; zh@BZa^m4g~^%CUv^!Ke}0l@qibAQu<^a=Z3qVgcA#|ZQ8Io zN<9U!R|Hz-ZAM8k?Izq<7;H+O9Ys!SE>(PB__zD32RrLmd=ej#`|6-#aLPFSo{@?d zY>fhl&bI;+5C(GOyU6+wv)z9W$qMi%z3#(rO=0zHOr~%6+q=; zP6ye4+HIFJF_Gast}^9g1`_pu<@8Rx)Fc{$XLm`S(WopkX>PSbv#-h&Ggl{Ne5C@e znoi}MH1uH`#s!;BpI5EQ6V^_aYJ3h*-yHeupfiV|_xA|{1=p-vm59M;RG8$fk^E0- zIini3YK{{nmhte*XTZd?$SDIykY37m7*ClIE(gkdh6J}fl%4l`mOS$^POEwpl{4ca z33d*zu{9wY+m#)-R9kBDBvJCLm9{cBRli4)2kI_p+wQn|(O7}<=~0tR-CXa$itowL zg1)g{(**?j(f7!hX6hc-XZ5~0dhBi25%yJGnr6nF@>a~Tp7p{7t*h5ZLYXFZkPRLz zWab)^_^KrljfB@F-JYDGWwJgnB>QlQd;Xo9j;y<&K{HY&$->$E!m+(vV6hD92Fv@J z$Gr(H+t~T*Se-}JDUioAqDo%skZf{BQdu#Uxq36!7kT_AlJ4gyKg{oY72*Hu3U4#I zNN|^zlKg4qbd$UJk^%RT@HDUL56x#$a7h16EIeUXYGkBe`%EUSbi^UnW6UH;fYqcu z^^J*PFSNj<9ZF|krOr*)W~{PTu@6J{?5B~br^=wMpSZ!LNr`?2lD(Vb2ULeqqtJ>u z`W6md@Zt0(tEHs+Tfovrh1*$4dn*GwYL)u{Xq>j?hV&>~vCWO;{7ZLQX ztgA`SBa&f+_;XV+i)^!9ul}28#HOY~;)BL$9 zWtLQWl7NbjR%Bi+j2+&B1ewk?NqGPzT3W2?lvdM{I+Pcv51U%__E&Ycvg)c_vG;Nc zOSNRlivG2d!TRa~fg$q-QCvzy8|0ht^A8aGF;j>YZ!t5O!jpxD8Y-_3?&#N<%4}VG zNP$|S+RuU_M1lzB>9=fcN6gtiDsYKJZHt<-RfrPW56_u2U<0@o;ZL}x(RXx{$@7== z)~3H5TQ6y1UaoWh3`Q@W`8hkFZi{XG7gxpV2FdNEc-qlRkWwwy z4Q6JUEy2^5gqLINRY`ALI#`no-MA*cD+xr?uIV%*=a?VNrRe&cUk@P6HN`Nmru!GC znf-97MFLx9eb6|Yh_Qd7gnvNb9kX2w926l$_J8%YKAJMzz3%vGN68K&k)M26<)rJQ zyUtU{L(zm#;yh$7n%t!v#J5pqRQcpUvqY{bf2A==vRDE7LuJXC>L^0NxIpMsJqwdI zN2+*`;zf=f6t8M^T2FkTo|1?T?o;xNY};wb=JSmz+6OZ}*hSW6!)wahcSdarxtJv& z*jqwkxSuG1$ z?NR{`JHTx|1hDn7Q;GJ~!rH=EtF8}K{G&Zb(iFbxv%2SX5cF90R7r{_$*6PEW%Jo` z3|r0Nxx=0V5I){Bu>Env5+8MaPVW61gx6e~n;IX%P_P25?_0#tCURz&(3vRPy$&uq zJCGvFP&x{6vW&0nqqU2}sN{MN-}AebR9U`DR|Kuz)%CR7m-biD0?=_Z?N! z-HJDo*mKb{&L*%;d+zA1GreD(znfrBSLKG9g$LS{bxNI;#7@Ykaoc{fdpu;6bVu0V z*jRbp5FD&O=Y!@|)bu!u!M*JEq-h>z*Rmz^hKN0zx`3dMPlZh_%eyVsxDnu69bGYe zNs<_`AlG{R0IID$!SDpDhW71li|JO)iXg>@;BK!f!5S-DT_zMZj%^9PmcT`}{UI!3 z{BE)y*kJO%f(u?7VD(dHN7tU1Qa$g#*}HcIu}^*6W-eP4rhLgPat`_$7icW1rm(&=GDq7V9P#(a`&!r=hk`XGg)S0wSyId zRAnWVBsSywW6QlB{53MxT*o0B3;YU8#+x%DJ(eDo)m44Ezs+ZbRm1m3rbi$^0tHgED(ar?S}L z0|V0Tm$i$BSG{9Lb`9)#VK-h=T*ZuHPp{ndT5W<$1i_>~)!weCH?Abq+Y{bR{s?if zsm}VbdZ0|YTI7}Smy)(FO7@+9um7SZ3tA_=b7TpK=JjU&y-y`Z*p``~cY+}8i7`1e zcb+;%`o=E|x=@LbVKPKflz&R}H$G=gfY+-aiggt>|H*hM{QUG_Y@}k@=G93q8={CG z7erP=3?V%b9B{Dpvp5YVj?AF#y16v;IbQBFN7s9RNa@4Je{vOID=|^{@Zav9fq~`k z?ngc@n*SD0NZ1ZGH<$Wk+bJ2bj~uJZ=vMUOauollr@Gi?PvE24Jp^84C1km3sCt@cLM#B7`hIBTSP|uZ_${q8i29(G7&V3&5@!2&VGrs#5Ua_Y zwafdhpnBs;DU^z!j|iMO4pyxRA+*+I{569;*p?;qKUMG|ggh3{%z{yTefHrGG#%{!%5zo|CyQ0aJV-KA)_sB z$T~so|3h>Fxtq|2RvN{Vrmv(Q^~S%_E2ugOGx4~eZRM`ErZUwtf*WGpa9_$k*W8`BH)Hc{*H>IRu-&i$n!F>m^2ShvECe(`8NAUV&s#LWVL#Q zyo@hfn@jmUHO*NHUk*`}_I+8dH^tSKBpiH$6^xr>??=v#gSONra=ub;wP}9~s(4$H z`6j03L^?Ud&*@!6vamVilV_N8ch65DtRF_LMx!I3XNMW9!~4X0Gk(|YlE^KW2V+_L z7AI>@TF^?@MJ9P(Ud;S#;j5xu6jh??NU@mKQGEnsBO0`n-fO}C*s;7<+%Zn!!m_n> zz3mdvAR)`R5$K9z>(GdIu3bN`JQy>BC66(8h*uWMyaz%i#QwLOoT>)-t7BnQ$=#8q zE9m3>XxFA`mliI=opv$hj~*tM{#pcaj<7+K5jZwpYX3jt(qxB;cVgOofe2XMOX+*V z#x{;^HA01>qMs2%3hl>*!lV|I{=kJ)=dHG{TwqD zYt2N0fMuYrG%9cZZP1sAzX>_xQewZ|ol_wtoXFF5gxKqW$m9pyA!2yu02bpeOt>r1 zi{hw~8=cI2h=4gj-V!AO+v6z3D{eGb;5S$vla1T8$nSp1f3l>EhDV!qRa`@*OLo z{-SmT(@w=Pr%T*;aT06CiIwe(K}wAPxo*xnQN5}BW%tqt-$C`6tC_k!$YgFFhJ;mF zB$6*-N`2ax3*>5!7CtRY!;HUj6E`N+1%LQ#Be89K$04w$d~m#Yh$GWe|MIJ-_%lw~ z3vybQCq$>!y4Z{=u;vi5CTT626tP7>BN1r&=9#r_j``-cz2hW)qI|Hy@0@a}wY*M;k3zrK-~F%wUdG41F4hU0v7=NiNV`T$7>aj8Z1;@33@2(CC!oIZ{9ik9ZkdCe%b`Yk-d` zmX#QK@fJ3XlP@&S#T%I{#M;7hLX~wQrvm|;*T0@?(&Xt{9PNVZFQPx};=^w#GS9;NgRX>-S2kG!;xz0=O)1ZJ|jyG=5;dv47VHPTY)CO z%gw6#hP=!?pPqTX`c0y@RzDVUuv8LqVKgS6lPWBwX3)^WrYjH=Z=rvLx{rY`yBnEA3k+N7 zG(CO1HQTWm$>JF6HsQh3)v+XLng83}XadYKna6$Pso&sc*}#|)(C`n@-pEJx5WN*q z!2xra(=)w;tTD4BARU#k7?&B7)-L>!x_9X{x4%x4<{+gg@Fq@~FBGijkvv0*zh@n( zCg;7MBtQ1p5wA|yU?+~08hpl}fg@DUTd$*t7p*eR=IA`F29Mrs*J>*QT;`X~MRORC zmRta<=9tjxpL#dl9sZMDCs*+_Dt`Q=_C)QUqJwBxU`xKCFZ@LVIBwA1@bro|`4Vue z>xyit0*1$d$x9z*Gv0P&ay~VopxH`i{Yp+P3oP|$;UBZz{>N65vzG^Mp8ncC0$LYU zP5Z8)n>d}1fhQ~0-@X#SOXoQD?#9i}m^z?W+VK;UU>>DQLcZox2RJNrN4_`YP8sWY zHG+Xp=>ZJhfBf#sSzi_5;G3JNndg<@Sg=61HDB|lJz>-wpm&a4^kDJ3#GpR?0*!{s zdi!-xg1nPEhx@uZt8Y20(?h>MgLyW1Mr8l>hh%YM|U&N5yaVr zQXC{-m~!tR=&6X7XqPdJrA%hzGk@r&v0uoC2giVu6`Tv+12mg2W6y>s;VvWDZ)ek^ zZy~dbYmSrI`q7Cc`>3{3-3EkKFjcaAabE)JI zuH$hNQ4vv|b7pj4>jaXo*7)A)tl>%GD}21GTH}jLqGo6l+LM>^IH>CAM-S$W+$Hpz zwM zm_vRQjDIq?8>=48MdgXI+LBT?@O@A1`_Y=y{Go`&ZdxXP4MES$Jns~#2D@&~mwZu! z$0k%XR2E`(=~3chi!VXqhcLo*-|5_#K0*ZSZ1!SdWJNXY70PNrqrlXxI_bW~1g%ZY zbabWtfnxm|KOk1mO?YRZm*^dP4@$HKt5y;8b;XQ5mw2)VFlPJNPAP5J(;3=Yt_l^n zGsN5UCx{SkHp=uVKkASd0{O*ESUaWuEVi3XW^6Eu42omdyEdZZ@3Sijt-~-Qc4J7%Oja&^LT7rxxrtJM${r zd<=n@2}ZyGq5PQ*8Gl!GPuRds%D*S3TC@4rVt&?~LA4U)pr)5rXc1iyH!{%uL z&!_~g?spje zifoxsCXL<+QUsc7b*8QaqBHCEq}1=~lV2M`rhuF!GJ>Oti57jZC~8y`SYXttw#H$| zyoSU-Q&6=8;*|N~+TGe%ufdyh^`1O_eAFF`et3+7uUqoGC$J?QEbFvXeLqIB-JhD6 zK3>*ZAO}`_6&z7sg-%IyKE>)t2oHMO|6aii7FbQaUV(v4UJVSgD*(9x&AzUKU4OmR zuTRhgXeQk~3AYaQtyZdy$9MRRk!uGcjL{)5`E9Y5cm-rlDKR^ItI>{Ks=|*I*G(v& zUBuAdKZBhuj_h4q zd<>1rf9-$*_g*v$DcFlsXdT|Bc*kpN-p<@g2aD~(XZXv?Ah{COdTX``~U(^`!0tjde$ zEBrSzUPy3;N@y=Qv<#U76)__xeN%@qCd2o@zdyl^s}}XH^gSz``siWKb*?OC#0Kag zvVu{E!C+K=%JQCri14jzr1RX>;3%m+=`CiU9V+FoW?iM^?^bw$iDe?Tr~hk&^Mngs zDdo;hiHYx_9*xX5V*RVB$Jeu&YOe6~g=F!POVcnDn2{6K zV9JS5^HO$p=*SOkNu6QEo>rCJ0}eTeid&(6>ZZq`Gh-CDg|JlPUt$6m%*1EPW2B~# zyePv5LXd?>u4Vp2}tgHum9jlPmUh3r?yd}W*q5Q1L zX8QDRjk?prp7EN>DTf%`xrsdu`$GNe8~kz;R2O~>^47cHI7fgx4v*gWXq=eXt+j|L z(5p;?czv2R19=2h{uBzF^tyYB+pBt3UjSpPph$s&&KM2=l5uhkm`3~pBG_lIz3Rif zMF(`vZE9k&9U{+ zv%TaGA@5`O6A2CL2V;t9FMSzUmogD;w#r!Dt)q4++r5p}O0k7+cAL|^qg}?}2i>SN z(-kWbrz>{CG5sewl%W0vysP-)*R3*SmI+f*%cbmJaL$=@RKvn0JG~;)(1)z6w^fKo z9+@9-PeE?2Uxf)J>0ITaVfoA#GXEwFunh_yAVY8HkT{fRr+@IGo=@MyqS?TkjV6C} z-@cmX2SVY418?+ri?gB)Xt#94q~yTLyam@)h=ApG!74>|Vvy1Y94_d5c_dvBm^D`z zPm3Q&{?&E>C2vI}1L&Q~Vj;qcF@3ke&O79p$(is{y{5Hb@dFP`YP*C%rabtuOU$4* z*K+1XzIP%6?~YwXWcF0(%?c_x<2PHJCo$?kfn8R6{8cfLM`_@iO}XS+V|#cjEQFHl zLBa}HhULY?k|IE$!W60}`R+Fq+1WNT3G{@Q?FJ@wu3mtYIw2`tRBF=*L`+gyY&7Cd zWA?KvPmR|LZgB4+Uvl@)y#*Js&(2$Oi{1+_>!iG3?OR_ITkyootu^W$yqT*#xOdw6 z{3XSi*0!Vbw5{k88J)hTCfsz?#SxU(Db;BKiih&>{NQ()(kS4=>NuY(0+_E;Pi?AMfwI84WfRTmz-ctr zPXh_(^a;O~lp2&p;|+rN6)FDV8pI-+3J{s4e4+>Mehk6qV1Y>1fO}Q*_o9cPXzu-u z*h(-*$D28=rl9T*^MfKa^QVx0;!jQIelCyiD`jwBRRum4nC^mq?ABPK*@rV}ud5b` zSFe9dvgY2EQSIIOd#Wwrh_`;=DZ8u`hd|5&sGZmxQ7 zejrA9wmN>_FQ0knf<1|!*CtOru0LYsghuU+>U~^>^u2Jvno1> z7Mse8INo=W1dbNy3%BEI(>A<1!>fWnB_S>8k$ky1h?bq31A}AC#>p*;Vod5%(d{1- zDtBcV@Rhz+8hLIwM)lIrhVkb^oEu|Y%qYN#kxkD`8v7aQCFE?v)2L;_<*hre4K9~c zT)~@km31_oszvIl;88sF>AhJJjo&o1XxLve&}eAZ)_$6(GIVjxD7m=g)=3ViXzB0qwzDdYz+4o%fIEuc0tOn_ ziyEkNo=GcJKc!8WmBUK!Ml1Td@}SBbZXe_#`qNkDpz=bn1<%Mka}(h zAs%a89^Hsk0n`dSm9C&Sm2*8y_!kGSDF5d;r!^A6qH@J#0uY9Mxtt^3ne4+|v3bP+N)bA^Y}z87IgJ z!R*ax$Wh07rsE&5yzY05{|&BcnIq-ueNXY5R?N+YPN4T`SYLH*LXw<<`P!GV7VFgQ zFtL!LtY^3uuFP7!f;v&imXs<>Xnk6@lp0BTe)pB!vlAQ?E+2gkQHcB}(}} z-JIc-;D*Qz@Em~zJsuymz|4JB^*@RnFo6IJ8{9Bn@CFxchMLuOFuD0FmVOX^Mw?~S z#J*)Vyz@d#xUCHf{e*mS8hDqDkb&8NOF$O>As)qYH!qUq2gTgokD17nnUnZOm|DWJ zh#x!Q6`P~cq!xi3^>ngPIv8u>-4y!l)>_N`1nf!RN zC-d^70MWU1I`J3-P&s4AjrAicdm^)}>#7dI!;{e4rs$zDsc3C18v~%Hvjjw^T>z0V zSd8n}vDv)<#3WEK>Bm*>h7PAQN+!0~zIHQeYfr<%p{*mXPd{epdfjWN(r@$t0f4(3 z4xL>BpuaCg4}VUIJ~vN*k_3t*w&z5AEC9gHpEapA5`q_O(=FD&3esfBW#)KyyyEX=(*rro*&_U z0Dds^5a~_-2f&C30u5r0sw%<%Fu-=}5ek?j&L6;p{L6;1MI=xXZqdv$DNM6ZtlR$l z2Fn5{Q-yL8D-;CeFD!sHO=7WYr2I{bDMQ*weWVBk>;LTkXE*tS*eJF(je%i&WC5JVY1AWnJg+W@Da}^1h4iU!y4Z_^_?~X=-PsYyldX^Ee;b5##?8m5GOTptMs1hCJ^!uv zb#a54j~?7F%lp?BS%K?g|GVz=ugCv+k0Sq)9@uq$o_F*5;;x?X==rxqX2t@LL5Tw- zz*z`|Xl_hBxE+KP8LZP!x9W^vJ~yz&5MH#m(W9%rB98|%u_*T+W=Y0o?8!e*E~ArX z^IhU9^3FRYXbgNbW_@y}hT&LeZo`SpnM?8Wuk#{ByR<+)?b4E_Qh~pgUtYpSU%)^9 zzl9Ae0;EQFZh;268mP8U?E6E}N&k7o7uhOiV^CaaL40W|Ctfh_xv%nW|0?=R)iT46 zT$bJOo7)EJy9S$r$$AGzCU*DFF0VQ5cJ8TDoHc|t2#d&8Sc*x2Tvw#{!eGSL)x-R#ZT!%62!Dv+U_9@nd+f5omo`52Zo9p{gCQ@JFY>gr#ufuKeM4hwMaYA%;g1Xn6{B>@ zEKX2X@VG~2`Zf8d5ZPms37a2Sq?8l31_u6*i*U1hI-gIMCM#wLaGJ2&Lztg18K|4A z3?_5ftxu$?nYHh8jhBs~yT@n8OLrzNgT-iIZ zBmALo*Lvl3A{+#1^mOuc>hTZ(fa5U%N$Og>fO4DR<$~5wMOcqS{Nf)CG0EPPm#A4M77a8p8g*@ zsvc$ye{(|6tTiQE?C-cIC!g8+ZT$G|HK+)*{B63*8{oIGrnu3M{}J`%ZwtR%!Gd}# z@zdyw`wREf)!g zfr3Q1(6`5mp?E2@Kr|ENvV#rBXDxV#mX_AwoaLOKG3WfY|ImZg+v;uI4*(hmPJ;3h ztY}5^XtHFvOVHD&PZ{_~aRxziu>g$di+Rh70hA+<^9&ndVJB3t-u)r=$`Dx<^7VlveIhX`3kb zC7Fn@&ah|)>Oq_?w-)jcg(M2`{Qzq>2wWRxPeYcKZW6IQQ|L^oN!k zHOqYoRG6|Y#oGga^M&N=$H-{#EE9!xJDuUce4##-j={@m6>z- zp#Cr+Q-tfazw!dq>Q%<~8`pMJ4-T{eg_qPwk=rgyMK}JrZ2RYG34XJCTlmfv<1A0?c?{_s082OLr2<6|$2}mk|^_m>HUA+xbjtrOhe{|P|7uNa`;UDivj*V!1 z8it2wWfIDI-ml-n`%mk_JXM~>VeCAqGA0r*0Nmi?Gt3oF`-Nv%Px11zq<~ zt)&rT-VQuHtm(E5TVT z(?g8%S{+xCpdFR!eVo;>EaRRmS31Qsjq)Y34BXU=<`Zc_W3A5jFU@ZhZE*7R1=TBG z`*h^xZW}!A$M#xyb0kfXDlQ8PV0wUu{MN={x9sCa@XQui<-y=JQFrW#->^#b$c$2- zoIA_4=cQhV9`J9xP(}>~VkE+#S9Kg5q|RyF7e|JGoj-^CoE)wa=uF5i+hD7Ii1gMl zT@fKd1JG+~J<1S@>-I0)zGYM=@?Y^j=0!nQ`d7M=kjNZPcZr<}{`9YFASerdAI{mq z48-b8VcV2YpZqH;`;Gte#xpN6h~SzEhp*s}&9GaOx4lKvg5Tuw2>&UvVi2#99EN|Z zSRW~*aqXcj4J4o;QS+H~FyNAX^W_1sz2M+_C=9TkuiZ2wuOvM3(c=grUR1zutB_z% zijnw>#f!+2=>4XqDn^%uIxo$fl8vX~=KLG$xf1US4E^yAM zmDmvNd;EuG?0G2k0r;iHeFUR_M{1&3viJK|+?#5FBNigBu$(J`(lKKrG8`d1d4`UN zZ^lL1`_z1}XOoCsip3$54{_!|dV~Wod6S2rb1+r@VB_Z4Uf)ASI-5+)Jn!%XA#(03 zbx<)BzMh1zUoVTAU z&}GQE+E=2y9*AG2s>a=tK;r{T?5|?FyDH(AIet}_c(>&(rxO2dO<4~@K+0SxUtHvM zdV&udkK4^V@%#zd7KfRV*8_R${i9nz#j<(mUIOL^Ip&f~_MoF=k(2bwc`Ziw7S5OF zYCpum<2+6*z;bGo>{YzsKSPhRhbpJuq%)uI+EAij-8|F1!UvY*>;_hCj!X*OH)BAA zh&LD?qkI@wLR3zTF)A@QugXS@Jc?0f6xP~xh4Aq`Zd{MACNF5}XW32PIV!=UDgAg-AmStgn{{=IeM z0X*c;{i})`>gjK?2h+z2^@MpMm4_SO9gTz@=TMd>==BY8UOc>8CI4}8I(+A4GW&Gy z6b+LZ;Fs);U&U<1f_bAqPgakBAF5T9iJLGvGt8pz(-+E~?avvsjt|Rj)fUGVQxk~ zd5HzRm7+^0b-=TMiExPR`B5+~t#h#33*Pi09CPt>X?Hb1ILFVN;)>Fidsq!a9ZFo} zeO%M*`^ecOrn;0VZ&)M(of7v*tpV8V-2cu{0C>wZ?CTX(%Se8^-Yau-fJo;;>v-3x z@QhHO=OdKq*OC0_vRGFOvmaGUmufzCLMb-#g+oAl$dlTDD&(_7I<|$^r z1aV)r-G|tlB5jq*Wr(-)$brM>)uK|3{~q%T>{s#}sD1K`drLB4c;NQ|%s8u_c#B#F z^)~44u6fg?J3iHL!~s7uI!%jHm|RM(Ia8viINq+p7Wa2w9>%0dWmlg&B6^|4lX6~9u@WJ-7?A>1Fa}=57?D*sY z8!W{1nScI+dx=oAD4tC35tRLRm0~R22hA+!)r?3WwMt$j+8(gBp|&uGxOfvr6K0#nVW{S zZ)c|~%-O#r4K;m%%;sKcg~7M|cxUdY2ZY&7*XcKZd&eUe3THt49orz)Jx1bN??{9R zEE%@DQCv0jNtAK0{E*@DlU?(ws>#H3`BDuS2`rkD`{gqtwwq&b8Cf(c5!Ss#kd6le z)w;{(Q#6U+9m0$5cUC8!_S~a{;S{>U&tRi3PYu5CM0y@R*C&-)JdF*;Nf6n4eYO0@ zaK*8E7V^|vh;l`Og0uk562ftMY%nPME_Kf1sEpW!ZB*`dL+~(b9SLL+5#SuVrz7}z zY&%jlul0aC6^(^<~dvawx%dY*=xOPDm*#Jheo1^Ji{%cI4+jULEU-BmO*%-I{KomgkR=$$OZK_&hWEwD zz3Ly7z6vvRr?Zqi7N*m_jJblH)6r!Q#x?G&@b z25e0UHcxqV`{mJkrxMN#(8&}KSYAU=zA4n7{9hdmLfrmhcEgIuzmcS>Cn4L}VnXLvgrY=@c+77s; z`K(gT(_k1Q4qF`(yk}TX_j$S<%m9(qd4Q$_FWaZ^GN))&g-OO3G}feo1xq!aKfE*a zA_8LCN7^Ep@jDG8PI=#IQDeR#5goh-#O>?J%&pOXklfCKPGWv!@HBsfUV(jAK+u00 zF-3xu1Hw&$%t4L^)gvX&|AIwya&-A7`6_|(M)PRp&+9efM8?v8g;@NWkN*rwPK)(T ztV%1XOw)!i?dm(o>^OZM0!#y{f6SV7oyzP{MKwjcm{!e4dS(`mIEC50=zeDgh?3Zq z+9_{LB&-Lsm!+$UhLt6af5ED+)XK%@G2d29zHAWN@mIKNWH}$5hQ1Tx-{oUwUTGhw zLq=V14u=%8EJv$`Lg>MP2048%Xir@taS^wek;Th4sIr#e+!$k)eA}RE16Xxc&`mow z1;@L&R(h6oR&loIONS&WRo%o;Tl(43geD$T?_45B>gIb2if08Q!Vz}zU{=I?p0udY z(EPL5o#X%o8_HeK%(o$(!6xF-4_L&li)%O#qg(RXMNZ8_-Q|+7P^j3;1D6Q8oGknp+V4r8 zNF+`%)|~o^(w8laYEAux$XKl=t6^eHm{cL#x^&G#W7s@xz4G78gv|n6ud=e@CB|s# z-|D{%OeH;W@lVmraX~4gh4^eL8?@WZR?0$25(MdOu0obt<#h~BL+1)BI zfU*9o8={|jRI}NscTgw~W*c~BRdB?cT2JDZ!yU}Br#K)Nk&YaTO?X&3H19_8q@e7J>LO!m_5yqk17CPsDDz%O*{oUez1H={`%tkbEmxAz-;MN*u} zCF*MwGl^MQwa3M}CtScJM>#rdwkvC@8zq1vXA#cX$m!vSH9elLQyD8_B@Z8e-@Dt? z8tlmF8_OAU%28O8v01sV%Ae1*k+9iL^#wg7n8Xrf@q0rur)1hvD>vpQqHEWwkZ;r2k|GM7?uIIyUFZ>!a77h1fmN zrSs){kt%*G)|Dv~kNLUj&3C*pSV}Y;{(S^XXJGPy+EY>oc4Zjys`J(QkGUidM1E!w^^z`!pbP;ilSdym<^)HXAu_Oo9dC^ z_vX1zYp(Ub_0(-2hv!h!>`M#IFA8QQ8d3jp;EQ<*a`}5U4!_~KsNYik*ix4=nQ_gF z;n(zLIes(Ccec)CtIbhEk6-zTWJTh7VtgRj5F$MZ)<6R<*+`FSieFkBii zh;!y!_5!)qCov5%=`GnSpJ&?7$3I^B_Jw?fHH>C(tSA4(&C62b6*}1C(L92)9wCN% z!cyztw}x!~7s7)bgdxkvZ-0Q1cUyk*ysbK;s7tQn(dKt4*2@a~Pa{xlO>qur)kXEw zg(@7@L_M!4wH1NmSkJM{H_%&xZs@4yYJ~V`tURA<-0$3P#11&5K(mW(OW6UiY)5_! zsc+vZN0Tp!xWX=J-sdlOk>eL4`@NCH!xgN0F_a?5qNRfM54v`;fNJ&B@V`5&%i5h)Z=-xJsz)qsd?Zt+>LQ?l z2)gIVBNh(Ge8~H=Xy?H8)ga;U#oC%mj=j57$Ngg%=)U`-Fr%`85Wsg9P&l5L3sq>? zv|4_VXNJBO>g#Kq^49kauleXp)zrdmp$6aHhS|dRjO~8n4ZYdZV z9eBRdBZv?`Hv9DoHHn%K$p7n{1x@;P_j&2%owrD4)-5B+;EJfGN5UH(31dIc#50W! zyjs69^Nw*y7=*DZx=k+Gqx?A4;L_|7kV(`0N)_wNVW5thQ}!Xbv`wl%_}AyZ;qSFL{BY)hksKo!GRmkTl8hl9znJjbHk&XhK{2}XaUU9%vAv=6&Q3YQ5E35&5_ zIvP=|n>A!pV%g^Nqg^=ri50&bxasC(@bT+A#fb)X`I0QbWJ#(cLZOrv$;Z#%qGUnO z0zdQ)??*)VEovwj_H$lVgcTQfPEgEIo&*3tR#V3W+ByEv6^?y|iyQsy$SI-qV(CyK zf~8@RS1Ezza$p8Ce15lB6~9_Rvb`R(pc-VD5`b_r{Z5YMgTUe;a^$3(is9GDu49Z!zVvxY!#_{gt}bZHm~$zo`@e0?YE6$&2W&y zEZ~qAbzQC{s-pjwMcr*_Y?dQBcd}43G`Qf725KW6_|Eulmy^q+kXhF-F!L5>0ls@i z%ywzsEKp#HVx~Nb#7P=KDl|eUt&TQ7*lX*vFd(9ubqB3Nh2}LFgJ#B2T8dmNJSb@b(Oy(*znfSQCAO92KKexQV7K;E zn8EJ06Q3H?yqlJZ-Y-GK%9nLZf#Th)bRwYrUu9>(FgTJ(p;9VR;-K%D(q1|63uo(5 zIZT}jd*XB^>qXf69B5n_W$t@lc$)<=9T7{@XLc#Jd$+{xHTT%G6Q2wijap_?aotRo z@(zVzhw+MYcFQvzWa6X!%ZJGUFq&;o6tMCbw~Q5WMHLBjmQXVa~ zmSbKuzrV~)Zw?D_qYF^C$G=M?OCe1b-L_5vx4Kn*_Da&l)gqs-8 za|C3?KP}gYz#su_6V-WVrC@ldXiMSJEdc+HD_`y~SoUXcCP<8vS~8C(Nznc7>{2Di)iII@^jg)4q^ zKD(u0)ww3**2ZjLvno>}q)LvZJW;cohe@l2P~s-h;18@md#Ne)D_n0x&r&ow*9vRh zKtI178L1Ku+7+L}`s|kplb^8!%UiOE+Ck-Ae?k&MsjLb8XMWe4_gH5NKb8RKOfuT^ zL*52tR4NE9s^N7CD_nB|N$s>cOOgCWSzKx@jk{EKh(Njz(skLf9+8Gw&Ggk&&@Zyn z1=WGEQ4+~9Jyk-JbR=~>7-${E9Ui4ptvq@YmqG%Cs|Tk1}}MsHfKWx4Zx^^gK9STjEf zzL)$|15-eT*T4jc)j=n{#E<)Gc-2EFI>1TOQZa$eEhV02Nc(&ET~%r<-6{NBRGBI* zm~DQ@i=VIbC`*dhvHAIj=MC1@%Yk<962WW~nHnp(32%$-$ytQ0l>^va43GE}l#kanF??dGB3H;8~JKn!qsN{mb zdk`eYIqC?0bh~5-TaMK$^2@;(4od#0T%ah2LH=#qomrWX{whhybNBmWtTC)BayA+H zicj-G9bo(Z)G8Mq8R*AL$i6K`Vh9^EkcKgBkN*wt&8QsRLn z1|R^(!o6nh1HiJhQC}vBCWrnBA=SrRan{Ma6`J0ed2t5Bow3P14q>0)w9T82BR;55d#$rdyS?VLEtvY_^QQdfBvN^L zXsCmR#7`C83^JNzBJo>D)}IO_YPf3s5u}T6_L&Wl1GJdAUVLd2%}Fo+c5-#j5A@0B zHzq-CC^tw2JACUS+%es}nr4QSRnZ`d*4%=m8%0Sy7P@H4Ka13b1c9@h$)AIz0G%|{ zM8W<3g?URTy288vWRdeR}4uI$2_l3!C#Z-JMO*}hk z!t5{Htrz}MJZD}n!4BJ?WJmV;Fh}nafeR>RbM}*~!+}sQ&aLaKO4z1-hQ51@_p?^q zoOKEGm@HOiLNLBy3nGIR2_CKT%s9F3_T$ufPmwbN8Dfh5tBOSFhSGhR@e~##lR@{|6{E=(7W{?;bC?Gl*GUdWjZ1&UB07!Af&CNFOfrULM zhSIh$p5`SzwZ-`6SLo1R7snX8(}) z8$0aQ=&XM%mQj~wX&P4jsK{%QM_m%rzUp=7vQkYx)RS7m1pV6zx$#cvmtbEoU2sVr zExzk)zU83`K4=4KeJ)m(uM-n2yvDlqcT4e~KFj0@f`l(rj^gjq=&E7twlw2g9?O|h zAw6*#9HpHuX$X6|NY=<)Yn;aHL{A0EDp+qyL^fsT&aCj!79r!toVGgm>)s{CAr{v1 z#nV{X;qqlhv$a#P;=^lDFXSpV13bpVmy6q3ta(8r`S64vI?F0Me=5s9yrlTu8i!8m z6LLcmrbqzTB~BmTPaov&fDbRz<7&N}F+1-9T~RbAY-}RG6*!N>2G!cjqP*Ew#vRMw zUdF$OKxf05ZFTFzLJTi0w;ss+dp6RqHI_Fb)2CdhrS>4^si8C3@bj{2;)8r0)wRb? z%i4d@7X<>GD7)psupQ2e>9xnN!?1yto9;uiuZ#(P|)=Vf5+8LsOVX0Llxt?9>0L9KF0AtZ%Lze#+7S;qkv6&Lc` zlzrj&>#yqw&k9zQ10!9vfTP$iLiP0LC2*m!VK?Weex&1v z!cu!z0Su||4Dwmb1C@(cX^B}ozg=Xtj6%vs1LQw!DsU+EvtHIwTy3Paest~GXoJ&I zUP$@2fTLAS4qBFbUzM zO&KKQ|6Hvd8#ynPH;Aed)cb8pGb*5CCAD6FG(lG2TJ_c7L=}&g>2}Ibd7pnl%i5M( zdv%+@DIko)*RA+i6 zxQLBE##MXC?!FajUt_AmA@PXb#8MMLh1Eq2Uj-#O!C+83O6)8t#0F&lCOhHJFZ}wa zNh>fF6S|gELP~01&m1d>C}y1`IDyr&_(EzTE^@ZW{6r!9@iN+ zPUbm9|F(AVc6Sy%bow`z1;w<1dzdFwskNm@zFP`QWAK+iJa2Q-hGQFOqKu8ijM^ei z3UNbn54m#4%5>j@p8ANo#4+Ay4Dt=<+3f<2}bj`txyt zcZn*3>QlwEi1LN;6vAZ;VaE1sW{eT5c*M3Qx21YfA6y%9Ui2F0XY`K*@IxUEh8`03|Opt4-x#wtE}4FgU9q!9`tks~b>EB`84 z3G&VPff0+{o-p*(x6|IPoAuqsq0m`>yy4^l_7=d8CO zfwTwY=im)(DbAOTz({;xwv8JRA*s2zw>C z^{brbR-Lrf%c^bkA3T+pcZwb5l>{PI07M&Ct)XNc1whbcfUo{=0u)rU1SaQ)np%IC z{;jt{b+#bCw`XctTA*83kIt4%fKz>{m;IbXFeNxlXjk&H8oMNidY`0jsicT@%4aj-R(Ny#96$rm(}V5}}iBLBtUL&KzZGLeAf;F*1-Eo30#g zHKf4(S9n5}BB=Q1VuK9g#%vat4=s{q?kQ|~OF=~VpK!P1r$cF+@Kx@}p5-eamxYMb z@VAm=I0?nI2jx%1@9yIBpr`!NaBPE{Z+~^k3!y;Yc zG}CODt93~J8TmC~DPODS+sKYfDJ1_4z!bzeA3hJ*dFqhsbrjT9h`U{ZlU9{xS=I4B zDJnS#e^~330tTFD>c6PkRcF1CY?*)f6~@Qj@~meKwYtuLxP7IPnAs8*Fpi6RBD6tz z);&RE8LZ4xsdn0qaPabh3yd`>8$-K&epiqMfdqxW(e7DH zPms$>`MhHBwgR6;$(c+*2y@`?!x>0ZO!;lbmc8vQNtdfsMJO^E*o^P!5!7}1Hf@s>I-fkXuIa?X3U1Np(C2UsE7L{ESJdFNjBeq zaIq5|Sby(jBd2EORCo@jv3t6=>#9Ajq5=Y!1hJfYXNzd+TyrZwy$-o{~W_ zL4t$M$t@sal!MAuWcqc@2EXh))l~vtCwvMs%$4-XW#7T<5?Q{ac!L{10dPeUxK=%% zETJbgbuh4B-Wz+NH(u8;P*O2j%D6!$|RdE{qq%oS8;er!Fz9$1`KCq`cP!9&SVFkw9k?;bp}z76_?=^aqH zlMu#R=vOoMHy?e|45W0MK;+_T?A!s(%p>|V_0|Fs+bh%dVYKJH&1O38*EGHnSU)L* zYWo7PF(0C+AT1m_nPEGxeEnekGa1fG33~S)DVK<(mI*a1!5jEL;^A+>BZ6X1GuECS zp?Kako_X#!VF}k=!|qE2@5#_3W8yoYTWh0S=9JvIX4C4nTOgU&$afs?uu7!n2C+ zY9U2U_Zqf62$@Dr*3oAgvv?GGEz;M##BOpoENNjA?FRlNI*NNZ)8V-5F1Uhd1 z|Ej(K{|W`qQDTMnvj)Wf!}fh77|Gl@Jd_HVVd=cKJ6>*=81g_GD++bytheFU6-Zuq zGu!>2A{&jMP^irTI-Vo5M<;Cif9)p&k(_}SJ%TWtYu}M#--_Sq{|jEzKr+)^THhtj zHr6koipv}X2NbhR1OJ9xW41|AAatRo2=#JJ$eY?<>^7dRw5K5CTEYM5tgn_#2&fo? z_ZA`rKq~DIw@(iJX-|j#qk)%th#o}m9Bd)cM%^zbIr9~}^QtWfOzYAd0?(HqI4u+| zQM%2!b1@yXH+p~Hm{;*aNR#H5#dX{jveGKXZ(L}zupJJSH;2al=y@{G8~RO=%H zMY9NF!GxNVJf3K)|CA_MkU$JR;EY*!MO)`?>3MpO)|=o3m8GwTPoeDs3GNx~ zrB9VM;n+_KwWs3DW?Y==T$8zW@ElT?8gKV$IP=-2*5R5#OV@M@9sOj7={!5EcmxIG{hvg<}bv$8F(N%KQW2eUPFDhjad=PQo7 z4&MtwRa0K(q~&0DMNy41ZsmqEnYB*}UH9T6IKdje&WzVuR?GHCaoQNTr`VTCng_9g zs6wlr*kzrMZa-{$uJuxq-NNVE1kgI2al{=gM#Mv5!GzN61MvelTYSVVk3@cTF}-Yo zXUK-T4I;khc{j5e|Lixn#r^lQ24zy5Bef>pZ?8=L#>eG6@(ZrJNwR)X$aD|wirlp@?UT3yo~nk9lfx5`mMZ&LPZfL9PJuO$Y4EsM(HEk*Y literal 0 HcmV?d00001 diff --git a/docusaurus/static/img/logo-monochrome-black.png b/docusaurus/static/img/logo-monochrome-black.png new file mode 100644 index 0000000000000000000000000000000000000000..0a2deb17e4add43e7dd4015c53e05a380154dc8f GIT binary patch literal 12694 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 Y)0Efv&o{M$|7Zbds_DY=@0thvAMaQDm;e9( literal 0 HcmV?d00001 diff --git a/docusaurus/static/img/logo-monochrome-white.png b/docusaurus/static/img/logo-monochrome-white.png new file mode 100644 index 0000000000000000000000000000000000000000..2bc6495ba5e5f49fd7d493fe15f54d6842abd63f GIT binary patch literal 11750 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 literal 0 HcmV?d00001 diff --git a/docusaurus/static/img/logo.png b/docusaurus/static/img/logo.png index 3ccb91ef1681054ba4d36811537ede87e0e16eed..c59c8f885180e7eea0dc71040e616dfea915dccf 100644 GIT binary patch literal 14066 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 diff --git a/tools/installer/full-node.sh b/tools/installer/full-node.sh index f6c2abdb0..3b911b203 100644 --- a/tools/installer/full-node.sh +++ b/tools/installer/full-node.sh @@ -26,24 +26,61 @@ check_root() { fi } -# Function to install jq if not installed -install_jq() { - if ! command -v jq &>/dev/null; then - print_color $YELLOW "Installing jq..." - if [ -f /etc/debian_version ]; then - apt-get update - apt-get install -y jq - elif [ -f /etc/redhat-release ]; then - yum update -y - yum install -y jq +# Function to check and install dependencies +install_dependencies() { + local missing_deps=0 + local deps=("jq" "curl" "tar" "wget") + local to_install=() + + # Check which dependencies are missing + for dep in "${deps[@]}"; do + if ! command -v "$dep" &>/dev/null; then + print_color $YELLOW "$dep is not installed." + to_install+=("$dep") + ((missing_deps++)) else - print_color $RED "Unsupported distribution. Please install jq manually." - exit 1 + print_color $GREEN "$dep is already installed." fi - print_color $GREEN "jq installed successfully." + done + + # If no dependencies are missing, we're done + if [ $missing_deps -eq 0 ]; then + print_color $GREEN "All dependencies are already installed." + return 0 + fi + + # Try to install missing dependencies + print_color $YELLOW "Installing missing dependencies: ${to_install[*]}" + + if [ -f /etc/debian_version ]; then + apt-get update + apt-get install -y "${to_install[@]}" + elif [ -f /etc/redhat-release ]; then + yum update -y + yum install -y "${to_install[@]}" else - print_color $YELLOW "jq is already installed." + print_color $RED "Unsupported distribution. Please install ${to_install[*]} manually." + return 1 + fi + + # Verify all dependencies were installed successfully + missing_deps=0 + for dep in "${to_install[@]}"; do + if ! command -v "$dep" &>/dev/null; then + print_color $RED "Failed to install $dep" + ((missing_deps++)) + else + print_color $GREEN "$dep installed successfully." + fi + done + + if [ $missing_deps -gt 0 ]; then + print_color $RED "Some dependencies failed to install." + return 1 fi + + print_color $GREEN "All dependencies installed successfully." + return 0 } # Function to get user input @@ -129,22 +166,6 @@ create_user() { fi } -# Function to install dependencies -install_dependencies() { - print_color $YELLOW "Installing dependencies..." - if [ -f /etc/debian_version ]; then - apt-get update - apt-get install -y curl tar wget - elif [ -f /etc/redhat-release ]; then - yum update -y - yum install -y curl tar wget - else - print_color $RED "Unsupported distribution. Please install curl, tar and wget manually." - exit 1 - fi - print_color $GREEN "Dependencies installed successfully." -} - # TODO_TECHDEBT(@okdas): Use `.poktrollrc` across the board to create a clean # separation of concerns for pocket specific configurations and debugging. # Function to set up environment variables @@ -341,10 +362,9 @@ configure_ufw() { main() { print_color $GREEN "Welcome to the Poktroll Full Node Install Script!" check_root - install_jq + install_dependencies get_user_input create_user - install_dependencies setup_env_vars setup_cosmovisor setup_poktrolld From f81cf38babcdd8d51ad430b3cc62f2e414453796 Mon Sep 17 00:00:00 2001 From: Daniel Olshansky Date: Wed, 5 Feb 2025 21:37:46 -0800 Subject: [PATCH 07/11] Full Node cheat sheet works --- .../cheat_sheets/full_node_cheatsheet.md | 81 ++++---- docusaurus/docs/operate/faq/_category_.json | 8 + docusaurus/docs/operate/faq/full_node_faq.md | 111 ++++++++++ .../walkthroughs/full_node_walkthrough.md | 190 ++++-------------- tools/installer/full-node.sh | 84 ++++++-- 5 files changed, 262 insertions(+), 212 deletions(-) create mode 100644 docusaurus/docs/operate/faq/_category_.json create mode 100644 docusaurus/docs/operate/faq/full_node_faq.md diff --git a/docusaurus/docs/operate/cheat_sheets/full_node_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/full_node_cheatsheet.md index a6d884481..36e4124e2 100644 --- a/docusaurus/docs/operate/cheat_sheets/full_node_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/full_node_cheatsheet.md @@ -16,12 +16,11 @@ See the [Full Node Walkthrough](../walkthroughs/full_node_walkthrough.md) if you ## Table of Contents - [Introduction - why run a Full Node?](#introduction---why-run-a-full-node) -- [Pre-Requisites](#pre-requisites) +- [Pre-Requisites \& Requirements](#pre-requisites--requirements) - [Install and Run a Full Node using Cosmovisor](#install-and-run-a-full-node-using-cosmovisor) - - [Automatic Upgrades Out of the Box](#automatic-upgrades-out-of-the-box) - - [Verify successful installation (curl latest block)](#verify-successful-installation-curl-latest-block) -- [FAQ \& Troubleshooting](#faq--troubleshooting) -- [\[OPTIONAL\] Do you care to know what just happened?](#optional-do-you-care-to-know-what-just-happened) + - [Verify successful installation using `curl`](#verify-successful-installation-using-curl) + - [How are automatic upgrades handled out of the box?](#how-are-automatic-upgrades-handled-out-of-the-box) +- [Do you care to know what just happened?](#do-you-care-to-know-what-just-happened) ## Introduction - why run a Full Node? @@ -30,7 +29,10 @@ This guide will help you install a Full Node for Pocket Network Running a Full Node is the first step toward becoming a Validator, Supplier, or Gateway. -## Pre-Requisites +The instructions outlined here use [Cosmovisor](https://docs.cosmos.network/v0.45/run-node/cosmovisor.html) +to enable automatic binary upgrades. + +## Pre-Requisites & Requirements 1. **Linux-based System**: Ensure you have a Debian-based Linux distribution. 2. **Root or Sudo Access**: You need administrative privileges to run the installation script. @@ -59,34 +61,29 @@ Follow the instructions below to **quickly** install and set up a Full Node: 3. **Follow the Prompts**: - - **Choose the Network**: Select `testnet-alpha`, `testnet-beta`, or `mainnet`. - - **Set Username**: Input the desired username to run `poktrolld` (default: `poktroll`). - - **Set Node Moniker**: Input the node moniker (default: your `hostname`). - - **Confirm Seeds and Genesis File**: The script fetches seeds and the genesis file automatically. - - **External IP Address**: The script detects your external IP address. Confirm or input manually if incorrect. + 1. **Choose the Network**: Select `testnet-alpha`, `testnet-beta`, or `mainnet`. + 2. **Set Username**: Input the desired username to run `poktrolld` (default: `poktroll`). + 3. **Set Node Moniker**: Input the node moniker (default: your `hostname`). + 4. **Confirm Seeds and Genesis File**: The script fetches seeds and the genesis file automatically. + 5. **External IP Address**: The script detects your external IP address. Confirm or input manually if incorrect. -### Automatic Upgrades Out of the Box +### Verify successful installation using `curl` -Your node is configured to handle chain upgrades automatically through Cosmovisor. No manual intervention is required for standard upgrades. +We are going to use `curl` to query the latest block to verify the installation was successful. -When a chain upgrade is proposed and approved: +Running the following command will return the latest synched block height: -1. Cosmovisor will download the new binary -2. The node will stop at the designated upgrade height -3. Cosmovisor will switch to the new binary -4. The node will restart automatically - -### Verify successful installation (curl latest block) - -You can verify the installation was successful by querying the latest block (i.e. checking the node height). +```bash +curl -X GET http://localhost:26657/block | jq '.result.block.header.height' +``` -Running the following command: +Or the following command to get the entire block: ```bash curl -X GET http://localhost:26657/block | jq ``` -Should provide a response in this form: +Which should return a response similar to the following format: ```json { @@ -156,15 +153,23 @@ Should provide a response in this form: } ``` -## FAQ & Troubleshooting +### How are automatic upgrades handled out of the box? -See the [FAQ & Troubleshooting section in the Full Node Walkthrough](../walkthroughs/full_node_walkthrough.md#faq--troubleshooting) -for examples of useful commands, common debugging instructions and other advanced usage. +Your node is configured to handle chain upgrades automatically through Cosmovisor. No manual intervention is required for standard upgrades. -## [OPTIONAL] Do you care to know what just happened? +When a chain upgrade is proposed and approved: + +1. Cosmovisor will download the new binary +2. The node will stop at the designated upgrade height +3. Cosmovisor will switch to the new binary +4. The node will restart automatically + +## Do you care to know what just happened? + +:::info Optional reading for the curious -:::info This section is optional and for informational purposes only. + ::: If you're interested in understanding what just got installed, keep reading... @@ -173,17 +178,17 @@ If you're interested in understanding what just got installed, keep reading... 2. **Cosmovisor**: A binary manager that handles chain upgrades automatically: - - Location: `/home/poktroll/bin/cosmovisor` - - Purpose: Manages different versions of `poktrolld` and handles chain upgrades - - Configuration: Set up to automatically download and switch to new binaries during upgrades + - **Location**: `/home/poktroll/bin/cosmovisor` + - **Purpose**: Manages different versions of `poktrolld` and handles chain upgrades + - **Configuration**: Set up to automatically download and switch to new binaries during upgrades 3. **Poktrolld**: The core node software: - - Location: `/home/poktroll/.poktroll/cosmovisor/genesis/bin/poktrolld` - - Configuration: `/home/poktroll/.poktroll/config/` - - Data: `/home/poktroll/.poktroll/data/` + - **Location**: `/home/poktroll/.poktroll/cosmovisor/genesis/bin/poktrolld` + - **Configuration**: `/home/poktroll/.poktroll/config/` + - **Data**: `/home/poktroll/.poktroll/data/` 4. **Systemd Service**: A service that manages the node: - - Name: `cosmovisor.service` - - Status: Enabled and started automatically - - Configured for automatic restarts and upgrades + - **Name**: `cosmovisor.service` + - **Status**: Enabled and started automatically + - **Configured** for automatic restarts and upgrades diff --git a/docusaurus/docs/operate/faq/_category_.json b/docusaurus/docs/operate/faq/_category_.json new file mode 100644 index 000000000..ab2dd17d1 --- /dev/null +++ b/docusaurus/docs/operate/faq/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "FAQ & Troubleshooting", + "position": 4, + "link": { + "type": "generated-index", + "description": "Frequently Asked Questions (FAQ) & Troubleshooting" + } +} diff --git a/docusaurus/docs/operate/faq/full_node_faq.md b/docusaurus/docs/operate/faq/full_node_faq.md new file mode 100644 index 000000000..2760642e8 --- /dev/null +++ b/docusaurus/docs/operate/faq/full_node_faq.md @@ -0,0 +1,111 @@ +--- +sidebar_position: 1 +title: Full Node FAQ +--- + +## How do I check the node is accessible from another machine? + +```bash +nc -vz {EXTERNAL_IP} 26656 +``` + +## How do I view the node status? + +```bash +sudo systemctl status cosmovisor.service +``` + +## How do I view the node logs? + +```bash +sudo journalctl -u cosmovisor.service -f +``` + +## How do I stop my node? + +```bash +sudo systemctl stop cosmovisor.service +``` + +## How do I start my node? + +```bash +sudo systemctl start cosmovisor.service +``` + +## How do I restart my node? + +```bash +sudo systemctl restart cosmovisor.service +``` + +## How do I query the latest block (i.e. check the node height)? + +Using poktrolld: + +```bash +poktrolld query block --type=height --node http://localhost:26657 +``` + +Or, using curl: + +```bash +curl -X GET http://localhost:26657/block | jq +``` + +## How do I access my CometBFT endpoint externally? + +The default CometBFT port is at `26657`. + +To make it accessible externally, you'll need to port all the instructions from +port `26656` on this page to port `26657`. Specifically: + +```bash +# Update your firewall +sudo ufw allow 26657/tcp + +# Alternatively, if ufw is not available, update your iptables +sudo iptables -A INPUT -p tcp --dport 26657 -j ACCEPT + +# Update your Cosmovisor config +sed -i 's|laddr = "tcp://127.0.0.1:26657"|laddr = "tcp://0.0.0.0:26657"|' $HOME/.poktroll/config/config.toml +sed -i 's|cors_allowed_origins = \[\]|cors_allowed_origins = ["*"]|' $HOME/.poktroll/config/config.toml + +# Restart the service +sudo systemctl restart cosmovisor.service + +# Test the connection +nc -vz {EXTERNAL_IP} 26657 +``` + +Learn more [here](https://docs.cometbft.com/main/rpc/). + +:::warning + +Be careful about making this public as adversarial actors may try to DDoS your node. + +::: + +## How do I check the node version? + +```bash +poktrolld version +``` + +## How do I check the Cosmosvisor directory structure? + +```bash +ls -la /home/poktroll/.poktroll/cosmovisor/ +``` + +## How do I check if an upgrade is available? + +```bash +ls -la /home/poktroll/.poktroll/cosmovisor/upgrades/ +``` + +## How do I view node configuration? + +```bash +cat /home/poktroll/.poktroll/config/config.toml +``` diff --git a/docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md b/docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md index f5985ee88..9511c8cbf 100644 --- a/docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md +++ b/docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md @@ -1,63 +1,50 @@ --- title: Full Node Walkthrough -sidebar_position: 2 +sidebar_position: 1 --- -## Run a Full Node Using Systemd & Cosmovisor +**πŸ§‘β€πŸ”¬ detailed step-by-step instructions to get you up and running with a `Full Node` on Pocket Network βœ…** -This walkthrough provides a detailed step-by-step instructions to install and -configure a Pocket Network Full Node from scratch. +:::warning This is an in-depth walkthrough -:::tip - -If you're comfortable using an automated scripts, or simply want to _copy-pasta_ a -few commands to get started, check out the [Full Node Cheat Sheet](../cheat_sheet/full_node_cheatsheet.md). +See the [Full Node Cheat Sheet](../cheat_sheets/full_node_cheatsheet.md) if you want to just copy-pasta a few commands. ::: -- [Introduction](#introduction) -- [Pre-Requisites](#pre-requisites) -- [1. Install Dependencies](#1-install-dependencies) -- [2. Create a New User](#2-create-a-new-user) -- [3. Set Up Environment Variables for Cosmovisor](#3-set-up-environment-variables-for-cosmovisor) +--- + +## Table of Contents + +- [Introduction - why run a Full Node?](#introduction---why-run-a-full-node) +- [Pre-Requisites \& Requirements](#pre-requisites--requirements) +- [Instructions](#instructions) + - [1. Install Dependencies](#1-install-dependencies) + - [2. Create a New User](#2-create-a-new-user) + - [3. Set Up Environment Variables for Cosmovisor](#3-set-up-environment-variables-for-cosmovisor) - [4. Install Cosmovisor](#4-install-cosmovisor) - [5. Install `poktrolld`](#5-install-poktrolld) - [6. Retrieve the latest genesis file](#6-retrieve-the-latest-genesis-file) - [7. Network Configuration](#7-network-configuration) - [8. Set Up `systemd` Service](#8-set-up-systemd-service) - [9. Configure your Firewall](#9-configure-your-firewall) -- [FAQ \& Troubleshooting](#faq--troubleshooting) - - [How do I check the node is accessible from another machine?](#how-do-i-check-the-node-is-accessible-from-another-machine) - - [How do I view the node status?](#how-do-i-view-the-node-status) - - [How do I view the node logs?](#how-do-i-view-the-node-logs) - - [How do I stop my node?](#how-do-i-stop-my-node) - - [How do I start my node?](#how-do-i-start-my-node) - - [How do I restart my node?](#how-do-i-restart-my-node) - - [How do I query the latest block (i.e. check the node height)?](#how-do-i-query-the-latest-block-ie-check-the-node-height) - - [How do I access my CometBFT endpoint externally?](#how-do-i-access-my-cometbft-endpoint-externally) - - [How do I check the node version?](#how-do-i-check-the-node-version) - - [How do I check the Cosmosvisor directory structure?](#how-do-i-check-the-cosmosvisor-directory-structure) - - [How do I check if an upgrade is available?](#how-do-i-check-if-an-upgrade-is-available) - - [How do I view node configuration?](#how-do-i-view-node-configuration) - -### Introduction - -This guide will help you install a Full Node for Pocket Network, from scratch, manually, -**giving you control over each step of the process**. -Running a Full Node is the first step toward becoming a Validator, Supplier, or Gateway. +## Introduction - why run a Full Node? -These instructions are **intended to be run on a Linux machine**. +This guide will guide through, step-by-step, through running a Full Node for Pocket Network. + +Running a Full Node is the first step toward becoming a Validator, Supplier, or Gateway. The instructions outlined here use [Cosmovisor](https://docs.cosmos.network/v0.45/run-node/cosmovisor.html) to enable automatic binary upgrades. -### Pre-Requisites +## Pre-Requisites & Requirements 1. **Linux-based System**: Preferably Debian-based distributions. 2. **Root or Sudo Access**: Administrative privileges are required. 3. **Dedicated Server or Virtual Machine**: Any provider is acceptable. +## Instructions + ### 1. Install Dependencies Update your package list and install necessary dependencies: @@ -89,7 +76,7 @@ sudo su - poktroll ### 3. Set Up Environment Variables for Cosmovisor -Create a `.poktrollrc` file and set environment variables: +Create a `.poktrollrc` file and set the following environment variables: ```bash touch ~/.poktrollrc @@ -104,17 +91,16 @@ echo "source ~/.poktrollrc" >> ~/.profile source ~/.profile ``` -### 4. Install Cosmovisor +## 4. Install Cosmovisor -:::info -Instead of following the instructions below, you can follow the [official cosmovisor installation instructions](https://docs.cosmos.network/main/build/tooling/cosmovisor#installation). -::: +**Option 1**: You can follow the official Cosmovisor installation instructions [here](https://docs.cosmos.network/main/build/tooling/cosmovisor#installation). -Download and install Cosmovisor: +**Option 2**: You can simply copy-paste the following commands to download and install Cosmovisor: ```bash mkdir -p $HOME/.local/bin COSMOVISOR_VERSION="v1.6.0" + ARCH=$(uname -m) if [ "$ARCH" = "x86_64" ]; then ARCH="amd64" @@ -128,7 +114,7 @@ echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.profile source ~/.profile ``` -### 5. Install `poktrolld` +## 5. Install `poktrolld` Follow the instructions in the [CLI Installation Guide](../../tools/user_guide/poktrolld_cli.md) page to install `poktrolld`. @@ -139,7 +125,7 @@ mkdir -p $HOME/.poktroll/cosmovisor/genesis/bin ln -sf $(which poktrolld) $HOME/.poktroll/cosmovisor/genesis/bin/poktrolld ``` -### 6. Retrieve the latest genesis file +## 6. Retrieve the latest genesis file Follow the instructions below to download the latest genesis file. @@ -155,12 +141,15 @@ GENESIS_URL="https://raw.githubusercontent.com/pokt-network/pocket-network-genes curl -s -o $HOME/.poktroll/config/genesis.json "$GENESIS_URL" ``` -### 7. Network Configuration +## 7. Network Configuration :::note You may see a message saying `genesis.json file already exists`. -This is expected since we downloaded the genesis file in Step 5. The initialization will still complete successfully and set up the required configuration files. +This is expected since we downloaded the genesis file in one of the steps above. + +The initialization will still complete successfully and set up the required configuration files. + ::: Run the following commands to configure your network environment appropriately: @@ -182,7 +171,7 @@ EXTERNAL_IP=$(curl -s https://api.ipify.org) sed -i -e "s|^external_address *=.*|external_address = \"${EXTERNAL_IP}:26656\"|" $HOME/.poktroll/config/config.toml ``` -### 8. Set Up `systemd` Service +## 8. Set Up `systemd` Service Create a `systemd` service file to manage the node: @@ -218,7 +207,7 @@ sudo systemctl enable cosmovisor.service sudo systemctl start cosmovisor.service ``` -### 9. Configure your Firewall +## 9. Configure your Firewall To ensure your node can properly participate in the P2P network, you need to make port `26656` accessible from the internet. @@ -243,112 +232,3 @@ This may involve one or more of the following: ```bash nc -vz {EXTERNAL_IP} 26656 ``` - -### FAQ & Troubleshooting - -#### How do I check the node is accessible from another machine? - -```bash -nc -vz {EXTERNAL_IP} 26656 -``` - -#### How do I view the node status? - -```bash -sudo systemctl status cosmovisor.service -``` - -#### How do I view the node logs? - -```bash -sudo journalctl -u cosmovisor.service -f -``` - -#### How do I stop my node? - -```bash -sudo systemctl stop cosmovisor.service -``` - -#### How do I start my node? - -```bash -sudo systemctl start cosmovisor.service -``` - -#### How do I restart my node? - -```bash -sudo systemctl restart cosmovisor.service -``` - -#### How do I query the latest block (i.e. check the node height)? - -Using poktrolld: - -```bash -poktrolld query block --type=height --node http://localhost:26657 -``` - -Or, using curl: - -```bash -curl -X GET http://localhost:26657/block | jq -``` - -#### How do I access my CometBFT endpoint externally? - -The default CometBFT port is at `26657`. - -To make it accessible externally, you'll need to port all the instructions from -port `26656` on this page to port `26657`. Specifically: - -```bash -# Update your firewall -sudo ufw allow 26657/tcp - -# Alternatively, if ufw is not available, update your iptables -sudo iptables -A INPUT -p tcp --dport 26657 -j ACCEPT - -# Update your Cosmovisor config -sed -i 's|laddr = "tcp://127.0.0.1:26657"|laddr = "tcp://0.0.0.0:26657"|' $HOME/.poktroll/config/config.toml -sed -i 's|cors_allowed_origins = \[\]|cors_allowed_origins = ["*"]|' $HOME/.poktroll/config/config.toml - -# Restart the service -sudo systemctl restart cosmovisor.service - -# Test the connection -nc -vz {EXTERNAL_IP} 26657 -``` - -Learn more [here](https://docs.cometbft.com/main/rpc/). - -:::warning - -Be careful about making this public as adversarial actors may try to DDoS your node. - -::: - -#### How do I check the node version? - -```bash -poktrolld version -``` - -#### How do I check the Cosmosvisor directory structure? - -```bash -ls -la /home/poktroll/.poktroll/cosmovisor/ -``` - -#### How do I check if an upgrade is available? - -```bash -ls -la /home/poktroll/.poktroll/cosmovisor/upgrades/ -``` - -#### How do I view node configuration? - -```bash -cat /home/poktroll/.poktroll/config/config.toml -``` diff --git a/tools/installer/full-node.sh b/tools/installer/full-node.sh index 3b911b203..0da23964d 100644 --- a/tools/installer/full-node.sh +++ b/tools/installer/full-node.sh @@ -26,12 +26,52 @@ check_root() { fi } +# Function to get and normalize architecture +get_normalized_arch() { + local arch + arch=$(uname -m) + + if [ "$arch" = "x86_64" ]; then + echo "amd64" + elif [ "$arch" = "aarch64" ] || [ "$arch" = "arm64" ]; then + echo "arm64" + else + print_color $RED "Unsupported architecture: $arch" + exit 1 + fi +} + +check_os() { + local os + os=$(uname -s) + + if [ "$os" = "Darwin" ]; then + print_color $RED "This script is not supported on macOS/Darwin." + print_color $RED "Please use a Linux distribution." + exit 1 + fi +} + +get_os_type() { + uname_out="$(uname -s)" + + if [ "$uname_out" = "Linux" ]; then + echo "linux" + elif [ "$uname_out" = "Darwin" ]; then + echo "darwin" + else + echo "unsupported" + fi +} + # Function to check and install dependencies install_dependencies() { local missing_deps=0 local deps=("jq" "curl" "tar" "wget") local to_install=() + print_color $YELLOW "About to start installing dependencies..." + # Check which dependencies are missing for dep in "${deps[@]}"; do if ! command -v "$dep" &>/dev/null; then @@ -79,13 +119,14 @@ install_dependencies() { return 1 fi - print_color $GREEN "All dependencies installed successfully." + print_color $YELLOW "All dependencies installed successfully." return 0 } # Function to get user input get_user_input() { # Ask user which network to install + echo "" echo "Which network would you like to install?" echo "1) testnet-alpha (unstable)" echo "2) testnet-beta (recommended)" @@ -103,7 +144,9 @@ get_user_input() { esac print_color $GREEN "Installing the $NETWORK network." + echo "" + print_color $YELLOW "(NOTE: If you're on a macOS, enter the name of an existing user)" read -p "Enter the desired username to run poktrolld (default: poktroll): " POKTROLL_USER POKTROLL_USER=${POKTROLL_USER:-poktroll} @@ -129,6 +172,7 @@ get_user_input() { print_color $RED "Failed to extract chain_id from genesis file." exit 1 fi + echo "" print_color $GREEN "Using chain_id: $CHAIN_ID from genesis file" # Fetch seeds from the provided URL @@ -145,6 +189,7 @@ get_user_input() { read -p "Enter custom seeds: " custom_seeds SEEDS=${custom_seeds:-$SEEDS} fi + echo "" } # Function to create user @@ -180,23 +225,25 @@ setup_env_vars() { source \$HOME/.profile EOF print_color $GREEN "Environment variables set up successfully." + echo "" } # Function to download and set up Cosmovisor setup_cosmovisor() { print_color $YELLOW "Setting up Cosmovisor..." - ARCH=$(uname -m) - if [ "$ARCH" = "x86_64" ]; then - ARCH="amd64" - elif [ "$ARCH" = "aarch64" ]; then - ARCH="arm64" - else - print_color $RED "Unsupported architecture: $ARCH" + + ARCH=$(get_normalized_arch) + OS_TYPE=$(get_os_type) + + if [ "$OS_TYPE" = "unsupported" ]; then + echo "Unsupported OS: $(uname -s)" exit 1 fi COSMOVISOR_VERSION="v1.6.0" + # COSMOVISOR_URL="https://github.com/cosmos/cosmos-sdk/releases/download/cosmovisor%2F${COSMOVISOR_VERSION}/cosmovisor-${COSMOVISOR_VERSION}-${OS_TYPE}-${ARCH}.tar.gz" COSMOVISOR_URL="https://github.com/cosmos/cosmos-sdk/releases/download/cosmovisor%2F${COSMOVISOR_VERSION}/cosmovisor-${COSMOVISOR_VERSION}-linux-${ARCH}.tar.gz" + print_color $YELLOW "Attempting to download from: $COSMOVISOR_URL" sudo -u "$POKTROLL_USER" bash < Date: Wed, 5 Feb 2025 22:18:03 -0800 Subject: [PATCH 08/11] Moved everything else aroudn in prep for future cleanup --- .../develop/developer_guide/_category_.json | 2 +- .../pocketdex_indexer.md} | 2 +- .../develop/developer_guide/walkthrough.md | 6 +-- .../docs/develop/e2e_testing/_category_.json | 8 +++ .../{testing => e2e_testing}/load_testing.md | 4 +- .../load_testing_devnet.md | 6 +-- .../load_testing_plan_1.md | 0 .../load_testing_testnet.md | 0 .../docs/develop/localnet/_category_.json | 8 --- .../_category_.json | 2 +- .../access_dashboard_on_service.png | Bin .../{infrastructure => networks}/devnet.md | 0 .../gcp_workloads.png | Bin .../grafana_explore_logs.png | Bin .../grafana_save_dashboard.png | Bin .../{infrastructure => networks}/localnet.md | 0 .../private_testnet.md | 0 .../repositories.md | 0 .../{infrastructure => networks}/testnet.md | 0 .../docs/develop/packages/_category_.json | 2 +- .../docs/develop/testing/_category_.json | 6 +-- .../testing/app_integration.md | 0 .../{developer_guide => }/testing/e2e.md | 0 .../testing/in_memory_integration.md | 0 .../testing/integration_suites.md | 0 .../testing/module_integration.md | 0 .../testing/testing_levels.md | 0 .../docker_compose_debian_cheatsheet.md | 2 +- .../docker_compose_walkthrough.md | 2 +- .../cheat_sheets/gateway_cheatsheet.md | 2 +- .../cheat_sheets/supplier_cheatsheet.md | 2 +- .../upgrades/_category_.json | 4 +- .../upgrades}/chain_halt_troubleshooting.md | 6 +-- .../upgrades/contigency_plans.md | 2 +- .../upgrades/module_params.md | 0 .../upgrades/protocol_upgrades.md | 4 +- .../upgrades}/recovery_from_chain_halt.md | 10 ++-- .../upgrades/release_process.md | 0 .../upgrades/upgrade_list.md | 0 .../upgrades/upgrade_procedure.md | 0 .../walkthroughs/full_node_walkthrough.md | 24 ++++----- .../docs/protocol/actors/_category_.json | 2 +- docusaurus/docs/protocol/governance/params.md | 51 +++++++++--------- .../docs/tools/endpoints/_category_.json | 8 +++ .../{rpc.md => endpoints/shannon_rpc.md} | 7 ++- docusaurus/docs/tools/genesis.md | 8 --- docusaurus/docs/tools/tools.md | 33 ------------ docusaurus/docs/tools/tools/_category_.json | 8 +++ docusaurus/docs/tools/tools/shannon_alpha.md | 9 ++++ docusaurus/docs/tools/tools/shannon_beta.md | 9 ++++ docusaurus/docs/tools/tools/source_code.md | 7 +++ .../docs/tools/user_guide/_category_.json | 6 +-- .../docs/tools/user_guide/app-transfer.md | 4 +- .../docs/tools/user_guide/check-balance.md | 2 +- .../tools/user_guide/create-new-wallet.md | 2 +- .../docs/tools/user_guide/poktrolld_cli.md | 4 +- .../tools/user_guide/recover-with-mnemonic.md | 2 +- .../docs/tools/user_guide/send-tokens.md | 2 +- .../scripts/docusaurus/params_doc_template.md | 12 ++--- 59 files changed, 141 insertions(+), 139 deletions(-) rename docusaurus/docs/develop/{localnet/observability.md => developer_guide/pocketdex_indexer.md} (99%) create mode 100644 docusaurus/docs/develop/e2e_testing/_category_.json rename docusaurus/docs/develop/{testing => e2e_testing}/load_testing.md (97%) rename docusaurus/docs/develop/{testing => e2e_testing}/load_testing_devnet.md (93%) rename docusaurus/docs/develop/{testing => e2e_testing}/load_testing_plan_1.md (100%) rename docusaurus/docs/develop/{testing => e2e_testing}/load_testing_testnet.md (100%) delete mode 100644 docusaurus/docs/develop/localnet/_category_.json rename docusaurus/docs/develop/{infrastructure => networks}/_category_.json (92%) rename docusaurus/docs/develop/{infrastructure => networks}/access_dashboard_on_service.png (100%) rename docusaurus/docs/develop/{infrastructure => networks}/devnet.md (100%) rename docusaurus/docs/develop/{infrastructure => networks}/gcp_workloads.png (100%) rename docusaurus/docs/develop/{infrastructure => networks}/grafana_explore_logs.png (100%) rename docusaurus/docs/develop/{infrastructure => networks}/grafana_save_dashboard.png (100%) rename docusaurus/docs/develop/{infrastructure => networks}/localnet.md (100%) rename docusaurus/docs/develop/{infrastructure => networks}/private_testnet.md (100%) rename docusaurus/docs/develop/{infrastructure => networks}/repositories.md (100%) rename docusaurus/docs/develop/{infrastructure => networks}/testnet.md (100%) rename docusaurus/docs/develop/{developer_guide => }/testing/app_integration.md (100%) rename docusaurus/docs/develop/{developer_guide => }/testing/e2e.md (100%) rename docusaurus/docs/develop/{developer_guide => }/testing/in_memory_integration.md (100%) rename docusaurus/docs/develop/{developer_guide => }/testing/integration_suites.md (100%) rename docusaurus/docs/develop/{developer_guide => }/testing/module_integration.md (100%) rename docusaurus/docs/develop/{developer_guide => }/testing/testing_levels.md (100%) rename docusaurus/docs/{protocol => operate}/upgrades/_category_.json (72%) rename docusaurus/docs/{develop/developer_guide => operate/upgrades}/chain_halt_troubleshooting.md (96%) rename docusaurus/docs/{protocol => operate}/upgrades/contigency_plans.md (96%) rename docusaurus/docs/{protocol => operate}/upgrades/module_params.md (100%) rename docusaurus/docs/{protocol => operate}/upgrades/protocol_upgrades.md (96%) rename docusaurus/docs/{develop/developer_guide => operate/upgrades}/recovery_from_chain_halt.md (93%) rename docusaurus/docs/{protocol => operate}/upgrades/release_process.md (100%) rename docusaurus/docs/{protocol => operate}/upgrades/upgrade_list.md (100%) rename docusaurus/docs/{protocol => operate}/upgrades/upgrade_procedure.md (100%) create mode 100644 docusaurus/docs/tools/endpoints/_category_.json rename docusaurus/docs/tools/{rpc.md => endpoints/shannon_rpc.md} (89%) delete mode 100644 docusaurus/docs/tools/genesis.md delete mode 100644 docusaurus/docs/tools/tools.md create mode 100644 docusaurus/docs/tools/tools/_category_.json create mode 100644 docusaurus/docs/tools/tools/shannon_alpha.md create mode 100644 docusaurus/docs/tools/tools/shannon_beta.md create mode 100644 docusaurus/docs/tools/tools/source_code.md diff --git a/docusaurus/docs/develop/developer_guide/_category_.json b/docusaurus/docs/develop/developer_guide/_category_.json index ecb8c52b7..315f7c6ec 100644 --- a/docusaurus/docs/develop/developer_guide/_category_.json +++ b/docusaurus/docs/develop/developer_guide/_category_.json @@ -1,6 +1,6 @@ { "label": "Developer Guide", - "position": 2, + "position": 1, "link": { "type": "generated-index", "description": "Documentation related to onboarding as a developer to the Pocket Network protocol." diff --git a/docusaurus/docs/develop/localnet/observability.md b/docusaurus/docs/develop/developer_guide/pocketdex_indexer.md similarity index 99% rename from docusaurus/docs/develop/localnet/observability.md rename to docusaurus/docs/develop/developer_guide/pocketdex_indexer.md index 0879b009b..795ff7267 100644 --- a/docusaurus/docs/develop/localnet/observability.md +++ b/docusaurus/docs/develop/developer_guide/pocketdex_indexer.md @@ -1,5 +1,5 @@ --- -sidebar_position: 1 +sidebar_position: 7 title: Pocketdex Indexer --- diff --git a/docusaurus/docs/develop/developer_guide/walkthrough.md b/docusaurus/docs/develop/developer_guide/walkthrough.md index 34f292d5a..daa43c16f 100644 --- a/docusaurus/docs/develop/developer_guide/walkthrough.md +++ b/docusaurus/docs/develop/developer_guide/walkthrough.md @@ -95,7 +95,7 @@ Install the following dependencies: 6. [Tilt](https://docs.tilt.dev/install.html) - k8s local development tool & environment manager :::note -If you've followed the [LocalNet instructions](../infrastructure/localnet.md), +If you've followed the [LocalNet instructions](../networks/localnet.md), you may already have them installed. ::: @@ -106,7 +106,7 @@ and inspect it so you have an idea of what's going on! We'll be manually configuring a few actors to run in your shell for the sake of the tutorial so you have visibility into the types of onchain and offchain -actors. In practice, you should be using [localnet](../infrastructure/localnet.md) +actors. In practice, you should be using [localnet](../networks/localnet.md) to dynamically scale your actors. To learn more about the different actors type, see the docs [here](../../protocol/actors/actors.md). @@ -653,7 +653,7 @@ We went through a flow of steps above just so you can get a feel for how things That said, you can dynamically scale the number of any actors in LocalNet by ony changing one line! -Go to our [localnet tutorial](../infrastructure/localnet.md) to learn more. +Go to our [localnet tutorial](../networks/localnet.md) to learn more. ## 7. Explore the tools diff --git a/docusaurus/docs/develop/e2e_testing/_category_.json b/docusaurus/docs/develop/e2e_testing/_category_.json new file mode 100644 index 000000000..eca33fb96 --- /dev/null +++ b/docusaurus/docs/develop/e2e_testing/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "E2E Testing", + "position": 4, + "link": { + "type": "generated-index", + "description": "Documentation related to the type of end-to-end testing (load or other) we are doing." + } +} diff --git a/docusaurus/docs/develop/testing/load_testing.md b/docusaurus/docs/develop/e2e_testing/load_testing.md similarity index 97% rename from docusaurus/docs/develop/testing/load_testing.md rename to docusaurus/docs/develop/e2e_testing/load_testing.md index 4063e0314..3b4875fee 100644 --- a/docusaurus/docs/develop/testing/load_testing.md +++ b/docusaurus/docs/develop/e2e_testing/load_testing.md @@ -27,7 +27,7 @@ The load-testing suite is built on [Gherkin](https://cucumber.io/docs/gherkin/), ## Dependencies -- [LocalNet](../infrastructure/localnet.md) (for local suite execution) +- [LocalNet](../networks/localnet.md) (for local suite execution) - [Golang](https://go.dev/dl/) ## Load Test Manifests @@ -63,7 +63,7 @@ This natural language syntax is parsed and used to match and execute the corresp To execute tests on LocalNet: -1. Ensure [LocalNet](../infrastructure/localnet.md) is operational. +1. Ensure [LocalNet](../networks/localnet.md) is operational. 2. In the `localnet_config.yaml` file, set `gateways.count` and `relayminers.count` to `3`. 3. Run `make acc_initialize_pubkeys` to initialize blockchain state public keys. 4. Run `make test_load_relays_stress_localnet` to run the LocalNet stress-test. diff --git a/docusaurus/docs/develop/testing/load_testing_devnet.md b/docusaurus/docs/develop/e2e_testing/load_testing_devnet.md similarity index 93% rename from docusaurus/docs/develop/testing/load_testing_devnet.md rename to docusaurus/docs/develop/e2e_testing/load_testing_devnet.md index dedae1936..105dfa60f 100644 --- a/docusaurus/docs/develop/testing/load_testing_devnet.md +++ b/docusaurus/docs/develop/e2e_testing/load_testing_devnet.md @@ -27,12 +27,12 @@ single instance of each offchain actor. We can create custom DevNets with multip ### 1. Create and configure the DevNet -Please refer to the DevNet creation guide [here](../infrastructure/devnet.md#how-to-create). +Please refer to the DevNet creation guide [here](../networks/devnet.md#how-to-create). ### 2. Stake the necessary actors - Depending on your load testing requirements, you may need to stake one or more `gateways` and `suppliers`. -- [DevNet documentation](../infrastructure/devnet.md#stake-actors) provides more details about staking actors in DevNets. +- [DevNet documentation](../networks/devnet.md#stake-actors) provides more details about staking actors in DevNets. ### 3. Configure the load test manifest @@ -96,7 +96,7 @@ gateways: exposed_url: https://devnet-sophon-gateway-1.poktroll.com - address: pokt15w3fhfyc0lttv7r585e2ncpf6t2kl9uh8rsnyz exposed_url: https://devnet-sophon-gateway-2.poktroll.com - - address: pokt1zhmkkd0rh788mc9prfq0m2h88t9ge0j83gnxya + - address: pokt1zhmkkd0rh788mc9prfq0m2h88t9ge0j83gnxya exposed_url: https://devnet-sophon-gateway-3.poktroll.com ``` diff --git a/docusaurus/docs/develop/testing/load_testing_plan_1.md b/docusaurus/docs/develop/e2e_testing/load_testing_plan_1.md similarity index 100% rename from docusaurus/docs/develop/testing/load_testing_plan_1.md rename to docusaurus/docs/develop/e2e_testing/load_testing_plan_1.md diff --git a/docusaurus/docs/develop/testing/load_testing_testnet.md b/docusaurus/docs/develop/e2e_testing/load_testing_testnet.md similarity index 100% rename from docusaurus/docs/develop/testing/load_testing_testnet.md rename to docusaurus/docs/develop/e2e_testing/load_testing_testnet.md diff --git a/docusaurus/docs/develop/localnet/_category_.json b/docusaurus/docs/develop/localnet/_category_.json deleted file mode 100644 index eeb79d4a7..000000000 --- a/docusaurus/docs/develop/localnet/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "LocalNet", - "position": 9, - "link": { - "type": "generated-index", - "description": "Tips on how to leverage the most out of your LocalNet Environment." - } -} diff --git a/docusaurus/docs/develop/infrastructure/_category_.json b/docusaurus/docs/develop/networks/_category_.json similarity index 92% rename from docusaurus/docs/develop/infrastructure/_category_.json rename to docusaurus/docs/develop/networks/_category_.json index 962324af5..bede72b59 100644 --- a/docusaurus/docs/develop/infrastructure/_category_.json +++ b/docusaurus/docs/develop/networks/_category_.json @@ -1,6 +1,6 @@ { "label": "Networks", - "position": 5, + "position": 3, "link": { "type": "generated-index", "description": "Infrastructure related to deploying, maintaining and testing various (Local, Dev, Test) environments." diff --git a/docusaurus/docs/develop/infrastructure/access_dashboard_on_service.png b/docusaurus/docs/develop/networks/access_dashboard_on_service.png similarity index 100% rename from docusaurus/docs/develop/infrastructure/access_dashboard_on_service.png rename to docusaurus/docs/develop/networks/access_dashboard_on_service.png diff --git a/docusaurus/docs/develop/infrastructure/devnet.md b/docusaurus/docs/develop/networks/devnet.md similarity index 100% rename from docusaurus/docs/develop/infrastructure/devnet.md rename to docusaurus/docs/develop/networks/devnet.md diff --git a/docusaurus/docs/develop/infrastructure/gcp_workloads.png b/docusaurus/docs/develop/networks/gcp_workloads.png similarity index 100% rename from docusaurus/docs/develop/infrastructure/gcp_workloads.png rename to docusaurus/docs/develop/networks/gcp_workloads.png diff --git a/docusaurus/docs/develop/infrastructure/grafana_explore_logs.png b/docusaurus/docs/develop/networks/grafana_explore_logs.png similarity index 100% rename from docusaurus/docs/develop/infrastructure/grafana_explore_logs.png rename to docusaurus/docs/develop/networks/grafana_explore_logs.png diff --git a/docusaurus/docs/develop/infrastructure/grafana_save_dashboard.png b/docusaurus/docs/develop/networks/grafana_save_dashboard.png similarity index 100% rename from docusaurus/docs/develop/infrastructure/grafana_save_dashboard.png rename to docusaurus/docs/develop/networks/grafana_save_dashboard.png diff --git a/docusaurus/docs/develop/infrastructure/localnet.md b/docusaurus/docs/develop/networks/localnet.md similarity index 100% rename from docusaurus/docs/develop/infrastructure/localnet.md rename to docusaurus/docs/develop/networks/localnet.md diff --git a/docusaurus/docs/develop/infrastructure/private_testnet.md b/docusaurus/docs/develop/networks/private_testnet.md similarity index 100% rename from docusaurus/docs/develop/infrastructure/private_testnet.md rename to docusaurus/docs/develop/networks/private_testnet.md diff --git a/docusaurus/docs/develop/infrastructure/repositories.md b/docusaurus/docs/develop/networks/repositories.md similarity index 100% rename from docusaurus/docs/develop/infrastructure/repositories.md rename to docusaurus/docs/develop/networks/repositories.md diff --git a/docusaurus/docs/develop/infrastructure/testnet.md b/docusaurus/docs/develop/networks/testnet.md similarity index 100% rename from docusaurus/docs/develop/infrastructure/testnet.md rename to docusaurus/docs/develop/networks/testnet.md diff --git a/docusaurus/docs/develop/packages/_category_.json b/docusaurus/docs/develop/packages/_category_.json index 4f8136c12..48734213d 100644 --- a/docusaurus/docs/develop/packages/_category_.json +++ b/docusaurus/docs/develop/packages/_category_.json @@ -1,6 +1,6 @@ { "label": "Packages", - "position": 5, + "position": 2, "link": { "type": "generated-index", "description": "Documentation related to the source code and packages in poktroll." diff --git a/docusaurus/docs/develop/testing/_category_.json b/docusaurus/docs/develop/testing/_category_.json index 1805c4aeb..d79c85960 100644 --- a/docusaurus/docs/develop/testing/_category_.json +++ b/docusaurus/docs/develop/testing/_category_.json @@ -1,8 +1,8 @@ { - "label": "Testing (Internal)", - "position": 6, + "label": "Testing", + "position": 5, "link": { "type": "generated-index", - "description": "Documentation related to the type of end-to-end testing (load or other) we are doing." + "description": "Documentation related to unit testing." } } diff --git a/docusaurus/docs/develop/developer_guide/testing/app_integration.md b/docusaurus/docs/develop/testing/app_integration.md similarity index 100% rename from docusaurus/docs/develop/developer_guide/testing/app_integration.md rename to docusaurus/docs/develop/testing/app_integration.md diff --git a/docusaurus/docs/develop/developer_guide/testing/e2e.md b/docusaurus/docs/develop/testing/e2e.md similarity index 100% rename from docusaurus/docs/develop/developer_guide/testing/e2e.md rename to docusaurus/docs/develop/testing/e2e.md diff --git a/docusaurus/docs/develop/developer_guide/testing/in_memory_integration.md b/docusaurus/docs/develop/testing/in_memory_integration.md similarity index 100% rename from docusaurus/docs/develop/developer_guide/testing/in_memory_integration.md rename to docusaurus/docs/develop/testing/in_memory_integration.md diff --git a/docusaurus/docs/develop/developer_guide/testing/integration_suites.md b/docusaurus/docs/develop/testing/integration_suites.md similarity index 100% rename from docusaurus/docs/develop/developer_guide/testing/integration_suites.md rename to docusaurus/docs/develop/testing/integration_suites.md diff --git a/docusaurus/docs/develop/developer_guide/testing/module_integration.md b/docusaurus/docs/develop/testing/module_integration.md similarity index 100% rename from docusaurus/docs/develop/developer_guide/testing/module_integration.md rename to docusaurus/docs/develop/testing/module_integration.md diff --git a/docusaurus/docs/develop/developer_guide/testing/testing_levels.md b/docusaurus/docs/develop/testing/testing_levels.md similarity index 100% rename from docusaurus/docs/develop/developer_guide/testing/testing_levels.md rename to docusaurus/docs/develop/testing/testing_levels.md diff --git a/docusaurus/docs/operate/cheat_sheets/docker_compose_debian_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/docker_compose_debian_cheatsheet.md index 138a67c59..8d88228d0 100644 --- a/docusaurus/docs/operate/cheat_sheets/docker_compose_debian_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/docker_compose_debian_cheatsheet.md @@ -133,7 +133,7 @@ source ~/.bashrc :::warning The Alpha TestNet currently requires manual steps to sync the node to the latest block. Please find the affected block(s) -in [this document](../../protocol/upgrades/upgrade_list.md), which leads to the manual upgrade instructions. +in [this document](../upgrades/upgrade_list.md), which leads to the manual upgrade instructions. ::: ```bash diff --git a/docusaurus/docs/operate/cheat_sheets/docker_compose_walkthrough.md b/docusaurus/docs/operate/cheat_sheets/docker_compose_walkthrough.md index 85288a862..ab3c1cb42 100644 --- a/docusaurus/docs/operate/cheat_sheets/docker_compose_walkthrough.md +++ b/docusaurus/docs/operate/cheat_sheets/docker_compose_walkthrough.md @@ -216,7 +216,7 @@ poktroll ALL=(ALL) NOPASSWD:ALL :::warning The Alpha TestNet currently requires manual steps to sync the node to the latest block. Please find the affected block(s) -in [this document](../../protocol/upgrades/upgrade_list.md), which leads to the manual upgrade instructions. +in [this document](../upgrades/upgrade_list.md), which leads to the manual upgrade instructions. ::: _Note: You may need to replace `docker compose` with `docker-compose` if you are diff --git a/docusaurus/docs/operate/cheat_sheets/gateway_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/gateway_cheatsheet.md index cca899b14..e77d7f90f 100644 --- a/docusaurus/docs/operate/cheat_sheets/gateway_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/gateway_cheatsheet.md @@ -112,7 +112,7 @@ poktrolld query bank balances $APP_ADDR $NODE_FLAGS :::tip -You can find all the explorers, faucets and tools at the [tools page](../../tools/tools.md). +You can find all the explorers, faucets and tools at the [tools page](../../tools/tools/source_code.md). ::: diff --git a/docusaurus/docs/operate/cheat_sheets/supplier_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/supplier_cheatsheet.md index 05a85efed..4cfa49fb3 100644 --- a/docusaurus/docs/operate/cheat_sheets/supplier_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/supplier_cheatsheet.md @@ -117,7 +117,7 @@ poktrolld query bank balances $SUPPLIER_ADDR $NODE_FLAGS :::tip -You can find all the explorers, faucets and tools at the [tools page](../../tools/tools.md). +You can find all the explorers, faucets and tools at the [tools page](../../tools/tools/source_code.md). ::: diff --git a/docusaurus/docs/protocol/upgrades/_category_.json b/docusaurus/docs/operate/upgrades/_category_.json similarity index 72% rename from docusaurus/docs/protocol/upgrades/_category_.json rename to docusaurus/docs/operate/upgrades/_category_.json index 2e80f4c80..46cb7f8e4 100644 --- a/docusaurus/docs/protocol/upgrades/_category_.json +++ b/docusaurus/docs/operate/upgrades/_category_.json @@ -1,6 +1,6 @@ { - "label": "Upgrades", - "position": 4, + "label": "Protocol Upgrades", + "position": 5, "link": { "type": "generated-index", "description": "Documentation related to Pocket Network protocol upgrades." diff --git a/docusaurus/docs/develop/developer_guide/chain_halt_troubleshooting.md b/docusaurus/docs/operate/upgrades/chain_halt_troubleshooting.md similarity index 96% rename from docusaurus/docs/develop/developer_guide/chain_halt_troubleshooting.md rename to docusaurus/docs/operate/upgrades/chain_halt_troubleshooting.md index 5b32f5cda..7e11f41d1 100644 --- a/docusaurus/docs/develop/developer_guide/chain_halt_troubleshooting.md +++ b/docusaurus/docs/operate/upgrades/chain_halt_troubleshooting.md @@ -74,7 +74,7 @@ To interpret this data: 2. Input the hexadecimal data into CyberChef. 3. Apply the "From Hex" operation followed by "Protobuf Decode" to reveal the human-readable content. -![CyberChef Decoding Example](./img/cyberchef_1.png) +![CyberChef Decoding Example](../../develop/developer_guide/img/cyberchef_1.png) ### Step 5: Comparing Records @@ -84,7 +84,7 @@ After decoding, compare the data from both nodes: 2. Identify specific fields or values that differ between the two records. 3. Pay close attention to timestamps, numerical values, and complex data structures. -![CyberChef Diff Example](./img/cyberchef_2.png) +![CyberChef Diff Example](../../develop/developer_guide/img/cyberchef_2.png) The image above illustrates a difference in the JSON representation of an object, which is likely the root cause of the non-deterministic state breaking consensus between nodes. @@ -112,4 +112,4 @@ to sync a node from genesis by automatically using the appropriate binary for ea ## Syncing from genesis -If you're encountering any of the errors mentioned above while trying to sync the historical blocks - make sure you're running the correct version of the binary in accordance with this table [Upgrade List](../../protocol/upgrades/upgrade_list.md). +If you're encountering any of the errors mentioned above while trying to sync the historical blocks - make sure you're running the correct version of the binary in accordance with this table [Upgrade List](upgrade_list.md). diff --git a/docusaurus/docs/protocol/upgrades/contigency_plans.md b/docusaurus/docs/operate/upgrades/contigency_plans.md similarity index 96% rename from docusaurus/docs/protocol/upgrades/contigency_plans.md rename to docusaurus/docs/operate/upgrades/contigency_plans.md index 260f37823..0a262bd5c 100644 --- a/docusaurus/docs/protocol/upgrades/contigency_plans.md +++ b/docusaurus/docs/operate/upgrades/contigency_plans.md @@ -90,7 +90,7 @@ In such a case, we need: ### Option 3: The migration succeed but the network is stuck (i.e. migration had a bug) -This should be treated as a consensus or non-determinism bug that is unrelated to the upgrade. See [Recovery From Chain Halt](../../develop/developer_guide/recovery_from_chain_halt.md) for more information on how to handle such issues. +This should be treated as a consensus or non-determinism bug that is unrelated to the upgrade. See [Recovery From Chain Halt](recovery_from_chain_halt.md) for more information on how to handle such issues. ### MANDATORY Checklist of Documentation & Scripts to Update diff --git a/docusaurus/docs/protocol/upgrades/module_params.md b/docusaurus/docs/operate/upgrades/module_params.md similarity index 100% rename from docusaurus/docs/protocol/upgrades/module_params.md rename to docusaurus/docs/operate/upgrades/module_params.md diff --git a/docusaurus/docs/protocol/upgrades/protocol_upgrades.md b/docusaurus/docs/operate/upgrades/protocol_upgrades.md similarity index 96% rename from docusaurus/docs/protocol/upgrades/protocol_upgrades.md rename to docusaurus/docs/operate/upgrades/protocol_upgrades.md index b61e699c5..cda31c8e9 100644 --- a/docusaurus/docs/protocol/upgrades/protocol_upgrades.md +++ b/docusaurus/docs/operate/upgrades/protocol_upgrades.md @@ -1,9 +1,9 @@ --- -title: Protocol Upgrades +title: Introduction to Protocol Upgrades sidebar_position: 1 --- -# Protocol Upgrades +## Introduction to Protocol Upgrades Pocket Network is continuously evolving through regular protocol upgrades. We implement software upgrades via a DAO process, allowing validator nodes to incorporate consensus-breaking changes. These upgrades can be automatically applied when using [Cosmovisor](../../operate/walkthroughs/full_node_walkthrough.md), or manually if not using `cosmovisor`. diff --git a/docusaurus/docs/develop/developer_guide/recovery_from_chain_halt.md b/docusaurus/docs/operate/upgrades/recovery_from_chain_halt.md similarity index 93% rename from docusaurus/docs/develop/developer_guide/recovery_from_chain_halt.md rename to docusaurus/docs/operate/upgrades/recovery_from_chain_halt.md index d1ca5a069..e0e0b3f0a 100644 --- a/docusaurus/docs/develop/developer_guide/recovery_from_chain_halt.md +++ b/docusaurus/docs/operate/upgrades/recovery_from_chain_halt.md @@ -12,7 +12,7 @@ new release has been created and verified to function correctly. :::tip -See [Chain Halt Troubleshooting](./chain_halt_troubleshooting.md) for more information on identifying the cause of a chain halt. +See [Chain Halt Troubleshooting](chain_halt_troubleshooting.md) for more information on identifying the cause of a chain halt. ::: @@ -37,7 +37,7 @@ and use the same version of the software. If the halt is caused by the network upgrade, it is possible the solution can be as simple as skipping an upgrade (i.e. `unsafe-skip-upgrade`) and creating a new (fixed) upgrade. -Read more about [upgrade contingency plans](../../protocol/upgrades/contigency_plans.md). +Read more about [upgrade contingency plans](contigency_plans.md). ### Manual binary replacement (preferred) @@ -61,7 +61,7 @@ The steps to doing so are: 1. Prepare and verify a new binary that addresses the consensus-breaking issue. 2. Reach out to the community and validators so they can upgrade the binary manually. -3. Update [the documentation](../../protocol/upgrades/upgrade_list.md) to include a range a height when the binary needs +3. Update [the documentation](upgrade_list.md) to include a range a height when the binary needs to be replaced. :::warning @@ -115,8 +115,8 @@ propagating the existing blocks signed by the Validators, making it hard to roll However, if necessary, the instructions to follow are: 1. Prepare & verify a new binary that addresses the consensus-breaking issue. -2. [Create a release](../../protocol/upgrades/release_process.md). -3. [Prepare an upgrade transaction](../../protocol/upgrades/upgrade_procedure.md#writing-an-upgrade-transaction) to the new version. +2. [Create a release](release_process.md). +3. [Prepare an upgrade transaction](upgrade_procedure.md#writing-an-upgrade-transaction) to the new version. 4. Disconnect the `Validator set` from the rest of the network **3 blocks** prior to the height of the chain halt. For example: - Assume an issue at height `103`. - Revert the `validator set` to height `100`. diff --git a/docusaurus/docs/protocol/upgrades/release_process.md b/docusaurus/docs/operate/upgrades/release_process.md similarity index 100% rename from docusaurus/docs/protocol/upgrades/release_process.md rename to docusaurus/docs/operate/upgrades/release_process.md diff --git a/docusaurus/docs/protocol/upgrades/upgrade_list.md b/docusaurus/docs/operate/upgrades/upgrade_list.md similarity index 100% rename from docusaurus/docs/protocol/upgrades/upgrade_list.md rename to docusaurus/docs/operate/upgrades/upgrade_list.md diff --git a/docusaurus/docs/protocol/upgrades/upgrade_procedure.md b/docusaurus/docs/operate/upgrades/upgrade_procedure.md similarity index 100% rename from docusaurus/docs/protocol/upgrades/upgrade_procedure.md rename to docusaurus/docs/operate/upgrades/upgrade_procedure.md diff --git a/docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md b/docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md index 9511c8cbf..0097a5abe 100644 --- a/docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md +++ b/docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md @@ -21,12 +21,12 @@ See the [Full Node Cheat Sheet](../cheat_sheets/full_node_cheatsheet.md) if you - [1. Install Dependencies](#1-install-dependencies) - [2. Create a New User](#2-create-a-new-user) - [3. Set Up Environment Variables for Cosmovisor](#3-set-up-environment-variables-for-cosmovisor) -- [4. Install Cosmovisor](#4-install-cosmovisor) -- [5. Install `poktrolld`](#5-install-poktrolld) -- [6. Retrieve the latest genesis file](#6-retrieve-the-latest-genesis-file) -- [7. Network Configuration](#7-network-configuration) -- [8. Set Up `systemd` Service](#8-set-up-systemd-service) -- [9. Configure your Firewall](#9-configure-your-firewall) + - [4. Install Cosmovisor](#4-install-cosmovisor) + - [5. Install `poktrolld`](#5-install-poktrolld) + - [6. Retrieve the latest genesis file](#6-retrieve-the-latest-genesis-file) + - [7. Network Configuration](#7-network-configuration) + - [8. Set Up `systemd` Service](#8-set-up-systemd-service) + - [9. Configure your Firewall](#9-configure-your-firewall) ## Introduction - why run a Full Node? @@ -91,7 +91,7 @@ echo "source ~/.poktrollrc" >> ~/.profile source ~/.profile ``` -## 4. Install Cosmovisor +### 4. Install Cosmovisor **Option 1**: You can follow the official Cosmovisor installation instructions [here](https://docs.cosmos.network/main/build/tooling/cosmovisor#installation). @@ -114,7 +114,7 @@ echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.profile source ~/.profile ``` -## 5. Install `poktrolld` +### 5. Install `poktrolld` Follow the instructions in the [CLI Installation Guide](../../tools/user_guide/poktrolld_cli.md) page to install `poktrolld`. @@ -125,7 +125,7 @@ mkdir -p $HOME/.poktroll/cosmovisor/genesis/bin ln -sf $(which poktrolld) $HOME/.poktroll/cosmovisor/genesis/bin/poktrolld ``` -## 6. Retrieve the latest genesis file +### 6. Retrieve the latest genesis file Follow the instructions below to download the latest genesis file. @@ -141,7 +141,7 @@ GENESIS_URL="https://raw.githubusercontent.com/pokt-network/pocket-network-genes curl -s -o $HOME/.poktroll/config/genesis.json "$GENESIS_URL" ``` -## 7. Network Configuration +### 7. Network Configuration :::note You may see a message saying `genesis.json file already exists`. @@ -171,7 +171,7 @@ EXTERNAL_IP=$(curl -s https://api.ipify.org) sed -i -e "s|^external_address *=.*|external_address = \"${EXTERNAL_IP}:26656\"|" $HOME/.poktroll/config/config.toml ``` -## 8. Set Up `systemd` Service +### 8. Set Up `systemd` Service Create a `systemd` service file to manage the node: @@ -207,7 +207,7 @@ sudo systemctl enable cosmovisor.service sudo systemctl start cosmovisor.service ``` -## 9. Configure your Firewall +### 9. Configure your Firewall To ensure your node can properly participate in the P2P network, you need to make port `26656` accessible from the internet. diff --git a/docusaurus/docs/protocol/actors/_category_.json b/docusaurus/docs/protocol/actors/_category_.json index 72bcbd38d..68ee2cc75 100644 --- a/docusaurus/docs/protocol/actors/_category_.json +++ b/docusaurus/docs/protocol/actors/_category_.json @@ -1,5 +1,5 @@ { - "label": "Actors", + "label": "Protocol Actors", "position": 1, "link": { "type": "generated-index", diff --git a/docusaurus/docs/protocol/governance/params.md b/docusaurus/docs/protocol/governance/params.md index 1b51f5147..58512571d 100644 --- a/docusaurus/docs/protocol/governance/params.md +++ b/docusaurus/docs/protocol/governance/params.md @@ -1,9 +1,9 @@ --- -title: Pocket Network Governance Params +title: Governance Params sidebar_position: 1 --- -# Governance Parameters +## Governance Parameters :::warning DO NOT EDIT: this file was generated by make docs_update_gov_params_page @@ -25,27 +25,26 @@ Please follow the instructions in [this guide](../../develop/developer_guide/add ## Parameters - -|Module | Field Type | Field Name |Comment | -|-------|------------|------------|--------| -| `application` | `uint64` | `max_delegated_gateways` | max_delegated_gateways defines the maximum number of gateways that a single application can delegate to. This is used to prevent performance issues in case the relay ring signature becomes too large. | -| `application` | `cosmos.base.v1beta1.Coin` | `min_stake` | min_stake is the minimum stake in upokt that an application must have to remain staked. | -| `gateway` | `cosmos.base.v1beta1.Coin` | `min_stake` | min_stake is the minimum amount of uPOKT that a gateway must stake. | -| `proof` | `cosmos.base.v1beta1.Coin` | `proof_missing_penalty` | proof_missing_penalty is the number of tokens (uPOKT) which should be slashed from a supplier when a proof is required (either via proof_requirement_threshold or proof_missing_penalty) but is not provided. TODO_MAINNET: Consider renaming this to `proof_missing_penalty_upokt`. | -| `proof` | `double` | `proof_request_probability` | proof_request_probability is the probability of a session requiring a proof if it's cost (i.e. compute unit consumption) is below the ProofRequirementThreshold. | -| `proof` | `cosmos.base.v1beta1.Coin` | `proof_requirement_threshold` | proof_requirement_threshold is the session cost (i.e. compute unit consumption) threshold which asserts that a session MUST have a corresponding proof when its cost is equal to or above the threshold. This is in contrast to the this requirement being determined probabilistically via ProofRequestProbability. TODO_MAINNET: Consider renaming this to `proof_requirement_threshold_upokt`. | -| `proof` | `cosmos.base.v1beta1.Coin` | `proof_submission_fee` | proof_submission_fee is the number of tokens (uPOKT) which should be paid by the supplier operator when submitting a proof. This is needed to account for the cost of storing proofs onchain and prevent spamming (i.e. sybil bloat attacks) the network with non-required proofs. TODO_MAINNET: Consider renaming this to `proof_submission_fee_upokt`. | -| `service` | `cosmos.base.v1beta1.Coin` | `add_service_fee` | The amount of uPOKT required to add a new service. This will be deducted from the signer's account balance, and transferred to the pocket network foundation. | -| `session` | `uint64` | `num_suppliers_per_session` | num_suppliers_per_session is the maximun number of suppliers per session (applicaiton:supplier pair for a given session number). | -| `shared` | `uint64` | `application_unbonding_period_sessions` | application_unbonding_period_sessions is the number of sessions that an application must wait after unstaking before their staked assets are moved to their account balance. Onchain business logic requires, and ensures, that the corresponding block count of the application unbonding period will exceed the end of its corresponding proof window close height. | -| `shared` | `uint64` | `claim_window_close_offset_blocks` | claim_window_close_offset_blocks is the number of blocks after the claim window open height, at which the claim window closes. | -| `shared` | `uint64` | `claim_window_open_offset_blocks` | claim_window_open_offset_blocks is the number of blocks after the session grace period height, at which the claim window opens. | -| `shared` | `uint64` | `compute_units_to_tokens_multiplier` | The amount of upokt that a compute unit should translate to when settling a session. DEV_NOTE: This used to be under x/tokenomics but has been moved here to avoid cyclic dependencies. | -| `shared` | `uint64` | `grace_period_end_offset_blocks` | grace_period_end_offset_blocks is the number of blocks, after the session end height, during which the supplier can still service payable relays. Suppliers will need to recreate a claim for the previous session (if already created) to get paid for the additional relays. | -| `shared` | `uint64` | `num_blocks_per_session` | num_blocks_per_session is the number of blocks between the session start & end heights. | -| `shared` | `uint64` | `proof_window_close_offset_blocks` | proof_window_close_offset_blocks is the number of blocks after the proof window open height, at which the proof window closes. | -| `shared` | `uint64` | `proof_window_open_offset_blocks` | proof_window_open_offset_blocks is the number of blocks after the claim window close height, at which the proof window opens. | -| `shared` | `uint64` | `supplier_unbonding_period_sessions` | supplier_unbonding_period_sessions is the number of sessions that a supplier must wait after unstaking before their staked assets are moved to their account balance. Onchain business logic requires, and ensures, that the corresponding block count of the unbonding period will exceed the end of any active claim & proof lifecycles. | -| `supplier` | `cosmos.base.v1beta1.Coin` | `min_stake` | min_stake is the minimum amount of uPOKT that a supplier must stake to be included in network sessions and remain staked. | -| `tokenomics` | `string` | `dao_reward_address` | dao_reward_address is the address to which mint_allocation_dao percentage of the minted tokens are at the end of claim settlement. | -| `tokenomics` | `MintAllocationPercentages` | `mint_allocation_percentages` | mint_allocation_percentages represents the distribution of newly minted tokens, at the end of claim settlement, as a result of the Global Mint TLM. | +| Module | Field Type | Field Name | Comment | +| ------------- | --------------------------- | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `application` | `uint64` | `max_delegated_gateways` | max_delegated_gateways defines the maximum number of gateways that a single application can delegate to. This is used to prevent performance issues in case the relay ring signature becomes too large. | +| `application` | `cosmos.base.v1beta1.Coin` | `min_stake` | min_stake is the minimum stake in upokt that an application must have to remain staked. | +| `gateway` | `cosmos.base.v1beta1.Coin` | `min_stake` | min_stake is the minimum amount of uPOKT that a gateway must stake. | +| `proof` | `cosmos.base.v1beta1.Coin` | `proof_missing_penalty` | proof_missing_penalty is the number of tokens (uPOKT) which should be slashed from a supplier when a proof is required (either via proof_requirement_threshold or proof_missing_penalty) but is not provided. TODO_MAINNET: Consider renaming this to `proof_missing_penalty_upokt`. | +| `proof` | `double` | `proof_request_probability` | proof_request_probability is the probability of a session requiring a proof if it's cost (i.e. compute unit consumption) is below the ProofRequirementThreshold. | +| `proof` | `cosmos.base.v1beta1.Coin` | `proof_requirement_threshold` | proof_requirement_threshold is the session cost (i.e. compute unit consumption) threshold which asserts that a session MUST have a corresponding proof when its cost is equal to or above the threshold. This is in contrast to the this requirement being determined probabilistically via ProofRequestProbability. TODO_MAINNET: Consider renaming this to `proof_requirement_threshold_upokt`. | +| `proof` | `cosmos.base.v1beta1.Coin` | `proof_submission_fee` | proof_submission_fee is the number of tokens (uPOKT) which should be paid by the supplier operator when submitting a proof. This is needed to account for the cost of storing proofs onchain and prevent spamming (i.e. sybil bloat attacks) the network with non-required proofs. TODO_MAINNET: Consider renaming this to `proof_submission_fee_upokt`. | +| `service` | `cosmos.base.v1beta1.Coin` | `add_service_fee` | The amount of uPOKT required to add a new service. This will be deducted from the signer's account balance, and transferred to the pocket network foundation. | +| `session` | `uint64` | `num_suppliers_per_session` | num_suppliers_per_session is the maximun number of suppliers per session (applicaiton:supplier pair for a given session number). | +| `shared` | `uint64` | `application_unbonding_period_sessions` | application_unbonding_period_sessions is the number of sessions that an application must wait after unstaking before their staked assets are moved to their account balance. Onchain business logic requires, and ensures, that the corresponding block count of the application unbonding period will exceed the end of its corresponding proof window close height. | +| `shared` | `uint64` | `claim_window_close_offset_blocks` | claim_window_close_offset_blocks is the number of blocks after the claim window open height, at which the claim window closes. | +| `shared` | `uint64` | `claim_window_open_offset_blocks` | claim_window_open_offset_blocks is the number of blocks after the session grace period height, at which the claim window opens. | +| `shared` | `uint64` | `compute_units_to_tokens_multiplier` | The amount of upokt that a compute unit should translate to when settling a session. DEV_NOTE: This used to be under x/tokenomics but has been moved here to avoid cyclic dependencies. | +| `shared` | `uint64` | `grace_period_end_offset_blocks` | grace_period_end_offset_blocks is the number of blocks, after the session end height, during which the supplier can still service payable relays. Suppliers will need to recreate a claim for the previous session (if already created) to get paid for the additional relays. | +| `shared` | `uint64` | `num_blocks_per_session` | num_blocks_per_session is the number of blocks between the session start & end heights. | +| `shared` | `uint64` | `proof_window_close_offset_blocks` | proof_window_close_offset_blocks is the number of blocks after the proof window open height, at which the proof window closes. | +| `shared` | `uint64` | `proof_window_open_offset_blocks` | proof_window_open_offset_blocks is the number of blocks after the claim window close height, at which the proof window opens. | +| `shared` | `uint64` | `supplier_unbonding_period_sessions` | supplier_unbonding_period_sessions is the number of sessions that a supplier must wait after unstaking before their staked assets are moved to their account balance. Onchain business logic requires, and ensures, that the corresponding block count of the unbonding period will exceed the end of any active claim & proof lifecycles. | +| `supplier` | `cosmos.base.v1beta1.Coin` | `min_stake` | min_stake is the minimum amount of uPOKT that a supplier must stake to be included in network sessions and remain staked. | +| `tokenomics` | `string` | `dao_reward_address` | dao_reward_address is the address to which mint_allocation_dao percentage of the minted tokens are at the end of claim settlement. | +| `tokenomics` | `MintAllocationPercentages` | `mint_allocation_percentages` | mint_allocation_percentages represents the distribution of newly minted tokens, at the end of claim settlement, as a result of the Global Mint TLM. | diff --git a/docusaurus/docs/tools/endpoints/_category_.json b/docusaurus/docs/tools/endpoints/_category_.json new file mode 100644 index 000000000..42be32e63 --- /dev/null +++ b/docusaurus/docs/tools/endpoints/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "RPC Endpoints", + "position": 2, + "link": { + "type": "generated-index", + "description": "RPC Endpoints" + } +} diff --git a/docusaurus/docs/tools/rpc.md b/docusaurus/docs/tools/endpoints/shannon_rpc.md similarity index 89% rename from docusaurus/docs/tools/rpc.md rename to docusaurus/docs/tools/endpoints/shannon_rpc.md index 5a407e2ce..b85486e4c 100644 --- a/docusaurus/docs/tools/rpc.md +++ b/docusaurus/docs/tools/endpoints/shannon_rpc.md @@ -1,5 +1,5 @@ --- -title: RPC Endpoints +title: Shannon RPC Endpoints sidebar_position: 3 --- @@ -10,6 +10,7 @@ sidebar_position: 3 - [Alpha TestNet](#alpha-testnet) - [Alpha RPC Endpoints](#alpha-rpc-endpoints) - [Alpha JSON-RPC Example](#alpha-json-rpc-example) +- [Genesis](#genesis) ## Types of RPC Endpoints @@ -62,3 +63,7 @@ Using the `poktrolld` binary: ```bash poktrolld query block --type=height 1 --node https://shannon-testnet-grove-seed-rpc.alpha.poktroll.com ``` + +## Genesis + +The genesis file for the Pocket Network is located at [pokt-network-genesis](https://github.com/pokt-network/pocket-network-genesis). diff --git a/docusaurus/docs/tools/genesis.md b/docusaurus/docs/tools/genesis.md deleted file mode 100644 index 18424b525..000000000 --- a/docusaurus/docs/tools/genesis.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Genesis -sidebar_position: 4 ---- - -## Genesis - -The genesis file for the Pocket Network is located at [pokt-network-genesis](https://github.com/pokt-network/pocket-network-genesis). diff --git a/docusaurus/docs/tools/tools.md b/docusaurus/docs/tools/tools.md deleted file mode 100644 index 9e46f4f64..000000000 --- a/docusaurus/docs/tools/tools.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Tools & References -sidebar_position: 1 ---- - -- [Beta TestNet](#beta-testnet) -- [Alpha TestNet](#alpha-testnet) -- [πŸ› οΈ Tools \& References](#️-tools--references) - -## Beta TestNet - -- πŸͺ™ [Token Faucet](https://faucet.beta.testnet.pokt.network/) -- πŸ—ΊοΈ [Explorer](https://shannon.beta.testnet.pokt.network) -- πŸ—ΊοΈ [POKTScan's Explorer](https://shannon-beta.poktscan.com/) -- πŸ‘¨β€πŸ’» [POKTScan's GraphQL Playground](https://shannon-beta-api.poktscan.com/) - -## Alpha TestNet - -- πŸͺ™ [Token Faucet](https://faucet.alpha.testnet.pokt.network/) -- πŸ—ΊοΈ [Explorer](https://shannon.alpha.testnet.pokt.network) -- πŸ—ΊοΈ [POKTScan's Explorer](https://shannon-alpha.poktscan.com/) -- πŸ‘¨β€πŸ’» [POKTScan's GraphQL Playground](https://shannon-alpha-api.poktscan.com/) - -## πŸ› οΈ Tools & References - -- πŸ—οΈ [Deploy your own gateway & Supplier](https://dev.poktroll.com/operate/quickstart/docker_compose_walkthrough) -- 🍝 [Copy-pasta your way to deploying on a Debian server](https://dev.poktroll.com/operate/quickstart/docker_compose_debian_cheatsheet) -- πŸ§‘β€πŸ’» [Developer Onboarding](https://dev.poktroll.com/develop/developer_guide/quickstart) -- πŸ’½ [Full Node Indexer](https://shannon-testnet.poktscan.com/) + [Pocketdex source code](https://github.com/pokt-network/pocketdex/) -- πŸ“– [General Documentation](https://docs.pokt.network/pokt-protocol/the-shannon-upgrade) -- πŸ“’ [Technical Documentation](https://dev.poktroll.com/) -- πŸ§‘β€πŸ’» [Shannon SDK](https://github.com/pokt-network/shannon-sdk) -- πŸ–₯️ [Shannon source code](https://github.com/pokt-network/poktroll) diff --git a/docusaurus/docs/tools/tools/_category_.json b/docusaurus/docs/tools/tools/_category_.json new file mode 100644 index 000000000..b8a7c0e2e --- /dev/null +++ b/docusaurus/docs/tools/tools/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Explorers, Faucets, Wallets, and More", + "position": 3, + "link": { + "type": "generated-index", + "description": "poktrolld CLI documentation" + } +} diff --git a/docusaurus/docs/tools/tools/shannon_alpha.md b/docusaurus/docs/tools/tools/shannon_alpha.md new file mode 100644 index 000000000..6f351ed97 --- /dev/null +++ b/docusaurus/docs/tools/tools/shannon_alpha.md @@ -0,0 +1,9 @@ +--- +title: Alpha TestNet +sidebar_position: 1 +--- + +- πŸͺ™ [Token Faucet](https://faucet.alpha.testnet.pokt.network/) +- πŸ—ΊοΈ [Explorer](https://shannon.alpha.testnet.pokt.network) +- πŸ—ΊοΈ [POKTScan's Explorer](https://shannon-alpha.poktscan.com/) +- πŸ‘¨β€πŸ’» [POKTScan's GraphQL Playground](https://shannon-alpha-api.poktscan.com/) diff --git a/docusaurus/docs/tools/tools/shannon_beta.md b/docusaurus/docs/tools/tools/shannon_beta.md new file mode 100644 index 000000000..ccb7096f5 --- /dev/null +++ b/docusaurus/docs/tools/tools/shannon_beta.md @@ -0,0 +1,9 @@ +--- +title: Beta TestNet +sidebar_position: 1 +--- + +- πŸͺ™ [Token Faucet](https://faucet.beta.testnet.pokt.network/) +- πŸ—ΊοΈ [Explorer](https://shannon.beta.testnet.pokt.network) +- πŸ—ΊοΈ [POKTScan's Explorer](https://shannon-beta.poktscan.com/) +- πŸ‘¨β€πŸ’» [POKTScan's GraphQL Playground](https://shannon-beta-api.poktscan.com/) diff --git a/docusaurus/docs/tools/tools/source_code.md b/docusaurus/docs/tools/tools/source_code.md new file mode 100644 index 000000000..6b6fa5db8 --- /dev/null +++ b/docusaurus/docs/tools/tools/source_code.md @@ -0,0 +1,7 @@ +--- +title: Source Code +sidebar_position: 1 +--- + +- πŸ§‘β€πŸ’» [Shannon SDK](https://github.com/pokt-network/shannon-sdk) +- πŸ–₯️ [Shannon source code](https://github.com/pokt-network/poktroll) diff --git a/docusaurus/docs/tools/user_guide/_category_.json b/docusaurus/docs/tools/user_guide/_category_.json index 4f71de3e6..a1590bac2 100644 --- a/docusaurus/docs/tools/user_guide/_category_.json +++ b/docusaurus/docs/tools/user_guide/_category_.json @@ -1,8 +1,8 @@ { - "label": "User Guide", - "position": 2, + "label": "poktrolld CLI", + "position": 1, "link": { "type": "generated-index", - "description": "poktrolld CLI documentation" + "description": "User Guide on using the poktrolld CLI" } } diff --git a/docusaurus/docs/tools/user_guide/app-transfer.md b/docusaurus/docs/tools/user_guide/app-transfer.md index 12ca76b19..884564f80 100644 --- a/docusaurus/docs/tools/user_guide/app-transfer.md +++ b/docusaurus/docs/tools/user_guide/app-transfer.md @@ -1,6 +1,6 @@ --- -title: Application Transfer -sidebar_position: 5 +title: Application Stake Transfer +sidebar_position: 6 --- # Transferring an Application diff --git a/docusaurus/docs/tools/user_guide/check-balance.md b/docusaurus/docs/tools/user_guide/check-balance.md index 60897ca22..40a19f0be 100644 --- a/docusaurus/docs/tools/user_guide/check-balance.md +++ b/docusaurus/docs/tools/user_guide/check-balance.md @@ -1,6 +1,6 @@ --- title: Balance check -sidebar_position: 3 +sidebar_position: 4 --- # Checking Your Wallet Account Balance diff --git a/docusaurus/docs/tools/user_guide/create-new-wallet.md b/docusaurus/docs/tools/user_guide/create-new-wallet.md index d5444dce7..140929994 100644 --- a/docusaurus/docs/tools/user_guide/create-new-wallet.md +++ b/docusaurus/docs/tools/user_guide/create-new-wallet.md @@ -1,6 +1,6 @@ --- title: Create a New Wallet -sidebar_position: 1 +sidebar_position: 2 --- # Create a New Wallet diff --git a/docusaurus/docs/tools/user_guide/poktrolld_cli.md b/docusaurus/docs/tools/user_guide/poktrolld_cli.md index 9ca5431b9..2f95d20f5 100644 --- a/docusaurus/docs/tools/user_guide/poktrolld_cli.md +++ b/docusaurus/docs/tools/user_guide/poktrolld_cli.md @@ -1,6 +1,6 @@ --- -title: poktrolld CLI Installation -sidebar_position: 0 +title: poktrolld Installation +sidebar_position: 1 --- :::warning diff --git a/docusaurus/docs/tools/user_guide/recover-with-mnemonic.md b/docusaurus/docs/tools/user_guide/recover-with-mnemonic.md index 6343667f9..c6b13ff19 100644 --- a/docusaurus/docs/tools/user_guide/recover-with-mnemonic.md +++ b/docusaurus/docs/tools/user_guide/recover-with-mnemonic.md @@ -1,6 +1,6 @@ --- title: Mnemonic Seed Phrase Recovery -sidebar_position: 2 +sidebar_position: 3 --- # Recovering an Account from a Mnemonic Seed Phrase diff --git a/docusaurus/docs/tools/user_guide/send-tokens.md b/docusaurus/docs/tools/user_guide/send-tokens.md index 6d3c5676c..898e4789c 100644 --- a/docusaurus/docs/tools/user_guide/send-tokens.md +++ b/docusaurus/docs/tools/user_guide/send-tokens.md @@ -1,6 +1,6 @@ --- title: Send tokens -sidebar_position: 4 +sidebar_position: 5 --- # Sending Tokens Between Accounts diff --git a/tools/scripts/docusaurus/params_doc_template.md b/tools/scripts/docusaurus/params_doc_template.md index fdbc914af..5a4da247b 100644 --- a/tools/scripts/docusaurus/params_doc_template.md +++ b/tools/scripts/docusaurus/params_doc_template.md @@ -1,16 +1,14 @@ --- -title: Pocket Network Governance Params +title: Governance Params sidebar_position: 1 --- -# Governance Parameters +## Governance Parameters :::warning DO NOT EDIT: this file was generated by make docs_update_gov_params_page ::: -- [Access Control](#access-control) -- [Updating governance parameter values](#updating-governance-parameter-values) - [Updating this page](#updating-this-page) - [Adding a new parameter](#adding-a-new-parameter) - [Parameters](#parameters) @@ -27,7 +25,7 @@ Please follow the instructions in [this guide](../../develop/developer_guide/add ## Parameters +| Module | Field Type | Field Name | Comment | +| ------ | ---------- | ---------- | ------- | -|Module | Field Type | Field Name |Comment | -|-------|------------|------------|--------| -{{.}} \ No newline at end of file +{{.}} From 82b414bea57082999e74117463f2c9a9b332b121 Mon Sep 17 00:00:00 2001 From: Daniel Olshansky Date: Wed, 5 Feb 2025 19:03:23 -0800 Subject: [PATCH 09/11] WIP --- README.md | 54 ++--------- docusaurus/docs/README.md | 83 +++++++++++------ .../develop/developer_guide/walkthrough.md | 6 +- .../infrastructure/_category_.json | 0 .../access_dashboard_on_service.png | Bin .../infrastructure/devnet.md | 0 .../infrastructure/gcp_workloads.png | Bin .../infrastructure/grafana_explore_logs.png | Bin .../infrastructure/grafana_save_dashboard.png | Bin .../infrastructure/localnet.md | 0 .../infrastructure/private_testnet.md | 0 .../infrastructure/repositories.md | 0 .../infrastructure/testnet.md | 0 .../testing/_category_.json | 0 .../testing/load_testing.md | 0 .../testing/load_testing_devnet.md | 0 .../testing/load_testing_plan_1.md | 0 .../testing/load_testing_testnet.md | 0 docusaurus/docs/explore/roadmap.md | 64 ------------- .../docs/operate/cheat_sheets/_category_.json | 8 ++ .../docker_compose_debian_cheatsheet.md | 2 +- .../docker_compose_walkthrough.md | 6 +- .../full_node_cheatsheet.md | 42 ++++----- .../gateway_cheatsheet.md | 10 +-- .../service_cheatsheet.md | 6 +- .../supplier_cheatsheet.md | 10 +-- .../validator_cheatsheet.md | 16 +++- .../hardware_requirements.md | 0 .../docs/operate/quickstart/_category_.json | 8 -- .../docs/operate/run_a_node/_category_.json | 8 -- .../docs/operate/walkthroughs/_category_.json | 8 ++ .../full_node_docker.md | 4 +- .../full_node_walkthrough.md | 4 +- .../gateway_walkthrough.md | 2 +- .../supplier_walkthrough.md | 2 +- .../validator_walkthrough.md | 9 ++ .../protocol/upgrades/protocol_upgrades.md | 2 +- .../docs/protocol/upgrades/release_process.md | 2 +- .../protocol/upgrades/upgrade_procedure.md | 4 +- .../docs/{explore => tools}/_category_.json | 0 docusaurus/docs/{explore => tools}/genesis.md | 0 docusaurus/docs/{explore => tools}/rpc.md | 0 docusaurus/docs/{explore => tools}/tools.md | 0 .../user_guide/_category_.json | 0 .../user_guide/app-transfer.md | 0 .../user_guide/check-balance.md | 0 .../user_guide/create-new-wallet.md | 0 .../user_guide/poktrolld_cli.md | 0 .../user_guide/recover-with-mnemonic.md | 0 .../user_guide/send-tokens.md | 0 docusaurus/docusaurus.config.js | 21 +++-- docusaurus/sidebars.js | 4 +- docusaurus/static/img/logo-large-white.png | Bin 0 -> 14066 bytes docusaurus/static/img/logo-large.png | Bin 0 -> 13149 bytes .../static/img/logo-monochrome-black.png | Bin 0 -> 12694 bytes .../static/img/logo-monochrome-white.png | Bin 0 -> 11750 bytes docusaurus/static/img/logo.png | Bin 3889 -> 14066 bytes tools/installer/full-node.sh | 84 +++++++++++------- 58 files changed, 219 insertions(+), 250 deletions(-) rename docusaurus/docs/{operate => develop}/infrastructure/_category_.json (100%) rename docusaurus/docs/{operate => develop}/infrastructure/access_dashboard_on_service.png (100%) rename docusaurus/docs/{operate => develop}/infrastructure/devnet.md (100%) rename docusaurus/docs/{operate => develop}/infrastructure/gcp_workloads.png (100%) rename docusaurus/docs/{operate => develop}/infrastructure/grafana_explore_logs.png (100%) rename docusaurus/docs/{operate => develop}/infrastructure/grafana_save_dashboard.png (100%) rename docusaurus/docs/{operate => develop}/infrastructure/localnet.md (100%) rename docusaurus/docs/{operate => develop}/infrastructure/private_testnet.md (100%) rename docusaurus/docs/{operate => develop}/infrastructure/repositories.md (100%) rename docusaurus/docs/{operate => develop}/infrastructure/testnet.md (100%) rename docusaurus/docs/{operate => develop}/testing/_category_.json (100%) rename docusaurus/docs/{operate => develop}/testing/load_testing.md (100%) rename docusaurus/docs/{operate => develop}/testing/load_testing_devnet.md (100%) rename docusaurus/docs/{operate => develop}/testing/load_testing_plan_1.md (100%) rename docusaurus/docs/{operate => develop}/testing/load_testing_testnet.md (100%) delete mode 100644 docusaurus/docs/explore/roadmap.md create mode 100644 docusaurus/docs/operate/cheat_sheets/_category_.json rename docusaurus/docs/operate/{quickstart => cheat_sheets}/docker_compose_debian_cheatsheet.md (99%) rename docusaurus/docs/operate/{quickstart => cheat_sheets}/docker_compose_walkthrough.md (99%) rename docusaurus/docs/operate/{quickstart => cheat_sheets}/full_node_cheatsheet.md (85%) rename docusaurus/docs/operate/{quickstart => cheat_sheets}/gateway_cheatsheet.md (96%) rename docusaurus/docs/operate/{quickstart => cheat_sheets}/service_cheatsheet.md (94%) rename docusaurus/docs/operate/{quickstart => cheat_sheets}/supplier_cheatsheet.md (96%) rename docusaurus/docs/operate/{quickstart => cheat_sheets}/validator_cheatsheet.md (88%) rename docusaurus/docs/operate/{run_a_node => configs}/hardware_requirements.md (100%) delete mode 100644 docusaurus/docs/operate/quickstart/_category_.json delete mode 100644 docusaurus/docs/operate/run_a_node/_category_.json create mode 100644 docusaurus/docs/operate/walkthroughs/_category_.json rename docusaurus/docs/operate/{run_a_node => walkthroughs}/full_node_docker.md (92%) rename docusaurus/docs/operate/{run_a_node => walkthroughs}/full_node_walkthrough.md (98%) rename docusaurus/docs/operate/{run_a_node => walkthroughs}/gateway_walkthrough.md (94%) rename docusaurus/docs/operate/{run_a_node => walkthroughs}/supplier_walkthrough.md (94%) rename docusaurus/docs/operate/{run_a_node => walkthroughs}/validator_walkthrough.md (92%) rename docusaurus/docs/{explore => tools}/_category_.json (100%) rename docusaurus/docs/{explore => tools}/genesis.md (100%) rename docusaurus/docs/{explore => tools}/rpc.md (100%) rename docusaurus/docs/{explore => tools}/tools.md (100%) rename docusaurus/docs/{operate => tools}/user_guide/_category_.json (100%) rename docusaurus/docs/{operate => tools}/user_guide/app-transfer.md (100%) rename docusaurus/docs/{operate => tools}/user_guide/check-balance.md (100%) rename docusaurus/docs/{operate => tools}/user_guide/create-new-wallet.md (100%) rename docusaurus/docs/{operate => tools}/user_guide/poktrolld_cli.md (100%) rename docusaurus/docs/{operate => tools}/user_guide/recover-with-mnemonic.md (100%) rename docusaurus/docs/{operate => tools}/user_guide/send-tokens.md (100%) create mode 100644 docusaurus/static/img/logo-large-white.png create mode 100644 docusaurus/static/img/logo-large.png create mode 100644 docusaurus/static/img/logo-monochrome-black.png create mode 100644 docusaurus/static/img/logo-monochrome-white.png diff --git a/README.md b/README.md index cfb6f41e3..f15551f70 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,9 @@ + + + @@ -22,52 +25,13 @@ # poktroll -**poktroll** is built using the [Cosmos SDK](https://docs.cosmos.network) and -[CometBFT](https://cometbft.com/), created with [Ignite CLI](https://ignite.com/cli) -for the Shannon upgrade of the [Pocket Network](https://pokt.network) blockchain. - -- [Learn about Pocket Network](#learn-about-pocket-network) -- [Developer Documentation](#developer-documentation) -- [Roadmap](#roadmap) -- [Quickstart](#quickstart) -- [Godoc](#godoc) -- [Have questions? Ask An PNYX](#have-questions-ask-an-pnyx) -- [License](#license) - -## Learn about Pocket Network - -User friendly documentation of the Shannon upgrade is still a WIP, but there are -a handful of (potentially outdated) resources you can reference in the meantime -to build a better understanding of Pocket Network: - -- [Pocket Network official documentation](https://docs.pokt.network) -- [[Live] Pocket Network Morse; aka v0](https://github.com/pokt-network/pocket-core) -- [[Outdated] Pocket Network Protocol](https://github.com/pokt-network/pocket-network-protocol) -- [[Deprecated]Pocket Network V1](https://github.com/pokt-network/pocket) - -## Developer Documentation - -The developer documentation is available at [dev.poktroll.com](https://dev.poktroll.com). - -## Roadmap - -You can view the Shannon Roadmap on [Github](https://github.com/orgs/pokt-network/projects/144?query=is%3Aopen+sort%3Aupdated-desc) - -## Quickstart - -The best way to get involved is by following the [quickstart instructions](https://dev.poktroll.com/develop/developer_guide/quickstart). - -## Godoc - -The Godoc for the source code in this can be found at [pkg.go.dev/github.com/pokt-network/poktroll](https://pkg.go.dev/github.com/pokt-network/poktroll). - -## Have questions? Ask An PNYX +**poktroll** is the source code for [Pocket Network's](https://pokt.network/) +[Shannon upgrade](https://docs.pokt.network/pokt-protocol/the-shannon-upgrade). -You can use [PNYX](https://migration.pnyxai.com/), an AI-powered search engine that has been -trained and indexed on the Pocket Network documentation, community calls, forums -and much more! +For technical documentation, visit [dev.poktroll.com](https://dev.poktroll.com). ---- +Documentation is maintained in the [docusaurus repo](./docusaurus) and is +automatically deployed to the link above. ## License diff --git a/docusaurus/docs/README.md b/docusaurus/docs/README.md index 1de7ee4d7..bc3b04b94 100644 --- a/docusaurus/docs/README.md +++ b/docusaurus/docs/README.md @@ -5,12 +5,23 @@ id: home-doc slug: / --- + + + +:::note Pocket Network Project Documentation + +This is the living technical documentation for the protocol design, implementation, +and operation. If you're looking for general documentation related to Pocket Network, +please visit [docs.pokt.network](https://docs.pokt.network). + +::: +
@@ -27,47 +38,63 @@ slug: /
-# poktroll +## Pocket Network Shannon Technical Docs (aka poktroll) + +**poktroll** is the source code and core implementation of the [Shannon upgrade](https://docs.pokt.network/pokt-protocol/the-shannon-upgrade) for [Pocket Network](https://pokt.network/). + +`poktroll` is built using the [Cosmos SDK](https://docs.cosmos.network), [CometBFT](https://cometbft.com/) and [Ignite CLI](https://ignite.com/cli). + +## What is Pocket Network? + +:::note 🚧 Under Construction 🚧 -**poktroll** is built using the [Cosmos SDK](https://docs.cosmos.network) and -[CometBFT](https://cometbft.com/), created with [Ignite CLI](https://ignite.com/cli) -for the Shannon upgrade of the [Pocket Network](https://pokt.network) blockchain. +This documentation is not intended to answer this question as of 02/2025 -- [Learn about Pocket Network](#learn-about-pocket-network) -- [Roadmap](#roadmap) -- [Quickstart](#quickstart) -- [Godoc](#godoc) -- [Have questions? Ask An PNYC](#have-questions-ask-an-pnyc) +Consider reading [this post from 02/2025](https://medium.com/decentralized-infrastructure/an-update-from-grove-on-shannon-beta-testnet-path-the-past-the-future-5bf7ec2a9acf) by @olshansk +to get some understanding of why you need Pocket & Grove. + +::: + +--- + +## Table of Contents + +- [Where do I start?](#where-do-i-start) +- [Shannon Roadmap](#shannon-roadmap) +- [PATH for Gateways](#path-for-gateways) +- [GoDoc Documentation](#godoc-documentation) - [License](#license) -## Learn about Pocket Network +## Where do I start? -User friendly documentation of the Shannon upgrade is still a WIP, but there are -a handful of (potentially outdated) resources you can reference in the meantime -to build a better understanding of Pocket Network: +1. [Guides & Deployment](./operate/): Deployment cheat sheets and config overviews for node runners, infrastructure operators and CLI users. +2. [Tools & Explorers](tools): Explorers, wallets, faucets and other resources to interact with the network. +3. [Core Developers](./develop/): Guides & walkthroughs for core or external developers looking to contribute to the core protocol or SDK. +4. [Protocol Design](./protocol/): Learn more about tokenomics design & protocol architecture. -- [Pocket Network official documentation](https://docs.pokt.network) -- [[Live] Pocket Network Morse; aka v0](https://github.com/pokt-network/pocket-core) -- [[Outdated] Pocket Network Protocol](https://github.com/pokt-network/pocket-network-protocol) -- [[Deprecated]Pocket Network V1](https://github.com/pokt-network/pocket) +:::note 🚧 Under Construction 🚧 -## Roadmap +As of 02/2025, this documentation is under construction and does not have a clear +user journey. Different parts are intended to serve as references one can link to +or jump to/from to when needed. -You can view the Shannon Roadmap on [Github](https://github.com/orgs/pokt-network/projects/144?query=is%3Aopen+sort%3Aupdated-desc) +::: -## Quickstart +## Shannon Roadmap -The best way to get involved is by following the [quickstart instructions](develop/developer_guide/walkthrough.md). +The Shannon Roadmap, along with all past, active and future work is tracked via [this Github project](https://github.com/orgs/pokt-network/projects/144). -## Godoc +## PATH for Gateways -The Godoc for the source code in this can be found at [pkg.go.dev/github.com/pokt-network/poktroll](https://pkg.go.dev/github.com/pokt-network/poktroll). +[Grove](https://grove.city/) is developing [PATH](https://path.grove.city/) for +anyone who aims to deploy a Pocket Network gateway. Visit the [docs](https://path.grove.city/) +to get started. -## Have questions? Ask An PNYC +The PATH Roadmap, along with all past, active and future work is tracked via [this Github project](https://github.com/orgs/buildwithgrove/projects/1). -You can use [PNYX](https://pnyxai.com/), an AI-powered search engine that has been -trained and indexed on the Pocket Network documentation, community calls, forums -and much more! +## GoDoc Documentation + +The Godoc for the source code in this can be found at [pkg.go.dev/github.com/pokt-network/poktroll](https://pkg.go.dev/github.com/pokt-network/poktroll). --- diff --git a/docusaurus/docs/develop/developer_guide/walkthrough.md b/docusaurus/docs/develop/developer_guide/walkthrough.md index da5f30ed3..34f292d5a 100644 --- a/docusaurus/docs/develop/developer_guide/walkthrough.md +++ b/docusaurus/docs/develop/developer_guide/walkthrough.md @@ -95,7 +95,7 @@ Install the following dependencies: 6. [Tilt](https://docs.tilt.dev/install.html) - k8s local development tool & environment manager :::note -If you've followed the [LocalNet instructions](../../operate/infrastructure/localnet.md), +If you've followed the [LocalNet instructions](../infrastructure/localnet.md), you may already have them installed. ::: @@ -106,7 +106,7 @@ and inspect it so you have an idea of what's going on! We'll be manually configuring a few actors to run in your shell for the sake of the tutorial so you have visibility into the types of onchain and offchain -actors. In practice, you should be using [localnet](../../operate/infrastructure/localnet.md) +actors. In practice, you should be using [localnet](../infrastructure/localnet.md) to dynamically scale your actors. To learn more about the different actors type, see the docs [here](../../protocol/actors/actors.md). @@ -653,7 +653,7 @@ We went through a flow of steps above just so you can get a feel for how things That said, you can dynamically scale the number of any actors in LocalNet by ony changing one line! -Go to our [localnet tutorial](../../operate/infrastructure/localnet.md) to learn more. +Go to our [localnet tutorial](../infrastructure/localnet.md) to learn more. ## 7. Explore the tools diff --git a/docusaurus/docs/operate/infrastructure/_category_.json b/docusaurus/docs/develop/infrastructure/_category_.json similarity index 100% rename from docusaurus/docs/operate/infrastructure/_category_.json rename to docusaurus/docs/develop/infrastructure/_category_.json diff --git a/docusaurus/docs/operate/infrastructure/access_dashboard_on_service.png b/docusaurus/docs/develop/infrastructure/access_dashboard_on_service.png similarity index 100% rename from docusaurus/docs/operate/infrastructure/access_dashboard_on_service.png rename to docusaurus/docs/develop/infrastructure/access_dashboard_on_service.png diff --git a/docusaurus/docs/operate/infrastructure/devnet.md b/docusaurus/docs/develop/infrastructure/devnet.md similarity index 100% rename from docusaurus/docs/operate/infrastructure/devnet.md rename to docusaurus/docs/develop/infrastructure/devnet.md diff --git a/docusaurus/docs/operate/infrastructure/gcp_workloads.png b/docusaurus/docs/develop/infrastructure/gcp_workloads.png similarity index 100% rename from docusaurus/docs/operate/infrastructure/gcp_workloads.png rename to docusaurus/docs/develop/infrastructure/gcp_workloads.png diff --git a/docusaurus/docs/operate/infrastructure/grafana_explore_logs.png b/docusaurus/docs/develop/infrastructure/grafana_explore_logs.png similarity index 100% rename from docusaurus/docs/operate/infrastructure/grafana_explore_logs.png rename to docusaurus/docs/develop/infrastructure/grafana_explore_logs.png diff --git a/docusaurus/docs/operate/infrastructure/grafana_save_dashboard.png b/docusaurus/docs/develop/infrastructure/grafana_save_dashboard.png similarity index 100% rename from docusaurus/docs/operate/infrastructure/grafana_save_dashboard.png rename to docusaurus/docs/develop/infrastructure/grafana_save_dashboard.png diff --git a/docusaurus/docs/operate/infrastructure/localnet.md b/docusaurus/docs/develop/infrastructure/localnet.md similarity index 100% rename from docusaurus/docs/operate/infrastructure/localnet.md rename to docusaurus/docs/develop/infrastructure/localnet.md diff --git a/docusaurus/docs/operate/infrastructure/private_testnet.md b/docusaurus/docs/develop/infrastructure/private_testnet.md similarity index 100% rename from docusaurus/docs/operate/infrastructure/private_testnet.md rename to docusaurus/docs/develop/infrastructure/private_testnet.md diff --git a/docusaurus/docs/operate/infrastructure/repositories.md b/docusaurus/docs/develop/infrastructure/repositories.md similarity index 100% rename from docusaurus/docs/operate/infrastructure/repositories.md rename to docusaurus/docs/develop/infrastructure/repositories.md diff --git a/docusaurus/docs/operate/infrastructure/testnet.md b/docusaurus/docs/develop/infrastructure/testnet.md similarity index 100% rename from docusaurus/docs/operate/infrastructure/testnet.md rename to docusaurus/docs/develop/infrastructure/testnet.md diff --git a/docusaurus/docs/operate/testing/_category_.json b/docusaurus/docs/develop/testing/_category_.json similarity index 100% rename from docusaurus/docs/operate/testing/_category_.json rename to docusaurus/docs/develop/testing/_category_.json diff --git a/docusaurus/docs/operate/testing/load_testing.md b/docusaurus/docs/develop/testing/load_testing.md similarity index 100% rename from docusaurus/docs/operate/testing/load_testing.md rename to docusaurus/docs/develop/testing/load_testing.md diff --git a/docusaurus/docs/operate/testing/load_testing_devnet.md b/docusaurus/docs/develop/testing/load_testing_devnet.md similarity index 100% rename from docusaurus/docs/operate/testing/load_testing_devnet.md rename to docusaurus/docs/develop/testing/load_testing_devnet.md diff --git a/docusaurus/docs/operate/testing/load_testing_plan_1.md b/docusaurus/docs/develop/testing/load_testing_plan_1.md similarity index 100% rename from docusaurus/docs/operate/testing/load_testing_plan_1.md rename to docusaurus/docs/develop/testing/load_testing_plan_1.md diff --git a/docusaurus/docs/operate/testing/load_testing_testnet.md b/docusaurus/docs/develop/testing/load_testing_testnet.md similarity index 100% rename from docusaurus/docs/operate/testing/load_testing_testnet.md rename to docusaurus/docs/develop/testing/load_testing_testnet.md diff --git a/docusaurus/docs/explore/roadmap.md b/docusaurus/docs/explore/roadmap.md deleted file mode 100644 index 75fc518a9..000000000 --- a/docusaurus/docs/explore/roadmap.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Roadmap -sidebar_position: 2 ---- - -## Blogs & Updates - -- TODO_BETA(@olshansk): Pocket Network Shannon Update - Beta TestNet #1 Announcement -- [Pocket Network Shannon Update - Alpha TestNet #3 Announcement](https://medium.com/decentralized-infrastructure/pocket-network-shannon-update-alpha-testnet-3-eca539a9e111) - -## Alpha TestNet Roadmap - -See the Alpha TestNet #3 Announcement [here](https://medium.com/decentralized-infrastructure/pocket-network-shannon-update-alpha-testnet-3-eca539a9e111). - -```mermaid -timeline - title Shannon Roadmap - section Morse - Alpha TestNet(s)
(Q3/Q4): - βœ… Shannon Foundation: - βœ… Shannon SDK: - βœ… Relay Mining: - βœ… Morse Utility Parity: - βœ… Token Logic Modules: - βš™οΈ Governance: - βš™οΈ PATH Integration: - βš™οΈ Observability: - βš™οΈ Scalability Testing - Beta TestNet (Q4/Q1): - βš™οΈ E2E Permissionless Load Testing: - βš™οΈ POKTScan Explorer: - βš™οΈ TODOs & Optimizations: - βš™οΈ Streamline Upgrades: - IBC Integrations: - EVM Interoperability: - Migration module R&D: - Start wPOKT migration: - Auditing & Hardening - section Morse & Shannon - Shadow Migration
(Q1): - Shadow MainNet Launch: - Turn OFF Shannon inflation: - Bugs, Hardening & TECHDEBT: - Governance Parameter Eval: - Mirror Morse MainNet Traffic: - Tooling & Documentation Improvements: - Genesis File Preparation - Public Migration
(Q1): - Public MainNet Launch: - Morse POKT "Airdrop": - Gateway Migration: - Supplier Migration: - Bridge Migration: - Onboard Morse Validators: - CEX Support: - DEX Support - section Shannon - Launch & Deprecate
(Q2): - Turn ON Shannon inflation: - Enable New Incntives: - Deprecate Morse: - MainNet IBC and EVM Interoperability: - Kickoff Post-MainNet R&D -``` diff --git a/docusaurus/docs/operate/cheat_sheets/_category_.json b/docusaurus/docs/operate/cheat_sheets/_category_.json new file mode 100644 index 000000000..119111e91 --- /dev/null +++ b/docusaurus/docs/operate/cheat_sheets/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Stake & Deploy Cheat Sheets", + "position": 1, + "link": { + "type": "generated-index", + "description": "Cheat sheets for staking and operating Pocket Network actors." + } +} diff --git a/docusaurus/docs/operate/quickstart/docker_compose_debian_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/docker_compose_debian_cheatsheet.md similarity index 99% rename from docusaurus/docs/operate/quickstart/docker_compose_debian_cheatsheet.md rename to docusaurus/docs/operate/cheat_sheets/docker_compose_debian_cheatsheet.md index eb8fd7f6c..138a67c59 100644 --- a/docusaurus/docs/operate/quickstart/docker_compose_debian_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/docker_compose_debian_cheatsheet.md @@ -1,5 +1,5 @@ --- -sidebar_position: 2 +sidebar_position: 6 title: Docker Compose Cheat Sheet --- diff --git a/docusaurus/docs/operate/quickstart/docker_compose_walkthrough.md b/docusaurus/docs/operate/cheat_sheets/docker_compose_walkthrough.md similarity index 99% rename from docusaurus/docs/operate/quickstart/docker_compose_walkthrough.md rename to docusaurus/docs/operate/cheat_sheets/docker_compose_walkthrough.md index 6123e5ce8..85288a862 100644 --- a/docusaurus/docs/operate/quickstart/docker_compose_walkthrough.md +++ b/docusaurus/docs/operate/cheat_sheets/docker_compose_walkthrough.md @@ -1,5 +1,5 @@ --- -sidebar_position: 1 +sidebar_position: 7 title: Docker Compose Walkthrough --- @@ -132,7 +132,7 @@ Make sure to replace `olshansky` with your username. You can generally do everything as the `root` user, but it's recommended to create a new user and give it sudo permissions. -This is necessary, in particular, if you want to use [homebrew](https://brew.sh/) [to install `poktrolld`](../user_guide/poktrolld_cli.md). +This is necessary, in particular, if you want to use [homebrew](https://brew.sh/) [to install `poktrolld`](../../tools/user_guide/poktrolld_cli.md). ```bash adduser poktroll @@ -190,7 +190,7 @@ sed -i -e s/NODE_HOSTNAME=/NODE_HOSTNAME=69.42.690.420/g .env You can generally do everything as the `root` user, but it's recommended to create a new user and give it sudo permissions. -This is necessary, in particular, if you want to use [homebrew](https://brew.sh/) [to install `poktrolld`](../user_guide/poktrolld_cli.md). +This is necessary, in particular, if you want to use [homebrew](https://brew.sh/) [to install `poktrolld`](../../tools/user_guide/poktrolld_cli.md). You can create a new user (e.g. poktroll), provide sudo permissions and switch users like so: diff --git a/docusaurus/docs/operate/quickstart/full_node_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/full_node_cheatsheet.md similarity index 85% rename from docusaurus/docs/operate/quickstart/full_node_cheatsheet.md rename to docusaurus/docs/operate/cheat_sheets/full_node_cheatsheet.md index 58161381a..a6d884481 100644 --- a/docusaurus/docs/operate/quickstart/full_node_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/full_node_cheatsheet.md @@ -1,21 +1,21 @@ --- title: Full Node Cheat Sheet -sidebar_position: 3 +sidebar_position: 1 --- -## Full Node Cheat Sheet Using Systemd & Cosmovisor +**πŸ–¨ 🍝 instructions to get you up and running with a `Full Node` on Pocket Network using `Systemd` and `Cosmovisor` βœ…** -This cheat sheet provides quick copy-pasta like instructions for installing and -running a Full Node using an automated script. +:::warning There is lots of scripting and some details are abstracted away -:::tip - -If you're interested in understanding the underlying details, or having full control over every -step of the process, check out the [Full Node Walkthrough](../run_a_node/full_node_walkthrough.md). +See the [Full Node Walkthrough](../walkthroughs/full_node_walkthrough.md) if you want to understand what's happening under the hood. ::: -- [Introduction](#introduction) +--- + +## Table of Contents + +- [Introduction - why run a Full Node?](#introduction---why-run-a-full-node) - [Pre-Requisites](#pre-requisites) - [Install and Run a Full Node using Cosmovisor](#install-and-run-a-full-node-using-cosmovisor) - [Automatic Upgrades Out of the Box](#automatic-upgrades-out-of-the-box) @@ -23,20 +23,20 @@ step of the process, check out the [Full Node Walkthrough](../run_a_node/full_no - [FAQ \& Troubleshooting](#faq--troubleshooting) - [\[OPTIONAL\] Do you care to know what just happened?](#optional-do-you-care-to-know-what-just-happened) -### Introduction +## Introduction - why run a Full Node? -This guide will help you install a Full Node for Pocket Network, -**using helper that abstract out some of the underlying complexity.** +This guide will help you install a Full Node for Pocket Network +**using helpers that abstract out some of the underlying complexity.** Running a Full Node is the first step toward becoming a Validator, Supplier, or Gateway. -### Pre-Requisites +## Pre-Requisites -1. **Linux-based System**: Ensure you have a Debian-based Linux distribution (other distributions may work but are not fully supported). +1. **Linux-based System**: Ensure you have a Debian-based Linux distribution. 2. **Root or Sudo Access**: You need administrative privileges to run the installation script. -3. **Dedicated Server or Virtual Machine**: Any provider should work (Vultr and Hetzner have been tested). +3. **Dedicated Server or Virtual Machine**: Any provider should work (e.g. Vultr). -### Install and Run a Full Node using Cosmovisor +## Install and Run a Full Node using Cosmovisor :::info This section script will handle the installation of dependencies, user creation, @@ -65,7 +65,7 @@ Follow the instructions below to **quickly** install and set up a Full Node: - **Confirm Seeds and Genesis File**: The script fetches seeds and the genesis file automatically. - **External IP Address**: The script detects your external IP address. Confirm or input manually if incorrect. -#### Automatic Upgrades Out of the Box +### Automatic Upgrades Out of the Box Your node is configured to handle chain upgrades automatically through Cosmovisor. No manual intervention is required for standard upgrades. @@ -76,7 +76,7 @@ When a chain upgrade is proposed and approved: 3. Cosmovisor will switch to the new binary 4. The node will restart automatically -#### Verify successful installation (curl latest block) +### Verify successful installation (curl latest block) You can verify the installation was successful by querying the latest block (i.e. checking the node height). @@ -156,12 +156,12 @@ Should provide a response in this form: } ``` -### FAQ & Troubleshooting +## FAQ & Troubleshooting -See the [FAQ & Troubleshooting section in the Full Node Walkthrough](../run_a_node/full_node_walkthrough.md#faq--troubleshooting) +See the [FAQ & Troubleshooting section in the Full Node Walkthrough](../walkthroughs/full_node_walkthrough.md#faq--troubleshooting) for examples of useful commands, common debugging instructions and other advanced usage. -### [OPTIONAL] Do you care to know what just happened? +## [OPTIONAL] Do you care to know what just happened? :::info This section is optional and for informational purposes only. diff --git a/docusaurus/docs/operate/quickstart/gateway_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/gateway_cheatsheet.md similarity index 96% rename from docusaurus/docs/operate/quickstart/gateway_cheatsheet.md rename to docusaurus/docs/operate/cheat_sheets/gateway_cheatsheet.md index 2d3ab0937..e1b8edd39 100644 --- a/docusaurus/docs/operate/quickstart/gateway_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/gateway_cheatsheet.md @@ -1,5 +1,5 @@ --- -sidebar_position: 7 +sidebar_position: 4 title: Gateway Cheat Sheet --- @@ -9,7 +9,7 @@ This guide provides quick reference commands for setting up and running a **Gate on Pocket Network. For detailed instructions, troubleshooting, and observability setup, see the -[Gateway Walkthrough](./../run_a_node/gateway_walkthrough.md). +[Gateway Walkthrough](../walkthroughs/gateway_walkthrough.md). :::note @@ -39,8 +39,8 @@ streamline development and reduce friction for any new potential contributor. ## Pre-Requisites -1. Make sure to [install the `poktrolld` CLI](../user_guide/poktrolld_cli.md). -2. Make sure you know how to [create and fund a new account](../user_guide/create-new-wallet.md). +1. Make sure to [install the `poktrolld` CLI](../../tools/user_guide/poktrolld_cli.md). +2. Make sure you know how to [create and fund a new account](../../tools/user_guide/create-new-wallet.md). :::warning @@ -113,7 +113,7 @@ poktrolld query bank balances $APP_ADDR $NODE_FLAGS :::tip -You can find all the explorers, faucets and tools at the [tools page](../../explore/tools.md). +You can find all the explorers, faucets and tools at the [tools page](../../tools/tools.md). ::: diff --git a/docusaurus/docs/operate/quickstart/service_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/service_cheatsheet.md similarity index 94% rename from docusaurus/docs/operate/quickstart/service_cheatsheet.md rename to docusaurus/docs/operate/cheat_sheets/service_cheatsheet.md index eda5d4af5..564fcedbf 100644 --- a/docusaurus/docs/operate/quickstart/service_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/service_cheatsheet.md @@ -1,5 +1,5 @@ --- -sidebar_position: 5 +sidebar_position: 2 title: Service Cheat Sheet --- @@ -14,8 +14,8 @@ title: Service Cheat Sheet ### Pre-Requisites -1. Make sure to [install the `poktrolld` CLI](../user_guide/poktrolld_cli.md). -2. Make sure you know how to [create and fund a new account](../user_guide/create-new-wallet.md). +1. Make sure to [install the `poktrolld` CLI](../../tools/user_guide/poktrolld_cli.md). +2. Make sure you know how to [create and fund a new account](../../tools/user_guide/create-new-wallet.md). ### How do I query for all existing onchain Services? diff --git a/docusaurus/docs/operate/quickstart/supplier_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/supplier_cheatsheet.md similarity index 96% rename from docusaurus/docs/operate/quickstart/supplier_cheatsheet.md rename to docusaurus/docs/operate/cheat_sheets/supplier_cheatsheet.md index 3f40c410e..da0bea1ed 100644 --- a/docusaurus/docs/operate/quickstart/supplier_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/supplier_cheatsheet.md @@ -1,5 +1,5 @@ --- -sidebar_position: 6 +sidebar_position: 3 title: Supplier (RelayMiner) Cheat Sheet --- @@ -9,7 +9,7 @@ This guide provides quick reference commands for setting up a **Supplier** and running a **RelayMiner** on Pocket Network. For detailed instructions, troubleshooting, and observability setup, see the -[Supplier Walkthrough](./../run_a_node/supplier_walkthrough.md). +[Supplier Walkthrough](../walkthroughs/supplier_walkthrough.md). :::note @@ -39,8 +39,8 @@ streamline development and reduce friction for any new potential contributor. ## Pre-Requisites -1. Make sure to [install the `poktrolld` CLI](../user_guide/poktrolld_cli.md). -2. Make sure you know how to [create and fund a new account](../user_guide/create-new-wallet.md). +1. Make sure to [install the `poktrolld` CLI](../../tools/user_guide/poktrolld_cli.md). +2. Make sure you know how to [create and fund a new account](../../tools/user_guide/create-new-wallet.md). 3. You have either [staked a new `service` or found an existing one](./service_cheatsheet.md). 4. `[Optional]` You can run things locally or have dedicated long-running hardware. See the [Docker Compose Cheat Sheet](./docker_compose_debian_cheatsheet#deploy-your-server) if you're interested in the latter. @@ -115,7 +115,7 @@ poktrolld query bank balances $SUPPLIER_ADDR $NODE_FLAGS :::tip -You can find all the explorers, faucets and tools at the [tools page](../../explore/tools.md). +You can find all the explorers, faucets and tools at the [tools page](../../tools/tools.md). ::: diff --git a/docusaurus/docs/operate/quickstart/validator_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/validator_cheatsheet.md similarity index 88% rename from docusaurus/docs/operate/quickstart/validator_cheatsheet.md rename to docusaurus/docs/operate/cheat_sheets/validator_cheatsheet.md index 9135736b8..3b595d82f 100644 --- a/docusaurus/docs/operate/quickstart/validator_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/validator_cheatsheet.md @@ -1,14 +1,24 @@ --- title: Validator Cheat Sheet -sidebar_position: 4 +sidebar_position: 6 --- This cheat sheet provides quick copy-pasta instructions for staking and running a Validator node on Pocket Network. :::info +<<<<<<< HEAD:docusaurus/docs/operate/quickstart/validator_cheatsheet.md If you're interested in understanding everything validator related, or having full control of every step, check out the [Validator Walkthrough](../run_a_node/validator_walkthrough.md). +======= +This cheat sheet provides quick copy-pasta like instructions for installing and +running a Validator using an automated script. + +:::tip + +If you're interested in understanding everything, or having full control of every +step, check out the [Validator Walkthrough](../walkthroughs/validator_walkthrough.md). +>>>>>>> 2e49d7c64 (WIP):docusaurus/docs/operate/cheat_sheets/validator_cheatsheet.md ::: @@ -34,6 +44,7 @@ step, check out the [Validator Walkthrough](../run_a_node/validator_walkthrough. ## Account Setup +<<<<<<< HEAD:docusaurus/docs/operate/quickstart/validator_cheatsheet.md :::tip if you're running a full node using the [Full Node Cheat Sheet](./full_node_cheatsheet.md), you can can switch to @@ -196,3 +207,6 @@ poktrolld tx staking unbond $VALIDATOR_ADDR 500000upokt --from your_account --ch - Keep your mnemonic and private keys secure. - Adjust the `"amount"` in `validator.json` and delegation amounts according to your available balance. - The `commission-rate`, `commission-max-rate`, and `commission-max-change-rate` are expressed as decimal numbers (e.g., `0.1` for 10%). +======= +1. **Run a Full Node**: Make sure you have followed the [Full Node Cheat Sheet](full_node_cheatsheet.md) to install and run a Full Node first +>>>>>>> 2e49d7c64 (WIP):docusaurus/docs/operate/cheat_sheets/validator_cheatsheet.md diff --git a/docusaurus/docs/operate/run_a_node/hardware_requirements.md b/docusaurus/docs/operate/configs/hardware_requirements.md similarity index 100% rename from docusaurus/docs/operate/run_a_node/hardware_requirements.md rename to docusaurus/docs/operate/configs/hardware_requirements.md diff --git a/docusaurus/docs/operate/quickstart/_category_.json b/docusaurus/docs/operate/quickstart/_category_.json deleted file mode 100644 index 4a8928e1d..000000000 --- a/docusaurus/docs/operate/quickstart/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "Quickstart", - "position": 1, - "link": { - "type": "generated-index", - "description": "Quickstart documentation to start deploying on Shannon." - } -} diff --git a/docusaurus/docs/operate/run_a_node/_category_.json b/docusaurus/docs/operate/run_a_node/_category_.json deleted file mode 100644 index ea46ef992..000000000 --- a/docusaurus/docs/operate/run_a_node/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "Run a Node Walkthroughs", - "position": 3, - "link": { - "type": "generated-index", - "description": "Guides on how to deploy and operated various type of Pocket Network nodes." - } -} diff --git a/docusaurus/docs/operate/walkthroughs/_category_.json b/docusaurus/docs/operate/walkthroughs/_category_.json new file mode 100644 index 000000000..e2c2e3336 --- /dev/null +++ b/docusaurus/docs/operate/walkthroughs/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Stake & Deploy Walkthroughs", + "position": 2, + "link": { + "type": "generated-index", + "description": "Walkthroughs for staking and operating Pocket Network actors." + } +} diff --git a/docusaurus/docs/operate/run_a_node/full_node_docker.md b/docusaurus/docs/operate/walkthroughs/full_node_docker.md similarity index 92% rename from docusaurus/docs/operate/run_a_node/full_node_docker.md rename to docusaurus/docs/operate/walkthroughs/full_node_docker.md index 5f70de6ce..8dbbf03dd 100644 --- a/docusaurus/docs/operate/run_a_node/full_node_docker.md +++ b/docusaurus/docs/operate/walkthroughs/full_node_docker.md @@ -52,11 +52,11 @@ This guide outlines how to configure, deploy and maintain Full Nodes. ## Hardware requirements -Please see the [Hardware Requirements](./hardware_requirements.md#validator--full-node) page. +Please see the [Hardware Requirements](../configs/hardware_requirements.md#validator--full-node) page. ## Docker Compose Example -Please refer to the `Deploying a Full Node` section in [Docker Compose Walkthrough](../quickstart/docker_compose_walkthrough.md) +Please refer to the `Deploying a Full Node` section in [Docker Compose Walkthrough](../cheat_sheet/docker_compose_walkthrough.md) on how to deploy a Full Node using `docker-compose`. ## Kubernetes Example diff --git a/docusaurus/docs/operate/run_a_node/full_node_walkthrough.md b/docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md similarity index 98% rename from docusaurus/docs/operate/run_a_node/full_node_walkthrough.md rename to docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md index 44ab1e221..f5985ee88 100644 --- a/docusaurus/docs/operate/run_a_node/full_node_walkthrough.md +++ b/docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md @@ -11,7 +11,7 @@ configure a Pocket Network Full Node from scratch. :::tip If you're comfortable using an automated scripts, or simply want to _copy-pasta_ a -few commands to get started, check out the [Full Node Cheat Sheet](../quickstart/full_node_cheatsheet.md). +few commands to get started, check out the [Full Node Cheat Sheet](../cheat_sheet/full_node_cheatsheet.md). ::: @@ -130,7 +130,7 @@ source ~/.profile ### 5. Install `poktrolld` -Follow the instructions in the [CLI Installation Guide](../user_guide/poktrolld_cli.md) page to install `poktrolld`. +Follow the instructions in the [CLI Installation Guide](../../tools/user_guide/poktrolld_cli.md) page to install `poktrolld`. Create a symlink of the binary so Comosvisor knows where to find it: diff --git a/docusaurus/docs/operate/run_a_node/gateway_walkthrough.md b/docusaurus/docs/operate/walkthroughs/gateway_walkthrough.md similarity index 94% rename from docusaurus/docs/operate/run_a_node/gateway_walkthrough.md rename to docusaurus/docs/operate/walkthroughs/gateway_walkthrough.md index 209feb137..232f6a069 100644 --- a/docusaurus/docs/operate/run_a_node/gateway_walkthrough.md +++ b/docusaurus/docs/operate/walkthroughs/gateway_walkthrough.md @@ -32,7 +32,7 @@ This ensures the necessary infrastructure for blockchain communication is in pla ## Hardware requirements -Please see the [Hardware Requirements](./hardware_requirements.md#path-gateway) page. +Please see the [Hardware Requirements](../configs/hardware_requirements.md#path-gateway) page. ## Docker Compose Example diff --git a/docusaurus/docs/operate/run_a_node/supplier_walkthrough.md b/docusaurus/docs/operate/walkthroughs/supplier_walkthrough.md similarity index 94% rename from docusaurus/docs/operate/run_a_node/supplier_walkthrough.md rename to docusaurus/docs/operate/walkthroughs/supplier_walkthrough.md index ea46f5749..f384f3b97 100644 --- a/docusaurus/docs/operate/run_a_node/supplier_walkthrough.md +++ b/docusaurus/docs/operate/walkthroughs/supplier_walkthrough.md @@ -33,7 +33,7 @@ This ensures the necessary infrastructure for blockchain communication is in pla ## Hardware requirements -Please see the [Hardware Requirements](./hardware_requirements.md#relayminer) page. +Please see the [Hardware Requirements](../configs/hardware_requirements.md#relayminer) page. ## Docker Compose Example diff --git a/docusaurus/docs/operate/run_a_node/validator_walkthrough.md b/docusaurus/docs/operate/walkthroughs/validator_walkthrough.md similarity index 92% rename from docusaurus/docs/operate/run_a_node/validator_walkthrough.md rename to docusaurus/docs/operate/walkthroughs/validator_walkthrough.md index ea93da23b..5afc550fa 100644 --- a/docusaurus/docs/operate/run_a_node/validator_walkthrough.md +++ b/docusaurus/docs/operate/walkthroughs/validator_walkthrough.md @@ -7,7 +7,12 @@ This walkthrough provides detailed step-by-step instructions to stake and run a :::tip +<<<<<<< HEAD:docusaurus/docs/operate/run_a_node/validator_walkthrough.md If you're interested in a simple guide with _copy-pasta_ of a few commands to get started, check out the [Validator Cheat Sheet](../quickstart/validator_cheatsheet.md) instead. +======= +If you're comfortable using an automated scripts, or simply want to _copy-pasta_ a +few commands to get started, check out the [Validator Cheat Sheet](../cheat_sheet/validator_cheatsheet.md). +>>>>>>> 2e49d7c64 (WIP):docusaurus/docs/operate/walkthroughs/validator_walkthrough.md ::: @@ -31,6 +36,7 @@ This guide will help you stake and run a Validator node on Pocket Network, from As a Validator, you'll be participating in the consensus of the network, validating transactions, and securing the blockchain. +<<<<<<< HEAD:docusaurus/docs/operate/run_a_node/validator_walkthrough.md ## Prerequisites **Run a Full Node**: Ensure you have followed the [Full Node Walkthrough](./full_node_walkthrough.md) to install and run a Full Node. Your node must be fully synced with the network before proceeding. @@ -232,3 +238,6 @@ Here are some useful commands for managing your Validator: --- Congratulations! You have successfully set up and run a Validator on Pocket Network. Remember to stay engaged with the community and keep your node running smoothly to contribute to the network's security and decentralization. +======= +1. **Run a Full Node**: Make sure you have followed the [Full Node Walkthrough](full_node_walkthrough.md) to install and run a Full Node first +>>>>>>> 2e49d7c64 (WIP):docusaurus/docs/operate/walkthroughs/validator_walkthrough.md diff --git a/docusaurus/docs/protocol/upgrades/protocol_upgrades.md b/docusaurus/docs/protocol/upgrades/protocol_upgrades.md index 684bc8e7a..b61e699c5 100644 --- a/docusaurus/docs/protocol/upgrades/protocol_upgrades.md +++ b/docusaurus/docs/protocol/upgrades/protocol_upgrades.md @@ -5,7 +5,7 @@ sidebar_position: 1 # Protocol Upgrades -Pocket Network is continuously evolving through regular protocol upgrades. We implement software upgrades via a DAO process, allowing validator nodes to incorporate consensus-breaking changes. These upgrades can be automatically applied when using [Cosmovisor](../../operate/run_a_node/full_node_walkthrough.md), or manually if not using `cosmovisor`. +Pocket Network is continuously evolving through regular protocol upgrades. We implement software upgrades via a DAO process, allowing validator nodes to incorporate consensus-breaking changes. These upgrades can be automatically applied when using [Cosmovisor](../../operate/walkthroughs/full_node_walkthrough.md), or manually if not using `cosmovisor`. - [What is a Protocol Upgrade?](#what-is-a-protocol-upgrade) - [List of Upgrades](#list-of-upgrades) diff --git a/docusaurus/docs/protocol/upgrades/release_process.md b/docusaurus/docs/protocol/upgrades/release_process.md index 398d56c05..dd0701574 100644 --- a/docusaurus/docs/protocol/upgrades/release_process.md +++ b/docusaurus/docs/protocol/upgrades/release_process.md @@ -28,7 +28,7 @@ TODO(#791): The process of adding the `consensus-breaking` label is still not fo If any exist, assume the release will require an upgrade. [Here is a link](https://github.com/pokt-network/poktroll/pulls?q=sort%3Aupdated-desc+is%3Apr+is%3Amerged+label%3Aconsensus-breaking) for convenience. -- **Verify a Full Node**: Deploy a Full Node on TestNet and allow it to sync and operate for a few days to verify that no accidentally introduced consensus-breaking changes affect the ability to sync. See the instructions in the [Quickstart Guide](../../operate/quickstart/docker_compose_debian_cheatsheet.md) for deploying a Full Node. +- **Verify a Full Node**: Deploy a Full Node on TestNet and allow it to sync and operate for a few days to verify that no accidentally introduced consensus-breaking changes affect the ability to sync. See the instructions in the [Quickstart Guide](../../operate/cheat_sheet/docker_compose_debian_cheatsheet.md) for deploying a Full Node. - **Update Upgrade List**: If the new release includes an upgrade transaction for automatic upgrades, add the new release to the table in the [Upgrades List](./upgrade_list.md). diff --git a/docusaurus/docs/protocol/upgrades/upgrade_procedure.md b/docusaurus/docs/protocol/upgrades/upgrade_procedure.md index 91dfc12bf..855f0ae0e 100644 --- a/docusaurus/docs/protocol/upgrades/upgrade_procedure.md +++ b/docusaurus/docs/protocol/upgrades/upgrade_procedure.md @@ -37,7 +37,7 @@ This process involves several key steps: 2. **Implementation**: The proposed changes are implemented in the codebase. 3. **Testing**: Thorough testing of the proposed changes is conducted in devnet and testnet environments before mainnet deployment. 4. **Announcement**: Upon successful testing, we announce the upgrade through our social media channels and community forums. -5. **Deployment**: An upgrade transaction is sent to the network, allowing node operators using [Cosmovisor](../../operate/run_a_node/full_node_walkthrough.md) to automatically upgrade their nodes at the specified block height. +5. **Deployment**: An upgrade transaction is sent to the network, allowing node operators using [Cosmovisor](../../operate/walkthroughs/full_node_walkthrough.md) to automatically upgrade their nodes at the specified block height. 6. **Monitoring**: Post-deployment, we closely monitor the network to ensure everything functions as expected. ## When is an Upgrade Warranted? @@ -259,7 +259,7 @@ We use Kubernetes to manage software versions, including validators. Introducing ### TestNet Upgrades -We currently deploy TestNet validators using Kubernetes with helm charts, which prevents us from managing the validator with `cosmovisor`. We do not control what other TestNet participants are running. However, if participants have deployed their nodes using the [cosmovisor guide](../../operate/run_a_node/full_node_walkthrough.md), their nodes will upgrade automatically. +We currently deploy TestNet validators using Kubernetes with helm charts, which prevents us from managing the validator with `cosmovisor`. We do not control what other TestNet participants are running. However, if participants have deployed their nodes using the [cosmovisor guide](../../operate/walkthroughs/full_node_walkthrough.md), their nodes will upgrade automatically. Until we transition to [cosmos-operator](https://github.com/strangelove-ventures/cosmos-operator), which supports scheduled upgrades (although not fully automatic like `cosmovisor`), we need to manually manage the process: diff --git a/docusaurus/docs/explore/_category_.json b/docusaurus/docs/tools/_category_.json similarity index 100% rename from docusaurus/docs/explore/_category_.json rename to docusaurus/docs/tools/_category_.json diff --git a/docusaurus/docs/explore/genesis.md b/docusaurus/docs/tools/genesis.md similarity index 100% rename from docusaurus/docs/explore/genesis.md rename to docusaurus/docs/tools/genesis.md diff --git a/docusaurus/docs/explore/rpc.md b/docusaurus/docs/tools/rpc.md similarity index 100% rename from docusaurus/docs/explore/rpc.md rename to docusaurus/docs/tools/rpc.md diff --git a/docusaurus/docs/explore/tools.md b/docusaurus/docs/tools/tools.md similarity index 100% rename from docusaurus/docs/explore/tools.md rename to docusaurus/docs/tools/tools.md diff --git a/docusaurus/docs/operate/user_guide/_category_.json b/docusaurus/docs/tools/user_guide/_category_.json similarity index 100% rename from docusaurus/docs/operate/user_guide/_category_.json rename to docusaurus/docs/tools/user_guide/_category_.json diff --git a/docusaurus/docs/operate/user_guide/app-transfer.md b/docusaurus/docs/tools/user_guide/app-transfer.md similarity index 100% rename from docusaurus/docs/operate/user_guide/app-transfer.md rename to docusaurus/docs/tools/user_guide/app-transfer.md diff --git a/docusaurus/docs/operate/user_guide/check-balance.md b/docusaurus/docs/tools/user_guide/check-balance.md similarity index 100% rename from docusaurus/docs/operate/user_guide/check-balance.md rename to docusaurus/docs/tools/user_guide/check-balance.md diff --git a/docusaurus/docs/operate/user_guide/create-new-wallet.md b/docusaurus/docs/tools/user_guide/create-new-wallet.md similarity index 100% rename from docusaurus/docs/operate/user_guide/create-new-wallet.md rename to docusaurus/docs/tools/user_guide/create-new-wallet.md diff --git a/docusaurus/docs/operate/user_guide/poktrolld_cli.md b/docusaurus/docs/tools/user_guide/poktrolld_cli.md similarity index 100% rename from docusaurus/docs/operate/user_guide/poktrolld_cli.md rename to docusaurus/docs/tools/user_guide/poktrolld_cli.md diff --git a/docusaurus/docs/operate/user_guide/recover-with-mnemonic.md b/docusaurus/docs/tools/user_guide/recover-with-mnemonic.md similarity index 100% rename from docusaurus/docs/operate/user_guide/recover-with-mnemonic.md rename to docusaurus/docs/tools/user_guide/recover-with-mnemonic.md diff --git a/docusaurus/docs/operate/user_guide/send-tokens.md b/docusaurus/docs/tools/user_guide/send-tokens.md similarity index 100% rename from docusaurus/docs/operate/user_guide/send-tokens.md rename to docusaurus/docs/tools/user_guide/send-tokens.md diff --git a/docusaurus/docusaurus.config.js b/docusaurus/docusaurus.config.js index 288e013b8..89c43ab15 100644 --- a/docusaurus/docusaurus.config.js +++ b/docusaurus/docusaurus.config.js @@ -83,14 +83,13 @@ const config = { ({ docs: { sidebar: { - hideable: false, - autoCollapseCategories: false, + hideable: true, + autoCollapseCategories: true, }, }, - // image: "img/docusaurus-social-card.jpg", style: "dark", navbar: { - title: "Pocket Network", + // title: "Pocket Network", logo: { alt: "Pocket Network Logo", src: "img/logo.png", @@ -100,25 +99,25 @@ const config = { type: "docSidebar", position: "left", sidebarId: "operateSidebar", - label: "βš™οΈ Operate", + label: "βš™οΈ Guides & Deployment", }, { type: "docSidebar", position: "left", - sidebarId: "developSidebar", - label: "πŸ’» Develop", + sidebarId: "toolsSidebar", + label: "πŸ—Ί Tools & Explorers", }, { type: "docSidebar", position: "left", - sidebarId: "protocolSidebar", - label: "🧠 Protocol", + sidebarId: "developSidebar", + label: "πŸ§‘β€πŸ’»οΈ Core Developers", }, { type: "docSidebar", position: "left", - sidebarId: "exploreSidebar", - label: "πŸ—Ί Explore", + sidebarId: "protocolSidebar", + label: "🧠 Protocol Specification", }, ], }, diff --git a/docusaurus/sidebars.js b/docusaurus/sidebars.js index 1984be244..3090a3837 100644 --- a/docusaurus/sidebars.js +++ b/docusaurus/sidebars.js @@ -20,10 +20,10 @@ const sidebars = { dirName: "protocol", }, ], - exploreSidebar: [ + toolsSidebar: [ { type: "autogenerated", - dirName: "explore", + dirName: "tools", }, ], }; diff --git a/docusaurus/static/img/logo-large-white.png b/docusaurus/static/img/logo-large-white.png new file mode 100644 index 0000000000000000000000000000000000000000..c59c8f885180e7eea0dc71040e616dfea915dccf GIT binary patch literal 14066 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 literal 0 HcmV?d00001 diff --git a/docusaurus/static/img/logo-monochrome-black.png b/docusaurus/static/img/logo-monochrome-black.png new file mode 100644 index 0000000000000000000000000000000000000000..0a2deb17e4add43e7dd4015c53e05a380154dc8f GIT binary patch literal 12694 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 Y)0Efv&o{M$|7Zbds_DY=@0thvAMaQDm;e9( literal 0 HcmV?d00001 diff --git a/docusaurus/static/img/logo-monochrome-white.png b/docusaurus/static/img/logo-monochrome-white.png new file mode 100644 index 0000000000000000000000000000000000000000..2bc6495ba5e5f49fd7d493fe15f54d6842abd63f GIT binary patch literal 11750 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 literal 0 HcmV?d00001 diff --git a/docusaurus/static/img/logo.png b/docusaurus/static/img/logo.png index 3ccb91ef1681054ba4d36811537ede87e0e16eed..c59c8f885180e7eea0dc71040e616dfea915dccf 100644 GIT binary patch literal 14066 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 diff --git a/tools/installer/full-node.sh b/tools/installer/full-node.sh index f6c2abdb0..3b911b203 100644 --- a/tools/installer/full-node.sh +++ b/tools/installer/full-node.sh @@ -26,24 +26,61 @@ check_root() { fi } -# Function to install jq if not installed -install_jq() { - if ! command -v jq &>/dev/null; then - print_color $YELLOW "Installing jq..." - if [ -f /etc/debian_version ]; then - apt-get update - apt-get install -y jq - elif [ -f /etc/redhat-release ]; then - yum update -y - yum install -y jq +# Function to check and install dependencies +install_dependencies() { + local missing_deps=0 + local deps=("jq" "curl" "tar" "wget") + local to_install=() + + # Check which dependencies are missing + for dep in "${deps[@]}"; do + if ! command -v "$dep" &>/dev/null; then + print_color $YELLOW "$dep is not installed." + to_install+=("$dep") + ((missing_deps++)) else - print_color $RED "Unsupported distribution. Please install jq manually." - exit 1 + print_color $GREEN "$dep is already installed." fi - print_color $GREEN "jq installed successfully." + done + + # If no dependencies are missing, we're done + if [ $missing_deps -eq 0 ]; then + print_color $GREEN "All dependencies are already installed." + return 0 + fi + + # Try to install missing dependencies + print_color $YELLOW "Installing missing dependencies: ${to_install[*]}" + + if [ -f /etc/debian_version ]; then + apt-get update + apt-get install -y "${to_install[@]}" + elif [ -f /etc/redhat-release ]; then + yum update -y + yum install -y "${to_install[@]}" else - print_color $YELLOW "jq is already installed." + print_color $RED "Unsupported distribution. Please install ${to_install[*]} manually." + return 1 + fi + + # Verify all dependencies were installed successfully + missing_deps=0 + for dep in "${to_install[@]}"; do + if ! command -v "$dep" &>/dev/null; then + print_color $RED "Failed to install $dep" + ((missing_deps++)) + else + print_color $GREEN "$dep installed successfully." + fi + done + + if [ $missing_deps -gt 0 ]; then + print_color $RED "Some dependencies failed to install." + return 1 fi + + print_color $GREEN "All dependencies installed successfully." + return 0 } # Function to get user input @@ -129,22 +166,6 @@ create_user() { fi } -# Function to install dependencies -install_dependencies() { - print_color $YELLOW "Installing dependencies..." - if [ -f /etc/debian_version ]; then - apt-get update - apt-get install -y curl tar wget - elif [ -f /etc/redhat-release ]; then - yum update -y - yum install -y curl tar wget - else - print_color $RED "Unsupported distribution. Please install curl, tar and wget manually." - exit 1 - fi - print_color $GREEN "Dependencies installed successfully." -} - # TODO_TECHDEBT(@okdas): Use `.poktrollrc` across the board to create a clean # separation of concerns for pocket specific configurations and debugging. # Function to set up environment variables @@ -341,10 +362,9 @@ configure_ufw() { main() { print_color $GREEN "Welcome to the Poktroll Full Node Install Script!" check_root - install_jq + install_dependencies get_user_input create_user - install_dependencies setup_env_vars setup_cosmovisor setup_poktrolld From d160ee05464de24dc391372ce538c71e4a1a01b8 Mon Sep 17 00:00:00 2001 From: Daniel Olshansky Date: Wed, 5 Feb 2025 21:37:46 -0800 Subject: [PATCH 10/11] Full Node cheat sheet works --- .../cheat_sheets/full_node_cheatsheet.md | 81 ++++---- docusaurus/docs/operate/faq/_category_.json | 8 + docusaurus/docs/operate/faq/full_node_faq.md | 111 ++++++++++ .../walkthroughs/full_node_walkthrough.md | 190 ++++-------------- tools/installer/full-node.sh | 84 ++++++-- 5 files changed, 262 insertions(+), 212 deletions(-) create mode 100644 docusaurus/docs/operate/faq/_category_.json create mode 100644 docusaurus/docs/operate/faq/full_node_faq.md diff --git a/docusaurus/docs/operate/cheat_sheets/full_node_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/full_node_cheatsheet.md index a6d884481..36e4124e2 100644 --- a/docusaurus/docs/operate/cheat_sheets/full_node_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/full_node_cheatsheet.md @@ -16,12 +16,11 @@ See the [Full Node Walkthrough](../walkthroughs/full_node_walkthrough.md) if you ## Table of Contents - [Introduction - why run a Full Node?](#introduction---why-run-a-full-node) -- [Pre-Requisites](#pre-requisites) +- [Pre-Requisites \& Requirements](#pre-requisites--requirements) - [Install and Run a Full Node using Cosmovisor](#install-and-run-a-full-node-using-cosmovisor) - - [Automatic Upgrades Out of the Box](#automatic-upgrades-out-of-the-box) - - [Verify successful installation (curl latest block)](#verify-successful-installation-curl-latest-block) -- [FAQ \& Troubleshooting](#faq--troubleshooting) -- [\[OPTIONAL\] Do you care to know what just happened?](#optional-do-you-care-to-know-what-just-happened) + - [Verify successful installation using `curl`](#verify-successful-installation-using-curl) + - [How are automatic upgrades handled out of the box?](#how-are-automatic-upgrades-handled-out-of-the-box) +- [Do you care to know what just happened?](#do-you-care-to-know-what-just-happened) ## Introduction - why run a Full Node? @@ -30,7 +29,10 @@ This guide will help you install a Full Node for Pocket Network Running a Full Node is the first step toward becoming a Validator, Supplier, or Gateway. -## Pre-Requisites +The instructions outlined here use [Cosmovisor](https://docs.cosmos.network/v0.45/run-node/cosmovisor.html) +to enable automatic binary upgrades. + +## Pre-Requisites & Requirements 1. **Linux-based System**: Ensure you have a Debian-based Linux distribution. 2. **Root or Sudo Access**: You need administrative privileges to run the installation script. @@ -59,34 +61,29 @@ Follow the instructions below to **quickly** install and set up a Full Node: 3. **Follow the Prompts**: - - **Choose the Network**: Select `testnet-alpha`, `testnet-beta`, or `mainnet`. - - **Set Username**: Input the desired username to run `poktrolld` (default: `poktroll`). - - **Set Node Moniker**: Input the node moniker (default: your `hostname`). - - **Confirm Seeds and Genesis File**: The script fetches seeds and the genesis file automatically. - - **External IP Address**: The script detects your external IP address. Confirm or input manually if incorrect. + 1. **Choose the Network**: Select `testnet-alpha`, `testnet-beta`, or `mainnet`. + 2. **Set Username**: Input the desired username to run `poktrolld` (default: `poktroll`). + 3. **Set Node Moniker**: Input the node moniker (default: your `hostname`). + 4. **Confirm Seeds and Genesis File**: The script fetches seeds and the genesis file automatically. + 5. **External IP Address**: The script detects your external IP address. Confirm or input manually if incorrect. -### Automatic Upgrades Out of the Box +### Verify successful installation using `curl` -Your node is configured to handle chain upgrades automatically through Cosmovisor. No manual intervention is required for standard upgrades. +We are going to use `curl` to query the latest block to verify the installation was successful. -When a chain upgrade is proposed and approved: +Running the following command will return the latest synched block height: -1. Cosmovisor will download the new binary -2. The node will stop at the designated upgrade height -3. Cosmovisor will switch to the new binary -4. The node will restart automatically - -### Verify successful installation (curl latest block) - -You can verify the installation was successful by querying the latest block (i.e. checking the node height). +```bash +curl -X GET http://localhost:26657/block | jq '.result.block.header.height' +``` -Running the following command: +Or the following command to get the entire block: ```bash curl -X GET http://localhost:26657/block | jq ``` -Should provide a response in this form: +Which should return a response similar to the following format: ```json { @@ -156,15 +153,23 @@ Should provide a response in this form: } ``` -## FAQ & Troubleshooting +### How are automatic upgrades handled out of the box? -See the [FAQ & Troubleshooting section in the Full Node Walkthrough](../walkthroughs/full_node_walkthrough.md#faq--troubleshooting) -for examples of useful commands, common debugging instructions and other advanced usage. +Your node is configured to handle chain upgrades automatically through Cosmovisor. No manual intervention is required for standard upgrades. -## [OPTIONAL] Do you care to know what just happened? +When a chain upgrade is proposed and approved: + +1. Cosmovisor will download the new binary +2. The node will stop at the designated upgrade height +3. Cosmovisor will switch to the new binary +4. The node will restart automatically + +## Do you care to know what just happened? + +:::info Optional reading for the curious -:::info This section is optional and for informational purposes only. + ::: If you're interested in understanding what just got installed, keep reading... @@ -173,17 +178,17 @@ If you're interested in understanding what just got installed, keep reading... 2. **Cosmovisor**: A binary manager that handles chain upgrades automatically: - - Location: `/home/poktroll/bin/cosmovisor` - - Purpose: Manages different versions of `poktrolld` and handles chain upgrades - - Configuration: Set up to automatically download and switch to new binaries during upgrades + - **Location**: `/home/poktroll/bin/cosmovisor` + - **Purpose**: Manages different versions of `poktrolld` and handles chain upgrades + - **Configuration**: Set up to automatically download and switch to new binaries during upgrades 3. **Poktrolld**: The core node software: - - Location: `/home/poktroll/.poktroll/cosmovisor/genesis/bin/poktrolld` - - Configuration: `/home/poktroll/.poktroll/config/` - - Data: `/home/poktroll/.poktroll/data/` + - **Location**: `/home/poktroll/.poktroll/cosmovisor/genesis/bin/poktrolld` + - **Configuration**: `/home/poktroll/.poktroll/config/` + - **Data**: `/home/poktroll/.poktroll/data/` 4. **Systemd Service**: A service that manages the node: - - Name: `cosmovisor.service` - - Status: Enabled and started automatically - - Configured for automatic restarts and upgrades + - **Name**: `cosmovisor.service` + - **Status**: Enabled and started automatically + - **Configured** for automatic restarts and upgrades diff --git a/docusaurus/docs/operate/faq/_category_.json b/docusaurus/docs/operate/faq/_category_.json new file mode 100644 index 000000000..ab2dd17d1 --- /dev/null +++ b/docusaurus/docs/operate/faq/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "FAQ & Troubleshooting", + "position": 4, + "link": { + "type": "generated-index", + "description": "Frequently Asked Questions (FAQ) & Troubleshooting" + } +} diff --git a/docusaurus/docs/operate/faq/full_node_faq.md b/docusaurus/docs/operate/faq/full_node_faq.md new file mode 100644 index 000000000..2760642e8 --- /dev/null +++ b/docusaurus/docs/operate/faq/full_node_faq.md @@ -0,0 +1,111 @@ +--- +sidebar_position: 1 +title: Full Node FAQ +--- + +## How do I check the node is accessible from another machine? + +```bash +nc -vz {EXTERNAL_IP} 26656 +``` + +## How do I view the node status? + +```bash +sudo systemctl status cosmovisor.service +``` + +## How do I view the node logs? + +```bash +sudo journalctl -u cosmovisor.service -f +``` + +## How do I stop my node? + +```bash +sudo systemctl stop cosmovisor.service +``` + +## How do I start my node? + +```bash +sudo systemctl start cosmovisor.service +``` + +## How do I restart my node? + +```bash +sudo systemctl restart cosmovisor.service +``` + +## How do I query the latest block (i.e. check the node height)? + +Using poktrolld: + +```bash +poktrolld query block --type=height --node http://localhost:26657 +``` + +Or, using curl: + +```bash +curl -X GET http://localhost:26657/block | jq +``` + +## How do I access my CometBFT endpoint externally? + +The default CometBFT port is at `26657`. + +To make it accessible externally, you'll need to port all the instructions from +port `26656` on this page to port `26657`. Specifically: + +```bash +# Update your firewall +sudo ufw allow 26657/tcp + +# Alternatively, if ufw is not available, update your iptables +sudo iptables -A INPUT -p tcp --dport 26657 -j ACCEPT + +# Update your Cosmovisor config +sed -i 's|laddr = "tcp://127.0.0.1:26657"|laddr = "tcp://0.0.0.0:26657"|' $HOME/.poktroll/config/config.toml +sed -i 's|cors_allowed_origins = \[\]|cors_allowed_origins = ["*"]|' $HOME/.poktroll/config/config.toml + +# Restart the service +sudo systemctl restart cosmovisor.service + +# Test the connection +nc -vz {EXTERNAL_IP} 26657 +``` + +Learn more [here](https://docs.cometbft.com/main/rpc/). + +:::warning + +Be careful about making this public as adversarial actors may try to DDoS your node. + +::: + +## How do I check the node version? + +```bash +poktrolld version +``` + +## How do I check the Cosmosvisor directory structure? + +```bash +ls -la /home/poktroll/.poktroll/cosmovisor/ +``` + +## How do I check if an upgrade is available? + +```bash +ls -la /home/poktroll/.poktroll/cosmovisor/upgrades/ +``` + +## How do I view node configuration? + +```bash +cat /home/poktroll/.poktroll/config/config.toml +``` diff --git a/docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md b/docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md index f5985ee88..9511c8cbf 100644 --- a/docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md +++ b/docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md @@ -1,63 +1,50 @@ --- title: Full Node Walkthrough -sidebar_position: 2 +sidebar_position: 1 --- -## Run a Full Node Using Systemd & Cosmovisor +**πŸ§‘β€πŸ”¬ detailed step-by-step instructions to get you up and running with a `Full Node` on Pocket Network βœ…** -This walkthrough provides a detailed step-by-step instructions to install and -configure a Pocket Network Full Node from scratch. +:::warning This is an in-depth walkthrough -:::tip - -If you're comfortable using an automated scripts, or simply want to _copy-pasta_ a -few commands to get started, check out the [Full Node Cheat Sheet](../cheat_sheet/full_node_cheatsheet.md). +See the [Full Node Cheat Sheet](../cheat_sheets/full_node_cheatsheet.md) if you want to just copy-pasta a few commands. ::: -- [Introduction](#introduction) -- [Pre-Requisites](#pre-requisites) -- [1. Install Dependencies](#1-install-dependencies) -- [2. Create a New User](#2-create-a-new-user) -- [3. Set Up Environment Variables for Cosmovisor](#3-set-up-environment-variables-for-cosmovisor) +--- + +## Table of Contents + +- [Introduction - why run a Full Node?](#introduction---why-run-a-full-node) +- [Pre-Requisites \& Requirements](#pre-requisites--requirements) +- [Instructions](#instructions) + - [1. Install Dependencies](#1-install-dependencies) + - [2. Create a New User](#2-create-a-new-user) + - [3. Set Up Environment Variables for Cosmovisor](#3-set-up-environment-variables-for-cosmovisor) - [4. Install Cosmovisor](#4-install-cosmovisor) - [5. Install `poktrolld`](#5-install-poktrolld) - [6. Retrieve the latest genesis file](#6-retrieve-the-latest-genesis-file) - [7. Network Configuration](#7-network-configuration) - [8. Set Up `systemd` Service](#8-set-up-systemd-service) - [9. Configure your Firewall](#9-configure-your-firewall) -- [FAQ \& Troubleshooting](#faq--troubleshooting) - - [How do I check the node is accessible from another machine?](#how-do-i-check-the-node-is-accessible-from-another-machine) - - [How do I view the node status?](#how-do-i-view-the-node-status) - - [How do I view the node logs?](#how-do-i-view-the-node-logs) - - [How do I stop my node?](#how-do-i-stop-my-node) - - [How do I start my node?](#how-do-i-start-my-node) - - [How do I restart my node?](#how-do-i-restart-my-node) - - [How do I query the latest block (i.e. check the node height)?](#how-do-i-query-the-latest-block-ie-check-the-node-height) - - [How do I access my CometBFT endpoint externally?](#how-do-i-access-my-cometbft-endpoint-externally) - - [How do I check the node version?](#how-do-i-check-the-node-version) - - [How do I check the Cosmosvisor directory structure?](#how-do-i-check-the-cosmosvisor-directory-structure) - - [How do I check if an upgrade is available?](#how-do-i-check-if-an-upgrade-is-available) - - [How do I view node configuration?](#how-do-i-view-node-configuration) - -### Introduction - -This guide will help you install a Full Node for Pocket Network, from scratch, manually, -**giving you control over each step of the process**. -Running a Full Node is the first step toward becoming a Validator, Supplier, or Gateway. +## Introduction - why run a Full Node? -These instructions are **intended to be run on a Linux machine**. +This guide will guide through, step-by-step, through running a Full Node for Pocket Network. + +Running a Full Node is the first step toward becoming a Validator, Supplier, or Gateway. The instructions outlined here use [Cosmovisor](https://docs.cosmos.network/v0.45/run-node/cosmovisor.html) to enable automatic binary upgrades. -### Pre-Requisites +## Pre-Requisites & Requirements 1. **Linux-based System**: Preferably Debian-based distributions. 2. **Root or Sudo Access**: Administrative privileges are required. 3. **Dedicated Server or Virtual Machine**: Any provider is acceptable. +## Instructions + ### 1. Install Dependencies Update your package list and install necessary dependencies: @@ -89,7 +76,7 @@ sudo su - poktroll ### 3. Set Up Environment Variables for Cosmovisor -Create a `.poktrollrc` file and set environment variables: +Create a `.poktrollrc` file and set the following environment variables: ```bash touch ~/.poktrollrc @@ -104,17 +91,16 @@ echo "source ~/.poktrollrc" >> ~/.profile source ~/.profile ``` -### 4. Install Cosmovisor +## 4. Install Cosmovisor -:::info -Instead of following the instructions below, you can follow the [official cosmovisor installation instructions](https://docs.cosmos.network/main/build/tooling/cosmovisor#installation). -::: +**Option 1**: You can follow the official Cosmovisor installation instructions [here](https://docs.cosmos.network/main/build/tooling/cosmovisor#installation). -Download and install Cosmovisor: +**Option 2**: You can simply copy-paste the following commands to download and install Cosmovisor: ```bash mkdir -p $HOME/.local/bin COSMOVISOR_VERSION="v1.6.0" + ARCH=$(uname -m) if [ "$ARCH" = "x86_64" ]; then ARCH="amd64" @@ -128,7 +114,7 @@ echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.profile source ~/.profile ``` -### 5. Install `poktrolld` +## 5. Install `poktrolld` Follow the instructions in the [CLI Installation Guide](../../tools/user_guide/poktrolld_cli.md) page to install `poktrolld`. @@ -139,7 +125,7 @@ mkdir -p $HOME/.poktroll/cosmovisor/genesis/bin ln -sf $(which poktrolld) $HOME/.poktroll/cosmovisor/genesis/bin/poktrolld ``` -### 6. Retrieve the latest genesis file +## 6. Retrieve the latest genesis file Follow the instructions below to download the latest genesis file. @@ -155,12 +141,15 @@ GENESIS_URL="https://raw.githubusercontent.com/pokt-network/pocket-network-genes curl -s -o $HOME/.poktroll/config/genesis.json "$GENESIS_URL" ``` -### 7. Network Configuration +## 7. Network Configuration :::note You may see a message saying `genesis.json file already exists`. -This is expected since we downloaded the genesis file in Step 5. The initialization will still complete successfully and set up the required configuration files. +This is expected since we downloaded the genesis file in one of the steps above. + +The initialization will still complete successfully and set up the required configuration files. + ::: Run the following commands to configure your network environment appropriately: @@ -182,7 +171,7 @@ EXTERNAL_IP=$(curl -s https://api.ipify.org) sed -i -e "s|^external_address *=.*|external_address = \"${EXTERNAL_IP}:26656\"|" $HOME/.poktroll/config/config.toml ``` -### 8. Set Up `systemd` Service +## 8. Set Up `systemd` Service Create a `systemd` service file to manage the node: @@ -218,7 +207,7 @@ sudo systemctl enable cosmovisor.service sudo systemctl start cosmovisor.service ``` -### 9. Configure your Firewall +## 9. Configure your Firewall To ensure your node can properly participate in the P2P network, you need to make port `26656` accessible from the internet. @@ -243,112 +232,3 @@ This may involve one or more of the following: ```bash nc -vz {EXTERNAL_IP} 26656 ``` - -### FAQ & Troubleshooting - -#### How do I check the node is accessible from another machine? - -```bash -nc -vz {EXTERNAL_IP} 26656 -``` - -#### How do I view the node status? - -```bash -sudo systemctl status cosmovisor.service -``` - -#### How do I view the node logs? - -```bash -sudo journalctl -u cosmovisor.service -f -``` - -#### How do I stop my node? - -```bash -sudo systemctl stop cosmovisor.service -``` - -#### How do I start my node? - -```bash -sudo systemctl start cosmovisor.service -``` - -#### How do I restart my node? - -```bash -sudo systemctl restart cosmovisor.service -``` - -#### How do I query the latest block (i.e. check the node height)? - -Using poktrolld: - -```bash -poktrolld query block --type=height --node http://localhost:26657 -``` - -Or, using curl: - -```bash -curl -X GET http://localhost:26657/block | jq -``` - -#### How do I access my CometBFT endpoint externally? - -The default CometBFT port is at `26657`. - -To make it accessible externally, you'll need to port all the instructions from -port `26656` on this page to port `26657`. Specifically: - -```bash -# Update your firewall -sudo ufw allow 26657/tcp - -# Alternatively, if ufw is not available, update your iptables -sudo iptables -A INPUT -p tcp --dport 26657 -j ACCEPT - -# Update your Cosmovisor config -sed -i 's|laddr = "tcp://127.0.0.1:26657"|laddr = "tcp://0.0.0.0:26657"|' $HOME/.poktroll/config/config.toml -sed -i 's|cors_allowed_origins = \[\]|cors_allowed_origins = ["*"]|' $HOME/.poktroll/config/config.toml - -# Restart the service -sudo systemctl restart cosmovisor.service - -# Test the connection -nc -vz {EXTERNAL_IP} 26657 -``` - -Learn more [here](https://docs.cometbft.com/main/rpc/). - -:::warning - -Be careful about making this public as adversarial actors may try to DDoS your node. - -::: - -#### How do I check the node version? - -```bash -poktrolld version -``` - -#### How do I check the Cosmosvisor directory structure? - -```bash -ls -la /home/poktroll/.poktroll/cosmovisor/ -``` - -#### How do I check if an upgrade is available? - -```bash -ls -la /home/poktroll/.poktroll/cosmovisor/upgrades/ -``` - -#### How do I view node configuration? - -```bash -cat /home/poktroll/.poktroll/config/config.toml -``` diff --git a/tools/installer/full-node.sh b/tools/installer/full-node.sh index 3b911b203..0da23964d 100644 --- a/tools/installer/full-node.sh +++ b/tools/installer/full-node.sh @@ -26,12 +26,52 @@ check_root() { fi } +# Function to get and normalize architecture +get_normalized_arch() { + local arch + arch=$(uname -m) + + if [ "$arch" = "x86_64" ]; then + echo "amd64" + elif [ "$arch" = "aarch64" ] || [ "$arch" = "arm64" ]; then + echo "arm64" + else + print_color $RED "Unsupported architecture: $arch" + exit 1 + fi +} + +check_os() { + local os + os=$(uname -s) + + if [ "$os" = "Darwin" ]; then + print_color $RED "This script is not supported on macOS/Darwin." + print_color $RED "Please use a Linux distribution." + exit 1 + fi +} + +get_os_type() { + uname_out="$(uname -s)" + + if [ "$uname_out" = "Linux" ]; then + echo "linux" + elif [ "$uname_out" = "Darwin" ]; then + echo "darwin" + else + echo "unsupported" + fi +} + # Function to check and install dependencies install_dependencies() { local missing_deps=0 local deps=("jq" "curl" "tar" "wget") local to_install=() + print_color $YELLOW "About to start installing dependencies..." + # Check which dependencies are missing for dep in "${deps[@]}"; do if ! command -v "$dep" &>/dev/null; then @@ -79,13 +119,14 @@ install_dependencies() { return 1 fi - print_color $GREEN "All dependencies installed successfully." + print_color $YELLOW "All dependencies installed successfully." return 0 } # Function to get user input get_user_input() { # Ask user which network to install + echo "" echo "Which network would you like to install?" echo "1) testnet-alpha (unstable)" echo "2) testnet-beta (recommended)" @@ -103,7 +144,9 @@ get_user_input() { esac print_color $GREEN "Installing the $NETWORK network." + echo "" + print_color $YELLOW "(NOTE: If you're on a macOS, enter the name of an existing user)" read -p "Enter the desired username to run poktrolld (default: poktroll): " POKTROLL_USER POKTROLL_USER=${POKTROLL_USER:-poktroll} @@ -129,6 +172,7 @@ get_user_input() { print_color $RED "Failed to extract chain_id from genesis file." exit 1 fi + echo "" print_color $GREEN "Using chain_id: $CHAIN_ID from genesis file" # Fetch seeds from the provided URL @@ -145,6 +189,7 @@ get_user_input() { read -p "Enter custom seeds: " custom_seeds SEEDS=${custom_seeds:-$SEEDS} fi + echo "" } # Function to create user @@ -180,23 +225,25 @@ setup_env_vars() { source \$HOME/.profile EOF print_color $GREEN "Environment variables set up successfully." + echo "" } # Function to download and set up Cosmovisor setup_cosmovisor() { print_color $YELLOW "Setting up Cosmovisor..." - ARCH=$(uname -m) - if [ "$ARCH" = "x86_64" ]; then - ARCH="amd64" - elif [ "$ARCH" = "aarch64" ]; then - ARCH="arm64" - else - print_color $RED "Unsupported architecture: $ARCH" + + ARCH=$(get_normalized_arch) + OS_TYPE=$(get_os_type) + + if [ "$OS_TYPE" = "unsupported" ]; then + echo "Unsupported OS: $(uname -s)" exit 1 fi COSMOVISOR_VERSION="v1.6.0" + # COSMOVISOR_URL="https://github.com/cosmos/cosmos-sdk/releases/download/cosmovisor%2F${COSMOVISOR_VERSION}/cosmovisor-${COSMOVISOR_VERSION}-${OS_TYPE}-${ARCH}.tar.gz" COSMOVISOR_URL="https://github.com/cosmos/cosmos-sdk/releases/download/cosmovisor%2F${COSMOVISOR_VERSION}/cosmovisor-${COSMOVISOR_VERSION}-linux-${ARCH}.tar.gz" + print_color $YELLOW "Attempting to download from: $COSMOVISOR_URL" sudo -u "$POKTROLL_USER" bash < Date: Wed, 5 Feb 2025 22:18:03 -0800 Subject: [PATCH 11/11] Moved everything else aroudn in prep for future cleanup --- .../develop/developer_guide/_category_.json | 2 +- .../pocketdex_indexer.md} | 2 +- .../develop/developer_guide/walkthrough.md | 6 +-- .../docs/develop/e2e_testing/_category_.json | 8 +++ .../{testing => e2e_testing}/load_testing.md | 4 +- .../load_testing_devnet.md | 6 +-- .../load_testing_plan_1.md | 0 .../load_testing_testnet.md | 0 .../docs/develop/localnet/_category_.json | 8 --- .../_category_.json | 2 +- .../access_dashboard_on_service.png | Bin .../{infrastructure => networks}/devnet.md | 0 .../gcp_workloads.png | Bin .../grafana_explore_logs.png | Bin .../grafana_save_dashboard.png | Bin .../{infrastructure => networks}/localnet.md | 0 .../private_testnet.md | 0 .../repositories.md | 0 .../{infrastructure => networks}/testnet.md | 0 .../docs/develop/packages/_category_.json | 2 +- .../docs/develop/testing/_category_.json | 6 +-- .../testing/app_integration.md | 0 .../{developer_guide => }/testing/e2e.md | 0 .../testing/in_memory_integration.md | 0 .../testing/integration_suites.md | 0 .../testing/module_integration.md | 0 .../testing/testing_levels.md | 0 .../docker_compose_debian_cheatsheet.md | 2 +- .../docker_compose_walkthrough.md | 2 +- .../cheat_sheets/gateway_cheatsheet.md | 2 +- .../cheat_sheets/supplier_cheatsheet.md | 2 +- .../upgrades/_category_.json | 4 +- .../upgrades}/chain_halt_troubleshooting.md | 6 +-- .../upgrades/contigency_plans.md | 2 +- .../upgrades/module_params.md | 0 .../upgrades/protocol_upgrades.md | 4 +- .../upgrades}/recovery_from_chain_halt.md | 10 ++-- .../upgrades/release_process.md | 0 .../upgrades/upgrade_list.md | 0 .../upgrades/upgrade_procedure.md | 0 .../walkthroughs/full_node_walkthrough.md | 24 ++++----- .../docs/protocol/actors/_category_.json | 2 +- docusaurus/docs/protocol/governance/params.md | 51 +++++++++--------- .../docs/tools/endpoints/_category_.json | 8 +++ .../{rpc.md => endpoints/shannon_rpc.md} | 7 ++- docusaurus/docs/tools/genesis.md | 8 --- docusaurus/docs/tools/tools.md | 33 ------------ docusaurus/docs/tools/tools/_category_.json | 8 +++ docusaurus/docs/tools/tools/shannon_alpha.md | 9 ++++ docusaurus/docs/tools/tools/shannon_beta.md | 9 ++++ docusaurus/docs/tools/tools/source_code.md | 7 +++ .../docs/tools/user_guide/_category_.json | 6 +-- .../docs/tools/user_guide/app-transfer.md | 4 +- .../docs/tools/user_guide/check-balance.md | 2 +- .../tools/user_guide/create-new-wallet.md | 2 +- .../docs/tools/user_guide/poktrolld_cli.md | 4 +- .../tools/user_guide/recover-with-mnemonic.md | 2 +- .../docs/tools/user_guide/send-tokens.md | 2 +- .../scripts/docusaurus/params_doc_template.md | 12 ++--- 59 files changed, 141 insertions(+), 139 deletions(-) rename docusaurus/docs/develop/{localnet/observability.md => developer_guide/pocketdex_indexer.md} (99%) create mode 100644 docusaurus/docs/develop/e2e_testing/_category_.json rename docusaurus/docs/develop/{testing => e2e_testing}/load_testing.md (97%) rename docusaurus/docs/develop/{testing => e2e_testing}/load_testing_devnet.md (93%) rename docusaurus/docs/develop/{testing => e2e_testing}/load_testing_plan_1.md (100%) rename docusaurus/docs/develop/{testing => e2e_testing}/load_testing_testnet.md (100%) delete mode 100644 docusaurus/docs/develop/localnet/_category_.json rename docusaurus/docs/develop/{infrastructure => networks}/_category_.json (92%) rename docusaurus/docs/develop/{infrastructure => networks}/access_dashboard_on_service.png (100%) rename docusaurus/docs/develop/{infrastructure => networks}/devnet.md (100%) rename docusaurus/docs/develop/{infrastructure => networks}/gcp_workloads.png (100%) rename docusaurus/docs/develop/{infrastructure => networks}/grafana_explore_logs.png (100%) rename docusaurus/docs/develop/{infrastructure => networks}/grafana_save_dashboard.png (100%) rename docusaurus/docs/develop/{infrastructure => networks}/localnet.md (100%) rename docusaurus/docs/develop/{infrastructure => networks}/private_testnet.md (100%) rename docusaurus/docs/develop/{infrastructure => networks}/repositories.md (100%) rename docusaurus/docs/develop/{infrastructure => networks}/testnet.md (100%) rename docusaurus/docs/develop/{developer_guide => }/testing/app_integration.md (100%) rename docusaurus/docs/develop/{developer_guide => }/testing/e2e.md (100%) rename docusaurus/docs/develop/{developer_guide => }/testing/in_memory_integration.md (100%) rename docusaurus/docs/develop/{developer_guide => }/testing/integration_suites.md (100%) rename docusaurus/docs/develop/{developer_guide => }/testing/module_integration.md (100%) rename docusaurus/docs/develop/{developer_guide => }/testing/testing_levels.md (100%) rename docusaurus/docs/{protocol => operate}/upgrades/_category_.json (72%) rename docusaurus/docs/{develop/developer_guide => operate/upgrades}/chain_halt_troubleshooting.md (96%) rename docusaurus/docs/{protocol => operate}/upgrades/contigency_plans.md (96%) rename docusaurus/docs/{protocol => operate}/upgrades/module_params.md (100%) rename docusaurus/docs/{protocol => operate}/upgrades/protocol_upgrades.md (96%) rename docusaurus/docs/{develop/developer_guide => operate/upgrades}/recovery_from_chain_halt.md (93%) rename docusaurus/docs/{protocol => operate}/upgrades/release_process.md (100%) rename docusaurus/docs/{protocol => operate}/upgrades/upgrade_list.md (100%) rename docusaurus/docs/{protocol => operate}/upgrades/upgrade_procedure.md (100%) create mode 100644 docusaurus/docs/tools/endpoints/_category_.json rename docusaurus/docs/tools/{rpc.md => endpoints/shannon_rpc.md} (89%) delete mode 100644 docusaurus/docs/tools/genesis.md delete mode 100644 docusaurus/docs/tools/tools.md create mode 100644 docusaurus/docs/tools/tools/_category_.json create mode 100644 docusaurus/docs/tools/tools/shannon_alpha.md create mode 100644 docusaurus/docs/tools/tools/shannon_beta.md create mode 100644 docusaurus/docs/tools/tools/source_code.md diff --git a/docusaurus/docs/develop/developer_guide/_category_.json b/docusaurus/docs/develop/developer_guide/_category_.json index ecb8c52b7..315f7c6ec 100644 --- a/docusaurus/docs/develop/developer_guide/_category_.json +++ b/docusaurus/docs/develop/developer_guide/_category_.json @@ -1,6 +1,6 @@ { "label": "Developer Guide", - "position": 2, + "position": 1, "link": { "type": "generated-index", "description": "Documentation related to onboarding as a developer to the Pocket Network protocol." diff --git a/docusaurus/docs/develop/localnet/observability.md b/docusaurus/docs/develop/developer_guide/pocketdex_indexer.md similarity index 99% rename from docusaurus/docs/develop/localnet/observability.md rename to docusaurus/docs/develop/developer_guide/pocketdex_indexer.md index 0879b009b..795ff7267 100644 --- a/docusaurus/docs/develop/localnet/observability.md +++ b/docusaurus/docs/develop/developer_guide/pocketdex_indexer.md @@ -1,5 +1,5 @@ --- -sidebar_position: 1 +sidebar_position: 7 title: Pocketdex Indexer --- diff --git a/docusaurus/docs/develop/developer_guide/walkthrough.md b/docusaurus/docs/develop/developer_guide/walkthrough.md index 34f292d5a..daa43c16f 100644 --- a/docusaurus/docs/develop/developer_guide/walkthrough.md +++ b/docusaurus/docs/develop/developer_guide/walkthrough.md @@ -95,7 +95,7 @@ Install the following dependencies: 6. [Tilt](https://docs.tilt.dev/install.html) - k8s local development tool & environment manager :::note -If you've followed the [LocalNet instructions](../infrastructure/localnet.md), +If you've followed the [LocalNet instructions](../networks/localnet.md), you may already have them installed. ::: @@ -106,7 +106,7 @@ and inspect it so you have an idea of what's going on! We'll be manually configuring a few actors to run in your shell for the sake of the tutorial so you have visibility into the types of onchain and offchain -actors. In practice, you should be using [localnet](../infrastructure/localnet.md) +actors. In practice, you should be using [localnet](../networks/localnet.md) to dynamically scale your actors. To learn more about the different actors type, see the docs [here](../../protocol/actors/actors.md). @@ -653,7 +653,7 @@ We went through a flow of steps above just so you can get a feel for how things That said, you can dynamically scale the number of any actors in LocalNet by ony changing one line! -Go to our [localnet tutorial](../infrastructure/localnet.md) to learn more. +Go to our [localnet tutorial](../networks/localnet.md) to learn more. ## 7. Explore the tools diff --git a/docusaurus/docs/develop/e2e_testing/_category_.json b/docusaurus/docs/develop/e2e_testing/_category_.json new file mode 100644 index 000000000..eca33fb96 --- /dev/null +++ b/docusaurus/docs/develop/e2e_testing/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "E2E Testing", + "position": 4, + "link": { + "type": "generated-index", + "description": "Documentation related to the type of end-to-end testing (load or other) we are doing." + } +} diff --git a/docusaurus/docs/develop/testing/load_testing.md b/docusaurus/docs/develop/e2e_testing/load_testing.md similarity index 97% rename from docusaurus/docs/develop/testing/load_testing.md rename to docusaurus/docs/develop/e2e_testing/load_testing.md index 4063e0314..3b4875fee 100644 --- a/docusaurus/docs/develop/testing/load_testing.md +++ b/docusaurus/docs/develop/e2e_testing/load_testing.md @@ -27,7 +27,7 @@ The load-testing suite is built on [Gherkin](https://cucumber.io/docs/gherkin/), ## Dependencies -- [LocalNet](../infrastructure/localnet.md) (for local suite execution) +- [LocalNet](../networks/localnet.md) (for local suite execution) - [Golang](https://go.dev/dl/) ## Load Test Manifests @@ -63,7 +63,7 @@ This natural language syntax is parsed and used to match and execute the corresp To execute tests on LocalNet: -1. Ensure [LocalNet](../infrastructure/localnet.md) is operational. +1. Ensure [LocalNet](../networks/localnet.md) is operational. 2. In the `localnet_config.yaml` file, set `gateways.count` and `relayminers.count` to `3`. 3. Run `make acc_initialize_pubkeys` to initialize blockchain state public keys. 4. Run `make test_load_relays_stress_localnet` to run the LocalNet stress-test. diff --git a/docusaurus/docs/develop/testing/load_testing_devnet.md b/docusaurus/docs/develop/e2e_testing/load_testing_devnet.md similarity index 93% rename from docusaurus/docs/develop/testing/load_testing_devnet.md rename to docusaurus/docs/develop/e2e_testing/load_testing_devnet.md index dedae1936..105dfa60f 100644 --- a/docusaurus/docs/develop/testing/load_testing_devnet.md +++ b/docusaurus/docs/develop/e2e_testing/load_testing_devnet.md @@ -27,12 +27,12 @@ single instance of each offchain actor. We can create custom DevNets with multip ### 1. Create and configure the DevNet -Please refer to the DevNet creation guide [here](../infrastructure/devnet.md#how-to-create). +Please refer to the DevNet creation guide [here](../networks/devnet.md#how-to-create). ### 2. Stake the necessary actors - Depending on your load testing requirements, you may need to stake one or more `gateways` and `suppliers`. -- [DevNet documentation](../infrastructure/devnet.md#stake-actors) provides more details about staking actors in DevNets. +- [DevNet documentation](../networks/devnet.md#stake-actors) provides more details about staking actors in DevNets. ### 3. Configure the load test manifest @@ -96,7 +96,7 @@ gateways: exposed_url: https://devnet-sophon-gateway-1.poktroll.com - address: pokt15w3fhfyc0lttv7r585e2ncpf6t2kl9uh8rsnyz exposed_url: https://devnet-sophon-gateway-2.poktroll.com - - address: pokt1zhmkkd0rh788mc9prfq0m2h88t9ge0j83gnxya + - address: pokt1zhmkkd0rh788mc9prfq0m2h88t9ge0j83gnxya exposed_url: https://devnet-sophon-gateway-3.poktroll.com ``` diff --git a/docusaurus/docs/develop/testing/load_testing_plan_1.md b/docusaurus/docs/develop/e2e_testing/load_testing_plan_1.md similarity index 100% rename from docusaurus/docs/develop/testing/load_testing_plan_1.md rename to docusaurus/docs/develop/e2e_testing/load_testing_plan_1.md diff --git a/docusaurus/docs/develop/testing/load_testing_testnet.md b/docusaurus/docs/develop/e2e_testing/load_testing_testnet.md similarity index 100% rename from docusaurus/docs/develop/testing/load_testing_testnet.md rename to docusaurus/docs/develop/e2e_testing/load_testing_testnet.md diff --git a/docusaurus/docs/develop/localnet/_category_.json b/docusaurus/docs/develop/localnet/_category_.json deleted file mode 100644 index eeb79d4a7..000000000 --- a/docusaurus/docs/develop/localnet/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "LocalNet", - "position": 9, - "link": { - "type": "generated-index", - "description": "Tips on how to leverage the most out of your LocalNet Environment." - } -} diff --git a/docusaurus/docs/develop/infrastructure/_category_.json b/docusaurus/docs/develop/networks/_category_.json similarity index 92% rename from docusaurus/docs/develop/infrastructure/_category_.json rename to docusaurus/docs/develop/networks/_category_.json index 962324af5..bede72b59 100644 --- a/docusaurus/docs/develop/infrastructure/_category_.json +++ b/docusaurus/docs/develop/networks/_category_.json @@ -1,6 +1,6 @@ { "label": "Networks", - "position": 5, + "position": 3, "link": { "type": "generated-index", "description": "Infrastructure related to deploying, maintaining and testing various (Local, Dev, Test) environments." diff --git a/docusaurus/docs/develop/infrastructure/access_dashboard_on_service.png b/docusaurus/docs/develop/networks/access_dashboard_on_service.png similarity index 100% rename from docusaurus/docs/develop/infrastructure/access_dashboard_on_service.png rename to docusaurus/docs/develop/networks/access_dashboard_on_service.png diff --git a/docusaurus/docs/develop/infrastructure/devnet.md b/docusaurus/docs/develop/networks/devnet.md similarity index 100% rename from docusaurus/docs/develop/infrastructure/devnet.md rename to docusaurus/docs/develop/networks/devnet.md diff --git a/docusaurus/docs/develop/infrastructure/gcp_workloads.png b/docusaurus/docs/develop/networks/gcp_workloads.png similarity index 100% rename from docusaurus/docs/develop/infrastructure/gcp_workloads.png rename to docusaurus/docs/develop/networks/gcp_workloads.png diff --git a/docusaurus/docs/develop/infrastructure/grafana_explore_logs.png b/docusaurus/docs/develop/networks/grafana_explore_logs.png similarity index 100% rename from docusaurus/docs/develop/infrastructure/grafana_explore_logs.png rename to docusaurus/docs/develop/networks/grafana_explore_logs.png diff --git a/docusaurus/docs/develop/infrastructure/grafana_save_dashboard.png b/docusaurus/docs/develop/networks/grafana_save_dashboard.png similarity index 100% rename from docusaurus/docs/develop/infrastructure/grafana_save_dashboard.png rename to docusaurus/docs/develop/networks/grafana_save_dashboard.png diff --git a/docusaurus/docs/develop/infrastructure/localnet.md b/docusaurus/docs/develop/networks/localnet.md similarity index 100% rename from docusaurus/docs/develop/infrastructure/localnet.md rename to docusaurus/docs/develop/networks/localnet.md diff --git a/docusaurus/docs/develop/infrastructure/private_testnet.md b/docusaurus/docs/develop/networks/private_testnet.md similarity index 100% rename from docusaurus/docs/develop/infrastructure/private_testnet.md rename to docusaurus/docs/develop/networks/private_testnet.md diff --git a/docusaurus/docs/develop/infrastructure/repositories.md b/docusaurus/docs/develop/networks/repositories.md similarity index 100% rename from docusaurus/docs/develop/infrastructure/repositories.md rename to docusaurus/docs/develop/networks/repositories.md diff --git a/docusaurus/docs/develop/infrastructure/testnet.md b/docusaurus/docs/develop/networks/testnet.md similarity index 100% rename from docusaurus/docs/develop/infrastructure/testnet.md rename to docusaurus/docs/develop/networks/testnet.md diff --git a/docusaurus/docs/develop/packages/_category_.json b/docusaurus/docs/develop/packages/_category_.json index 4f8136c12..48734213d 100644 --- a/docusaurus/docs/develop/packages/_category_.json +++ b/docusaurus/docs/develop/packages/_category_.json @@ -1,6 +1,6 @@ { "label": "Packages", - "position": 5, + "position": 2, "link": { "type": "generated-index", "description": "Documentation related to the source code and packages in poktroll." diff --git a/docusaurus/docs/develop/testing/_category_.json b/docusaurus/docs/develop/testing/_category_.json index 1805c4aeb..d79c85960 100644 --- a/docusaurus/docs/develop/testing/_category_.json +++ b/docusaurus/docs/develop/testing/_category_.json @@ -1,8 +1,8 @@ { - "label": "Testing (Internal)", - "position": 6, + "label": "Testing", + "position": 5, "link": { "type": "generated-index", - "description": "Documentation related to the type of end-to-end testing (load or other) we are doing." + "description": "Documentation related to unit testing." } } diff --git a/docusaurus/docs/develop/developer_guide/testing/app_integration.md b/docusaurus/docs/develop/testing/app_integration.md similarity index 100% rename from docusaurus/docs/develop/developer_guide/testing/app_integration.md rename to docusaurus/docs/develop/testing/app_integration.md diff --git a/docusaurus/docs/develop/developer_guide/testing/e2e.md b/docusaurus/docs/develop/testing/e2e.md similarity index 100% rename from docusaurus/docs/develop/developer_guide/testing/e2e.md rename to docusaurus/docs/develop/testing/e2e.md diff --git a/docusaurus/docs/develop/developer_guide/testing/in_memory_integration.md b/docusaurus/docs/develop/testing/in_memory_integration.md similarity index 100% rename from docusaurus/docs/develop/developer_guide/testing/in_memory_integration.md rename to docusaurus/docs/develop/testing/in_memory_integration.md diff --git a/docusaurus/docs/develop/developer_guide/testing/integration_suites.md b/docusaurus/docs/develop/testing/integration_suites.md similarity index 100% rename from docusaurus/docs/develop/developer_guide/testing/integration_suites.md rename to docusaurus/docs/develop/testing/integration_suites.md diff --git a/docusaurus/docs/develop/developer_guide/testing/module_integration.md b/docusaurus/docs/develop/testing/module_integration.md similarity index 100% rename from docusaurus/docs/develop/developer_guide/testing/module_integration.md rename to docusaurus/docs/develop/testing/module_integration.md diff --git a/docusaurus/docs/develop/developer_guide/testing/testing_levels.md b/docusaurus/docs/develop/testing/testing_levels.md similarity index 100% rename from docusaurus/docs/develop/developer_guide/testing/testing_levels.md rename to docusaurus/docs/develop/testing/testing_levels.md diff --git a/docusaurus/docs/operate/cheat_sheets/docker_compose_debian_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/docker_compose_debian_cheatsheet.md index 138a67c59..8d88228d0 100644 --- a/docusaurus/docs/operate/cheat_sheets/docker_compose_debian_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/docker_compose_debian_cheatsheet.md @@ -133,7 +133,7 @@ source ~/.bashrc :::warning The Alpha TestNet currently requires manual steps to sync the node to the latest block. Please find the affected block(s) -in [this document](../../protocol/upgrades/upgrade_list.md), which leads to the manual upgrade instructions. +in [this document](../upgrades/upgrade_list.md), which leads to the manual upgrade instructions. ::: ```bash diff --git a/docusaurus/docs/operate/cheat_sheets/docker_compose_walkthrough.md b/docusaurus/docs/operate/cheat_sheets/docker_compose_walkthrough.md index 85288a862..ab3c1cb42 100644 --- a/docusaurus/docs/operate/cheat_sheets/docker_compose_walkthrough.md +++ b/docusaurus/docs/operate/cheat_sheets/docker_compose_walkthrough.md @@ -216,7 +216,7 @@ poktroll ALL=(ALL) NOPASSWD:ALL :::warning The Alpha TestNet currently requires manual steps to sync the node to the latest block. Please find the affected block(s) -in [this document](../../protocol/upgrades/upgrade_list.md), which leads to the manual upgrade instructions. +in [this document](../upgrades/upgrade_list.md), which leads to the manual upgrade instructions. ::: _Note: You may need to replace `docker compose` with `docker-compose` if you are diff --git a/docusaurus/docs/operate/cheat_sheets/gateway_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/gateway_cheatsheet.md index e1b8edd39..87aec4e4f 100644 --- a/docusaurus/docs/operate/cheat_sheets/gateway_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/gateway_cheatsheet.md @@ -113,7 +113,7 @@ poktrolld query bank balances $APP_ADDR $NODE_FLAGS :::tip -You can find all the explorers, faucets and tools at the [tools page](../../tools/tools.md). +You can find all the explorers, faucets and tools at the [tools page](../../tools/tools/source_code.md). ::: diff --git a/docusaurus/docs/operate/cheat_sheets/supplier_cheatsheet.md b/docusaurus/docs/operate/cheat_sheets/supplier_cheatsheet.md index da0bea1ed..5e0eb76dc 100644 --- a/docusaurus/docs/operate/cheat_sheets/supplier_cheatsheet.md +++ b/docusaurus/docs/operate/cheat_sheets/supplier_cheatsheet.md @@ -115,7 +115,7 @@ poktrolld query bank balances $SUPPLIER_ADDR $NODE_FLAGS :::tip -You can find all the explorers, faucets and tools at the [tools page](../../tools/tools.md). +You can find all the explorers, faucets and tools at the [tools page](../../tools/tools/source_code.md). ::: diff --git a/docusaurus/docs/protocol/upgrades/_category_.json b/docusaurus/docs/operate/upgrades/_category_.json similarity index 72% rename from docusaurus/docs/protocol/upgrades/_category_.json rename to docusaurus/docs/operate/upgrades/_category_.json index 2e80f4c80..46cb7f8e4 100644 --- a/docusaurus/docs/protocol/upgrades/_category_.json +++ b/docusaurus/docs/operate/upgrades/_category_.json @@ -1,6 +1,6 @@ { - "label": "Upgrades", - "position": 4, + "label": "Protocol Upgrades", + "position": 5, "link": { "type": "generated-index", "description": "Documentation related to Pocket Network protocol upgrades." diff --git a/docusaurus/docs/develop/developer_guide/chain_halt_troubleshooting.md b/docusaurus/docs/operate/upgrades/chain_halt_troubleshooting.md similarity index 96% rename from docusaurus/docs/develop/developer_guide/chain_halt_troubleshooting.md rename to docusaurus/docs/operate/upgrades/chain_halt_troubleshooting.md index 5b32f5cda..7e11f41d1 100644 --- a/docusaurus/docs/develop/developer_guide/chain_halt_troubleshooting.md +++ b/docusaurus/docs/operate/upgrades/chain_halt_troubleshooting.md @@ -74,7 +74,7 @@ To interpret this data: 2. Input the hexadecimal data into CyberChef. 3. Apply the "From Hex" operation followed by "Protobuf Decode" to reveal the human-readable content. -![CyberChef Decoding Example](./img/cyberchef_1.png) +![CyberChef Decoding Example](../../develop/developer_guide/img/cyberchef_1.png) ### Step 5: Comparing Records @@ -84,7 +84,7 @@ After decoding, compare the data from both nodes: 2. Identify specific fields or values that differ between the two records. 3. Pay close attention to timestamps, numerical values, and complex data structures. -![CyberChef Diff Example](./img/cyberchef_2.png) +![CyberChef Diff Example](../../develop/developer_guide/img/cyberchef_2.png) The image above illustrates a difference in the JSON representation of an object, which is likely the root cause of the non-deterministic state breaking consensus between nodes. @@ -112,4 +112,4 @@ to sync a node from genesis by automatically using the appropriate binary for ea ## Syncing from genesis -If you're encountering any of the errors mentioned above while trying to sync the historical blocks - make sure you're running the correct version of the binary in accordance with this table [Upgrade List](../../protocol/upgrades/upgrade_list.md). +If you're encountering any of the errors mentioned above while trying to sync the historical blocks - make sure you're running the correct version of the binary in accordance with this table [Upgrade List](upgrade_list.md). diff --git a/docusaurus/docs/protocol/upgrades/contigency_plans.md b/docusaurus/docs/operate/upgrades/contigency_plans.md similarity index 96% rename from docusaurus/docs/protocol/upgrades/contigency_plans.md rename to docusaurus/docs/operate/upgrades/contigency_plans.md index 260f37823..0a262bd5c 100644 --- a/docusaurus/docs/protocol/upgrades/contigency_plans.md +++ b/docusaurus/docs/operate/upgrades/contigency_plans.md @@ -90,7 +90,7 @@ In such a case, we need: ### Option 3: The migration succeed but the network is stuck (i.e. migration had a bug) -This should be treated as a consensus or non-determinism bug that is unrelated to the upgrade. See [Recovery From Chain Halt](../../develop/developer_guide/recovery_from_chain_halt.md) for more information on how to handle such issues. +This should be treated as a consensus or non-determinism bug that is unrelated to the upgrade. See [Recovery From Chain Halt](recovery_from_chain_halt.md) for more information on how to handle such issues. ### MANDATORY Checklist of Documentation & Scripts to Update diff --git a/docusaurus/docs/protocol/upgrades/module_params.md b/docusaurus/docs/operate/upgrades/module_params.md similarity index 100% rename from docusaurus/docs/protocol/upgrades/module_params.md rename to docusaurus/docs/operate/upgrades/module_params.md diff --git a/docusaurus/docs/protocol/upgrades/protocol_upgrades.md b/docusaurus/docs/operate/upgrades/protocol_upgrades.md similarity index 96% rename from docusaurus/docs/protocol/upgrades/protocol_upgrades.md rename to docusaurus/docs/operate/upgrades/protocol_upgrades.md index b61e699c5..cda31c8e9 100644 --- a/docusaurus/docs/protocol/upgrades/protocol_upgrades.md +++ b/docusaurus/docs/operate/upgrades/protocol_upgrades.md @@ -1,9 +1,9 @@ --- -title: Protocol Upgrades +title: Introduction to Protocol Upgrades sidebar_position: 1 --- -# Protocol Upgrades +## Introduction to Protocol Upgrades Pocket Network is continuously evolving through regular protocol upgrades. We implement software upgrades via a DAO process, allowing validator nodes to incorporate consensus-breaking changes. These upgrades can be automatically applied when using [Cosmovisor](../../operate/walkthroughs/full_node_walkthrough.md), or manually if not using `cosmovisor`. diff --git a/docusaurus/docs/develop/developer_guide/recovery_from_chain_halt.md b/docusaurus/docs/operate/upgrades/recovery_from_chain_halt.md similarity index 93% rename from docusaurus/docs/develop/developer_guide/recovery_from_chain_halt.md rename to docusaurus/docs/operate/upgrades/recovery_from_chain_halt.md index d1ca5a069..e0e0b3f0a 100644 --- a/docusaurus/docs/develop/developer_guide/recovery_from_chain_halt.md +++ b/docusaurus/docs/operate/upgrades/recovery_from_chain_halt.md @@ -12,7 +12,7 @@ new release has been created and verified to function correctly. :::tip -See [Chain Halt Troubleshooting](./chain_halt_troubleshooting.md) for more information on identifying the cause of a chain halt. +See [Chain Halt Troubleshooting](chain_halt_troubleshooting.md) for more information on identifying the cause of a chain halt. ::: @@ -37,7 +37,7 @@ and use the same version of the software. If the halt is caused by the network upgrade, it is possible the solution can be as simple as skipping an upgrade (i.e. `unsafe-skip-upgrade`) and creating a new (fixed) upgrade. -Read more about [upgrade contingency plans](../../protocol/upgrades/contigency_plans.md). +Read more about [upgrade contingency plans](contigency_plans.md). ### Manual binary replacement (preferred) @@ -61,7 +61,7 @@ The steps to doing so are: 1. Prepare and verify a new binary that addresses the consensus-breaking issue. 2. Reach out to the community and validators so they can upgrade the binary manually. -3. Update [the documentation](../../protocol/upgrades/upgrade_list.md) to include a range a height when the binary needs +3. Update [the documentation](upgrade_list.md) to include a range a height when the binary needs to be replaced. :::warning @@ -115,8 +115,8 @@ propagating the existing blocks signed by the Validators, making it hard to roll However, if necessary, the instructions to follow are: 1. Prepare & verify a new binary that addresses the consensus-breaking issue. -2. [Create a release](../../protocol/upgrades/release_process.md). -3. [Prepare an upgrade transaction](../../protocol/upgrades/upgrade_procedure.md#writing-an-upgrade-transaction) to the new version. +2. [Create a release](release_process.md). +3. [Prepare an upgrade transaction](upgrade_procedure.md#writing-an-upgrade-transaction) to the new version. 4. Disconnect the `Validator set` from the rest of the network **3 blocks** prior to the height of the chain halt. For example: - Assume an issue at height `103`. - Revert the `validator set` to height `100`. diff --git a/docusaurus/docs/protocol/upgrades/release_process.md b/docusaurus/docs/operate/upgrades/release_process.md similarity index 100% rename from docusaurus/docs/protocol/upgrades/release_process.md rename to docusaurus/docs/operate/upgrades/release_process.md diff --git a/docusaurus/docs/protocol/upgrades/upgrade_list.md b/docusaurus/docs/operate/upgrades/upgrade_list.md similarity index 100% rename from docusaurus/docs/protocol/upgrades/upgrade_list.md rename to docusaurus/docs/operate/upgrades/upgrade_list.md diff --git a/docusaurus/docs/protocol/upgrades/upgrade_procedure.md b/docusaurus/docs/operate/upgrades/upgrade_procedure.md similarity index 100% rename from docusaurus/docs/protocol/upgrades/upgrade_procedure.md rename to docusaurus/docs/operate/upgrades/upgrade_procedure.md diff --git a/docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md b/docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md index 9511c8cbf..0097a5abe 100644 --- a/docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md +++ b/docusaurus/docs/operate/walkthroughs/full_node_walkthrough.md @@ -21,12 +21,12 @@ See the [Full Node Cheat Sheet](../cheat_sheets/full_node_cheatsheet.md) if you - [1. Install Dependencies](#1-install-dependencies) - [2. Create a New User](#2-create-a-new-user) - [3. Set Up Environment Variables for Cosmovisor](#3-set-up-environment-variables-for-cosmovisor) -- [4. Install Cosmovisor](#4-install-cosmovisor) -- [5. Install `poktrolld`](#5-install-poktrolld) -- [6. Retrieve the latest genesis file](#6-retrieve-the-latest-genesis-file) -- [7. Network Configuration](#7-network-configuration) -- [8. Set Up `systemd` Service](#8-set-up-systemd-service) -- [9. Configure your Firewall](#9-configure-your-firewall) + - [4. Install Cosmovisor](#4-install-cosmovisor) + - [5. Install `poktrolld`](#5-install-poktrolld) + - [6. Retrieve the latest genesis file](#6-retrieve-the-latest-genesis-file) + - [7. Network Configuration](#7-network-configuration) + - [8. Set Up `systemd` Service](#8-set-up-systemd-service) + - [9. Configure your Firewall](#9-configure-your-firewall) ## Introduction - why run a Full Node? @@ -91,7 +91,7 @@ echo "source ~/.poktrollrc" >> ~/.profile source ~/.profile ``` -## 4. Install Cosmovisor +### 4. Install Cosmovisor **Option 1**: You can follow the official Cosmovisor installation instructions [here](https://docs.cosmos.network/main/build/tooling/cosmovisor#installation). @@ -114,7 +114,7 @@ echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.profile source ~/.profile ``` -## 5. Install `poktrolld` +### 5. Install `poktrolld` Follow the instructions in the [CLI Installation Guide](../../tools/user_guide/poktrolld_cli.md) page to install `poktrolld`. @@ -125,7 +125,7 @@ mkdir -p $HOME/.poktroll/cosmovisor/genesis/bin ln -sf $(which poktrolld) $HOME/.poktroll/cosmovisor/genesis/bin/poktrolld ``` -## 6. Retrieve the latest genesis file +### 6. Retrieve the latest genesis file Follow the instructions below to download the latest genesis file. @@ -141,7 +141,7 @@ GENESIS_URL="https://raw.githubusercontent.com/pokt-network/pocket-network-genes curl -s -o $HOME/.poktroll/config/genesis.json "$GENESIS_URL" ``` -## 7. Network Configuration +### 7. Network Configuration :::note You may see a message saying `genesis.json file already exists`. @@ -171,7 +171,7 @@ EXTERNAL_IP=$(curl -s https://api.ipify.org) sed -i -e "s|^external_address *=.*|external_address = \"${EXTERNAL_IP}:26656\"|" $HOME/.poktroll/config/config.toml ``` -## 8. Set Up `systemd` Service +### 8. Set Up `systemd` Service Create a `systemd` service file to manage the node: @@ -207,7 +207,7 @@ sudo systemctl enable cosmovisor.service sudo systemctl start cosmovisor.service ``` -## 9. Configure your Firewall +### 9. Configure your Firewall To ensure your node can properly participate in the P2P network, you need to make port `26656` accessible from the internet. diff --git a/docusaurus/docs/protocol/actors/_category_.json b/docusaurus/docs/protocol/actors/_category_.json index 72bcbd38d..68ee2cc75 100644 --- a/docusaurus/docs/protocol/actors/_category_.json +++ b/docusaurus/docs/protocol/actors/_category_.json @@ -1,5 +1,5 @@ { - "label": "Actors", + "label": "Protocol Actors", "position": 1, "link": { "type": "generated-index", diff --git a/docusaurus/docs/protocol/governance/params.md b/docusaurus/docs/protocol/governance/params.md index 1b51f5147..58512571d 100644 --- a/docusaurus/docs/protocol/governance/params.md +++ b/docusaurus/docs/protocol/governance/params.md @@ -1,9 +1,9 @@ --- -title: Pocket Network Governance Params +title: Governance Params sidebar_position: 1 --- -# Governance Parameters +## Governance Parameters :::warning DO NOT EDIT: this file was generated by make docs_update_gov_params_page @@ -25,27 +25,26 @@ Please follow the instructions in [this guide](../../develop/developer_guide/add ## Parameters - -|Module | Field Type | Field Name |Comment | -|-------|------------|------------|--------| -| `application` | `uint64` | `max_delegated_gateways` | max_delegated_gateways defines the maximum number of gateways that a single application can delegate to. This is used to prevent performance issues in case the relay ring signature becomes too large. | -| `application` | `cosmos.base.v1beta1.Coin` | `min_stake` | min_stake is the minimum stake in upokt that an application must have to remain staked. | -| `gateway` | `cosmos.base.v1beta1.Coin` | `min_stake` | min_stake is the minimum amount of uPOKT that a gateway must stake. | -| `proof` | `cosmos.base.v1beta1.Coin` | `proof_missing_penalty` | proof_missing_penalty is the number of tokens (uPOKT) which should be slashed from a supplier when a proof is required (either via proof_requirement_threshold or proof_missing_penalty) but is not provided. TODO_MAINNET: Consider renaming this to `proof_missing_penalty_upokt`. | -| `proof` | `double` | `proof_request_probability` | proof_request_probability is the probability of a session requiring a proof if it's cost (i.e. compute unit consumption) is below the ProofRequirementThreshold. | -| `proof` | `cosmos.base.v1beta1.Coin` | `proof_requirement_threshold` | proof_requirement_threshold is the session cost (i.e. compute unit consumption) threshold which asserts that a session MUST have a corresponding proof when its cost is equal to or above the threshold. This is in contrast to the this requirement being determined probabilistically via ProofRequestProbability. TODO_MAINNET: Consider renaming this to `proof_requirement_threshold_upokt`. | -| `proof` | `cosmos.base.v1beta1.Coin` | `proof_submission_fee` | proof_submission_fee is the number of tokens (uPOKT) which should be paid by the supplier operator when submitting a proof. This is needed to account for the cost of storing proofs onchain and prevent spamming (i.e. sybil bloat attacks) the network with non-required proofs. TODO_MAINNET: Consider renaming this to `proof_submission_fee_upokt`. | -| `service` | `cosmos.base.v1beta1.Coin` | `add_service_fee` | The amount of uPOKT required to add a new service. This will be deducted from the signer's account balance, and transferred to the pocket network foundation. | -| `session` | `uint64` | `num_suppliers_per_session` | num_suppliers_per_session is the maximun number of suppliers per session (applicaiton:supplier pair for a given session number). | -| `shared` | `uint64` | `application_unbonding_period_sessions` | application_unbonding_period_sessions is the number of sessions that an application must wait after unstaking before their staked assets are moved to their account balance. Onchain business logic requires, and ensures, that the corresponding block count of the application unbonding period will exceed the end of its corresponding proof window close height. | -| `shared` | `uint64` | `claim_window_close_offset_blocks` | claim_window_close_offset_blocks is the number of blocks after the claim window open height, at which the claim window closes. | -| `shared` | `uint64` | `claim_window_open_offset_blocks` | claim_window_open_offset_blocks is the number of blocks after the session grace period height, at which the claim window opens. | -| `shared` | `uint64` | `compute_units_to_tokens_multiplier` | The amount of upokt that a compute unit should translate to when settling a session. DEV_NOTE: This used to be under x/tokenomics but has been moved here to avoid cyclic dependencies. | -| `shared` | `uint64` | `grace_period_end_offset_blocks` | grace_period_end_offset_blocks is the number of blocks, after the session end height, during which the supplier can still service payable relays. Suppliers will need to recreate a claim for the previous session (if already created) to get paid for the additional relays. | -| `shared` | `uint64` | `num_blocks_per_session` | num_blocks_per_session is the number of blocks between the session start & end heights. | -| `shared` | `uint64` | `proof_window_close_offset_blocks` | proof_window_close_offset_blocks is the number of blocks after the proof window open height, at which the proof window closes. | -| `shared` | `uint64` | `proof_window_open_offset_blocks` | proof_window_open_offset_blocks is the number of blocks after the claim window close height, at which the proof window opens. | -| `shared` | `uint64` | `supplier_unbonding_period_sessions` | supplier_unbonding_period_sessions is the number of sessions that a supplier must wait after unstaking before their staked assets are moved to their account balance. Onchain business logic requires, and ensures, that the corresponding block count of the unbonding period will exceed the end of any active claim & proof lifecycles. | -| `supplier` | `cosmos.base.v1beta1.Coin` | `min_stake` | min_stake is the minimum amount of uPOKT that a supplier must stake to be included in network sessions and remain staked. | -| `tokenomics` | `string` | `dao_reward_address` | dao_reward_address is the address to which mint_allocation_dao percentage of the minted tokens are at the end of claim settlement. | -| `tokenomics` | `MintAllocationPercentages` | `mint_allocation_percentages` | mint_allocation_percentages represents the distribution of newly minted tokens, at the end of claim settlement, as a result of the Global Mint TLM. | +| Module | Field Type | Field Name | Comment | +| ------------- | --------------------------- | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `application` | `uint64` | `max_delegated_gateways` | max_delegated_gateways defines the maximum number of gateways that a single application can delegate to. This is used to prevent performance issues in case the relay ring signature becomes too large. | +| `application` | `cosmos.base.v1beta1.Coin` | `min_stake` | min_stake is the minimum stake in upokt that an application must have to remain staked. | +| `gateway` | `cosmos.base.v1beta1.Coin` | `min_stake` | min_stake is the minimum amount of uPOKT that a gateway must stake. | +| `proof` | `cosmos.base.v1beta1.Coin` | `proof_missing_penalty` | proof_missing_penalty is the number of tokens (uPOKT) which should be slashed from a supplier when a proof is required (either via proof_requirement_threshold or proof_missing_penalty) but is not provided. TODO_MAINNET: Consider renaming this to `proof_missing_penalty_upokt`. | +| `proof` | `double` | `proof_request_probability` | proof_request_probability is the probability of a session requiring a proof if it's cost (i.e. compute unit consumption) is below the ProofRequirementThreshold. | +| `proof` | `cosmos.base.v1beta1.Coin` | `proof_requirement_threshold` | proof_requirement_threshold is the session cost (i.e. compute unit consumption) threshold which asserts that a session MUST have a corresponding proof when its cost is equal to or above the threshold. This is in contrast to the this requirement being determined probabilistically via ProofRequestProbability. TODO_MAINNET: Consider renaming this to `proof_requirement_threshold_upokt`. | +| `proof` | `cosmos.base.v1beta1.Coin` | `proof_submission_fee` | proof_submission_fee is the number of tokens (uPOKT) which should be paid by the supplier operator when submitting a proof. This is needed to account for the cost of storing proofs onchain and prevent spamming (i.e. sybil bloat attacks) the network with non-required proofs. TODO_MAINNET: Consider renaming this to `proof_submission_fee_upokt`. | +| `service` | `cosmos.base.v1beta1.Coin` | `add_service_fee` | The amount of uPOKT required to add a new service. This will be deducted from the signer's account balance, and transferred to the pocket network foundation. | +| `session` | `uint64` | `num_suppliers_per_session` | num_suppliers_per_session is the maximun number of suppliers per session (applicaiton:supplier pair for a given session number). | +| `shared` | `uint64` | `application_unbonding_period_sessions` | application_unbonding_period_sessions is the number of sessions that an application must wait after unstaking before their staked assets are moved to their account balance. Onchain business logic requires, and ensures, that the corresponding block count of the application unbonding period will exceed the end of its corresponding proof window close height. | +| `shared` | `uint64` | `claim_window_close_offset_blocks` | claim_window_close_offset_blocks is the number of blocks after the claim window open height, at which the claim window closes. | +| `shared` | `uint64` | `claim_window_open_offset_blocks` | claim_window_open_offset_blocks is the number of blocks after the session grace period height, at which the claim window opens. | +| `shared` | `uint64` | `compute_units_to_tokens_multiplier` | The amount of upokt that a compute unit should translate to when settling a session. DEV_NOTE: This used to be under x/tokenomics but has been moved here to avoid cyclic dependencies. | +| `shared` | `uint64` | `grace_period_end_offset_blocks` | grace_period_end_offset_blocks is the number of blocks, after the session end height, during which the supplier can still service payable relays. Suppliers will need to recreate a claim for the previous session (if already created) to get paid for the additional relays. | +| `shared` | `uint64` | `num_blocks_per_session` | num_blocks_per_session is the number of blocks between the session start & end heights. | +| `shared` | `uint64` | `proof_window_close_offset_blocks` | proof_window_close_offset_blocks is the number of blocks after the proof window open height, at which the proof window closes. | +| `shared` | `uint64` | `proof_window_open_offset_blocks` | proof_window_open_offset_blocks is the number of blocks after the claim window close height, at which the proof window opens. | +| `shared` | `uint64` | `supplier_unbonding_period_sessions` | supplier_unbonding_period_sessions is the number of sessions that a supplier must wait after unstaking before their staked assets are moved to their account balance. Onchain business logic requires, and ensures, that the corresponding block count of the unbonding period will exceed the end of any active claim & proof lifecycles. | +| `supplier` | `cosmos.base.v1beta1.Coin` | `min_stake` | min_stake is the minimum amount of uPOKT that a supplier must stake to be included in network sessions and remain staked. | +| `tokenomics` | `string` | `dao_reward_address` | dao_reward_address is the address to which mint_allocation_dao percentage of the minted tokens are at the end of claim settlement. | +| `tokenomics` | `MintAllocationPercentages` | `mint_allocation_percentages` | mint_allocation_percentages represents the distribution of newly minted tokens, at the end of claim settlement, as a result of the Global Mint TLM. | diff --git a/docusaurus/docs/tools/endpoints/_category_.json b/docusaurus/docs/tools/endpoints/_category_.json new file mode 100644 index 000000000..42be32e63 --- /dev/null +++ b/docusaurus/docs/tools/endpoints/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "RPC Endpoints", + "position": 2, + "link": { + "type": "generated-index", + "description": "RPC Endpoints" + } +} diff --git a/docusaurus/docs/tools/rpc.md b/docusaurus/docs/tools/endpoints/shannon_rpc.md similarity index 89% rename from docusaurus/docs/tools/rpc.md rename to docusaurus/docs/tools/endpoints/shannon_rpc.md index 5a407e2ce..b85486e4c 100644 --- a/docusaurus/docs/tools/rpc.md +++ b/docusaurus/docs/tools/endpoints/shannon_rpc.md @@ -1,5 +1,5 @@ --- -title: RPC Endpoints +title: Shannon RPC Endpoints sidebar_position: 3 --- @@ -10,6 +10,7 @@ sidebar_position: 3 - [Alpha TestNet](#alpha-testnet) - [Alpha RPC Endpoints](#alpha-rpc-endpoints) - [Alpha JSON-RPC Example](#alpha-json-rpc-example) +- [Genesis](#genesis) ## Types of RPC Endpoints @@ -62,3 +63,7 @@ Using the `poktrolld` binary: ```bash poktrolld query block --type=height 1 --node https://shannon-testnet-grove-seed-rpc.alpha.poktroll.com ``` + +## Genesis + +The genesis file for the Pocket Network is located at [pokt-network-genesis](https://github.com/pokt-network/pocket-network-genesis). diff --git a/docusaurus/docs/tools/genesis.md b/docusaurus/docs/tools/genesis.md deleted file mode 100644 index 18424b525..000000000 --- a/docusaurus/docs/tools/genesis.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Genesis -sidebar_position: 4 ---- - -## Genesis - -The genesis file for the Pocket Network is located at [pokt-network-genesis](https://github.com/pokt-network/pocket-network-genesis). diff --git a/docusaurus/docs/tools/tools.md b/docusaurus/docs/tools/tools.md deleted file mode 100644 index 9e46f4f64..000000000 --- a/docusaurus/docs/tools/tools.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Tools & References -sidebar_position: 1 ---- - -- [Beta TestNet](#beta-testnet) -- [Alpha TestNet](#alpha-testnet) -- [πŸ› οΈ Tools \& References](#️-tools--references) - -## Beta TestNet - -- πŸͺ™ [Token Faucet](https://faucet.beta.testnet.pokt.network/) -- πŸ—ΊοΈ [Explorer](https://shannon.beta.testnet.pokt.network) -- πŸ—ΊοΈ [POKTScan's Explorer](https://shannon-beta.poktscan.com/) -- πŸ‘¨β€πŸ’» [POKTScan's GraphQL Playground](https://shannon-beta-api.poktscan.com/) - -## Alpha TestNet - -- πŸͺ™ [Token Faucet](https://faucet.alpha.testnet.pokt.network/) -- πŸ—ΊοΈ [Explorer](https://shannon.alpha.testnet.pokt.network) -- πŸ—ΊοΈ [POKTScan's Explorer](https://shannon-alpha.poktscan.com/) -- πŸ‘¨β€πŸ’» [POKTScan's GraphQL Playground](https://shannon-alpha-api.poktscan.com/) - -## πŸ› οΈ Tools & References - -- πŸ—οΈ [Deploy your own gateway & Supplier](https://dev.poktroll.com/operate/quickstart/docker_compose_walkthrough) -- 🍝 [Copy-pasta your way to deploying on a Debian server](https://dev.poktroll.com/operate/quickstart/docker_compose_debian_cheatsheet) -- πŸ§‘β€πŸ’» [Developer Onboarding](https://dev.poktroll.com/develop/developer_guide/quickstart) -- πŸ’½ [Full Node Indexer](https://shannon-testnet.poktscan.com/) + [Pocketdex source code](https://github.com/pokt-network/pocketdex/) -- πŸ“– [General Documentation](https://docs.pokt.network/pokt-protocol/the-shannon-upgrade) -- πŸ“’ [Technical Documentation](https://dev.poktroll.com/) -- πŸ§‘β€πŸ’» [Shannon SDK](https://github.com/pokt-network/shannon-sdk) -- πŸ–₯️ [Shannon source code](https://github.com/pokt-network/poktroll) diff --git a/docusaurus/docs/tools/tools/_category_.json b/docusaurus/docs/tools/tools/_category_.json new file mode 100644 index 000000000..b8a7c0e2e --- /dev/null +++ b/docusaurus/docs/tools/tools/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Explorers, Faucets, Wallets, and More", + "position": 3, + "link": { + "type": "generated-index", + "description": "poktrolld CLI documentation" + } +} diff --git a/docusaurus/docs/tools/tools/shannon_alpha.md b/docusaurus/docs/tools/tools/shannon_alpha.md new file mode 100644 index 000000000..6f351ed97 --- /dev/null +++ b/docusaurus/docs/tools/tools/shannon_alpha.md @@ -0,0 +1,9 @@ +--- +title: Alpha TestNet +sidebar_position: 1 +--- + +- πŸͺ™ [Token Faucet](https://faucet.alpha.testnet.pokt.network/) +- πŸ—ΊοΈ [Explorer](https://shannon.alpha.testnet.pokt.network) +- πŸ—ΊοΈ [POKTScan's Explorer](https://shannon-alpha.poktscan.com/) +- πŸ‘¨β€πŸ’» [POKTScan's GraphQL Playground](https://shannon-alpha-api.poktscan.com/) diff --git a/docusaurus/docs/tools/tools/shannon_beta.md b/docusaurus/docs/tools/tools/shannon_beta.md new file mode 100644 index 000000000..ccb7096f5 --- /dev/null +++ b/docusaurus/docs/tools/tools/shannon_beta.md @@ -0,0 +1,9 @@ +--- +title: Beta TestNet +sidebar_position: 1 +--- + +- πŸͺ™ [Token Faucet](https://faucet.beta.testnet.pokt.network/) +- πŸ—ΊοΈ [Explorer](https://shannon.beta.testnet.pokt.network) +- πŸ—ΊοΈ [POKTScan's Explorer](https://shannon-beta.poktscan.com/) +- πŸ‘¨β€πŸ’» [POKTScan's GraphQL Playground](https://shannon-beta-api.poktscan.com/) diff --git a/docusaurus/docs/tools/tools/source_code.md b/docusaurus/docs/tools/tools/source_code.md new file mode 100644 index 000000000..6b6fa5db8 --- /dev/null +++ b/docusaurus/docs/tools/tools/source_code.md @@ -0,0 +1,7 @@ +--- +title: Source Code +sidebar_position: 1 +--- + +- πŸ§‘β€πŸ’» [Shannon SDK](https://github.com/pokt-network/shannon-sdk) +- πŸ–₯️ [Shannon source code](https://github.com/pokt-network/poktroll) diff --git a/docusaurus/docs/tools/user_guide/_category_.json b/docusaurus/docs/tools/user_guide/_category_.json index 4f71de3e6..a1590bac2 100644 --- a/docusaurus/docs/tools/user_guide/_category_.json +++ b/docusaurus/docs/tools/user_guide/_category_.json @@ -1,8 +1,8 @@ { - "label": "User Guide", - "position": 2, + "label": "poktrolld CLI", + "position": 1, "link": { "type": "generated-index", - "description": "poktrolld CLI documentation" + "description": "User Guide on using the poktrolld CLI" } } diff --git a/docusaurus/docs/tools/user_guide/app-transfer.md b/docusaurus/docs/tools/user_guide/app-transfer.md index 12ca76b19..884564f80 100644 --- a/docusaurus/docs/tools/user_guide/app-transfer.md +++ b/docusaurus/docs/tools/user_guide/app-transfer.md @@ -1,6 +1,6 @@ --- -title: Application Transfer -sidebar_position: 5 +title: Application Stake Transfer +sidebar_position: 6 --- # Transferring an Application diff --git a/docusaurus/docs/tools/user_guide/check-balance.md b/docusaurus/docs/tools/user_guide/check-balance.md index 60897ca22..40a19f0be 100644 --- a/docusaurus/docs/tools/user_guide/check-balance.md +++ b/docusaurus/docs/tools/user_guide/check-balance.md @@ -1,6 +1,6 @@ --- title: Balance check -sidebar_position: 3 +sidebar_position: 4 --- # Checking Your Wallet Account Balance diff --git a/docusaurus/docs/tools/user_guide/create-new-wallet.md b/docusaurus/docs/tools/user_guide/create-new-wallet.md index d5444dce7..140929994 100644 --- a/docusaurus/docs/tools/user_guide/create-new-wallet.md +++ b/docusaurus/docs/tools/user_guide/create-new-wallet.md @@ -1,6 +1,6 @@ --- title: Create a New Wallet -sidebar_position: 1 +sidebar_position: 2 --- # Create a New Wallet diff --git a/docusaurus/docs/tools/user_guide/poktrolld_cli.md b/docusaurus/docs/tools/user_guide/poktrolld_cli.md index 9ca5431b9..2f95d20f5 100644 --- a/docusaurus/docs/tools/user_guide/poktrolld_cli.md +++ b/docusaurus/docs/tools/user_guide/poktrolld_cli.md @@ -1,6 +1,6 @@ --- -title: poktrolld CLI Installation -sidebar_position: 0 +title: poktrolld Installation +sidebar_position: 1 --- :::warning diff --git a/docusaurus/docs/tools/user_guide/recover-with-mnemonic.md b/docusaurus/docs/tools/user_guide/recover-with-mnemonic.md index 6343667f9..c6b13ff19 100644 --- a/docusaurus/docs/tools/user_guide/recover-with-mnemonic.md +++ b/docusaurus/docs/tools/user_guide/recover-with-mnemonic.md @@ -1,6 +1,6 @@ --- title: Mnemonic Seed Phrase Recovery -sidebar_position: 2 +sidebar_position: 3 --- # Recovering an Account from a Mnemonic Seed Phrase diff --git a/docusaurus/docs/tools/user_guide/send-tokens.md b/docusaurus/docs/tools/user_guide/send-tokens.md index 6d3c5676c..898e4789c 100644 --- a/docusaurus/docs/tools/user_guide/send-tokens.md +++ b/docusaurus/docs/tools/user_guide/send-tokens.md @@ -1,6 +1,6 @@ --- title: Send tokens -sidebar_position: 4 +sidebar_position: 5 --- # Sending Tokens Between Accounts diff --git a/tools/scripts/docusaurus/params_doc_template.md b/tools/scripts/docusaurus/params_doc_template.md index fdbc914af..5a4da247b 100644 --- a/tools/scripts/docusaurus/params_doc_template.md +++ b/tools/scripts/docusaurus/params_doc_template.md @@ -1,16 +1,14 @@ --- -title: Pocket Network Governance Params +title: Governance Params sidebar_position: 1 --- -# Governance Parameters +## Governance Parameters :::warning DO NOT EDIT: this file was generated by make docs_update_gov_params_page ::: -- [Access Control](#access-control) -- [Updating governance parameter values](#updating-governance-parameter-values) - [Updating this page](#updating-this-page) - [Adding a new parameter](#adding-a-new-parameter) - [Parameters](#parameters) @@ -27,7 +25,7 @@ Please follow the instructions in [this guide](../../develop/developer_guide/add ## Parameters +| Module | Field Type | Field Name | Comment | +| ------ | ---------- | ---------- | ------- | -|Module | Field Type | Field Name |Comment | -|-------|------------|------------|--------| -{{.}} \ No newline at end of file +{{.}}