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技术, 加密货币, 助记词, 区块链, 去中心化, 可视化界面, 多重签名, 密码学, 手动系统调用, 数字签名, 狗狗币, 确定性钱包, 移动开发, 网络流量审计, 自托管, 通知系统