Rust-Wagyu v0.6.1: Rust library for generating cryptocurrency wallets

icon
Latest Release: v0.6.1

? Improved reliability ? Bug fixes

Major Changes

  • Fixes ZcashExtendedPublicKey prefix
  • Fixes ExtendedPublicKey derivation
  • Adds Format trait and refactors implementations
  • Refactors Mnemonic trait and implementations
  • Updates dependency versions

Installation

cargo install wagyu
Source code(tar.gz)
Source code(zip)

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

  • P2PKH
  • P2SH-P2WPKH
  • Bech32

  • BIP-32
  • BIP-44
  • BIP-49
  • Custom

  • BIP-39

  • Mainnet
  • Testnet
wagyu-ethereum
Crates.io

  • Standard

  • Ethereum
  • Ledger
  • Trezor
  • Keepkey
  • Custom

  • BIP-39

  • All
wagyu-monero
Crates.io

  • Standard
  • Integrated
  • Subaddress

  • N/A

  • Electrum

  • Mainnet
  • Testnet
  • Stagenet
wagyu-zcash
Crates.io

  • P2PKH
  • Sprout
  • Sapling

  • ZIP-32

  • N/A

  • Mainnet
  • Testnet

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:

  • macOS or Linux:

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • Windows (64-bit):

    Download the Windows 64-bit executable and follow the on-screen instructions.

  • Windows (32-bit):

    Download the Windows 32-bit executable and follow the on-screen instructions.

2.2a Build from Homebrew (for macOS)

For macOS users, we recommend installing wagyu via Homebrew as follows:

brew install wagyu

2.2b Build from Crates.io

We recommend installing wagyu this way. In your terminal, run:

cargo install wagyu

Now to use wagyu, in your terminal, run:

wagyu

2.2c Build from Source Code

Alternatively, you can install wagyu by building from the source code as follows:

# 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:

