Operator Guide
How to become a Materios validator in one command
This guide covers how to join the Materios network as a validator operator. Validator operators run a full Materios node (block production + finality) and a cert daemon (threshold attestation) — earning rewards for securing the network.
Prerequisites
Docker
Docker Engine 20+ with Compose v2
CPU
2+ vCPU
RAM
2 GB minimum
Disk
50 GB SSD
Network
Port 30333 open inbound (P2P), outbound HTTPS + WSS
OS
Linux (x86_64 only)
Quick Start
1. Get an invite token
Join the Flux Point Studios Discord and request an invite token in the #materios channel. You will receive a single-use token that looks like a 64-character hex string.
2. Open port 30333
Your node needs port 30333 TCP open for incoming P2P connections. This is how other validators find and communicate with your node.
# UFW example
sudo ufw allow 30333/tcp
# iptables example
sudo iptables -A INPUT -p tcp --dport 30333 -j ACCEPT3. Run the installer
That's it. The installer handles everything:
Checks that Docker, Compose v2, disk, and RAM meet requirements
Pulls the validator node and cert daemon Docker images
Generates a fresh sr25519 keypair (inside a container — nothing to install on your host)
Redeems your invite token to register with the Materios gateway
Writes a fully configured
docker-compose.ymlwith both servicesStarts the validator node and waits for chain sync
Generates session keys (Aura + Grandpa) for block production and finality
Reports session keys to the Materios gateway
Starts the cert daemon for threshold attestation
When it finishes, you'll see:
4. Back up your mnemonic
Your 24-word mnemonic is saved at ~/materios-operator/.secret-mnemonic. Back it up immediately to a password manager or secure offline storage. This is your validator identity — if you lose it, you lose your authority seat.
5. Wait for activation
After your node syncs and reports session keys, the Materios team will:
Add you to the attestation committee
Add you to the validator authority set (Aura block production + Grandpa finality)
Fund your account with MATRA tokens
This typically happens within a few hours. You can check your status at any time:
Explorer: materios.fluxpointstudios.com/explorer/#/committee — look for your node's label
Local health:
curl http://localhost:8080/statusPublic heartbeat API:
curl https://materios.fluxpointstudios.com/blobs/heartbeats/status
What Your Node Does
Once activated, your operator runs two services:
Validator Node (materios-node)
Connects to the Materios P2P network via port 30333
Syncs the full blockchain state
Produces blocks when it's your turn in the Aura round-robin schedule
Participates in Grandpa finality — votes to finalize blocks with BFT consensus
Serves RPC locally for the cert daemon
Cert Daemon
Polls for new receipts that need attestation
Fetches the associated blob data from the gateway
Verifies blob integrity (SHA-256 chunk hashes)
Signs an attestation and submits it on-chain
Sends heartbeats every 30 seconds so the network knows you're online
All of this happens automatically. No manual intervention needed.
Managing Your Node
All commands are run from ~/materios-operator/:
Optional: Custom Label
You can pass a --label flag during installation to set a human-readable name for your node:
If omitted, the installer generates a label from your hostname.
Health Endpoints
The cert daemon exposes a local HTTP server on port 8080:
GET /health
Basic liveness check. Returns 200 if the process is running.
GET /ready
Readiness check. Returns 200 if connected to the chain and recently polled. Returns 503 otherwise.
GET /status
Full daemon state: block height, finality gap, pending receipts, substrate connection, uptime, version.
GET /metrics
Prometheus metrics for monitoring integration.
If Sync Times Out
If your node is still syncing when the installer finishes, session keys won't be generated automatically. Once the node catches up, run:
This generates session keys and reports them to the gateway so the Materios team can activate your authority seat.
Troubleshooting
Installer fails at "Pulling image"
Docker not running or no internet
Start Docker: sudo systemctl start docker
"Invalid invite token"
Token already used or mistyped
Request a new token from the Materios team
"Unsupported architecture"
Not running x86_64
The validator node requires amd64 hardware
Node stuck syncing
No peers found
Ensure port 30333 is open: sudo ufw allow 30333/tcp
/ready returns 503
Daemon still connecting
Wait 1–2 minutes. Check logs: docker compose logs -f cert-daemon
Heartbeat not showing in explorer
Authority seat not yet activated
Contact the Materios team to confirm activation
"Permission denied" on Docker
User not in docker group
Run: sudo usermod -aG docker $USER then log out and back in
Blocks not finalizing after activation
Grandpa key mismatch
Check docker compose logs materios-node for Grandpa errors
Security
Your mnemonic never leaves your machine. It is generated locally inside a throwaway container and saved to
~/.secret-mnemonic.Session keys are generated locally. The
author_rotateKeysRPC runs on your local node. Only the public keys are reported to the gateway.The invite token is single-use. Once redeemed, it cannot be used again.
RPC is localhost-only. Port 9944 is bound to 127.0.0.1 — not accessible from the internet.
P2P port 30333 only carries Substrate protocol traffic. No sensitive data is exposed.
Heartbeat signatures are verifiable. Your daemon signs each heartbeat with sr25519 — anyone can verify your identity on-chain.
Architecture Overview
Requirements Summary
Docker + Compose v2
Python, Rust, or Node.js
2+ vCPU, 2 GB+ RAM, 50 GB SSD
To build anything from source
Port 30333 open inbound
Static IP
Outbound HTTPS + WSS
Complex firewall rules
An invite token from the Materios team
Prior blockchain experience
Last updated

