xGov-100 - GPU-based vanity address generator for Algorand

Here you go, open-sourced again-- I don’t have a fancy computer, this is a dell laptop from an old job that had a fresh reboot, generated 10 matches in 87 seconds:

from algosdk import account
from multiprocessing import Pool, Value
import time

def init(args):
    global counter
    counter = args

def find_addresses(_):
    while True:
        if counter.value >= 10:
            return
        private_key, address = account.generate_account()
        if address.startswith('FOOD') or address.startswith('KING'):
            print(private_key, address)
            counter.value += 1

if __name__ == "__main__":
    counter = Value('i', 0)
    start_time = time.time() 
    with Pool(10, initializer=init, initargs=(counter,)) as pool:
        pool.map(find_addresses, range(10)) 
    end_time = time.time() 
    print(f"Stopwatch: {end_time - start_time} seconds")

Convert the private key to a mnemonic phrase separately if needed:

from algosdk import mnemonic

private_key = 'dXvYxAO8qs+Yr8lWGzsza38u84v5KWoAMUFKpSQkw8srnDwRHARBeQOHhtPbTmwGEfTpK8QDhsUoD6/oFQLYNA=='
mnemonic_phrase = mnemonic.from_private_key(private_key)
print(mnemonic_phrase)

Output:

dXvYxAO8qs+Yr8lWGzsza38u84v5KWoAMUFKpSQkw8srnDwRHARBeQOHhtPbTmwGEfTpK8QDhsUoD6/oFQLYNA== FOODYEI4ARAXSA4HQ3J5WTTMAYI7J2JLYQBYNRJIB6X6QFIC3A2IYHHVOU
Gss8NzTjK1V290mnIyWCLilNebltnGdr9KytxZxLtoFSGmutdBU7SATmD/6NtsJjQ40EhHLeSYw9C/R9ctUtAQ== KINGXLLUCU5UQBHGB77I3NWCMNBY2BEEOLPETDB5BP2H24WVFUAYFYOYBQ
/QwCHNdlijqR0/k1pBF1TYO2SjWtX/Cd535B8WS+14ornDgYSMpANWXXH2ZldhF8DF/adLsW4EtHhGozxddFEQ== FOODQGCIZJADKZOXD5TGK5QRPQGF7WTUXMLOAS2HQRVDHROXIUI6WOSAWM
KHepI7g/MIL+Wm3OjeSPk370/1/BK4Kg7heDPFj9+gMrnD1cMVodT2g0DAXvh4bIbSaDkWDxPNArny6dN9wUPQ== FOOD2XBRLIOU62BUBQC67B4GZBWSNA4RMDYTZUBLT4XJ2N64CQ6Z4A36KQ
Nw7sFFKmETuCxhR/sqiCrWdP9d7+L4TBC/mAkptVbxErnDejsTOja9lghbvLaCDRDm8d3LwyzE3LAyG+bDDmug== FOODPI5RGORWXWLAQW54W2BA2EHG6HO4XQZMYTOLAMQ343BQ425DHCAF4E
7k2SBwWHU1EvQAI+b59Rwlk2yD754WnNlLcjpGclUWBSGmwK22rvSsMtNVXtCTJyrgfkcl3nrEKt5oyGNbsa2A== KINGYCW3NLXUVQZNGVK62CJSOKXAPZDSLXT2YQVN42GIMNN3DLMI6MBQCY
+PYyUAAC9aEz9vLYMxa2tYi3keWHkE5hOpYSJfnlBpdSGmqKQCjV3EDqA+NQgngBVVFuEjnqXOq38UNKGoGoFw== KINGVCSAFDK5YQHKAPRVBATYAFKVC3QSHHVFZ2VX6FBUUGUBVALXCBUNJY
JtGdm3GUOyclSXv0WxwyHvcLK2sOPe4+oVpgTQ3djyErnDmZSIJsnUqTQiNGI9sLOt+SXpVK8NgzhDspVUM3pA== FOODTGKIQJWJ2SUTIIRUMI63BM5N7ES6SVFPBWBTQQ5SSVKDG6SKQPNROE
ONkKSlKx60QPPUwcYRMrsehPn3L2SAascH8/tiiHa9grnDVlKL/9GBKA8Dua/8HSPgSM846oREuu7pUibMPNeQ== FOODKZJIX76RQEUA6A5ZV76B2I7AJDHTR2UEIS5O52KSE3GDZV4S36OQ5M
P8RPqqp6ZOUb6o3npudFDFkMtW2mD3FTVEUH3T1/nb1SGmrvhj+Pc9nr2q3EY3DERUDS1go6fCysEzqM+x1XCA== KINGV34GH6HXHWPL3KW4IY3QYRCUBUWWBI5HYLFMCM5IZ6Y5K4EC3GOU2E

