| name | pump-shell-scripts |
| description | Production-quality Bash scripts for Solana vanity generation, keypair verification, batch operations, dependency auditing, and test orchestration — with security-hardened patterns including file permissions, input validation, and cleanup traps. |
| metadata | {"openclaw":{"homepage":"https://github.com/8bitsats/pump-fun-sdk","requires":{"bins":["bash","solana-keygen"]}}} |
Shell Scripting & CLI Tools — Production Bash Scripts
Production-quality Bash scripts for vanity generation, keypair verification, batch operations, dependency auditing, and test orchestration with security-hardened patterns.
Scripts Overview
| Script | Purpose |
|---|
scripts/utils.sh | Shared library (colors, logging, validation, cleanup) |
scripts/generate-vanity.sh | Vanity address generation via solana-keygen |
scripts/batch-generate.sh | Parallel batch generation |
scripts/verify-keypair.sh | 7-point keypair verification |
scripts/test-rust.sh | 10-step Rust test orchestration |
tools/audit-dependencies.sh | Dependency security audit |
tools/check-file-permissions.sh | File permission validation |
tools/verify-keypair.ts | TypeScript 9-point verifier |
Keypair Verification (7 Points)
verify_keypair() {
}
Security Patterns
trap 'cleanup_temp_files' EXIT ERR INT TERM
chmod 600 "$keypair_file"
validate_base58() {
[[ "$1" =~ ^[1-9A-HJ-NP-Za-km-z]+$ ]] || die "Invalid Base58"
}
Makefile Integration
| Target | Description |
|---|
make test-rust | Run Rust test suite |
make bench | Run Criterion benchmarks |
make generate | Generate a vanity address |
make verify | Verify a keypair file |
make audit | Audit dependencies |
Patterns to Follow
- Source
scripts/utils.sh in all scripts for shared utilities
- Use
set -euo pipefail at the top of every script
- Quote all variable expansions:
"$var" not $var
- Use
trap for cleanup of temporary files
- Validate all user input (Base58, paths, integers)
- Set
chmod 600 on any keypair file immediately after creation
Common Pitfalls
solana-keygen verify expects the address as the first argument, not the file
shred is not available on all systems — check with command -v
mktemp patterns differ between macOS and Linux
read -r is essential to prevent backslash interpretation
- Always use
[[ ]] over [ ] for conditionals