Links
Comment on page

FAQ

Frequently asked questions surrounding the Iron Age Testnet

Table of Contents

Nodes

Setup & Config

Node Hardware Specs

What hardware specifications are required to run a slice node? What about a global node?
The hardware requirement to run a slice node at low/no load:
  • CPU with 4+ cores
  • 16GB+ RAM
  • Fast SSD with at least 1TB free space
  • 10+ MBit/sec download Internet service
The hardware requirement to run a slice node at high/maximum load:
  • CPU with 8+ cores
  • 24GB+ RAM
  • Fast SSD with at least 1TB free space
  • 10+ MBit/sec download internet service
The hardware requirement to run a global node during the Iron Age Testnet at low/no load:
  • Fast CPU with 8+ cores
  • 32GB+ RAM
  • Fast SSD with at least 3TB free space
  • 10+ MBit/sec download Internet service
The hardware requirement to run a global node during the Iron Age Testnet at high/maximum load:
  • Fast CPU with 16+ cores
  • 64GB+ RAM
  • Fast SSD with at least 3TB free space
  • 10+ MBit/sec download Internet service

VPS / vGPU

Can I use a VPS to run a node and/or a virtual GPU to run a miner?
Yes. However, be cautious with how much VPS/virtual GPUs can end up costing, especially with the current hardware requirements to run a node. Additionally, be aware of the terms and conditions of your chosen service, as many VPS providers explicitly ban cryptocurrency mining.
Many users have experienced issues specifically with Contabo VPNs. We recommend against the use of Contabo VPNs to run a node or mine in the Iron Age Testnet.

Node Types

What types of nodes does go-quai support?
The go-quai client currently supports:
Full Node: The default node construction. A full node is a node that stores the entire state of the network, and verifies each new state transition from genesis.
The go-quai client currenlty does not support:
Light Node: A node that only verifies new state transitions and does not retain historical state.
Archive Node: A node that verifies new state transitions and maintains the entire historical state of the network, taking and storing a snapshot of state block by block.
Single-Slice (or just Slice): A node running the Prime chain, a self-selected Region chain, and a self-selected Zone chain.
Multi-Slice: A node running the Prime chain, one or more self-selected Region chains, and two or more self-selected Zone chains.
Global: A node running the Prime chain, all Region chains, and all Zone chains.
Green = Currently supported in go-quai
Red = Not currently supported in go-quai
go-quai
Single-Slice
Multi-Slice
Global (All Slices)
Light Node
Light Slice Node
Light Multi-Slice Node
Light Global Node
Full Node
Full Slice Node
Full Multi-Slice Node
Full Global Node
Archive Node
Archive Slice Node
Archive Multi-Slice Node
Archive Global Node

Global v. Slice Node

Are there any advantages to running a global node over a slice node?
While there is no direct benefit to running a global node over a slice node, some miners may find it useful to run a global node in order to be able to quickly change which slice of the network they are hashing.
A slice node will be sufficient to trustlessly interact with the network in all necessary ways for the vast majority of users -- however, for users seeking quick and complete access to data on all chains (e.g. developers deploying/maintaining a multi-chain dapp, miners looking to rapidly switch their hashrate between chains), a global node may be the optimal setup.

Network.env

What is the network.env file for?
The network.env file can be thought of as the configuration file for your node. When starting, your node will look at the network.env file to know which slices to run, which network to run on (colosseum, garden, etc.), where mining rewards should be paid out to, and more.
  • COINBASE : The address in each chain (slice) that mining rewards are paid to. Note that there is one coinbase address per chain.
  • NETWORK : the network (testnet [colosseum], devnet [garden], etc.) your node is running on.
  • SLICES : This parameter determines which slices of the network the node will run (i.e. determines whether the node will be a slice node, a multi-slice node, or a global node).
The “Run a Node” page in the Quai docs contains information on the most important things to change in this file: https://docs.quai.network/node/node-overview/run-a-node#node-configuration

Networks

