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

Hi, I’d like to encourage you to discuss my xGov proposal. Please see the details here:


id: 100
period: 3
title: GPU-based vanity address generator for Algorand
author: Marcin Zawiejski (@dragmz)
discussions-to: xGov-100 - GPU-based vanity address generator for Algorand
company_name: N/A
category: Tools
focus_area: Other
open_source: Yes
amount_requested: 47474
status: Final

Abstract

A tool for generating Algorand vanity addresses using GPU acceleration.

Team

  • Marcin Zawiejski (dragmz) - experienced professional developer

Experience with Algorand

  • Author of VSCode Extension for TEAL and WalletConnect v1 and v2 libraries for Go
  • Build-A-Bull hackathon top 5 finalist in the gaming track (see CnC: Claim & Conquer)
  • go-algorand contributor

Present Proposal

  • The tool will be provided as a command line utility for systems that can run Python 3.11+ and have OpenCL 3.0 capable NVIDIA GPU
  • It can lookup for multiple prefixes at the same run, making the process more efficient compared to a single prefix search
  • The prefixes to look for can be specified as a command line argument or a text file
  • Licence: MIT or similar (commercial use allowed)
  • Includes best-effort maintenance for at least 3 months from the date of the first release
  • Delivery date: up to 3 months since signing the xGov funding contract

Benefits for the community

Allows the community to quickly and securely generate recognizable Algorand addresses for their projects or personal use.

Additional information

An example run of the tool:

pyagg --prefix AAAA,BBBB --count 10 --benchmark

Output:

Looking for 10 keys with prefixes: AAAA, BBBB
BBBBX2WLU3IYSM6GEPWOPJCYV5C7ZB3PHFL5NY5YPKIHUJGSKHHCV3WX54,[mnemonic]
BBBBPT2OSCPPBOT7JARKGMXP5LPUM54BPTBJFIHREKTQAH276WJ26EKUYY,[mnemonic]
AAAAUOLIHXUVH4ZM5F2HSOBFWQJDEXGVYZGV5E7RZKO6FFTTT2DKPKNQ5E,[mnemonic]
AAAA4Z36WWZA4DIKZYRFOV762IJ7QANHULGXFZEB6MU5456AKH62MZAY3A,[mnemonic]
BBBBVCHQ7QTMUUFCJAPRJU5RYHNWJQCF2KTC2LQ7HGY6FBDEUL2NEINZE4,[mnemonic]
AAAADJE7TJJI22ED55KMORZ74C3MZM7Y4XDO4HIKHFDRV3G5DA5T7ZJUXI,[mnemonic]
AAAAOQMUYLWDIUFERRDYLDHAASRGEOCS3CJTYM35F3S77WFQICGSSHI5BE,[mnemonic]
BBBBH7EHEHLCZDRUXSBVLFBGESFGKCEEDCVYLEIWMUAGJBFW6WDDKZHO4Q,[mnemonic]
BBBB3BG6L2FNZFQ5E2RI3D6LNIIC2NPI7XU2MJGMBPDKI6TJWURMRPTJ5M,[mnemonic]
BBBBHE7RDUIFEQKQKGZD5KLHI3YBYXDWP42XWWYKQ6VA6A66JHEU57FN6I,[mnemonic]
--- Benchmark Result
Devices: NVIDIA GeForce GTX 950
Total: 2725957 keys, matching: 10, time: 8.52s, avg: 319962 keys/s

(the [mnemonic] above is the 25-word mnemonic phrase for the generated Algorand address but it’s been redacted for security reasons)

What’s the fair ask here (ALGO requested)?

  • 0k
  • 10k
  • 20k
  • 30k
  • 40k
  • 50k
  • 60k
  • 70k
  • 80k
  • 90k
  • 100k
0 voters
1 Like

huge fan of the idea and will deffinitelly be a user of the tool!
Also my specs say i’m ready :slight_smile:

The tool will be provided as a command line utility for systems that can run Python 3.11+ and have OpenCL 3.0 capable NVIDIA GPU

1 Like

Does this proposal include any amount of ongoing maintenance of the software, such as future enhancements and/or reviewing PRs to the repository?

2 Likes

defly works fine for the first 4 digits. do we really need to spell out a sentence in our address or something with this? whats the use case?

1 Like

