Pages:
Author

Topic: [Discussion] Dandelion - A protocol to hide transaction origin - page 2. (Read 921 times)

legendary
Activity: 2053
Merit: 1354
aka tonikt
I just use any of the send transaction web pages:
https://en.bitcoin.it/wiki/Transaction_broadcasting

some of them don't work through tor, but others do.

I can however understand that someone might have a need to anonymously broadcast new txs in a more systemic way, in which case my method will not be very good for him.
but then, as I say, there are safety concerns of people who'd have to participate in this kind of open source system.
legendary
Activity: 3430
Merit: 3071
Tor masks your real IP. But if you send 2 or more transactions from a Tor node, your peers know that they received them first from you.
I am not an expert on tor network, but I don't think it is that easy.

if you're not careful the broadcasting server might know that both the transactions came from the same source.
But it won't know your IP.

Also not a Tor expert, but the Bitcoin client implies that the tor exit node is the IP your Bitcoin peer communicates with. A Bitcoin peer who receives your relayed transactions presumably receives them from the exit node's IP, which it necessarily knows. The exit node knows the contents of the transaction you relay, but it shouldn't know your real IP, assuming Tor is perfect. Which is obviously not the case.

So your peer does know that the transactions came from the same IP, but maybe other Bitcoin nodes could be using the same exit node simultaneously. For that reason, using Tor is more anonymous than I implied.


Just restart your tor node/browser between sending different transactions and you should be fine.
Dark markets have been using Tor since the beginning of bitcoin and nobody ever find them by looking at the tx origin Smiley

Right. Dandelion should give you better transaction anonymity than that without having to restart your Bitcoin node between sending each transaction.
legendary
Activity: 2053
Merit: 1354
aka tonikt
Tor masks your real IP. But if you send 2 or more transactions from a Tor node, your peers know that they received them first from you.
I am not an expert on tor network, but I don't think it is that easy.

if you're not careful the broadcasting server might know that both the transactions came from the same source.
But it won't know your IP.

Just restart your tor node/browser between sending different transactions and you should be fine.
Dark markets have been using Tor since the beginning of bitcoin and nobody ever find them by looking at the tx origin Smiley
legendary
Activity: 2053
Merit: 1354
aka tonikt
IMHO the technology to hide transaction origin was invented long time ago and by now it is quite advanced already.

Except that it isn't called Dandelion, but Tor.

Why to invent the wheel for the second time?
As mentioned earlier, Bitcoin shouldn't need to rely on an external service in order to have privacy. Privacy should be built into the protocol itself. Using Tor requires having Tor available on your machine and special configuring which most users won't do. However Dandelion is built into the Bitcoin P2P protocol itself so users don't need to do any special configuration to get it to work, the software just works out of the box.

It is a nobel approach, but as the reality shows the devs are rather reluctant to introduce "privacy" features into bitcoin software.
And I can't blame them - it's a savage world were living in.

For instance, look at the "coin join" idea - it is at least 6 years old.
But still today the best and only reliable way to anonymize your coins is to push them through a tor mixer service.
Because nobody wants to put his head on providing such services. Or even developing the technology.
legendary
Activity: 3430
Merit: 3071
IMHO the technology to hide transaction origin was invented long time ago and by now it is quite advanced already.

Except that it isn't called Dandelion, but Tor.

Why to invent the wheel for the second time?

Tor masks your real IP. But if you send 2 or more transactions from a Tor node, your peers know that they received them first from you. With a certain proportion of sybil nodes on the Bitcoin network, that information can be used to make more concrete inferences about the owner of addreses. Dandelion pushes up the proportion of sybil nodes needed to make such inferences, probably to a very high number.
staff
Activity: 3374
Merit: 6530
Just writing some code
IMHO the technology to hide transaction origin was invented long time ago and by now it is quite advanced already.

Except that it isn't called Dandelion, but Tor.