What networks are available to run?
  • NETWORK=colosseum The main network of the Iron Age Testnet
  • NETWORK=garden The development network of the Iron Age Testnet
  • NETWORK=local The local development environment
The Garden developer network operates on the BLAKE3 hashing algorithm at low difficulty, meaning the Garden developer network has a significantly higher chance of reorgs than the main Colosseum network.

Configuring Slices

How do I tell my node which slices to run?
In the codebase, a slice is identified by its region and zone index. Region and zone indices are 0-indexed and range from 0-2.
Region
Zone
Chain Index
Chain Name
Region 1
Zone 1
[0 0]
Cyprus-1
Region 1
Zone 2
[0 1]
Cyprus-2
Region 1
Zone 3
[0 2]
Cyprus-3
Region 2
Zone 1
[1 0]
Paxos-1
Region 2
Zone 2
[1 1]
Paxos-2
Region 2
Zone 3
[1 2]
Paxos-3
Region 3
Zone 1
[2 0]
Hydra-1
Region 3
Zone 2
[2 1]
Hydra-2
Region 3
Zone 3
[2 2]
Hydra-3
The SLICES parameter of the network.env file determines which slices of the network the node will run (i.e. determines whether the node will be a slice node, a multi-slice node, or a global node). To spin up a slice node, edit the network.env file to modify the slices you want to run. For example, if you wanted to run two slices, you would change the SLICES line to the following (be aware of spacing):
SLICES="[FIRST_REGION_NUM FIRST_ZONE_NUM],[SECOND_REGION_NUM SECOND_ZONE_NUM]"
Example SLICES configurations:
Multi-Slice Node running Cyprus-1, Cyprus-2, and Cyprus-3:SLICES="[0 0],[0 1],[0 2]"
Slice Node running Paxos-3:SLICES="[1 2]"
Global node running all slices:SLICES="[0 0],[0 1],[0 2],[1 0],[1 1],[1 2],[2 0],[2 1],[2 2]"

Node Maintenance

Checking Nodelogs

