Each time we log into wallet we start searching bitcoin nodes from scratch, that leads to unpredictable UX issues as we often hit high latency or misbehaving nodes (they doesn't respond for block request, doesn't relay valid transactions or drops connection as soon as any message is sent).
I think that cache of "good" nodes is able to mitigate that issue. Wallet should find good nodes only once and reuse them on subsequent sessions if they are online.
Define which nodes are good and which are bad. Ex: latency, connection uptime.
Range nodes by that metric and save the best ones in local storage. That information can be not encrypted.
Add good nodes to pool of connections on startup
Make weighted probabilistic selection which nodes to connect to.
Each time we log into wallet we start searching bitcoin nodes from scratch, that leads to unpredictable UX issues as we often hit high latency or misbehaving nodes (they doesn't respond for block request, doesn't relay valid transactions or drops connection as soon as any message is sent).
I think that cache of "good" nodes is able to mitigate that issue. Wallet should find good nodes only once and reuse them on subsequent sessions if they are online.