(EDIT: I’ve had some problems with the forum software preventing me from posting it, so I posted a link to read.cash article as an answer, here’s the copy after these were resolved)
Ok, first you need to understand the difference.
There is a thing called “FreeTips”, it’s this:
and then there’s a thing called “tips”, it’s this:
100,000 transactions per day that we do are split approximately as 99,900 “FreeTips” and 100 “tips”.
First, let’s talk about FreeTips.
Ok, so here’s how you think it works, when user A “sends” a FreeTip to user B:
Or, if we look more generally, here’s how you think FreeTips work on all of noise.cash:
As I noted on every image - this is not how it works in reality.
User A has no money. We didn’t take posession of his money to do the “server-side signing” as you assume. User A merely recommends to us that user B should be rewarded and suggests that we should thank him (user A) with a 20% kickback.
So, here’s how it really works:
And now, the funds that noise.cash fund has must be sent to both user A and user B:
User A is the recipient of money, not the owner.
So, again, noise.cash doesn’t work like this:
It works like this:
It seems that all these users “tip” each other, but in reality they have no money! The merely recommend us to tip somebody and give them too. noise.cash fund had money originally, not users.
So, OUR wallet must send 100,000 transactions per day not because we took users money and do server-side signing, but because WE are where money is. (Or, actually, not “we”, but rather Marc de Mesel, we’re merely hosting his funds). So, basically this:
So, yes, we need to send to 30,000 wallets and no, we don’t need to “host” their wallets. Instead to avoid the limits we have to do this:
Finally, let’s get back to “tips”:
They are already implemented as “in-browser” tips and they don’t require any “server-side” signing.
As noted - they are probably less than 1% of all transactions that are happening on noise.cash. This situation.
This is actually implemented:
Note that it even says that it exists in this browser window only.
The reason for that is that we need to send to multiple addresses in the future (a commission to noise.cash, to affiliates that invited both the tipper and the recipient) and BIP-70(?) support is really bad in wallets. So we create an ephemeral wallet in browser to do that.
This is the situation that you were thinking about this whole time - where a user HAS money and wants to send money. This is absolutely a minority case and even for these users, 50-chained limit is a problem:
^^ this user talks about sending a transaction using that “QR tip” thing and the limit he stumbled is in his bitcoin.com wallet, while trying to send HIS money, not “noise.cash fund” money.
Does it make it any more clear why a “full-featured” noise.cash is not an answer, but rather a misunderstanding of how it works? noise.cash is “feature-complete” in this regard and no future changes will solve it. We will have to have more and more wallets as the fund increases. We are up to 100 wallets and will probably need 150-200.