Interactive PulseChain node installers for Docker and native Linux services.
  • Shell 84.9%
  • Python 9.8%
  • PowerShell 5.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-12 16:30:53 -04:00
lib Initial commit 2026-10-12 16:30:53 -04:00
manifests Initial commit 2026-10-12 16:30:53 -04:00
tests Initial commit 2026-10-12 16:30:53 -04:00
.gitattributes Initial commit 2026-10-12 16:30:53 -04:00
.gitignore Initial commit 2026-10-12 16:30:53 -04:00
.ignore Initial commit 2026-10-12 16:30:53 -04:00
LICENSE Initial commit 2026-10-12 16:30:53 -04:00
README.md Initial commit 2026-10-12 16:30:53 -04:00
run.ps1 Initial commit 2026-10-12 16:30:53 -04:00
run.sh Initial commit 2026-10-12 16:30:53 -04:00
setup-erigon2.sh Initial commit 2026-10-12 16:30:53 -04:00
setup-geth.sh Initial commit 2026-10-12 16:30:53 -04:00
setup-pulsechain-node Initial commit 2026-10-12 16:30:53 -04:00
setup.ps1 Initial commit 2026-10-12 16:30:53 -04:00
VERSION Initial commit 2026-10-12 16:30:53 -04:00

Setup PulseChain Node

Interactive PulseChain node installation with persistent storage, pruning choices, and optional validator preparation.

Choose execution and consensus independently for a fresh installation:

Execution client Consensus choices
Erigon-Pulse 2 Lighthouse-Pulse or Prysm-Pulse
Go-Pulse / Geth Lighthouse-Pulse or Prysm-Pulse

The wizard defaults to Lighthouse for Erigon 2 and Prysm for Geth. The validator client follows the consensus choice. Erigon 3 is planned, not installable.

Docker runs on Linux, macOS, and Windows. Native systemd installation is Linux-only: Debian/Ubuntu, RHEL/Fedora/Rocky/Alma, and Arch/Manjaro. Windows uses Docker Desktop with Ubuntu WSL2 integration. Client artifacts are pinned in manifests/versions.env.

The repository is private and requires field testing. Full mainnet synchronization and live validator duties remain unverified. macOS, Windows, and ARM64 host execution still need testing on those platforms.

Setup

From a checkout on Linux or macOS:

./run.sh

Choose execution, consensus, runtime, pruning, optional validator preparation, and storage. Review the summary before installation. Rerun the launcher for the management menu. Keep the host awake and Docker running during synchronization and operation.

On Windows, open PowerShell in the checkout:

./run.ps1
./run.ps1 -ExecutionClient erigon2 -ConsensusClient prysm

Windows setup offers Docker Desktop and WSL2 prerequisites. First launch or a reboot may require rerunning the command. Missing prerequisites require confirmation; --yes alone does not authorize Docker installation.

For unattended Linux installation, specify both clients, runtime, profile, and data directory:

./run.sh install --execution-client erigon2 --consensus-client prysm \
  --mode docker --profile pruned --data-dir /blockchain --yes

Append --dry-run to render configuration without installation or startup; this requires jq. Use --help for all options. ./run.sh clients lists clients and allowed pairings.

Legacy --stack erigon2 selects Erigon 2 + Lighthouse; --stack geth selects Geth + Prysm. Existing shell wrappers and PowerShell -Stack retain those presets. Do not combine a preset with independent client options. Existing installations retain their saved clients, storage, and JWT. Switching clients or reusing another client's database is not implemented.

Storage and Pruning

Profile Retention
archive Full historical state and supported indexes.
pruned Bounded history and indexes.
max-pruned The most aggressive supplied profile retaining deposit history needed for later validator preparation.
custom Execution-client retention settings shown by --help.

Pruning cannot recover deleted history. Established runtime, client, storage, and pruning settings cannot be changed in place. The storage preflight is a conservative budget; --allow-low-resources explicitly overrides it.

Docker data uses external volumes and survives container recreation and both forms of Compose teardown. Linux volumes use selected host folders; Desktop defaults use its VM disk. Independent backups are required for disk failure, deliberate deletion, or Desktop reset.

