Pages:
Author

Topic: Do you think SatoshiDice is blockchain spam? Drop their TX's - Solution inside - page 5. (Read 12859 times)

legendary
Activity: 1064
Merit: 1001
you could set it to
Code:
if (txout.nValue <= 1)
since SD losses are 1 satoshi.

I heard the developers mumbling that after some mining pools began dropping tx with 1-satoshi outputs, SatoshiDICE responded by including a random amount of satoshis (from 2 to 9) instead of a 1-satoshi input.

Regardless, from an economic standpoint there is no difference between a 1 or 10 satoshi output.
legendary
Activity: 1792
Merit: 1008
/dev/null
But the loss transactions will be blocked from relaying by the following rule, which in this case drops every transaction that is equal or less than 10,000 satoshis. I edited this part to only drop tx's with 5 or less satoshis. Still need to install all the deps to compile it now and see how well it works.
Code:
if (txout.nValue <= 10000)
+            return error("CTransaction::IsStandard : ignoring transaction with dust output");
you could set it to
Code:
if (txout.nValue <= 1)
since SD losses are 1 satoshi.
legendary
Activity: 1358
Merit: 1002
As per my request, Gmaxwell wrote a patch to apply to the Bitcoin client that will drop all transactions to SatoshiDice and simply not relay or verify them. It will also drop all transactions that are less than 10,000 satoshis in value, so you might want to change that value to 1 or 2 satoshis, to only drop SD's losing bets tx's.

Let's show them how the free market works and that not only miners have a say on this subject!

Code:
diff --git a/src/main.cpp b/src/main.cpp
index 9a06dbf..d3fba73 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -384,8 +384,16 @@ bool CTransaction::IsStandard() const
     BOOST_FOREACH(const CTxOut& txout, vout) {
         if (!::IsStandard(txout.scriptPubKey))
             return false;
+        if (txout.scriptPubKey.size() > 6
+         && txout.scriptPubKey[0] == OP_DUP
+         && txout.scriptPubKey[3] == 0x06
+         && txout.scriptPubKey[4] == 0xf1
+         && txout.scriptPubKey[5] == 0xb6)
+            return error("CTransaction::IsStandard : ignoring transaction with 1dice output");
         if (txout.nValue == 0)
-            return false;
+            return error("CTransaction::IsStandard : ignoring transaction with 0 value output");
+        if (txout.nValue <= 10000)
+            return error("CTransaction::IsStandard : ignoring transaction with dust output");
     }
     return true;
 }

You may not be interested in the if (txout.nValue <= 10000)  test, though it also gets the dice you-lost transactions and other UXTO set bloating flood.

This will make the node not relay or mine these transactions. It will, of course, still accept them in blocks.

you should get the patch of Luke-Jr, this only ignores tx's TO SD, payments back arent being ignored and as we know there will always be 2 tx's for each gamble try.
reference: https://bitcointalksearch.org/topic/m.1595281

EDIT: u still process winnings because gmaxwell's patch only blocks losses.

Winning payments don't bug me and there is no reason to drop them.
But the loss transactions will be blocked from relaying by the following rule, which in this case drops every transaction that is equal or less than 10,000 satoshis. I edited this part to only drop tx's with 5 or less satoshis. Still need to install all the deps to compile it now and see how well it works.
Code:
if (txout.nValue <= 10000)
+            return error("CTransaction::IsStandard : ignoring transaction with dust output");

But anyway, I will include Luke-jr's patch in the OP and people can choose between them.
legendary
Activity: 1792
Merit: 1008
/dev/null
As per my request, Gmaxwell wrote a patch to apply to the Bitcoin client that will drop all transactions to SatoshiDice and simply not relay or verify them. It will also drop all transactions that are less than 10,000 satoshis in value, so you might want to change that value to 1 or 2 satoshis, to only drop SD's losing bets tx's.

Let's show them how the free market works and that not only miners have a say on this subject!

