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-solana-wallet", |
| #3 | "name": "pump-solana-wallet", |
| #4 | "description": "Secure Solana wallet generation using official Solana Labs libraries — Ed25519 keypairs, memory zeroization, vanity address generation, offline-only operation, and multi-language implementations (Rust, TypeScript, Bash).", |
| #5 | "category": "wallet", |
| #6 | "path": "pump-solana-wallet/SKILL.md", |
| #7 | "url": "https://x402.wtf/api/skills/pump-solana-wallet", |
| #8 | "tags": [ |
| #9 | "pump", |
| #10 | "solana", |
| #11 | "wallet" |
| #12 | ], |
| #13 | "requiredEnv": [], |
| #14 | "homepage": "https://github.com/nirholas/pump-fun-sdk", |
| #15 | "attestation": { |
| #16 | "status": "pending", |
| #17 | "isFormallyVerified": false, |
| #18 | "attestationPda": null, |
| #19 | "verificationTimestamp": null |
| #20 | }, |
| #21 | "markdown": "---\nname: pump-solana-wallet\ndescription: \"Secure Solana wallet generation using official Solana Labs libraries — Ed25519 keypairs, memory zeroization, vanity address generation, offline-only operation, and multi-language implementations (Rust, TypeScript, Bash).\"\nmetadata:\n openclaw:\n homepage: https://github.com/nirholas/pump-fun-sdk\n requires:\n bins:\n - solana-keygen\n---\n\n# Solana Wallet — Key Generation & Security\n\nSecure Solana wallet generation using official Solana Labs libraries with Ed25519 keys, memory zeroization, and offline-only operation. Three implementations: Rust (production), TypeScript (educational), and Bash (wrappers).\n\n## Approved Crypto Libraries\n\n| Context | Library | Role |\n|---------|---------|------|\n| Rust | `solana-sdk` | `Keypair::new()`, `Signer` trait, Base58 encoding |\n| TypeScript | `@solana/web3.js` | `Keypair.generate()`, `Keypair.fromSecretKey()` |\n| Shell | `solana-keygen` | `grind` (vanity), `new` (random), `verify` |\n| MCP Server | `@solana/web3.js` | Session keypair management in `SolanaWalletMCPServer` |\n\n## Address Format\n\n- 32-byte Ed25519 public key encoded as Base58\n- Length: 32–44 characters (typically 43–44)\n- Case-sensitive alphabet: `123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz`\n\n## Vanity Address Difficulty\n\n| Prefix Length | Expected Attempts | Time (100K/sec) |\n|---------------|-------------------|-----------------|\n| 1 char | ~58 | < 1 sec |\n| 2 chars | ~3,364 | < 1 sec |\n| 3 chars | ~195,112 | ~2 sec |\n| 4 chars | ~11.3M | ~2 min |\n| 5 chars | ~656M | ~2 hours |\n\n## Security Model (6 Defense Layers)\n\n1. **CSPRNG only** — `OsRng` (Rust), `crypto.getRandomValues` (Node.js)\n2. **Official libraries** — No third-party crypto\n3. **Memory zeroization** — `Zeroize` trait (Rust), `buffer.fill(0)` (TypeScript)\n4. **File permissions** — `0o600` owner-only\n5. **Offline operation** — No network calls during key generation\n6. **Post-generation verification** — Re-derive public key from secret and compare\n\n## Memory Zeroization by Language\n\n| Language | Mechanism |\n|----------|-----------|\n| Rust | `Zeroize` trait + `Drop` impl, `zeroize_on_drop` |\n| TypeScript | `secretKey.fill(0)` + `Buffer.alloc(0)` (best-effort, GC may relocate) |\n| Shell | `shred -u` or `rm -P` for file cleanup |\n\n## Patterns to Follow\n\n- ONLY use `solana-sdk`, `@solana/web3.js`, or `solana-keygen` for crypto operations\n- Zero all key material as soon as it is no longer needed\n- Set file permissions to `0o600` immediately after writing keypair files\n- Never make network calls during key generation\n- Verify every generated keypair: re-derive public key from secret and compare\n\n## Common Pitfalls\n\n- JavaScript GC may copy/relocate buffers — `fill(0)` is best-effort, not guaranteed\n- `solana-keygen` output is [u8; 64] JSON array (32-byte secret + 32-byte public)\n- Base58 is NOT the same as Base64 — Solana uses a specific alphabet without `0OIl`\n- Vanity matching must use raw Base58 — case-sensitive, no regex anchoring errors\n\n" |
| #22 | } |
| #23 |