Darksend Liquidity Provider - v0.10.16.4

eduffield

Core Developer
Mar 9, 2014
1,084
5,320
183
Some improvements were suggested by the community, such as allowing the liquidity provider to mix with any denomination and sending random payments to itself from time to time, so it looks like a normal client.

Settings

./darkcoin-qt --listen=0 --liquidityprovider=10 --datadir=/home/user/.darkcoin
./darkcoind --listen=0 --liquidityprovider=10 --datadir=/home/user/.darkcoin

I’ve introduced --liquidityprovider=[1-100], 1 being very frequent mixing and 100 being very infrequent.

Fees - Maximum amount (without possible collateral charges, due to network outages, etc)

Liquidity Provider=1 : Up to 175.2DRK per year
Liquidity Provider=10 : Up to 17.52DRK per year
Liquidity Provider=30 : Up to 5.84DRK per year
Liquidity Provider=50 : Up to 3.504DRK per year
Liquidity Provider=100 : Up to 1.752DRK per year

Likely fees will be much lower due to the lack of Darksend mixed transactions currently. However, I suggest running with at least a setting of 20 (being that it can mix with anyone).

How much DRK is needed?

The liquidity provider can run with any amount of DRK. But I suggest running it with between 50DRK and 1000DRK.

Updates
- Improvements for not sending payments to yourself so frequently
- Randomly change anon amount infrequently

Note
- There is some issue where collateral is being charged when it shouldn't. These are 0.1DRK charges that will appear randomly. I've been getting about 1 every 2 days or so. I'll look into this later.

- Updated to be compatible with 15.19

Downloads

Linux
https://github.com/darkcoinproject/...dityproviders/darkcoin-0.10.16.4-linux.tar.gz

OSX
https://github.com/darkcoinproject/...liquidityproviders/darkcoin-0.10.16.4-osx.dmg

Windows
https://github.com/darkcoinproject/...liquidityproviders/darkcoin-0.10.16.4-win.zip
 
Last edited by a moderator:

tungfa

Grizzled Member
Foundation Member
Masternode Owner/Operator
Apr 9, 2014
8,902
6,739
1,283
Great work !
I am not sure if you ever sleep as you are bringing us updates on a constant level !!

very cool !
thanks ..>
 

TanteStefana

Grizzled Member
Foundation Member
Mar 9, 2014
2,871
1,863
1,283
Wow, this is out of the blue! I didn't know something like this was in the works! Gonna put my non-mn coins on this!
 

Minotaur

Well-known Member
Foundation Member
Apr 7, 2014
452
1,079
263
Great I want to run a few of these on reserved instances. It is important for people trying Darksend for the first time to have a good experience from the get go.
 
  • Like
Reactions: tungfa

Propulsion

The buck stops here.
Feb 26, 2014
1,008
468
183
Dash Address
XerHCGryyfZttUc6mnuRY3FNJzU1Jm9u5L
eduffield
  • Any issues with running it with more than 1000?
If so: Do you receive more fee's with a larger amount available?​
  • Is the source available to compile instead of the binary files?
  • How is this compared to a MN?
N/M, after reading it again, it appears that you get charged fees for operating the daemon as a liquidity provider.
 

oblox

Well-known Member
Aug 6, 2014
1,032
537
183
eduffield
  • Any issues with running it with more than 1000?
If so: Do you receive more fee's with a larger amount available?​
  • Is the source available to compile instead of the binary files?
  • How is this compared to a MN?
N/M, after reading it again, it appears that you get charged fees for operating the daemon as a liquidity provider.
Sure you get charged fees, darksend denominations like any other round. Collateral charges are hit or miss, but I have received those on a non-liquidity client as well.
 

italx