Code:
diff --git a/src/main.cpp b/src/main.cpp
index 9a06dbf..d3fba73 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -384,8 +384,16 @@ bool CTransaction::IsStandard() const
     BOOST_FOREACH(const CTxOut& txout, vout) {
         if (!::IsStandard(txout.scriptPubKey))
             return false;
+        if (txout.scriptPubKey.size() > 6
+         && txout.scriptPubKey[0] == OP_DUP
+         && txout.scriptPubKey[3] == 0x06
+         && txout.scriptPubKey[4] == 0xf1
+         && txout.scriptPubKey[5] == 0xb6)
+            return error("CTransaction::IsStandard : ignoring transaction with 1dice output");
         if (txout.nValue == 0)
-            return false;
+            return error("CTransaction::IsStandard : ignoring transaction with 0 value output");
+        if (txout.nValue <= 10000)
+            return error("CTransaction::IsStandard : ignoring transaction with dust output");
     }
     return true;
 }

You may not be interested in the if (txout.nValue <= 10000)  test, though it also gets the dice you-lost transactions and other UXTO set bloating flood.

This will make the node not relay or mine these transactions. It will, of course, still accept them in blocks.

you should get the patch of Luke-Jr, this only ignores tx's TO SD, payments back arent being ignored and as we know there will always be 2 tx's for each gamble try.
reference: https://bitcointalksearch.org/topic/m.1595281

EDIT: u still process winnings because gmaxwell's patch only blocks losses.
legendary
Activity: 1064
Merit: 1001
Bitcoin is NOT yet ready for primetime until we find ways to make microtransactions feasible.

Microtransactions are feasible now, you can easily send pennies. But is it really fair to say that Bitcoin isn't ready because it is problematic to send $0.00000045?
legendary
Activity: 2282
Merit: 1050
Monero Core Team
The problem here is that this leads to blockchain bloat and it defeats pruning the blockchain https://en.bitcoin.it/wiki/Scalability since 1 satoshi does not equal zero.  As to why S.Dice is doing this it is simple they are using the blockchain not to transfer funds but to send a message namely that the player has lost.  Furthermore no one involved has any incentive to clean up the dust since this leads to a long term but not immediate problem.

The big cost here is the long term storage of each 1 satoshi output for the life of Bitcoin.
legendary
Activity: 1358
Merit: 1002
Yeah, then we can blacklist Silkroad, and then maybe Wikileaks! And at that point we'll finally be the evil we set out to destroy.

Adapt or die!
legendary
Activity: 1764
Merit: 1002
Bitcoin is NOT yet ready for primetime until we find ways to make microtransactions feasible.
At least Gavin is committed to getting it ready for primetime.

well if Gavin thinks its a good idea, i do too.
hero member
Activity: 588
Merit: 500
Coinabul - Gold Unbarred
Yeah, then we can blacklist Silkroad, and then maybe Wikileaks! And at that point we'll finally be the evil we set out to destroy.
legendary
Activity: 1400
Merit: 1013
Bitcoin is NOT yet ready for primetime until we find ways to make microtransactions feasible.
At least Gavin is committed to getting it ready for primetime.
full member
Activity: 215
Merit: 105
Poorer than I ought to be
I think satoshiDICE is providing a valuable service. If one little gambling website can bring Bitcoin to it's knees (hyperbole), then Bitcoin is clearly not ready for the levels of adoption some, including myself, hope for.

satoshiDICE - stress testing Bitcoin since April 2012.

+100,000,000 satoshis

This sD issue is one of the main reasons I remain bearish in the medium term.  Bitcoin is NOT yet ready for primetime until we find ways to make microtransactions feasible.
sr. member
Activity: 382
Merit: 253
I've been trying to figure out what all the fuss is about, and the only thing that makes sense is that some people really want to drive the price of S.DICE shares down. All the talk about spam and the like is either purposeful manipulation or economic misunderstanding, and perhaps those against Satoshi Dice that aren't in on the price manipulation scam should read Economics in one Lesson and think about it a bit.
hero member
Activity: 615
Merit: 500
legendary
Activity: 1064
Merit: 1001
What if I was already planning to include a fee for the 5 BTC transaction to get faster processing? Would I need to increase it because of this extra input?

Yes, because the calculation of required fees and the miner's calculation of transaction priority based on fee, uses "fees per kilobyte" (or fees per byte). In general, increasing the size of the transaction will require more in fees.
legendary
Activity: 1358
Merit: 1002
ANYBODY WHOS NOT  A DUMMY

