Darksend Liquidity Providers - v0.10.16.1

eduffield

Core Developer
Mar 9, 2014
1,084
5,320
183
Some users have been inquiring about the way to make Darksend faster and provide quicker mixing. Some options have been proposed in the forums such as allowing Masternodes to mix their 1000DRK inputs. This isn't really a workable solution due to the sheer complexity of proving the money still exists.

The easiest way to provide partners for the mixing process is going to be for some users to run the Darkcoin client, in a mixing mode, 24/7. These users, the "liquidity providers", can run Darkcoin in a way that will mix a specific amount of coins up to 100k times. To reduce the amount of fees these users will be charged, I've introduced a feature that will allow the user to specify how many times per day the client will mix, allow the client to add liquidity, but not so much that it costs a lot of money.

Settings

Code:
./darkcoin-qt --listen=0 --enabledarksend --darksendrounds=99999 --darksend_blocks_between_successes=57 --datadir=/home/user/.darkcoin
./darkcoind --listen=0 --enabledarksend --darksendrounds=99999 --darksend_blocks_between_successes=57 --datadir=/home/user/.darkcoin
This setting means that Darkcoin will anonymize darkcoin up to 100k times, but only up to once every 2.4 hours (144 minutes). After the client has waited that period of time, it will continue to look for new partners, until it finds one, then it will wait again.

The Liquidity Provider can run on a masternode, but must be setup as a completely separate daemon. To run 2 independant daemons on the same machine you can use the "--datadir" command shown above. Simple copy the .darkcoin directory to .darkcoin2 and run the command with --datadir="/home/user/.darkcoin2". Just remember to disable masternode=1 in the configuration.

Wallet must be unlocked at all times. Please make sure the environment you're using this in is secure and you can afford to lose the money that you're providing liquidity with.

Chicken Egg Problem

The reason why we don't have fast darksend mixing is because we don't have a whole lot of users at this point. Users will come, but we need the process to work efficiently for them, when they begin anonymizing money. The strategy of providing liquidity to the network should help to get us past this stage. Once we have enough users to mix with, the liquidity provides will notice the activity has gone dramatically up and can turn the mixing process down, or eventually completely off.

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

Rounds=12 : Up to 21.90DRK per year
Rounds=57 : Up to 4.56DRK per year
Rounds=114 : Up to 2.73DRK per year

Likely fees will be much lower due to the lack of Darksend mixed transactions currently.

How much DRK is needed?

I suggest a few users run darksend with random amounts between 0-100DRK and ask for donations from the community for the amount of fees incurred for the year. Say you choose 23DRK, and to run at 57 minimum-block-spacing, that means you'll require 23+4.56DRK for a year of operation. If just ten users run these nodes (costing less than 100DRK a year), we'll have significantly faster darksend mixing all of the time.

The mixing process matches users with the same denominations, so it’s important that Liquidity Providers select unique amounts to keep denominated.




Downloads

https://darkcointalk.org/threads/darksend-liquidity-provider-v0-10-16-4.2904/
 
Last edited by a moderator:

georgem

Active Member
Jul 10, 2014
82
110
93
I will too.

I think it would be great to have a slightly adjusted logo for the liquidity provider qt-wallet...
maybe a red D instead of a blue D? This way I could keep the two wallets more easily appart.

Maybe this IS the birth of an additional animal in the darkcoin-kingdom (as I envisaged 3 weeks ago: Development Update - Oct 1, 2014 ):
node, masternode, miner and now liquidity provider...

Now if only the liquidity providers were to earn a small profit? :what:
 
Last edited by a moderator:

weirdgod

Well-known Member
Foundation Member
Jun 4, 2014
91
51
168
Slovenia, EU
I am in too.
With excess DRKs waiting to total enough for another MN...

Darksend is our flagship. It is the difference that makes the difference.
Therefore I am seeing these few dozen DRKs per year in fees, as a tiny investment,that is drastically boosting the possibility of success of darkcoin.


