Skip to content

Nodes and privacy ​

Your wallet cannot see the blockchain by itself. It asks a computer on the network, and whoever runs that computer can learn something about you. This lesson shows exactly what, for each way a Monero wallet can sync, so you can choose with your eyes open.

What a node is ​

A node is a computer running the Monero software (monerod). It keeps a full copy of the blockchain, checks every new transaction and block against the rules, and passes them on to other nodes. In Lesson 2 your transaction waited in a node's mempool; that was this program.

A wallet talks to one node to download blocks and to publish the transactions you send.

text
                  ┌──────── the Monero network ────────┐
                  │   node ─── node ─── node ─── node  │
                  │     │                         │    │
                  └─────┼─────────────────────────┼────┘
                        │                         │
                  your wallet                some other wallet

Your own node or someone else's ​

Someone else's nodeYour own node
Setting upNothing; wallets come with public nodesInstall and run monerod, and let it download the chain
Disk and bandwidthNone of yoursThe whole blockchain, kept up to date
Who sees your wallet's IP address and sync timesThe node's operatorOnly you. Other nodes see your node, not your wallet
TrustYou rely on a stranger's node answering honestlyYou check the chain yourself

Out of the box, Kilonova syncs from public community nodes bundled with the app, run by third parties, not by Dhiva Labs. You can add your own under Settings, Nodes. monerod can also prune old data with --prune-blockchain to need less disk space; a pruned node still checks every block.

Kilonova also guards against a lying node. Each time a wallet starts syncing, it asks one of the bundled public nodes for a recent block and compares. If they differ you see Your node's chain differs from another node's. It may be showing you a false chain.

Two ways to sync a wallet ​

Remember from Lesson 1 that the private view key recognises your incoming payments, and from Lesson 2 that payments go to one-time addresses only that key can spot. Something has to scan every new block with that key. The question is: where?

text
  FULL SYNC
  ┌──────────────┐   blocks (the same for everyone)   ┌──────┐
  │ your device  │ ◄───────────────────────────────── │ node │
  │ scans with   │                                    └──────┘
  │ your keys    │   no keys leave the device
  └──────────────┘

  LIGHT WALLET SERVER (LWS)
  ┌──────────────┐   your PRIVATE VIEW KEY            ┌────────────────┐
  │ your device  │ ─────────────────────────────────► │ monero-lws     │
  │              │ ◄───────────────────────────────── │ server scans   │
  └──────────────┘   "these payments are yours"       │ for you        │
                                                      └────────────────┘

Kilonova lets you choose for each wallet, under How should this wallet sync?:

Full syncLight wallet server
Who scans the blockchainKilonova, on your deviceThe server
Keys sent anywhereNoneYour private view key
First syncSlowerFast
What the other side can seeYour IP address and when you syncEvery payment you receive, and usually when you spend
Can it spend your funds?NoNo; the spend key stays on your device

What a node learns with full sync ​

With Full sync, the node can see:

  • your IP address, unless you use Tor or a proxy;
  • when you sync and how much you download;
  • a transaction you send, when you publish it, unless a proxy is set.

The node does not receive your keys and cannot tell which incoming transactions are yours. Running your own node gives the most privacy.

What a light wallet server learns ​

A light wallet server (LWS) is a program, monero-lws, that scans the blockchain for you, so syncing is fast. To do that it needs your private view key. With it, the server can see:

  • every payment you receive and its amount, now and in the future;
  • your IP address, unless you use Tor or a proxy;
  • usually, when you spend, because it notices your coins being used.

When you send in this mode, the server also picks the decoys for your transaction and suggests its fee. Without a proxy it also publishes the transaction. It cannot spend your funds or see your seed.

Kilonova does not run a light wallet server and never picks one for you. Before a wallet's view key is sent, it shows Share your view key? with the server's name, and waits for Share and connect. It also checks every payment the server reports against your own keys.

WARNING

Sharing a view key cannot be taken back. A server that has had your view key can keep watching payments to that wallet, even after you switch the wallet back to full sync. If that matters, move the funds to a new wallet that uses full sync.

Which to choose ​

  • Full sync if you want no keys to leave your device, and can wait for the first sync.
  • Light wallet server if you run your own server, or trust its operator, and want fast syncing on a phone.

A worked case: Arun keeps a savings wallet on his laptop with full sync and his own node. On his phone he keeps a small spending wallet that syncs through a light wallet server he runs at home. Because he runs the server himself, nobody else ever receives that wallet's view key.

Tor and SOCKS5 in brief ​

Full sync hides your keys, but the node still sees your IP address, which can point to your home. A proxy is a go-between that makes the connection for you. SOCKS5 is a common proxy protocol, and Tor is a network of volunteer relays that you reach through a local SOCKS5 proxy.

text
  without a proxy:  wallet ─────────────────────────────► node   (sees your IP)
  through Tor:      wallet ──► Tor (127.0.0.1:9050) ──► relays ──► node
                                                       (node sees a Tor address)

In Kilonova, under Settings, Proxy and Tor, Fill in Tor's address fills in 127.0.0.1:9050; then Check and use sends every connection through it. Nodes and servers see the proxy's address instead of yours, and .onion nodes become reachable. With a proxy set, Send through a different node sends each payment through a random public node, so your sync node does not see you send.

Tor hides where you connect from. It does not change what a light wallet server learns from your view key.

Stay safe ​

  • Prefer full sync unless you know who runs the light wallet server.
  • If you add your own node with a self-signed certificate, compare its fingerprint before you select Trust this certificate. A later warning that a node now presents a different certificate may mean someone is intercepting the connection.
  • A node's RPC interface is for you. Do not open it to the internet unless you know what you are exposing.

In the apps ​

Check yourself ​

QuizNodes and privacy

Question 1 of 6

With Full sync, what does the node your wallet connects to receive?

Score: 0

What you learned ​

  • A node keeps and checks the blockchain; your wallet talks to one of them.
  • With full sync, no keys leave your device; the node sees your IP address, your sync times and the transactions you publish.
  • A light wallet server gets your private view key and sees every payment you receive; it cannot spend.
  • Tor or a SOCKS5 proxy hides your IP address, not what your view key reveals.

Next steps ​