https://github.com/rossbates/rummage
Rummage is a GPU accelerated npub miner for Nostr
https://github.com/rossbates/rummage
cuda identity mining nostr
Last synced: about 1 month ago
JSON representation
Rummage is a GPU accelerated npub miner for Nostr
- Host: GitHub
- URL: https://github.com/rossbates/rummage
- Owner: rossbates
- License: mit
- Created: 2025-11-15T17:47:49.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2025-11-15T20:34:02.000Z (7 months ago)
- Last Synced: 2025-11-15T20:34:50.402Z (7 months ago)
- Topics: cuda, identity, mining, nostr
- Language: C++
- Homepage:
- Size: 112 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Rummage
Rummage is a high-performance Nostr vanity address miner that searches the secp256k1 keyspace to generate custom prefixes or suffixes in either Bech32 npub format or raw hex. It supports both random sampling and exhaustive sequential search modes.
It's built for NVIDIA GPUs using CUDA and can sustain 42M+ keys/second on a consumer card (RTX 3070, Ampere architecture) and 170M+ keys/second on a datacenter card (H200, Hopper architecture).
There is also an experimental build for Apple Silicon in the Metal branch. This is a ground-up implementation in Metal Shading Language, as no existing secp256k1 libraries are available for Metal. Currently it can do about 9M+ keys/second on a 2021 M1.
## Requirements
- NVIDIA GPU with CUDA support
- CUDA Toolkit 11.8+
- GMP library
- g++ compiler
## Installation
```bash
make
```
If you need to configure for a different GPU or CUDA version, see [docs/BUILD.md](docs/BUILD.md).
## Usage
Search for npub prefix:
```bash
./rummage --npub-prefix alice
```
Search for hex prefix:
```bash
./rummage --prefix cafe
```
Sequential exhaustive search (resumable):
```bash
./rummage --npub-prefix satoshi --sequential
```
To learn more about how search modes work in Rummage, see [docs/SEARCH.md](docs/SEARCH.md).
## Options
**Bech32 Mode** (searches npub address):
- `--npub-prefix ` - Search for prefix in npub
- `--npub-suffix ` - Search for suffix in npub
- `--npub-both ` - Search for both prefix and suffix
**Hex Mode** (searches raw public key):
- `--prefix ` - Search for hex prefix
- `--suffix ` - Search for hex suffix
- `--both ` - Search for both prefix and suffix
**Search Modes**:
- `--sequential` - Exhaustive search (resumable, guarantees completion)
- `--checkpoint ` - Checkpoint file path (default: checkpoint.txt)
By default, random search mode is used (faster for short patterns).
## Output
Found keys are saved to `keys.txt` with private key, public key, and npub address.
## What is Nostr?
Perhaps you stumbled upon this project and have no idea what on earth is going on here.
Quick explanation: Nostr is a decentralized protocol where your identity is a cryptographic key pair, not an account on someone else's server. Your npub (public key) is your permanent identifier across the network. Think of it like a username that no company can take away, suspend, or ban.
Unlike traditional platforms where @yourname can disappear if the service shuts down or decides they don't like you, your Nostr identity is yours forever. A vanity npub is not necessary, but it lets you claim something readable and memorable (like npub1alice...) instead of a random string. It's a little nerdy, but suitable for those who perk up when they hear terms like sovereign identity.
An npub is not just an identifier, it's how you log in to a growing number of apps in the Nostr ecosystem. Think "Sign in with Google," except there is no Google. Just you and the math.