But since most non-speculative users will want to total 1000drks to setup a MN, I dont think a lot of floating balance will be available in long haul for darksend mixing... I think its vital to include collateral from MNs.. especially once their rewards grow in next months...

In stock market (options) liquidity providers make a nice profit, as they live off a spread....

eduffield in the table at 825 line you forgot to include "200"
 
Last edited by a moderator:

UdjinM6

Official Dash Dev
Dash Core Team
Moderator
May 20, 2014
3,638
3,538
1,183
Cool!
Few question though:
1. Will Liquidity Providers recognize each other?
2. What will happen if there is nobody who wants to use darksend at the moment - will Liquidity Provider wait 1 block or darksend_blocks_between_successes blocks?
If the answer to 1) is "NO" and to 2) is "1" then there is a non-zero chance that 3 Liquidity Providers will mix with each other only...
 

moli

Grizzled Member
Aug 5, 2014
3,255
1,830
1,183
Some users have been inquiring about the way to make Darksend faster and provide quicker mixing. Some options have been proposed in the forums such as allowing Masternodes to mix their 1000DRK inputs. This isn't really a workable solution due to the sheer complexity of proving the money still exists.

The easiest way to provide partners for the mixing process is going to be for some users to run the Darkcoin client, in a mixing mode, 24/7. These users, the "liquidity providers", can run Darkcoin in a way that will mix a specific amount of coins up to 100k times. To reduce the amount of fees these users will be charged, I've introduced a feature that will allow the user to specify how many times per day the client will mix, allow the client to add liquidity, but not so much that it costs a lot of money.

Settings

Code:
./darkcoin-qt --listen=0 --enabledarksend --darksendrounds=99999 --darksend_blocks_between_successes=57 --datadir=/home/user/.darkcoin
./darkcoind --listen=0 --enabledarksend --darksendrounds=99999 --darksend_blocks_between_successes=57 --datadir=/home/user/.darkcoin
This setting means that Darkcoin will anonymize darkcoin up to 100k times, but only up to once every 2.4 hours (144 minutes). After the client has waited that period of time, it will continue to look for new partners, until it finds one, then it will wait again.

The Liquidity Provider can run on a masternode, but must be setup as a completely separate daemon. To run 2 independant daemons on the same machine you can use the "--datadir" command shown above. Simple copy the .darkcoin directory to .darkcoin2 and run the command with --datadir="/home/user/.darkcoin2". Just remember to disable masternode=1 in the configuration.

Wallet must be unlocked at all times. Please make sure the environment you're using this in is secure and you can afford to lose the money that you're providing liquidity with.

Chicken Egg Problem

The reason why we don't have fast darksend mixing is because we don't have a whole lot of users at this point. Users will come, but we need the process to work efficiently for them, when they begin anonymizing money. The strategy of providing liquidity to the network should help to get us past this stage. Once we have enough users to mix with, the liquidity provides will notice the activity has gone dramatically up and can turn the mixing process down, or eventually completely off.

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

Rounds=12 : Up to 21.90DRK per year
Rounds=57 : Up to 4.56DRK per year
Rounds=114 : Up to 2.73DRK per year

Likely fees will be much lower due to the lack of Darksend mixed transactions currently.

How much DRK is needed?

I suggest a few users run darksend with random amounts between 0-100DRK and ask for donations from the community for the amount of fees incurred for the year. Say you choose 23DRK, and to run at 57 minimum-block-spacing, that means you'll require 23+4.56DRK for a year of operation. If just ten users run these nodes (costing less than 100DRK a year), we'll have significantly faster darksend mixing all of the time.

The mixing process matches users with the same denominations, so it’s important that Liquidity Providers select unique amounts to keep denominated.




Downloads

Windows 32/64bit:
https://github.com/darkcoinproject/...liquidityproviders/darkcoin-0.10.16.1-win.zip
https://github.com/darkcoinproject/...yproviders/darkcoin-0.10.16.1-win32-setup.exe

Mac OS X:
https://github.com/darkcoinproject/...liquidityproviders/darkcoin-0.10.16.1-osx.dmg

