Manage
This section details the management of Canopy nodes.
Disclaimer: Canopy is alpha-stage software. While documentation and guides are provided to assist users, they are offered without warranties, guarantees, or assurances of reliability. Users are solely responsible for any issues that may arise, including but not limited to the loss of funds. Please proceed with caution.
Network Interfaces
Endpoints
Familiarize yourself with the created endpoints from the Quickstart guide
Grafana: https://monitoring.<YOUR_DOMAIN>
Web wallet for CNPY: https://node1.<YOUR_DOMAIN>/wallet
Block Explorer for CNPY: https://node1.<YOUR_DOMAIN>/explorer
Web wallet for CNRY: https://node2.<YOUR_DOMAIN>/wallet
Block Explorer for CNRY: https://node2.<YOUR_DOMAIN>/explorer
Ports
Expose the below ports via firewall
Canopy Node Ports
9001: TCP P2P communication for node1
9002: TCP P2P communication for node2
Load Balancer Ports
80: HTTP traffic (redirects to HTTPS in production)
443: HTTPS traffic (SSL/TLS)
Familiarize yourself with the internal ports
Monitoring Ports
3000: Grafana web interface
9090: Prometheus metrics endpoint
3100: Loki log aggregation
8082: Traefik metrics endpoint
9115: Blackbox exporter metrics
8080: cAdvisor container metrics
9100: Node exporter host metrics
Canopy service ports
50000: Wallet service for node1 (exposed via Traefik)
50001: Explorer service for node1 (exposed via Traefik)
50002: RPC service for node1 (exposed via Traefik)
50003: Admin RPC service for node1 (exposed via Traefik)
40000: Wallet service for node2 (exposed via Traefik)
40001: Explorer service for node2 (exposed via Traefik)
40002: RPC service for node2 (exposed via Traefik)
40003: Admin RPC service for node2 (exposed via Traefik)
Validator Transactions
When managing your Validator, there are a few key transaction types to be aware of
Stake: Register a validator for operation
Edit-Stake: Edit an existing validator
Pause: Temporarily remove an existing validator from active operation
Unpause: Re-enlist a paused validator for operation
Unstake: Permanently remove a validator from active service
These transactions may be executed over CLI, RPC, or the built-in Web Wallet.
STAKE TRANSACTION

Parameters:
Account: Operator address - where subsequent validator transactions like (edit-stake and unstake) should be sent from.
Delegate: Whether or not the validator will be actively operating (signing and producing blocks)
Committees: Chain IDs where restake is allocated
Amount: currency to stake (6 decimals)
Withdrawal:
falseto auto-compound rewards -trueto withdrawal the rewards automatically (comes with penalty <see Governance Params>)Net-addr:
tcp://<YOUR_DOMAIN>P2P TCP addressOutput: The rewards address
Signer: Account that signs the transaction
Memo:
optionalTxn-fee: Transaction fee (default is pre-filled)
Password: Password of the signer account
Notes:
Signer account is where funds are deducted from. This should be the operator address
Delegate status may not be changed once set
β€ EDIT-STAKE TRANSACTION

Parameters:
Account: Operator address
Committees: Chain IDs where restake is allocated
Amount: currency to stake (6 decimals)
Withdrawal:
falseto auto-compound rewards -trueto withdraw the rewards automatically (comes with penalty <see Governance Params>)Net-addr:
tcp://<YOUR_DOMAIN>P2P TCP addressOutput: The rewards address
Signer: Output or operator address
Memo:
optionalTxn-fee: Transaction fee (default is pre-filled)
Password: Password of the signer account
Notes:
The operator address may not be edited
Use the 'same-value' inputs that you don't want edited
The output address is only able to be changed by the output address
The stake amount cannot be lowered
Fees are deducted from the signer's address
β€ UNSTAKE TRANSACTION

Parameters:
Account: Operator address
Signer: Output or operator address
Notes:
Unstaking takes 7 days for a Validator and 3 days for a delegate
Fees are deducted from the signer's address
PAUSE TRANSACTION

Parameters:
Account: Operator address
Signer: Output or operator address
Notes:
A validator may be paused for 7 days before it automatically begins unstaking
Fees are deducted from the signer's address
β€ UNPAUSE TRANSACTION

