Author

Topic: [ANN] Litecoin - a lite version of Bitcoin. Launched! - page 355. (Read 1467253 times)

legendary
Activity: 1904
Merit: 1002
Though there is one solution I can think of. Which is to require a transaction fee on all coins sent that are not a day old. So if you try to send coins that are not a day old (i.e. don't have 576 confirmations), you need to pay 0.1 ltc fee. What do people think about that?
It's a cat and mouse game.  Would not the spammer just use coins that are two days old in that case?

He would have to wait 2 days to be able to spam again after he exhausted his funds.
full member
Activity: 154
Merit: 102
Bitcoin!
Though there is one solution I can think of. Which is to require a transaction fee on all coins sent that are not a day old. So if you try to send coins that are not a day old (i.e. don't have 576 confirmations), you need to pay 0.1 ltc fee. What do people think about that?
It's a cat and mouse game.  Would not the spammer just use coins that are two days old in that case?
legendary
Activity: 1484
Merit: 1005
holy shit, just woke up to a 300% increase in difficulty.. The price of ltc may rally today.
donator
Activity: 1654
Merit: 1351
Creator of Litecoin. Cryptocurrency enthusiast.
I don't really understand the inner workings of those transactions (and I'm just discovering about relay fees), but I guess if there was a way to make the transaction fee work per receiving address (like, sending 0.000001 LTC 100 times to different addresses or even from the same address to the same address = paying 100*0.1=10 LTC in transaction fees) this would impair his ability to cheaply make large transactions while not being an issue for legitimate users.

Here's my latest thought. I can force a transaction fee for each output greater than 2. Normal users will only send transactions to 1 address with a address for the change. Only advanced users will use the sendmany api to send coins to many address at once. I can force a fee to use the sendmany feature. So for every output greater than 2, you have to pay an additional 0.1 LTC fee. Without the ability to send to multiple addresses at once, I don't think the spammer can bloat the chain cheaply anymore.

This might not be the best idea. Might work in the short term, but in the long term we probably don't want to do that. The main reason to use sendmany is to limit chain growth, so seems kind of silly to punish use of it. The idea I was going with is to punish someone for sending dust spam. Here's the original code:

        // To limit dust spam, require MIN_TX_FEE/MIN_RELAY_TX_FEE if any output is less than 0.01
        if (nMinFee < nBaseFee)
            BOOST_FOREACH(const CTxOut& txout, vout)
                if (txout.nValue < CENT)
                    nMinFee = nBaseFee;

Basically, we were setting min fee to at least 0.1 LTC if any of your output is less than 0.01 LTC. I'd like to extend that to add 0.1 LTC for every output less than 0.01 LTC. So using sendmany to send to 1000 outputs is fine as long as you are paying the 0.1 LTC fee per 1000 bytes. But if you are sending 0.00000001 LTC to each of those 1000 outputs, then you need to pay an additional 100 LTC in fees.

        // To limit dust spam, add MIN_TX_FEE/MIN_RELAY_TX_FEE for any output is less than 0.01
        BOOST_FOREACH(const CTxOut& txout, vout)
            if (txout.nValue < CENT)
                nMinFee += nBaseFee;

The spammer can still send a ton of 0.01 outputs, but this will deal with the dust spam. It's really hard for the receiving end to collect these worthless transactions.

Here's this code in action on the testnet: http://blockexplorer.sytes.net/block/d1d987e3674b5f17a7881220376fb97aad9ec31880ac87b225c8dad5801dd215
Each output that is less than a litecent adds an additional 0.1 LTC fee.
donator
Activity: 1654
Merit: 1351
Creator of Litecoin. Cryptocurrency enthusiast.
It would be WAY worse if the person doing this decided to put every single output pair into it's own transaction ...

If he sent 1 transaction for each of his 0.00000001 LTC output, he would have needed to pay 0.1 LTC for EACH transaction. Or at least 0.02 LTC per transaction with the relay transaction workaround. I don't see how that's way worse. He's taking advantage of the fact that the fee system charges less fee for dust spams using sendmany. Please see my previous post on how I want to fix that.
legendary
Activity: 1764
Merit: 1015
Not good idea. Send many is very useful and needed. You are sounding more and more like RealScam with these demonic measures and frequent client updates ( remember SC beta 5 then 6 then 7 all in like 1 hour ? ). Let the miners decide if the chain is bloated and the TX fees. Maybe coblee is RS Shocked. Kind of makes sense : you control the biggest competitor to SC and get all the market for altcoins by yourself.
LOL  Cheesy Cheesy Now Litecoin finds itself in the same predicament that Solidcoin had to solve to fend off malicious attackers. It's going to be very interesting seeing how Coblee fixes this "bug" in the protocol.
legendary
Activity: 4592
Merit: 1851
Linux since 1997 RedHat 4
Not good idea. Send many is very useful and needed. You are sounding more and more like RealScam with these demonic measures and frequent client updates ( remember SC beta 5 then 6 then 7 all in like 1 hour ? ). Let the miners decide if the chain is bloated and the TX fees. Maybe coblee is RS Shocked. Kind of makes sense : you control the biggest competitor to SC and get all the market for altcoins by yourself.

for whom is it useful to send one amount to many addresses at once?

i give u a little hint: spammers...

Great idea of coblee  Smiley

the fee for an output greater then 2 = 0.1 LTC/each transaction

in my opinion it should be higher for greater outputs:
for an output greater then 10 = 1 LTC/each transaction


Sigh ... knee-jerk reactions don't solve problems (as we have already seen ...)

Although no one already does, you would hope that people (e.g. pools) would actually make single transaction payments rather than multiple 2 output transactions.

This change is just saying that people should only use a standard 2 output txn for everything they do and not promoting optimum use of transactions at all.

Since your both just picking random numbers and not thinking about them or asking for input on them, then pick 2 much larger random numbers.

It would be WAY worse if the person doing this decided to put every single output pair into it's own transaction ...
donator
Activity: 1654
Merit: 1351
Creator of Litecoin. Cryptocurrency enthusiast.
I don't really understand the inner workings of those transactions (and I'm just discovering about relay fees), but I guess if there was a way to make the transaction fee work per receiving address (like, sending 0.000001 LTC 100 times to different addresses or even from the same address to the same address = paying 100*0.1=10 LTC in transaction fees) this would impair his ability to cheaply make large transactions while not being an issue for legitimate users.