Linux 32/64bit:
https://github.com/darkcoinproject/...dityproviders/darkcoin-0.10.16.1-linux.tar.gz
What I have suggested is if anyone has access to 3 or more anonymous IPs that do not point to themselves, they can anonymize their own coins. What do you think? (also if each one of us anonymizes more than one wallet with different amounts, wouldn't that help more?)
 

patrolman

Member
Mar 9, 2014
102
67
78
www.dash.pics
Some users have been inquiring about the way to make Darksend faster and provide quicker mixing. Some options have been proposed in the forums such as allowing Masternodes to mix their 1000DRK inputs. This isn't really a workable solution due to the sheer complexity of proving the money still exists.
I have to admit that I didn't really consider this when making my proposals. It's great to see some action has been taken already.

Is it feasible that a few parties could get together with multisig and provide more liquidity for those mixing 500+, and save on fees at the same time? I'd be willing to chip in at least 100 if it's possible.
 

eduffield

Core Developer
Mar 9, 2014
1,084
5,320
183
I am in too.
With excess DRKs waiting to total enough for another MN...

Darksend is our flagship. It is the difference that makes the difference.
Therefore I am seeing these few dozen DRKs per year in fees, as a tiny investment,that is drastically boosting the possibility of success of darkcoin.


But since most non-speculative users will want to total 1000drks to setup a MN, I dont think a lot of floating balance will be available in long haul for darksend mixing... I think its vital to include collateral from MNs.. especially once their rewards grow in next months...

In stock market (options) liquidity providers make a nice profit, as they live off a spread....

eduffield in the table at 825 line you forgot to include "200"
There is no 200 denomination. 825 uses 500+100(3x)+1(5x). The matching works by just making sure the participants are using the same denominations.
 

weirdgod

Well-known Member
Foundation Member
Jun 4, 2014
91
51
168
Slovenia, EU
There is no 200 denomination. 825 uses 500+100(3x)+1(5x). The matching works by just making sure the participants are using the same denominations.
well the 625 and 825 lines as the same...
just deducted it wrong :) so its 3x 100. great :)
 

eduffield

Core Developer
Mar 9, 2014
1,084
5,320
183
Cool!
Few question though:
1. Will Liquidity Providers recognize each other?
2. What will happen if there is nobody who wants to use darksend at the moment - will Liquidity Provider wait 1 block or darksend_blocks_between_successes blocks?
If the answer to 1) is "NO" and to 2) is "1" then there is a non-zero chance that 3 Liquidity Providers will mix with each other only...
1.) No, that's not possible
2.) The liquidity providers will try until someone does.

It's possible they mix with eachother, but if the min-block-spacing is high enough it shouldn't happen very often. For a mix to be purely liquidity providers we'd need 3 of each denomination (like 3x liquidity providers running 25DRK, they'd find eachother). So that's why we should all run unique amounts.
 

UdjinM6

Official Dash Dev
Dash Core Team
Moderator
May 20, 2014
3,638
3,538
1,183
1.) No, that's not possible
2.) The liquidity providers will try until someone does.

It's possible they mix with eachother, but if the min-block-spacing is high enough it shouldn't happen very often. For a mix to be purely liquidity providers we'd need 3 of each denomination (like 3x liquidity providers running 25DRK, they'd find eachother). So that's why we should all run unique amounts.
Thank you for your explanation, I read this changes https://github.com/darkcoin/darkcoin/commit/d6431b357b6ccc9aac3499433d115c1e9390a4e8 and understood it too :)
Basically to prevent this situation we can also run with different darksend_blocks_between_successes settings so it would be harder for Liquidity Providers to request darsend at the same block every time they've finished waiting. We can use prime numbers for example :) http://en.wikipedia.org/wiki/Prime_number
 

moocowmoo

Bovine Bit-flipper
Foundation Member
Jun 15, 2014
483
603
263
masternode.me
Dash Address
XmoocowYfrPKUR6p6M5aJZdVntQe71irCX
The mixing process matches users with the same denominations, so it’s important that Liquidity Providers select unique amounts to keep denominated.
I've launched v0.10.16.1-gd6431b3-beta on an existing wallet with 78 DRK (all I have currently) already sent through 8 rounds. It's denominated into:

