ABCbits (OP)
Legendary
Offline
Activity: 2982
Merit: 7841
Crypto Swap Exchange
|
Recently i read some Bitcoin improvement idea, but i'm really surprised there are barely any information on news media, medium and this forum. So, i decided to make this thread. What is Dandelion?Dandelion is a protocol to prevent IP tracking/nodes which firstly broadcast transaction. Bitcoin protocol don't need to be changed since it's implemented on Bitcoin client, which means no soft/hard-fork required. Why it's necessary?Every time a node broadcast a transaction, obviously you sent the transaction to other nodes. That means other nodes know who broadcast the transaction to them. If there's group/state who wish to track transaction origin, they could run many nodes and connect to as many nodes as they can so they can get the node which broadcast the transaction first. How it works (simplified) ?![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fraw.githubusercontent.com%2Fdandelion-org%2Fbips%2Fmaster%2Fbip-dandelion%2F1-dandelion.png&t=665&c=vyeV8JSbImUEVg) 1. Make a privacy graph (few people refers it to hamiltonian circuit or "anonymity set") which contain random peer. 2. A node broadcast a transaction to another peer on circuit 3. The next peer randomly decide to : A. broadcast the transaction to Bitcoin network (10% chance by default) B. Only broadcast to next peer on circuit (back to step 3) Potential problems1. Not enough peers to participate, which reduce Dandelion's advantage. 2. While Dandelion bring good privacy improvement, IMO state/group could track to the "anonymity set". My opinionDandelion bring lots of advantage which require no protocol change and user barely feel the disadvantage (such as slightly longer transaction propagation). Bitcoin Core or any clients should implement Dandelion. Estimated release dateIt was planned along with Bitcoin Core 0.17.0 releases, but currently planned released along with 0.18.0. p.s. this thread might be changed if i realized there's wrong information, find simpler/more accurate explanation or found reliable information source. Some informations:1. https://arxiv.org/pdf/1701.04439.pdf2. https://github.com/dandelion-org/bips/blob/master/bip-dandelion.mediawiki3. https://t4ch.top/dandelion-a-bitcoin-protocol-to-hide-a-transactions-origin/4. https://medium.com/@thecryptoconomy/dandelions-and-a-bright-future-for-bitcoin-privacy-712dbc4b1ec55. https://bitcoinmagazine.com/articles/anatomy-anonymity-how-dandelion-could-make-bitcoin-more-private/6. https://github.com/bitcoin/bips/blob/master/bip-0156.mediawiki7. https://hackernoon.com/bitcoin-upgrades-with-dandelion-the-transaction-privacy-protocol-ae9647bfbcb2This thread is archived at https://archive.fo/mg8oZ
|
|
|
|
Wind_FURY
Legendary
Offline
Activity: 3024
Merit: 1883
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 01, 2018, 06:58:22 AM |
|
OP, can you post more information and what your opinion is on the proposal? That would help start the discussion. 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? Of course. It will affect the user too. I will not let the payer leave until I see one confirmation if I was the merchant. Hahaha. 2. Would this affect block size/weight limit size increase in future? I believe yes, the same as ring signatures? Maybe DooMad can confirm. 3. Is using Tor/I2P/Kovri better/simpler solution? Or take features that help in anonymous transactions in an off-chain solution that Bitcoin already has?
|
| .SHUFFLE.COM.. | ███████████████████████ ███████████████████████ ███████████████████████ ███████████████████████ ███████████████████████ ███████████████████████ ███████████████████████ ███████████████████████ ███████████████████████ ███████████████████████ ███████████████████████ ███████████████████████ ███████████████████████ | ███████████████████████ ███████████████████████ ███████████████████████ ███████████████████████ ███████████████████████ ███████████████████████ ███████████████████████ ███████████████████████ ███████████████████████ ███████████████████████ ███████████████████████ ███████████████████████ ███████████████████████ | . ...Next Generation Crypto Casino... |
|
|
|
HeRetiK
Legendary
Offline
Activity: 3038
Merit: 2166
Playgram - The Telegram Casino
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 01, 2018, 08:54:35 AM |
|
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).
|
|
|
|
▄▄███████▄▄███████ ▄███████████████▄▄▄▄▄ ▄████████████████████▀░ ▄█████████████████████▄░ ▄█████████▀▀████████████▄ ██████████████▀▀█████████ █████████████████████████ ██████████████▄▄█████████ ▀█████████▄▄████████████▀ ▀█████████████████████▀░ ▀████████████████████▄░ ▀███████████████▀▀▀▀▀ ▀▀███████▀▀███████ | ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ Playgram.io ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ | ▄▄▄░░ ▀▄ █ █ █ █ █ █ █ ▄▀ ▀▀▀░░
| │ | ▄▄▄███████▄▄▄ ▄▄███████████████▄▄ ▄███████████████████▄ ▄██████████████▀▀█████▄ ▄██████████▀▀███▄██▐████▄ ██████▀▀████▄▄▀▀█████████ ████▄▄███▄██▀█████▐██████ ██████████▀██████████████ ▀███████▌▐██▄████▐██████▀ ▀███████▄▄███▄████████▀ ▀███████████████████▀ ▀▀███████████████▀▀ ▀▀▀███████▀▀▀ | | │ | ██████▄▄███████▄▄████████ ███▄███████████████▄░░▀█▀ ███████████░█████████░░█ ░█████▀██▄▄░▄▄██▀█████░█ █████▄░▄███▄███▄░▄██████ ████████████████████████ ████████████████████████ ██░▄▄▄░██░▄▄▄░██░▄▄▄░███ ██░░░█░██░░░█░██░░░█░████ ██░░█░░██░░█░░██░░█░░████ ██▄▄▄▄▄██▄▄▄▄▄██▄▄▄▄▄████ ███████████████████████ ███████████████████████ | | │ | ► | |
|
|
|
DooMAD
Legendary
Offline
Activity: 3892
Merit: 3178
Leave no FUD unchallenged
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 01, 2018, 09:43:10 AM Last edit: October 01, 2018, 12:49:22 PM by DooMAD |
|
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.
|
|
|
|
Carlton Banks
Legendary
Offline
Activity: 3430
Merit: 3080
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 01, 2018, 12:33:23 PM Last edit: October 01, 2018, 12:43:36 PM by Carlton Banks Merited by ABCbits (3), Foxpup (2), HeRetiK (1) |
|
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.
|
Vires in numeris
|
|
|
|
DooMAD
Legendary
Offline
Activity: 3892
Merit: 3178
Leave no FUD unchallenged
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 01, 2018, 02:40:34 PM |
|
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.
|
|
|
|
achow101
Moderator
Legendary
Offline
Activity: 3486
Merit: 6824
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.
|
|
|
|
Piggy
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 02, 2018, 04:59:57 AM |
|
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.
|
|
|
|
Carlton Banks
Legendary
Offline
Activity: 3430
Merit: 3080
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 02, 2018, 08:33:40 AM |
|
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.
|
Vires in numeris
|
|
|
Cøbra
Bitcoin.org domain administrator
Full Member
![*](https://bitcointalk.org/Themes/custom1/images/star.gif) ![*](https://bitcointalk.org/Themes/custom1/images/star.gif)
Offline
Activity: 123
Merit: 474
|
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](https://bitcointalk.org/Smileys/default/huh.gif) 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.
|
|
|
|
achow101
Moderator
Legendary
Offline
Activity: 3486
Merit: 6824
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](https://bitcointalk.org/Smileys/default/huh.gif) 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.
|
|
|
|
Piggy
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2018, 03:01:51 PM |
|
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.
|
|
|
|
Carlton Banks
Legendary
Offline
Activity: 3430
Merit: 3080
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2018, 04:02:25 PM Last edit: October 03, 2018, 05:32:48 PM by Carlton Banks |
|
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.
|
Vires in numeris
|
|
|
aliashraf
Legendary
Offline
Activity: 1456
Merit: 1174
Always remember the cause!
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2018, 05:20:04 PM |
|
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.
|
|
|
|
piotr_n
Legendary
Offline
Activity: 2053
Merit: 1356
aka tonikt
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2018, 05:31:39 PM |
|
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?
|
Check out gocoin - my original project of full bitcoin node & cold wallet written in Go.PGP fingerprint: AB9E A551 E262 A87A 13BB 9059 1BE7 B545 CDF3 FD0E
|
|
|
achow101
Moderator
Legendary
Offline
Activity: 3486
Merit: 6824
Just writing some code
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2018, 05:35:48 PM |
|
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.
|
|
|
|
Carlton Banks
Legendary
Offline
Activity: 3430
Merit: 3080
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2018, 05:44:57 PM |
|
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.
|
Vires in numeris
|
|
|
piotr_n
Legendary
Offline
Activity: 2053
Merit: 1356
aka tonikt
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2018, 05:48:46 PM |
|
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.
|
Check out gocoin - my original project of full bitcoin node & cold wallet written in Go.PGP fingerprint: AB9E A551 E262 A87A 13BB 9059 1BE7 B545 CDF3 FD0E
|
|
|
piotr_n
Legendary
Offline
Activity: 2053
Merit: 1356
aka tonikt
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 03, 2018, 05:53:32 PM |
|
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](https://bitcointalk.org/Smileys/default/smiley.gif)
|
Check out gocoin - my original project of full bitcoin node & cold wallet written in Go.PGP fingerprint: AB9E A551 E262 A87A 13BB 9059 1BE7 B545 CDF3 FD0E
|
|
|
|