A Rust library for generating cryptocurrency wallets

Overview

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>"]
    -i, --index <index>              Generates an HD wallet with a specified index
    -k, --indices <num_indices>      Generates an HD wallet with a specified number of indices
    -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 import-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 import-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 with a specified index
    -k, --indices <num_indices>                  Imports an HD wallet with a specified number of indices
    -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 import-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
  • Roadmap Question

    Roadmap Question

    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.

    opened by jubos 8
  • Compilation produces errors and fails

    Compilation produces errors and fails

    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 
    opened by Swader 6
  • Update bitvec dependency to  0.17.4

    Update bitvec dependency to 0.17.4

    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 
    opened by WyseNynja 3
  • Bump bitvec from 0.15.2 to 0.17.3

    Bump bitvec from 0.15.2 to 0.17.3

    Bumps bitvec from 0.15.2 to 0.17.3.

    Changelog

    Sourced from bitvec's changelog.

    0.17.3

    Fixed

    GitHub users [@Alexhuszagh] and [@obeah] noted in [Issue #43] that the sequence storage constructors used by the bits! macro yielded incorrect behavior. The error was a copy-paste error in the production of byte reördering functions used by the macro.

    0.17.2

    Fixed

    GitHub user [@ImmemorConsultrixContrarie] reported [Issue #40], and provided [Pull Request #41]. The defect report was a STATUS_ILLEGAL_INSTRUCTION event that occurred only under x86_64-pc-windows-gnu (running the test under -msvc failed to reproduce) when using BitSlice::get_mut to produce a BitMut structure.

    While PR #41 did not directly resolve the problem, during review, Immemor suggested a rewrite of the BitMut structure to shrink it from three words to two. This rewrite changed the computation of the memory address to modify in a manner that resolved the illegal-instruction failure.

    This crash is considered a severe bug, as it indicates memory unsafety. Users are strongly encouraged to update to 0.17.2 immediately.

    Thanks again to [@ImmemorConsultrixContrarie] for the report and solution!

    0.17.1

    Added

    This patch restores the cursor module and its types, as aliases to the order module and their equivalents, with a deprecation warning. Removing these names entirely, without a deprecation redirect, is technically permissible but morally in error.

    Changed

    In addition, the Bits trait has been renamed to AsBits, to better reflect its behavior and reduce the chances of name collision, as it is a prelude export.

    Removed

    The AsBits::as_{mut_,}bitslice deprecation aliases have been removed.

    0.17.0

    ... (truncated)
    Commits
    • e3b5ca2 Backport [#43](https://github.com/myrrlyn/bitvec/issues/43) to the 0.17 series
    • 5ccb4a6 Closes #43
    • c4013af Update to 0.17.2
    • b87a81e Restructure BitMut to fit in two words
    • a4b7c6d Add Nika and ICC to the AUTHORS document, in recognition of their work
    • 5ad5cdf Rollup of PR #41
    • 997b359 Move the AsBits trait into the slice module, to deconflict crate::bits ...
    • a90e931 Patch for 0.17.1
    • 2c3318e Address lints
    • 5977bbb Have BitVec::split_off use the better ToOwned implementation
    • 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 
    opened by dependabot-preview[bot] 3
  • Explicitly require language flag for non-english mnemonics

    Explicitly require language flag for non-english mnemonics

    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!

    opened by lightclient 2
  • Bump serde from 1.0.106 to 1.0.111

    Bump serde from 1.0.106 to 1.0.111

    Bumps serde from 1.0.106 to 1.0.111.

    Release notes

    Sourced from serde's releases.

    v1.0.111

    • Process borrowed lifetimes inside of interpolated macro_rules metavariables, such as in the case of #[derive(Deserialize)] struct S<'a> { field: $field } (#1821)

    v1.0.110

    • Support deriving Serialize impl for a repr(packed) struct (#1791, thanks @alvardes)

    v1.0.109

    • Allow adjacently tagged newtype variants containing Option to omit the content field when deserializing (#1553, #1706, thanks @zth0)
    • Avoid panicking when a SystemTime older than UNIX_EPOCH is serialized (#1702, thanks @hjiayz)

    v1.0.108

    • Provide a Serializer impl that can write primitives and unit variants to a &mut fmt::Formatter (#1705, thanks @jethrogb)

      use serde::Serialize;
      use std::fmt::{self, Display};
      

      #[derive(Serialize)] #[serde(rename_all = "kebab-case")] pub enum MessageType { StartRequest, EndRequest, }

      impl Display for MessageType { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { self.serialize(f) } }

    v1.0.107

    • Fix panic during macro expansion when using serde(skip) and serde(other) in the same enum (#1804)
    Commits
    • 9f331cc Release 1.0.111
    • ef16c81 Merge pull request #1821 from dtolnay/ungroup
    • c45a809 Look inside of None-delimited groups when examining types
    • f7d06ca Add failing test involving macro_rules metavariable
    • 31fe82a Resolve match_wildcard_for_single_variants pedantic lint
    • ef6ed1d Copy some new links from serde.rs to the crate-level doc
    • 9d12515 Mirror 'Getting help' from github readme to crates.io readme
    • c20730e Remove reference to mozilla irc
    • afd51ef Merge pull request #1808 from dtolnay/help
    • 3167f98 Update 'Getting help' section
    • 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 
    opened by dependabot-preview[bot] 2
  • Bump sha2 from 0.8.1 to 0.8.2

    Bump sha2 from 0.8.1 to 0.8.2

    Bumps sha2 from 0.8.1 to 0.8.2.

    Commits
    • 627696d sha2 v0.8.2
    • 8845e15 Merge pull request #94 from rodoufu/code_imp
    • 5502150 Merge pull request #109 from linkmauve/use-libc
    • afe50ee Use libc for AArch64 consts too
    • 30b416a Merge pull request #108 from ZcashFoundation/expose-utils
    • c1afa05 Rename flag to 'compress', export just compress* instead of whole module
    • a968a8d Coalesce sha256_util export
    • 789e705 utils feature has no dependencies
    • f9b35c0 Expose sha256_utils with the utils feature flag
    • 87d1cb0 Merge pull request #104 from linkmauve/compile-time-aarch64-crypto
    • 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 
    opened by dependabot-preview[bot] 2
  • Bump cmake from 0.1.42 to 0.1.43

    Bump cmake from 0.1.42 to 0.1.43

    Bumps cmake from 0.1.42 to 0.1.43.

    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 
    opened by dependabot-preview[bot] 2
  • Bump libc from 0.2.68 to 0.2.70

    Bump libc from 0.2.68 to 0.2.70

    Bumps libc from 0.2.68 to 0.2.70.

    Release notes

    Sourced from libc's releases.

    0.2.70

    Bump patch version to 0.2.70

    0.2.69

    Bump patch version to 0.2.69

    Commits
    • b61d8c6 Merge pull request #1758 from tblah/version-0.2.70
    • 88cfeb1 Bump version to 0.2.70
    • 87de910 Merge pull request #1752 from JohnTitor/i686-2004
    • cf63ea1 Merge pull request #1587 from Susurrus/termios_breaks_consts
    • 23d73d5 Merge pull request #1753 from overdrivenpotato/psp
    • 524ec8f Add TIOCSBRK/TIOCCBRK to more supported platforms
    • d44f9b7 Reorder consts for sparc64 to match header
    • 5dfe013 Add c typedefs for the Sony PSP
    • ecfd7a3 Update Ubuntu image to 20.04
    • bb734e3 Merge pull request #1754 from JohnTitor/armeabi
    • 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 
    opened by dependabot-preview[bot] 2
  • Bump serde from 1.0.106 to 1.0.110

    Bump serde from 1.0.106 to 1.0.110

    Bumps serde from 1.0.106 to 1.0.110.

    Release notes

    Sourced from serde's releases.

    v1.0.110

    • Support deriving Serialize impl for a repr(packed) struct (#1791, thanks @alvardes)

    v1.0.109

    • Allow adjacently tagged newtype variants containing Option to omit the content field when deserializing (#1553, #1706, thanks @zth0)
    • Avoid panicking when a SystemTime older than UNIX_EPOCH is serialized (#1702, thanks @hjiayz)

    v1.0.108

    • Provide a Serializer impl that can write primitives and unit variants to a &mut fmt::Formatter (#1705, thanks @jethrogb)

      use serde::Serialize;
      use std::fmt::{self, Display};
      

      #[derive(Serialize)] #[serde(rename_all = "kebab-case")] pub enum MessageType { StartRequest, EndRequest, }

      impl Display for MessageType { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { self.serialize(f) } }

    v1.0.107

    • Fix panic during macro expansion when using serde(skip) and serde(other) in the same enum (#1804)
    Commits
    • 078b171 Release 1.0.110
    • da8d6f6 Simplify finding of repr(packed) attributes
    • 548eb8f Format PR 1791 with rustfmt
    • 1fe3904 Simplify access of packed struct fields in derived Serialize impls
    • c211449 Add test of Serialize impl for packed struct
    • 9f47c47 Add support for packed structs.
    • d6b39fd Merge pull request #1807 from dtolnay/31
    • 4d6d0ae Add a CI builder on 1.31.0
    • dda070f Fix borrow error on pre-NLL compilers
    • b97a183 Release 1.0.109
    • 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 
    opened by dependabot-preview[bot] 2
  • Bump serde_json from 1.0.52 to 1.0.53

    Bump serde_json from 1.0.52 to 1.0.53

    Bumps serde_json from 1.0.52 to 1.0.53.

    Release notes

    Sourced from serde_json's releases.

    v1.0.53

    • Reduce unhelpful indentation in the {:#?} format of serde_json::Value
    • Remove some unnecessary runtime checks from Serializer::collect_str
    Commits
    • 5c3711e Release 1.0.53
    • 6ca3752 Downgrade some unnecessary runtime asserts to debug_assert
    • eb383c0 Update arbitrary_precision Debug impl of Number to match normal one
    • 351d847 Omit a layer of unnecessary nesting from Debug impl
    • baae6d9 Add test for {:#?} format of Value
    • 800a8d5 Update build status badge to GitHub Actions
    • cb40c10 Remove AppVeyor configuration
    • f255356 Add Windows CI in GitHub Actions
    • edb1c31 Avoid repeating slow doctests and compiletests
    • dffbe44 Remove Travis configuration
    • 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 
    opened by dependabot-preview[bot] 2
  • Wagyu build fails

    Wagyu build fails

    Hi @howardwu,

    When trying to run cargo install wagyu I'm hit with the following:

        Updating crates.io index
      Downloaded wagyu v0.6.3
      Downloaded 1 crate (48.9 KB) in 0.48s
      Installing wagyu v0.6.3
    error: failed to compile `wagyu v0.6.3`, intermediate artifacts can be found at `/run/user/1000/cargo-installoftX6F`
    
    Caused by:
      failed to select a version for the requirement `aes = "^0.2"`
      candidate versions found which didn't match: 0.8.2, 0.8.1, 0.8.0, ...
      location searched: crates.io index
      required by package `wagyu-zcash v0.6.3`
          ... which satisfies dependency `wagyu-zcash = "^0.6.3"` of package `wagyu v0.6.3`
    

    Not sure if I'm doing something wrong or the app needs some update.

    opened by jocelynthode 0
  • Is this project still maintained?

    Is this project still maintained?

    This is a great library/tool, but doesn't seem to have much activity from owners for last year or so. Is this project still being maintained?

    cc @howardwu

    opened by staktrace 0
  • Allow outputting different formats for bitcoin import-hd command

    Allow outputting different formats for bitcoin import-hd command

    This allows doing things like bitcoin import-hd -m <...> -f bech32 which then prints the address in bech32 format; previously this was not possible.

    Fixes #277.

    opened by staktrace 0
  • Support Tron network

    Support Tron network

    Started out quite a while ago, I think it's time for contributing.

    With this PR wagyu can generate or import standard/HD trx/trc20 wallets. However, tron transaction isn't implemented yet.

    opened by joeky888 1
  • Allow showing bech32 keys for imported wallet

    Allow showing bech32 keys for imported wallet

    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?

    opened by staktrace 1
  • `ethereum import-hd` fails with valid mnemonic

    `ethereum import-hd` fails with valid mnemonic

    $ ./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.

    opened by lightclient 1
Releases(v0.6.1)
Owner
Aleo
Where Applications Become Zero-Knowledge
Aleo
Coinbase pro client for Rust

Coinbase pro client for Rust Supports SYNC/ASYNC/Websocket-feed data support Features private and public API sync and async support websocket-feed sup

null 126 Dec 30, 2022
Custom Ethereum vanity address generator made in Rust

ethaddrgen Custom Ethereum address generator Get a shiny ethereum address and stand out from the crowd! Disclaimer: Do not use the private key shown i

Jakub Hlusička 153 Dec 27, 2022
The new, performant, and simplified version of Holochain on Rust (sometimes called Holochain RSM for Refactored State Model)

Holochain License: This repository contains the core Holochain libraries and binaries. This is the most recent and well maintained version of Holochai

Holochain 737 Dec 28, 2022
DEPRECATED. The Holochain framework implemented in rust with a redux style internal state-model.

Holochain-rust Travis: Circle CI: Codecov: License: This code is loosely based on the previous Golang prototype. Code Status: This Rust version is alp

Holochain 1k Jan 3, 2023
IBC modules and relayer - Formal specifications and Rust implementation

ibc-rs Rust implementation of the Inter-Blockchain Communication (IBC) protocol. This project comprises primarily four crates: The ibc crate defines t

Informal Systems 296 Jan 4, 2023
A Rust implementation of BIP-0039

bip39-rs A Rust implementation of BIP0039 Changes See the changelog file, or the Github releases for specific tags. Documentation Add bip39 to your Ca

Infincia LLC 49 Dec 9, 2022
Rust Ethereum 2.0 Client

Lighthouse: Ethereum 2.0 An open-source Ethereum 2.0 client, written in Rust and maintained by Sigma Prime. Documentation Overview Lighthouse is: Read

Sigma Prime 2.1k Jan 1, 2023
Official Rust implementation of the Nimiq protocol

Nimiq Core implementation in Rust (core-rs) Rust implementation of the Nimiq Blockchain Core Nimiq is a frictionless payment protocol for the web. Thi

Nimiq 72 Sep 23, 2022
Rust implementation of Zcash protocol

The Parity Zcash client. Gitter Blog: Parity teams up with Zcash Foundation for Parity Zcash client Installing from source Installing the snap Running

Parity Technologies 183 Sep 8, 2022
rust client libraries to deal with the current cardano mainnet (byron / cardano-sl)

Rust implementation of Cardano primitives, helpers, and related applications Cardano Rust is a modular toolbox of Cardano’s cryptographic primitives,

Input Output 275 Oct 9, 2022
Tendermint in Rust!

tendermint.rs Tendermint in Rust with TLA+ specifications. Tendermint is a high-performance blockchain consensus engine for Byzantine fault tolerant a

Informal Systems 439 Jan 1, 2023
Rust port of the Terry Davis' (RIP) "god says" program

RIP Terry A. Davis 1969-2018 god says Rust port of the programmer Terry Davis' "god says" (AKA GodSpeaks) program. Terrence Andrew Davis (December 15,

Orhun Parmaksız 54 Dec 26, 2022
Implementation of the Kademlia DHT protocol in Rust

kademlia-dht Simple implementation of the Kademlia DHT protocol in Rust with state dumping features for educational purposes (not production-ready). T

Leonardo Folgoni 18 Sep 24, 2022
Collection of Key Derivation Functions written in pure Rust

RustCrypto: Key Derivation Functions Collection of Key Derivation Functions (KDF) written in pure Rust. Supported Algorithms Algorithm Crate Crates.io

Rust Crypto 44 Dec 25, 2022
Cryptocurrencies trend-following trading bot sandbox written in Rust.

Trend trading bot Experiments repo about (crypto) trend trading. By "trend" I mean trading following the trend using technical indicators (vs other ki

Julien 6 Oct 2, 2022
Martinez is vNext Ethereum implementation written in pure Rust with Erigon architecture as design.

?? Martinez ?? Next-generation implementation of Ethereum protocol ("client") written in Rust, based on Erigon architecture. Why run Martinez? Look at

Arthur·Thomas 23 Jul 3, 2022
Fully typed access to the Erigon db in rust

Overview Fully typed access to the Erigon database in rust. use erigon_db::{Erigon, env_open}; use ethereum_types::Address; fn main() -> eyre::Result

Gio 89 Dec 5, 2022
A Rust library for generating cryptocurrency wallets

Table of Contents 1. Overview 2. Build Guide 2.1 Install Rust 2.2a Build from Homebrew 2.2b Build from Crates.io 2.2c Build from Source Code 3. Usage

Aleo 554 Dec 31, 2022
Easy c̵̰͠r̵̛̠ö̴̪s̶̩̒s̵̭̀-t̶̲͝h̶̯̚r̵̺͐e̷̖̽ḁ̴̍d̶̖̔ ȓ̵͙ė̶͎ḟ̴͙e̸̖͛r̶̖͗ë̶̱́ṉ̵̒ĉ̷̥e̷͚̍ s̷̹͌h̷̲̉a̵̭͋r̷̫̊ḭ̵̊n̷̬͂g̵̦̃ f̶̻̊ơ̵̜ṟ̸̈́ R̵̞̋ù̵̺s̷̖̅ţ̸͗!̸̼͋

Rust S̵̓i̸̓n̵̉ I̴n̴f̶e̸r̵n̷a̴l mutability! Howdy, friendly Rust developer! Ever had a value get m̵̯̅ð̶͊v̴̮̾ê̴̼͘d away right under your nose just when

null 294 Dec 23, 2022
An open source Rust high performance cryptocurrency trading API with support for multiple exchanges and language wrappers. written in rust(🦀) with ❤️

Les.rs - Rust Cryptocurrency Exchange Library An open source Rust high performance cryptocurrency trading API with support for multiple exchanges and

Crabby AI 4 Jan 9, 2023