**Deprecation Notice: This project is no longer maintained.**
## Requirements
- Cargo 1.62.0 or higher (https://doc.rust-lang.org/cargo/getting-started/installation.html)
- OpenSSL (https://www.openssl.org/source/)
## Installation
### Using cargo
You can install solwalrs using cargo (recommended):
```bash
cargo install solwalrs
```
After installing, you can run solwalrs using `solwalrs` command. If you get an error, make sure that your `PATH` environment variable contains the directory where cargo installs binaries. You can find the binary directory here:
`$HOME/.cargo/bin`
### Building from source
```bash
git clone https://github.com/TheAwiteb/solwalrs.git
cd solwalrs
cargo build --release
```
After building, the binary will be located at `target/release/solwalrs`, you can copy it to your `PATH` or run it directly from the `target/release` directory.
## Usage
```bash
A simple and easy to use CLI Solana wallet
Usage: solwalrs [OPTIONS] [COMMAND]
Commands:
keypair Commands for managing a keypair [aliases: kp]
new Generate a new keypair [aliases: n]
list List all keypairs [aliases: ls]
import Import new keypair by private key or secret key (input prompt) [aliases: i]
completions Generate shell completions [aliases: cp]
clean Clean the wallet. This will remove all the keypairs from the wallet
price Get the price of a token/SOL in USDT [aliases: p]
help Print this message or the help of the given subcommand(s)
Options:
--app-file The path to the app file
-v, --verbose Verbose mode, for debugging
--rpc RPC URL, default is `https://api.mainnet-beta.solana.com` [default: https://api.mainnet-beta.solana.com]
-h, --help Print help information (use `--help` for more detail)
-V, --version Print version information
```
> Use `solwalrs help ` to get more information about a command. For example, `solwalrs help keypair`
## Auto completion
You can enable auto completion for bash, fish, powershell and zsh.
For Bash, move `solwalrs.bash` to `$XDG_CONFIG_HOME/bash_completion` or
`/etc/bash_completion.d/`.
For Fish, move `solwalrs.fish` to `$HOME/.config/fish/completions/`.
For the Z shell, move `_solwalrs` to one of your `$fpath` directories.
For PowerShell, add `. _solwalrs.ps1` to your PowerShell
[profile](https://technet.microsoft.com/en-us/library/bb613488(v=vs.85).aspx)
(note the leading period). If the `_solwalrs.ps1` file is not on your `PATH`, do
`. /path/to/_solwalrs.ps1` instead.
To generate Solwalrs completions, run `solwalrs completions > `.
## Features
- Supports multiple keypairs
- Possibility to mark some keypair as default keypair
- Create a new keypair
- View your keypairs
- Delete your keypair
- Import a keypair from a private key and secret key (base58 encoded or array of bytes)
- Qr code generator for your public key, export to image or print to console
- Clean the app file (remove all keypairs)
- Auto completion for bash, elvish, fish, powershell and zsh
- Supports changing the RPC URL
- Supports SPL tokens
- View your SOL/SPL balance and its value in USDT
- Airdrop SOL
- Get the price of SPL/SOL
- Caching the price of SPL/SOL, every 5 minutes the price will be updated
## Adding a new SPL token
Please open an issue and I will add it to the next release. You can also add it yourself by following these steps:
1. Open the `src/wallet/spl.rs` file
2. Add the SPL to `Tokens` enum
3. Add the mint address to `mint_address` instance function
4. Add the lamports per token to `lamports_per_token` instance function (if it's not 6 decimals)
5. Open a pull request, I will review it and merge it
> Note the SPL token must be popular to be added to the wallet
## Our goals (roadmap)
You can see our goals in this issue: [#1](https://github.com/TheAwiteb/solwalrs/issues/1)
## Safety
Solwalrs stores your private key in a file called `solwalrs.json`[1]. This file is encrypted using Fernet (symmetric encryption) by [fernet](https://crates.io/crates/fernet) crate. The encryption key is derived from a password that you provide. The password is never stored anywhere. If you lose your password, you will lose access to your wallet. Use a password manager to generate a strong password and store it somewhere safe.
[1] The file path will printed to the console when you create a new keypair, you can change the file path by setting the `--app-file` flag. For example, `solwalrs --app-file /path/to/file keypair new testwalletname`
## Security
If you discover a security vulnerability within this project, please send me an email at [Awiteb@hotmail.com](mailto:awiteb@hotmail.com) or through the telegram [@TheAwiteb](https://t.me/TheAwiteb). All security vulnerabilities will be promptly addressed.
## Images
| Create a new keypair | View your keypairs |
|:---:|:---:|
| ![Create a new keypair](https://i.suar.me/A8YlV/l) | ![View your keypairs](https://i.suar.me/yMm47/l)
| Qr code image | Qr code console |
| ![Qr code image](https://i.suar.me/8aWrE/l) | ![Qr code console](https://i.suar.me/j91my/l)
## Tested on
- Pop!_OS 21.04
- Android Termux (arm64)
## License
This project is licensed under the terms of the GNU General Public License v3.0. See
for more details.
## Contributors
Thanks for all the contributors who helped make this project better!