simonbetton/easydoge-km

GitHub: simonbetton/easydoge-km

面向 Dogecoin 的生产级跨平台密钥管理 SDK,基于 Rust 核心并通过 UniFFI 提供 Swift、Kotlin、Expo 原生绑定及 CLI/TUI,覆盖从助记词生成到多重签名的完整密钥派生与管理流程。

Stars: 0 | Forks: 0

# EasyDoge KM 用于自托管产品的生产级 Dogecoin 密钥管理 SDK。 EasyDoge KM 提供了一个规范的 Rust 实现、原生的 Swift 和 Kotlin 绑定、一个 Expo React Native 桥接,以及一个工程师 CLI/TUI。该项目围绕确定性校验向量构建,从而使后端、iOS、Android、Expo、CLI 和 TUI 界面保持一致。 ## 工作区 - `crates/easydoge-km`: Rust 核心 SDK。 - `crates/easydoge-km-cli`: 可脚本化的 CLI 和 Ratatui TUI。 - `crates/easydoge-km-ffi`: 移动端绑定使用的 UniFFI 包装器。 - `bindings/`: Swift、Kotlin、生成的 UniFFI 以及 Expo 包接口。 - `docs/`: API、CLI/TUI、安全模型、发布和架构文档。 - `scripts/`: 验证、绑定生成和发布产物辅助工具。 - `test-vectors/`: 被所有公共接口使用的共享校验向量。 ## 功能特性 - BIP39 助记词生成、验证和种子十六进制推导。 - 带有 Dogecoin 原生扩展密钥前缀的 Dogecoin BIP44 账户 xpriv/xpub 推导。 - 用于仅监视账户/地址工作流 的非强化 xpub 推导。 - xpriv 路径推导、xpriv 到 xpub 的转换、WIF 导出/导入和地址验证。 - P2PKH 消息签名/验证和交易签名封装。 - 确定性 P2SH 多重签名描述符以及签名/组合/终结 CLI 流程。 - 从同一个 Rust 实现生成的 Rust、Swift、Kotlin 和 Expo API,实现 1:1 的功能对等。 - 为希望通过终端访问 Rust 实现的工程师提供的 Ratatui CLI/TUI。 ## 系统要求 - 来自 `rust-toolchain.toml` 的 Rust stable 版本 - Swift 6 或更高版本,用于 Swift 包验证 - JDK 17,用于 Android/Kotlin 验证 - Node.js 20 或更高版本,用于 Expo TypeScript 验证 - Xcode,用于 Apple 发布产物 - Android SDK 和 `cargo-ndk`,用于 Android 原生发布产物 ## 快速开始 运行完整的验证套件: ``` ./scripts/verify.sh ``` 在不显示短语的情况下生成助记词: ``` cargo run -p easydoge-km-cli -- mnemonic generate ``` 启动 TUI: ``` cargo run -p easydoge-km-cli -- tui ``` 从一个已知的测试助记词推导账户密钥集: ``` cargo run -p easydoge-km-cli -- xpriv from-mnemonic \ --phrase "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about" \ --passphrase TREZOR \ --network mainnet \ --account 0 \ --reveal ``` ## API 接口 - Rust 后端服务直接使用 `easydoge-km` crate。 - iOS 应用使用 `bindings/swift` 下的 Swift 包。 - Android 应用使用 `bindings/kotlin` 下的 Kotlin 包。 - Expo 应用在自定义开发客户端 或 EAS 构建中使用 `bindings/expo` 下的 Expo Modules API 包。 - 工程师可以使用 `crates/easydoge-km-cli` 中的 CLI 二进制文件和 Ratatui TUI。 有关校验表和示例,请参见 [docs/API.md](docs/API.md);有关 CLI/TUI 的用法,请参见 [docs/CLI.md](docs/CLI.md)。 ## 安全边界 SDK 从种子短语和可选的密码 推导密钥。它无法从 xpriv 恢复原始的 BIP39 种子短语或 BIP39 种子;BIP32 推导被故意设计为单向的。从 xpriv 开始的 API 只推导子密钥、xpub、WIF、地址和签名。 Rust 核心不提供托管存储。平台包包含存储适配器,但应用程序仍需负责身份验证策略、备份用户体验、恢复流程以及设备受损假设。 请参见 [docs/SECURITY_MODEL.md](docs/SECURITY_MODEL.md) 和 [SECURITY.md](SECURITY.md)。 ## 验证 `./scripts/verify.sh` 运行: - 开源就绪检查 - Shell 语法检查 - `cargo fmt --all --check` - Rust 工作区测试 - Clippy 以警告作为错误处理 - Rust 工作区构建 - Rust 文档构建 - UniFFI Swift 和 Kotlin 绑定生成 - Swift 包测试 - Expo TypeScript 检查 - Android/Kotlin Gradle 测试 ## 发布 发布步骤记录在 [docs/RELEASE.md](docs/RELEASE.md) 中。原生产物辅助工具位于: - `scripts/build-apple-xcframework.sh` - `scripts/build-android-native-libs.sh` - `scripts/package-release.sh` ## 贡献 欢迎贡献。请阅读 [CONTRIBUTING.md](CONTRIBUTING.md),对行为更改遵循 TDD(测试驱动开发),并保持所有公共接口一致。 ## 许可证 MIT 许可证 ([LICENSE-MIT](LICENSE-MIT))。
标签:Android开发, BIP39, BIP44, CLI, CVE, Expo, iOS开发, IP 地址批量处理, Kotlin, P2PKH, React Native, Rust, Swift, TUI, UniFFI, Web3, WiFi技术, 加密货币, 助记词, 区块链, 去中心化, 可视化界面, 多重签名, 密码学, 手动系统调用, 数字签名, 狗狗币, 确定性钱包, 移动开发, 网络流量审计, 自托管, 通知系统