How do I check my nodelogs?
To show your recent nodelogs for a specific chain, you can run the following:
// This command will display recent logs from Cyprus-1.
// To edit which chain's logs will display, edit the chain index.
cat nodelogs/zone-0-0.log
To stream your nodelogs for a specific chain, you can run the following (to exit the stream, you can run ctrl+c):
// This command will display a stream of logs from Cyprus-1.
// To edit which chain's logs will display, edit the chain index.
tail -f nodelogs/zone-0-0.log
To show the most recent blocks your node appended in a specific chain, run the following line of code:
// This command will display recent logs containing "Appended" from Cyprus-1.
// To edit which chain's logs will display, edit the chain index.
cat nodelogs/zone-0-0.log | grep Appended
To display an ongoing stream of logs showing which blocks are being appended, run the following line of code (to exit the stream, use ctrl+c):
// This command will display a stream of logs containing "Appended" from Cyprus-1.
// To edit which chain's logs will display, edit the chain index.
tail -f nodelogs/zone-0-0.log | grep Appended
If you are running a global node and/or want to check the logs of all chains simultaneously to see which blocks are being appended, the chain index can be replaced with*:
// This command will display a stream of logs from Cyprus-1.
// To edit which chain's logs will display, edit the chain index.
tail -f nodelogs/zone-0-0.log
// This command will display a stream of logs containing "Appended" from all chains.
tail -f nodelogs/*.log | grep Appended

Nodelogs By Chain

What is the difference between checking Prime, Region, and Zone nodelogs? Which nodelogs should I check?
Quai Network runs a hierarchy of chains. All nodes run the Prime chain and a minimum of one Region and Zone chain.
Slices are identified by Zones. Thus, when checking nodelogs, you should check the logs for the Zone(s) that your node is running. Since block time for Zones are the fastest, checking the Zone nodelogs provides the most accurate understanding of where your node has synced to/what is happening in your node at any given point in time.

Updating a Node

If/when a new release of go-quai comes out as part of the Testnet, what do I need to do to update my node?
First, stop your existing node:
make stop
Next, pull the latest code to your machine:
git fetch --all
Next, check out the newest release:
// Replace [NEW RELEASE] with the newest go-quai release (e.g. v0.17.0-rc.1)
git checkout [NEW RELEASE]
Then, you can remake the go-quai binaries:
make go-quai
Now you’re able to restart your node:
make run
You can check the status of your node using the previously mentioned nodelogs commands.

Resetting a Node

How do I delete my node's database and reset my state?
Do not do this without good reason! There should be no need to clear state for the vast majority of users participating in Testnet. Resetting a node is a NON-REVERSABLE PROCESS -- after you clear your database, you will need to completely re-sync your node from genesis.
Developers and node runners may find that situations arise where they need to completely clear their node of synced state and/or do a full reset in the case of an issue or bug. A full reset of a node involves stopping the node, clearing the current nodelogs, and removing all synced state.
As a final reminder, resetting your node is non-reversible and should only be done if you fully understand the implications of removing all synced state.
For Linux Machines, we'll remove the nodelogs directory and the base .quai directory which contains all synced state. To do this, run the following command:
// Remove nodelogs
rm -rf nodelogs
// Remove go-quai database
rm -rf ~/.quai
For MacOS machines, we'll use a different command to remove the same directories:
// Remove nodelogs
rm -rf nodelogs
// Remove go-quai database
rm -rf ~/Library/Quai
After running one of the two above commands, the node has been fully reset and is ready to be restarted.

Networking

UPNP Issues

I got the error “ERROR: This computer is not publicly reachable and cannot join the P2P network. Please forward the necessary ports or enable UPnP on your router. See https://docs.quai.network/ for guidance.” when trying to start my node. How do I fix this?
If you got this error, it means your router does not have UPNP enabled. Enabling UPNP (Universal Plug and Play) allows other devices (namely other Quai nodes) to discover your node and establish proper networking.
While each router has a different protocol for enabling UPNP, this guide covers how to enable UPNP on routers from many common ISPs: https://www.lifewire.com/enable-upnp-on-a-router-5206124. You can also get help turning on UPNP on your router in the Quai Docs.
If you do not want to enable UPNP on your router, you can specifically open peering ports 30303 through 30315 for both TCP and UDP. You can learn how to open specific ports on your router here: https://nordvpn.com/blog/open-ports-on-router/. If you decide not to enable UPNP, you will need to modify your network.env file to reflect ENABLE_NAT=true and specify your external IP address in EXT_IP.
To verify that your ports are open, you can use this service: https://www.yougetsignal.com/tools/open-ports/.
Once you enable UPNP on your router or open the necessary ports, restart your node.

Syncing & Peering

Check Sync Status

How do I know if my node has synced to the network?
To check if your node is synced to the tip of the network, we need to figure out what the most recent blocks your node has appended are.
To show the most recent blocks your node appended in a specific chain, run the following line of code:
// This command will display recent logs containing "Appended" from Cyprus-1.
// To edit which chain's logs will display, edit the chain index.
cat nodelogs/zone-0-0.log | grep Appended
// Ex. for viewing appended blocks for zone-1-1
cat nodelogs/zone-1-1.log | grep Appended
To display an ongoing stream of logs showing which blocks are being appended, run the following line of code (to exit the stream, use ctrl+c):
// This command will display a stream of logs containing "Appended" from Cyprus-1.
// To edit which chain's logs will display, edit the chain index.
tail -f nodelogs/zone-0-0.log | grep Appended
If you are running a global node and/or want to check the logs of all chains simultaneously to see which blocks are being appended, the chain index can be replaced with *:
// This command will display recent logs containing "Appended" from all chains.
cat nodelogs/*.log | grep Appended
// This command will display a stream of logs containing "Appended" from all chains.
tail -f nodelogs/*.log | grep Appended
You can also check the progress of your node's sync using the client JSON RPC API. The quai_syncing API method can be used easily in the Quai Postman Workspace or via the command line. If the API returns false, your node has synced to the current tip of the chain.
Once you’ve determined what block your node has most recently appended, check whether the block height on your node corresponds to the latest maximal block height for the same chain on the Kibana dashboard or Quaiscan. If they are the same, your node has synced! If your node’s block height is less than the block height of Kibana/Quaiscan, you are still syncing.
Your node may briefly stop appending blocks for certain periods of time — this is normal, and does not require a restart of the client. Reach out for support if your node has not appended any blocks in any slice for over an hour.
Region
Zone
Chain Index
Chain Name
Quaiscan Link
Region 1
Zone 1
[0 0]
Cyprus-1
Region 1
Zone 2
[0 1]
Cyprus-2
Region 1
Zone 3
[0 2]
Cyprus-3
Region 2
Zone 1
[1 0]
Paxos-1
Region 2
Zone 2
[1 1]
Paxos-2
Region 2
Zone 3
[1 2]
Paxos-3
Region 3
Zone 1
[2 0]
Hydra-1
Region 3
Zone 2
[2 1]
Hydra-2
Region 3
Zone 3
[2 2]
Hydra-3

Global Sync Status

How can I check the syncing status of all of my node's slices at once?
To check the syncing status of all of your node's slices at the same time, you can use this community-made script: https://github.com/satman81/guides/blob/main/quai/quaiblockheight.py.

Time to Sync

How long should it take my node to sync?
Syncing time depends on the quality of peers, the size of the network's state, the node's internet connection, and more. In general, at the time of writing (state size of ~22gb) a global node should take ~12-24 hours to sync to the tip of the network from genesis. A slice node will sync slightly faster than a global node. If syncing from the most recently updated snapshot/archive, a global node should take no more than an hour to sync to the tip of the network.

Peer Requirements

How many peers do I need before my node starts syncing?
In order to start syncing, your node will need to have a minimum of three (3) peers in each slice of the network. Your node will not begin appending blocks to any slice before having 3+ peers in every slice.

Flushing Peers

How can I drop/flush all my peers?
It is not recommended to drop your peers, as your node will stop syncing and validating blocks. However, if you experience an issue that requires you to flush your peers, you can use the following command on Linux:
rm -rf ~/.quai/**/**/nodes
Or the following command on MacOS:
rm -rf ~/Library/Quai/**/**/nodes

