原始文献 / 论坛帖 / Re: Transaction / spam flood attack currently under way

Re: Transaction / spam flood attack currently under way

Bitcointalk · 2010-11-19 23:50:24 UTC

AuthorSatoshi Nakamoto
TitleRe: Transaction / spam flood attack currently under way
Date2010-11-19 23:50:24 UTC
ForumBitcointalk · 原文

引用自 creighto(2010 年 11 月 19 日 08:29:12 PM)(https://bitcointalk.org/index.php?topic=1850.msg22896#msg22896):也许除了最近实现的币龄优先级规则,还应该有个免手续费的最低币龄规则。换句话说,也许可以定个生成规则:免费交易必须 3 个区块深之后才能再次免费转账。这样真实用户急用时还是可以立刻花新到手的钱,同时也允许真实用户按需重新整理资金而不产生额外成本。我觉得这会显著抑制正在发生的这类垃圾攻击。
我正在做类似的事。优先级就是你说的这个概念的更正式版本。

引用自 FreeMoney(2010 年 11 月 19 日 05:39:44 PM)(https://bitcointalk.org/index.php?topic=1842.msg22844#msg22844):按现在 3.15 的情况,有不少免费交易空间,而且这些空间优先给 [age]*[value]/[size] 最高的交易,对吧?把免费空间的任意一部分要求 [age]*[value]/[size] > C,合理吗?

比如把 C 设成:标准的 1BTC 交易能在下一个区块进入主要的免费区;0.1 的大概等 10 个区块后能进;再把允许 [age]*[value]/[size] < C 的区域做成每区块进十几笔交易左右。
对,就是这样。而无优先级要求的区域是 3K,每区块约十几笔交易。

我刚上传了 SVN rev 185,免费交易有了最低优先级要求。交易泛洪都是由反复重花的币组成的,所以它们反复依赖自己 0 确认的交易。0 确认的交易优先级为 0,所以这类免费交易一次只能等一笔交易进区块。

0.3.15 版不会用 0 确认依赖来写交易,除非实在没别的可用,所以普通用户一般不会被这个卡住。

我觉得这是个不错的折中,还没到把默认手续费设成 0.01 那一步。要求免费交易只能隔一段时间周转一次币,并不过分。用免费交易就是在接受施舍,那同一批币能用多频繁,总得有个限度。

我们一直说免费交易处理得可能慢一些。你可以加上 -paytxfee=0.01 来确保交易快速通过。

英文原文

Quote from: creighto on November 19, 2010, 08:29:12 PM(https://bitcointalk.org/index.php?topic=1850.msg22896#msg22896)Perhaps in addition to the age priority rule recently implimented, there should be a minimum age rule without a transaction fee.  Said another way, perhaps a generation rule that says that a free transaction must be 3 blocks deep before it can be transfered again for free.  This will still allow real users to immediately spend new funds if they have to, while still permitting real users to reshuffle funds to suit their needs without an overhead cost.  I think that this would significantly inhibit the type of spamming attack that is currently underway.
I'm doing something like that.  Priority is a more formalised version of the concept you're describing.

Quote from: FreeMoney on November 19, 2010, 05:39:44 PM(https://bitcointalk.org/index.php?topic=1842.msg22844#msg22844)As it stands now 3.15 has a lot of free transaction space and that space is given first to transactions with the highest [age]*[value]/[size] correct? Would it be reasonable to make some arbitrary portion of the free space require [age]*[value]/[size] > C ?

Maybe set C so that a standard 1BTC transaction can get into the main free area on the next block. And a .1 can get in after waiting about 10 blocks. And make the area which allows [age]*[value]/[size] < C to let in about a dozen transactions or so.
Yes, like this.  And the no-priority-requirement area is 3K, about a dozen transactions per block.

I just uploaded SVN rev 185 which has a minimal priority requirement for free transactions.  Transaction floods are made up of coins that are re-spent over and over, so they depend on their own 0 conf transactions repeatedly.  0 conf transactions have 0 priority, so free transactions like that will have to wait for one transaction to get into a block at a time.

Version 0.3.15 doesn't write transactions using 0 conf dependencies unless that's all it has left, so normal users shouldn't usually have a problem with this.

I think this is a good compromise short of making the default fee 0.01.  It's not so much to ask that free transactions can only be used to turn coins over so often.  If you're using free transactions, you're taking charity and there has to be some limit on how often you can use it with the same coins.

We've always said free transactions may be processed more slowly.  You can help ensure your transactions go through quickly by adding -paytxfee=0.01.