This is an automated archive made by the Lemmit Bot.

The original was posted on /r/nanocurrency by /u/randyrocketship on 2024-08-25 05:13:49+00:00.


This proposal argues that a required minimum balance per address (with necessary pre-reqs) would be far more effective at preventing ledger spam than PoW and network throttling. On top of that it will free the network to scale at its own pace, flex its strengths, and generate more excitement and interest with hobbyists, developers, and other adopters. I believe that the pros far outweigh the cons in every category.

Preface:

This is a controversial proposal that requires another controversial pre-requisite to be implemented (full pruning). I’m posting it because we don’t have a solution, I’ve never seen one in the roadmap, and I think it’s important that we work towards one. I also think it’s a more important issue than we’re admitting because, as I’ll argue, the current solution acts as an artificial barrier to adoption while this one naturally encourages adoption.

For the sake of this post I’ve chosen a 0.0001 nano minimum balance limit. That is subjective and not critical to my argument. If it’s implemented it can be lowered as the price of nano increases and the cost of storage decreases.

Finally, I intend for this to be temporary. It can be removed completely if something, like dylan42432’s to offload ledger storage to clients, removes ledger bloat concerns completely; some other solution is implemented; or technology advances to a point where it doesn’t matter anymore (we should not wait for this).

Pre-requisites:

  • DoS protection necessary to prevent bad actors from taking down nodes (required anyways)
  • Throughput spam solved (way more important, currently being worked on)
  • Bounded backlog is implemented (planned)
  • Full Ledger Pruning is added for all nodes (controversial, not in the plan as far as I know)
  • Receive transactions need to be eliminated, because pending transactions can’t be pruned (discussed before but not in the plan as far as I know)

Current State:

Nano’s current strategy to protect from ledger bloat depends on three things: PoW, network throttling, and organizations eventually willing to host larger nodes and absorb the higher costs.

PoW is used to increase the cost of generating a transaction which, in theory, increases the cost to an attacker spamming the network. However, PoW does not scale with the resources of an attacker. An attacker can make a small investment in an ASIC to essentially negate it as a defense mechanism. Currently, an attacker can cause far more damage in costs to node operators than they inflict on themselves during an attack. To make matters worse, as the cost of compute decreases, the attacker’s advantage over the network increases.

This is where network throttling takes over. Right now node operators are artificially throttling the network to place a hard cap on the maximum number of transactions that can be processed over a given period of time. This is a fine safety mechanism while we work towards commercial grade but it’s not a solution, it’s a patch to protect us because we don’t have a real solution. I would argue that we shouldn’t declare commercial grade until we can solve ledger bloat and remove that throttle. I would also argue that throttling the network as a protective mechanism decreases overall trust and interest from larger parties.

The third pillar in the current strategy is that, eventually, large corporations will adopt nano and they’ll be willing to eat the costs and host larger nodes. If that happens, it’s true that ledger bloat probably won’t matter to them. But I would argue that large corporations will want to see the network growing and scaling first, on hobbyist nodes, before they would be willing to invest in it themselves. If the network proves itself and generates a lot of trust first that will make it much more attractive to them.

Proposal:

My proposal is to add a minimum balance requirement per address. This will force attackers to make large investments, in nano, to do trivial damage to the ledger and node operators. At $1 per nano and a minimum balance requirement of 0.0001 nano it would cost an attacker $170,000 to add 1TB of data to the ledger. That attack will cost node operators ~$50 at the current price of storage (my math is below, please correct me if I made a mistake).

It would completely change the dynamics in a ledger spam attack. 170,000 nano is 0.12% of the total supply. As they’re purchasing the nano to do the attack they’d be further driving up the price and therefore the cost of the attack (they’d need way more than 170,000 to start making a real impact). If the attacker decides to recollect their nano to recoup their costs the network can prune their addresses and the ledger will recover. Even better, the network’s advantage over the attacker will, naturally, improve as the price of nano increases and the cost of storage decreases.

