-
Notifications
You must be signed in to change notification settings - Fork 92
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Dandelion support #588
Dandelion support #588
Conversation
utACK |
I don't fully understand the implementation, but changes seem to make sense, still reading through the unit test |
set up 6 nodes with config file adding one neighboring node 1 > 2 > 3 > 4 > 5 > 6 > 1 so each node has 2 connections, one added one found. tested sending transactions from 1 to 4 and 1 to 5, all worked with a delay time around 20 sec to over a minute. monitoring the mempoolinfo, the first neighboring node (2) usually got the transaction around 15-30 sec after it's created, and then each node adding a delay time between 0 - 15 seconds was observed. One thing worth mentioning is that when 1 creates a transaction, the transaction always goes to 6, and not 2. same behavior also happened when 2 creates a transaction to 6, the broadcasting always go to 1 only and not 2(added node in config file of 2). |
could be also related to the order of the way i launch my nodes. i launched in sequence of 1 6 5 4 3 2. |
from testing it seems that once a node boots up, it chooses one of the connected node to broadcast dandelion transactions, and it'll always be that node for future transactions. might be better if the node selection is randomized every time from connected nodes. (could also be result of added node syndrome described below) once the selected node shuts down, dandelion transactions became really slow to use other nodes or stuck in mempool completely. rebooting the sending client will reset the outgoing node selection and flush the stuck transaction (stuck transaction could be the result of the observation below where added node is not preferred by dandelion since my setup was 1>2>3>4>5>6>1, so disliking 2 from one, 1 broadcasts transaction normally this way 1>6>5.... and if 6 is shut down, going through 2 suffer the added node syndrome described below) tested sending up to 10 transactions at a time. it'll all go through the same node but at a different delayed time. good stuff. (below is referred the added node syndrome) |
Paid 600NAV to NL9jPW75P4kNMdvQmFBpYVkZ3sABQtXfYY |
working beautifully now. great job. |
A new build of 336502a has completed succesfully! |
A new build of 61a672b has completed succesfully! |
Needs to be rebased. |
A new build of 5c25e15 has completed succesfully! |
A new build of b8109d1 has completed succesfully! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The newly added siphash test makes sense
I tested with 4 local nodes in circular connection, broadcasting seems to work fine
This PR adds support for Dandelion as described in https://github.com/bitcoin/bips/blob/master/bip-0156.mediawiki
Includes unit test.