Yes, it does include a best-effort maintenance for at least 3 months since the release.

Defly is capable of displaying full Algorand addresses. A common use case for vanity addresses is branding / identification.

There has never been a project that I’m aware of that you can associate their project with just wallet address identification. Are you talking about projects that have multiple wallets and uses the same 3-4 characters to begin each? This creates a vulnerability for impersonation imo especially with nfd as an option already.

Maybe show a side-by-side comparison (time lapse) between algovanity and your generator?

2 Likes

I’m not suggesting any specific use cases here as a part of the proposal. It’s really up to you to figure out if and what works the best for you.

This isn’t an alternative to the NFD but a vanity address generator utility and its maintenance what I’m proposing here.

Thank you for the idea with the side-by-side comparison, I’ll put it here in the thread before the voting commences.

2 Likes

Can you edit your post to include all the proposal info here? The idea of this forum is helping people who are not familiar with github to evaluate your proposal.

2 Likes

This tool was created and shared with the community as an open-source repository over a year ago (as shown in the Discord screenshots below). Why is it closed-source now?

Why should the xGov grants program reward a developer who takes a public repository, makes it private, and then asks for funding to re-open it?

2 Likes

It’s basically this - the funds are for reopening the repository and its maintenance. The reason for it being closed source is I’m not publishing it for free anymore.

Do you have any benchmarks across various GPUs? I wrote Algomania [1] a couple yrs ago which still remains the fastest benchmarked vanity address cracker for Algorand that anyone has currently open-sourced at ~1.1M keys/sec, and that was for CPU. Given your current #s up there Algomania is still faster.

Back when I was chasing this game the next logical step was to write a GPU cracker but I had no issues finding 8/9-char vanity tags using Algomania within a couple days. The next step was to port either lisk/nano-vanity [2][3] to Algorand since those are written in Rust + are pre-existing ed25519 vanity gens that already had a decent user base.

Further, I had all sorts of thoughts on creating some cloud vanity cracking service which would involve users generating client-side encryption keys and the service returning them their encrypted mnemonic. But never figured that’d pay off much. I love your idea though (I think I actually recall your Discord launch and wanting to try it but not finding the time). Would love to see how fast this runs on some of the crazier cloud GPU hardware these days.

[1] GitHub - kirse/algomania: The fastest Algorand vanity address generator (for CPUs)
[2] github/webmaster128/lisk-vanity
[3] github/PlasmaPower/nano-vanity

1 Like

Yes, I do have reports of >20M/s on RTX 4080, e.g. https://twitter.com/chrisswenor/status/1615828271022718976.

and my own initial benchmarks on cloud GPUs

— Benchmark Result
Devices: Tesla T4
Total: 3696351582 keys, matching: 100, time: 509.64s, avg: 7252901 keys/s

— Benchmark Result
Devices: NVIDIA L4
Total: 99000000 keys, matching: 100, time: 10.55s, avg: 9382530 keys/s

but those exclude batch size optimizations.

What, if any benefits does your generator have compared to the other vanity address generators that are available? (examples below). Why are those benefits worth the amount requested?

Other vanity generators:

1 Like

@GhostOfMcAfee The answer is simple: SPEED.

1 Like

Hi, all the generators mentioned are CPU-based and the one I’m proposing here is GPU-based. I’ve got some of the benchmarks already here in this topic, see xGov-100 - GPU-based vanity address generator for Algorand - #13 by DragMZ and the proposal itself. So far it’s 10 - 1000x faster than CPU generators, depends on the hardware of course.

As an xgov, It’s up to you to evaluate if the amount requested is worth it and decide. It would be definitely lower if funded directly because of the extra work required to go through the xgov process.

1 Like

@DragMZ What would be the Algo amount with direct funding?

1 Like

I think ~1/2 of the requested amount in terms of man-hours. Just a quick estimate.

Thanks. Have you contemplated a way to integrate this into a web interface, similar to AlgoVanity? Or would that not be practical? I ask because I’m curious whether you could make this monetizable even if the proposal does not pass. For example, would there be a way for people set parameters on a web interface, pay upfront based on the difficulty of the vanity search, and then (and only then) have the search begin.

1 Like

At the moment I have no plans for what to do in case the xgov proposal does not pass. It’s okay with me either way.