Parameters:
Account: Operator address
Signer: Output or operator address
Notes:
Validators that are unpaused are expected to immediately begin consensus operation for all chains
If your validator was auto-paused, be sure to fix the issue with the validator before unpausing. See Debugging and Support
Fees are deducted from the signer's address
Slashing
β οΈ Why Did My Tokens Go Down? (Understanding Slashing) TL;DR: You got slashed because your validator went offline or misbehaved. That means fewer tokens and missed rewards. Want to avoid this? Keep your validator online at all times.
What Causes a Slash?
Canopy slashes Validators for two main reasons:
Inactivity β If your validator misses 60 out of 100 blocks (each ~20s) within a moving window, you're considered offline and get slashed.
Double Signing β Signing two blocks at the same height for the same chain breaks consensus rules and results in a slash.
β οΈ Subchains may define additional slashing rules, but these two are the main ones on mainnet.
How Bad Is the Slash?
Slash amount for inactivity (non-sign) is 1% of staked tokens
Slash amount for double signing is 10% of staked tokens
A governance parameter called MaxSlashPerCommittee limits how much a validator may be slashed per block. Canopy caps the slashes and starts ejecting validators from the committee to prevent an escalation.
Youβll lose tokens and be kicked out of the committee temporarily β meaning no rewards, and youβll need to regain trust.
How to Stay Safe
Itβs all about uptime. Hereβs how to avoid slashing:
Use auto-restart tools like systemd, supervisord, or Dockerβs restart policies.
Set up monitoring with alerts to catch issues early β we already provide a full monitoring stack (Grafana + Prometheus) in the step-by-step setup guide, so make sure itβs running and youβre checking it regularly.
Keep keys secure to avoid double-signing across different instances.
Test failover setups carefully β donβt accidentally run two validators at once.
β Grafana + Prometheus Configuration
Basic Scrape Configuration
You can find a working example at deployments/monitoring-stack/monitoring/prometheus
/prometheus.yml
Recommended Recording Rules
Metric Types and Usage
Gauges
Gauges represent current values that can go up or down:
Node status
Peer counts
Block height
Memory usage
Validator status
Counters
Counters represent monotonically increasing values:
Transaction counts
Block processing counts
Histograms
Histograms track the distribution of values:
Block processing time
Recommended Alerts
Grafana Dashboard Recommendations
You can find the example of the default grafana dashboard implementation at deployments/monitoring-stack/monitoring/grafana/dashboards/canopy
/canopy_dashboard.json
Key Panels to Include
Node Status
Node up/down status
Sync status
Uptime
Peer Network
Total peers
Inbound/outbound peers
Peer connection status
Validator Status
Validator count by status
Validator types
Staking status
Transaction Metrics
Transaction rate
Transaction volume
Transaction types
Performance
Block processing time
Memory usage
CPU usage
Example Queries
Additional Nested Chains
Canopy supports running multiple chains (like CNPY and its first subchain, CNRY) on the same machine.
To set this up, simply follow the step-by-step guide and run the setup.sh script.
This script automatically:
Configures both CNPY and CNRY
Reuses the same validator_key and keystore for both
Sets up each chain with the correct ports and configuration so they can run side by side
How The Script Works Behind the scenes, each node (node1, node2, etc.) is configured with:
- A unique
chainId(1for CNPY,2for CNRY)- A different
listenAddress(e.g. 0.0.0.0:9001 for CNPY and 0.0.0.0:9002 for CNRY)No manual config needed, this is all handled automatically
This ensures there are no port conflicts, and both chains can run simultaneously using a shared validator identity.
If you plan to add more nested chains in the future, follow the same pattern: - Assign a unique chainId to each chain - Ensure each node uses a different listenAddress
Debugging and Support
Most logs tagged ERROR should be reported, although some
P2PERROR logs are expected as peers churn (especially upon startup).If you're encountering repeated alerts or facing issues while running your node, don't hesitate to reach out.
Open an issue on our GitHub repository: https://github.com/canopy-network/canopy/issues
For comms and support, join our official Discord: https://discord.com/invite/WdeBG8jcuB
Community Snapshot and Public RPC Endpoint
This link is a community-maintained endpoint providing RPC access and blockchain snapshots to support fast and easy bootstrapping of Canopy. It is offered as a public resource in the spirit of community goodwill.
Validator Migration Guide
Complete server migration with minimal downtime (5-10 minutes)
Prerequisites
Access to both OLD and NEW servers
Domain DNS management access (Cloudflare recommended)
New server with Ubuntu 22.04+ and root access
Phase 0: Pause Validator
Be sure to pause your existing Validator (if applicable) before beginning the migration process to ensure no slashing risk due to downtime, peering issues, or duplicate identities.
Phase 1: Prepare New Server
1. Install Dependencies on New Server
2. Update DNS Records (CRITICAL - Do this first!)
In your DNS provider (Cloudflare recommended):
3. Verify DNS Propagation
Phase 2: Migration (5-10 minutes downtime)
4. Stop Validator on Old Server
5. Create Backup on Old Server
6. Transfer to New Server
7. Deploy on New Server
8. Verify Deployment
Phase 3: Post-Migration Verification
9. Access Web Interfaces
Once services are running, verify these endpoints:
Grafana Dashboard:
https://monitoring.YOUR_DOMAIN.comNode 1 Wallet:
https://node1.YOUR_DOMAIN.com/walletNode 1 Explorer:
https://node1.YOUR_DOMAIN.com/explorerNode 2 Wallet:
https://node2.YOUR_DOMAIN.com/walletNode 2 Explorer:
https://node2.YOUR_DOMAIN.com/explorer
10. Monitor Sync Status
11. Verify Staking Status
Log into your web wallet interfaces
Check that your validator status shows as "STAKED"
Monitor for 10-15 minutes to ensure stability
Troubleshooting
Common Issues and Solutions
Permission Denied Errors:
DNS Not Resolving:
SSL Certificate Issues:
Containers Not Starting:
Important Notes
Critical Points
Pause: Always pause your validator before migration
DNS First: Always update DNS records before migration
Permissions: Always run chmod commands after extracting backup
Snapshots: Use
start_with_snapshotfor fastest syncMonitoring: Watch logs for first 10-15 minutes after migration
Expected Timeline
DNS Propagation: 1-2 minutes (Cloudflare)
Service Stop: 30 seconds
File Transfer: 2-4 minutes (depending on connection)
Service Start: 2-3 minutes
SSL Certificate: 1-2 minutes
Total Downtime: 5-10 minutes
Post-Migration
Monitor validator status for 24 hours
Backup the new server setup
Update any monitoring alerts with new IP
Test all web interfaces thoroughly
Recovery Plan
If migration fails, quickly restore old server:
Your validator will resume from where it left off with minimal impact.
Migration Complete! π
Your Canopy validator is now running on the new server with fresh blockchain data and preserved validator identity.
Last updated