Time taken: 87.06298780441284 seconds```
1 Like

No idea what’s the point of having this code here. It seems like you may have missed a thread. This one is for a discussion about my GPU vanity generator xgov proposal.

It can lookup for multiple prefixes at the same run, making the process more efficient compared to a single prefix search

A tool for generating Algorand vanity addresses using GPU acceleration.

Why would someone need to search for multiple prefixes at once? This is too specific of a use-case, and a Vanity address is easily obtainable with the code I pasted here, which is a rudimentary and open-source method not only here but in all Algosdk documentations.

You speed up the process with GPU’s … understood-- but why are you acting like the code above does not practically replicate what you are proposing for $13,000 and 8x faster for something that’s a one-time use 99% of the time anyways?

Vanity address’ are ancient, and those who truly need one have the means to get one or figure out how to get one with a simple tweet asking for it, or even by posting here—where I’d just share the code I dropped here with them.

1 Like

Yes, there are multiple CPU vanity generators (see other posts here for links). My proposal is for a GPU vanity generator and looking up multiple prefixes at once gives better results.

I’m not asking for $ but for ALGO. Xgov have no way to ask for $.

Sure, you can stay with your CPU generator if you like. I can’t see any problem with you using whatever you like.

I’m pretty sure you’re more than a decent developer-- this is low-hanging fruit for you. Best of luck.

1 Like

I’m fine listening to your arguments why this is a low-hanging fruit in your opinion. Would you mind telling me why?

It’s common sense that adding more prefixes to your search speeds up the process Eg; find ‘AAAA’ or ‘BBBB’ or ‘CCCC’, the same way that generating prefix ‘AA’ is faster than prefix ‘AAA’— anyone can implement that. If the community is willing to pay $12,000 to make that slightly less inconvenient then so be it.

1 Like

I’m not sure we’re talking about the same thing here. The request is for what you can see in the first post here, not for a single feature.

I keep scrolling up thinking I’m going insane-- may I ask what the difference is between what my code does and what your tool will do? Besides the fact that you’ll be allowing GPU usage with your tool?

Not only are you only making generating a Vanity address slightly less inconvenient, but your proposal mandates that the user who attempts to generate one be familiar with terminal commands. If you at least offered to create a front-end that connected to your GPU’s I would have an easier time being onboard. On top of that, you even mention that you’ll only be doing your “best-effort maintenance” for 3-months?

Again, if I wanted to generate the prefix “FOOD”, or “KING” and/or both in my address, why would I not just copy and paste the code I shared above instead of waiting for your tool to be ready for me to manually run in my terminal, and hope it’s still maintained by the time I actually need it?

1 Like

Sure, the difference is my vanity generator uses GPU while your uses CPU. The GPU generator will give better performance on high-end GPU systems and the CPU generator performance will be better on high-end CPU systems.

Yes, 3-months best-effort maintenance is included.

There’s no reason to prefer GPU or CPU generator for 4-letter prefixes. It’s for more than this.

FOODIELOVESFOODONALGO2XBRLIOU62BUBQC67B4GZBWSNA4RMDYTZUBLT

Sounds great, I’d like to take advantage of your tool. I want a 21 character prefix, “FOODIE LOVES FOOD ON ALGO” — how long will it take? I don’t own any GPUs but I really love the idea of this tool.

1 Like

I estimate it to take at least 1ms.

You mean 1 month, correct? Saying ‘ms’ is not too transparent.

My point is, those who need a simple vanity address can easily create one.

This tool is for:

  • People who want Vanity Addresses AND
  • Have a computer with GPUs AND
  • Are familiar with terminal commands AND
  • Prefer this tool over basic SDK usage AND
  • Are willing to leave their computers on for up to 1 month for 21 characters+

That’s a really small demographic.

2 Likes

Yes, the tool is for people who want to generate a vanity address and have a high-end GPU (or can rent one) - that’s the point of a GPU vanity generator - as well as can use a terminal.

The SDK vs tool preference seems missed because the Algorand SDK does not offer a GPU vanity generator.

So the 9th open-sourced Vanity address generator is special because it uses GPUs-- and everyone will have the option to either purchase or rent a high-end rig (powerful PC) to “mine” the address and use this tool in their terminal, correct? I don’t see value in it, I’ll leave it there. Good luck, that’s my feedback.

1 Like

You’re wrong here. It’s the 1st, not 9th GPU vanity generator for Algorand.

Yes, you can either purchase or rent a high-end GPU. Alternatively use a decent one, e.g. I’m using my old GTX 950 which still gives me few x more than my CPU.

I didn’t say it was the 9th GPU Vanity address generator, I said it was the 9th Vanity address generator

1 Like

Thanks for the feedback. I hope that now you understand the difference between the existing CPU generators and my GPU generator here.

1 Like

if it can be done in like 5-10 minutes than this would be really cool. theres no use case to wait a month for this and still have a random “2XBRLIOU62BUBQC67B4GZBWSNA4RMDYTZUBLT” as a part of it.

For example:

FOODIELOVESFOODONALGO2XBRLIOU62BUBQC67B4GZBWSNA4RMDYTZUBLT
VS
FOODIEQC67B4GWSNA4RMDYTBUBQC67B4GZBWSNA4RMDYTZUBLT

1 Like

The point of the vanity generator isn’t to generate private keys for any account you like but to generate it for a reasonable length (depends on the available hardware) prefix. You can either use a CPU generator or a GPU generator. My proposal here is to bring the GPU generator as a choice because it can benefit from GPU acceleration.

1 Like