I've been using ELECTRUM for a really long time, like way longer than I can recall. But with all this talk about fees and dust limits, I started wondering if there's any way to track which node you used to send a transaction.
I'm especially curious about this for mobile wallets like Electrum. I'm planning to run a little experiment to see if I can find out which nodes I used to broadcast a specific transaction in the past, or maybe even the nodes that confirmed it, like the very first one.
There is this thread that did tested some minimum dust transactions some years back for segwit and non segwit address [TESTED IT] Minimum transaction value, you can do the same, connect to different nodes with known min relay fee betweent 0.1 and 1 sat/vbyte. Try dust limit or try inputs less than dust limit if they are going to be accepted on their mempool. Since you use electrum, we have some active servers like LoyceV's 0.1 sat/vbyte Electrum Server Adventure and DireWolfM14's Electrum SPV Server, you can test try both.
Well I do understand what you are saying but the main point I'm trying to make is if for example I made a transaction a couple weeks ago, is it possible for me to actually go back and check the transaction and get the node that propagated the transaction? I've been doing a little reading for a while now. From what I've gathered so far it seems it's not possible but I'm still looking to see if there's a way around it actually.
Honestly I'm surprised to see this never thought it's possible looks very feasible for paying forum evil fees last I tried I couldn't broadcast less than 1000 sat/vbyte but I can't remember whose node I was connected to.
This isn't possible.
If you are connected to a node you know or your personal node, that's the first node that accept your transaction to it mempool, upon arrival they get propagated to immediate nodes that you are connected until this relay to all other active node on the network waiting to be mine. Once it's mine and added to the block, the miner relay to other mining nodes to be kept permanently.
You can only check the mining pool that mine your transaction on the network and the block it was mined to but not node. You can't even view nodes activities on block explorer.
Yea, it's not.
I couldn't find anything in the source code that would allow Electrum to save a log that does what you're asking, but I assume you could achieve it by modifying the source code so that each transaction log is saved locally. You wouldn't be able to see what happened before that, but you could collect it for future reference. The only way you could investigate this would be if you didn't have an automatic configuration and had a specific server selected, but given your question, it's obvious that's not the case.
Is it possible for someone to trace the origin? Yes, what an attacker would do is run their own Electrum servers, and then there would be no doubt about the origin, unlike with spy nodes. They know it with absolute certainty... even so, you could protect yourself by configuring your network.
The ideal protection would be Tor, your own Electrum server, and your own node.
As mcdouglasx said, you can't.
Currently, your option here is to enable logs, and take note of the "as new interface" lines' timestamp indicating the Electrum server (node) that you're currently using at that time.
Other connection-related logs are for extra servers that aren't used to broadcast your transactions.
Then the tricky part: You must cross-check the transaction in your history and the "adding signature for" log's timestamp indicating when it's signed by the wallet.
"Tricky" because it could've been signed and saved locally but broadcasted on a later date, in this case, you should see a log about saving it to wallet.storage next to it.
In case it's saved externally (e.g.: psbt) and imported later to broadcast, you can't fully rely on the logs about its txid in the synchronizer since it can also mean that it's broadcasted elsewhere.
But since it's personal (you said "I used to broadcast"), you should be able to remember if it's the case.
On the other hand, the time in the GUI are based from the confirmation time, not when it's broadcasted so you can't rely on it.
Once you get a good indication of its timestamp based from your assessment on the available info, compare that to the last "new interface" line during that session.
That should be the first node where you broadcasted the transaction.
Of course, if you haven't enabled logging at that time, you can't do this.
This can be done by checking which miner mined the particular block where your transaction is included.
Using blockexplorers could answer this if the miner (pool) is known.
What would prevent OPs node from broadcasting transaction to a single node of their choice?
In my view doing it this way would let OP have their cake and eat it too. Or am I missing something?
I think you missed the part where he said "in the past".
Of course, if it's starting today, he can do that to get an absolute control where he wants to broadcast his transactions.
But since he's asking, it's a given that he's not using a static Electrum server (node) or he has no idea which server that he used in the past.
Nope, I didnt miss that. From what OP said I understood that they just wanted to be prepared for such task, so that I emphasized that if OP is obsessed with the idea of identifying the first node that broadcasts their initial transaction, there is a real way to do it provided this method is applied consistently to all of OPs transactions.
But still I don't understand why on earth OP needs it. In my view it is entirely pointless task.
I consulted a little bit with good-old Google but it wasn't much help. I couldn't find any topics or discussions about OP's question from the past. ChatGPT says it isn't possible either (for whatever that's worth). The Bitcoin Evidence Base AI was no help either and responded worse to the prompt than ChatGPT.
@Mia Chloe
Is it just curiosity or why are you looking for the nodes that broadcast your past transactions? I am curious.
I'm curious why you are curious about my curiosity lol..... well basically I made a broad a couple weeks before I made this post and if I can remember correctly I use about 0.5 sats/vbytes but I couldn't remember what node I was connected to if it was direwolf's or just a random public node.
The rest of it is just out of curiosity but I think I've gotten the most of the answers though funnily I'd have to use desktop Electrum for most of the work around mobile barely has some features.
I don't know many Electrum servers that accept below 1 sat/vByte transactions although some time since their introduction have passed and the list should be longer. There is LoyceV (electrum.loyce.club:50002) and another one that I tested in the past but was recently offline for a bit (electrum.labrie.ca).
True. Electrum for desktop is significantly better than its mobile alternative. Try Blue Wallet if you are using Android. I find it to be better. You can connect to Electrum servers of your choice from the settings.
hi Mia do you just want to charge below 1sat/vbyte?
I used to use fees even up to 0.2sat/vbyte a few months ago, but I use my own private server.
But are you sure you want to do it when the mempool is quite dense as it is now? recently I sent BTC at a fee of 1.56sat/vbyte already two hours unconfirmed.
I think if you just want to set the electrum server in the mobile version, you can still do it.
No, and it's a good thing this isn't possible, because point of view, there would be a serious privacy problem in the wallet that would allow such a feature. Cause that would make the work of surveillance agencies a lot easier, don't you think?
I remember that in the remote past, the block explorer blockchain[.]info (now .com), recorded the IP of the transaction that last relayed the transaction (probably) of all transactions. But that was a long time ago, more than 14 years ago i think, can anyone remember?
https://bitcoin.stackexchange.com/questions/3934/locating-transactions-by-the-relayed-by-ip-in-blockchain-info
Additionally, Bluewallet (and ibis wallet, although in beta) supports the electrum seed version format, but does not create electrum seeds.
It's not very useful anyways since the logged IP doesn't mean that it's the first node who broadcasted it.
It's just the IP of their peer who relayed the transaction to them, they can't tell if it's just relayed to that node or if it's the actual sender.
I'll expand the best answer in that reference: Using --connect to a node will isolate your node to connect exclusively to it.
So when you broadcast, it'll be only relayed to that node at first and then that node will relay it to its peers to propagate.
If one of its peers is that blockexplorer that logs IP, its IP will be logged instead.
It indirectly explains how t works.
It might not be the best time to send sub 1 sat/vByte transactions. You are right. I am looking at the mempool at https://jochen-hoenicke.de/queue/#BTC,2h,weight to get an estimate. At the time of writing this, you would need to pay 1.2 sat/vByte for a reasonable high chance of a next block confirmation. If we go down to the 0.2 sat/vByte level for example, we can see around 15 vMb of unconfirmed transactions waiting to be picked up by miners.