Syncing Out of Order

Why is my node syncing blocks out of order?
Within Quai Network, the process of syncing is not always linear but rather based on the entropy reduction of blocks. Nodes will sync blocks in the order of entropy reduction, not block number -- thus, you may occasionally see non-linear patterns in syncing.

Errors

Genesis Mismatch

I got the error "Fatal: Failed to register the Quai service: genesis block mismatch:" when trying to start my node. How do I fix this?
If you got this error, it likely means that your network.env file needs to re-copied.
Start by running the following to determine which tag you are on:
git status
If you are on the correct tag, you need to re-copy your network.env file and re-configure the SLICES, NETWORK, and COINBASE parameters. This will ensure you are running on the correct nonce.
cp network.env.dist network.env
Once you've re-copied and re-configured the network.env file, you should be able to run your node.
If, when you run git status, you are NOT on the correct branch, be sure to update your node following this link and then come back here to re-copy the network.env.

Unclean Shutdown

What does "detected unclean shutdown" mean? Do I need to be concerned?
The "detected unclean shutdown" message means your node detected an abnormal shutdown. This could be either a direct process kill or your computer shutting off. The go-quai v0.19.2 update ensured that even in the event of an unclean shutdown, your node properly shuts down and correctly saves your chain database.

Node Not Appending

Why is my node not appending any more blocks?
This is a broad question, but here are some things you can check. Generally, an issue with blocks no longer appending points to a networking issue:
  • Ensure you either have UPNP enabled or ports 30303-30315 opened.
    • If you fail to port forward correctly but still set an EXT_IP, your node will bypass the UPNP error but will eventually be dropped by all peers.
    • Ensure if you are port forwarding that you have properly configured the ENABLE_NAT flag to equal true and the EXT_IP flag to equal your external IP.
    • There is a difference between an internal and external IP; make sure you are inputting your external IP to the EXT_IP flag.
