Hi Nano community,
I just wanted to get this idea down, in case anyone else has it in the future they can land on this thread. It may or may not be a workable idea. This can work with any type of PoW (Blake2b / equihash etc).
Currently Nano nodes allow PoW at 1x difficulty to fill up the entire network capacity until saturation is hit. For arguments sake let's call the network capacity = 1000TPS. This makes ledger bloating at 1x very easy.
The bandwidth limit the nodes introduced recently in effect reduce overall network capacity, regardless of difficulty. I imagine this as one pipe for the whole network with it's flow rate throttled.
Now, instead, let us introduce multiple pipes for different difficulties, and throttle each one separately.
PIPE 1: 10 tps, 1x Diff.
PIPE 2: 20 tps, 2x Diff.
PIPE 3: 40 tps, 3x Diff.
PIPE 4: 80 tps, 4x Diff.
PIPE 5: 120 tps, 5x Diff.
and so on until SUM PIPES = 1000tps (network capacity)
How does this help ledger bloat?
1: To spam at 100tps, only 10% network capacity, you'll now need to continuously produce 4 different levels of difficulty blocks. The change in difficulty is more granular and occurs before saturation.
How does this change the difficulty floor?
1: If a spammer was to crank out just level '4x' difficulty blocks, then only that pipe gets full rather than the whole network. Users can send transactions for 1x difficulty just fine. The spammer would need to fill up pipes 1 through 4 simultaneously in order to raise the floor.
2: The difficulty floor is raised more quickly with this proposal, as difficulty goes up way before saturation.
The recently proposed bounded block backlog by Colin could possibly be applied so each pipe had it's own backlog container, and low level spam blocks can get dropped way before the original saturation level is hit.
Telemetry can be used to communicate which pipes have containers that are filling in order to dictate what PoW should be used to get your transaction into a free flowing channel.
This should be implemented in conjunction with a difficulty nonce attached to each transaction so that the intended channel is defined.
Now for questions: how to know what tps each pipe should be set to? How are nodes convinced to have similar set ups? Can this be implemented alongside TaaC?
Thank you for reading! I am not a programmer and wouldn't know the feasibility of implementation... any comments gratefully received!