Bitcoin: Soft block size limit reached
bitcointalk.org
bitcointalk.org
In pools/miners that are not blocking satoshi dice 70-95% of every block is filled with SD transactions. Further, SD has upped their fees to get higher priority.
Interestingly, the sentiment of the devs and the sentiment of the users is vastly different. It seems that the users are overwhelmingly pro SD, anti filtering out SD transactions, and think this is just a nice test for bitcoin and this type of transaction volume is inevitable anyway. (plus, they are of the libertarian leaning in general).
Sentiment amongst the devs varies, but it does seem they all agree that SD is abusing the blockchain. There is no reason SD can't remain provably fair and have the same flow without spamming the blockchain; and, since they are reusing addresses and acting in a such a way that their transactions can be trivailly tracked, there is no reason (in some of the devs' minds) to not treat them as spam and filter out their transactions.
For their own part, the owners of SD have reportedly taken a "fix your shit" attitude when asked to change their methods.
In any case, it has spurred a lot of discussion on "how" to raise the soft limit; which is completely arbitrary, and many pools have already raised it regardless. The real news is that the `hard` limit, which will create a fork is not even an order of magnitude away. No one wants to keep making hard forks, so there is a lot of debate on how to best determine future block limit size on a system wide scale.
For my own part, it is hard not to see SD as spamming/abusing the blockchain. If I ran a mining pool or a hasher (I don't) I would block SD as Luke-jr does by not including addresses into blocks that start with `1dice`. It's note worthy that it would be essentially impossible (rather than trivial) to censor SD transactions if they followed best practices.
It is also worth noting that there are whispers of SD transaction volume being something of a conspiracy. I have not done any analysis on this; but what I have heard is that the vast majority of SD transactions appear to be bots, playing losing bets 24 hours a day. SD has issued stock, which is publicly traded.
What implications does this have on the future of bitcoin? Is it even possible to have a reliable currency if anyone can create a crippling load on the system?
The real answer to your question though is 'off chain transactions' will likely become the way a lot of debts are settled. It's trivially easy to double spend coins that have been not confirmed into any blocks, so it's inevitable that this type of fraud will become more prevalent. As such, it makes things like 'buying coffee' with bitcoin really annoying, if I am going to have to wait 2-15 minutes for my transaction to get confirmed into a block it isn't really going to work. So B&M retailers will be forced to make their customers wait for transactions to confirm, or risk getting scammed (which breaks the whole "point" of bitcoin having lower fees than CCs).
Enter off-chain transactions. Retailers could either let you hold a balance there, or, more likely.. someone will pop up with a competitive off-chain transaction scheme; perhaps Ripple, perhaps something more like bitinstant; where balances are demoninated in bitcoin and retrievable in bitcoin, but day-to-day small transactions actually happen in a 'centralized' database and are only written to the blockchain upon cashing out. (note this is exactly what is happening with mtgox, where tons of coins exchange hands just within their system that don't get written to the blockchain until you cash out your coins).
This immediately raises a large number of very interesting questions. I was under the impression that the whole point of bitcoin was that it allowed anonymous transfer of funds with no central authority. If some group of large miner groups have the power to a) identify satoshidice, and then b) ignore it's transactions, then what is the point of bitcoin?
Seems like this fundamental issue of every node needing to replicate all transactions is turning into a real problem. I expect there will be a system of supernodes at some point, and most nodes will only store hashes. Operators of the supernodes could then become targets of regulation, undermining the decentralized nature of bitcoin and eliminating it's primary purpose.
I'd love to be wrong. Anyone?
Everyone still stores the hashes, some just don't use these transactions as hash input. May cause problems with satoshidice transaction processing and yes, could result in slow transactions and potential double spends if a large proportion of miners did this.
i.e. could I (theoretically, if this got a lot worse) spend BTC at Satoshidice, count on them not being validated very fast because Satoshidice transactions are ignored by a proportion of miners, and spend the same BTC somewhere else?
I'm just an interested observer at this point, I have no BTC and I'm not into online gambling.
However, eventually the network will include one of your transactions in the longest chain, and the other will be discarded. So the double-spend will not be permanent.
The longest chain? Why would length be the determining factor?
If someone double spends a bitcoin, it could saved by one recipient and quickly be spent many times by another. The most fair way is probably to take the first spend.
Regardless, anyone ignoring a block of a transactions seems unsustainable long term if bitcoin is going to have any credibility. Seems like those with an interest in bitcoin should avoid even considering this.
This is one of the more disturbing defaults I've heard of with bitcoin.
btw: bitcoins by default allow semi-anonymous (because all transactions are public; if you want to be anonymous you need to do some tricks) transfers.
The 'mining' operation is basically a race to produce a valid block for the blockchain and have other miners accept it. The hash input data for the block is transaction data. Per-protocol rules, any miner is allowed to ignore any transaction they want to. Partly this is so that they can (if they wish) concentrate on processing transactions with a decent fee attached. This is thought to become a more significant thing as the built in reward for block discovery shrinks over time.
Therefore there is no guarantee that any transaction will be processed at all, and certainly no guarantee that it will be done in a timely fashion. Though it probably will. This is part of the wait for confirmation.
If a large miner group ignores satoshidice it doesn't mean that they disregard satoshidice transactions, it just means that they won't use them as input to the blocks they're attempting to mine. Others will still use them as input, and if the successful block comes from one of these others then the whole ecosystem counts the transaction.
However, If everyone did this, then satoshidice would indeed find it close to impossible to get transactions into the system.
--edit-- obviously this doesn't address your anonymity concerns, but others have done that.
The way the system is designed to deal with discriminating miners is to allow all discrimination (a miner can choose which txns to include based on any criteria he/she wishes), but diluting their choices by having enough miners.
SatoshiDice is actually very useful for the network, because it allows us to test how it functions in a saturated environment long enough in advance that we can make changes if they are needed.
But yes, in principle, colluding miners could make life difficult for merchants they dislike. This is one reason why a large and divers base of miners is important to the BTC system.
The miners are not really filtering satoshidice, they are filtering all transactions that start with '1dice' this includes them and a tiny number of false positive matches.
Should the bitcoin community ban the Satoshi Dice filter patch? https://bitcointalk.org/index.php?topic=150481
especially this comment from misterbigg:
https://bitcointalk.org/index.php?topic=150481.msg1599107#ms...
But Bitcoin would have run up against the block size limit at some point anyway; the vast quantity of Satoshi Dice transactions have only accelerated the confrontation of this dilemma. I actually appreciate the fact that Satoshi Dice is effectively stress testing the system. Bitcoin block size is a serious impediment to scaling up.
I wonder if Bitcoin core dev (and Google employee) Mike Hearn has consulted with Jeffrey Dean and Sanjay Ghemawat about this issue. I know that Bitcoin recently switched from Berkeley DB to leveldb for most of the client's bookkeeping, which would have been a good opportunity for Mike to approach them about this dilemma. However, I know that all the core Bitcoin devs are already very capable, so I'm not sure if a technological solution to this issue even exists. The answer may be more political (i.e., convincing all the miners to go along with an idea).
<idlespeculation>On a related note, I wonder what the level of adoption of Bitcoin is among Google employees. As mentioned above, Mike Hearn is a Google employee and a long-term Bitcoin core dev. I would speculate that the level of adoption is relatively high, which makes me also speculate about when Google might start accepting Bitcoin. Anyone care to comment?</idlespeculation>
Single reason I don't have a Nexus 4 is that I have to use Google Wallet and I won't give Google my real name to link it to my account no matter how hard they try.
I don't know what bitcoin proponents think will happen in the bitcoin future when everyone will be payibg with it; the size of the block will quickly get to megabytes.
Yeah, bitcoin doesn't scale well.
http://en.wikipedia.org/wiki/Mark_Kryder
Of course if bitcoin transaction volumes rise faster than that, there's a problem. Which, uh oh, they are. By a lot!
Meanwhile, average and available bandwidth and disk space goes up.
By the time the block chain breaks into the terabytes range, storage and network technology will have advanced to the point where it's not a problem anymore.
It was around a gigabyte back in January.
It is perfectly possible to not do this, but doing so requires that you trust someone (the one running the client for you).
He anticipated this problem and foresaw that eventually only specialized hardware would run full nodes, and everyone else would run on a highly simplified system requiring a lot less bandwidth/storage.
http://www.mail-archive.com/cryptography@metzdowd.com/msg099...
What's likely to closely resemble banks in the future are bitcoin clearing houses, where transactions just move around internally. These will be supernodes themselves, but not all supernodes need to be this kind of clearing house.
But then you cannot advertise Bitcoin transactions as free any more, as free TXs will likely be lost at a non-negligible rate in the future.
Blocking Satoshidice is a temporary fix to give time to the developer community to come up with a better plan. So is increasing the soft limit (we are currently at 1/4 of the hard limit, doubling the soft limit will put as at 50% of it, and it will double the blockchain bloating rate).
Another one is the integration of hybrid systems. For instance Ripple + Bitcoin (bulk of small transactions would move out of the block chain, basically things that wouldn't need to be register and/or have extra anonymity requirements).
There are a couple ideas on alternative data structures to store the blockchain more efficiently. This would mitigate both bandwidth and storage requirements by potentially an order of magnitude. (Although not so much for miners or general users, but mostly nodes and users of the "standard client" which is still the most used one).
So far nothing I've said requires a hard fork.
Now, forking (some of these are far from definitive solutions, basically only fee requirement changes are a real solution from the following ones):
Enforcement of a minimal but non-0 fee in the very protocol instead of by miner consensus. The way to go IMO.
Higher hard limit for the block size (kicking the can, but this can be a very effective kick that would very likely allow for the previous things to happen over time)
Equivalently, reduce avg. time per block.
"Floating block size" - not a solution proper but a mitigation system to avoid translation volume instability. It would adjust in a similar way difficulty does.
I don't know what's going to happen medium or long term, but the best plausible and likely scenario in my opinion is 1) some fee enforcement scheme 2) the bulk of small and local transactions to happen offline - both solving the latency problem and minimising blockchain bloat by orders of magnitude.
Any P2P network dies when leeching of resources completely outweighs sharing of resources. I think Bitcoin with its transaction fees has a very clever mechanism to prevent that from happening.
I would still be curious whether it's just a matter of price, though. Surely at some point the miners couldn't resist processing the transactions?
Obviously it wouldn't be practical but it might help with censored files.
All this talk of spamming block chains, miners, soft-hard limits - word that mean nothing to your average cowboy - can't be good for bitcoin's near future.