SATOSHI DICE IS A BUSINESS

AKA MAKING MONEY IN TRASANCTIN FEES

AND MOST IPORTANTLY  BLOCK CHAIN  DILUTION FOR MAKING IT HARDER TO TRACE TRANSANCTIONS

INDUCING MORE NOISE IN THE CHAIN FOR CURIOUS  DUCHES WHO LIKE TO TRACE SHEAT

OK smartass, tell us where does SatoshiDice makes money in TX fees...

Also, your caps lock is broken it seems.

Only problem is you need a big enough transaction so the bigger outputs cancel the fee for the smaller ones.
I'm not familiar enough with the minimum fee and priority rules to know where the cutoff is. I'm pretty sure I've sent no-fee transactions with two inputs before though. How big would the output need to be?

You need to do some math. It goes somewhat like this: 1 BTC input can be spent as a 1 BTC output with 0 fees 24hrs after you receive it.
Now do the math for 1 satoshi...
This is only a simplifed explanation, there may be other rules involved.
legendary
Activity: 1400
Merit: 1013
Only problem is you need a big enough transaction so the bigger outputs cancel the fee for the smaller ones.
I'm not familiar enough with the minimum fee and priority rules to know where the cutoff is. I'm pretty sure I've sent no-fee transactions with two inputs before though. How big would the output need to be?

No that doesn't work. Adding the 1 satoshi output as a second input would require more than 1 satoshi in fees. So you would end up with 4.9998999991 in the change output instead of 5.0, for a net loss.
What if I was already planning to include a fee for the 5 BTC transaction to get faster processing? Would I need to increase it because of this extra input?
full member
Activity: 162
Merit: 100
ANYBODY WHOS NOT  A DUMMY

SATOSHI DICE IS A BUSINESS

AKA MAKING MONEY IN TRASANCTIN FEES

AND MOST IPORTANTLY  BLOCK CHAIN  DILUTION FOR MAKING IT HARDER TO TRACE TRANSANCTIONS

INDUCING MORE NOISE IN THE CHAIN FOR CURIOUS  DUCHES WHO LIKE TO TRACE SHEAT
hero member
Activity: 756
Merit: 501
There is more to Bitcoin than bitcoins.
Please explain to me why anyone would spend 10,000 satoshi to send 1 satoshi?
They wouldn't, but that's not what he was talking about.

If I'm spending half of a 10 BTC output and have a 1 satoshi output laying around I could add it as a second input to the transaction and send 5.00000001 to the change output instead of 5.00000000

Do this enough and the dust problem is solved.
If this works - great, everybody happy. If not, then Articmine proposal makes sense:
Then at least set the min tx value to the transaction fee. It will have the desired effect. My proposal is to deal with transactions which create one or more addresses that contain only dust leading to blockchain bloat that is very difficult if not impossible to prune. A bona fide send many transaction that creates dust as a byproduct can deal with this by adding the dust to the TX fee.  
legendary
Activity: 1064
Merit: 1001
If I'm spending half of a 10 BTC output and have a 1 satoshi output laying around I could add it as a second input to the transaction and send 5.00000001 to the change output instead of 5.00000000

No that doesn't work. Adding the 1 satoshi output as a second input would require more than 1 satoshi in fees. So you would end up with 4.9998999991 in the change output instead of 5.0, for a net loss.

Still, thanks for adding signal to the dialog instead of noise. If there was a simple technical measure for dealing with this problem, you can rest assured that it would have gone into the client already. This is why I brought the issue to the forum, because it's a difficult problem.
legendary
Activity: 1358
Merit: 1002
Please explain to me why anyone would spend 10,000 satoshi to send 1 satoshi?
They wouldn't, but that's not what he was talking about.

If I'm spending half of a 10 BTC output and have a 1 satoshi output laying around I could add it as a second input to the transaction and send 5.00000001 to the change output instead of 5.00000000

Do this enough and the dust problem is solved.

Only problem is you need a big enough transaction so the bigger outputs cancel the fee for the smaller ones.
Pages:
Jump to: