Skip to main content

Running a Development Node

How to run Orbinum on your own machine: a single dev node with instant seal, or a small local network with two validators.

Joining the live testnet

This page covers local development only. To run a node on the testnet, see Becoming a Validator for validators, or RPC and Archive Nodes for public endpoints.

Prerequisites

Make sure you've completed the Installation before continuing.


What development mode gives you

Development (--dev)Local network (--chain local)
ConsensusInstant seal — a block per transactionAura between the nodes you start
DataTemporary with --tmpTemporary or persistent
AccountsAlice, Bob and Charlie, pre-fundedSame
EVM chain ID4242

Neither talks to the testnet. Both give you a chain you fully control.


Development Mode

Mode for local development with instant seal (produces blocks without consensus). Everything runs from the published Docker image — no compilation.

Image shorthand

The examples use ghcr.io/orbinum/node:testnet-latest. Export it once to keep commands short: export ORB=ghcr.io/orbinum/node:testnet-latest.

Basic Development Node

docker run --rm ghcr.io/orbinum/node:testnet-latest --dev --tmp

Flags:

  • --dev: Activates development chain spec with pre-funded accounts
  • --tmp: Stores data in temporary directory (cleared on restart)

Features:

  • Produces blocks instantly (doesn't wait for consensus)
  • Clean chain state on each start
  • Ideal for quick testing

Pre-funded Development Accounts

AccountSubstrate AddressInitial Balance
Alice5GrwvaEF...1,000,000 ORB
Bob5FHneW46...1,000,000 ORB
Charlie5FLSigC9...1,000,000 ORB

With Persistent Data

To keep state between restarts, mount a host directory (or a named volume):

docker run --rm -v "$PWD/data:/data" ghcr.io/orbinum/node:testnet-latest \
--dev --base-path /data

Enable External RPC Access

To connect from Polkadot.js Apps or external wallets, publish the RPC port:

docker run --rm -p 9944:9944 ghcr.io/orbinum/node:testnet-latest \
--dev --tmp \
--rpc-cors all \
--rpc-methods Unsafe \
--rpc-external
Development Only

--rpc-methods Unsafe enables dangerous methods, and -p 9944:9944 exposes the RPC port. Local development only — never on a public node.

With Ethereum RPC APIs

For EVM development (MetaMask, Hardhat, etc.):

docker run --rm -p 9944:9944 ghcr.io/orbinum/node:testnet-latest \
--dev --tmp \
--rpc-cors all \
--rpc-external \
--ethapi=debug,trace,txpool

Available endpoints:

  • Substrate RPC: ws://127.0.0.1:9944
  • Ethereum RPC: http://127.0.0.1:9944 (JSON-RPC compatible)

Local Multi-Node Testnet

To simulate a small network locally with the well-known --alice / --bob keys, run two containers on a shared Docker network:

docker network create orbinum-local

Node 1 (Alice — bootnode):

docker run --rm --name alice --network orbinum-local \
-p 9944:9944 ghcr.io/orbinum/node:testnet-latest \
--chain local --alice --tmp \
--port 30333 --rpc-port 9944

Copy the Local node identity from Alice's logs (format 12D3KooW...).

Node 2 (Bob):

docker run --rm --name bob --network orbinum-local \
-p 9945:9944 ghcr.io/orbinum/node:testnet-latest \
--chain local --bob --tmp \
--port 30333 --rpc-port 9944 \
--bootnodes /dns/alice/tcp/30333/p2p/<ALICE_PEER_ID>

Replace <ALICE_PEER_ID> with the identity from Alice's logs. Both nodes discover each other over the orbinum-local network and finalize blocks together.


Configuration Reference

Essential Flags

FlagDescriptionDefault
--chainChain specificationdev
--base-pathData directoryPlatform-specific
--portP2P port30333
--rpc-portRPC port9944
--ws-portWebSocket port9944
--validatorEnable validationfalse
--pruningState pruning mode256 blocks
--nameNode nameRandom

RPC Configuration

FlagDescription
--rpc-externalListen on all interfaces
--rpc-corsCORS origins (use all for dev)
--rpc-methodsSafe, Unsafe, or Auto
--rpc-max-connectionsMax concurrent connections

Logging

# Increase verbosity
docker run --rm -e RUST_LOG=debug $ORB --dev --tmp

# Specific module logging
docker run --rm -e RUST_LOG=pallet_shielded_pool=trace $ORB --dev --tmp

# Log to file
docker run --rm $ORB --dev --tmp 2>&1 | tee node.log

$ORB is the image shorthand from Development Mode (export ORB=ghcr.io/orbinum/node:testnet-latest).


Advanced Topics

Custom Chain Spec

To create a custom chain spec:

# Generate spec in JSON format
docker run --rm $ORB build-spec --chain local > custom-spec.json

# Convert to raw format
docker run --rm -v "$PWD:/specs" $ORB \
build-spec --chain /specs/custom-spec.json --raw > custom-spec-raw.json

# Use the spec
docker run --rm -v "$PWD:/specs" $ORB --chain /specs/custom-spec-raw.json

Database Backend

Orbinum uses RocksDB by default. To change:

# Use ParityDB (experimental)
docker run --rm $ORB --dev --tmp --database paritydb

Next Steps