Hey everyone,
I've got a couple of questions about Full Nodes and Electrum Servers.
1) When I connect to a full node, what information does the owner have access to?
2) Similarly, what does an Electrum server owner see when I connect to their server?
That's all I wanted to ask.
Thanks a lot, looking forward to your responses!
Questions about Full Nodes and Electrum Servers
15 replies 31 views
SwiftMinerSenior Member
Posts: 259 · Reputation: 1036
#2Oct 8, 2020, 04:58 AM
He should be able to see your public IP address that's why it's advisable to make use of VPNs like Tor to mask your iP and Also anonymise your connection. Nodes you are connected to should also be able to view your node compatibility, and connection with other nodes. If you are making use of a wallet, nodes you are connected to will see transactions you broadcast and they can also rebroadcast the transaction if it isn't confirmed.
Likewise for Electrum the server should be able to see your IP address, public keys, your transaction history and UTXOs and also you Version of Electrum.
However they obviously can't see your seed phrase or private keys as well as your wallet encryption password.
Some people prefer to run their own mode too if they don't want to share any of these details.
1) Node owner sees your IP address or Tor's exit node address and your onion address; the version of your node, its capabilities, if your node transmits transactions or only blocks, your node's blockheight, your node's minimum transfer fee
2) Your Electrum client's IP address, all public addresses of your wallet because your Electrum wallet will ask the Electrum server to send the transaction history of every active public address in your wallet and subscribe to new transactions of every known public address of your wallet.
The Electrum server can assume that all public addresses belong to a connected client's wallet. Blockchain analysis companies like to run performant Electrum servers to aggregate public addresses that they can assume to belong to a particular wallet when Electrum wallet clients connect to them and request address histories.
For this reason I run my own full Bitcoin node and my own Electrum server so that my SPV wallets only need to ask my own Electrum server and my light wallet's privacy is maintained.
Is it actually possible to connect your own node to a public electrum server?
Or does that not work because the Electrum server itself is a node?
An Electrum server usually talks to his Bitcoin Core node and needs RPC credentials to submit needed RPC commands to the Core node. You don't want to give a foreign Electrum server the ability to talk via RPC to your Bitcoin Core node. Such RPC credentials or local cookie files containing random credentials are stored in config files of the Electrum server and you don't have access to those for some public Electrum server.
Usually an Electrum server gets blockchain data to build its data base from a Bitcoin node and the Electrum server needs to know the secret RPC credentials to properly talk with the Bitcoin node.
I don't think electrum sends the public keys to servers. To get the transaction history and UTXOs, all electrum needs is the list of the addresses.
You can run your own full node and have your own electrum server, so that you don't have to connect to the servers provided by third parties.
HyperRavenFull Member
Posts: 175 · Reputation: 633
#7Oct 11, 2020, 06:35 PM
You cannot. Electrum servers are not the same as Bitcoin nodes, they have different protocols and are not compatible with each other. Electrum wallets can connect to Electrum servers, and Electrum server uses their own instance of their Bitcoin full node to be able to retrieve information.
If you value privacy, you should run a full node yourself. That, or don't use Electrum specifically.
The owner will be able to see the time and duration that you have connected to the owner's node the most obvious one of course is your ip address but the owner will have no access or will not see your private keys
Like your earlier question, your ip address will be seen by the owner as well as your transactions history and data
No content of your wallet will be visible even if you connect to a node of another
Other member already answered when you connect as full node. But if you connect as lightweight/SPV wallet (which use BIP 158), your wallet would request block filter and block which contain transaction on your opened wallet.
If we want to be accurate on this matter, then we should say scripthash instead. https://electrumx-spesmilo.readthedocs.io/en/latest/protocol-methods.html mention these calls.
gr3g.0rbitHero Member
Posts: 1025 · Reputation: 2646
#10Oct 13, 2020, 10:23 AM
I noticed that the two questions seem disconnected.
I'm thinking that you're talking about something that can either connect to Bitcoin Core and public Electrum servers.
Perhaps, this is related to your previous topic about "Specter Wallet"?
If so, if it's connected to (your) Bitcoin Core, the owner will see entirely everything except private keys.
It will mirror your wallet as a watch-only wallet in Bitcoin Core where the owner of the node can see your every transactions, addresses, and even xpubs.
You shouldn't be connecting Specter to other people's Bitcoin Core anyways.
yield_forkFull Member
Posts: 162 · Reputation: 728
#11Oct 13, 2020, 11:17 AM
I have a personal electrs server (rust), but i don't have and don't know how to view the IP address of the client that connected to my server, it's open to listen to connections coming from outside my local network (0.0.0.0).
My electrs was installed directly, isn't an instance of pre-configured nodes like raspblitz, mynode, etc. It is installed directly on my linux.
I configured it around 2020-21 on my old notebook and only update it from time to time, i use bitcoin core more directly.
Maybe electrs doesn't have this capability, but other servers like electrumX can do this.
Does everyone who runs electrs have the ability to see the IP address of clients/wallets that connect to their servers?
My main Electrum server that I run with Fulcrum is deliberately not public, so it won't announce its presence and availability. Log files usually show when Electrum clients connect and communicate.
My experimental Umbrel box on a Raspi runs Electrs as Electrum server. I didn't check how it's configured, might have to look under the hood first. To the outside world it should only be reachable via its Tor address. I would've to dig deeper to figure out if it's public or not and how it logs connection and communication requests.
I would be very surprised if Electrs doesn't have an IP logging option. I never had the need for it, though.
If my Fulcrum reads "Please delete the datadir and resynch to bitcoind" Does that mean just delete the whole Fulcum_db directory with all the files inside of it?
According to https://github.com/openoms/bitcoin-tutorials/blob/master/fulcrum.md#database-corrupted yes, whatever your db folder is named, its content needs to be deleted and Fulcrum restarted.
If Fulcrum is still running, unlikely when it complained about a corrupted database, stop it. Delete content of your database folder, whatever its name is. Start Fulcrum and be patient, because it will take time to rebuild its database from scratch.
Do you have an idea why your database got corrupted? What happended to your system?
No clue why it stopped working, It's on a laptop that's only used for Fulcrum and Bitcoind. Maybe power glitch, my internet went down a few weeks ago that's the only culprit.
Based on my experience, yes.
If you haven't deleted Fulcrum_db directory, it contains some log file which may give you some clue. And if you have free time, consider checking system log and S.M.A.R.T. status of the storage drive used to store Fulcrum database folder.
?Reply
Sign in to reply to this topic