If we assign a penalty payment transaction to the Participant before step 2, then the adversary can refuse to provide the penalty payment transaction
Why not have the master node simply wait until the required number of participants have actually provided the collateral payment transaction? This should take the same amount of time whether or not a DOS is occurring, because that depends on the rate of legit participants trying to enter the pool, which is unaffected by the illegitimate participants.
You are very confused. The point is the inputs have already been provided. Providing the inputs didn't take 0 time. Thus refusing to provide the collateral payment forces us back to step 1 again and repeat the collection of the inputs.
How do you ban the participant who refused to provide the collateral payment? By IP address? So he uses a botnet.
Or in other words: I don't see why a refusal to provide collateral by one participant has to kill the pooling process. They could simply be ignored beyond that point (and perhaps eventually banned), and the pooling continue.
Ignored how? You collect the inputs you don't know who the bad guy is yet. Then you find out who he is, so you must repeat the collection of the inputs (to get rid of his input because you don't know which one it is). How do you ban him from the repeat? By IP? He will use a botnet have zillions of IP addresses. Botnets cost $100.
I'm not technical....but (I asked before)
What if DarkSend has a de minimis payment requirement. Participation is costly for everyone apart from those that want the service, when the cost is considered in the context of obtaining value.
Entering the network requires fees to be paid, so why not say darksend minimum of $x transaction value, with x% fee. Using darkcoin is relatively cheap. Using DarkSend is an extra feature with added cost. Then you have multiple cost barriers within the system making attacks pointless to those who attack for trivial reasons, I would have thought. The same way PoW for email was considered to avoid spam.
The transactions are being handled by the wallet. Isn't there a way to make anyone that develops a wallet the equivalent of having to go through https?
Do you mean everyone pays a fee to enter a CoinJoin? Even when it fails due to DOS?
Thanks for looking at this, the more eyes and people trying to break it the stronger the system can become. Have you seen the below? What's your take on it.
To defend against various attacks, DarkSend implements a collateral system. A transaction for
0.1DRK is made out to the payment node to ensure proper usage of the system. This
transaction is separate from the funds added to the DarkSend pool. If a user submits an input
but refuses to sign or leaves at any stage, the payment node will “cash” the transaction
by signing and broadcasting it. Collateral transactions require multiple signatures to complete
from more than one payment node.
Payment nodes are simply the last node to create a block specifically,
the last block solver and
the one before that. These nodes will monitor DarkSend for misbehavior. Should any be
discovered, the payment nodes will “cash” the transaction by signing and broadcasting it. This
has the added benefit of creating a sustainable income stream in
addition to mining for
miners, while simultaneously protecting the network from attackers.
The collateral transaction is made to multiple payment nodes. Cashing collateral transactions
require multiple signatures from the user, payment node 1 and payment node 2.
Collateral forfeited to the network will be paid to the payment nodes, which are the last two nodes
to solve a block. These nodes will commonly be the pools. To cash the collateral transactions
and take all of the money, multiple pool operators would