7 x 10.00000001 +
7 x 1.00000001 inputs
plus some change

Am I understanding you correctly that this will only attempt to mix with people mixing exactly 7 10 and 7 1 inputs?
If so, should liquidity provider instances follow different rules and treat each denomination input atomically?

EDIT: first round on 10.16 occurred, all 14 of 10 and 1 inputs participated.
 
Last edited by a moderator:

paperThin

Member
Jun 13, 2014
106
19
68
I downloaded v0.10.16.1-gd6431b3-beta (Windows). The command line:
./darkcoin-qt --listen=0 --enabledarksend --darksendrounds=99999 --darksend_blocks_between_successes=57 --datadir=/home/user/.darkcoin
Does that go in the console? I tried to run it as a .bat and with a shortcut w/ the above pasted in... sorry for the newb questions. How do I get this to launch with Liquidity Provider on? [WINDOWS]
Thanks in advance...
 

moocowmoo

Bovine Bit-flipper
Foundation Member
Jun 15, 2014
483
603
263
masternode.me
Dash Address
XmoocowYfrPKUR6p6M5aJZdVntQe71irCX
I downloaded v0.10.16.1-gd6431b3-beta (Windows). The command line:
./darkcoin-qt --listen=0 --enabledarksend --darksendrounds=99999 --darksend_blocks_between_successes=57 --datadir=/home/user/.darkcoin
Does that go in the console? I tried to run it as a .bat and with a shortcut w/ the above pasted in... sorry for the newb questions. How do I get this to launch with Liquidity Provider on? [WINDOWS]
Thanks in advance...
you can also do this in darkcoin.conf

Code:
listen=0
enabledarksend=1
darksendrounds=99999
darksend_blocks_between_successes=57
and you can set datadir in a shortcut as:

Code:
C:\Users\YOURUSER\Downloads\darkcoin-0.10.16.1-win\32\darkcoin-qt.exe -datadir="C:\Users\YOURUSER\AppData\Roaming\Darkcoin_mixed-10.16.1"
adjust as needed to match your system.
 
  • Like
Reactions: flare

oblox

Well-known Member
Aug 6, 2014
1,032
537
183
I downloaded v0.10.16.1-gd6431b3-beta (Windows). The command line:
./darkcoin-qt --listen=0 --enabledarksend --darksendrounds=99999 --darksend_blocks_between_successes=57 --datadir=/home/user/.darkcoin
Does that go in the console? I tried to run it as a .bat and with a shortcut w/ the above pasted in... sorry for the newb questions. How do I get this to launch with Liquidity Provider on? [WINDOWS]
Thanks in advance...
Create a shortcut to the darkcoin-qt.exe, right click and go to properties. Add "--listen=0 --enabledarksend --darksendrounds=99999 --darksend_blocks_between_successes=57 --datadir=C:/WHEREVER YOUR DATA FOLDER IS" after the exe
 
  • Like
Reactions: flare

paperThin

Member
Jun 13, 2014
106
19
68
oblox and moocowmoo,
Yes, the conf file is working (after I found the folder my wallet.dat was in).
I will try the shortcut method which makes sense now. Thanks to both!
 

paperThin

Member
Jun 13, 2014
106
19
68
Getting in the QT client:

"Submitted to masternode, waiting in queue"
"Darksend request incomplete. Collateral not valid. Will retry."

I only have 11+ DRK in this wallet, but I was hoping since other are already running in liquidity mode that this would mix quickly. Later today I will add to this wallet... it will be at 99DRK

At this point... my settings are:
11.xxx DRK in wallet
1000 DRK / 99999 Rounds
listen=0
enabledarksend=1
darksendrounds=99999
darksend_blocks_between_successes=57

Should everyone adjust the 57 to a different random number?
 

paperThin

Member
Jun 13, 2014
106
19
68
My question is regarding the reply in the qt "Overview" window: "Darksend request incomplete. Collateral not valid. Will retry."

