Node Documentation
Run your own Zentalk relay node to strengthen the network, improve message delivery, and earn CHAIN token rewards.
Staking & Rewards
Relay operators stake CHAIN tokens to participate in the network and earn rewards for relaying messages.
| Metric | Value |
|---|---|
| Staking Requirement | 100,000 CHAIN |
| Reward per Message | ~0.01 CHAIN |
| Estimated Daily Earnings | 10-100 CHAIN |
| Estimated Monthly ROI | 3-30% |
Offline Penalties
| Duration | Penalty |
|---|---|
| < 1 hour | No penalty |
| 1-24 hours | Warning, no new messages assigned |
| > 24 hours | 1% stake penalty per day |
| > 7 days | Removed from network, 10% stake slashed |
Quick Setup (One Command)
curl -sSL https://zentalk.io/setup-relay.sh | sudo bashThis script will:
- Install Docker if needed
- Guide you through wallet setup
- Wait for your stake deposit
- Start your relay node
- Show real-time status
Relay Network
Zentalk uses a distributed relay network for message delivery with strong privacy guarantees.
Core Functions
- Message Forwarding - Relay nodes forward encrypted messages between users
- Offline Message Queue - Store messages for offline recipients (encrypted, time-limited)
- 3-Hop Relay Routing - Zentalk’s own relay system through guard, middle, and exit relays (not Tor)
3-Hop Relay Routing
Each relay only knows the previous and next hop, never the full path. The sender wraps the message in 3 encryption layers, and each relay strips one layer.
Components
A full node deployment consists of three services:
| Component | Port | Description |
|---|---|---|
| Relay Server | 9001 | Main message relay and routing |
| DHT Bootstrap | 9000 | Distributed hash table for peer discovery |
| Mesh Storage | 8081 | Temporary encrypted message storage |
Relay Server (Port 9001)
The primary relay service that handles:
- WebSocket connections from clients
- Message forwarding between nodes
- Circuit establishment for 3-hop relay routing
DHT Bootstrap (Port 9000)
Kademlia-based DHT for:
- Peer discovery
- Node address lookups
- Network health monitoring
Mesh Storage (Port 8081)
Distributed storage layer for:
- Offline message queuing
- Encrypted blob storage
- Redundant message delivery
Running a Node
Requirements
- Linux server (Ubuntu 22.04+ recommended)
- 2GB RAM minimum
- 20GB storage
- Static IP or domain name
- Ports 9000, 9001, 8081 open
Quick Start
Option 1: Homebrew (macOS & Linux)
brew tap ZentaChain/tap
brew install zentalk-validatorOption 2: Direct Download
Download the latest release for your platform:
| Platform | Architecture | Download |
|---|---|---|
| macOS | Apple Silicon | zentalk-v1.2.0_darwin_arm64.tar.gz |
| macOS | Intel | zentalk-v1.2.0_darwin_amd64.tar.gz |
| Linux | x64 | zentalk-v1.2.0_linux_amd64.tar.gz |
| Linux | ARM64 | zentalk-v1.2.0_linux_arm64.tar.gz |
| Linux | ARMv7 | zentalk-v1.2.0_linux_armv7.tar.gz |
| Windows | x64 | zentalk-v1.2.0_windows_amd64.zip |
| Windows | ARM64 | zentalk-v1.2.0_windows_arm64.zip |
Extract and run:
# macOS/Linux
tar -xzf zentalk-v1.2.0_*.tar.gz
./relay --help
# Windows
# Extract zip, then run relay.exeOption 3: Docker
- Install Docker
curl -fsSL https://get.docker.com | sh- Clone the node repository
git clone https://github.com/ZentaChain/zentalk-node.git
cd zentalk-node- Configure your node
cp .env.example .env
# Edit .env with your settings- Start the services
docker-compose up -d- Verify it’s running
docker-compose ps
curl http://localhost:9001/healthConfiguration
Key settings in .env:
NODE_NAME=my-relay
PUBLIC_IP=203.0.113.10
BOOTSTRAP_PEERS=dht1.zentalk.io:9000,dht2.zentalk.io:9000
MAX_CONNECTIONS=1000
STORAGE_RETENTION_HOURS=72Privacy Features
Zentalk nodes implement multiple privacy protections:
Guard Relays
- First hop in the circuit
- Trusted entry points to the network
- Prevents traffic analysis at network edge
Traffic Padding
- Constant-rate dummy traffic between nodes
- Masks real message patterns
- Prevents timing correlation attacks
Timestamp Bucketing
- Messages grouped into time buckets
- Reduces timestamp precision
- Prevents correlation of send/receive times
Additional Protections
- No Logging - Nodes don’t log message metadata
- Memory-Only Queues - Offline messages stored in RAM when possible
- Forward Secrecy - Node keys rotated regularly
Monitoring
Check node health:
# Service status
docker-compose ps
# Relay connections
curl http://localhost:9001/stats
# DHT peers
curl http://localhost:9000/peers
# Storage usage
curl http://localhost:8081/statusTroubleshooting
Node not connecting to network
- Verify ports are open:
netstat -tlnp | grep -E '9000|9001|8081' - Check firewall rules
- Ensure bootstrap peers are reachable
High memory usage
- Reduce
MAX_CONNECTIONSin config - Check for connection leaks with
docker stats
Messages not being delivered
- Verify DHT connectivity
- Check storage service is healthy
- Review logs:
docker-compose logs relay