Thursday 29 October 2015

Distributed nature of Bitcoin means a transaction is never forgotten.


I run my own node, its on a beefy desktop computer with lots of memory. Over the course of the month I've been observing the mempool size and its been growing forever.Some basic concepts first, for those that are not into the details.The way that works is that any transaction created is send to the Bitcoin network. The 5000 or so nodes store it in the most wonderful redundant manner which means that effectively, until the internet burns down, the transaction will stick around. This storage is called the mempool. When a newly mined block comes in each node removes from the mempool all transactions that conflict with the new block.It is, in other words, fair to call the mempool the backlog for the miners. It is the amount of work left to confirm and put into blocks. The current mempool on my node is good for around 400 bocks. Or 3 days of completely full blocks. On other nodes that don't get flushed when I eventually restart for a kernel upgrade, I've seen double that amount.The problem is that the inflow of new transactions doesn't go down. And we've been having this backlog for weeks now. Something has to be done!According to github there seem to be some solutions;raise the min-fee! This means that an individual node has a distorted view on the world. It only sees a certain subset of transactions. Anything that doesn't pay a minimum fee is ignored. That doesn't mean that the other transactions go away or are going to stop being mined or transmitted to this node, though. Great solution for that one node that doesn't have any other option, not a solution for the network.Drop transactions after 2 hours. This seriously is a merge request. Anyway, it has the same problem as the previous one. It doesn't understand that its not a centralized solution but a system of different nodes that each follow their own ideas on which transactions are important. Not a solution for the Network.The approach in that merge request is a bit worrying, it tries to stop the big amount of transactions coming in. But they way they do this implies that we stop being distributed because as soon as we come up with a rule about which transactions to drop on all nodes we become a centralized system that can be attacked as one. Any node that doesn't follow the centralized mindset will still accept and relay those transactions. You'd need more changes before you'd have any effect.There are in my opinion only two proper solutions; first is replace-by-fee-secure. Which allows the sender to re-submit his transaction with a higher fee. But it will only be accepted if the outputs remain unchanged (i.e. its not a double spend). The second is bigger blocks.With a backlog of more than 400 MB for weeks, which is not going away, we can't wait and discuss how many years from now we will get bigger blocks. via /r/Bitcoin http://bit.ly/1P7KSKP

No comments :

Post a Comment