emeraldpay
emerald-vault
Rust

Secure account management for Ethereum blockchains

Last updated Feb 21, 2026
58
Stars
18
Forks
12
Issues
0
Stars/day
Attention Score
72
Language breakdown
Rust 100.0%
Files click to expand
README

= Emerald Vault - Key Storage for Emerald Wallet

image:https://github.com/emeraldpay/emerald-vault/workflows/Test/badge.svg["Test"] image:https://coveralls.io/repos/github/emeraldpay/emerald-vault/badge.svg["Coveralls",link=https://coveralls.io/github/emeraldpay/emerald-vault] image:https://codecov.io/gh/emeraldpay/emeraldpay/branch/master/graph/badge.svg[Codecov,link=https://codecov.io/gh/emeraldpay/emerald-vault] image:https://img.shields.io/crates/v/emerald-vault.svg?style=flat-square["Crates",link="https://crates.io/crates/emerald-vault"] image:https://img.shields.io/badge/License-Apache%202.0-blue.svg["License"]

Rust library to store, access and operate cryptocurrency Private Keys, part of https://emerald.cash[Emerald Wallet].

== Architecture and Features

=== Features

  • Supports Ethereum-based keys
  • JSON-based WEB3 keys (Import/Export)
  • Raw private keys (Generate/Import/Export, Export as WEB3 JSON)
  • HDPath on a Seed
  • Mnemonic based seed (Generate/Import)
  • Ledger Nano based seed
  • Sign transaction
=== Architecture
  • File based storage, with random UUID identifiers
  • b6923a7f-033f-4370-8861-2621871aeeec.wallet
  • 130d0800-462c-4c48-8b4a-94cef23351a2.key
  • 7dc9347a-5ef0-4dc3-bae1-d75d20b1259c.seed
  • Data is encoded with protobuf (see proto/)
  • .wallet is general container for different types of addresses (entries).
Vault can have multiple wallets.
  • .key is an encrypted Private Key used by a wallet entry.
Can have multiple.
  • .seed is a reference to a Hardware Key, or encrypted Seed bytes.
Can have multiple.
  • addressbook.csv is an Address Book of recipient addresses (DEPRECATED)
  • .png a custom image for the wallet or other entry.
.Storage directory:
  • Windows: C:\Users\<UserName>\AppData\Roaming\cash.emerald.Wallet\vault
  • OSX: ~/Library/Application Support/cash.emerald.Wallet/vault
  • Linux: ~/.local/share/cash.emerald.Wallet/vault
== Development

Ensure you have these dependencies installed:

[source]


openssl pkgconfig rustc cargo clang

cargo and rustc should be at least versions 0.31 and 1.31 respectively.

Should your distribution or operating system not have a recent cargo and rustc binaries, you can install them from http://doc.crates.io/

Install Protobuf codegen for Rust: https://github.com/stepancheg/rust-protobuf/tree/master/protobuf-codegen

.Generate Rust code from Protobuf


protoc --rustout=src/proto --protopath=./proto address.proto protoc --rustout=src/proto --protopath=./proto book.proto protoc --rustout=src/proto --protopath=./proto common.proto protoc --rustout=src/proto --protopath=./proto crypto.proto protoc --rustout=src/proto --protopath=./proto pk.proto protoc --rustout=src/proto --protopath=./proto seed.proto protoc --rustout=src/proto --protopath=./proto wallet.proto

[source]


cargo build

== License

Copyright 2025 EmeraldPay Ltd

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

© 2026 GitRepoTrend · emeraldpay/emerald-vault · Updated daily from GitHub