Well-known Member
Foundation Member
Jul 31, 2014
65
52
158
California
Can this be run on a masternode along side the normal client (just with it's own data dir)? Or does it need it's own ip, etc?
 

moocowmoo

Bovine Bit-flipper
Foundation Member
Jun 15, 2014
483
603
263
masternode.me
Dash Address
XmoocowYfrPKUR6p6M5aJZdVntQe71irCX
Looks like you can run it beside a masternode. Doesn't need to listen on port 9999.

my aggressive (mix every 30 blocks) darkcoin.conf
Code:
#----
rpcuser=stuff
rpcpassword=stuff
rpcallowip=127.0.0.1
rpcport=9998
#----
listen=0
server=1
daemon=1
logtimestamps=1
maxconnections=256
#--------------------
masternode=0
#--------------------
anonymizedarkcoinamount=10000
liquidityprovider=2
#--------------------
 

Minotaur

Well-known Member
Foundation Member
Apr 7, 2014
452
1,079
263
eduffield
  • Any issues with running it with more than 1000?
If so: Do you receive more fee's with a larger amount available?​
  • Is the source available to compile instead of the binary files?
  • How is this compared to a MN?
N/M, after reading it again, it appears that you get charged fees for operating the daemon as a liquidity provider.
Yes one gets charged fees but newcomers will have a good experience and stay with DRK, so what we pay in fees hopefully we get back 10x in adoption.
 

donho

Member
Masternode Owner/Operator
Apr 16, 2014
96
20
58
So I get why there needs to be a fee for Darksend, to prevent spamming/abuse.
But here's my proposal: Let Masternodes be Darksend Liquidity Providers (optional) until there's enough usage that we don't need it anymore AND don't charge them the fee.
If a MN operator trys to missbehave, eg spam the network, his MN could be kicked off the MN list for say 24 hours or maybe more so that this MN gets no Payments during this time.
This way we could get Liquidity without fees for the Providers while spaming is still punished.

Is something like this possible evan?
 

oaxaca

Well-known Member
Foundation Member
Jul 8, 2014
573
832
263
Looks like you can run it beside a masternode. Doesn't need to listen on port 9999.

my aggressive (mix every 30 blocks) darkcoin.conf
Code:
#----
rpcuser=stuff
rpcpassword=stuff
rpcallowip=127.0.0.1
rpcport=9998
#----
listen=0
server=1
daemon=1
logtimestamps=1
maxconnections=256
#--------------------
masternode=0
#--------------------
anonymizedarkcoinamount=10000
liquidityprovider=2
#--------------------

Can you give an example setup with the LP and MN living happily together?
 

crowning

Well-known Member
May 29, 2014
1,414
1,997
183
Alpha Centauri Bc
So I get why there needs to be a fee for Darksend, to prevent spamming/abuse.
But here's my proposal: Let Masternodes be Darksend Liquidity Providers (optional) until there's enough usage that we don't need it anymore AND don't charge them the fee.
If a MN operator trys to missbehave, eg spam the network, his MN could be kicked off the MN list for say 24 hours or maybe more so that this MN gets no Payments during this time.
This way we could get Liquidity without fees for the Providers while spaming is still punished.

Is something like this possible evan?
The design of how a Masternode is defined does not allow using the 1000 DRK for mixing.
 

Dr.Crypto

Member
Jul 9, 2014
46
32
58
The design of how a Masternode is defined does not allow using the 1000 DRK for mixing.
Maybe in the future, the definition of Masternodes could be changed to something like:
  • hold 950 DRK' in a single address (vin = 950, and MN disabled if these are moved), possibly in cold storage as it's allowed now
  • and keep 50 DRK in some place that allows mixing with other users
Of course the second step should be defined more clearly (hot wallet or not? if yes, how to keep it secure?), but I think participating in mixing operations should be a mandatory task assigned to masternodes.
So far we've concluded that Darksend was successfully preserving anonimity by making it extremely expensive to compromise enough masternodes, but judging by the current liquidity for mixing, I think that conversely, it would be extremely cheap to setup a lot of rogue liquidity providers that could allow tracing the coins back to their original owners.
We need thousands of liquidity providers for the system to be safe, and it happens that we are aiming for thousands of masternodes in operation.
 
  • Like
Reactions: crowning

donho

Member
Masternode Owner/Operator
Apr 16, 2014
96
20
58
The design of how a Masternode is defined does not allow using the 1000 DRK for mixing.
They can't mix with the 1000DRK vin. But why not with some extra DRK you put on them?
This should be optional I think. But my guess is that if you lift the fees for DLP there would be a lot more people willing to do it.
The trick with requiring a MN is that you can punish them for misbehaving (don't give them MN payments for a specific time if they spam the network) other then charging fees!

One flaw of this design could be that because of the missing fees one could maybe identify them in the transaction and weaken the anonymity of the Darksend.
Maybe someone with more technical insight in Darksend than me can answer if that's true or not?
 

moocowmoo

Bovine Bit-flipper
Foundation Member
Jun 15, 2014
483
603
263
masternode.me
Dash Address
XmoocowYfrPKUR6p6M5aJZdVntQe71irCX
Can you give an example setup with the LP and MN living happily together?
I don't have them running side-by-side, but using two datadirs and rpcports should work.

Code:
cd ~; mkdir .darkcoin.masternode .darkcoin.liqprov
Code:
#~/.darkcoin.liqprov/darkcoin.conf
#----
rpcuser=nicelonghexstring
rpcpassword=adifferentnicelonghexstring
rpcallowip=127.0.0.1
rpcport=9996
#----
listen=0
server=1
daemon=1
logtimestamps=1
maxconnections=256
#--------------------
masternode=0
#--------------------
anonymizedarkcoinamount=10000
liquidityprovider=2
#--------------------
Code:
#~/.darkcoin.masternode/darkcoin.conf
#----
rpcuser=anothernicelonghexstring
rpcpassword=anotheradifferentnicelonghexstring
rpcallowip=127.0.0.1
rpcport=9998
#----
listen=1
server=1
daemon=1
logtimestamps=1
maxconnections=256
#--------------------
masternode=1
masternodeaddr=your.masternode.ip.address:9999
masternodeprivkey=yourmasternodeprivkey
#--------------------
then launch the two as:
Code:
darkcoind -datadir=~/.darkcoin.masternode
darkcoind -datadir=~/.darkcoin.liqprov
 

moli

Grizzled Member
Aug 5, 2014
3,255
1,830
1,183
Maybe in the future, the definition of Masternodes could be changed to something like:
  • hold 950 DRK' in a single address (vin = 950, and MN disabled if these are moved), possibly in cold storage as it's allowed now
  • and keep 50 DRK in some place that allows mixing with other users
Of course the second step should be defined more clearly (hot wallet or not? if yes, how to keep it secure?), but I think participating in mixing operations should be a mandatory task assigned to masternodes.
So far we've concluded that Darksend was successfully preserving anonimity by making it extremely expensive to compromise enough masternodes, but judging by the current liquidity for mixing, I think that conversely, it would be extremely cheap to setup a lot of rogue liquidity providers that could allow tracing the coins back to their original owners.
We need thousands of liquidity providers for the system to be safe, and it happens that we are aiming for thousands of masternodes in operation.
Liquidity Provider is just a temporary solution for now. When more users participate in mixing their coins, we won't need LP. Participating in mixing operations should NOT be a mandatory task assigned to masternodes, as MNs already serve an important job by being "mixing pools" for Darksend, yet MNs do not get to know who's mixing and where they're going.. I would not want MNs to be where to mix my coins and who to pair with me. And I would not want the 1000DRK vin to be touched or reduced. We should just leave MNs alone to be what they are right now, and try not to complicate MN setup even more for newbies.

Also, we don't need thousands of Liquid Providers out of masternoders.. because if they keep running DS 14/7 like that it would just bloat up the blockchain. When more users need/want to mix their coins, they'll find each other to mix with, and a few LProviders help plenty, as I've done it if you look at the previous version page. Mixing your coins should actually be quietly anonymous though, right now we're in the early stage so we announce loudly but it should actually be privately as much as possible.
 
Last edited by a moderator:
  • Like
Reactions: JGCMiner

Dr.Crypto

Member
Jul 9, 2014
46
32
58
Liquidity Provider is just a temporary solution for now. When more users participate in mixing their coins, we won't need LP. Participating in mixing operations should NOT be a mandatory task assigned to masternodes, as MNs already serve an important job by being "mixing pools" for Darksend, yet MNs do not get to know who's mixing and where they're going.. I would not want MNs to be where and who to mix my coins for me. And I would not want the 1000DRK vin to be touched or reduced. We should just leave MNs alone to be what they are right now, and try not to complicate MN setup even more for newbies.
Agreed. In a perfect world, I would just want masternodes to sign the mixing transactions and only mix my coins with other users that also really want their coins mixed.
However, do you really think that at each block, i.e. every 2.5 minutes, hundreds of people will want to mix their coins? Or even tens?

My belief is that there will only be a handful of people who will genuinely want their coins mixed at any instant.
So far, we've only considered the possibility that Darksend could be broken by rogue masternodes, owned by bad players. It has been demonstrated that this threat was totally neglectible as it would require hundreds of thousands of darkcoins for the attack to have even a fair probability of success.

But conversely, anyone that can afford ONE masternode (current value: less than 2000 USD) could easily setup 20 wallets with 50 DRK that they leave always mixing with other coins.
Now, suppose that guy A tries to genuinely mix his coins. If they are only mixed with the 20 rogue wallets' coins, the bad player will directly be able to identify where his own coins went, and conversely trace guy A's original coins to the new addresses.

Even if there are more people that honestly want to mix their coins, it will still be cheap, and cheaper by an order of magnitude, to setup a lot of rogue mixing wallets.
Unless hundreds of people mix their coins at each instant, I don't see this problem going away easily.
 
  • Like
Reactions: flare

strix

Well-known Member
Foundation Member
Sep 14, 2014
140
121
193
The Shadow Lands
I do not pretend to be a coder, but Dr.Crypto's earlier comment got me thinking. He says:
  • hold 950 DRK' in a single address (vin = 950, and MN disabled if these are moved), possibly in cold storage as it's allowed now
  • and keep 50 DRK in some place that allows mixing with other users
The first point has been dismissed, however I suspect that the second has some merit. During this time of growing adoption, while the need for liquidity providers exists, could there not be a wallet type dedicated to providing liquidity? This hypothetical wallet would only be used for mixing and not for other transactions. It would incur no fees, and if the need for liquidity is great enough, could even be incentivised with a percentage of the MN fee. Once initiated the removal of any funds would result in the destruction of its liquidity aiding status, and it would return to being a regular wallet incurring normal charges.

Given the development of the spork code, I suspect that this could be coded in such a way that this wallet type could be enabled and disabled at will, as Evan sees fit. For my part, it is unlikely I will ever be able to fund more than a few MN shares, but I could certainly dedicate 50 or 100 coins to providing liquidity. Especially if it meant I could earn some duffs in the process. ;-)

Edit: Hmm... I just read Dr. C's last post, and I see the problem. Could the mixing only wallets have an encrypted address, so the holders do not know the addresses that were being used. The block chain would show the real address, but no-one would know for sure if it was their wallet providing the liquidity. Like I said, I'm not a coder, so I realize this may be unworkable.
 
Last edited by a moderator:

moli

Grizzled Member
Aug 5, 2014
3,255
1,830
1,183
Agreed. In a perfect world, I would just want masternodes to sign the mixing transactions and only mix my coins with other users that also really want their coins mixed.
However, do you really think that at each block, i.e. every 2.5 minutes, hundreds of people will want to mix their coins? Or even tens?

My belief is that there will only be a handful of people who will genuinely want their coins mixed at any instant.
So far, we've only considered the possibility that Darksend could be broken by rogue masternodes, owned by bad players. It has been demonstrated that this threat was totally neglectible as it would require hundreds of thousands of darkcoins for the attack to have even a fair probability of success.

But conversely, anyone that can afford ONE masternode (current value: less than 2000 USD) could easily setup 20 wallets with 50 DRK that they leave always mixing with other coins.
Now, suppose that guy A tries to genuinely mix his coins. If they are only mixed with the 20 rogue wallets' coins, the bad player will directly be able to identify where his own coins went, and conversely trace guy A's original coins to the new addresses.

Even if there are more people that honestly want to mix their coins, it will still be cheap, and cheaper by an order of magnitude, to setup a lot of rogue mixing wallets.
Unless hundreds of people mix their coins at each instant, I don't see this problem going away easily.
More likely Guy A would rather put his 20wallets*50DRK into another MN... :tongue: (at the rate of greediness for more drk as being displayed.. :tongue: )
PLUS.. it takes only 3 participants to pair so more likely GuyA will pair his coins to each other, he's pairing with himself! :D
He might pair with someone else too.. We still need to test on how crackable DS is..
 

Dr.Crypto

Member
Jul 9, 2014
46
32
58
The first point has been dismissed, however I suspect that the second has some merit.
The first point actually implied reducing the "1000 static DRK" limit to 950, but with the addition of a mandatory 50 mixing buffer wallet, as you say :)
I just mentioned the first point with 950 because I think that 1000 DRK is a nice number that is easier to visualise as a minimum investment to own a masternode, but it would work all the same with 1050DRK.