Why to invent the wheel for the second time?
As mentioned earlier, Bitcoin shouldn't need to rely on an external service in order to have privacy. Privacy should be built into the protocol itself. Using Tor requires having Tor available on your machine and special configuring which most users won't do. However Dandelion is built into the Bitcoin P2P protocol itself so users don't need to do any special configuration to get it to work, the software just works out of the box.
legendary
Activity: 2053
Merit: 1354
aka tonikt
IMHO the technology to hide transaction origin was invented long time ago and by now it is quite advanced already.

Except that it isn't called Dandelion, but Tor.

Why to invent the wheel for the second time?
legendary
Activity: 1456
Merit: 1174
Always remember the cause!
Although it is brilliant idea and seems to be helpful for users who run a full node, I afraid it is hardly enough for average users. Typically, they use either online wallets and are totally compromised or spv wallets which disclose the addresses they are interested in, to their (potentially spy) peers  anyway.
legendary
Activity: 3430
Merit: 3071
hiding transaction origin, that is not the meaning of the transparency of public blockchain

The blockchain was not conceived so that all meta-information about the network would be transparent, only the ledger entries themselves (the ledger never stored IP addresses, that's undesirable if the currency is to be a good one). The transparency is there to prevent double spends and to prove what the inflation rate is. Determining the origin IP of a transaction is not a part of the Bitcoin protocol, and never was. The design goals behind Bitcoin have always been to make the best possible cryptographic currency, which necessarily includes best possible fungibility of units, and which necessarily includes user privacy and anonymity.

Dandelion is simply one new feature that has been making Bitcoin's users more anonyous through making their transactions more private. It's completely consistent with improving Bitcoin's money properties.
hero member
Activity: 784
Merit: 1416
hiding transaction origin, that is not the meaning of the transparency of public blockchain

Is just about hiding the ip that originated the transaction itself, i don't see anything wrong with that and I suppose if somebody bothered coming up with this solution, means that there have been already cases where people were "triangulated" successfully.
staff
Activity: 3374
Merit: 6530
Just writing some code
Suppose I automatically generate two dandelion transactions, with some relationship with each other, like parent/child and relay them at the same time.  Not seeing the first transaction makes the second invalid, but if they both relay through dandelion, won't there be situations where the second transaction is seen by the Bitcoin network first and rejected as invalid because the first is still swimming around in dandelion relays somewhere?
You would have the same problem today. If you relayed both transactions to your peers at the same time, the second would also be invalid because the first hadn't propagated fully yet. The solution to this "problem" is to wait a few seconds before sending the second transaction. With Dandelion, it is easier to tell if the network has heard your transaction because you will get INVs from the rest of your peers (the ones you hadn't sent the tx to) saying that they have your transaction. At that point, you can broadcast the second one.

Or are both somehow routing through the same route?  Huh
They could be routed through the same route. For a given inbound connection, all dandelion transactions received from the connection must be sent through the same outbound connection. As the creator of a transaction, you can choose which outbound connection you wish sent your dandelion transaction to. So if you choose the same node as the first one, then your transaction will most likely end up going through the same route. Of course, each node should also be periodically reselecting which outbound node they will send dandelion transactions to for each incoming connection, so it is possible that you will end up with a different route.

Additionally, from what I read, every dandelion ready node can turn any dandelion transaction into a normal Bitcoin transaction and broadcast it.  There isn't anything like onion routing preventing intermediaries from reading what they're sending along in the next hop.  What if you set up a few nodes, but instead of "fluffing" a transaction 10% of the time, you do it 50%.  Doesn't that degrade the overall security assumptions?
What security assumptions?

All that Dandelion guarantees is that an adversary will have a harder time connecting transactions to IP addresses. Even if you have a node that fluffs 100% of the time, this guarantee still holds because it is not you who sent the transaction to the network, it was someone else. So long as you follow the protocol, your transactions will be harder to deanonymize. Furthermore, you don't stick with the same outbound peer forever. You change which peer to relay dandelion transactions to periodically, so eventually you will get an honest node.
full member
Activity: 123
Merit: 470
I don't understand how this can work.  Suppose I automatically generate two dandelion transactions, with some relationship with each other, like parent/child and relay them at the same time.  Not seeing the first transaction makes the second invalid, but if they both relay through dandelion, won't there be situations where the second transaction is seen by the Bitcoin network first and rejected as invalid because the first is still swimming around in dandelion relays somewhere?  Or are both somehow routing through the same route?  Huh