EDIT: For clarity, if an account is opened with 0.0002 nano and the user tries to send 0.0002 nano the transaction will succeed, the address balance will drop to 0, and the address will be removed from the ledger to free up space. However, if the user tries to send 0.00015 nano (which would leave 0.00005 nano on the address) the transaction will fail because it will drop the address to below the minimum required balance.

If a an existing address with a balance of 1 raw tries to send it’s balance to another address it will succeed as long as the second address has the required minimum balance of 0.0001 nano. That will zero out the prior address and let full ledger pruning remove it from the ledger.

Pros:

  • Nodes could start increasing the TPS of the network at their own pace and we could watch how it responds without worrying about a ledger attack. This would generate good PR helping to attract users and developers and could lead toward more adoption.
  • PoW could be scaled back and eventually removed as we see how the network responds. When PoW is removed Nano will be easier to use, easier to integrate, and easier to build on top of. This would reduce the barrier to entry for hobbyists to build cool things with nano which would help encourage adoption.
  • EDIT: (to add an interesting point) A minimum address balance of 0.0001 nano would set a MAX CAP of ~$42,000 dollars in storage costs if the supply of nano was fully split into 0.0001 chunks.
    • If you do the same math for raw nano the cost exceeds the total value of all wealth on the planet. The amount of resources to create that many SDDs would not be possible to mine on earth. The fact that we can shrink the maximum damage to a reasonable number is very cool.

Cons:

  • New addresses would not be able to be created with less than 0.0001 Nano. This would eliminate use cases that require addresses with less nano than that.
    • What are they? The only one I can think of is faucets paying less than 1/100th of a US cent to new addresses. I would argue that the benefits of these use cases are far outweighed by the barriers that PoW and network throttling add now.
    • If we’re building a global currency for the future is it time to re-consider supporting use cases that require addresses that contain dust amounts not useful in the real world? Especially if abandoning those use cases greatly increases the usability, security, and performance of nano?
    • If there are use cases that need balances less than 0.0001 nano, custodial services can handle them.
  • This could decrease adoption by increasing the barrier to entry for new users.
    • At 1/100th of a cent, when nano is $1, there is very little barrier to entry for even the poorest people. The price of a loaf of bread in the world’s poorest country is $0.59 USD. The minimum account balance requirement is $0.0001 at the current price of nano.
  • This would cap the network to a total of 1.3 trillion addresses.
    • The limit will be decreased as the price of nano increases and the cost of storage decreases. That will greatly increase the total number of addresses available.

Concerns:

  • Why is this an issue now? 1000 cps is ~1.5tb of data being added to the ledger per month.
    • At face value it doesn’t seem like that big a deal but, we’re currently throttling the network to embarrassingly low tps to protect against this exact scenario. Wouldn’t it be helpful to unrestrict the network and watch how it responds as nodes get more powerful?
    • Wouldn’t it be better to see the network creep up in tps without worrying about ledger spam and without waiting for larger more powerful entities to run nodes and absorb costs? (yes, I understand there are other costs that nodes will face at higher tps)
    • Wouldn’t new developers and tinkerers be more excited to build on a fast, feeless, instant crypto currency that has no PoW limitation at all? Making it much easier to build very cool things.
  • Will this kill use cases that depend on microtransactions like nano-gpt, gambling, or others?
    • Not necessarily. They could be designed with a custodial wallet to reach the limit or they could just require a reasonable minimum balance of above 1/100 of cent. Most services require a minimum balance already anyways.
  • Will the world’s poor be priced out of nano?
    • At $1 per nano 0.0001 nano is 1/100th of a US cent. I doubt that will be much of a barrier for even the poorest in the world.
    • In Burundi, the world’s poorest country, where the average a…

Content cut off. Read original on https://old.reddit.com/r/nanocurrency/comments/1f0ox3p/proposal_to_solve_ledger_spam_and_enable_removal/