On my dev card rtx3060 I have performance of about 8mln keys/s, which gives around 30k/s 'valid' keys,
Random mode works quite differently - using GPU we produce bunch of 'valid' keys and then we check all of them. That way we may check much more keys, but we are not able to verify if we do not have duplicates. The corresponding performance is about 600-750k/s.
If the random mode reduces performance by more than 90%, could you improve this by testing (for instance) 100 sequential keys after each random key?
we are not able to verify if we do not have duplicates
Considering there are thousands of funded addresses, you'll find the first match long before testing even 1% of the key space. So testing duplicates shouldn't happen often.
Calculations for longer keys (30 characters) are left to the reader.
In other words - if you are in the possession of one of coins, I think you may sleep safe.
Now let's build a dedicated ASIC device that does 0.5% of the
Bitcoin hash rate for testing keys. It's an easy number: 10
18 keys per second. And we're not trying to crack all keys, just 1 out of every 5000 (which gives a reasonable chance to hit one of the 5000 funded addresses).
Now it only takes 58^21/10^18/5000/365/24/3600=68 million years to find a key. That makes mining Bitcoin blocks much more rewarding than cracking keys.
A few years ago I created many mini-private-keys (using a slow Python script) to search for a vanity address, but I don't have the list anymore.