Skip to main content

Library to interface with ledger-app-eth on Ledger hardware wallets

Project description

ledger-eth-lib

This is a WIP. Consider it alpha

This is a library to interact with ledger-app-eth, the Ethereum app for the Ledger hardware wallets. It's goal is to make interfacing with the Ledger nice and simple with well known Ethereum+Python tools.

Web3.py Integration

ledger-eth-lib provides a Web3.py middleware. It will automatically intercept the relevant JSON-RPC calls and respond with data from your Ledger device.

from web3.auto import w3
from ledgereth.web3 import LedgerSignerMiddleware
w3.middleware_onion.add(LedgerSignerMiddleware)

Intercepted JSON-RPC methods:

  • eth_sendTransaction
  • eth_accounts

Quickstart

Get Accounts

Fetch the availible accounts (currently only default).

from ledgereth import get_accounts
accounts = get_accounts()
my_account = accounts[0]

Create and Sign a Transaction

Create a transaction object and sign it.

from ledgereth import create_transaction
tx = create_transaction(
    '0xb78f53524ae9d465279e7c3495f71d5db2419e13',  # to
    '0x4dae53ee778a324bd317bd270d6227406b6bd4ec',  # from
    int(1e18),  # value
    int(1e5),  # gas limit
    int(1e9),  # gas price
    1  # nonce
)
# TODO: Double check this
signature = '0x{}{}{}'.format(
    hex(tx.v)[2:],
    hex(tx.r)[2:],
    hex(tx.s)[2:],
)

Sign an Existing Transaction Object

Sign a Transaction object from pyethereum(or similar RLP serializable):

from ledgereth import sign_transaction
tx = sign_transaction(tx)
# TODO: Double check this
signature = '0x{}{}{}'.format(
    hex(tx.v)[2:],
    hex(tx.r)[2:],
    hex(tx.s)[2:],
)

API

get_accounts(dongle: Any = None)

Fetch a List of accounts.

NOTE: This will currently only return the default/primary account from the device.

sign_transaction(tx: Serializable, dongle: Any = None)

Sign a rlp.Serializable transaction.

create_transaction(to: bytes, sender: bytes, value: int, gas: int, gas_price: int, nonce: int, data: bytes, dongle: Any = None)

Create and sign an rlp.Serializable transaction from provided params

TODO

  • Add fake dongle support to pytest suite so tests can be run without a real Ledger and human interaction
  • Fill out tests
  • Add messaging signing support
  • Add support for multiple accounts(different derivations?)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ledgereth-0.1.0.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

ledgereth-0.1.0-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file ledgereth-0.1.0.tar.gz.

File metadata

  • Download URL: ledgereth-0.1.0.tar.gz
  • Upload date:
  • Size: 7.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.1

File hashes

Hashes for ledgereth-0.1.0.tar.gz
Algorithm Hash digest
SHA256 233cfb620f2559181bec4dbdc3dc044d2acb5af156ec00417072658e804898c2
MD5 b3ff134df84d9b57db29156449c22bee
BLAKE2b-256 584a22389be4baa943ff5c451e9abbcf3ec531d758a369e67c4e09e31a3bf189

See more details on using hashes here.

File details

Details for the file ledgereth-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: ledgereth-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.1

File hashes

Hashes for ledgereth-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 151165196becf4e487e97d471dd9c1ec4825f0027d16e1431bddf9b3f9d89f5a
MD5 f64de09d4aa66a2d4d833fc0ee8bcb24
BLAKE2b-256 ebd0b7a92ae3a1aeba87b7f7e953b0d69d9921a41d579b45b08c22fd57f3c528

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page