If none of these fixes address your issue, send a message in the Quai Discord to receive personalized support.

CPU 100% Load

Why is my CPU running at 100% load even after I have finished syncing to the tip of the network?
There are a few different things that could cause your CPU to be running consistently at 100% load:
  1. 1.
    If you are running a CPU on the low end of the minimum specifications, high CPU usage may be unavoidable.
  2. 2.
    It is possible to reduce the maximum number of peers in each slice to reduce CPU usage. The default value of max peers is 50. Reducing max peers to 30 will lower CPU usage without causing networking issues. We recommend against reducing max peers to lower than 30, as having less than 30 peers can begin to cause networking issues. This functionality will be added to the network.env configuration file at a later date.

GPU Mining

Setup & Config

Hashing Algorithm

What hashing algorithm is used in the Iron Age Testnet?
The Iron Age Testnet is running using the ProgPoW hashing algorithm for mining. The ProgPoW algorithm was chosen due to the difficulty of creating application-specific integrated circuits (ASICs) that can mine ProgPoW. The use of ASIC-able algorithms such as SHA-256 quickly renders consumer-grade hardware impractical, resulting in large barrier to entry for competitive mining.
ProgPoW was developed as an EIP to replace Ethash, but was discarded due to the merge. The original ProgPoW EIP (EIP-1057) can be found here. Additional information on ProgPoW can be found on the ETH Magicians forum here.

Miner Hardware Specs

What are the hardware requirements for a GPU miner?
To run a GPU miner, you’ll need:
  • A node running a stratum proxy to connect to
  • An AMD or Nvidia GPU
  • An AMD or Intel CPU
  • 4GB+ of RAM

Coinbase Addresses

Can I input the same address to mine to for all of the coinbase addresses in my node's network.env?
No. Within any node's network.env, each coinbase address must be unique and properly map to the shard it has been inputted for. You can learn more about how Quai Network uses a sharded address structure here.

Mining OS

What operating systems are supported by the quai-gpu-miner?
Currently, Ubuntu (Version 20.04) and HiveOS are the only operating systems supported by the miner.

Installation Script

Is there a script I can use to set up my miner automatically?
There is a script to build the miner supported on HiveOS! To use the script, you can run the following commands in your HiveOS terminal:
sudo selfupgrade
curl -fsSL https://raw.githubusercontent.com/dominant-strategies/quai-gpu-miner/main/miner_deploy_script.sh | bash
Running this command will build and install all the necessary prerequisites for the miner. After this script has finished running, you can point your miner at your stratum proxy and start hashing with the following commands:
cd /home/user/quai-gpu-miner/build
./ethcoreminer/ethcoreminer -G -P stratum://YOURPROXYIPADRESS:STRATUMPORT

Dedicated Hardware

Does my miner have to be running on the same machine as my node?
No. While you can connect the GPU miner to a node on the same machine, it is recommended to run the GPU miner and a node on separate machines, using the stratum proxy to point the miner at the node.

Errors

Mining Pre-Sync

What happens if I start mining before my node is synced?
If you start mining before your node is synced, you will be mining a fork of the network. This will cause you to mine blocks that all other nodes will reject, wasting hashrate. Additionally, if your node repeatedly propagates blocks that other nodes consider to be invalid, you run the risk of being dropped as a peer, which would cause your node to never sync to the network.
Do not mine to a node that is not already synced to the tip of the network.

Error on Make and/or Build

I am getting errors on the make and/or build step of setting up the quai-gpu-miner. How do I fix this?
The most common cause of errors on the make and/or build step of setting up the quai-gpu-miner are running on an unsupported operating system. Be sure you're running on either Ubuntu 20.04 or HiveOS.

No OpenCL Platforms Found / No Usable Mining Devices