Here's my latest thought. I can force a transaction fee for each output greater than 2. Normal users will only send transactions to 1 address with a address for the change. Only advanced users will use the sendmany api to send coins to many address at once. I can force a fee to use the sendmany feature. So for every output greater than 2, you have to pay an additional 0.1 LTC fee. Without the ability to send to multiple addresses at once, I don't think the spammer can bloat the chain cheaply anymore.

This might not be the best idea. Might work in the short term, but in the long term we probably don't want to do that. The main reason to use sendmany is to limit chain growth, so seems kind of silly to punish use of it. The idea I was going with is to punish someone for sending dust spam. Here's the original code:

        // To limit dust spam, require MIN_TX_FEE/MIN_RELAY_TX_FEE if any output is less than 0.01
        if (nMinFee < nBaseFee)
            BOOST_FOREACH(const CTxOut& txout, vout)
                if (txout.nValue < CENT)
                    nMinFee = nBaseFee;

Basically, we were setting min fee to at least 0.1 LTC if any of your output is less than 0.01 LTC. I'd like to extend that to add 0.1 LTC for every output less than 0.01 LTC. So using sendmany to send to 1000 outputs is fine as long as you are paying the 0.1 LTC fee per 1000 bytes. But if you are sending 0.00000001 LTC to each of those 1000 outputs, then you need to pay an additional 100 LTC in fees.

        // To limit dust spam, add MIN_TX_FEE/MIN_RELAY_TX_FEE for any output is less than 0.01
        BOOST_FOREACH(const CTxOut& txout, vout)
            if (txout.nValue < CENT)
                nMinFee += nBaseFee;

The spammer can still send a ton of 0.01 outputs, but this will deal with the dust spam. It's really hard for the receiving end to collect these worthless transactions.
full member
Activity: 132
Merit: 100
ha-blody-ha!

