• Forum has been upgraded, all links, images, etc are as they were. Please see Official Announcements for more information

Darksend Liquidity Providers - v0.10.16.1

eduffield

Core Developer
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.


g1Jlwv1yNwfUiGbZLnNkpGLORIsMeulFpm84psk17GE-SDNt3R2cILWafNh0SH1tBgB6r3NppgvnIHc8Z2nKY4jRlL_HZk3siiXkCV5LoiRnRf8rWeMi78GogZPmTvNA7g


Downloads

https://darkcointalk.org/threads/darksend-liquidity-provider-v0-10-16-4.2904/
 
Last edited by a moderator:
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:
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:
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...
 
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.


g1Jlwv1yNwfUiGbZLnNkpGLORIsMeulFpm84psk17GE-SDNt3R2cILWafNh0SH1tBgB6r3NppgvnIHc8Z2nKY4jRlL_HZk3siiXkCV5LoiRnRf8rWeMi78GogZPmTvNA7g


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?)
 
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.
 
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.
 
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 :)
 
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.
 
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
 
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:
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...
 
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.
 
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
 
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!
 
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?
 
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?
 
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.
 
Back
Top