- README.md
- Pre-requisites <- you are here
- Getting Started
- Advanced Configuration
- Setting Up Allocations
- Setting Up Cost Models
- Viewing Logs
- Tips and Tricks
- Troubleshooting
In order to become an indexer on the Graph Protocol Network, you'll have to stake a minimum of 100,000 GRT.
This can easily be done via the Web UI, by going to the Graph Explorer.
-
Login with Metamask on the Wallet that holds your GRT
-
Go to your Profile, then switch to the "Indexing" Tab and hit "Stake"
-
Stake the amount of GRT that you desire, then you're all done!
The Operator is a wallet address that is entirely separate from the address which you staked your GRT from. This Operator wallet will be filled with ETH, and will be used to send transactions (such as allocations) to the network, while keeping your Staked GRT safe in case of an attack on your infrastructure. It is highly recommended for you to use a new wallet, generated from a new mnemonic phrase.
For this, follow the instructions here first, then head back for the rest.
Okay, assuming that you followed the instructions and you have your new Operator wallet at hand, lets go and link it up with the wallet that you used to stake your GRT.
- Login with Metamask on the wallet that you used to stake your GRT
- Click the Profile dropdown button, and go to "Settings", and then to the "Operators" tab
- Click the Plus (+) button and add your operator public address there
- Submit the transaction, then you're done
Again, as mentioned in the README.md, the setup for the archive node is not included in this docker setup.
This section is purely informative.
Minimum Specs | Recommended Specs | Maxed out Specs | |
---|---|---|---|
CPUs | 16 vcore | 32 vcore | 64 vcore |
RAM | 32 GB | 64 GB | 128 GB |
Storage | 3 TB SATA SSD | 5 TB NVME | 5 TB NVME RAID 10 |
Note: The 3 TB requirement for storage is the absolute minimum, it needs to be at least SATA SSD as spinning disks as too slow to also serve the RPC data to the Graph stack. Also, only Erigon has that little space required. OE (now deprecated) and GETH all take 10 TB+ at the very minimum, and expanding pretty fast.
Self-hosted | Trace API | Stable | EIP-1898 | Min Disk Size | Deprecated |
---|---|---|---|---|---|
OpenEthereum | yes ✔️ | yes ✔️ | yes ✔️ | 8 TB | yes |
GETH | no |
yes ✔️ | yes ✔️ | 8 TB | no ✔️ |
Erigon | yes ✔️ | yes ✔️ | yes ✔️ | 3 TB | no ✔️ |
Service Providers (WIP) |
---|
Infura |
Alchemy |
ChainStack |
Quiknode |
Ankr |
Minimum Specs | Recommended Specs | Maxed out Specs | |
---|---|---|---|
CPU | 16 vcore | 64 vcore | 128+ vcore |
RAM | 32 GB | 128 GB | 256/512+ GB |
Storage | 300 GB SATA SSD | 2 TB NVME | 8+ TB NVME RAID 10 |
The specs/requirements listed here come from our own experience during the testnet. Your mileage may vary, so take this with a grain of salt and be ready to upgrade. :)
-
The minimum specs will definitely get you running, but not for long, assuming you want to serve data for more than a few heavy-weight subgraphs in the future.
-
The recommended specs are a good setup for those that want to dip more than their feet in the indexing waters. Can serve a decent number of subgraphs, but it's limited by the CPU if too many requests flow through.
-
The maxed out specs rule of thumb is basically more is better. More CPUs, more RAM, faster disks. There is never enough. IT...NEEDS....MORE!!!!11
Closing note, regarding the specs mentioned above: ideally, they need to scale up proportional with your stake in the protocol.
- Docker Engine
- Docker Compose
- git
- httpie
- curl
- wget
- jq
On a fresh Ubuntu server login via ssh and execute the following commands:
apt update -y && apt upgrade -y && apt autoremove -y
apt install docker.io docker-compose httpie curl wget git jq nano apparmor -y
rm -rf $(which envsubst) && curl -L https://github.com/a8m/envsubst/releases/download/v1.2.0/envsubst-`uname -s`-`uname -m` -o envsubst && chmod +x envsubst && sudo mv envsubst /usr/bin/envsubst
- NPM (through Node Version Manager)
- Uncomplicated Firewall (ufw)
- pino-pretty
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
# restart or open a new shell/terminal
nvm install node
# restart or open a new shell/terminal
npm install -g pino-pretty
apt install ufw
IMPORTANT: Make sure you open your ssh port in ufw before starting it. The default installation will try to open port 22 (default), but if you changed it, make sure you open the right port, otherwise you'll be locked out. In case that happens, reboot into rescue-mode and disable ufw.