My point was that I wanted to oppose this:
They can't mix with the 1000DRK vin. But why not with some extra DRK you put on them?
This should be optional I think. But my guess is that if you lift the fees for DLP there would be a lot more people willing to do it.
I don't think mixing by masternodes should be optional for the reasons stated previously, and I think the fees for providing liquidity is a non-problem as they could simply be compensated by a slight increase in MN payments (or not - I'm not sure MN owners would really care about something around 0.01% more).
 

Dr.Crypto

Member
Jul 9, 2014
46
32
58
More likely Guy A would rather put his 20wallets*50DRK into another MN... :tongue: (at the rate of greediness for more drk as being displayed.. :tongue: )
Your point is invalid.
We're not talking about greed - if the goal was to get richer, of course they would just buy and hold / or speculate another way.
What I wanted to demonstrate was that, granted that a bad player (hello NSA!) is willing to spend some money - and even lose money - with the sole purpose of tracing the coins through Darksend, he could introduce hundreds of rogue wallets for much cheaper than the thousands of masternodes we thought he would be required to buy.
 

paperThin

Member
Jun 13, 2014
106
19
68
Can someone tell me the port to open through my router so I can get more than 8 connections?
Thanks!

Got it :8333 ... 31 Connections!
 
Last edited by a moderator:

