Skip to content

Node setup

Node Deployment and Operations

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

1) Tool Installation - Install Rust stable + nightly and wasm target: see rust-setup.md. - Minimum: rustup default stable && rustup update && rustup target add wasm32-unknown-unknown --toolchain nightly.

2) Build

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

3) 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.

4) Clear Dev Network State

./target/release/taler-node purge-chain --dev -y

5) Connect via polkadot.js/apps - Open the portal and specify RPC: ws://127.0.0.1:9944.

6) 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

7) 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

8) 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 <multiaddr-node1>

9) 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 "<seed>" \
  --key-type babe
- Repeat for gran (ed25519), imon (sr25519), audi (sr25519). Add validator account to session/staking.

10) Addresses and format - Network SS58 prefix: 10960. When working with addresses/keys, specify the prefix in wallets/tools.

11) Telemetry (optional) - Add flag, for example:

--telemetry-url 'wss://telemetry.polkadot.io/submit 0'

12) 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

13) Production build tuning - Use production profile for smaller binary:

cargo build --profile production

14) Common issues - WASM errors: reinstall nightly/wasm target (see rust-setup.md). - Windows: use WSL2; native Windows support is limited.