./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 <count>        Generates a specified number of wallets
    -f, --format <format>      Generates a wallet with a specified format [possible values: bech32, legacy, segwit]
    -n, --network <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 <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 <count>                             Generates a specified number of wallets
    -i, --integrated <PaymentID>                    Generates a wallet with a specified payment ID
    -l, --language <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 <network>                         Generates a wallet for a specified network [possible values: mainnet, stagenet, testnet]
    -s, --subaddress <Major Index> <Minor Index>    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 <count>                Generates a specified number of wallets
        --diversifier <diversifier>    Generates a wallet with a specified Sapling address diversifier
    -f, --format <format>              Generates a wallet with a specified format [possible values: sapling, sprout, transparent]
    -n, --network <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 <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, "<custom path>"]
    -l, --language <language>        Generates an HD wallet with a specified language [possible values: chinese_simplified, chinese_traditional, english, french, italian, japanese, korean, spanish]
    -n, --network <network>          Generates an HD wallet for a specified network [possible values: mainnet, testnet]
    -p, --password <password>        Generates an HD wallet with a specified password
    -w, --word-count <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 <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, "<custom path>"]
    -l, --language <language>        Generates an HD wallet with a specified language [possible values: chinese_simplified, chinese_traditional, english, french, italian, japanese, korean, spanish]
    -p, --password <password>        Generates an HD wallet with a specified password
    -w, --word-count <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 <count>                Generates a specified number of wallets
    -d, --derivation <"path">          Generates an HD wallet for a specified derivation path (in quotes) [possible values: zip32, "<custom path>"]
        --diversifier <diversifier>    Imports a wallet with a specified Sapling address diversifier
    -n, --network <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 <address>        Imports a partial wallet for a specified address
    -f, --format <format>          Imports a wallet with a specified format [possible values: bech32, legacy, segwit]
    -n, --network <network>        Imports a wallet for a specified network [possible values: mainnet, testnet]
        --private <private key>    Imports a wallet for a specified private key
        --public <public key>      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 <address>        Imports a partial wallet for a specified address
        --private <private key>    Imports a wallet for a specified private key
        --public <public key>      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 <address>                         Imports a partial wallet for a specified address
    -i, --integrated <PaymentID>                    Imports a wallet with a specified payment ID
    -l, --language <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 <network>                         Imports a wallet for a specified network [possible values: mainnet, stagenet, testnet]
        --private-spend <private spend key>         Imports a wallet for a specified private spend key
        --private-view <private view key>           Imports a partial wallet for a specified private view key
        --public-spend <public spend key>           Imports a partial wallet for a specified public spend key
        --public-view <public view key>             Imports a partial wallet for a specified public view key
    -s, --subaddress <Major Index> <Minor Index>    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 <address>            Imports a partial wallet for a specified address
        --diversifier <diversifier>    Imports a wallet with a specified Sapling address diversifier
        --private <private key>        Imports a wallet for a specified private key
        --public <public key>          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 <account>                      Imports an HD wallet for a specified account number for bip44 and bip49 derivations
    -c, --chain <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, "<custom path>"]
        --extended-private <extended private>    Imports a partial HD wallet for a specified extended private key
        --extended-public <extended public>      Imports a partial HD wallet for a specified extended public key
    -i, --index <index>                          Imports an HD wallet for a specified index
    -m, --mnemonic <"mnemonic">                  Imports an HD wallet for a specified mnemonic (in quotes)
    -n, --network <network>                      Imports an HD wallet for a specified network [possible values: mainnet, testnet]
    -p, --password <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, "<custom path>"]
        --extended-private <extended private>    Imports a partial HD wallet for a specified extended private key
        --extended-public <extended public>      Imports a partial HD wallet for a specified extended public key
    -i, --index <index>                          Imports an HD wallet for a specified index
    -m, --mnemonic <"mnemonic">                  Imports an HD wallet for a specified mnemonic (in quotes)
    -p, --password <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 <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, "<custom path>"]
        --diversifier <diversifier>              Imports an HD wallet with a specified Sapling address diversifier
        --extended-private <extended private>    Imports a partial HD wallet for a specified extended private key
        --extended-public <extended public>      Imports a partial HD wallet for a specified extended public key
    -i, --index <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 <inputs> <outputs>          Generates a raw Bitcoin transaction
                                                               Inputs format: '[{"txid":"txid", "vout":index},...]'
                                                               Outputs format: '{"address":amount,...}'                                           
        --lock-time <lock time>                            Specify a Bitcoin transaction lock time
        --signrawtransaction <transaction hex> <inputs>    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 <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 <network>                                                                                                                      Specify an Ethereum transaction network
        --signrawtransaction <transaction hex> <private key>                                                                                     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 <inputs> <outputs>          Generates a raw Zcash transaction
                                                               Inputs format: '[{"txid":"txid", "vout":index},...]'
                                                               Outputs format: '{"address":amount,...}'
        --expiry-height <expiry height>                    Specify a Zcash transaction expiry height
        --lock-time <lock time>                            Specify a Zcash transaction lock time
        --signrawtransaction <transaction hex> <inputs>    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 <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.

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.

