diff --git a/docs/Protocol/Specifications/Epoch.md b/docs/Protocol/Specifications/Epoch.md
index 617a263..e5d635f 100644
--- a/docs/Protocol/Specifications/Epoch.md
+++ b/docs/Protocol/Specifications/Epoch.md
@@ -8,6 +8,8 @@ An epoch denotes a range of block heights on the data source blockchain where sm
All peers synchronize and achieve consensus around incremental epochs according to their specific responsibilities. For example, snapshotter peers reach consensus around snapshots—base and aggregate—per epoch. This information gets finalized into the protocol state as snapshot datasets available as content identifiers on decentralized storage mediums like IPFS and Filecoin.
+![Epoch](/images/Epoch.png)
+
The size of an epoch is configurable, referred to as `size(E)`.
## Epoch Generator
diff --git a/docs/build-with-powerloom/devnet/Glossary.md b/docs/build-with-powerloom/devnet/Glossary.md
new file mode 100644
index 0000000..3cfa0c8
--- /dev/null
+++ b/docs/build-with-powerloom/devnet/Glossary.md
@@ -0,0 +1,84 @@
+---
+sidebar_position: 3
+---
+
+## Key terms, concepts, and acronyms used in Powerloom's Devnet
+
+---
+
+### Snapshotter Peers & Nodes
+
+Snapshotter peers are participants in the Powerloom network who capture and verify data snapshots. Snapshotter nodes, run by Snapshotter peers, generate these snapshots at predetermined intervals or epochs. The peers are crucial for data accuracy and integrity in the decentralized Powerloom ecosystem.
+
+### Snapshots
+
+Snapshots are compressed archives of blockchain node states at specific block heights. They serve as a historical record of data changes and are taken by Snapshotter Peers. Each snapshot is a report of the observation, specific to state transitions or event logs between two block heights, and is submitted to the Protocol for consensus. Snapshots are essential for ensuring data integrity, enabling analysis, and tracking changes over time within the network.
+
+### Epochs
+
+An Epoch in the context of blockchain typically refers to a range of block heights on the data source blockchain where smart contract applications run, or, simply put, it is a specific period in the blockchain's life.
+
+Each Snapshotter makes observations specific to the state transitions spanning two block heights termed Epochs. Check out our developer docs [here](https://docs.powerloom.io/docs/Protocol/Specifications/Epoch/) to learn more about Epochs.
+
+### RPCs
+
+Remote Procedure Calls (RPCs), allow a program to request a service from another program on a different computer in a network. In the blockchain, an RPC node lets users and applications interact with the blockchain without needing to know network details.
+
+Extracting data from the blockchain state and generating the snapshot can be complex. The RPC Helper, has many helper functions to make this process easier. It handles all the retry and caching logic so developers can focus on efficiently building their use cases.
+
+### Prost Chain
+
+The "Prost Chain" refers to the foundational blockchain infrastructure the Powerloom Network utilizes, serving as the anchor chain for storing proofs. The Prost Chain also coordinates activity between different categories of peers on the network. For example, it coordinates consensus between snapshots to finalize snapshots per epoch; it also acts as the distribution point for releasing epochs.
+
+### Protocol State (on Prost Chain)
+
+Protocol State represents the current state of the network, which Snapshotter Peers or anyone else can refer to if the entity needs access to current or historical data references.
+
+### Devnet
+Devnet is a network environment for developers to test and develop blockchain applications. Devnet provides a sandbox environment to test ideas like data dashboards. As an individual, you can develop your own snapshotting logic, write the data application & use these snapshots without requiring any consensus on said snapshots from other snapshotter nodes.
+
+:::success info
+#### Our Devnet is live!
+**Powerloom’s Devnet is Live!** Access the Devnet and build exciting data applications; you can mint a no-cost NFT slot on the Sepolia Network 🌟. Devnet mint page: [https://devnet-mint.powerloom.dev](https://devnet-mint.powerloom.dev/)
+
+💡 To mint the NFT slot, ETH on the Sepolia network is required. If your balance is insufficient, you can obtain Sepolia ETH through the following link: https://faucet.quicknode.com/drip
+:::
+
+### Data Markets
+
+Data markets are defined by a schema specifying state variables, event log topics, and specific transactions across any smart contract instances that make the decentralized application. eg. A defi protocol like uniswap. In a data market, datasets are snapshotted data collections, while data sources are the contracts that are being snapshotted.
+
+Click [here](https://docs.powerloom.io/docs/Protocol/data-sources) to learn more about Data Markets.
+
+### Environment Variables
+
+Environment variables are external configurations that affect runtime behavior without modifying the code directly. They include network details, contract addresses, token parameters, security settings, feature flags, debugging options, and integration parameters. They offer flexibility, security, and maintainability by enabling dynamic adjustments of contract behavior across different deployment environments.
+
+### IPFS (InterPlanetary File System)
+A decentralized storage protocol and network for storing and sharing files in a peer-to-peer manner. IPFS uses content-addressing and cryptographic hashing to distribute data across multiple nodes securely and efficiently.
+
+### Burner Wallet
+
+A lightweight and disposable cryptocurrency wallet designed for temporary or single-use transactions. Burner wallets are often used for small transactions or events where security and long-term storage are not priorities.
+
+### Project IDs
+
+All data sources are tracked with a project ID on the protocol. Think of it as a stream of datasets, finalized by consensus against each epoch released on the protocol. The snapshotter node attempts to retrieve data sources corresponding to the projects key from the protocol state.
+Find more details in the specifications of [snapshot generation](https://docs.powerloom.io/docs/protocol/specifications/snapshotter/snapshot-build#project-id-generation).
+
+### Snapshot Composition
+
+The protocol state collects finalized snapshots for incremental epochs against contracts configured as data sources. These snapshots can be further composed according to the use case.
+
+We can compose snapshots on top of base snapshots for single or multiple contracts by:
+- Combining individual snapshots of trade volume and fees across multiple pair contracts.
+- Spanning a specific set of epochs that satisfy a time duration (e.g., 24 hours).
+
+To learn more about Snapshot Composition, start with this [guide](https://docs.powerloom.io/docs/Protocol/data-composition), then explore [Data Points](https://docs.powerloom.io/docs/build-with-powerloom/use-cases/existing-implementations/uniswapv2-dashboard/data-points) for a use case-driven approach, and finally read through [Closer Look at Snapshots](https://docs.powerloom.io/docs/build-with-powerloom/use-cases/existing-implementations/uniswapv2-dashboard/closer-look-at-snapshots) for a detailed understanding.
+
+### Relayers
+Entities or nodes within a decentralized network responsible for relaying or forwarding messages, transactions, or data between different participants. Relayers play a crucial role in facilitating communication and interoperability within distributed systems.
+
+### Pre-loaders
+Software components, scripts, or routines used to load or initialize data, resources, or configurations before the main application or system starts. Pre-loaders ensure that necessary dependencies are available and set up properly to enable smooth operation of the application.
+
diff --git a/docs/build-with-powerloom/devnet/faq.md b/docs/build-with-powerloom/devnet/faq.md
deleted file mode 100644
index c8e0ae6..0000000
--- a/docs/build-with-powerloom/devnet/faq.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-sidebar_position: 4
----
-
-# Frequently Asked Questions
diff --git a/docs/build-with-powerloom/devnet/getting-started.md b/docs/build-with-powerloom/devnet/getting-started.md
index 27b025d..7b7dcd1 100644
--- a/docs/build-with-powerloom/devnet/getting-started.md
+++ b/docs/build-with-powerloom/devnet/getting-started.md
@@ -3,6 +3,8 @@ sidebar_position: 1
---
import Admonition from '@theme-original/Admonition';
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
# Getting Started
This section will guide you through the necessary steps to set up and get started with the Devnet environment. By following these instructions, you'll be able to quickly configure your Devnet and start building data applications on Powerloom.
@@ -29,7 +31,7 @@ Follow these steps:
- Search for the transaction hash of your NFT mint on the [Sepolia block explorer](https://sepolia.etherscan.io/).
- For Metamask: The transaction will be under the `Activity` section.
- - For other wallets: Search for your wallet address in the Sepolia block explorer and the mint will be the latest transaction.
+ - For other wallets: Search for your wallet address in the Sepolia block explorer; the mint will be the latest transaction.
- Locate the minted Token ID under the `ERC-1155 Tokens Transferred` section.
![Block Explorer](/images/sepolia_blockexplorer_example.png)
@@ -65,57 +67,212 @@ Your RPC usage depends on your specific use case. If your application requires a
If you want to monitor your RPC usage, we recommend signing up with a provider like Alchemy, Infura or Quicknode.
:::
+:::info
+Setting up the snapshotter node on Windows requires a few additional steps. We suggest using Docker because of its ease of setup and speed. To begin with Docker, you must have the Windows Subsystem for Linux (WSL) installed. Please follow the guide provided below for detailed instructions.
+:::
+
+Deploying a Snapshotter Node on macOS/Linux
+
### Running the Snapshotter Node
Follow the process outlined below to ensure a smooth setup
#### Step 1: Clone the Snapshotter Deploy Repository
-Clone the repository against the respective branch (main by default). Open the terminal and run the below command to clone the deploy repo in a directory named `powerloom-deploy`.
+Clone the repository against the respective branch (main by default). Open the terminal and run the below command to clone the deploy repo in a directory named `powerloom_deploy`.
```bash
git clone https://github.com/PowerLoom/deploy.git --single-branch powerloom_deploy --branch devnet && cd powerloom_deploy
```
-#### Step 2: Fork the Snapshotter Computes and Snapshotter Config Repositories
+The above command itself navigates you to the Repository Directory `powerloom_deploy`
+
+#### Step 2: Configure the environment variables
+
+1. `cp env.example .env` Copies the contents of the file named `env.example` to a new file named `.env`.
-Our system leverages the Git submodule architecture to seamlessly manage these components. To dive deeper into how these elements integrate and function within our larger system, check out the [architecture documentation](https://docs.powerloom.io/docs/build-with-powerloom/snapshotter-node/architecture).
+2. Fill in the required variables in the `.env` file:
+
+#### During the creation of the .env file, add the following details:
+- `SOURCE_RPC_URL`: The URL for Source RPC (Local node/Infura/Alchemy) service.
+- `SIGNER_ACCOUNT_ADDRESS`: The address of the signer account. This should be an unused "burner" address that does not need to have any token balance. You can create a new burner wallet from [our tool](https://devnet-mint.powerloom.dev/burner). During later steps, this address will be registered against the `SLOT_ID` on the `PROTOCOL_STATE_CONTRACT` that is set in this `.env`.
+- `SIGNER_ACCOUNT_PRIVATE_KEY`: The private key corresponding to the burner wallet address
+- `SLOT_ID`: Enter your Devnet Slot ID. [You can find the slotID by visiting the [Devnet Dashboard](https://devnet-mint.powerloom.dev/dashboard), or on the [Sepolia block explorer](https://sepolia.etherscan.io/) by searching for the transaction hash of your node mint]
+- `PROTOCOL_STATE_CONTRACT`: Choose the contract address for the protocol state with respect to the Epoch size.
+
+:::note
+Currently, there are two variations of Protocol State Contracts available. One where [Epoch](../../Protocol/Specifications/Epoch.md) size is set to 1 and the other where epoch size is set to 10 blocks.
-To optimize the development process, we recommend forking the templates for:
+You can find the latest Epoch Contracts in the [example.env](https://github.com/PowerLoom/deploy/blob/devnet/env.example) file.
+
+This should allow developers to build and experiment with a variety of use cases. If you have any custom needs, reach out to the [team](https://discord.com/invite/powerloom)
+:::
+
+**Pre-supplied:**
+
+:::info
+Unless it is a customized need or instructed by us, the below need not be changed or modified.
+
+:::
+
+- `SNAPSHOT_CONFIG_REPO`: https://github.com/powerloom/snapshotter-configs
+- `SNAPSHOT_CONFIG_REPO_BRANCH`: devnet
+- `SNAPSHOTTER_COMPUTE_REPO`: https://github.com/powerloom/snapshotter-computes
+- `SNAPSHOTTER_COMPUTE_REPO_BRANCH`: devnet
+- `PROST_RPC_URL`: The Powerloom Protocol Chain RPC service URL.
+- `RELAYER_HOST`: The relayer URL for the Powerloom Protocol Chain.
+- `NAMESPACE`: The unique key to identify your project namespace.
+- `POWERLOOM_REPORTING_URL`: The URL for reporting to PowerLoom.
+- `PROST_CHAIN_ID`: The Devnet chain ID
-- Snapshotter Configs: https://github.com/PowerLoom/snapshotter-configs
-- Snapshotter Computes: https://github.com/PowerLoom/snapshotter-computes
+**Optional variables:**
+
+- `IPFS_URL`: The URL for the IPFS (InterPlanetary File System) service in HTTP(s) (e.g., `https://ipfs.infura.io:5001`) or multiaddr format (e.g., `/dns4/ipfs.infura.io/tcp/5001/https`).
+- `IPFS_API_KEY`: The API key for the IPFS service (if required).
+- `IPFS_API_SECRET`: The API secret for the IPFS service (if required).
+- `SLACK_REPORTING_URL`: The URL for reporting to Slack.
+
+#### Step 3: Set Up the Codebase
+Set up the codebase by running the `bootstrap.sh` command in the terminal. Developers may use different shells, such as bash or zsh. Adjust the command accordingly:
+
+For bash:
+
+```bash
+bash bootstrap.sh
+```
+or
+```zsh
+zsh bootstrap.sh
+```
:::info
-When forking the repository, ensure that the *"Copy the main branch only" * option is left unchecked. This will allow you to clone all the branches associated with the repository, not just the main branch.
+This one-time step resets the `powerloom_deploy` codebase to the latest version of the `devnet` branch.
+After completing this one-time setup, you'll be ready to dive into the codebase and start building amazing data applications!
:::
-Once you have forked the above repositories, next step is to clone them on your local system.
+#### Step 4:
+
+Install the required dependencies using pip:
+
+```bash
+pip3 install -r requirements.txt
+```
+
+#### Step 5: Run the Snapshotter Node
+
+Run the command
+
+```bash
+bash build.sh
+```
+or
+```zsh
+zsh build.sh
+```
+
+#### Step 6: Assign your Burner Wallet
```bash
-git clone https://github.com/Deploying a Snapshotter Node on Windows
+
+### Initial Setup | Docker
+
+- **Open PowerShell:**
+ - Start by opening PowerShell on your Windows machine. Search for `"PowerShell"` in the start menu and launch it.
+- **Install Windows Subsystem for Linux (WSL):**
+ - In the PowerShell window, enter the following command:
+
+ ```bash
+ wsl --install
+
+ ```
+
+ - This command installs the Windows Subsystem for Linux, necessary for running Docker.
+- **Download and Install Docker:**
+ - Download Docker from the [official website](https://docs.docker.com/get-docker/).
+ - Follow the installation instructions provided on the website.
+- **Restart Your Computer:**
+ - After installing Docker, restart your computer to apply all changes.
+- **Open Docker:**
+ - Post-restart, open Docker. This should automatically launch a Powershell console which will have WSL installed.
+- **Set Up Linux User Account:**
+ - In the newly opened powershell console, set up a new user account by entering a username and password.
+
+### Granting Docker Permissions
+
+
+- **Modify Docker Group Permissions:**
+ - To grant Docker the necessary permissions, add your user to the Docker group with this command:
+
+ ```bash
+ sudo usermod -aG docker $USER
+
+ ```
+
+ - Logout and login again or restart the Docker service for the changes to take effect.
+- **Verify Docker Installation:**
+ - To confirm Docker is set up correctly, run:
+
+ ```bash
+ docker run hello-world
+
+ ```
+
+ - This command should display a message confirming Docker is functioning.
+
+### Running the Snapshotter Node
+Follow the process outlined below to ensure a smooth setup
+
+#### Step 1: Clone the Snapshotter Deploy Repository
+
+Clone the repository against the respective branch (main by default). Open the terminal and run the below command to clone the deploy repo in a directory named `powerloom-deploy`.
+
+```bash
+git clone https://github.com/PowerLoom/deploy.git --single-branch powerloom_deploy --branch devnet && cd powerloom_deploy
+```
+
+The above command itself navigates you to the Repository Directory `powerloom-deploy`
+
+#### Step 2: Configure the environment variables
1. In the deploy repo's directory, create a new file named `.env`.
2. Copy the contents of [`env.example`](https://github.com/PowerLoom/deploy/blob/devnet/env.example) to `.env`.
-3. Fill in the required variables in the `.env` file:
-
+3. Fill in the required variables in the `.env` file:
+ - use `dir` to check all existing files under the created directory “powerloom_deploy”
+ - use `start env.example` to open env.example file
+ - to create a new .env file use syntax `echo. > .env`
+ - to copy contents from `env.example` to `.env` use code `type env.example > .env`
+ - to open & check contents of `.env` use code `type .env`
+
+#### During the creation of the .env file, add the following details:
- `SOURCE_RPC_URL`: The URL for Source RPC (Local node/Infura/Alchemy) service.
-
- `SIGNER_ACCOUNT_ADDRESS`: The address of the signer account. This should be an unused "burner" address that does not need to have any token balance. You can create a new burner wallet from [our tool](https://devnet-mint.powerloom.dev/burner). During later steps, this address will be registered against the `SLOT_ID` on the `PROTOCOL_STATE_CONTRACT` that is set in this `.env`.
-- `SIGNER_ACCOUNT_PRIVATE_KEY`: The private key corresponding to the burner wallet addresss
-- `SNAPSHOT_CONFIG_REPO`: https://github.com/your-username/snapshotter-configs [Change the username to your GitHub profile to point to your forked snapshotter-configs repository.]
-- `SNAPSHOT_CONFIG_REPO_BRANCH`: Change to your own branch or use the `devnet` branch if you are getting started.
-- `SNAPSHOTTER_COMPUTE_REPO`: https://github.com/your-username/snapshotter-computes [Change the username to your GitHub profile to point to your forked snapshotter-computes repository.]
-- `SNAPSHOTTER_COMPUTE_REPO_BRANCH`: Change to your own branch or use the `devnet` branch if you are getting started.
-- `PROST_RPC_URL`: The URL for the Powerloom Protocol Chain RPC service.
-- `PROTOCOL_STATE_CONTRACT`: The contract address for the protocol state.
+- `SIGNER_ACCOUNT_PRIVATE_KEY`: The private key corresponding to the burner wallet address
+- `SLOT_ID`: Enter your Devnet Slot ID. [You can find the slotID by visiting the [Devnet Dashboard](https://devnet-mint.powerloom.dev/dashboard), or on the [Sepolia block explorer](https://sepolia.etherscan.io/) by searching for the transaction hash of your node mint]
+- `PROTOCOL_STATE_CONTRACT`: Choose the contract address for the protocol state with respect to the Epoch size.
:::note
Currently, there are two variations of Protocol State Contracts available. One where [Epoch](../../Protocol/Specifications/Epoch.md) size is set to 1 and other where epoch size is set to 10 blocks.
@@ -125,49 +282,70 @@ You can find the latest Epoch Contracts in the [example.env](https://github.com/
This should allow developers to build and experiment with a variety of use cases. If you have any custom needs, reach out to the [team](https://discord.com/invite/powerloom)
:::
+**Pre-supplied:**
+
+:::info
+Unless it is a customized need or instructed by us, the below need not be changed or modified.
+
+:::
+
+- `SNAPSHOT_CONFIG_REPO`: https://github.com/powerloom/snapshotter-configs
+- `SNAPSHOT_CONFIG_REPO_BRANCH`: devnet
+- `SNAPSHOTTER_COMPUTE_REPO`: https://github.com/powerloom/snapshotter-computes
+- `SNAPSHOTTER_COMPUTE_REPO_BRANCH`: devnet
+- `PROST_RPC_URL`: The Powerloom Protocol Chain RPC service URL.
- `RELAYER_HOST`: The relayer URL for the Powerloom Protocol Chain.
-- `NAMESPACE`: The unique key used to identify your project namespace.
+- `NAMESPACE`: The unique key to identify your project namespace.
- `POWERLOOM_REPORTING_URL`: The URL for reporting to PowerLoom.
-- `PROST_CHAIN_ID`: Enter the Devnet chain ID
-- `SLOT_ID`: Enter your Devnet Slot ID. [You can find the slotID by visiting the [Devnet Dashboard](https://devnet-mint.powerloom.dev/dashboard), or on the [Sepolia block explorer](https://sepolia.etherscan.io/) by searching for the transaction hash of your node mint]
+- `PROST_CHAIN_ID`: The Devnet chain ID
-Optional variables:
+**Optional variables:**
-- `IPFS_URL`: The URL for the IPFS (InterPlanetary File System) service in HTTP(s) (e.g., `https://ipfs.infura.io:5001`) or multiaddr format (e.g., `/dns4/ipfs.infura.io/tcp/5001/https`).
+- `IPFS_URL`: The URL for the IPFS (InterPlanetary File System) service in HTTP(s) (e.g., `https://ipfs.infura.io:5001`) or multiaddr format (e.g., `/dns4/ipfs.infura.io/tcp/5001/https`).
- `IPFS_API_KEY`: The API key for the IPFS service (if required).
- `IPFS_API_SECRET`: The API secret for the IPFS service (if required).
- `SLACK_REPORTING_URL`: The URL for reporting to Slack.
-#### Step 4: Set Up the Codebase
+#### Step 3: Set Up the Codebase
+
+Set up the codebase by running the `bootstrap.sh` command in the terminal. Developers may use different shells, such as bash or zsh. Adjust the command accordingly:
-Set up the codebase by running the `bootstrap.sh` command in the terminal:
+For bash:
```bash
bash bootstrap.sh
```
+or
+```zsh
+zsh bootstrap.sh
+```
:::info
-This is a one-time step that resets the codebase to the latest version of the branch.
+This is a one-time step that resets the `powerloom_deploy` codebase to the latest version of the `devnet` branch.
After completing this one-time setup, you'll be ready to dive into the codebase and start building amazing data applications!
:::
-#### Step 5:
+#### Step 4:
Install the required dependencies using pip:
```bash
-pip install -r requirements.txt
+pip3 install -r requirements.txt
```
-#### Step 6: Run the Snapshotter Node
+#### Step 5: Run the Snapshotter Node
Run the command
```bash
bash build.sh
```
+or
+```zsh
+zsh build.sh
+```
-#### Step 7: Assign your Burner Wallet
+#### Step 6: Assign your Burner Wallet
```bash
Do you want to assign a burner wallet to a slot? (yes/no):
@@ -176,7 +354,6 @@ Do you want to assign a burner wallet to a slot? (yes/no):
Enter yes and then enter your burner wallet address when prompted.
- This is the `SIGNER_ACCOUNT_ADDRESS` that was set during [Step 3](#step-3-configure-the-environment-variables).
-
Next, you will be prompted to enter a private key:
```bash
@@ -187,7 +364,10 @@ Private Key:
- Please note that this is *not* asking for the private key to your burner wallet.
- Enter the private key of the wallet [**used to mint** the devnet slot](#minting-the-devnet-slot).
-### Troubleshooting Errors
+