paperThin

Member
Jun 13, 2014
106
19
68
I got ZERO denominates over 24 hours. (Using the above configuration - Last post)

I have not gotten any denominates for the past 2 weeks, but before that I had several over a couple days. I figured it was time to start up a new wallet.
So I sent some DRK to a new wallet and starting fresh.
Now:
Using standard wallet (not liquidity). 64.xx DRK - Set at: 1000 DRK / 6 rounds

So if I understand this right... I can mix with anyone who has 10's and 1's and is mixing less than 100.

From Evan:


Let me know if anyone wants to test/ verify mixing today. Thanks!
 

paperThin

Member
Jun 13, 2014
106
19
68
I don't understand this... no mixing at all.

I tried to throw away everything from my old wallet and start fresh. I thought I had a new wallet because it took time on boot-up to generate 1000 keys. (I had taken out the old wallet.dat and the .log etc out of the old folder, but I left the blockchain folder.)
The one thing I noticed is that my darksend rounds was the same as before I started the new wallet (meaning it kept a non-default setting). Does anyone think that the problem is because I do not have a clean start to a new wallet? It seems that there would be plenty of people trying to denominate with a 1+10 combination.
Thanks in advance!

FYI - Running 10.15.21 Standard Wallet

(To clarify... I realize this is the Liquidity thread, which is what I really would like to be running. I am just backtracking to see if I can get any denominates to occur from any wallet. My goal is to add liquidity to DRK by providing mixing.)
 
Last edited by a moderator:

paperThin

Member
Jun 13, 2014
106
19
68
OK - Got 1 "payment to yourself" (0.10 DRK) and then a Darksend Denominate (0.0125) within a minute after that. Will send the log to Evan.
 

paperThin

Member
Jun 13, 2014
106
19
68
4 denominates in 17 minutes!
(Yes, on the collateral charge. Thanks)

I'm going to finish 6 rounds and then fire up the Liquidity Provider Wallet.
 

paperThin

Member
Jun 13, 2014
106
19
68
2 collateral charges... phooey!

Pic_1633.jpg

So that's 2 collaterals and 4 DD in less than 2 hours. It just seems like I must be doing something wrong. Any advice?
 

moocowmoo

Bovine Bit-flipper
Foundation Member
Jun 15, 2014
483
603
263
masternode.me
Dash Address
XmoocowYfrPKUR6p6M5aJZdVntQe71irCX
2 collateral charges... phooey!

So that's 2 collaterals and 4 DD in less than 2 hours. It just seems like I must be doing something wrong. Any advice?
If you're note stopping and starting darksend (interrupting the mixing process, abandoning masternode joins) then it's a bug. (The collateral fees part.)
Evan is already aware of it.