SQD token rewards.
Prerequisites
Before you begin, ensure you have the following:Hardware Requirements
- CPU: 4 vCPU
- RAM: 16GB
- Storage: 1TB SSD
- Network: Stable 24/7 Internet connection (minimum 1Gbit)
Network Configuration
- Public IP address
- Two ports open for incoming traffic:
- UDP port for P2P communication (default: 12345)
- TCP port for Prometheus metrics (default: 9090)
Software Requirements
- Docker
- Docker Compose
Financial Requirements
- 100,000
SQDtokens (in your wallet or vesting contract) - Arbitrum ETH for gas fees
SQD tokens should be available in your Primary Wallet—either directly or
through a vesting contract. With sufficient funds, one Primary Wallet can
register multiple workers.Setup Options
You can run a worker using either:- Pre-built Docker image (recommended)
- Build from source code
Setup Instructions
Choose data and key storage locations
- Data directory - Select a location that can accommodate at least 1TB
- Key file location - Must be outside the data directory
Download the setup script
Run the setup script
- Prompt you for a UDP port for P2P communication
- Ask if you want to set your public IP address statically
- Data directory at
<DATA_DIR_PATH> - Key file at
<KEY_PATH> .envfile with default configurationdocker-compose.yamlfile for running the worker
Copy your peer ID
Worker Registration
Connect your wallet
- Go to network.subsquid.io
- Connect your Primary Wallet (the one holding your 100,000
SQDtokens)
Access worker registration
Fill the registration form
-
Funding source: Choose either:
- “Wallet” - Use
SQDtokens directly from your wallet - “Vesting contract” - Use
SQDtokens from a vesting contract
- “Wallet” - Use
- Peer ID: Enter the peer ID you copied during setup
- Submit the form by confirming the transaction in your wallet
Wait for activation
- Go to the “Workers” tab
- Monitor your worker’s status
Running Your Worker
setup_worker.sh during the
setup process.- Docker (Recommended)
- Build from Source
Updating Your Worker
Periodically, you’ll need to update your worker to the latest version. Follow these steps:- Docker Update
- Source Build Update
- Navigate to your installation files folder
- Fetch the updated
docker-compose.yaml:
- Apply the update:
Understanding Worker Jailing
Jailing is a scheduler-side mechanism that ensures data chunk availability across the network. The scheduler identifies potentially unreliable workers and guarantees that each chunk exists on multiple reliable nodes.Impact on Rewards
While occasional jailing is normal, frequent jailing may reduce your rewards. Monitor your worker’s status and address any underlying issues.Common Jailing Reasons
Check your worker logs to identify which issue applies: Stale Worker - Worker didn’t download assigned chunks in the last 900 seconds- Most common jailing reason
- Check worker logs for the root cause
- Often related to download timeouts
- May occur after extended downtime
- Scheduler considers the worker offline and stops assigning chunks
- Was used to detect P2P network connectivity issues
- Implementation challenges led to this check being disabled
Troubleshooting
Where do I find my peer ID?
Where do I find my peer ID?
-
Setup script output - Printed when you run
setup_worker.sh(see Setup Instructions) -
Worker logs:
- Docker setup: Run
docker compose logs - Source build: Check the output of the worker process
- Docker setup: Run
I see "Failed to download chunk ... operation timed out" in the worker logs
I see "Failed to download chunk ... operation timed out" in the worker logs
- Set
S3_TIMEOUTto180in your.envfile - If the issue persists, also set:
CONCURRENT_DOWNLOADSto1S3_READ_TIMEOUTto30
I see "Unable to get assignment: deadline has elapsed" in the worker logs
I see "Unable to get assignment: deadline has elapsed" in the worker logs
ASSIGNMENT_FETCH_TIMEOUT_SEC=90 in your .env file and restart the worker.I see an "Insufficient peers..." error in the worker logs
I see an "Insufficient peers..." error in the worker logs
Can I move my worker to another server?
Can I move my worker to another server?
- Copy the key file (at
<KEY_PATH>) to the new server - Set up the new data directory
- Start the worker on the new server
- Make sure the worker on the old server is not running anymore
I have just started my worker but see no logs
I have just started my worker but see no logs
Should I build from source or run with Docker?
Should I build from source or run with Docker?
How do I check that my worker is updated to the latest version?
How do I check that my worker is updated to the latest version?
Which Linux distro is recommended?
Which Linux distro is recommended?
I see "error from daemon in stream: Error grabbing logs"
I see "error from daemon in stream: Error grabbing logs"
I'm getting 'Clone succeeded, but checkout failed' when cloning the worker repo
I'm getting 'Clone succeeded, but checkout failed' when cloning the worker repo
What are the consequences of losing my key file / getting it stolen?
What are the consequences of losing my key file / getting it stolen?
- You won’t be able to run your worker until you generate and register a new one
- The perpetrator can cause connectivity issues for your worker
- Unregister your worker on the “Workers” tab
- Generate a new key file
- Register your new peer ID

