So how did the attacker know both how to exploit AND have enough firepower to submit consecutive blocks?
Must be some mighty sophisticated malicious agents.
If I'm reading tacotime's analysis correctly, it's not clear that the *attacker* would have had to solve the second block(s) after finding the first one. To wit:
If half the network accepted the block with TX_1 and TX_2 (block A, accepted by set 1), and the other half had accepted TX_3 and TX_4 (block B, accepted by set 2),
then couldn't the attacker simply generate the corresponding *transactions*, and let some other miner(s) generate blocks that contained them? The fork happened as soon as the nodes in the network had accepted conflicting sets of transactions. Block A would not be accepted by nodes in set 2, because they had a double-spend and so those nodes would keep trying to mine their own block. Those nodes in set 2 would only include TX_3 and TX_4 in a block they tried to mine, because TX_1 and TX_2 are invalid.
Thus, the normal process of mining would automatically finish things up once the evil block and the four subsequent transactions had been introduced.
If that's the case, the firepower is easy - it's just money on Amazon, or your favorite botnet. It takes about 560 nodes for an hour to find a block. That's about $40 on AWS.
The tricky part is the coding required to execute this attack, and whatever prep work they had to do to get the median tx size large enough. And finding the bug in the first place. Unlike the earlier attacks with high mixin counts which could be implemented by hitting "up arrow" a lot, this one's pretty sophisticated.