redshift
· 6d
Hey! Yes. Would love to work with you guys to minimise our requests as much as possible. Both of the server side and on the client side.
Here are the relevant repos:
https://github.com/routstr/rout...
Second issue is, that over the same time a burst of /checkstate calls fires, there is a websocket created, over which many dozens of separate subscriptions are created. This does not hit the rate limits, as it is fired over the single websocket connection, but every subscription hits the database, causing dozens to hundreds selects running in parallel. That's not good even that some db deadlocks caused by that were fixed in nutshell recently:
19:34:18 nutshell poetry[2060271]: 2026-06-27 19:34:18.52 | INFO | ('2001:4656:29bd:0:674e:4fb1:18d4:1fa3', 0) - "WebSocket /v1/ws" [accepted]
19:34:18 nutshell poetry[2060271]: 2026-06-27 19:34:18.56 | DEBUG | cashu.mint.events.client:add_subscription:190 | Adding subscription 7PXvkPM8gsgHd3xUYayN8Q for filter 0219dee1caafe82eba021a56c53421c0ddba71291a63507c43a3b4aa39ccb67cf0
---- dozens to a hundred of those with the same sub id and different filter - then replied by the mint (until the ban kicks the ip out) --
19:34:18 nutshell poetry[2060271]: 2026-06-27 19:34:18.62 | DEBUG | cashu.mint.events.client:_send_msg:174 | Sending websocket message: {"jsonrpc":"2.0","method":"subscribe","params":{"subId":"7PXvkPM8gsgHd3xUYayN8Q","payload":{"Y":"02a11aa6449b30fafa1d272fed391ea80cec6d232c9cfe6ff214d78565e52a7521","state":"UNSPENT","witness":null}}}
It apparently looks like that the wallet implementation fires duplicate both /checkstate and websocket sub recursively for EACH ecash proof, instead of just doing it once and in a single call.
So if you can identify this behavior within your routstr wallet code, fix should be really simple.