I got the error "Error: No usable mining devices found." How do I fix this?
There are two likely causes of this error on bare-metal:
  • You're running your miner in a virtual machine on top of Windows. Virtual machines on Windows don’t have access to the GPU or its drivers. To get the miner to work, you'll have to boot Linux or Hive, not run a VM.
  • You're dual booting using secure boot. If you are dual booting, be sure you've turned off secure boot in your BIOS to ensure that both operating systems can access your GPU.
If the issue is on a VPS rather than bare-metal, installing nvidia-cuda-toolkit may help detect the GPU(s).
  1. 1.
    sudo apt install nvidia-cuda-toolkit
  2. 2.
    sudo apt update && sudo apt upgrade -y
  3. 3.
    sudo apt install -y git cmake build-essential mesa-common-dev
  4. 4.
    sudo reboot
  5. 5.
    Re-join the mining guide starting from configure and run.

SIGSEGV

I got the error "SIGSEGV encountered..." and my miner crashed. How do I fix this?
The Dominant Strategies team is actively investigating the source of this error/crash. If you have experienced this error, we would greatly appreciate your submission of the following form to assist in our triaging of the issue: https://quai.typeform.com/sigsegv.
Some notes on troubleshooting this issue while we continue to investigate:
  • Try upping the voltage and dropping the core clock of your GPU(s). This will cause your GPU(s) to run in a more stable state, but also reduce the efficiency of the miner. It may be worth testing to see if running in a less-efficient, more-stable manner resolves the issue.
  • If you are still experiencing the SIGSEGV issue while running at high voltage and low core clock speeds, you should start looking into your GPU's drivers.
  • If you are not able to resolve the issue via the above suggestions, get in contact with our team via the Quai Dev Discord to share more information about your specific issue.

AMD Low Hashrate

I am getting significantly lower hashrate than expected on AMD cards. How do I fix this?
Our team has noticed that many AMD graphics cards give significantly lower hashrate than expected when mining ProgPoW. The likely cause is that AMD builds are not currently optimized for ProgPoW. One troubleshooting tip to try is looking into the graphics-card-specific drivers and installing them for your GPUs. However, this may still not resolve your issue.
At some point in the future, a more optimized quai-gpu-miner build for AMD cards will be released that addresses this discrepancy between expected and real hashrate.

Optimization

Slice Choice

Which slice should I mine?
There are two major factors that miners should consider when deciding which slice of the network to mine in the Iron Age Testnet:
  1. 1.
    Difficulty - during the Iron Age, Mainnet Rewards for mining are determined based on each address's proportion of total blocks mined. Thus, miners are consistently incentivized to mine the lowest-difficulty slice of the network. The slice that has the lowest difficulty will change over time as miners come online and move their hashrate around; to find which chain currently has the lowest difficulty, you can check the Quai Stats page.
  2. 2.
    Latency - if all slices of the network are operating at approximately the same difficulty, miners may still be able to gain an additional advantage by selecting the slice of the network they have the lowest latency to. This will minimize a miner's chances of proposing blocks that get uncled, reducing wasted hashrate. Latency is a secondary optimization to difficulty -- it is up to miners to determine at what point they believe they can benefit from considering latency and which slice they have the lowest latency to.

Tuning

How should I tune my GPUs to optimize for ProgPoW?
Tuning GPUs has certain risks you should be aware of:
  • Improperly tuned GPUs can result in crashes and system instability.
  • Tuning/changing certain settings may void the warranty of your GPU.
  • Tuning improperly can cause damage to your GPUs. Always research the limits and specs of your specific cards.
Proceed with tuning at your own risk!
Tuning GPUs for optimal performance with the ProgPoW algorithm can be done in HiveOS. ProgPoW is a highly memory intensive algorithm. We have seen success from community members and internally by tweaking the following settings:
  1. 1.
    Increasing memory clock.
  2. 2.
    Reducing core clock.
  3. 3.
    You can additionally explore over/under-volting, but this will require special tools and cannot be done through HiveOS.

Stratum Proxy

Setup & Config

Stratum IP Address

