Skip Navigation

The case for dropping old blocks to keep Monero blockchain size under control and future proof

Monero is striving to be a currency that everyone can use, the growth of the blockchain is starting to hamper this goal IMO.

I think we should consider dropping blocks off of the chain tail once we reach block height of 4000000. This will give us 10 years of storage capacity, more than enough IMO.

Similar to how you have to exchange bills of cash once they get worn, you would simply churn your coins to get your outputs into younger blocks.

We are trying to be digital cash not an inheritance vault. If we had this feature from the start 99% of the community would agree with it.

Please consider this.🙂

*Edit: @4KB/tx * 100,000tx/day we are looking at ~400MB chain growth daily, this is not sustainable, let's take care of this now before it becomes a big problem

**Edit: A possible solution could be that nodes would have the option to set chain retention duration. So when syncing a new node you can select that you would like to retain 5 years of chain data, with a minimum boundary enforced that retains sufficient security. This way the network decides in a fair way how much chain data is useful to store.

51

You're viewing a single thread.

51 comments
  • You can't just do that. First of all, you can't even tell what outputs are spent in Monero. Trying to remove spent outputs to prune the chain is very difficult.

    People pay to have their funds stored indefinitely in monero, via debasement with the tail emission. Unlike bitcoin, where holders free ride, in Monero we lose some value over time as compensation to the network for storing our unspent outputs forever.

    The security model with blocks missing from the beginning of the chain is not the same as with them. You might think this is no big deal, but it does fundamentally change the model.

    These sorts of schemes have been proposed before, even before Monero. We didn't have this feature from the start because people didn't agree with it.

    Dropping whole blocks globally is no good. Locally dropping blocks that a user doesn't have transactions in is fine, and we already do that (pruned nodes keep some subset of the rest of the blocks to ensure that a complete copy of the chain is out there, distributed among the nodes). So we already do something like what you're proposing, except nobody is forced to do it. If you've got the space for the whole thing, good, if not, run a pruned node.

    Chain growth is a problem, but it's not such a big problem that taking a hammer to the protocol and consensus is worthwhile. What you're proposing is a drastic, not well thought out thing. We are better off chugging along until we can figure out some way to get full privacy without having to store spent outputs. We are very close to it, already MW exists that gets us ~80% of the way there.

    • The tail emission pays miners to process transactions. If storing all tx data was only required by miners then you would be right. However, to use the network you have to obtain and store all the data.

      It takes days to sync the chain, weeks on low power devices. You should be able to sync the chain in a few hours and this should decrease with faster connections and devices so people can start using Monero properly quickly. This can only happen is we eliminate chain growth by dropping old blocks.

      Decade old transactions are useless data for a cash like currency, Monero is not a storage vault it is a currency, it needs to be fast and light.

      It would actually improve the practical security of Monero to not retain the data by putting the burden on those who wish to analyze the data to store it themselves.

      We will get to a point relatively soon where the chain is growing 1GB per day, it is best to have something in place now that can eliminate the chain from growing to unusable levels.

      Users would need to churn their outputs or they can opt to retain the chain data if they wish.

      All systems are finite you cannot just store all data forever, there needs to be a cut off limit set at some point, better to do it sooner rather than later. I am not saying we need it done next month, but we should have something in place in 3-5 years.

      • Yeah, the tail emission pays miners. Nobody else has to run a full node, maybe you want to just to do it in which case you don't expect payment, maybe you do it because you have a lot of monero, in which case you're paying directly for your own storage, nobody is doing it on your behalf.

        You're right, it takes too long to sync the chain. I'm not saying we don't need a solution, I'm saying your proposed solution is not the correct one. I think the only solution is to remove the need to keep spent outputs forever, and this being Monero, to do it in a way that preserves current privacy guarantees. This is currently not possible, you can do one or the other, not both. I think we will get there.

        On the topic of syncing the chain, again it is perfectly possible right now to sync only from your restore height. This means the only people who are stuck syncing forever are people who have unspent outputs in old blocks. If you want a faster sync time, take your own advice and sweep to a new address into a brand new block, then you don't have to really worry about syncing forever, you get exactly what you're asking for, complete with reduced security, without forcing it on the rest of us.

        Money is a storage vault and a medium of exchange. You can be fast and light without deleting people's savings. We just have to figure out how. Cash is not cash if I can't put it under my mattress and expect it to be there whenever I determine it's time to use it. Money that evaporates isn't money.

        Users would need to churn their outputs or they can opt to retain the chain data if they wish.

        Yes, that's currently how it works. We just opt to retain chain data more often than you'd like. If you want to, you can sync only from your restore height, if you want to churn outputs so your sync time is less you can do that. You get what you want, I get what I want, everybody wins. What you're proposing is already an option for you if you want.

        There needs to be a solution, yes. Not your solution. I think 3-5 years is a great timeline, in time for seraphis and jamtis to roll out and significantly improve the status quo, and plenty of time for someone to figure out a real solution, such as a scheme that preserves complete privacy while allowing all spent outputs to be discarded by nodes. I hope it happens. But discarding unspent outputs globally, forcing people to do it across the whole network, is simply not an option.

        • To use Monero properly you have to run a node, using remote nodes is just a workaround. Pruned nodes are a good solution for now. Either way someone has to run a node for you to use the coin.

          It is not possible to sync a node from restore height, you are talking about syncing a wallet, I am talking about syncing a node. If you could sync a node from a desired height this conversation would be moot.

          A user should be able to download the GUI wallet sync the chain and be ready to use Monero properly in an hour or two on a modern PC without any worry of running out of disk space.

          About forcing people, we should not be forced to sync and store old data to use Monero because someone is too lazy to click a button every 10 years.

          The health, performance, ease of on-boarding and use of the network is much more important than someone trying to store coins over a decade.

          The network is not capable of infinite storage, it will become unusable by most. If there is a better solution than dropping blocks I am all for it, until then dropping aged blocks is a valid solution.

You've viewed 51 comments.