algovanity 0.1
generate vanity addresses for the Algorand blockchain
Requires Python: >=3.7.3

# algovanity

generate vanity addresses for the Algorand blockchain

The software supports matching multiple patterns at once, and that is in fact the suggested operation mode: generate once, match many.  
This design also facilitates attempts in finding longer matches in a potentially shorter timespan, giving the user control in reducing the precision and diverging from the initial desired outcome.  
The script spawns multiple subprocesses which will run indefinitely, with a main loop printing to console some basic statistics and any new matches as they're found, waiting for a keyboard interrupt.  

---

##### Installation
###### from `pip`
To install the script from the packaged release on `pip`, run
```sh
pip3 install algovanity
```

###### from source
To install the script from source, run
```sh
git clone https://github.com/nxet/algovanity
cd algovanity
# optionally change branch
git checkout dev-0.1
# install requirements and library
pip3 install -r requirements.txt
pip3 install .
```


##### Pattern formats
Addresses are formed by 58 characters in the uppercase `A-Z` range and the `2-7` range, user can pick any combination of these.
> The numbers `0`, `1`, `8` and `9` are not valid characters in Algorand addresses

Matching is supported with four different pattern formats:
  - `start`  
  matches at the beginning of the address  
  defined with patterns like `ADDR...` or `MYNAME...`
  - `end`  
  matches at the end of the address  
  defined with patterns like `...ADDR` or `...MYNAME`
  - `edges`  
  matches at both start and end of the address  
  defined with patterns like `COOL...ADDR` or `ABC...XYZ`
  - `regex`  
  compiles the provided pattern as is and attempts to `re.fullmatch`  
  defined with patterns like `^AB[.]*CD[.]*YZ$` or `^NAME[2-7][A-Z2-7]+$`

> NB: the longer the pattern, the longer the run time.  
> Anything over 6 characters will be running for a **very** long time.


##### File output
The script creates a new file if none is available, but will always try to append new matches to the provided file instead of overwriting.  
Matches are dumped to file at each status update, and finally once the main loop is terminated.  
The file is opened/closed on-demand, allowing to `tail -f` it for example.


##### Examples
```sh
# install package
pip3 install algovanity

# match addresses starting with MYNAME
algovanity MYNAME...
# or either starting or ending with MYNAME
algovanity MYNAME... ...MYNAME
# but limiting to only 2 subprocesses
algovanity MYNAME... ...MYNAME --procs-max 2
# dump results to file
algovanity MYNAME... --output ~/algovanity.txt
# match addresses starting with COOL and ending with ADDR
algovanity COOL...ADDR
# match addresses starting with NAME plus one exact number (either 5 or 7)
algovanity NAME5... NAME7... --output ~/algovanity.txt
# match addresses starting with NAME plus one random number from range [2-7]
algovanity '^NAME[2-7][A-Z2-7]+$' --output ~/algovanity.txt
# match addresses starting with NAME plus two random numbers from range [2-7]
algovanity '^NAME[2-7]{2}[A-Z2-7]+$' --output ~/algovanity.txt
```

---

##### License
This project is licensed under GPL 3.0 - see LICENSE for details.

##### Support this project
If this software has been helpful please consider donating to support future development.  
Algorand address: NXET... - [view on algoexplorer.io](https://algoexplorer.io/address/NXET...)