From cc7dfae76859ca52d733075e81c0baef6539580a Mon Sep 17 00:00:00 2001 From: lza_menace Date: Wed, 21 Dec 2022 11:26:45 -0800 Subject: [PATCH] add simple cli --- .gitignore | 2 ++ cli.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ requirements.txt | 2 ++ 3 files changed, 51 insertions(+) create mode 100644 .gitignore create mode 100644 cli.py create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8d19362 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.venv +.env diff --git a/cli.py b/cli.py new file mode 100644 index 0000000..76fe310 --- /dev/null +++ b/cli.py @@ -0,0 +1,47 @@ +import click +from hdwallet import BIP44HDWallet +from hdwallet.utils import generate_mnemonic +from hdwallet.cryptocurrencies import EthereumMainnet +from hdwallet.derivations import BIP44Derivation + + +@click.group() +def cli(): + pass + +@cli.command('show_eth_address') +@click.argument('wallet_index') +@click.argument('mnemonic_seed', nargs=-1) +def show_eth_address(wallet_index, mnemonic_seed): + mnemonic_seed = " ".join(mnemonic_seed) + click.echo(get_eth_account(wallet_index, mnemonic_seed)[0]) + +@cli.command('show_eth_pkey') +@click.argument('wallet_index') +@click.argument('mnemonic_seed', nargs=-1) +def show_eth_pkey(wallet_index, mnemonic_seed): + mnemonic_seed = " ".join(mnemonic_seed) + click.echo(get_eth_account(wallet_index, mnemonic_seed)[1]) + +@cli.command('generate_seed') +def generate_seed(): + m = generate_mnemonic() + click.echo(m) + +def get_eth_account(account_index, mnemonic_seed:str): + bip44_hdwallet = BIP44HDWallet(cryptocurrency=EthereumMainnet) + bip44_hdwallet.from_mnemonic( + mnemonic=mnemonic_seed, language="english", passphrase=None + ) + bip44_hdwallet.clean_derivation() + bip44_derivation = BIP44Derivation( + cryptocurrency=EthereumMainnet, account=0, change=False, address=account_index + ) + bip44_hdwallet.from_path(path=bip44_derivation) + public_address = bip44_hdwallet.address() + private_key = '0x' + bip44_hdwallet.private_key() + bip44_hdwallet.clean_derivation() + return (public_address, private_key) + +if __name__ == '__main__': + cli() \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..c0a1914 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +hdwallet +click \ No newline at end of file