repositories
loading repo index
repositories
loading repo index
repository
loading code, commits, and activity
public Clawd ADK gateway launch mirror
stars
latest
clone command
git clone gitlawb://did:key:z6Mkq5mY...iFZ5/my-project-publ...git clone gitlawb://did:key:z6Mkq5mY.../my-project-publ...2fa351d6docs: add automaton and perps launch sources16d ago| #1 | { |
| #2 | "skillId": "pump-rust-vanity", |
| #3 | "name": "pump-rust-vanity", |
| #4 | "description": "Production-grade multi-threaded Rust vanity address generator for Solana — 100K+ keys/sec using Rayon parallel iterators with solana-sdk, Base58 pattern matching, prefix/suffix support, security-hardened file output, and Criterion benchmarks.", |
| #5 | "category": "pump-protocol", |
| #6 | "path": "pump-rust-vanity/SKILL.md", |
| #7 | "url": "https://x402.wtf/api/skills/pump-rust-vanity", |
| #8 | "tags": [ |
| #9 | "pump", |
| #10 | "solana", |
| #11 | "rust", |
| #12 | "vanity" |
| #13 | ], |
| #14 | "requiredEnv": [], |
| #15 | "homepage": "https://github.com/nirholas/pump-fun-sdk", |
| #16 | "attestation": { |
| #17 | "status": "pending", |
| #18 | "isFormallyVerified": false, |
| #19 | "attestationPda": null, |
| #20 | "verificationTimestamp": null |
| #21 | }, |
| #22 | "markdown": "---\nname: pump-rust-vanity\ndescription: \"Production-grade multi-threaded Rust vanity address generator for Solana — 100K+ keys/sec using Rayon parallel iterators with solana-sdk, Base58 pattern matching, prefix/suffix support, security-hardened file output, and Criterion benchmarks.\"\nmetadata:\n openclaw:\n homepage: https://github.com/nirholas/pump-fun-sdk\n requires:\n bins:\n - cargo\n---\n\n# Rust Vanity Generator — High-Performance Solana Address Mining\n\nProduction-grade Rust binary achieving 100K+ keys/sec using Rayon parallel iterators with security-hardened file output and Solana CLI compatibility.\n\n## Architecture\n\n```\nCLI Args ──► VanityConfig ──► VanityGenerator\n │\n Rayon par_iter\n ┌─────┼─────┐\n Thread Thread Thread ...\n │ │ │\n Keypair::new() per iteration\n │ │ │\n Base58 encode + match\n │ │ │\n └─────┼─────┘\n │\n AtomicBool found\n │\n SecureOutput (0o600)\n```\n\n## CLI Arguments\n\n| Argument | Description |\n|----------|-------------|\n| `--prefix` | Required Base58 prefix to match |\n| `--suffix` | Optional Base58 suffix |\n| `--output` | Output file path (default: stdout) |\n| `--threads` | Number of threads (default: all CPUs) |\n\n## Core Types\n\n```rust\nstruct VanityConfig {\n prefix: String,\n suffix: Option<String>,\n output: Option<PathBuf>,\n threads: Option<usize>,\n}\n\nstruct GeneratedAddress {\n keypair: Keypair,\n address: String,\n attempts: u64,\n}\n```\n\n## Generation Engine\n\n```rust\nfn generate(config: &VanityConfig) -> Result<GeneratedAddress> {\n let found = AtomicBool::new(false);\n let result = (0..num_cpus::get())\n .into_par_iter()\n .find_map_any(|_| {\n let mut attempts = 0u64;\n loop {\n if found.load(Ordering::Relaxed) { return None; }\n attempts += 1;\n let keypair = Keypair::new();\n let address = keypair.pubkey().to_string();\n if matches_pattern(&address, &config) {\n found.store(true, Ordering::Relaxed);\n return Some(GeneratedAddress { keypair, address, attempts });\n }\n }\n });\n result.ok_or_else(|| anyhow!(\"No match found\"))\n}\n```\n\n## Security Features\n\n| Feature | Implementation |\n|---------|---------------|\n| CSPRNG | `OsRng` via `solana-sdk` |\n| Memory cleanup | `Zeroize` trait on secret key bytes |\n| File permissions | `0o600` via `std::fs::set_permissions` |\n| No network | Pure offline operation |\n\n## Dependencies\n\n| Crate | Purpose |\n|-------|---------|\n| `solana-sdk` | Keypair generation, Base58, signing |\n| `rayon` | Data-parallel iteration |\n| `clap` | CLI argument parsing |\n| `anyhow` | Error handling |\n| `criterion` | Benchmarking |\n\n## Testing\n\n```bash\ncargo test # Unit + integration tests\ncargo test --test security_tests # Security-focused tests\ncargo bench # Criterion benchmarks\n```\n\n## Patterns to Follow\n\n- Only use `solana-sdk` for cryptographic operations\n- Use `Zeroize` on all key material\n- Set file permissions to `0o600` immediately after writing\n- Use `AtomicBool` for cross-thread termination signaling\n- Use `find_map_any` for early termination on first match\n\n## Common Pitfalls\n\n- Base58 is case-sensitive — `pump` ≠ `Pump`\n- Longer prefixes grow exponentially harder (~58× per character)\n- `Keypair::new()` uses OS entropy — do not seed with user input\n- `rayon` thread pool size should match CPU cores for optimal throughput\n\n" |
| #23 | } |
| #24 |