What is a node?

A node is a computer running software that maintains a copy of the Monero blockchain.

We can distinguish between two types of nodes: local nodes and remote nodes.

A local node is a node that runs on your own computer or a private network. Typically, you run a local node yourself.

A remote node is a node that is accessible on a public network. Typically, a third party runs a remote node. Remote nodes are referred to as public nodes in some contexts.

By default, Feather connects to a random node from a curated list of high performance remote nodes run by trusted members of the Monero community. When Feather is started for the first time, you have the option to configure how to wallet will connect to a node before any connections are made.

You can change how Feather connect by going to Settings → Network → Nodes.

If you would like to set up your own public node, see this excellent guide by Seth.

Q: Are remote nodes safe?

This depends on your threat model.

A remote node:

However, a malicious remote node can:

For developers

The wallet communicates with the node via a JSON/binary interface: Daemon RPC.

During normal use the wallet will use the following endpoints:

Endpoint Purpose Comment
get_info General Provide basic information about the status of the node and Monero network. Results are cached for 30 seconds.
/get_blocks.bin Sync Obtain block data for wallet synchronization
/get_hashes.bin Sync Get block hashes. Saved in wallet cache (m_blockchain).
/get_transaction_pool_hashes.bin Sync Get tx hashes from transaction pool. Called every 10 seconds after main sync is finished.
/get_transactions Sync Get pool transactions the wallet hasn’t scanned before.
/get_output_distribution Tx Construction Output distribution used in decoy selection. Data is hashed and checked against a hardcoded value to mitigate against output distribution poisoning.
In Feather, the distribution is requested and cached immediately upon finishing wallet synchronization to cut bandwidth requirements for transaction construction by an order of magnitude.
/get_outs.bin Tx Construction Request output public keys for selected indeces of ring members. The wallet cannot verify the validity of the public keys, except for the true input. Feather will show a warning if the true input is missing from the reponse.
get_fee_estimate Tx Construction Get base transaction fee. Malicious nodes can introduce a fungibility defect by providing an incorrect fee estimate.
hard_fork_info Tx Construction Get information about hard fork state.
/send_raw_transaction Tx Broadcast Instruct the node to broadcast the transcation to the network.