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.