https://github.com/emeraldpay/emerald-vault
Secure account management for Ethereum blockchains
https://github.com/emeraldpay/emerald-vault
blockchain ethereum private-key rust
Last synced: 7 months ago
JSON representation
Secure account management for Ethereum blockchains
- Host: GitHub
- URL: https://github.com/emeraldpay/emerald-vault
- Owner: emeraldpay
- License: apache-2.0
- Created: 2017-02-23T14:15:04.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2024-04-23T21:44:20.000Z (about 2 years ago)
- Last Synced: 2024-12-30T12:03:01.702Z (over 1 year ago)
- Topics: blockchain, ethereum, private-key, rust
- Language: Rust
- Homepage: https://emerald.cash
- Size: 2.39 MB
- Stars: 55
- Watchers: 14
- Forks: 25
- Open Issues: 12
-
Metadata Files:
- Readme: README.adoc
- License: LICENSE
Awesome Lists containing this project
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"]
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: `%APPDATA%\.emerald\vault`
* OSX: `~/Library/Emerald/vault`
* Linux: `~/.emerald/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 --rust_out=src/proto --proto_path=./proto address.proto
protoc --rust_out=src/proto --proto_path=./proto book.proto
protoc --rust_out=src/proto --proto_path=./proto common.proto
protoc --rust_out=src/proto --proto_path=./proto crypto.proto
protoc --rust_out=src/proto --proto_path=./proto pk.proto
protoc --rust_out=src/proto --proto_path=./proto seed.proto
protoc --rust_out=src/proto --proto_path=./proto wallet.proto
----
[source]
----
cargo build
----
== Contact
image:https://badges.gitter.im/emeraldpay/community.svg?style=flat-square["Gitter",link="https://gitter.im/emeraldpay/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge"]
Chat with us via https://gitter.im/emeraldpay/community[Gitter]
== License
Copyright 2024 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.