Additionally, from what I read, every dandelion ready node can turn any dandelion transaction into a normal Bitcoin transaction and broadcast it.  There isn't anything like onion routing preventing intermediaries from reading what they're sending along in the next hop.  What if you set up a few nodes, but instead of "fluffing" a transaction 10% of the time, you do it 50%.  Doesn't that degrade the overall security assumptions?

Maybe these are stupid questions and I've misunderstood something, but the BIP and overall research feels incomplete.
legendary
Activity: 3430
Merit: 3071
One thing that is not clear to me, does this mean a node using Dandelion is also receiving transactions only through it? If so couldn't this cause potential security issues in certain cases? Since you need completely to relay on it and you cannot be 100% sure what is happening on the rest of the network.

I'm not sure I totally understand your question, but I think you might be getting the wrong idea.

All dandelion transactions get broadcast in the regular way that Bitcoin nodes do it today. The difference is that your node doesn't broadcast your transactions, you send it to some distant node who then broadcasts your transactions. Dandelion lets you use a different node for broadcasting every new transaction you make. That means your IP address can't be used to link your transactions together.

So there's no added uncertainty about which transactions are waiting to be confirmed, but it does make it uncertain which node sent any of the transactions in the first place.
hero member
Activity: 784
Merit: 1416
One thing that is not clear to me, does this mean a node using Dandelion is also receiving transactions only through it? If so couldn't this cause potential security issues in certain cases? Since you need completely to relay on it and you cannot be 100% sure what is happening on the rest of the network.
staff
Activity: 3374
Merit: 6530
Just writing some code
1. Would this affect physical merchants who accept 0-confirmation, since transaction propagation will be longer and merchant/user might have wait a bit longer while there's queue?
No. The transaction will take a little bit longer (but likely not noticeably) than it would without dandelion. The effect of this is really just as if you had hesitated a few extra seconds before sending the transaction. There is no difference to these merchants as they will still likely receive the transaction at around the same time the vast majority of the network does. There is no queue.

2. Would this affect block size/weight limit size increase in future?
No. This is not at all related to transaction sizes, transaction formats, or consensus rules. It is purely a network protocol change. It could be deployed right now with no other changes to Bitcoin.

3. Is using Tor/I2P/Kovri better/simpler solution?
With Tor (I'm not super familiar with the others), you could potentially correlate multiple transactions to the same node. AFAIK, with Dandelion, a new circuit is chosen for each broadcast, so it is much harder to correlate multiple transactions. Also, as mentioned earlier, it would be better for Bitcoin to adopt its own privacy protocols rather than relying on external ones. If the privacy protocol was built into the network protocol itself, that would be better than just a few people choosing to use an external privacy method.

That said, it will obviously be slightly more resource intensive for those choosing to use Dandelion.  You'll be maintaining two distinct mempools.

I certainly didn't think that, but since once the transaction is broadcasted to network, you simply move transaction on stempool to mempool. IMO it has bigger impact on computational resource.

I could be wrong, but since your stempool will handle other peoples' Dandelion transactions, I thought it fair to assume that both stempool and mempool would need to be maintained continuously.  I doubt it will be particularly demanding on your system, though.  I really like the idea.

Resource usage won't be that much worse as some tricks can be used. The stempool is a superset of the mempool, meaning that everything in the mempool is also in the stempool. So instead of duplicating everything, you can just maintain a separate stempool only set of transactions. This would take up the approximately the same amount of memory (there's some data structure overhead) as if the node didn't have dandelion since all of the dandelion transactions would have still happened anyways and gone into the mempool.