How do I find the IP address of my stratum proxy?
To find the IP of your stratum proxy, you can run the following command:
curl ifconfig.me
If your node, stratum proxy, and GPU miner are running on the same machine, you should use the IP address 0.0.0.0.

Stratum Port

What port does my stratum proxy run on?
Unless you changed the port in the config file, your stratum proxy will run on port 3333 by default.

Keep Proxy Running

How can I make sure my stratum proxy keeps running even if my screen turns off?
Programs like tmux or screen can be used to keep processes running in the background, even if your screen turns off. If you run your stratum proxy process in one of these programs, it will continue to run when your screen turns off.
Does my stratum proxy have to be running on the same machine as my node?
Yes. In order for your GPU miner to be able to use the stratum proxy to connect to your node, the stratum proxy and node must be running simultaneously on the same machine.
// REGION-WS-PORT and ZONE-WS-PORT should be replaced with the correct ports.
./build/bin/quai-stratum --region=REGION-WS-PORT --zone=ZONE-WS-PORT
To properly run this command, you'll need to replace REGION-WS-PORT and ZONE-WS-PORT with the correct ports for the slice you wish the proxy to run.
To find the correct WS ports, you can either check the Node Overview page of the docs, or alternatively use the following table to immediately find the correct command:
Chain Name
Chain Index
Command
Cyprus-1
[0 0]
./build/bin/quai-stratum --region=8579 --zone=8611
Cyprus-2
[0 1]
./build/bin/quai-stratum --region=8579 --zone=8643
Cyprus-3
[0 2]
./build/bin/quai-stratum --region=8579 --zone=8675
Paxos-1
[1 0]
./build/bin/quai-stratum --region=8581 --zone=8613
Paxos-2
[1 1]
./build/bin/quai-stratum --region=8581 --zone=8645
Paxos-3
[1 2]
./build/bin/quai-stratum --region=8581 --zone=8677
Hydra-1
[2 0]
./build/bin/quai-stratum --region=8583 --zone=8615
Hydra-2
[2 1]
./build/bin/quai-stratum --region=8583 --zone=8647
Hydra-3
[2 2]
./build/bin/quai-stratum --region=8583 --zone=8679

Advanced Setup

Multiple GPUs to Proxy

Is there a limit to how many GPUs I can connect to a single proxy?
Not that we've found during our testing! If you end up finding a limit, let us know in the Quai dev discord.

Multiple Proxies to Node

Can I connect multiple proxies to a single node?
Yes. If you choose to run multiple proxies simultaneously, you need to pass the flag --stratum=PORT in the run command to determine which port each proxy will run on. Each stratum proxy must be set up to run on a unique and open port.

Development & Deployment

Smart Contracts

Deploy Requirements

What are the prerequisite requirements to deploy a smart contract?
To deploy a smart contract on Quai, you'll need a few things:
  • QUAI to cover gas: similar to a normal transaction, you'll need to set your gas limit. Be aware that contract deployment requires significantly more gas than a simple transfer.
  • Contract Bytecode: generated using a compiler
  • Deployment script or plugin
  • Access to a Quai node: you can do this either by running your own node, accessing a publicly available node, or through API key via a node service.

Local v. Remote Deploy

Do I have to run a local node to deploy, or can I use RPC endpoints?
You can use either. Importantly, however, if you are deploying your contracts using your own local node, you must be synced to the tip of each blockchain you wish to deploy a contract on.
In practice, this means that if you are operating a slice node, you’ll need to use RPC endpoints to deploy to any chains other than the single Zone chain that your node maintains. On the other hand, if you are running a global node, you will be able to deploy against your local node in all chains and will not need to use an RPC endpoint for any chain.
RPC endpoints:
Chain Name
Chain Index
RPC Endpoint
Cyprus-1
[0 0]
https://rpc.cyprus1.colosseum.quaiscan.io
Cyprus-2
[0 1]
https://rpc.cyprus2.colosseum.quaiscan.io
Cyprus-3
[0 2]
https://rpc.cyprus3.colosseum.quaiscan.io
Paxos-1
[1 0]
https://rpc.paxos1.colosseum.quaiscan.io
Paxos-2
[1 1]
https://rpc.paxos2.colosseum.quaiscan.io
Paxos-3
[1 2]
https://rpc.paxos3.colosseum.quaiscan.io
Hydra-1
[2 0]
https://rpc.hydra1.colosseum.quaiscan.io
Hydra-2
[2 1]
https://rpc.hydra2.colosseum.quaiscan.io
Hydra-3
[2 2]
https://rpc.hydra3.colosseum.quaiscan.io