Fresh installations can assign execution/consensus roots and client-specific storage to separate disks: Erigon snapshots/temp, Geth ancient storage, Lighthouse freezer, or Prysm blobs. Only options for the selected clients are accepted. Use fast SSD/NVMe for active databases and recent blobs; slower historical storage reduces query performance. Desktop host binds may be slower than VM volumes; validator credentials remain VM-backed.

Custom paths must be absolute, initially empty, mounted, writable, and nonoverlapping. No disk formatting or filesystem-table changes are performed. Split-disk capacity requires acknowledgment because per-folder growth requirements remain unverified. Erigon temp uses an owned storage root with a disposable work/ child.

Startup checks storage identity, including automatic container restarts. Missing/replaced storage or JWT stops the operation without creating replacements. Do not remove an operation lock until its recorded process has stopped.

Manage the Node

Linux installs the manager as setup-pulsechain-node; macOS uses ~/.local/bin, which must be in PATH. On Windows, forward commands with ./run.ps1 -NodeArguments @('status').

setup-pulsechain-node status
setup-pulsechain-node doctor
setup-pulsechain-node logs consensus
setup-pulsechain-node locations
setup-pulsechain-node stop

RPC binds to localhost 8545; optional WebSocket uses 8546. Docker does not publish the Engine API. Lighthouse REST uses localhost 5052; Prysm REST uses localhost 3500 and readiness metrics use localhost 18080.

Execution P2P uses 30303 TCP/UDP, plus 42069 TCP/UDP for Erigon. Consensus uses 9000 TCP/UDP and 9001 UDP for Lighthouse, or 13000 TCP and 12000 UDP for Prysm. --configure-firewall updates a supported active Linux firewall or prints the selected ports. Configure router forwarding separately.

Optional Validator

Prepare the validator during installation or enable it later:

setup-pulsechain-node validator enable --fee-recipient 0xYOUR_FEE_RECIPIENT

Lighthouse enables deposit sync and catches up its cache; Prysm uses its own readiness checks. Generate keys externally and follow the PulseChain launchpad for deposits. The installer does not generate mnemonics or submit deposits.

For keys that have never signed:

setup-pulsechain-node validator import --keys-dir /path/to/validator_keys --fresh-keys

For previously used keys, stop the old signer and supply its EIP-3076 slashing history:

setup-pulsechain-node validator import --keys-dir /path/to/validator_keys \
  --slashing-protection /path/to/slashing.json --previous-validator-stopped

Each keystore password is prompted separately. Never run the same validator keys on two machines. Keep offline backups of keys, recovery material, and slashing protection. Imported keys remain stopped until explicitly started:

setup-pulsechain-node validator start
setup-pulsechain-node validator stop

Start checks network identity, current execution/consensus state, deposit readiness, time, peers, and imported credentials/slashing protection. Both validator clients use doppelganger protection. validator configure changes fee recipient or graffiti and leaves signing stopped.

Update and Checks

Run ./setup-pulsechain-node update from a reviewed newer checkout. Both selected clients must retain their adapters and database generations. Artifacts are staged before activation; signing remains stopped afterward. rollback permits the same pairing, generations, and client versions; cross-version database downgrades are refused.

Tests require Bash, jq, OpenSSL, and Docker Compose where used. Python tests require Python 3; keystore fixtures also require cryptography. PowerShell forwarding tests require PowerShell 7. Docker tests use disposable resources.

bash tests/client-selection.sh
bash tests/manager.sh
bash tests/update-selection.sh
bash tests/locations.sh --docker
bash tests/clients.sh --pull
bash tests/startup.sh
bash tests/validator-import.sh
pwsh -NoProfile -File tests/windows-selection.ps1

The optional tests/client-pairs.py integration test takes --fixture-generator (a verified prysmctl supporting Bellatrix genesis, tested with v5.1.2), --consensus-config (consensus YAML), and a new --output directory. It runs bounded pairs on isolated Docker networks without mainnet synchronization; Prysm fixtures use deterministic test validators behind a custom-genesis isolation check.

License

MIT — see LICENSE.