# Hero Testnet

**Domain:** [testnet.heroesofnft.com](https://testnet.heroesofnft.com/ext/bc/p91WZe6xXivSgCBZwWwJmAfyxM92r819G7sqqRrYYRPzy49bP/rpc)

## Version

**Avalanchego:** v1.10.8 **Subnet EVM:** v0.5.3

### Subnet Details

**VM ID:** nyfSdZmrxTXbJrxdUoqLegVGQzWF6RVL4jYn7Yr6NsMzpdrFA

**Subnet ID:** 21HEmZx5zVHYcP3JzbmRGVsYdm3HjrM2BMEPoCpoS3fHmZshq9

**Chain ID:** 2KV1ighhTjNpuQq8BVgHeJF3QHdF3KxhY9AqB9M1GfUuBCKjNo

#### Subnet network parameters:

```yml
Network ID: 17772
Chain ID: 17772
Block Gas Limit: 16,000,000
10s Gas Target: 24,000,000
Min Fee: 24 GWei
Target Block Rate: 2s (Same as C-Chain)
```

#### Validators

* **Validator 0**
  * **ID:** `NodeID-6tWHHU9uVWAf46qTYTsnTnVZJeL65hwgR`
  * **IP:** `173.249.33.39`
* **Validator 1**
  * **ID:** `NodeID-AGSMAmA7HStwbKCJAYpBzBvDmjyd6BVvd`
  * **IP:** `154.12.249.187`
* **Validator 2**
  * **ID:** `NodeID-7iWipVaLBfGSMjY6WNCXiWtY5yKLe1kTx`
  * **IP:** `66.94.125.28`

#### Adding to MetaMask

```yaml
Network Name: Hero Testnet
RPC URL: https://testnet.heroesofnft.com:443/ext/bc/2KV1ighhTjNpuQq8BVgHeJF3QHdF3KxhY9AqB9M1GfUuBCKjNo/rpc
Chain ID: 17772
Symbol: HRM
Explorer: https://testnet.avascan.info/blockchain/hero/
```

#### Genesis Data

Hero testnet genesis data JSON as follows:

file: `hero-testnet-genesis.json`

{% code lineNumbers="true" %}

```json
{
  "config": {
    "chainID": 17772,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip150Hash": "0x2086799aeebeae135c246c65021c82b4e15a2c451340993aacfd2751886514f0",
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "istanbulBlock": 0,
    "muirGlacierBlock": 0,
    "subnetEVMTimestamp": 0,
    "feeConfig": {
      "gasLimit": 16000000,
      "minBaseFee": 24000000000,
      "targetGas": 24000000,
      "baseFeeChangeDenominator": 36,
      "minBlockGasCost": 0,
      "maxBlockGasCost": 10000000,
      "targetBlockRate": 2,
      "blockGasCostStep": 500000
    },
    "allowFeeRecipients": false,
    "contractDeployerAllowListConfig": {
      "blockTimestamp": 0,
      "adminAddresses": ["0x0ed6431f48560e943cc8c1edeae3d7f7edde46a7"]
    },
    "contractNativeMinterConfig": {
      "blockTimestamp": 0,
      "adminAddresses": ["0x0ed6431f48560e943cc8c1edeae3d7f7edde46a7"]
    },
    "feeManagerConfig": {
      "blockTimestamp": 0,
      "adminAddresses": ["0x0ed6431f48560e943cc8c1edeae3d7f7edde46a7"],
      "enabledAddresses": []
    }
  },
  "alloc": {
    "0ed6431f48560e943cc8c1edeae3d7f7edde46a7": {
      "balance": "100000000000000000000000000"
    }
  },
  "timestamp": "0x0",
  "gasLimit": "0xF42400",
  "difficulty": "0x0",
  "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "number": "0x0",
  "gasUsed": "0x0",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
```

{% endcode %}

### Joining Hero Testnet

**To setup the node for joining Hero Testnet, first we have to join the Avalanche Fuji testnet then install subnet-evm to plugins with the correct VM ID.**

```bash
# First download go
# install the version > 1.20.2
wget https://go.dev/dl/go1.20.2.linux-amd64.tar.gz
# install go
sudo tar -C /usr/local -xzf go1.20.2.linux-amd64.tar.gz
# add go to $PATH by using avalanche/validators/.profile
# copy the content to the last line of user .profile file
echo "export PATH=$PATH:/usr/local/go/bin:/home/admin/go/bin" >>> .profile
# use updated .profile
source .profile

####################################
# Prebuilt Binaries

# Use avalanche-installer script to join Avalanche Fuji network
# **NOTE:** This script uses **sudo**
wget -nd -m https://raw.githubusercontent.com/ava-labs/avalanche-docs/master/scripts/avalanchego-installer.sh;\
chmod 755 avalanchego-installer.sh;\
./avalanchego-installer.sh

# - OR - Directly download the latest pre-built binary to join Avalanche Fuji
cd ~
wget https://github.com/ava-labs/avalanchego/releases/download/vx.x.x/avalanchego-<distro>-vx.x.x.zip
unzip avalanchego-<distro>-v<x.x.x>.zip
# rename the build folder into avalanche-node
mv build avalanche-node

# Download the subnet-evm binaries for joining Hero Testnet
# darwin amd64 for apple amd chips / darwin for arm64 (apple m series chips)
wget https://github.com/ava-labs/subnet-evm/releases/download/vx.x.x/subnet-evm_x.x.x_<distro>_<chip>.tar.gz
tar xfz subnet-evm_x.x.x_<distro>_<chip>.tar.gz
mv subnet-evm nyfSdZmrxTXbJrxdUoqLegVGQzWF6RVL4jYn7Yr6NsMzpdrFA

# copy plugin to avalanchego/plugins
mkdir ~/.avalanchego/plugins
cp ./nyfSdZmrxTXbJrxdUoqLegVGQzWF6RVL4jYn7Yr6NsMzpdrFA ~/.avalanchego/plugins/

# ** Configs **
# Local node config for whitelisting Hero Subnet & connecting to Fuji
vim ~/.avalanchego/configs/node.json
# paste content below
{
  "http-host": "127.0.0.1",
  "http-port": 9650,
  "network-id": "fuji",
  "track-subnets": "21HEmZx5zVHYcP3JzbmRGVsYdm3HjrM2BMEPoCpoS3fHmZshq9"
}

# Vm alias config
vim ~/.avalanchego/vms/aliases.json
# paste content below
{
  "nyfSdZmrxTXbJrxdUoqLegVGQzWF6RVL4jYn7Yr6NsMzpdrFA": ["hero", "herovm", "hvm"]
}

# Paste the following contents of upgrade.json into
vim ~/.avalanchego/configs/chains/2KV1ighhTjNpuQq8BVgHeJF3QHdF3KxhY9AqB9M1GfUuBCKjNo/upgrade.json

```

Contents of upgrade.json

```json
{
  "precompileUpgrades": [
    {
      "feeManagerConfig": {
        "blockTimestamp": 1671106500,
        "disable": true
      }
    },
    {
      "contractNativeMinterConfig": {
        "blockTimestamp": 1671106500,
        "disable": true
      }
    },
    {
      "feeManagerConfig": {
        "blockTimestamp": 1671112800,
        "adminAddresses": ["0x0ed6431f48560e943cc8c1edeae3d7f7edde46a7"]
      }
    },
    {
      "contractNativeMinterConfig": {
        "blockTimestamp": 1671112800,
        "adminAddresses": ["0x0ed6431f48560e943cc8c1edeae3d7f7edde46a7"]
      }
    },
    {
      "contractNativeMinterConfig": {
        "blockTimestamp": 1671127200,
        "disable": true
      }
    },
    {
      "contractNativeMinterConfig": {
        "blockTimestamp": 1671186630,
        "adminAddresses": [
          "0x0ed6431f48560e943cc8c1edeae3d7f7edde46a7",
          "0x1a3624Ec8355229cC4597c2746C92035cef26241"
        ]
      }
    }
  ]
}

```

Finally execute the avalanchego binary !

```bash
# Execute !
./avalanche-node/avalanchego --config-file=~/.avalanchego/configs/node.json
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.heroesofnft.com/hero-testnet.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
