Table of Contents

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
Crates.io |

|
|
|
| | wagyu-ethereum
Crates.io|
|
|
|
| | wagyu-monero
Crates.io |
|
|
|
| | wagyu-zcash
Crates.io |
|
|
|
|

Wagyu can support new cryptocurrencies by implementing the model as outlined in this module.

| Library | Standard Wallet | HD Wallet | Mnemonic | Network | |:-------------------------------------------------------------------------------------------------------------------------------------------------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------| | wagyu_model
Crates.io |

|
|
|
|

2. Build Guide

2.1 Install Rust

We recommend installing Rust using rustup. You can install rustup as follows:

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: chinesesimplified, chinesetraditional, 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: chinesesimplified, chinesetraditional, 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.