This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This is the IoTeX Delegate Manual repository - configuration and operational scripts for IoTeX blockchain validators and delegates. It is NOT a code repository in the traditional sense; instead, it provides:
- Node configuration files for MainNet and TestNet
- Shell scripts for node setup, upgrade, and monitoring
- Docker compose configurations for running nodes
- Documentation for node operators
This repository is versioned in sync with iotex-core. The current release is v2.4.4. When iotex-core releases a new version:
- Update version references in README.md, config files, and scripts
- Add a release note in
changelog/ - Create a PR but do NOT merge until the final release is tagged in iotex-core
See release_flow.md for the complete release process.
| Directory | Purpose |
|---|---|
scripts/ |
Node setup, upgrade, and monitoring automation scripts |
config_mainnet.yaml / config_testnet.yaml |
Node configuration templates |
genesis_mainnet.yaml / genesis_testnet.yaml |
Genesis block configurations |
monitor/ |
Docker compose and prometheus configs for node monitoring |
infra/ |
Infrastructure guides and best practices for delegates |
changelog/ |
Release notes for each version |
tools/auto-update/ |
Auto-updater binary and Makefile |
tube/ |
Documentation for ERC20/native token swap service |
archive-node.md |
Archive node setup instructions |
poll/ |
Community poll documentation |
- Update
versionreferences in README.md (search forv2.4.4) - Update docker image tags in
scripts/all_in_one_mainnet.shandscripts/all_in_one_testnet.sh - Add release note in
changelog/vX.Y.Z-release-note.md - Update
config_mainnet.yamlandconfig_testnet.yamlif needed
bash <(curl -s https://raw.githubusercontent.com/iotexproject/iotex-bootstrap/master/scripts/setup_fullnode.sh)bash <(curl -s https://raw.githubusercontent.com/iotexproject/iotex-bootstrap/master/scripts/setup_fullnode.sh)bash setup_fullnode.sh --auto --home=/path/to/iotex-var
bash setup_fullnode.sh --auto --home=/path/to/iotex-var --version=v2.4.4
bash setup_fullnode.sh --auto --home=/path/to/iotex-var --force # reinstall same versionFlags: --auto (skip prompts), --home= (IOTEX_HOME), --version= (target version), --force (bypass same-version check), --monitor (enable monitoring), plugin=gateway (enable gateway).
bash <(curl -s https://raw.githubusercontent.com/iotexproject/iotex-bootstrap/master/scripts/setup_fullnode.sh) plugin=gatewaybash <(curl -s https://raw.githubusercontent.com/iotexproject/iotex-bootstrap/master/scripts/stop_fullnode.sh)- Regular Node: Participates in p2p network, syncs blocks
- Delegate/Validator Node: Has
producerPrivKeyset, participates in consensus (ROLLDPOS) - Gateway Node: Runs with
-plugin=gateway, enables API indexing for external queries - Archive Node: Serves full historical chain data (separate setup - see archive-node.md)
4689: P2P network8080: HTTP API (liveness/readiness probes)14014: IoTeX native gRPC API15014: Ethereum JSON-RPC API16014: Ethereum WebSocket API
config_*.yaml: Node settings (network, chain, actPool, api, consensus)genesis_*.yaml: Genesis block datatrie.db.patch: Required patch file for MainNet
Multiple nodes can share the same producerPrivKey with different masterKey values:
network:
masterKey: producer_private_key-replica_id
system:
active: true # or false for standby nodesUse http://ip:9009/ha?activate=true/false to switch active/standby roles.
IoTeX uses Ethereum as its gravity chain for delegate elections. Nodes need Ethereum JSON-RPC endpoints configured in:
chain:
committee:
gravityChainAPIs:
- https://mainnet.infura.io/v3/YOUR_KEY- MainNet core:
https://t.iotex.me/mainnet-data-snapshot-core-latest - MainNet gateway:
https://t.iotex.me/mainnet-data-snapshot-gateway-latest - TestNet:
https://t.iotex.me/testnet-data-latest
- iotex-core: Main node implementation
- iotex-analyser: Chain analytics backend
- ioctl: CLI tool for blockchain interaction