I noticed my CPU was at 100%. I started to investigate and verified that my block chain monitor process was running at 100%, consuming 100 MiB of RAM and totally frozen. After restarting I was amazed to witness such logs:How on Earth can there be 28 000 unconfirmed TXs. That's probably one of the reasons my process froze. Is the bitcoin network under attack or being stress tested by someone? What's happening?edit:for the record, I upgraded my bitcoin-core to version v0.10.2 (64-bit) yesterday.edit2:if the raw mempool is getting SOOO freaking huge then we need API commands to get data from the raw mempool in pages rather than as a one giant json object.

Wed Jul 8 01:40:13 2015 :: Checked 20 of 28281 unconfirmed TXs in 2.00 seconds. Wed Jul 8 01:40:15 2015 :: Checked 46 of 28261 unconfirmed TXs in 2.00 seconds. Wed Jul 8 01:40:17 2015 :: Checked 46 of 28215 unconfirmed TXs in 2.00 seconds. Wed Jul 8 01:40:19 2015 :: Checked 48 of 28169 unconfirmed TXs in 2.00 seconds. Wed Jul 8 01:40:21 2015 :: Checked 60 of 28121 unconfirmed TXs in 2.00 seconds. Wed Jul 8 01:40:23 2015 :: Checked 46 of 28061 unconfirmed TXs in 2.00 seconds. Wed Jul 8 01:40:25 2015 :: Checked 34 of 28015 unconfirmed TXs in 2.00 seconds. Wed Jul 8 01:40:27 2015 :: Checked 24 of 27981 unconfirmed TXs in 2.00 seconds. Wed Jul 8 01:40:38 2015 :: Checked 11 of 27957 unconfirmed TXs in 11.00 seconds. Wed Jul 8 01:40:41 2015 :: Checked 30 of 27946 unconfirmed TXs in 2.00 seconds.

I AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMERI AM A SCAMMER

I think bitcoin-core should start discarding unconfirmed TXs if they start to consume too much memory. TXs with the lowest priority should be discarded first. Also, individual TXs should contain a proof of work in addition to the fee. The proof of work should be optional and should increase the priority of the TX so that it would not be discarded so easily.For example, let's say the network is under attack. The nodes would not be able to distinguish between malicious TXs and honest TXs. However, a honest node would attach a proof of work to the TX so that honest TXs would be favoured by the network since their proof of work has more zeroes in front of the hash than the malicious TXs. When the attacker chooses to attach their own PoW the priority of the malicious TXs rises naturally to the point that it could push out the honest TXs. However, because the client can freely choose the difficulty of the PoW, it will notice that their TX is not accepted by other nodes so the client increases the difficulty, calculates a new PoW and resends the honest TX. That way, the bitcoin network would become super resilient to the given attacks.

I think that we need some kind of control on the size of the mempool eventually if it grows too big. I'm not sure that PoW is the way to go, though - I imagine that the outcome would be that spamming is still trivial with, say, a Blockerupter, while ordinary users need to compute very long to get a suitable PoW.

I think bitcoin-core should start discarding unconfirmed TXs if they start to consume too much memory. TXs with the lowest priority should be discarded first. Also, individual TXs should contain a proof of work in addition to the fee. The proof of work should be optional and should increase the priority of the TX so that it would not be discarded so easily.For example, let's say the network is under attack. The nodes would not be able to distinguish between malicious TXs and honest TXs. However, a honest node would attach a proof of work to the TX so that honest TXs would be favoured by the network since their proof of work has more zeroes in front of the hash than the malicious TXs. When the attacker chooses to attach their own PoW the priority of the malicious TXs rises naturally to the point that it could push out the honest TXs. However, because the client can freely choose the difficulty of the PoW, it will notice that their TX is not accepted by other nodes so the client increases the difficulty, calculates a new PoW and resends the honest TX. That way, the bitcoin network would become super resilient to the given attacks.

I see that blockchain.info have some bug on showing unconfirmed txs, they only show 17k txs for now (but it is still a large number).And at this page it is showing 66k transactions! And there are some f... miners who still mining empty blocks (at block 364389 and the latest 364399 at the time or writing). I wonder when my tx with 2000 satoshi fee will be confirmed

We could start identifying TXs by the nodes where the TX initiated. That way, a honest node would only have to calculate the PoW once during its existence. The calculation should be difficult. When other nodes detect TX flood from a single node they would revoke the PoW and not relay those TXs any more until a new PoW is attached.It is easy to revoke a PoW from a malicious node and it is very difficult to calculate a new PoW. The malicious user would have to constantly calculate new PoWs while the honest nodes with their existing PoW can keep sending TXs normally. At times of high number of unconfirmed TXs the TX PoW difficulty should be risen in correlation to the number of those TXs.When a honest node receives a TX they would check the internal database for a PoW that was somehow attached to the TX. If such a PoW exists and is not flooding the network, the node relays the TX. If the PoW exists but is flooding the network with spam TXs, the PoW will be revoked locally and the TXs with that PoW are no longer relayed. If the PoW does not exist locally the node checks the current number of unconfirmed TXs, calculates the difficulty and checks whether the PoW meets the criteria. If the criteria is met, the PoW is added to the local database. Otherwise, TXs with that PoW are not relayed.

I think that we need some kind of control on the size of the mempool eventually if it grows too big. I'm not sure that PoW is the way to go , though - I imagine that the outcome would be that spamming is still trivial with, say, a Blockerupter, while ordinary users need to compute very long to get a suitable PoW.

I start to suspect that the devs have become corrupt. They are all part from their own precious altcoin scams and seeing bitcoin crash and burn will make them only happy. They deliberately do nothing.

How are developers responding to this severe limitation of Bitcoin's usage. There are currently 72000 (!) unconfirmed transactions but it seems they don't really want to acknowledge it. Perhaps set a limit of tx/s to discourage spamming the mempool and block malicious nodes.

How are developers responding to this severe limitation of Bitcoin's usage. There are currently 72000 (!) unconfirmed transactions but it seems they don't really want to acknowledge it. Perhaps set a limit of tx/s to discourage spamming the mempool and block malicious nodes.