Skip to main content

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?)

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

If you're not sure about the file name format, learn more about wheel file names.

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.

Release history Release notifications | RSS feed

0.10.0

2 files

0.9.1

2 files

0.9.0

2 files

0.8.1

2 files

0.8.0

2 files

0.7.3

2 files

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

0.6.0

2 files

0.5.9

2 files

0.5.2

2 files

0.5.1

2 files

0.4.0

2 files

0.3.1

2 files

0.3.0

2 files

0.2.0

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page