bulanula, do you have any better solution to spam or even just idea?
sr. member
Activity: 309
Merit: 250
Not good idea. Send many is very useful and needed. You are sounding more and more like RealScam with these demonic measures and frequent client updates ( remember SC beta 5 then 6 then 7 all in like 1 hour ? ). Let the miners decide if the chain is bloated and the TX fees. Maybe coblee is RS Shocked. Kind of makes sense : you control the biggest competitor to SC and get all the market for altcoins by yourself.

for whom is it useful to send one amount to many addresses at once?

i give u a little hint: spammers...

Great idea of coblee  Smiley

the fee for an output greater then 2 = 0.1 LTC/each transaction

in my opinion it should be higher for greater outputs:
for an output greater then 10 = 1 LTC/each transaction
hero member
Activity: 518
Merit: 500
Not good idea. Send many is very useful and needed. You are sounding more and more like RealScam with these demonic measures and frequent client updates ( remember SC beta 5 then 6 then 7 all in like 1 hour ? ). Let the miners decide if the chain is bloated and the TX fees. Maybe coblee is RS Shocked. Kind of makes sense : you control the biggest competitor to SC and get all the market for altcoins by yourself.
sr. member
Activity: 392
Merit: 250
I like this idea too Smiley
full member
Activity: 132
Merit: 100
Here's my latest thought. I can force a transaction fee for each output greater than 2. Normal users will only send transactions to 1 address with a address for the change. Only advanced users will use the sendmany api to send coins to many address at once. I can force a fee to use the sendmany feature. So for every output greater than 2, you have to pay an additional 0.1 LTC fee. Without the ability to send to multiple addresses at once, I don't think the spammer can bloat the chain cheaply anymore.

I think it's a great idea to pay fee if you are sending coins to more than one address at the same time - common user will never use that option and it will stop spamers!

You have my support on it.  Smiley
donator
Activity: 1654
Merit: 1351
Creator of Litecoin. Cryptocurrency enthusiast.
I don't really understand the inner workings of those transactions (and I'm just discovering about relay fees), but I guess if there was a way to make the transaction fee work per receiving address (like, sending 0.000001 LTC 100 times to different addresses or even from the same address to the same address = paying 100*0.1=10 LTC in transaction fees) this would impair his ability to cheaply make large transactions while not being an issue for legitimate users.

Here's my latest thought. I can force a transaction fee for each output greater than 2. Normal users will only send transactions to 1 address with a address for the change. Only advanced users will use the sendmany api to send coins to many address at once. I can force a fee to use the sendmany feature. So for every output greater than 2, you have to pay an additional 0.1 LTC fee. Without the ability to send to multiple addresses at once, I don't think the spammer can bloat the chain cheaply anymore.
hero member
Activity: 518
Merit: 500
More flaws in the protocol. Too bad we don't have compulsory TX fees like ScamCoin.
sr. member
Activity: 490
Merit: 250
Maybe the Litecoin client can be modified to improve its parsing of the transaction history. Paging, or limiting the # of transactions shown to the last X, then having to click "next" to see the following transactions.
That would help for the spammed users. Also, adding the ability to "ignore" transactions below X amount (set by user) so they are not shown in their transaction report (but they are accounted for in their balance) might be a good solution.
sr. member
Activity: 392
Merit: 250
The formula is: nMinFee = (1 + (int64)nBytes / 1000) * nBaseFee;

It's not about how many receiving addresses there are, but it's the size of the transaction that matters. These huge transactions take up ~49kb. In order for a client to relay these transactions, the fees must be at least (1 + 49,000 / 1000) * 0.02 ltc = 1 ltc. So he's paying 1 ltc on these transaction. And clients will propagate these transactions because there are enough fees. And miners that have not upgraded will write these transactions into blocks.

EDIT: If we increased transaction relay fees to the same 0.1 ltc as transaction fees, then he will need to spend 5 ltc as fees for these transactions. The cost to bloat the chain by 1gb will increase to $1,320... it's more but still fairly cheap.
I don't really understand the inner workings of those transactions (and I'm just discovering about relay fees), but I guess if there was a way to make the transaction fee work per receiving address (like, sending 0.000001 LTC 100 times to different addresses or even from the same address to the same address = paying 100*0.1=10 LTC in transaction fees) this would impair his ability to cheaply make large transactions while not being an issue for legitimate users.