Comments

  • Bump uint from 0.8.5 to 0.9.1
    Bump uint from 0.8.5 to 0.9.1

    Jul 1, 2021

    Bumps uint from 0.8.5 to 0.9.1.

    Commits
    • 828a5d6 uint: implement integer_sqrt (#554)
    • 96909f3 parity-util-mem: fix for FreeBSD (#553)
    • 7c2a9b2 Simplification (#550)
    • 0ac86ef primitive-types: add U128 full_mul (#546)
    • 0867e48 bump kvdb-rocksdb and update changelog (#542)
    • bce6c33 build(deps): update rocksdb requirement from 0.15 to 0.16 (#537)
    • 61fc474 build(deps): update sysinfo requirement from 0.16.3 to 0.17.0 (#536)
    • 50fcd23 build(deps): update num-bigint requirement from 0.3.1 to 0.4.0 (#532)
    • 6a4ce4b impl num_traits::sign::Unsigned (#531)
    • f3b859a build(deps): update pbkdf2 requirement from 0.6.0 to 0.7.3 (#523)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    Reply
  • Bump crypto-mac from 0.7.0 to 0.11.1
    Bump crypto-mac from 0.7.0 to 0.11.1

    Jul 21, 2021

    Bumps crypto-mac from 0.7.0 to 0.11.1.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    Reply
  • Dependabot can't resolve your Rust dependency files
    Dependabot can't resolve your Rust dependency files

    Aug 3, 2021

    Dependabot can't resolve your Rust dependency files.

    As a result, Dependabot couldn't update your dependencies.

    The error Dependabot encountered was:

    Updating crates.io index
    error: failed to select a version for the requirement `aes = "^0.2"`
    candidate versions found which didn't match: 0.7.4, 0.7.3, 0.7.2, ...
    location searched: crates.io index
    required by package `fpe v0.1.0`
        ... which is depended on by `wagyu-zcash v0.6.3 (/home/dependabot/dependabot-updater/dependabot_tmp_dir/zcash)`
    

    If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.

    View the update logs.

    Reply
  • `ethereum import-hd` fails with valid mnemonic
    `ethereum import-hd` fails with valid mnemonic

    Aug 8, 2021

    $ ./target/release/wagyu ethereum import-hd --mnemonic "candy maple cake sugar pudding cream honey rich smooth crumble sweet treat" --derivation "m/44'/60'/0'/0/0/"
    Error: MnemonicError(WordlistError(InvalidWord("candy")))
    

    Not sure why this is not working, this is clearly a valid mnemonic.

    Reply
  • Explicitly require language flag for non-english mnemonics
    Explicitly require language flag for non-english mnemonics

    Aug 9, 2021

    Fixes #274.

    Before:

    $ wagyu ethereum import-hd --mnemonic "candy maple cake sugar pudding cream honey rich smooth crumble sweet treatt"
    Error: MnemonicError(WordlistError(InvalidWord("candy")))
    
    $ wagyu ethereum import-hd --mnemonic "candy maple cake sugar pudding cream honey rich smooth crumble sweet treat"
    ... success
    

    After:

    $ wagyu ethereum import-hd --language "english" --mnemonic "candy maple cake sugar pudding cream honey rich smooth crumble sweet treatt"
    Error: MnemonicError(WordlistError(InvalidWord("treatt")))
    
    $ wagyu ethereum import-hd --language "english" --mnemonic "candy maple cake sugar pudding cream honey rich smooth crumble sweet treat"
    ... success
    

    Note how much easier it is to track down the error when the correct error for the language is returned!

    Reply
  • Allow showing bech32 keys for imported wallet
    Allow showing bech32 keys for imported wallet

    Jan 11, 2022

    I'd like to be able to do something like wagyu bitcoin import-hd -m "..." -d "m/84'/0'/0'/0/0" -f bech32 such that it prints out the address in bech32 format instead of P2PKH. Currently there doesn't appear to be any way to do this without code modification.

    I'm happy to write a PR for this, but is this something you'd be interested in?

    Reply
  • Update bitvec dependency to  0.17.4
    Update bitvec dependency to 0.17.4

    Mar 30, 2020

    cargo update is giving me an error about bitvec.

    cargo update
        Updating crates.io index
    error: failed to select a version for the requirement `bitvec = "^0.15.2"`
      candidate versions found which didn't match: 0.17.4
      location searched: crates.io index
    required by package `wagyu-ethereum v0.6.2`
        ... which is depended on by `myproject v0.1.0 (/home/ski/code/myproject)`
    

    Importantly, 0.17.2's changelog says "This crash is considered a severe bug, as it indicates memory unsafety. Users are strongly encouraged to update to 0.17.2 immediately."

    I haven't tested this yet, but I will soon.

    dependencies 
    Reply
  • Add --address-count options. Generate multiple addresses for the same wallet
    Add --address-count options. Generate multiple addresses for the same wallet

    Jun 21, 2020

                                                                                                                                                                                                            enhancement 
    Reply
  • #![no_std] support
    #![no_std] support

    Jul 28, 2019

    Tracking thread to determine how to incorporate #![no_std] (if at all) into wagyu.

    enhancement 
    Reply
  • Refactor/zcash
    Refactor/zcash

    Jul 5, 2019

                                                                                                                                                                                                           
    Reply
  • Compilation produces errors and fails
    Compilation produces errors and fails

    Sep 11, 2018

    error[E0658]: non-reference pattern used to match a reference (see issue #42640)
      --> src/bitcoin/address.rs:28:13
       |
    28 |             Type::P2PKH => Address::p2pkh(private_key),
       |             ^^^^^^^^^^^ help: consider using a reference: `&Type::P2PKH`
    
    error[E0658]: non-reference pattern used to match a reference (see issue #42640)
      --> src/bitcoin/address.rs:29:13
       |
    29 |             Type::P2WPKH_P2SH => Address::p2wpkh_p2sh(private_key),
       |             ^^^^^^^^^^^^^^^^^ help: consider using a reference: `&Type::P2WPKH_P2SH`
    
    error[E0658]: non-reference pattern used to match a reference (see issue #42640)
      --> src/bitcoin/address.rs:75:13
       |
    75 |             Network::Testnet => TESTNET_ADDRESS_BYTE,
       |             ^^^^^^^^^^^^^^^^ help: consider using a reference: `&Network::Testnet`
    
    error[E0658]: non-reference pattern used to match a reference (see issue #42640)
      --> src/bitcoin/privatekey.rs:90:13
       |
    90 |             Network::Testnet => TESTNET_BYTE,
       |             ^^^^^^^^^^^^^^^^ help: consider using a reference: `&Network::Testnet`
    
    error[E0658]: non-reference pattern used to match a reference (see issue #42640)
      --> src/monero/network.rs:18:9
       |
    18 |         Network::Testnet => Some(&[0x35]),
       |         ^^^^^^^^^^^^^^^^ help: consider using a reference: `&Network::Testnet`
    
    error[E0658]: non-reference pattern used to match a reference (see issue #42640)
      --> src/monero/network.rs:19:9
       |
    19 |         Network::Mainnet => Some(&[0x12]),
       |         ^^^^^^^^^^^^^^^^ help: consider using a reference: `&Network::Mainnet`
    
    error[E0658]: non-reference pattern used to match a reference (see issue #42640)
      --> src/monero/network.rs:20:9
       |
    20 |         Network::Error => Some(&[0x00]), // fix
       |         ^^^^^^^^^^^^^^ help: consider using a reference: `&Network::Error`
    
    error[E0658]: non-reference pattern used to match a reference (see issue #42640)
      --> src/zcash/address.rs:24:13
       |
    24 |             true => private_key.to_public_key().serialize().to_vec(),
       |             ^^^^ help: consider using a reference: `&true`
    
    error[E0658]: non-reference pattern used to match a reference (see issue #42640)
      --> src/zcash/address.rs:25:13
       |
    25 |             false => private_key
       |             ^^^^^ help: consider using a reference: `&false`
    
    error[E0658]: non-reference pattern used to match a reference (see issue #42640)
      --> src/zcash/address.rs:36:13
       |
    36 |             Network::Testnet => TESTNET_ADDRESS_BYTES,
       |             ^^^^^^^^^^^^^^^^ help: consider using a reference: `&Network::Testnet`
    
    error[E0658]: non-reference pattern used to match a reference (see issue #42640)
      --> src/zcash/privatekey.rs:90:13
       |
    90 |             Network::Testnet => TESTNET_BYTE,
       |             ^^^^^^^^^^^^^^^^ help: consider using a reference: `&Network::Testnet`
    
    
    bug 
    Reply
  • Roadmap Question
    Roadmap Question

    Aug 28, 2019

    First off, this is a fantastic project! Thank you for building it.

    How deep down the wallet features past wallet generation and importing do you plan on going? I imagine wagyu would be a useful component in an offline signing solution for instance.

    Reply