Practice › Your own node

What's in the Monero package

monerod, monero-wallet-cli, monero-wallet-rpc and the other tools in the official archive

In short

The official CLI archive contains the node (monerod), the console wallet (monero-wallet-cli), a wallet server with JSON-RPC (monero-wallet-rpc) and a set of blockchain-database utilities. The GUI archive contains monero-wallet-gui and the same monerod.

The main programs

monerod — the node

The daemon that connects to other nodes, downloads and verifies blocks, stores the database (LMDB), accepts transactions into the mempool and relays them. It exposes the daemon RPC (port 18081): height, blocks, transactions, submitting transactions. It can mine (start_mining), but serious mining uses P2Pool + XMRig. Setup is on the your own node page.

./monerod status
./monerod print_height
./monerod sync_info

monero-wallet-cli — the console wallet

The reference wallet: create/restore, transfers, subaddresses, payment proofs, multisig, cold signing. Works with a wallet file and connects to a node.

./monero-wallet-cli --generate-new-wallet mywallet
./monero-wallet-cli --restore-deterministic-wallet          # from 25 words
./monero-wallet-cli --generate-from-view-key watchonly      # view-only
./monero-wallet-cli --wallet-file mywallet --daemon-address 127.0.0.1:18081

Useful commands inside: balance, address new, account new, transfer <address> <amount>, show_transfers, get_tx_key, check_tx_key, get_tx_proof, export_key_images, seed, help.

monero-wallet-rpc — a wallet for programs

The same wallet, controlled over JSON-RPC. Used by shops, exchanges, bots and payment gateways (BTCPay Server, MoneroPay, etc.).

./monero-wallet-rpc --wallet-file shop --password-file pw.txt \
  --daemon-address 127.0.0.1:18081 --rpc-bind-port 18088 \
  --rpc-login user:secret
curl -u user:secret --digest http://127.0.0.1:18088/json_rpc \
  -d '{"jsonrpc":"2.0","id":"0","method":"create_address","params":{"account_index":0}}'

Key methods: get_balance, create_address, get_transfers, transfer, incoming_transfers, make_integrated_address. A view-only wallet is enough for a shop: it sees incoming payments to new subaddresses, and there's nothing to steal from it.

RPC security

Don't expose the monero-wallet-rpc port to the internet. Always use --rpc-login, and run a wallet holding the spend key on a separate isolated machine.

Blockchain database utilities

ProgramWhat it does
monero-blockchain-pruneTurns a full database into a pruned one (by copying into a new database)
monero-blockchain-exportExports the chain to a blockchain.raw file
monero-blockchain-importImports from blockchain.raw — a quick way to bootstrap a node from a USB stick (verifies by default)
monero-blockchain-statsBlock statistics: transactions, sizes, inputs/outputs per day
monero-blockchain-usageHow often outputs were used in rings (decoy research)
monero-blockchain-ancestryBuilds an output's "ancestry" through rings — a traceability research tool
monero-blockchain-depthDepth of a transaction's history through rings
monero-blockchain-mark-spent-outputsMarks outputs known to be spent (e.g. from fork chains) so the wallet won't use them as decoys
monero-blockchain-prune-known-spent-dataRemoves data of outputs known to be spent (old pre-RingCT), saving space

Other

Program / fileWhat it is
monero-gen-trusted-multisigGenerates a set of multisig wallets on one trusted machine (for testing/simple cases)
monero-gen-ssl-certCreates an SSL certificate for RPC
ANONYMITY_NETWORKS.mdGuide: Tor and I2P for monerod
monero-wallet-gui (GUI archive)Graphical wallet; can launch monerod itself

Also useful from the ecosystem

  • P2Pool — a decentralised mining pool on top of your node; XMRig — a RandomX miner.
  • onion-monero-blockchain-explorer — your own block explorer on your own node.
  • monero-lws — your own light-wallet server: keep view keys yourself instead of with a third-party service.