I guess BTC-e caused their own problems by messing with the code and their transaction lower-limit.
But did anyone else have issues? (other than the large txn's and thus the large block-chain and large wallet)
Nope, I'm not having issues, I just want to prevent the block chain from unnecessarily increasing its disk usage. But everything's working fine otherwise.
legendary
Activity: 4592
Merit: 1851
Linux since 1997 RedHat 4
Network is not scalable if it can't handle all these transactions. ...
That was my point at the start.

It would seem that Litecoin can't handle this number and size of transactions.

Now the block rate is not the issue since if the block rate was lower then the blocks would just contain way more transactions (which would possibly be worse)
So what was the actual problem anyway?

I guess BTC-e caused their own problems by messing with the code and their transaction lower-limit.
But did anyone else have issues? (other than the large txn's and thus the large block-chain and large wallet)
donator
Activity: 1654
Merit: 1351
Creator of Litecoin. Cryptocurrency enthusiast.
Though there is one solution I can think of. Which is to require a transaction fee on all coins sent that are not a day old. So if you try to send coins that are not a day old (i.e. don't have 576 confirmations), you need to pay 0.1 ltc fee. What do people think about that?

That would probably be ok, however, you can't choose which coins to use so if you had a bunch of older coins and one new one which was exactly the size you want, I think the client would choose that one.  We'd need to combine it with a tweak to the coin selection algorithm
Yup, seems like a good idea.

Also, I'm not sure I understand why there isn't a 0.1 LTC fee per receiving address there:
This guy just spent 9.3 ltc to spam these 0.00000001 ltc transactions:
http://blockexplorer.sytes.net/block/74c44fc98bbdafd1c2dfb72f2f26a0798492cbd30d2f55fcfafe88b6e1bb7bcb

The formula is: nMinFee = (1 + (int64)nBytes / 1000) * nBaseFee;

It's not about how many receiving addresses there are, but it's the size of the transaction that matters. These huge transactions take up ~49kb. In order for a client to relay these transactions, the fees must be at least (1 + 49,000 / 1000) * 0.02 ltc = 1 ltc. So he's paying 1 ltc on these transaction. And clients will propagate these transactions because there are enough fees. And miners that have not upgraded will write these transactions into blocks.

EDIT: If we increased transaction relay fees to the same 0.1 ltc as transaction fees, then he will need to spend 5 ltc as fees for these transactions. The cost to bloat the chain by 1gb will increase to $1,320... it's more but still fairly cheap.
donator
Activity: 1654
Merit: 1351
Creator of Litecoin. Cryptocurrency enthusiast.
This guy just spent 9.3 ltc to spam these 0.00000001 ltc transactions:
http://blockexplorer.sytes.net/block/74c44fc98bbdafd1c2dfb72f2f26a0798492cbd30d2f55fcfafe88b6e1bb7bcb

He must really hate Litecoin. But at least the new transaction fees are working. He can't do this forever now.

So it's costing the spammer 1 LTC to send these huge transactions (~50kb). Doing the math (ignoring 1024 versus 1000)... 20 LTC for 1mb or 20,000 LTC for 1gb. 20k LTC is only $264 at today's exchange rate. So for someone who hates Litecoin, it only takes a measly $264 to bloat the chain by 1 gig. Not even Bitcoin has a chain that large.

He's actually taking advantage of the relay transaction fees of 0.2 ltc to propagate his transactions and then taking of advantage of the miners who haven't upgraded to write his transactions into blocks.
We could increase the relay transaction fee to the same .1 ltc (it's 0.02 ltc now), but that just means it's 5 times more expensive for him. Or we could increase both fees to 1 ltc and make it 50 times more expensive. Or we could do nothing.

I've create a pool on the liteco.in forum. If you care about Litecoin, please vote: http://liteco.in/threads/what-should-we-do-about-transaction-spam.44/
Jump to: