docs | ||
evm_client | ||
kvstore | ||
vault | ||
.gitignore | ||
Cargo.toml | ||
README.md |
Modular Rust System: Key-Value Store, Vault, and EVM Client
This repository implements a modular, async, and cross-platform cryptographic stack in Rust. It is designed for use in both native (desktop/server) and WASM (browser) environments, supporting secure storage, cryptographic operations, and EVM (Ethereum) client functionality.
Crate Overview
- kvstore/: Async key-value store trait and implementations (native:
sled
, WASM: IndexedDB). - vault/: Cryptographic vault for managing encrypted keyspaces and key operations. Uses
kvstore
for persistence. - evm_client/: EVM RPC client, integrates with
vault
for signing and secure key management. - cli_app/: (Planned) Command-line interface for scripting and automation.
- web_app/: (Planned) WASM web app exposing the same APIs to JavaScript or browser scripting.
Architecture Highlights
- Async everywhere: All APIs are async and runtime-agnostic.
- Conditional backends: Uses Cargo features and
cfg
to select the appropriate backend for each environment. - Secure by design: Vault encrypts all key material at rest and leverages modern cryptography.
- Tested natively and in browser: WASM and native backends are both covered by tests.
Building and Testing
Prerequisites
- Rust (latest stable recommended)
- For WASM:
wasm-pack
, Firefox or Chrome (for browser tests)
Native
cargo check --workspace --features kvstore/native
WASM (kvstore only)
cd kvstore
wasm-pack test --headless --firefox --features web
Directory Structure
.
├── kvstore/ # Key-value store trait and backends
├── vault/ # Cryptographic vault
├── evm_client/ # EVM RPC client
├── cli_app/ # CLI (planned)
├── web_app/ # Web app (planned)
├── docs/ # Architecture docs
└── README.md
Roadmap
- Unified async trait for key-value storage
- Native and WASM backends for kvstore
- Cryptographic vault with password-protected keyspace
- EVM client with vault integration
- CLI and web app targets
- Full end-to-end integration
License
MIT OR Apache-2.0