QRC-721 Linking

How does the “addApprovedAddress.js” script provided in the docs tutorial change when deploying a QRC-721?
The addApprovedAddress.js script provided in the “Deploy a Multi-Chain Smart Contract” tutorial in the Quai docs is specifically designed to link the deployed QRC-20 contracts. To interlink QRC-721 contracts, you can use the same script, but need to replace all instances of “20” in the script with “721”.
You can use the exact same script to link QRC-721 and QRC-20 contracts only because they use the same method for linking/adding approved contracts. This may not be true for all contracts.

Wallets

General

TX Processing Times

How long should I wait for my transaction to process?
Same Zone: Referred to as an “internal” transaction. These transactions receive settlement in ~10 seconds.
Near-Coordinate: A near-coordinate transaction is an “external” transaction that traverses from one Zone to another Zone under the same Region. For example, a transaction from Cyprus-1 to Cyprus-2 is considered “near-coordinate.” Near-coordinate transactions receive settlement in ~300 seconds.
Far-Coordinate: A far-coordinate transaction is an “external” transaction that traverses from one Zone to another Zone under a different Region. For example, a transaction from Cyprus-1 to Paxos-1 is considered “far-coordinate. Far-coordinate transactions receive settlement in ~3,300 seconds.
Transaction Type
ETX Emitted?
Description
Settlement Time
Same Zone
No
A transaction where the originating Zone and the destination Zone are the same.
~10s
Near-Coordinate
Yes
A transaction where the originating Zone and the destination Zone are different, but are subordinate to the same Region.
~300s
Far-Coordinate
Yes
A transaction where the originating Zone and the destination zone are different, and are subordinate to different Regions.
~3,300s

Pelagus Wallet

Installing Pelagus

Where can I install Pelagus?
Pelagus Wallet can be installed from the Chrome Web Store.

Spanish Seed Phrase

Why is my Pelagus seed phrase in Spanish?
The Pelagus seed phrases are generated in Spanish to make it impossible to reuse seed phrases used in Pelagus during Testnet on Mainnet. Upon Mainnet, Pelagus will use seed phrases generated in English.

Pelagus Browsers

What browsers is Pelagus supported on?
As a Chromium-based extension, Pelagus is supported on most Chromium browsers, including Google Chrome, Brave, Opera, Edge, and more.

Is Pelagus Mobile

Can I use Pelagus on mobile?
While largely untested, many mobile browsers can offer support for Chromium extensions. We recommend testing the Pelagus extension on mobile Chromium browsers like Kiwi or Yandex. Let us know if it works!

Pelagus Refreshing

Does Pelagus Wallet auto-refresh like Metamask?
No. Unlike Metamask and most other browser extension wallets, Pelagus only submits RPC calls to update your balance, transaction history, etc. when you open, close, or interact with the application. To get Pelagus to query the RPCs and update your balance, you can close and re-open the extension or switch between accounts.

Koala Wallet

Where can I install Koala Wallet?
Koala Wallet can be installed from the Chrome Web Store, iOS Apple Store, and/or Google Play Store.
When will Koala Wallet be adding support for the Iron Age Testnet?
Currently, Koala Wallet does not support Quai. Koala Wallet has expressed interest in adding support for Quai Network’s Iron Age Testnet as soon as possible after Testnet launch. While no hard date is available for when Koala will support the Testnet, the Koala Twitter and Koala Discord share consistent updates on the status of the project.