## Table of Contents * [1. Overview](#1-overview) * [2. Build Guide](#2-build-guide) * [2.1 Install Rust](#21-install-rust) * [2.2a Build from Homebrew](#22a-build-from-homebrew) * [2.2b Build from Crates.io](#22b-build-from-cratesio) * [2.2c Build from Source Code](#22c-build-from-source-code) * [3. Usage Guide](#3-usage-guide) * [3.1 Generate a cryptocurrency wallet](#31-generate-a-cryptocurrency-wallet) * [3.2 Generate an HD cryptocurrency wallet](#32-generate-an-hd-cryptocurrency-wallet) * [3.3 Import a cryptocurrency wallet](#33-import-a-cryptocurrency-wallet) * [3.4 Import an HD cryptocurrency wallet](#34-import-an-hd-cryptocurrency-wallet) * [4. License](#4-license) ## 1. Overview Wagyu is a feature-rich command-line utility to generate a cryptocurrency wallet. Wagyu enables developers to build their own cryptocurrency application using the following modules. | Library | Standard Wallet | HD Wallet | Mnemonic | Network | |:------------------------------------------------------------------------------------------------------------------------------------------------------------:|-----------------------------------------------------------------------|----------------------------------------------------------------------------------------------|---------------------------------|-----------------------------------------------------------------| | [**wagyu-bitcoin**](./bitcoin)
[![Crates.io](https://img.shields.io/crates/v/wagyu-bitcoin.svg?color=neon)](https://crates.io/crates/wagyu-bitcoin) |
|
|
|
| | [**wagyu-ethereum**](./ethereum)
[![Crates.io](https://img.shields.io/crates/v/wagyu-ethereum.svg?color=neon)](https://crates.io/crates/wagyu-ethereum)|
|
|
|
| | [**wagyu-monero**](./monero)
[![Crates.io](https://img.shields.io/crates/v/wagyu-monero.svg?color=neon)](https://crates.io/crates/wagyu-monero) |
|
|
|
| | [**wagyu-zcash**](./zcash)
[![Crates.io](https://img.shields.io/crates/v/wagyu-zcash.svg?color=neon)](https://crates.io/crates/wagyu-zcash) |
|
|
|
| Wagyu can support new cryptocurrencies by implementing the model as outlined in this module. | Library | Standard Wallet | HD Wallet | Mnemonic | Network | |:-------------------------------------------------------------------------------------------------------------------------------------------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------| | [**wagyu_model**](./model)
[![Crates.io](https://img.shields.io/crates/v/wagyu-model.svg?color=neon)](https://crates.io/crates/wagyu-model) |
|
|
|
| ## 2. Build Guide ### 2.1 Install Rust We recommend installing Rust using [rustup](https://www.rustup.rs/). You can install `rustup` as follows: - macOS or Linux: ```bash curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh ``` - Windows (64-bit): Download the [Windows 64-bit executable](https://win.rustup.rs/x86_64) and follow the on-screen instructions. - Windows (32-bit): Download the [Windows 32-bit executable](https://win.rustup.rs/i686) and follow the on-screen instructions. ### 2.2a Build from Homebrew (for macOS) For macOS users, we recommend installing `wagyu` via Homebrew as follows: ```bash brew install wagyu ``` ### 2.2b Build from Crates.io We recommend installing `wagyu` this way. In your terminal, run: ```bash cargo install wagyu ``` Now to use `wagyu`, in your terminal, run: ```bash wagyu ``` ### 2.2c Build from Source Code Alternatively, you can install `wagyu` by building from the source code as follows: ```bash # Download the source code git clone https://github.com/AleoHQ/wagyu cd wagyu # Build in release mode $ cargo build --release ``` This will generate an executable under the `./target/release` directory. To use wagyu, run the following command: ```bash ./target/release/wagyu ``` ## 3. Usage Guide ### 3.1 Generate a cryptocurrency wallet To generate a cryptocurrency wallet, run: ``` wagyu [CRYPTOCURRENCY] [FLAGS] [OPTIONS] ``` #### 3.1.1 Bitcoin To generate a Bitcoin wallet, run: ``` wagyu bitcoin [FLAGS] [OPTIONS] ``` The command can be run with the following optional parameters: ``` FLAGS: -h, --help Prints help information -j, --json Prints the generated wallet(s) in JSON format OPTIONS: -c, --count Generates a specified number of wallets -f, --format Generates a wallet with a specified format [possible values: bech32, legacy, segwit] -n, --network Generates a wallet for a specified network [possible values: mainnet, testnet] ``` #### 3.1.2 Ethereum To generate an Ethereum wallet, run: ``` wagyu ethereum [FLAGS] [OPTIONS] ``` The command can be run with the following optional parameters: ``` FLAGS: -h, --help Prints help information -j, --json Prints the generated wallet(s) in JSON format OPTIONS: -c, --count Generates a specified number of wallets ``` #### 3.1.3 Monero To generate a Monero wallet, run: ``` wagyu monero [FLAGS] [OPTIONS] ``` The command can be run with the following parameters: ``` FLAGS: -h, --help Prints help information -j, --json Prints the generated wallet(s) in JSON format OPTIONS: -c, --count Generates a specified number of wallets -i, --integrated Generates a wallet with a specified payment ID -l, --language Generates a wallet with a specified language [possible values: chinese_simplified, dutch, english, esperanto, french, german, italian, japanese, lojban, portuguese, russian, spanish] -n, --network Generates a wallet for a specified network [possible values: mainnet, stagenet, testnet] -s, --subaddress Generates a wallet with a specified major and minor index ``` #### 3.1.4 Zcash To generate a Zcash wallet, run: ``` wagyu zcash [FLAGS] [OPTIONS] ``` The command can be run with the following parameters: ``` FLAGS: -h, --help Prints help information -j, --json Prints the generated wallet(s) in JSON format OPTIONS: -c, --count Generates a specified number of wallets --diversifier Generates a wallet with a specified Sapling address diversifier -f, --format Generates a wallet with a specified format [possible values: sapling, sprout, transparent] -n, --network Generates a wallet for a specified network [possible values: mainnet, testnet] ``` ### 3.2 Generate an HD cryptocurrency wallet To generate an HD cryptocurrency wallet, run: ``` wagyu [CRYPTOCURRENCY] hd [FLAGS] [OPTIONS] ``` #### 3.2.1 Bitcoin To generate a Bitcoin HD wallet, run: ``` wagyu bitcoin hd [FLAGS] [OPTIONS] ``` This command can be run with the following parameters: ``` FLAGS: -h, --help Prints help information -j, --json Prints the generated wallet(s) in JSON format OPTIONS: -c, --count Generates a specified number of wallets -d, --derivation <"path"> Generates an HD wallet for a specified derivation path (in quotes) [possible values: bip32, bip44, bip49, ""] -l, --language Generates an HD wallet with a specified language [possible values: chinese_simplified, chinese_traditional, english, french, italian, japanese, korean, spanish] -n, --network Generates an HD wallet for a specified network [possible values: mainnet, testnet] -p, --password Generates an HD wallet with a specified password -w, --word-count Generates an HD wallet with a specified word count [possible values: 12, 15, 18, 21, 24] ``` #### 3.2.2 Ethereum To generate an Ethereum HD wallet, run: ``` wagyu ethereum hd [FLAGS] [OPTIONS] ``` The command can be run with the following parameters: ``` FLAGS: -h, --help Prints help information -j, --json Prints the generated wallet(s) in JSON format OPTIONS: -c, --count Generates a specified number of wallets -d, --derivation <"path"> Generates an HD wallet for a specified derivation path (in quotes) [possible values: ethereum, keepkey, ledger-legacy, ledger-live, trezor, ""] -l, --language Generates an HD wallet with a specified language [possible values: chinese_simplified, chinese_traditional, english, french, italian, japanese, korean, spanish] -p, --password Generates an HD wallet with a specified password -w, --word-count Generates an HD wallet with a specified word count [possible values: 12, 15, 18, 21, 24] ``` #### 3.2.3 Zcash To generate a Zcash HD wallet, run: ``` wagyu zcash hd [FLAGS] [OPTIONS] ``` The command can be run with the following parameters: ``` FLAGS: -h, --help Prints help information -j, --json Prints the generated wallet(s) in JSON format OPTIONS: -c, --count Generates a specified number of wallets -d, --derivation <"path"> Generates an HD wallet for a specified derivation path (in quotes) [possible values: zip32, ""] --diversifier Imports a wallet with a specified Sapling address diversifier -n, --network Generates an HD wallet for a specified network [possible values: mainnet, testnet] ``` ### 3.3 Import a cryptocurrency wallet To import a cryptocurrency wallet, run: ``` wagyu [CRYPTOCURRENCY] import [FLAGS] [OPTIONS] ``` #### 3.3.1 Bitcoin To import a Bitcoin wallet, run: ``` wagyu bitcoin import [FLAGS] [OPTIONS] ``` This command can be run with the following parameters: ``` FLAGS: -h, --help Prints help information -j, --json Prints the generated wallet(s) in JSON format OPTIONS: --address
Imports a partial wallet for a specified address -f, --format Imports a wallet with a specified format [possible values: bech32, legacy, segwit] -n, --network Imports a wallet for a specified network [possible values: mainnet, testnet] --private Imports a wallet for a specified private key --public Imports a partial wallet for a specified public key ``` #### 3.3.2 Ethereum To import an Etheruem wallet, run: ``` wagyu ethereum import [FLAGS] [OPTIONS] ``` This command can be run with the following parameters: ``` FLAGS: -h, --help Prints help information -j, --json Prints the generated wallet(s) in JSON format OPTIONS: --address
Imports a partial wallet for a specified address --private Imports a wallet for a specified private key --public Imports a partial wallet for a specified public key ``` #### 3.3.3 Monero To import a Monero wallet, run: ``` wagyu monero import [FLAGS] [OPTIONS] ``` This command can be run with the following parameters: ``` FLAGS: -h, --help Prints help information -j, --json Prints the generated wallet(s) in JSON format OPTIONS: --address
Imports a partial wallet for a specified address -i, --integrated Imports a wallet with a specified payment ID -l, --language Imports a wallet with a specified mnemonic language (requires private spend key) [possible values: chinese_simplified, dutch, english, esperanto, french, german, italian, japanese, lojban, portuguese, russian, spanish] -m, --mnemonic <"mnemonic"> Imports a wallet for a specified mnemonic (in quotes) -n, --network Imports a wallet for a specified network [possible values: mainnet, stagenet, testnet] --private-spend Imports a wallet for a specified private spend key --private-view Imports a partial wallet for a specified private view key --public-spend Imports a partial wallet for a specified public spend key --public-view Imports a partial wallet for a specified public view key -s, --subaddress Imports a wallet with a specified major and minor index ``` #### 3.3.4 Zcash To import a Zcash wallet, run: ``` wagyu zcash import [FLAGS] [OPTIONS] ``` This command can be run with the following parameters: ``` FLAGS: -h, --help Prints help information -j, --json Prints the generated wallet(s) in JSON format OPTIONS: --address
Imports a partial wallet for a specified address --diversifier Imports a wallet with a specified Sapling address diversifier --private Imports a wallet for a specified private key --public Imports a partial wallet for a specified public key ``` ### 3.4 Import an HD cryptocurrency wallet To import an HD cryptocurrency wallet, run: ``` wagyu [CRYPTOCURRENCY] import-hd [FLAGS] [OPTIONS] ``` #### 3.4.1 Bitcoin To import a Bitcoin HD wallet, run: ``` wagyu bitcoin hd [FLAGS] [OPTIONS] ``` This command can be run with the following parameters: ``` FLAGS: -h, --help Prints help information -j, --json Prints the generated wallet(s) in JSON format OPTIONS: -a, --account Imports an HD wallet for a specified account number for bip44 and bip49 derivations -c, --chain Imports an HD wallet for a specified (external/internal) chain for bip44 and bip49 derivations [possible values: 0, 1] -d, --derivation <"path"> Imports an HD wallet for a specified derivation path (in quotes) [possible values: bip32, bip44, bip49, ""] --extended-private Imports a partial HD wallet for a specified extended private key --extended-public Imports a partial HD wallet for a specified extended public key -i, --index Imports an HD wallet for a specified index -m, --mnemonic <"mnemonic"> Imports an HD wallet for a specified mnemonic (in quotes) -n, --network Imports an HD wallet for a specified network [possible values: mainnet, testnet] -p, --password Imports an HD wallet with a specified password ``` #### 3.4.2 Ethereum To import an Ethereum HD wallet, run: ``` wagyu ethereum hd [FLAGS] [OPTIONS] ``` This command can be run with the following parameters: ``` FLAGS: -h, --help Prints help information -j, --json Prints the generated wallet(s) in JSON format OPTIONS: -d, --derivation <"path"> Imports an HD wallet for a specified derivation path (in quotes) [possible values: ethereum, keepkey, ledger-legacy, ledger-live, trezor, ""] --extended-private Imports a partial HD wallet for a specified extended private key --extended-public Imports a partial HD wallet for a specified extended public key -i, --index Imports an HD wallet for a specified index -m, --mnemonic <"mnemonic"> Imports an HD wallet for a specified mnemonic (in quotes) -p, --password Imports an HD wallet with a specified password ``` #### 3.4.3 Zcash To import a Zcash HD wallet, run: ``` wagyu zcash hd [FLAGS] [OPTIONS] ``` This command can be run with the following parameters: ``` FLAGS: -h, --help Prints help information -j, --json Prints the generated wallet(s) in JSON format OPTIONS: -a, --account Imports an HD wallet for a specified account number for bip44 and bip49 derivations -d, --derivation <"path"> Imports an HD wallet for a specified derivation path (in quotes) [possible values: zip32, ""] --diversifier Imports an HD wallet with a specified Sapling address diversifier --extended-private Imports a partial HD wallet for a specified extended private key --extended-public Imports a partial HD wallet for a specified extended public key -i, --index Imports an HD wallet for a specified index ``` ### 3.5 Generate a cryptocurrency transaction To import an HD cryptocurrency wallet, run: ``` wagyu [CRYPTOCURRENCY] transaction [FLAGS] [OPTIONS] ``` #### 3.5.1 Bitcoin To generate a Bitcoin transaction, run: ``` wagyu bitcoin transaction [FLAGS] [OPTIONS] ``` This command can be run with the following parameters: ``` FLAGS: -h, --help Prints help information -j, --json Prints the generated wallet(s) in JSON format OPTIONS: --createrawtransaction Generates a raw Bitcoin transaction Inputs format: '[{"txid":"txid", "vout":index},...]' Outputs format: '{"address":amount,...}' --lock-time Specify a Bitcoin transaction lock time --signrawtransaction Sign a raw Bitcoin transaction Inputs format: '[{"txid":"txid", "vout":index, "amount":amount, "address":"address", "privatekey":"private_key"},...]' (Optional: manually specify scriptPubKey and redeemScript) --version Specify a Bitcoin transaction version ``` #### 3.5.2 Ethereum To generate an Ethereum transaction, run: ``` wagyu ethereum transaction [FLAGS] [OPTIONS] ``` This command can be run with the following parameters: ``` FLAGS: -h, --help Prints help information -j, --json Prints the generated wallet(s) in JSON format OPTIONS: --createrawtransaction <'{"to":"address", "value":"value", "gas":"gas", "gasPrice":"gas_price", "nonce":nonce, "network":"network"}'> Generates a raw Ethereum transaction --network Specify an Ethereum transaction network --signrawtransaction Sign a raw Ethereum transaction ``` #### 3.5.3 Zcash To generate a Zcash transaction, run: ``` wagyu zcash transaction [FLAGS] [OPTIONS] ``` This command can be run with the following parameters: ``` FLAGS: -h, --help Prints help information -j, --json Prints the generated wallet(s) in JSON format OPTIONS: --createrawtransaction Generates a raw Zcash transaction Inputs format: '[{"txid":"txid", "vout":index},...]' Outputs format: '{"address":amount,...}' --expiry-height Specify a Zcash transaction expiry height --lock-time Specify a Zcash transaction lock time --signrawtransaction Sign a raw Zcash transaction Inputs format: '[{"txid":"txid", "vout":index, "amount":amount, "address":"address", "privatekey":"private_key"},...]' (Optional: manually specify scriptPubKey and redeemScript) --version Specify a Zcash transaction version [possible values: sapling] ``` #### 3.5.4 Transaction Remarks `wagyu` CLI operates offline without chain state, and thus cannot immediately craft Monero transactions or Zcash Sapling spends (Zcash Sapling outputs are supported). ## 4. License This work is licensed under either of the following licenses, at your discretion. - Apache License Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0) - MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.