{"id":47267818,"url":"https://github.com/qntx/kobe","last_synced_at":"2026-04-07T10:01:09.738Z","repository":{"id":334659726,"uuid":"1128032738","full_name":"qntx/kobe","owner":"qntx","description":"A lightweight, no_std multi-chain HD wallet derivation library in Rust.","archived":false,"fork":false,"pushed_at":"2026-03-31T15:10:45.000Z","size":2130,"stargazers_count":156,"open_issues_count":0,"forks_count":23,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-04-02T05:02:47.000Z","etag":null,"topics":["bitcoin","ethereum","monero","rust","solana","wallet"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/kobe","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/qntx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"gitctrlx","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":"qntx","thanks_dev":null,"custom":null}},"created_at":"2026-01-05T03:19:58.000Z","updated_at":"2026-03-31T15:09:52.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/qntx/kobe","commit_stats":null,"previous_names":["pyroth/kobe","qntx/kobe"],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/qntx/kobe","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qntx%2Fkobe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qntx%2Fkobe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qntx%2Fkobe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qntx%2Fkobe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qntx","download_url":"https://codeload.github.com/qntx/kobe/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qntx%2Fkobe/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31508282,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitcoin","ethereum","monero","rust","solana","wallet"],"created_at":"2026-03-15T07:18:52.536Z","updated_at":"2026-04-07T10:01:09.718Z","avatar_url":"https://github.com/qntx.png","language":"Rust","funding_links":["https://github.com/sponsors/gitctrlx","https://buymeacoffee.com/qntx"],"categories":[],"sub_categories":[],"readme":"\u003c!-- markdownlint-disable MD033 MD041 MD036 --\u003e\n\n# Kobe\n\n[![Crates.io][crates-badge]][crates-url]\n[![Docs.rs][docs-badge]][docs-url]\n[![CI][ci-badge]][ci-url]\n[![License][license-badge]][license-url]\n[![Rust][rust-badge]][rust-url]\n\n[crates-badge]: https://img.shields.io/crates/v/kobe.svg\n[crates-url]: https://crates.io/crates/kobe\n[docs-badge]: https://img.shields.io/docsrs/kobe.svg\n[docs-url]: https://docs.rs/kobe\n[ci-badge]: https://github.com/qntx/kobe/actions/workflows/rust.yml/badge.svg\n[ci-url]: https://github.com/qntx/kobe/actions/workflows/rust.yml\n[license-badge]: https://img.shields.io/badge/license-MIT%2FApache--2.0-blue.svg\n[license-url]: LICENSE-MIT\n[rust-badge]: https://img.shields.io/badge/rust-edition%202024-orange.svg\n[rust-url]: https://doc.rust-lang.org/edition-guide/\n\n**Modular, `no_std`-compatible Rust toolkit for multi-chain HD wallet derivation — 12 chains, one seed, zero hand-written cryptography.**\n\nKobe derives standards-compliant addresses for Aptos, Bitcoin, Ethereum, Solana, Cosmos, Tron, Sui, TON, Filecoin, Spark, and XRP Ledger from a single BIP-39 mnemonic. All library crates compile under `no_std + alloc` and zeroize sensitive material on drop.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"demo.gif\" alt=\"Kobe CLI Demo\"/\u003e\n\u003c/p\u003e\n\n## Quick Start\n\n### Install the CLI\n\n**Shell** (macOS / Linux):\n\n```sh\ncurl -fsSL https://sh.qntx.fun/kobe | sh\n```\n\n**PowerShell** (Windows):\n\n```powershell\nirm https://sh.qntx.fun/kobe/ps | iex\n```\n\nOr via Cargo:\n\n```bash\ncargo install kobe-cli\n```\n\n### CLI Usage\n\n```bash\n# Generate wallets\nkobe btc new                              # Bitcoin (Native SegWit)\nkobe btc new -a taproot -w 24 -c 5        # 5 Taproot addresses, 24 words\nkobe evm new                              # Ethereum (MetaMask-compatible)\nkobe evm new --style ledger-live -c 3     # Ledger Live style, 3 accounts\nkobe svm new                              # Solana (Phantom-compatible)\nkobe cosmos new                           # Cosmos Hub\nkobe aptos new                            # Aptos\nkobe sui new                              # Sui\nkobe ton new                              # TON\n\n# Import from mnemonic\nkobe evm import -m \"abandon abandon ... about\"\n\n# JSON output (for scripts / agents)\nkobe evm new --json\n```\n\n### Library Usage\n\n```rust\nuse kobe::{Wallet, Derive};\nuse kobe::evm::Deriver;  // or kobe::btc, kobe::svm, kobe::cosmos, ...\n\n// Import from mnemonic\nlet wallet = Wallet::from_mnemonic(\n    \"abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about\",\n    None,  // optional passphrase\n)?;\n\n// Derive addresses\nlet eth = kobe::evm::Deriver::new(\u0026wallet).derive(0)?;\nlet btc = kobe::btc::Deriver::new(\u0026wallet, kobe::btc::Network::Mainnet)?.derive(0)?;\nlet sol = kobe::svm::Deriver::new(\u0026wallet).derive(0)?;\n\nprintln!(\"ETH: {}\", eth.address);  // 0x9858EfFD232B4033E47d90003D41EC34EcaEda94\nprintln!(\"BTC: {}\", btc.address);  // bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu\nprintln!(\"SOL: {}\", sol.address);  // HAgk14JpMQLgt6rVgv7cBQFJWFto5Dqxi472uT3DKpqk\n```\n\n```rust\n// Generate new wallet\nlet wallet = Wallet::generate(12, None)?;  // 12-word mnemonic\nprintln!(\"Mnemonic: {}\", wallet.mnemonic());\n```\n\n## Design\n\n- **11 chains** — Aptos, Bitcoin, Ethereum, Solana, Cosmos, Tron, Sui, TON, Filecoin, Spark, XRP Ledger — one BIP-39 seed\n- **HD standards** — BIP-32, BIP-39, BIP-44/49/84/86, SLIP-10\n- **Derivation styles** — Standard, Ledger Live, Ledger Legacy, Trust, Phantom, Backpack\n- **`no_std` + `alloc`** — All library crates compile without `std`; embedded / WASM ready\n- **Zeroizing** — Private keys, seeds, and intermediate material wrapped in `Zeroizing\u003cT\u003e`\n- **Shared infrastructure** — SLIP-10 Ed25519 and BIP-32 secp256k1 derivation in `kobe-primitives`\n- **KAT-verified** — Every chain has Known Answer Tests cross-verified with Python\n- **Strict linting** — Clippy `pedantic` + `nursery` + `correctness` (deny), zero warnings\n\n## Crates\n\nSee **[`crates/README.md`](crates/README.md)** for the full crate table, dependency graph, and feature flag reference.\n\n## Mnemonic Camouflage\n\nThe `camouflage` feature provides entropy-layer XOR encryption that transforms a real BIP-39 mnemonic into a **different but fully valid** BIP-39 mnemonic. The camouflaged mnemonic is indistinguishable from any ordinary mnemonic — it even generates a real (empty) wallet.\n\n**How it works:**\n\n```text\nReal Mnemonic → Entropy (128–256 bit) → XOR(PBKDF2(password)) → New Entropy → Decoy Mnemonic\n```\n\n1. The real mnemonic is decoded into its raw entropy (128, 160, 192, 224, or 256 bits).\n2. A key of matching length is derived from the password via **PBKDF2-HMAC-SHA256** (600,000 iterations).\n3. The entropy is **XORed** with the derived key to produce new entropy.\n4. The new entropy is re-encoded as a valid BIP-39 mnemonic with a correct checksum.\n\nDecryption is the same operation — XOR is its own inverse.\n\n**Supported word counts:** 12, 15, 18, 21, and 24 words.\n\n**Security properties:**\n\n| Property | Detail |\n| --- | --- |\n| **Valid output** | Decoy mnemonic passes all BIP-39 validation and generates a real wallet |\n| **Stateless** | No files, databases, or extra data — just the password |\n| **Deterministic** | Same input + password always produces the same output |\n| **Password-bound** | Security strength equals the password entropy |\n| **Brute-force resistant** | PBKDF2 with 600K iterations (OWASP 2023 recommendation) |\n\n\u003e **Note:** This is _not_ the BIP-39 passphrase (25th word). BIP-39 passphrases alter seed derivation; camouflage alters the mnemonic entropy itself.\n\n### Camouflage Library API\n\n```rust\nuse kobe::camouflage;\n\n// Encrypt (camouflage)\nlet decoy = camouflage::encrypt(\"real mnemonic ...\", \"password\")?;\n\n// Decrypt (recover)\nlet original = camouflage::decrypt(\u0026decoy, \"password\")?;\n```\n\n### Camouflage CLI\n\n```bash\nkobe mnemonic encrypt -m \"abandon abandon ... art\" -p \"strong-password\"\nkobe mnemonic decrypt -c \"decoy abandon ... xyz\"   -p \"strong-password\"\n```\n\n## Security\n\nThis library has **not** been independently audited. Use at your own risk.\n\n- Private keys and seeds use [`zeroize`](https://docs.rs/zeroize) for secure memory cleanup\n- No key material is logged or persisted\n- Random generation uses OS-provided CSPRNG via [`getrandom`](https://docs.rs/getrandom)\n- Secp256k1 contexts are cached to avoid repeated allocations\n- Environment variable manipulation is disallowed at the lint level\n\n## License\n\nLicensed under either of:\n\n- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or \u003chttps://www.apache.org/licenses/LICENSE-2.0\u003e)\n- MIT License ([LICENSE-MIT](LICENSE-MIT) or \u003chttps://opensource.org/licenses/MIT\u003e)\n\nat your option.\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project shall be dual-licensed as above, without any additional terms or conditions.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\nA **[QNTX](https://qntx.fun)** open-source project.\n\n\u003ca href=\"https://qntx.fun\"\u003e\u003cimg alt=\"QNTX\" width=\"369\" src=\"https://raw.githubusercontent.com/qntx/.github/main/profile/qntx-banner.svg\" /\u003e\u003c/a\u003e\n\n\u003c!--prettier-ignore--\u003e\nCode is law. We write both.\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqntx%2Fkobe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqntx%2Fkobe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqntx%2Fkobe/lists"}