Node Setup

Node Deployment and Operations

Supported environments: Linux/macOS. On Windows, WSL2 (Ubuntu) is recommended. See rust-setup.html for Rust installation and dependencies.

Tool Installation
Install Rust stable + nightly and wasm target: see rust-setup.html.
Minimum: rustup default stable && rustup update && rustup target add wasm32-unknown-unknown --toolchain nightly.
Build
cargo build --release

Binary: ./target/release/taler-node.

Quick Dev Chain Launch
./target/release/taler-node --dev -lruntime=debug
Dev network: ephemeral state, Alice/Bob validators, sudo = Alice.
Useful for local development and debugging.
Clear Dev Network State
./target/release/taler-node purge-chain --dev -y
Connect via polkadot.js/apps
Open the portal and specify RPC: ws://127.0.0.1:9944.
Generate chain-spec for testnet/production
Generate "plain" spec:
./target/release/taler-node build-spec --chain dev > taler-dev.json
Convert to "raw" (deterministic)
./target/release/taler-node build-spec --chain taler-dev.json --raw > taler-dev-raw.json
Optionally use utils/chain-spec-builder for extended generation (pre-configured accounts, assets, etc.). Build the utility:
cargo build -p chain-spec-builder --release
./target/release/chain-spec-builder --help
Single-node testnet launch (persistent)
./target/release/taler-node \
  --base-path ./data/node1 \
  --chain ./taler-dev-raw.json \
  --name node1 \
  --rpc-cors all --unsafe-rpc-external --unsafe-ws-external
Multi-node local testnet
Node 1 (Babe/Grandpa authentication):
./target/release/taler-node \
  --base-path ./data/node1 \
  --chain ./taler-dev-raw.json \
  --name node1 \
  --validator \
  --rpc-methods=Unsafe \
  --rpc-cors all --unsafe-rpc-external --unsafe-ws-external
Node 2 (connecting to node 1):
- Get multiaddr from node 1 logs (line /ip4/…/p2p/…)
./target/release/taler-node \
  --base-path ./data/node2 \
  --chain ./taler-dev-raw.json \
  --name node2 \
  --validator \
  --bootnodes 
Key generation and insertion (block production)
Key types: Babe (babe), Grandpa (gran), ImOnline (imon), AuthorityDiscovery (audi).
Create keys:
subkey generate --scheme sr25519
subkey generate --scheme ed25519
Insert keys via RPC (example for Babe):
./target/release/taler-node key insert \
  --base-path ./data/node1 \
  --chain ./taler-dev-raw.json \
  --scheme sr25519 \
  --suri "" \
  --key-type babe
Repeat for gran (ed25519), imon (sr25519), audi (sr25519). Add validator account to session/staking.
Addresses and format
Network SS58 prefix: 10960. When working with addresses/keys, specify the prefix in wallets/tools.
Telemetry (optional)
Add flag, for example:
--telemetry-url 'wss://telemetry.polkadot.io/submit 0'
Export/import snapshots
./target/release/taler-node export-state --chain ./taler-dev-raw.json > state.json
./target/release/taler-node import-state --chain ./taler-dev-raw.json state.json
Production build tuning
Use production profile for smaller binary:
cargo build --profile production
Common issues
WASM errors: reinstall nightly/wasm target (see rust-setup.html).
Windows: use WSL2; native Windows support is limited.