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_sendTransactioneth_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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
233cfb620f2559181bec4dbdc3dc044d2acb5af156ec00417072658e804898c2
|
|
| MD5 |
b3ff134df84d9b57db29156449c22bee
|
|
| BLAKE2b-256 |
584a22389be4baa943ff5c451e9abbcf3ec531d758a369e67c4e09e31a3bf189
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
151165196becf4e487e97d471dd9c1ec4825f0027d16e1431bddf9b3f9d89f5a
|
|
| MD5 |
f64de09d4aa66a2d4d833fc0ee8bcb24
|
|
| BLAKE2b-256 |
ebd0b7a92ae3a1aeba87b7f7e953b0d69d9921a41d579b45b08c22fd57f3c528
|