Does that mean that I did something wrong, or that there is no one available to mix with me?
 

moocowmoo

Bovine Bit-flipper
Foundation Member
Jun 15, 2014
483
603
263
masternode.me
Dash Address
XmoocowYfrPKUR6p6M5aJZdVntQe71irCX
My question is regarding the reply in the qt "Overview" window: "Darksend request incomplete. Collateral not valid. Will retry."

Does that mean that I did something wrong, or that there is no one available to mix with me?
I got that on a fresh wallet (fresh deposits from 0), but went to bed and found stuff mixing when I woke up.

We need to teach people that darksend isn't something you watch, it's an overnight/daylong process.
 
  • Like
Reactions: flare

paperThin

Member
Jun 13, 2014
106
19
68
I got that on a fresh wallet (fresh deposits from 0), but went to bed and found stuff mixing when I woke up.

We need to teach people that darksend isn't something you watch, it's an overnight/daylong process.
I'd like to see a few others weigh in on this. I know it is not instant, but if we had 50 people with "Liquidity" wallets, wouldn't we see about 1 mix per block? That investment by the community would definitely speak volumes for darkcoin and raise it's value (especially to newcomers).

Moocowmoo, thanks for your help!
 

moocowmoo

Bovine Bit-flipper
Foundation Member
Jun 15, 2014
483
603
263
masternode.me
Dash Address
XmoocowYfrPKUR6p6M5aJZdVntQe71irCX
I'd like to see a few others weigh in on this. I know it is not instant, but if we had 50 people with "Liquidity" wallets, wouldn't we see about 1 mix per block? That investment by the community would definitely speak volumes for darkcoin and raise it's value (especially to newcomers).

Moocowmoo, thanks for your help!
You're welcome. Glad to assist.

I'd like to see an introduction built into the wallet that covers (in plain english) things like:
Darksend requires two other participants mixing at the same time: don't watch it, leave it overnight or for a day or more.
And 'if you're already mixing, your newly deposited funds won't start mixing until your in-progress mix finishes.'
And whatever other disclaimers others think we might need.
 

eduffield

Core Developer
Mar 9, 2014
1,084
5,320
183
I've launched v0.10.16.1-gd6431b3-beta on an existing wallet with 78 DRK (all I have currently) already sent through 8 rounds. It's denominated into:

7 x 10.00000001 +
7 x 1.00000001 inputs
plus some change

Am I understanding you correctly that this will only attempt to mix with people mixing exactly 7 10 and 7 1 inputs?
If so, should liquidity provider instances follow different rules and treat each denomination input atomically?

EDIT: first round on 10.16 occurred, all 14 of 10 and 1 inputs participated.
No, it only cares that you have at least one of all of the same denominations. E.g, A user miking 1+1+1+100 can mix with 1+100+100
 

oblox

Well-known Member
Aug 6, 2014
1,032
537
183
Got two up and running. A small one around 27 and one around 128.
 

oblox

Well-known Member
Aug 6, 2014
1,032
537
183
I wouldn't mind doing a few on some of the masternodes... is it as simple as creating a new user and installing the daemon, then running it with the commands above? Do I just run getadddress to find out the address to send some of the coins to? How about specifying the amount to anon via command line?
 

tungfa

Administrator
Dash Core Team
Moderator
Foundation Member
Masternode Owner/Operator
Apr 9, 2014
8,906
6,730
1,283
Can i please get a translation how to do this and join on a MAC ?!
Tx
 

Ignition75

Active Member
May 25, 2014
332
216
113
Australia
I'm thinking about a notification based app, Dark Pulse... It presents data from the network as it happens, text based push messages, large movements of DRK on the network, large movements in price at exchanges... Can later plug into a decentralised "swarm" of some sort for exchange services...

Could have a bit of AI in it and report movements of coin that don't follow protocol, just chucking ideas around now...
 
  • Like
Reactions: Stealth923

AjM

Well-known Member
Foundation Member
Jun 23, 2014
1,341
575
283
Finland
So this update is not mandatory to normal client and masternode?