> miners and nodes need to spend a very long time processing some blocks. This is due to the EXTCODESIZE opcode, which has a fairly low gasprice but which requires nodes to read state information from disk;
AIUI, the data in the blockchain isn't just "data". It's actually small bits of code that execute inside a VM, which each node needs to execute in order to "understand" the blockchain. "EXTCODESIZE" would be one of the instructions in this particular VM.
I think that most blockchains either have a complexity limit per record/transaction, or have a complexity "cost", so that complex code is more costly to insert into the blockchain.
However, in this case, it sounds like someone has figured out how to insert some code that is actually more complex than the complexity-measuring code thinks it is, and is therefore causing all miners (all users?) to perform higher-than-expected amounts of computation to parse the blockchain, to the point where they can't keep up with the network.
(Corrections welcome)
If the nodes had different implementations, chances would be that only some nodes would be slown down, but the reality -i assume- is that there's only 1 implementation.
Think to mail servers, if they were all running the same os/sw then attacks to the whole system could be easier.
This was part of the development philosophy, to implement the client (based on the yellow paper http://gavwood.com/paper.pdf that specifies the protocol) in multiple languages in order to find bugs: if 2 clients don't agree on something, then we found a bug.
Case in point is the International Cyber Security Protection Alliance:
https://www.reddit.com/r/Bitcoin/comments/1h43ez/chilling_ar....
This organization represents major financial firms, including Visa Europe, and law enforcement agencies, including the City of London Police and Europol, and had a 2 page article appearing in the 2013 G8 trade magazine calling for a global ban on Bitcoin, for the most powerful people in the developed world to read.
The people who run this organization appear to be ruthless and amoral, going as far as publicly justifying cyber attacks against companies in the Bitcoin space:
https://www.reddit.com/r/Bitcoin/comments/1giuft/quote_from_...
Then there is the Hacking Team, a blackhat cyber security firm that works for government agencies around the world, and whose CEO said in an email "The DARKNET is your enemy. TOR is your enemy. ENCRYPTION is your enemy":
...
>Going as far as talking about a DDOS attack on Twitter
Also, that G8 article you linked has a full page MTGOX ad on page 8. Kinda ironic huh?
Okay, enough with the low hanging fruits, now some serious stuff.
I don't see how Bitcoin enthusiasts can trivially brush off the criminal activities connected to Bitcoin. The public at large doesn't care about your shiny little toy - but they do if it's used by criminals. The article specifically mentions child pornography. Now how can CP be distributed? Tor and hidden services. But how is someone going to pay / profit from it? There was no easy solution - then comes Bitcoin, and suddenly people can be absolutely untraceable on the internet. You cannot simply ignore this. You have to acknowledge it, and then a) provide some form of solution (kinda contradicts its principles) or b) argue that it isn't as important compared to potential benefits of Bitcoin.
Off the top of my head the people with the largest long-term vested interest in bitcoin would be 1. Satoshi Nakamoto (whoever s/he really is) 2. Winkelvoss twins 3. Whoever stole coins from the various exchange hacks
The miners can run any arbitrary code ("a contract") that you write, and this code is verifiable and trusted by everyone once it's been uploaded to the blockchain. The contracts can read/write arbitrary things in the blockchain and send coins to anyone you want, determined by the code you write.
There's a "gas price" that you have to pay for each operation you tell the miners to execute. However, the operation "EXTCODESIZE" evidently has too low of a cost, allowing someone to pay to have it executed enough times to noticeably slow the miners down for shits and giggles.
Someone correct me if I'm wrong?
Furthermore you need to maintain plausible deniability. THIS IS HARD. If Ethereum catches you, they'll just hard fork. So your average blocked claims can't change by a large amount. So in reality you already need to 1st/2nd sigma miner, then increase your profits by maybe 20-30%. This is a lot of risk, and a ton of work.
Most likely it is just somebody doing it for the lulz
Right now, it seems ethereum is just an almost-free VPS service and people are surprised that actors are taking advantage of it.
I guess, if most VPS services cost >$5/minute: https://www.reddit.com/r/ethtrader/comments/53xt58/daily_dis...
Currently, when you send a transaction, the transaction includes a gas price that you are willing to pay for a unit of gas. The miners then decide if they want to mine your transaction, or not. Each opcode in the Ethereum Virtual Machine requires a different amount of gas, which is hard coded (look at this spreadsheet: https://docs.google.com/spreadsheets/d/1m89CVujrQe5LAFJ8-YAU... the opcode that is causing trouble today is EXTCODESIZE which has a gas cost of 20, which is apparently too low).
Initially, there were ideas where you could specify in the transaction the gas price you are willing to pay for each opcode. But this would make transactions very large (in terms of bytes).
In addition, the cost of the expensive blocks is a burden on the entire network, not just the miners.
Bitcoin has a soft fork process (BIP9) where a rule can be enforced among all nodes at the same time. Of course, it is necessarily slow to activate and currently requires 95% of miners to signal support to minimize the number of blocks produced using the old rules.
disable specific opcodes alltogether
That would be network censorship and kind of ruin the point of a "trustless network".Another advantage of a declarative notation is that compute time tends to be bounded by a fairly low bound. That would put a lid on problems like this new one, where the little programs are chewing up too much time.
We may see some smart contracts system with a better notation in the derivatives business. It doesn't need to be a currency, just a blockchain with enough identified independent players to prevent tampering. The need for "mining" comes from the desire for anonymity; it's not inherent in smart contracts.