For CPU usage, it won't be that much more.



Dandelion is BIP 156.
legendary
Activity: 3724
Merit: 3063
Leave no FUD unchallenged
That said, it will obviously be slightly more resource intensive for those choosing to use Dandelion.  You'll be maintaining two distinct mempools.

I certainly didn't think that, but since once the transaction is broadcasted to network, you simply move transaction on stempool to mempool. IMO it has bigger impact on computational resource.

I could be wrong, but since your stempool will handle other peoples' Dandelion transactions, I thought it fair to assume that both stempool and mempool would need to be maintained continuously.  I doubt it will be particularly demanding on your system, though.  I really like the idea.
newbie
Activity: 22
Merit: 6
legendary
Activity: 3430
Merit: 3071
With this proposal/improvement, i wonder about these things :
1. Would this affect physical merchants who accept 0-confirmation, since transaction propagation will be longer and merchant/user might have wait a bit longer while there's queue?

No, in 2 ways.

1st way: Transaction propagation using BIP 156 (i.e. dandelion tx relay) will still be very fast in relative terms, so it won't make any difference in the real world
2nd way: Accepting 0-confirmation transactions will be just as risky (and inadvisable) as they are without dandelion


2. Would this affect block size/weight limit size increase in future?

No


3. Is using Tor/I2P/Kovri better/simpler solution?

It's gonna be easier to use BIP 156, it doesn't require the user to do anything (Tor requires some extra setup). But it won't work 100% of the time for a while yet, as BIP 156 (dandelion) needs compatible nodes on the Bitcoin network for it to work; it's currently planned for inclusion in version 0.18.0. Only 0.18.0+ nodes will be able to propagate transactions the dandelion way (unless it gets backported to older versions, which seems unlikely as it's a new feature), so it will take some time before you can expect every transaction to be relayed using this technique. I imagine the protocol will be implemented so that BIP 156 nodes prefer to relay only to other BIP 156 compatible nodes, but the implementation isn't finished AFAIK.
legendary
Activity: 3724
Merit: 3063
Leave no FUD unchallenged
Quote
2. Would this affect block size/weight limit size increase in future?

I believe yes, the same as ring signatures? Maybe DooMad can confirm.

It's the first time I've read about it, but my initial understanding based on a cursory glance of the BIP is no.  Whichever Dandelion-compatible client is selected at random to actually broadcast the transaction, it strips out any of the extra information required by Dandelion and just sends a regular Bitcoin transaction.  Definitely slows down propagation a tiny bit, but doesn't appear to impact tx size once the final broadcast is made.  Clever stuff.

That said, it will obviously be slightly more resource intensive for those choosing to use Dandelion.  You'll be maintaining two distinct mempools.
legendary
Activity: 2912
Merit: 2066
Cashback 15%
3. Is using Tor/I2P/Kovri better/simpler solution?

I think in the long run it would make sense for Bitcoin to inherently support transaction propagation privacy, without relying on external solutions. The more people use such a system, the better it can ensure privacy. High usage can only be ensured by making it part of Bitcoin.

Question is of course the practical relevance of tracking the (physical) source of a transaction. Currently most invasive measures from governmental bodies seem to take part via transaction analysis and following coins until they end up at an exchange or known merchant. However I wouldn't be surprised if the tracking of Bitcoin nodes became if a thing in the future (if that's not the case already).

Obviously the question is what trade-offs there are to be made, especially in terms of propagation times. At a first glance it doesn't seem to introduce any overhead to the blockchain though, as it seems to only affect transaction routing between nodes. Admittedly I have yet to take a closer look though.


Or take features that help in anonymous transactions in an off-chain solution that Bitcoin already has?

If you are referring to LN -- to my understanding Dandelion would improve privacy on a different level. While LN makes transaction analysis much harder, Dandelion obscures the source of on-chain transactions (eg. opening and closing transactions when referring to LN) in terms of network topology (and by extension on a geographical level).
Pages:
Jump to: